components.js 4.2 KB

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