components.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. window.Vue = require('vue');
  2. import BootstrapVue from 'bootstrap-vue'
  3. import InfiniteLoading from 'vue-infinite-loading';
  4. import Loading from 'vue-loading-overlay';
  5. import VueTimeago from 'vue-timeago';
  6. //import {Howl, Howler} from 'howler';
  7. Vue.use(BootstrapVue);
  8. Vue.use(InfiniteLoading);
  9. Vue.use(Loading);
  10. Vue.use(VueTimeago);
  11. pixelfed.readmore = () => {
  12. $('.read-more').each(function(k,v) {
  13. let el = $(this);
  14. let attr = el.attr('data-readmore');
  15. if(typeof attr !== typeof undefined && attr !== false) {
  16. return;
  17. }
  18. el.readmore({
  19. collapsedHeight: 44,
  20. heightMargin: 20,
  21. moreLink: '<a href="#" class="font-weight-bold small">Read more</a>',
  22. lessLink: '<a href="#" class="font-weight-bold small">Hide</a>',
  23. });
  24. });
  25. };
  26. try {
  27. document.createEvent("TouchEvent");
  28. $('body').addClass('touch');
  29. } catch (e) {
  30. }
  31. window.InfiniteScroll = require('infinite-scroll');
  32. window.filesize = require('filesize');
  33. window.Plyr = require('plyr');
  34. import swal from 'sweetalert';
  35. require('./components/localstorage');
  36. require('./components/likebutton');
  37. require('./components/commentform');
  38. require('./components/searchform');
  39. require('./components/bookmarkform');
  40. require('./components/statusform');
  41. require('./components/settingspage');
  42. //require('./components/embed');
  43. //require('./components/notifications');
  44. // import Echo from "laravel-echo"
  45. // window.io = require('socket.io-client');
  46. // window.pixelfed.bootEcho = function() {
  47. // window.Echo = new Echo({
  48. // broadcaster: 'socket.io',
  49. // host: window.location.hostname + ':2096',
  50. // auth: {
  51. // headers: {
  52. // Authorization: 'Bearer ' + token.content,
  53. // },
  54. // },
  55. // });
  56. // }
  57. // Initialize Notification Helper
  58. window.pixelfed.n = {};
  59. Vue.component(
  60. 'photo-presenter',
  61. require('./components/presenter/PhotoPresenter.vue').default
  62. );
  63. Vue.component(
  64. 'video-presenter',
  65. require('./components/presenter/VideoPresenter.vue').default
  66. );
  67. Vue.component(
  68. 'photo-album-presenter',
  69. require('./components/presenter/PhotoAlbumPresenter.vue').default
  70. );
  71. Vue.component(
  72. 'video-album-presenter',
  73. require('./components/presenter/VideoAlbumPresenter.vue').default
  74. );
  75. Vue.component(
  76. 'mixed-album-presenter',
  77. require('./components/presenter/MixedAlbumPresenter.vue').default
  78. );
  79. // Vue.component(
  80. // 'micro',
  81. // require('./components/Micro.vue').default
  82. // );
  83. Vue.component(
  84. 'follow-suggestions',
  85. require('./components/FollowSuggestions.vue').default
  86. );
  87. Vue.component(
  88. 'discover-component',
  89. require('./components/DiscoverComponent.vue').default
  90. );
  91. // Vue.component(
  92. // 'profile',
  93. // require('./components/Profile.vue').default
  94. // );
  95. // Vue.component(
  96. // 'circle-panel',
  97. // require('./components/CirclePanel.vue')
  98. // );
  99. Vue.component(
  100. 'post-component',
  101. require('./components/PostComponent.vue').default
  102. );
  103. Vue.component(
  104. 'post-comments',
  105. require('./components/PostComments.vue').default
  106. );
  107. Vue.component(
  108. 'timeline',
  109. require('./components/Timeline.vue').default
  110. );
  111. // Vue.component(
  112. // 'passport-clients',
  113. // require('./components/passport/Clients.vue').default
  114. // );
  115. // Vue.component(
  116. // 'passport-authorized-clients',
  117. // require('./components/passport/AuthorizedClients.vue').default
  118. // );
  119. // Vue.component(
  120. // 'passport-personal-access-tokens',
  121. // require('./components/passport/PersonalAccessTokens.vue').default
  122. // );
  123. //import 'promise-polyfill/src/polyfill';
  124. // window.pixelfed.copyToClipboard = (str) => {
  125. // const el = document.createElement('textarea');
  126. // el.value = str;
  127. // el.setAttribute('readonly', '');
  128. // el.style.position = 'absolute';
  129. // el.style.left = '-9999px';
  130. // document.body.appendChild(el);
  131. // const selected =
  132. // document.getSelection().rangeCount > 0
  133. // ? document.getSelection().getRangeAt(0)
  134. // : false;
  135. // el.select();
  136. // document.execCommand('copy');
  137. // document.body.removeChild(el);
  138. // if (selected) {
  139. // document.getSelection().removeAllRanges();
  140. // document.getSelection().addRange(selected);
  141. // }
  142. // };
  143. $(document).ready(function() {
  144. $(function () {
  145. $('[data-toggle="tooltip"]').tooltip()
  146. });
  147. });
  148. const warningTitleCSS = 'color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;';
  149. const warningDescCSS = 'font-size: 18px;';
  150. console.log('%cStop!', warningTitleCSS);
  151. console.log("%cThis is a browser feature intended for developers. If someone told you to copy and paste something here to enable a Pixelfed feature or \"hack\" someone's account, it is a scam and will give them access to your Pixelfed account.", warningDescCSS);