components.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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 VueTouch from 'vue-touch';
  7. //import {Howl, Howler} from 'howler';
  8. Vue.use(BootstrapVue);
  9. Vue.use(InfiniteLoading);
  10. Vue.use(Loading);
  11. Vue.use(VueTimeago, {
  12. name: 'Timeago',
  13. locale: 'en'
  14. );
  15. Vue.use(VueTouch, { name: 'v-touch' })
  16. VueTouch.registerCustomEvent('doubletap', {
  17. type: 'tap',
  18. taps: 2
  19. })
  20. pixelfed.readmore = () => {
  21. $('.read-more').each(function(k,v) {
  22. let el = $(this);
  23. let attr = el.attr('data-readmore');
  24. if(typeof attr !== typeof undefined && attr !== false) {
  25. return;
  26. }
  27. el.readmore({
  28. collapsedHeight: 45,
  29. heightMargin: 48,
  30. moreLink: '<a href="#" class="d-block small text-muted text-center">Read more ...</a>',
  31. lessLink: '<a href="#" class="d-block small text-muted text-center">Hide</a>',
  32. });
  33. });
  34. };
  35. try {
  36. document.createEvent("TouchEvent");
  37. $('body').addClass('touch');
  38. } catch (e) {
  39. }
  40. window.filesize = require('filesize');
  41. // window.Plyr = require('plyr');
  42. import swal from 'sweetalert';
  43. // require('./components/localstorage');
  44. // require('./components/commentform');
  45. //require('./components/searchform');
  46. // require('./components/bookmarkform');
  47. // require('./components/statusform');
  48. //require('./components/embed');
  49. //require('./components/notifications');
  50. // import Echo from "laravel-echo"
  51. // window.io = require('socket.io-client');
  52. // window.pixelfed.bootEcho = function() {
  53. // window.Echo = new Echo({
  54. // broadcaster: 'socket.io',
  55. // host: window.location.hostname + ':2096',
  56. // auth: {
  57. // headers: {
  58. // Authorization: 'Bearer ' + token.content,
  59. // },
  60. // },
  61. // });
  62. // }
  63. // Initialize Notification Helper
  64. window.pixelfed.n = {};
  65. // Vue.component(
  66. // 'search-results',
  67. // require('./components/SearchResults.vue').default
  68. // );
  69. // Vue.component(
  70. // 'photo-presenter',
  71. // require('./components/presenter/PhotoPresenter.vue').default
  72. // );
  73. // Vue.component(
  74. // 'video-presenter',
  75. // require('./components/presenter/VideoPresenter.vue').default
  76. // );
  77. // Vue.component(
  78. // 'photo-album-presenter',
  79. // require('./components/presenter/PhotoAlbumPresenter.vue').default
  80. // );
  81. // Vue.component(
  82. // 'video-album-presenter',
  83. // require('./components/presenter/VideoAlbumPresenter.vue').default
  84. // );
  85. // Vue.component(
  86. // 'mixed-album-presenter',
  87. // require('./components/presenter/MixedAlbumPresenter.vue').default
  88. // );
  89. // Vue.component(
  90. // 'post-menu',
  91. // require('./components/PostMenu.vue').default
  92. // );
  93. // Vue.component(
  94. // 'passport-clients',
  95. // require('./components/passport/Clients.vue').default
  96. // );
  97. // Vue.component(
  98. // 'passport-authorized-clients',
  99. // require('./components/passport/AuthorizedClients.vue').default
  100. // );
  101. // Vue.component(
  102. // 'passport-personal-access-tokens',
  103. // require('./components/passport/PersonalAccessTokens.vue').default
  104. // );
  105. // Vue.component(
  106. // 'follow-suggestions',
  107. // require('./components/FollowSuggestions.vue').default
  108. // );
  109. // Vue.component(
  110. // 'circle-panel',
  111. // require('./components/CirclePanel.vue')
  112. // );
  113. // Vue.component(
  114. // 'story-compose',
  115. // require('./components/StoryCompose.vue').default
  116. // );
  117. //import 'promise-polyfill/src/polyfill';
  118. // window.pixelfed.copyToClipboard = (str) => {
  119. // const el = document.createElement('textarea');
  120. // el.value = str;
  121. // el.setAttribute('readonly', '');
  122. // el.style.position = 'absolute';
  123. // el.style.left = '-9999px';
  124. // document.body.appendChild(el);
  125. // const selected =
  126. // document.getSelection().rangeCount > 0
  127. // ? document.getSelection().getRangeAt(0)
  128. // : false;
  129. // el.select();
  130. // document.execCommand('copy');
  131. // document.body.removeChild(el);
  132. // if (selected) {
  133. // document.getSelection().removeAllRanges();
  134. // document.getSelection().addRange(selected);
  135. // }
  136. // };
  137. $(document).ready(function() {
  138. $(function () {
  139. $('[data-toggle="tooltip"]').tooltip()
  140. });
  141. });
  142. const warningTitleCSS = 'color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;';
  143. const warningDescCSS = 'font-size: 18px;';
  144. console.log('%cStop!', warningTitleCSS);
  145. 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);