@ozdao/martyrs 0.2.571 → 0.2.574

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (819) hide show
  1. package/dist/_virtual/dayjs.min.js +1 -1
  2. package/dist/_virtual/weekOfYear.js +1 -1
  3. package/dist/builder.js +1194 -45
  4. package/dist/loader.js +30 -0
  5. package/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +1173 -1191
  6. package/dist/martyrs/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +94 -112
  7. package/dist/martyrs/dist/main-BfEQkhXS.js.map +1 -0
  8. package/dist/martyrs/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +3 -3
  9. package/dist/martyrs/dist/{web-CH5wzMHy.js.map → web-BqTV9va1.js.map} +1 -1
  10. package/dist/martyrs/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  11. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  12. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js +1 -1
  13. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/index.js.map +1 -1
  14. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js +1 -1
  15. package/dist/martyrs/node_modules/.pnpm/{@capacitor_preferences@7.0.0_@capacitor_core@7.0.1 → @capacitor_preferences@7.0.2_@capacitor_core@7.4.4}/node_modules/@capacitor/preferences/dist/esm/web.js.map +1 -1
  16. package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +1 -1
  17. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  18. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  19. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/dayjs.min.js +1 -1
  20. package/dist/martyrs/node_modules/dayjs/dayjs.min.js.map +1 -0
  21. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  22. package/dist/martyrs/node_modules/dayjs/plugin/weekOfYear.js.map +1 -0
  23. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  24. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  25. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
  26. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
  27. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
  28. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
  29. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
  30. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
  31. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  32. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  33. package/dist/martyrs/src/components/Block/Block.vue.js +2 -2
  34. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  35. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
  36. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
  37. package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
  38. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +6 -6
  39. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  40. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +2 -2
  41. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  42. package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
  43. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
  44. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +4 -4
  46. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
  47. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +3 -3
  48. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  49. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  50. package/dist/martyrs/src/components/Feed/Feed.vue.js +3 -3
  51. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  52. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  53. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  54. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  55. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  56. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +1 -1
  57. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
  58. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +3 -3
  59. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  60. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  61. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  62. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  63. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  64. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
  65. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  66. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  67. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  68. package/dist/martyrs/src/components/Radio/Radio.vue.js +1 -1
  69. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  70. package/dist/martyrs/src/components/Select/Select.vue.js +2 -2
  71. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
  72. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
  73. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
  74. package/dist/martyrs/src/components/Table/Table.vue.js +3 -3
  75. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  76. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  77. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  78. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
  79. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -0
  80. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +4 -4
  81. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  82. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +4 -4
  83. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  84. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
  85. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +4 -4
  86. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +1 -1
  87. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  88. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  90. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +7 -7
  92. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  93. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  95. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  97. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  99. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  100. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +3 -3
  101. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  102. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  103. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +3 -3
  105. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  108. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +7 -7
  109. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  113. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +4 -4
  114. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +6 -6
  116. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
  118. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  119. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +2 -2
  120. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/community/components/blocks/Activity.vue.js +7 -7
  122. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  123. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  124. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +4 -4
  125. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +10 -10
  127. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  128. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  129. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  130. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +2 -2
  132. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  133. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +3 -3
  134. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  136. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
  137. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  139. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
  140. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  141. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  142. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
  143. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js.map +1 -1
  144. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  145. package/dist/martyrs/src/modules/core/views/classes/core.app.js +2 -1
  146. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  147. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js +2 -2
  148. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +9 -9
  150. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
  152. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
  153. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  154. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js.map +1 -1
  155. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  156. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js +1 -1
  157. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js.map +1 -1
  158. package/dist/martyrs/src/modules/core/views/components/elements/PhotoStack.vue.js +3 -3
  159. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +25 -5
  160. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
  161. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -4
  162. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +11 -11
  164. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  165. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +1 -1
  166. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +16 -16
  168. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
  169. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +7 -7
  170. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
  172. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
  173. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +23 -23
  174. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  175. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +3 -3
  176. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js.map +1 -1
  177. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +7 -7
  178. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  179. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
  180. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  181. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
  182. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  183. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  184. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +2 -2
  185. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -1
  186. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +3 -3
  187. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -1
  188. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +2 -2
  189. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -1
  190. package/dist/martyrs/src/modules/core/views/store/core.store.js +29 -47
  191. package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
  192. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +21 -2
  193. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  194. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +5 -5
  195. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  196. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js +3 -3
  197. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js.map +1 -1
  198. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  199. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  200. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +18 -18
  201. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  202. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +7 -7
  203. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  205. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  206. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
  207. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  208. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +5 -5
  209. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
  210. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
  211. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  212. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  213. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +2 -2
  214. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
  216. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  218. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  220. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  221. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +4 -4
  222. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +4 -4
  224. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +7 -7
  225. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  226. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  227. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  228. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  229. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  230. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  231. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  232. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +10 -10
  233. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  234. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  235. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  236. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -5
  237. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  238. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  239. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  240. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  241. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  242. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +2 -2
  243. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  244. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  245. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  246. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +2 -2
  247. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
  248. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +3 -3
  249. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
  250. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +6 -6
  251. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -1
  252. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +4 -4
  253. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  254. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +2 -2
  255. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -1
  256. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +5 -5
  257. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  258. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +4 -4
  259. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  260. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +3 -3
  261. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  262. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +5 -5
  263. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  264. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +5 -5
  265. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  266. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +8 -8
  267. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  268. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +5 -5
  269. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  270. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +7 -7
  271. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  272. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +2 -2
  273. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
  274. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +13 -13
  275. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  276. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +23 -23
  277. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  278. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +8 -8
  279. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  280. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +10 -13
  281. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  282. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +9 -9
  283. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  284. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +26 -26
  285. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  286. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +17 -17
  287. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  288. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +26 -26
  289. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  290. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  291. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +8 -8
  292. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/music/music.client.js +6 -6
  294. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  295. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  296. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  297. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  298. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  299. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  300. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  301. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +2 -2
  302. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +2 -2
  303. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
  304. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  305. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +5 -5
  306. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +9 -9
  308. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  309. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +5 -5
  310. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js +2 -2
  312. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  314. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +3 -3
  316. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  318. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  320. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  321. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  322. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +17 -17
  323. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  324. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +2 -2
  325. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  326. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +4 -4
  327. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  328. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +2 -2
  329. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  330. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +3 -3
  331. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  332. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  333. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  334. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +3 -3
  335. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  336. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  337. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +3 -3
  338. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  339. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
  340. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  341. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  342. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js +8 -8
  343. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
  345. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +3 -3
  346. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  348. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  349. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  350. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  351. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
  352. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  353. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  354. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  355. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +6 -6
  356. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  357. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  358. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  359. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
  360. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  361. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +4 -4
  362. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  363. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  364. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  365. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  366. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +3 -3
  367. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
  368. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +5 -5
  369. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  370. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  371. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  372. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +4 -4
  374. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -3
  376. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  377. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +5 -5
  378. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  379. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +3 -3
  380. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  381. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +2 -2
  382. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  383. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +5 -5
  384. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js.map +1 -1
  385. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
  386. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  387. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +3 -3
  388. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  389. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +1 -1
  390. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
  391. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  392. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -3
  393. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  394. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +7 -7
  395. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  396. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +8 -8
  397. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  398. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +12 -12
  399. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  400. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +4 -4
  401. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  402. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +6 -6
  403. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  404. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  405. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
  406. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +9 -9
  407. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  408. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
  409. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  410. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +2 -2
  411. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  412. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +2 -2
  413. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  414. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +6 -6
  415. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  416. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js +1 -1
  417. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js.map +1 -1
  418. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/DateLabel.vue.js +1 -1
  419. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +2 -2
  420. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  421. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +8 -8
  422. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  423. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +1 -1
  424. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
  425. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  426. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  427. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +6 -6
  428. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  429. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
  430. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
  431. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  432. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  433. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
  434. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  435. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  436. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js.map +1 -1
  437. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  438. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
  439. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +6 -6
  440. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  441. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  442. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  443. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +3 -3
  444. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  445. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +5 -5
  446. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +5 -5
  448. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +1 -1
  449. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +5 -5
  450. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +2 -2
  452. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +1 -1
  453. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +4 -4
  454. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +1 -1
  455. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +12 -12
  456. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +1 -1
  457. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +4 -4
  458. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
  459. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +23 -23
  460. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  461. package/dist/martyrs.css +1 -1
  462. package/dist/martyrs.es.js +1 -1
  463. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  464. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  465. package/dist/style.css +194 -202
  466. package/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +1 -1
  467. package/package.json +6 -8
  468. package/src/builder/modes/ssr.prod.js +1 -0
  469. package/src/builder/modes/ssr.rspack.dev.js +13 -6
  470. package/src/builder/rspack/rspack.config.base.js +7 -0
  471. package/src/builder/rspack/rspack.config.ssr.client.js +19 -44
  472. package/src/builder/templates/page.js +21 -0
  473. package/src/components/Block/Block.vue +1 -1
  474. package/src/components/BottomSheet/BottomSheet.vue +1 -1
  475. package/src/components/Calendar/Calendar.vue +5 -5
  476. package/src/components/Checkbox/Checkbox.vue +2 -2
  477. package/src/components/Chips/Chips.vue +2 -2
  478. package/src/components/Completion/Completion.vue +2 -2
  479. package/src/components/Countdown/Countdown.vue +5 -5
  480. package/src/components/DatePicker/DatePicker.vue +4 -4
  481. package/src/components/EditImages/EditImages.vue +1 -1
  482. package/src/components/Feed/Feed.old.vue +1 -1
  483. package/src/components/Feed/Feed.vue +1 -1
  484. package/src/components/FieldBig/FieldBig.vue +2 -2
  485. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  486. package/src/components/FieldTags/BlockTags.vue +1 -1
  487. package/src/components/Loader/Loader.vue +1 -1
  488. package/src/components/Menu/MenuItem.vue +2 -2
  489. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  490. package/src/components/Radio/Radio.vue +1 -1
  491. package/src/components/Select/Select.vue +1 -1
  492. package/src/components/Table/Table.vue +2 -2
  493. package/src/components/Text/Text.vue +1 -1
  494. package/src/components/UploadImage/UploadImage.vue +2 -2
  495. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +3 -3
  496. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  497. package/src/configurator/components/pages/Styles.vue +2 -2
  498. package/src/jit/.claude/settings.local.json +10 -0
  499. package/src/jit/CLAUDE.md +387 -0
  500. package/src/jit/core.js +274 -0
  501. package/src/jit/extractor.js +140 -0
  502. package/src/jit/index.js +19 -0
  503. package/src/jit/loader.js +46 -0
  504. package/src/jit/plugin.js +209 -0
  505. package/src/jit/rules.js +474 -0
  506. package/src/jit/variants.js +128 -0
  507. package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
  508. package/src/modules/auth/views/components/blocks/ProfileCard.vue +4 -4
  509. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  510. package/src/modules/auth/views/components/pages/EnterPassword.vue +2 -2
  511. package/src/modules/auth/views/components/pages/Profile.vue +5 -5
  512. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +1 -1
  513. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +2 -2
  514. package/src/modules/auth/views/components/pages/ResetPassword.vue +1 -1
  515. package/src/modules/auth/views/components/pages/SignIn.vue +3 -3
  516. package/src/modules/auth/views/components/pages/SignUp.vue +1 -1
  517. package/src/modules/auth/views/components/pages/UserDashboard.vue +3 -3
  518. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  519. package/src/modules/auth/views/components/sections/ProfileCompletion.vue +2 -2
  520. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +7 -7
  521. package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
  522. package/src/modules/backoffice/components/admin/Backcalls.vue +1 -1
  523. package/src/modules/backoffice/components/admin/FastOrders.vue +1 -1
  524. package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -2
  525. package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
  526. package/src/modules/backoffice/components/admin/Users.vue +2 -2
  527. package/src/modules/backoffice/components/pages/Dashboard.vue +4 -4
  528. package/src/modules/backoffice/components/partials/Sidebar.vue +5 -5
  529. package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
  530. package/src/modules/chats/components/sections/ChatWindow.vue +2 -2
  531. package/src/modules/community/components/blocks/Activity.vue +7 -7
  532. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  533. package/src/modules/community/components/blocks/FooterBlogpost.vue +4 -4
  534. package/src/modules/community/components/layouts/Community.vue +10 -10
  535. package/src/modules/community/components/pages/CreateBlogPost.vue +1 -1
  536. package/src/modules/community/components/pages/Posts.vue +2 -2
  537. package/src/modules/community/components/sections/Comment.vue +2 -2
  538. package/src/modules/constructor/components/elements/Audio.vue +1 -1
  539. package/src/modules/constructor/components/elements/Caption.vue +1 -1
  540. package/src/modules/constructor/components/elements/Embed.vue +1 -1
  541. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  542. package/src/modules/constructor/components/elements/Video.vue +1 -1
  543. package/src/modules/core/views/classes/core.app.js +2 -1
  544. package/src/modules/core/views/components/blocks/BlockSorting.vue +2 -2
  545. package/src/modules/core/views/components/blocks/CardFooter.vue +4 -4
  546. package/src/modules/core/views/components/blocks/CardHeader.vue +7 -7
  547. package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
  548. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  549. package/src/modules/core/views/components/elements/ButtonDate.vue +1 -1
  550. package/src/modules/core/views/components/elements/PhotoStack.vue +3 -3
  551. package/src/modules/core/views/components/layouts/App.vue +28 -4
  552. package/src/modules/core/views/components/layouts/Client.vue +4 -4
  553. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +15 -15
  554. package/src/modules/core/views/components/partials/CitySelection.vue +1 -1
  555. package/src/modules/core/views/components/partials/Footer.centered.vue +17 -17
  556. package/src/modules/core/views/components/partials/Footer.vue +18 -18
  557. package/src/modules/core/views/components/partials/Header.vue +10 -11
  558. package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
  559. package/src/modules/core/views/components/partials/Navigation.vue +20 -19
  560. package/src/modules/core/views/components/partials/NavigationBar.vue +3 -3
  561. package/src/modules/core/views/components/partials/Sidebar.vue +6 -6
  562. package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
  563. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +1 -1
  564. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +2 -2
  565. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +2 -2
  566. package/src/modules/core/views/components/sections/filters/FilterRange.vue +2 -2
  567. package/src/modules/core/views/store/core.store.js +36 -60
  568. package/src/modules/core/views/utils/vue-app-renderer.js +31 -1
  569. package/src/modules/events/components/blocks/CardEvent.vue +6 -6
  570. package/src/modules/events/components/blocks/CardEventShort.vue +3 -3
  571. package/src/modules/events/components/pages/EditEvent.vue +1 -1
  572. package/src/modules/events/components/pages/EditEventTickets.vue +18 -18
  573. package/src/modules/events/components/pages/Event.vue +5 -5
  574. package/src/modules/events/components/pages/Events.vue +2 -2
  575. package/src/modules/events/components/pages/EventsBackoffice.vue +2 -2
  576. package/src/modules/events/components/sections/EditTickets.vue +5 -5
  577. package/src/modules/events/components/sections/EventsHot.vue +2 -2
  578. package/src/modules/events/components/sections/List.vue +1 -1
  579. package/src/modules/events/components/sections/SelectDate.vue +1 -1
  580. package/src/modules/gallery/components/pages/Gallery.vue +1 -1
  581. package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
  582. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +14 -14
  583. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +13 -13
  584. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +2 -2
  585. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +1 -1
  586. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +1 -1
  587. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +2 -2
  588. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +6 -6
  589. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +18 -18
  590. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +7 -7
  591. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +9 -9
  592. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +4 -4
  593. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +1 -1
  594. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
  595. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +6 -6
  596. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +2 -2
  597. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +15 -15
  598. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +41 -41
  599. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +8 -8
  600. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +6 -6
  601. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +9 -9
  602. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +14 -14
  603. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +44 -44
  604. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +8 -8
  605. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +3 -3
  606. package/src/modules/governance/reactcode-2/App.tsx +28 -0
  607. package/src/modules/governance/reactcode-2/README.md +20 -0
  608. package/src/modules/governance/reactcode-2/components/Charts.tsx +58 -0
  609. package/src/modules/governance/reactcode-2/components/Layout.tsx +457 -0
  610. package/src/modules/governance/reactcode-2/components/TaskPage.tsx +325 -0
  611. package/src/modules/governance/reactcode-2/components/VoteBadge.tsx +27 -0
  612. package/src/modules/governance/reactcode-2/components/VotingsFeedPage.tsx +328 -0
  613. package/src/modules/governance/reactcode-2/constants.ts +154 -0
  614. package/src/modules/governance/reactcode-2/index.html +70 -0
  615. package/src/modules/governance/reactcode-2/index.tsx +15 -0
  616. package/src/modules/governance/reactcode-2/metadata.json +5 -0
  617. package/src/modules/governance/reactcode-2/package.json +23 -0
  618. package/src/modules/governance/reactcode-2/pnpm-lock.yaml +1410 -0
  619. package/src/modules/governance/reactcode-2/tsconfig.json +29 -0
  620. package/src/modules/governance/reactcode-2/types.ts +48 -0
  621. package/src/modules/governance/reactcode-2/vite.config.ts +23 -0
  622. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +10 -10
  623. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +15 -15
  624. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +9 -9
  625. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +11 -11
  626. package/src/modules/governance/views/components/layouts/Governance.vue +1 -1
  627. package/src/modules/governance/views/components/pages/Governance.vue +3 -3
  628. package/src/modules/governance/views/components/pages/Initiative.vue +112 -112
  629. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +31 -31
  630. package/src/modules/governance/views/components/pages/Initiatives.vue +20 -22
  631. package/src/modules/governance/views/components/pages/Milestone.vue +25 -25
  632. package/src/modules/governance/views/components/pages/Roadmap.vue +47 -47
  633. package/src/modules/governance/views/components/pages/Task.vue +106 -106
  634. package/src/modules/governance/views/components/pages/Tasks.vue +16 -16
  635. package/src/modules/governance/views/components/pages/Voting.vue +23 -23
  636. package/src/modules/governance/views/components/pages/Votings.vue +7 -7
  637. package/src/modules/governance/views/components/partials/EmptyState.vue +3 -3
  638. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +11 -11
  639. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +4 -4
  640. package/src/modules/governance/views/components/partials/VoteForm.vue +14 -14
  641. package/src/modules/governance/views/components/partials/VotingResults.vue +22 -22
  642. package/src/modules/icons/components/IconSearchPopup.vue +3 -3
  643. package/src/modules/icons/entities/IconCash.vue +23 -0
  644. package/src/modules/icons/navigation/IconSort.vue +4 -4
  645. package/src/modules/icons/pages/IconsPage.vue +7 -7
  646. package/src/modules/inventory/components/forms/AdjustmentForm.vue +3 -3
  647. package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
  648. package/src/modules/inventory/components/forms/StockAlertsForm.vue +1 -1
  649. package/src/modules/inventory/components/pages/Inventory.vue +10 -10
  650. package/src/modules/inventory/components/pages/InventoryEdit.vue +6 -6
  651. package/src/modules/landing/components/blocks/MapBlock.vue +2 -2
  652. package/src/modules/landing/components/sections/Examples.vue +1 -1
  653. package/src/modules/landing/components/sections/InstagramSection.vue +1 -1
  654. package/src/modules/landing/components/sections/SectionEarn.vue +4 -4
  655. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  656. package/src/modules/landing/components/sections/SectionFocus.vue +2 -2
  657. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  658. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  659. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  660. package/src/modules/landing/components/sections/SectionJoinUs.vue +2 -2
  661. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  662. package/src/modules/landing/components/sections/SectionOverview.vue +2 -2
  663. package/src/modules/landing/components/sections/SectionRoadmap.vue +2 -2
  664. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +8 -8
  665. package/src/modules/marketplace/views/components/pages/Marketplace.vue +5 -5
  666. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
  667. package/src/modules/music/components/SidebarMusic.vue +11 -11
  668. package/src/modules/music/components/blocks/ActionButtons.vue +2 -2
  669. package/src/modules/music/components/cards/AlbumCard.vue +4 -4
  670. package/src/modules/music/components/cards/ArtistCard.vue +3 -8
  671. package/src/modules/music/components/cards/ArtistCardSmall.vue +2 -2
  672. package/src/modules/music/components/cards/PlaylistCard.vue +4 -4
  673. package/src/modules/music/components/cards/TrackListCard.vue +5 -5
  674. package/src/modules/music/components/forms/AlbumForm.vue +8 -8
  675. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  676. package/src/modules/music/components/forms/PlaylistForm.vue +7 -7
  677. package/src/modules/music/components/forms/SearchForm.vue +1 -1
  678. package/src/modules/music/components/forms/TrackForm.vue +13 -13
  679. package/src/modules/music/components/pages/Album.vue +22 -22
  680. package/src/modules/music/components/pages/Artist.vue +7 -7
  681. package/src/modules/music/components/pages/MusicHome.vue +13 -18
  682. package/src/modules/music/components/pages/MusicLibrary.vue +9 -9
  683. package/src/modules/music/components/pages/Playlist.vue +25 -25
  684. package/src/modules/music/components/pages/SearchResults.vue +15 -15
  685. package/src/modules/music/components/pages/Track.vue +25 -25
  686. package/src/modules/music/components/player/FullscreenPlayer.vue +5 -5
  687. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  688. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  689. package/src/modules/orders/components/blocks/CardApplication.vue +1 -1
  690. package/src/modules/orders/components/blocks/CardCustomer.vue +1 -1
  691. package/src/modules/orders/components/blocks/CardOrder.vue +9 -9
  692. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +5 -5
  693. package/src/modules/orders/components/blocks/CardOrderItem.vue +9 -9
  694. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  695. package/src/modules/orders/components/blocks/CardOrderVar1.vue +4 -4
  696. package/src/modules/orders/components/blocks/StatusHistory.vue +3 -3
  697. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
  698. package/src/modules/orders/components/elements/PriceTotal.vue +3 -3
  699. package/src/modules/orders/components/forms/FormApplicationDetails.vue +2 -2
  700. package/src/modules/orders/components/forms/FormCustomerDetails.vue +3 -3
  701. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  702. package/src/modules/orders/components/pages/OrderBackoffice.vue +15 -15
  703. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  704. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -4
  705. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  706. package/src/modules/orders/components/partials/ShopCart.vue +2 -2
  707. package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
  708. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  709. package/src/modules/orders/components/sections/CustomerDetails.vue +2 -2
  710. package/src/modules/orders/components/sections/Succes.vue +4 -4
  711. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  712. package/src/modules/organizations/components/blocks/CardOrganization.vue +4 -4
  713. package/src/modules/organizations/components/blocks/Contacts.vue +8 -8
  714. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  715. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
  716. package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
  717. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  718. package/src/modules/organizations/components/pages/Department.vue +2 -2
  719. package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
  720. package/src/modules/organizations/components/pages/Members.vue +1 -1
  721. package/src/modules/organizations/components/pages/Organization.new.vue +8 -8
  722. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  723. package/src/modules/organizations/components/pages/OrganizationDocuments.vue +2 -2
  724. package/src/modules/organizations/components/pages/Organizations.vue +3 -3
  725. package/src/modules/organizations/components/sections/Documents.vue +2 -2
  726. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  727. package/src/modules/organizations/components/sections/Unit.vue +1 -1
  728. package/src/modules/pages/views/components/blocks/CardPage.vue +2 -2
  729. package/src/modules/pages/views/components/pages/Page.vue +5 -5
  730. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  731. package/src/modules/products/components/blocks/CardPosition.vue +4 -4
  732. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  733. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -3
  734. package/src/modules/products/components/blocks/ProductImages.vue +2 -2
  735. package/src/modules/products/components/blocks/ProductVariants.vue +2 -2
  736. package/src/modules/products/components/elements/Image360.vue +2 -2
  737. package/src/modules/products/components/elements/Price.vue +2 -2
  738. package/src/modules/products/components/elements/QuantitySelector.vue +3 -3
  739. package/src/modules/products/components/elements/THC.vue +1 -1
  740. package/src/modules/products/components/forms/ReorderSettingsForm.vue +1 -1
  741. package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
  742. package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
  743. package/src/modules/products/components/pages/Categories.vue +1 -1
  744. package/src/modules/products/components/pages/CategoryEdit.vue +2 -2
  745. package/src/modules/products/components/pages/Product.vue +6 -6
  746. package/src/modules/products/components/pages/ProductEdit.vue +6 -6
  747. package/src/modules/products/components/pages/Products.vue +11 -11
  748. package/src/modules/products/components/sections/EditAttributes.vue +4 -4
  749. package/src/modules/products/components/sections/EditCategories.vue +1 -1
  750. package/src/modules/products/components/sections/EditDiscounts.vue +6 -6
  751. package/src/modules/products/components/sections/EditRecommended.vue +1 -1
  752. package/src/modules/products/components/sections/EditVariants.vue +8 -8
  753. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  754. package/src/modules/products/components/sections/ProductConfigurator.vue +2 -2
  755. package/src/modules/products/components/sections/ProductInformationSection.vue +10 -10
  756. package/src/modules/products/components/sections/ProductsRecommended.vue +2 -2
  757. package/src/modules/products/components/sections/SectionProduct.vue +7 -7
  758. package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +3 -3
  759. package/src/modules/rents/views/components/blocks/CardRent.vue +1 -1
  760. package/src/modules/rents/views/components/pages/Gant/DateLabel.vue +1 -1
  761. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +2 -2
  762. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +8 -8
  763. package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +1 -1
  764. package/src/modules/rents/views/components/pages/Rents.vue +1 -1
  765. package/src/modules/rents/views/components/pages/RentsEdit.vue +6 -6
  766. package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
  767. package/src/modules/reports/components/sections/FormReport.vue +1 -1
  768. package/src/modules/spots/components/blocks/CardSpot.vue +4 -4
  769. package/src/modules/spots/components/blocks/SpotMemberModify.vue +1 -1
  770. package/src/modules/spots/components/layouts/Spots.vue +2 -2
  771. package/src/modules/spots/components/pages/Spot.vue +5 -5
  772. package/src/modules/spots/components/pages/SpotEdit.vue +2 -2
  773. package/src/modules/spots/components/pages/Spots.vue +3 -3
  774. package/src/modules/spots/components/sections/MapSection.vue +1 -1
  775. package/src/modules/spots/components/sections/WorktimeEdit.vue +4 -4
  776. package/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue +5 -5
  777. package/src/modules/wallet/views/components/blocks/CardDeposit.vue +5 -5
  778. package/src/modules/wallet/views/components/blocks/CashDeposit.vue +2 -2
  779. package/src/modules/wallet/views/components/blocks/CryptoDeposit.vue +4 -4
  780. package/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue +11 -11
  781. package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +4 -4
  782. package/src/modules/wallet/views/components/pages/Wallet.vue +22 -22
  783. package/src/styles/config.scss +193 -507
  784. package/src/styles/layout.scss +81 -1
  785. package/src/styles/reset.scss +2 -0
  786. package/src/styles/theme.scss +1 -8
  787. package/dist/martyrs/dist/main-BFvlam0J.js.map +0 -1
  788. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  789. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  790. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  791. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  792. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +0 -1
  793. package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +0 -1
  794. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  795. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
  796. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  797. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
  798. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/weekOfYear.js.map +0 -1
  799. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
  800. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  801. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
  802. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  803. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
  804. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  805. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -20
  806. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  807. package/src/modules/LAYOUT.MD +0 -767
  808. package/src/modules/STYLES.MD +0 -298
  809. package/src/modules/inventory/inventory.router.js +0 -72
  810. package/src/modules/products/products.router.js +0 -299
  811. package/src/styles/base/all.scss +0 -233
  812. package/src/styles/base/backgrounds.scss +0 -70
  813. package/src/styles/base/borders.scss +0 -407
  814. package/src/styles/base/scrolling.scss +0 -137
  815. package/src/styles/base/shadow_transitions_hover_refactor.scss +0 -158
  816. package/src/styles/base/transitions.scss +0 -109
  817. package/src/styles/responsive.scss +0 -152
  818. package/src/styles/typography.scss +0 -161
  819. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tt-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-regular \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-regular gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button t-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-b-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"t-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end t-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\tto=\"/organizations/create\"\n\t\t\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 pd-0 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tfw-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-regular \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-regular gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex fw-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer fw-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button fw-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-b-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"fw-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end fw-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\tto=\"/organizations/create\"\n\t\t\t\t\t\t\tclass=\"fw-medium cursor-pointer hover:scale-[1.05] radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { computed, ref, onServerPrefetch, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, Fragment, renderList, Transition, createBlock } from "vue";
2
2
  import { u as useHead } from "../../../../../../node_modules/.pnpm/@unhead_vue@1.11.20_vue@3.5.13_typescript@5.8.3_/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
5
5
  import _sfc_main$2 from "../blocks/CardBlogpost.vue.js";
6
6
  import SkeletonBlogpost from "../../../icons/skeletons/SkeletonBlogpost.vue.js";
@@ -34,7 +34,7 @@ const _hoisted_6 = {
34
34
  };
35
35
  const _hoisted_7 = {
36
36
  key: 3,
37
- class: "mn-b-medium br-grey-transp-25 br-2px br-solid pd-small radius-big"
37
+ class: "mn-b-medium br-grey-transp-25 br-2px pd-small radius-big"
38
38
  };
39
39
  const _sfc_main = {
40
40
  __name: "CreateBlogPost",
@@ -1 +1 @@
1
- {"version":3,"file":"CreateBlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/CreateBlogPost.vue"],"sourcesContent":["<template>\n <article \n class=\"w-100 bg-light radius-medium pos-relative\"\n >\n <section \n style=\"min-height: 100%;\"\n class=\"w-100 pd-big\"\n >\n <!-- Title -->\n <div \n class=\"w-full h-full\"\n >\n <!-- <Textarea \n v-if=\"post\" \n :prop=\"post\" \n :setFocus=\"true\"\n content=\"name\" \n placeholder=\"Enter post title\" \n class=\"h2\"\n /> -->\n </div>\n\n <Constructor \n v-if=\"post\" \n :content=\"post.content\"\n @update=\"update => post.content = update\"\n />\n\n </section>\n\n <transition name=\"scaleIn\" >\n <section v-if=\"post\" class=\"pd-small pos-sticky pos-l-0 pos-b-0 w-100 \">\n <div class=\"pd-thin radius-big bg-main w-100 flex-nowrap flex\">\n <button v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\"><span>Delete</span></button>\n <button @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\"><span>To Drafts</span></button>\n <button @click=\"openPulicationPopup()\" class=\"mn-l-thin bg-black t-white button\"><span>Publish</span></button>\n </div>\n </section>\n </transition>\n\n <Popup \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n >\n <h3 class=\"mn-b-small\">Final Touches</h3>\n \n <BlockTags\n @tags-changed=\"newTags => post.tags = newTags\"\n :tags=\"post.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-small\">Add source:</h5>\n <Field \n v-model:field=\"post.source\" \n placeholder=\"Add full link to the source\" \n class=\"mn-b-medium bg-light radius-medium pd-small\" \n />\n\n <h5 class=\"mn-b-small\">Add to public</h5>\n <Card\n v-if=\"selectedOrganization\"\n :photo=\"selectedOrganization.profile?.photo\"\n :title=\"selectedOrganization.profile?.name\"\n @click=\"() => { \n selectedOrganization = null\n }\"\n class=\"h-4r w-100 bg-light pd-thin radius-medium mn-b-thin\"\n />\n\n <section v-else class=\"mn-b-thin h-25r o-x-hidden o-y-scroll bg-light radius-big pd-small \">\n <Feed\n :showLoadMore=\"false\" \n :search=\"{\n placeholder: 'Search organization...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No organizations Found',\n description: 'Currently, there are no such organizations available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: null\n }\"\n :options=\"{\n user: auth.state.user._id,\n postable: auth.state.user._id,\n lookup: ['memberships']\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <Card\n v-for=\"(organization, index) in items\" \n v-memo=\"[organization._id, organization.profile.name]\"\n :photo=\"organization.profile?.photo\"\n :title=\"organization.profile?.name\"\n @click=\"() => { \n selectedOrganization = organization\n }\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </section>\n\n <h5 v-if=\"selectedOrganization\" class=\"mn-b-thin\">Options:</h5>\n <div v-if=\"selectedOrganization\" class=\"mn-b-medium br-grey-transp-25 br-2px br-solid pd-small radius-big\">\n <Checkbox \n :label=\"'Hide Author'\"\n :radio=\"post.creator.hidden\"\n @update:radio=\"event => post.creator.hidden = event\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n \n </article>\n</template>\n\n<script setup>\nimport Textarea from '@martyrs/src/modules/constructor/components/elements/Textarea.vue';\nimport Constructor from '@martyrs/src/modules/constructor/components/sections/Constructor.vue';\n\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport Card from '@martyrs/src/modules/core/views/components/blocks/Card.vue';\n\nimport { ref, onMounted, watchEffect, nextTick, computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { VueDraggableNext } from 'vue-draggable-next';\n// Store & Router\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n \nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\n\nconst { hasAccess } = useGlobalMixins()\n\nconst route = useRoute();\nconst router = useRouter();\n\nlet post = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n \n post.value = data.pop();\n\n if (!post.value) {\n router.push({name: 'notfound'})\n }\n\n if (post.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(post.value.owner.target._id, 'posts', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (post.value.owner.type === 'user' && post.value.creator.target._id !== auth.state.user._id) {\n router.push({name: 'unauthorized'})\n }\n } else {\n blog.clean();\n post.value = blog.state.current;\n }\n\n if (!post.value.owner) post.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!post.value.creator) post.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n\n if (post.value.owner.type === 'organization') selectedOrganization.value = {\n _id: post.value.owner.target._id,\n name: post.value.owner.target.profile.name,\n photo: post.value.owner.target.profile.photo\n }\n})\n// /////////////////////////////////////////\n// Publication Form\n// /////////////////////////////////////////\nconst tag = ref('');\nconst autocompleteItems = ref([\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n]);\n\nconst filteredItems = computed(() => {\n return autocompleteItems.value.filter(i => {\n return i.text.toLowerCase().includes(tag.value.toLowerCase());\n });\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tag) {\n selectedTags.value.push(tag)\n}\n// /////////////////////////////////////////\n// Publication Popup\n// /////////////////////////////////////////\nconst isPublicationPopup = ref(false)\n\nfunction openPulicationPopup() {\n isPublicationPopup.value = true;\n}\nfunction closePublicationPopup() {\n isPublicationPopup.value = false;\n}\n\nfunction onDrafts() {\n\n if (selectedTags.value.length > 0) selectedTags.value.map(tag => (tag.text))\n\n post.value.status = \"draft\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) post.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) post.value.creator.hidden = false\n if (!selectedOrganization.value) post.value.organization = post.value.creator\n\n post.value.status = \"published\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n console.log(post.value)\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this post?')) {\n blog.remove(post.value._id)\n .then(response => {\n router.push({ name: 'User Posts', params: { _id: post.value.creator.target._id } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.read","auth.state","blog.clean","blog.state","tag","blog.update","blog.create","blog.remove"],"mappings":"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"}
1
+ {"version":3,"file":"CreateBlogPost.vue.js","sources":["../../../../../../../src/modules/community/components/pages/CreateBlogPost.vue"],"sourcesContent":["<template>\n <article \n class=\"w-100 bg-light radius-medium pos-relative\"\n >\n <section \n style=\"min-height: 100%;\"\n class=\"w-100 pd-big\"\n >\n <!-- Title -->\n <div \n class=\"w-full h-full\"\n >\n <!-- <Textarea \n v-if=\"post\" \n :prop=\"post\" \n :setFocus=\"true\"\n content=\"name\" \n placeholder=\"Enter post title\" \n class=\"h2\"\n /> -->\n </div>\n\n <Constructor \n v-if=\"post\" \n :content=\"post.content\"\n @update=\"update => post.content = update\"\n />\n\n </section>\n\n <transition name=\"scaleIn\" >\n <section v-if=\"post\" class=\"pd-small pos-sticky pos-l-0 pos-b-0 w-100 \">\n <div class=\"pd-thin radius-big bg-main w-100 flex-nowrap flex\">\n <button v-if=\"route.params.url\" @click=\"onDelete()\" class=\"mn-r-auto bg-red t-white t-black button\"><span>Delete</span></button>\n <button @click=\"onDrafts()\" class=\"mn-l-auto bg-white t-black button\"><span>To Drafts</span></button>\n <button @click=\"openPulicationPopup()\" class=\"mn-l-thin bg-black t-white button\"><span>Publish</span></button>\n </div>\n </section>\n </transition>\n\n <Popup \n @close-popup=\"closePublicationPopup\" \n :isPopupOpen=\"isPublicationPopup\"\n class=\"w-m-33r t-left pd-big bg-white radius-big\"\n >\n <h3 class=\"mn-b-small\">Final Touches</h3>\n \n <BlockTags\n @tags-changed=\"newTags => post.tags = newTags\"\n :tags=\"post.tags\"\n class=\"mn-b-small\"\n />\n\n <h5 class=\"mn-b-small\">Add source:</h5>\n <Field \n v-model:field=\"post.source\" \n placeholder=\"Add full link to the source\" \n class=\"mn-b-medium bg-light radius-medium pd-small\" \n />\n\n <h5 class=\"mn-b-small\">Add to public</h5>\n <Card\n v-if=\"selectedOrganization\"\n :photo=\"selectedOrganization.profile?.photo\"\n :title=\"selectedOrganization.profile?.name\"\n @click=\"() => { \n selectedOrganization = null\n }\"\n class=\"h-4r w-100 bg-light pd-thin radius-medium mn-b-thin\"\n />\n\n <section v-else class=\"mn-b-thin h-25r o-x-hidden o-y-scroll bg-light radius-big pd-small \">\n <Feed\n :showLoadMore=\"false\" \n :search=\"{\n placeholder: 'Search organization...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No organizations Found',\n description: 'Currently, there are no such organizations available.'\n }\n }\"\n :store=\"{\n read: (options) => organizations.actions.read(options),\n state: null\n }\"\n :options=\"{\n user: auth.state.user._id,\n postable: auth.state.user._id,\n lookup: ['memberships']\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <Card\n v-for=\"(organization, index) in items\" \n v-memo=\"[organization._id, organization.profile.name]\"\n :photo=\"organization.profile?.photo\"\n :title=\"organization.profile?.name\"\n @click=\"() => { \n selectedOrganization = organization\n }\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </section>\n\n <h5 v-if=\"selectedOrganization\" class=\"mn-b-thin\">Options:</h5>\n <div v-if=\"selectedOrganization\" class=\"mn-b-medium br-grey-transp-25 br-2px pd-small radius-big\">\n <Checkbox \n :label=\"'Hide Author'\"\n :radio=\"post.creator.hidden\"\n @update:radio=\"event => post.creator.hidden = event\"\n name=\"prices\"\n class=\"w-100\"\n />\n </div>\n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"w-100 bg-black t-white\">Publish</Button>\n </Popup>\n \n </article>\n</template>\n\n<script setup>\nimport Textarea from '@martyrs/src/modules/constructor/components/elements/Textarea.vue';\nimport Constructor from '@martyrs/src/modules/constructor/components/sections/Constructor.vue';\n\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'; \nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport Card from '@martyrs/src/modules/core/views/components/blocks/Card.vue';\n\nimport { ref, onMounted, watchEffect, nextTick, computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { VueDraggableNext } from 'vue-draggable-next';\n// Store & Router\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\n \nimport { useGlobalMixins } from \"@martyrs/src/modules/core/views/mixins/mixins.js\"\n\nconst { hasAccess } = useGlobalMixins()\n\nconst route = useRoute();\nconst router = useRouter();\n\nlet post = ref(null);\nlet publics = ref(null);\n\nconst selectedTags = ref([]);\nconst selectedOrganization = ref(null);\n\nonMounted(async () =>{\n \n if (route.params.url) {\n const data = await blog.read({ user: auth.state.user._id, url: route.params.url });\n \n post.value = data.pop();\n\n if (!post.value) {\n router.push({name: 'notfound'})\n }\n\n if (post.value.owner.type === 'organization') {\n // Если пост принадлежит организации, проверяем права на редактирование через `hasAccess`\n const isAccess = hasAccess(post.value.owner.target._id, 'posts', 'edit', auth.state.accesses, auth.state.access.roles);\n\n if (!isAccess) {\n router.push({name: 'unauthorized'})\n }\n }\n\n if (post.value.owner.type === 'user' && post.value.creator.target._id !== auth.state.user._id) {\n router.push({name: 'unauthorized'})\n }\n } else {\n blog.clean();\n post.value = blog.state.current;\n }\n\n if (!post.value.owner) post.value.owner = {\n target: auth.state.user._id,\n type: 'user'\n }\n\n if (!post.value.creator) post.value.creator = {\n target: auth.state.user._id,\n type: 'user',\n hidden: false\n }\n\n\n if (post.value.owner.type === 'organization') selectedOrganization.value = {\n _id: post.value.owner.target._id,\n name: post.value.owner.target.profile.name,\n photo: post.value.owner.target.profile.photo\n }\n})\n// /////////////////////////////////////////\n// Publication Form\n// /////////////////////////////////////////\nconst tag = ref('');\nconst autocompleteItems = ref([\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n]);\n\nconst filteredItems = computed(() => {\n return autocompleteItems.value.filter(i => {\n return i.text.toLowerCase().includes(tag.value.toLowerCase());\n });\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tag) {\n selectedTags.value.push(tag)\n}\n// /////////////////////////////////////////\n// Publication Popup\n// /////////////////////////////////////////\nconst isPublicationPopup = ref(false)\n\nfunction openPulicationPopup() {\n isPublicationPopup.value = true;\n}\nfunction closePublicationPopup() {\n isPublicationPopup.value = false;\n}\n\nfunction onDrafts() {\n\n if (selectedTags.value.length > 0) selectedTags.value.map(tag => (tag.text))\n\n post.value.status = \"draft\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n\nfunction onSubmit() {\n\n if (selectedOrganization.value) post.value.owner = {\n target: selectedOrganization.value._id,\n type: 'organization'\n }\n\n if (!selectedOrganization.value) post.value.creator.hidden = false\n if (!selectedOrganization.value) post.value.organization = post.value.creator\n\n post.value.status = \"published\"\n post.value.name = post.value.content[0].content\n\n if (route.params.url) {\n blog.update(post.value)\n .then(response => {\n console.log(post.value)\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n } else {\n blog.create(post.value)\n .then(response => {\n router.push({ name: 'BlogPost', params: { url: response.url } });\n })\n .catch(error => {\n console.error(error);\n });\n }\n}\n\nfunction onDelete() {\n if (confirm('Are you sure you want to delete this post?')) {\n blog.remove(post.value._id)\n .then(response => {\n router.push({ name: 'User Posts', params: { _id: post.value.creator.target._id } });\n })\n .catch(error => {\n console.log(error);\n });\n }\n}\n</script>\n\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.read","auth.state","blog.clean","blog.state","tag","blog.update","blog.create","blog.remove"],"mappings":"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"}
@@ -52,7 +52,7 @@ const _sfc_main = {
52
52
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({
53
53
  name: unref(route).params?._id ? "Organization_PostAdd" : "CreateBlogPost"
54
54
  })),
55
- class: "radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second"
55
+ class: "radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second"
56
56
  }, " + ")) : createCommentVNode("", true)
57
57
  ])) : createCommentVNode("", true),
58
58
  createElementVNode("div", _hoisted_3, [
@@ -90,7 +90,7 @@ const _sfc_main = {
90
90
  key: item._id,
91
91
  blogpost: item,
92
92
  user: state.user._id,
93
- class: "h-max-40r bg-light radius-medium cursor-pointer hover-scale-1 transition-all",
93
+ class: "h-max-40r bg-light radius-medium cursor-pointer hover:scale-[1.05] ease",
94
94
  onClick: ($event) => _ctx.$router.push({
95
95
  name: unref(route).params._id ? "Organization_BlogPost" : "BlogPost",
96
96
  params: {
@@ -1 +1 @@
1
- {"version":3,"file":"Posts.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Posts.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Posts</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'posts', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_PostAdd' : 'CreateBlogPost'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Feed\n :search=\"true\"\n v-model:filter=\"blog.state.filter\"\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog.'\n }\n }\"\n :store=\"{\n read: (options) => blog.read(options),\n state: blog.state\n }\"\n :options=\"{\n limit: 12,\n status: 'published',\n user: auth.state.user._id,\n owner: route.params._id || null,\n search: route.query.search\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-1 pos-relative w-100 rows-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r bg-light radius-medium cursor-pointer hover-scale-1 transition-all\"\n @click=\"$router.push({ \n name: route.params._id ? 'Organization_BlogPost' : 'BlogPost', \n params: { \n _id: route.params._id,\n url: item.url \n } \n })\"\n />\n </Feed>\n\n </div>\n </div>\n</template>\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as blog from '@martyrs/src/modules/community/store/blogposts.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n const core = useStore();\n\n const route = useRoute()\n const router = useRouter()\n const { hasAccess } = useGlobalMixins()\n\n // Props\n const props = defineProps({\n organization: {\n type: Object,\n default: null\n }\n })\n\n\n core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_PostAdd', params: { _id: route.params._id} }) : router.push({ name: 'CreateBlogPost' })\n }]\n\n onMounted(async () => {\n if (route.params._id) {\n await organizations.actions.read({ _id: route.params._id });\n }\n })\n\n onUnmounted(() => {\n core.state.navigation_bar.actions = [];\n });\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["IconPlus","auth.state","organizations.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmFE,UAAM,OAAO,SAAQ;AAErB,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,UAAS,IAAK,gBAAe;AAWrC,SAAK,MAAM,eAAe,UAAU,CAAC;AAAA,MACnC,WAAWA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,MAAW,QAAQA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,wBAAwB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,iBAAgB,CAAE;AAAA,IAC7J,CAAG;AAED,cAAU,YAAY;AACpB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMC,QAAsB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC5D;AAAA,IACF,CAAC;AAED,gBAAY,MAAM;AAChB,WAAK,MAAM,eAAe,UAAU,CAAA;AAAA,IACtC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Posts.vue.js","sources":["../../../../../../../src/modules/community/components/pages/Posts.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Posts</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'posts', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_PostAdd' : 'CreateBlogPost'\n })\" \n class=\"radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Feed\n :search=\"true\"\n v-model:filter=\"blog.state.filter\"\n v-model:sort=\"blog.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Blog Posts Found',\n description: 'Currently, there are no posts available in this blog.'\n }\n }\"\n :store=\"{\n read: (options) => blog.read(options),\n state: blog.state\n }\"\n :options=\"{\n limit: 12,\n status: 'published',\n user: auth.state.user._id,\n owner: route.params._id || null,\n search: route.query.search\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-1 pos-relative w-100 rows-1 gap-thin\"\n >\n <CardBlogpost \n v-for=\"item in items\" \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n class=\"h-max-40r bg-light radius-medium cursor-pointer hover:scale-[1.05] ease\"\n @click=\"$router.push({ \n name: route.params._id ? 'Organization_BlogPost' : 'BlogPost', \n params: { \n _id: route.params._id,\n url: item.url \n } \n })\"\n />\n </Feed>\n\n </div>\n </div>\n</template>\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as blog from '@martyrs/src/modules/community/store/blogposts.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n const core = useStore();\n\n const route = useRoute()\n const router = useRouter()\n const { hasAccess } = useGlobalMixins()\n\n // Props\n const props = defineProps({\n organization: {\n type: Object,\n default: null\n }\n })\n\n\n core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_PostAdd', params: { _id: route.params._id} }) : router.push({ name: 'CreateBlogPost' })\n }]\n\n onMounted(async () => {\n if (route.params._id) {\n await organizations.actions.read({ _id: route.params._id });\n }\n })\n\n onUnmounted(() => {\n core.state.navigation_bar.actions = [];\n });\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["IconPlus","auth.state","organizations.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmFE,UAAM,OAAO,SAAQ;AAErB,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,UAAS,IAAK,gBAAe;AAWrC,SAAK,MAAM,eAAe,UAAU,CAAC;AAAA,MACnC,WAAWA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,MAAW,QAAQA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,wBAAwB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,iBAAgB,CAAE;AAAA,IAC7J,CAAG;AAED,cAAU,YAAY;AACpB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMC,QAAsB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC5D;AAAA,IACF,CAAC;AAED,gBAAY,MAAM;AAChB,WAAK,MAAM,eAAe,UAAU,CAAA;AAAA,IACtC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -91,11 +91,11 @@ const _sfc_main = {
91
91
  totalReplies.value > 0 ? (openBlock(), createElementBlock("button", {
92
92
  key: 0,
93
93
  onClick: toggleChildren,
94
- class: "t-second cursor-pointer t-medium font-second"
94
+ class: "t-grey cursor-pointer fw-medium font-second"
95
95
  }, toDisplayString(isExpanded.value ? "Hide" : totalReplies.value + (totalReplies.value === 1 ? " reply" : " replies")), 1)) : createCommentVNode("", true),
96
96
  __props.owner ? (openBlock(), createElementBlock("button", {
97
97
  key: 1,
98
- class: "font-second cursor-pointer t-transp t-medium",
98
+ class: "font-second cursor-pointer t-transp fw-medium",
99
99
  onClick: _cache[0] || (_cache[0] = ($event) => showReplyForm.value = true)
100
100
  }, " Reply ")) : createCommentVNode("", true)
101
101
  ]),
@@ -150,7 +150,7 @@ const _sfc_main = {
150
150
  };
151
151
  }
152
152
  };
153
- const Comment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-997a29cd"]]);
153
+ const Comment = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d265fc89"]]);
154
154
  export {
155
155
  Comment as default
156
156
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Comment.vue.js","sources":["../../../../../../../src/modules/community/components/sections/Comment.vue"],"sourcesContent":["<template>\n <div class=\"comment-wrapper\">\n <div class=\"comment-content \">\n <CardHeader \n class=\"mn-b-thin mn-b-thin w-100\"\n :entity=\"comment\"\n :entityType=\"'comment'\"\n :user=\"owner\"\n :owner=\"{target: comment.owner, type: 'user'}\" \n :creator=\"{target: comment.owner, type: 'user'}\"\n :date=\"comment.createdAt\"\n />\n <div class=\"pd-t-zero\">\n <p class=\"p-regular\">{{ comment.content }}</p>\n </div>\n <div class=\"mn-t-thin flex-v-center flex-nowrap flex gap-small\">\n <button \n v-if=\"totalReplies > 0\" \n @click=\"toggleChildren\"\n class=\"t-second cursor-pointer t-medium font-second\"\n >\n {{ isExpanded ? 'Hide' : totalReplies + (totalReplies === 1 ? ' reply' : ' replies') }} \n </button>\n <button \n v-if=\"owner\" \n class=\"font-second cursor-pointer t-transp t-medium\" \n @click=\"showReplyForm = true\"\n > \n Reply\n </button>\n </div>\n <div v-if=\"showReplyForm\" class=\"mn-t-small bg-white pd-thin radius-regular\">\n <textarea class=\"w-100\" v-model=\"replyContent\"></textarea>\n <div class=\"mn-l-auto gap-thin flex-nowrap flex\">\n <button class=\"bg-grey-transp-25 pd-r-regular pd-l-regular pd-thin button\" @click=\"showReplyForm = false\">Cancel</button>\n <button class=\"bg-main pd-r-regular pd-l-regular pd-thin button\" @click=\"submitReply\">Send</button>\n </div>\n </div>\n </div>\n\n <transition name=\"collapse\">\n <div v-if=\"isExpanded && comment.children && comment.children.length\" class=\"mn-t-regular comment-children\">\n <div\n v-for=\"(childComment, index) in comment.children\"\n :key=\"childComment._id\"\n class=\"child-wrapper\"\n >\n <!-- Кликабельная область с линией -->\n <div \n @click=\"toggleChildren\" \n @mouseenter=\"highlightLevel($event, true)\"\n @mouseleave=\"highlightLevel($event, false)\"\n class=\"tree-line cursor-pointer\"\n :class=\"{ 'last-child': index === comment.children.length - 1 }\"\n ></div>\n \n <Comment\n :comment=\"childComment\"\n :target=\"target\"\n :owner=\"owner\"\n @reply=\"handleReply\"\n @load-more=\"handleLoadMore\"\n class=\"child-comment mn-b-regular\"\n />\n </div>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport Comment from './Comment.vue';\nimport CardHeader from '@martyrs/src/modules/core/views/components/blocks/CardHeader.vue'\n\nconst props = defineProps({\n comment: {\n type: Object,\n required: true\n },\n target: {\n type: String,\n required: true\n },\n owner: {\n type: String,\n required: true\n }\n});\n\nconst emit = defineEmits(['reply', 'load-more']);\n\nconst showReplyForm = ref(false);\nconst replyContent = ref('');\nconst isExpanded = ref(shouldBeExpanded(props.comment.depth))\n\n\nconst childrenContainer = ref(null)\n\nfunction highlightLevel(event, state) {\n const wrapper = event.currentTarget?.parentElement?.parentElement;\n if (!wrapper) return;\n\n const lines = wrapper.querySelectorAll(':scope > .child-wrapper > .tree-line');\n lines.forEach(line => line.classList.toggle('hovered', state));\n} \n\nfunction shouldBeExpanded(depth) {\n return depth % 3 < 2\n}\n\nconst totalReplies = computed(() => {\n function countReplies(comment) {\n if (!comment.children || comment.children.length === 0) {\n return 0\n }\n return comment.children.length + comment.children.reduce((sum, child) => sum + countReplies(child), 0)\n }\n return countReplies(props.comment)\n})\n\nconst toggleChildren = () => {\n isExpanded.value = !isExpanded.value\n}\n\nconst submitReply = () => {\n emit('reply', props.comment._id, replyContent.value);\n replyContent.value = '';\n showReplyForm.value = false;\n};\n\nconst handleReply = (parentId, content) => {\n emit('reply', parentId, content);\n};\n\nconst handleLoadMore = (commentId, depth) => {\n emit('load-more', commentId, depth);\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.comment-children {\n margin-top: 1rem;\n}\n\n.child-wrapper {\n position: relative;\n}\n\n.child-comment {\n padding-left: 1.5rem;\n}\n\n.tree-line {\n position: absolute;\n left: calc(-1rem + 2px);\n top: -1rem;\n width: 2rem;\n height: calc(100% + 2rem);\n}\n\n.tree-line::before {\n content: '';\n position: absolute;\n left: 1rem;\n top: 0;\n width: 2px;\n height: 100%;\n border-left: 1px solid rgba(var(--grey), 1);\n transition: background 0.2s ease;\n}\n\n.tree-line::after {\n content: '';\n position: absolute;\n left: 1rem;\n top: 2rem;\n width: 1rem;\n height: 2px;\n border-bottom: 1px solid rgba(var(--grey), 1);\n transition: background 0.2s ease;\n\n}\n\n.child-wrapper {\n &:last-child {\n .tree-line::after {\n display: none;\n }\n }\n}\n\n.tree-line.last-child::before {\n height: 2rem;\n border-bottom-left-radius: 0.5rem;\n border-left: 1px solid rgba(var(--grey), 1);\n border-bottom: 1px solid rgba(var(--grey), 1);\n background: none;\n width: 1rem;\n}\n\n\n.tree-line.hovered::before,\n.tree-line.hovered::after {\n border-color: rgba(var(--second), 1);\n}\n\n.tree-line.last-child.hovered::before {\n border-color: rgba(var(--second), 1);\n}\n\n/* Анимация */\n.collapse-enter-active,\n.collapse-leave-active {\n transition: all 0.3s ease;\n}\n\n.collapse-enter-from {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.collapse-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,UAAM,QAAQ;AAed,UAAM,OAAO;AAEb,UAAM,gBAAgB,IAAI,KAAK;AAC/B,UAAM,eAAe,IAAI,EAAE;AAC3B,UAAM,aAAa,IAAI,iBAAiB,MAAM,QAAQ,KAAK,CAAC;AAGlC,QAAI,IAAI;AAElC,aAAS,eAAe,OAAO,OAAO;AACpC,YAAM,UAAU,MAAM,eAAe,eAAe;AACpD,UAAI,CAAC,QAAS;AAEd,YAAM,QAAQ,QAAQ,iBAAiB,sCAAsC;AAC7E,YAAM,QAAQ,UAAQ,KAAK,UAAU,OAAO,WAAW,KAAK,CAAC;AAAA,IAC/D;AAEA,aAAS,iBAAiB,OAAO;AAC/B,aAAO,QAAQ,IAAI;AAAA,IACrB;AAEA,UAAM,eAAe,SAAS,MAAM;AAClC,eAAS,aAAa,SAAS;AAC7B,YAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,GAAG;AACtD,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,SAAS,SAAS,QAAQ,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,aAAa,KAAK,GAAG,CAAC;AAAA,MACvG;AACA,aAAO,aAAa,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,iBAAiB,MAAM;AAC3B,iBAAW,QAAQ,CAAC,WAAW;AAAA,IACjC;AAEA,UAAM,cAAc,MAAM;AACxB,WAAK,SAAS,MAAM,QAAQ,KAAK,aAAa,KAAK;AACnD,mBAAa,QAAQ;AACrB,oBAAc,QAAQ;AAAA,IACxB;AAEA,UAAM,cAAc,CAAC,UAAU,YAAY;AACzC,WAAK,SAAS,UAAU,OAAO;AAAA,IACjC;AAEA,UAAM,iBAAiB,CAAC,WAAW,UAAU;AAC3C,WAAK,aAAa,WAAW,KAAK;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Comment.vue.js","sources":["../../../../../../../src/modules/community/components/sections/Comment.vue"],"sourcesContent":["<template>\n <div class=\"comment-wrapper\">\n <div class=\"comment-content \">\n <CardHeader \n class=\"mn-b-thin mn-b-thin w-100\"\n :entity=\"comment\"\n :entityType=\"'comment'\"\n :user=\"owner\"\n :owner=\"{target: comment.owner, type: 'user'}\" \n :creator=\"{target: comment.owner, type: 'user'}\"\n :date=\"comment.createdAt\"\n />\n <div class=\"pd-t-zero\">\n <p class=\"p-regular\">{{ comment.content }}</p>\n </div>\n <div class=\"mn-t-thin flex-v-center flex-nowrap flex gap-small\">\n <button \n v-if=\"totalReplies > 0\" \n @click=\"toggleChildren\"\n class=\"t-grey cursor-pointer fw-medium font-second\"\n >\n {{ isExpanded ? 'Hide' : totalReplies + (totalReplies === 1 ? ' reply' : ' replies') }} \n </button>\n <button \n v-if=\"owner\" \n class=\"font-second cursor-pointer t-transp fw-medium\" \n @click=\"showReplyForm = true\"\n > \n Reply\n </button>\n </div>\n <div v-if=\"showReplyForm\" class=\"mn-t-small bg-white pd-thin radius-regular\">\n <textarea class=\"w-100\" v-model=\"replyContent\"></textarea>\n <div class=\"mn-l-auto gap-thin flex-nowrap flex\">\n <button class=\"bg-grey-transp-25 pd-r-regular pd-l-regular pd-thin button\" @click=\"showReplyForm = false\">Cancel</button>\n <button class=\"bg-main pd-r-regular pd-l-regular pd-thin button\" @click=\"submitReply\">Send</button>\n </div>\n </div>\n </div>\n\n <transition name=\"collapse\">\n <div v-if=\"isExpanded && comment.children && comment.children.length\" class=\"mn-t-regular comment-children\">\n <div\n v-for=\"(childComment, index) in comment.children\"\n :key=\"childComment._id\"\n class=\"child-wrapper\"\n >\n <!-- Кликабельная область с линией -->\n <div \n @click=\"toggleChildren\" \n @mouseenter=\"highlightLevel($event, true)\"\n @mouseleave=\"highlightLevel($event, false)\"\n class=\"tree-line cursor-pointer\"\n :class=\"{ 'last-child': index === comment.children.length - 1 }\"\n ></div>\n \n <Comment\n :comment=\"childComment\"\n :target=\"target\"\n :owner=\"owner\"\n @reply=\"handleReply\"\n @load-more=\"handleLoadMore\"\n class=\"child-comment mn-b-regular\"\n />\n </div>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport Comment from './Comment.vue';\nimport CardHeader from '@martyrs/src/modules/core/views/components/blocks/CardHeader.vue'\n\nconst props = defineProps({\n comment: {\n type: Object,\n required: true\n },\n target: {\n type: String,\n required: true\n },\n owner: {\n type: String,\n required: true\n }\n});\n\nconst emit = defineEmits(['reply', 'load-more']);\n\nconst showReplyForm = ref(false);\nconst replyContent = ref('');\nconst isExpanded = ref(shouldBeExpanded(props.comment.depth))\n\n\nconst childrenContainer = ref(null)\n\nfunction highlightLevel(event, state) {\n const wrapper = event.currentTarget?.parentElement?.parentElement;\n if (!wrapper) return;\n\n const lines = wrapper.querySelectorAll(':scope > .child-wrapper > .tree-line');\n lines.forEach(line => line.classList.toggle('hovered', state));\n} \n\nfunction shouldBeExpanded(depth) {\n return depth % 3 < 2\n}\n\nconst totalReplies = computed(() => {\n function countReplies(comment) {\n if (!comment.children || comment.children.length === 0) {\n return 0\n }\n return comment.children.length + comment.children.reduce((sum, child) => sum + countReplies(child), 0)\n }\n return countReplies(props.comment)\n})\n\nconst toggleChildren = () => {\n isExpanded.value = !isExpanded.value\n}\n\nconst submitReply = () => {\n emit('reply', props.comment._id, replyContent.value);\n replyContent.value = '';\n showReplyForm.value = false;\n};\n\nconst handleReply = (parentId, content) => {\n emit('reply', parentId, content);\n};\n\nconst handleLoadMore = (commentId, depth) => {\n emit('load-more', commentId, depth);\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.comment-children {\n margin-top: 1rem;\n}\n\n.child-wrapper {\n position: relative;\n}\n\n.child-comment {\n padding-left: 1.5rem;\n}\n\n.tree-line {\n position: absolute;\n left: calc(-1rem + 2px);\n top: -1rem;\n width: 2rem;\n height: calc(100% + 2rem);\n}\n\n.tree-line::before {\n content: '';\n position: absolute;\n left: 1rem;\n top: 0;\n width: 2px;\n height: 100%;\n border-left: 1px solid rgba(var(--grey), 1);\n transition: background 0.2s ease;\n}\n\n.tree-line::after {\n content: '';\n position: absolute;\n left: 1rem;\n top: 2rem;\n width: 1rem;\n height: 2px;\n border-bottom: 1px solid rgba(var(--grey), 1);\n transition: background 0.2s ease;\n\n}\n\n.child-wrapper {\n &:last-child {\n .tree-line::after {\n display: none;\n }\n }\n}\n\n.tree-line.last-child::before {\n height: 2rem;\n border-bottom-left-radius: 0.5rem;\n border-left: 1px solid rgba(var(--grey), 1);\n border-bottom: 1px solid rgba(var(--grey), 1);\n background: none;\n width: 1rem;\n}\n\n\n.tree-line.hovered::before,\n.tree-line.hovered::after {\n border-color: rgba(var(--second), 1);\n}\n\n.tree-line.last-child.hovered::before {\n border-color: rgba(var(--second), 1);\n}\n\n/* Анимация */\n.collapse-enter-active,\n.collapse-leave-active {\n transition: all 0.3s ease;\n}\n\n.collapse-enter-from {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.collapse-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,UAAM,QAAQ;AAed,UAAM,OAAO;AAEb,UAAM,gBAAgB,IAAI,KAAK;AAC/B,UAAM,eAAe,IAAI,EAAE;AAC3B,UAAM,aAAa,IAAI,iBAAiB,MAAM,QAAQ,KAAK,CAAC;AAGlC,QAAI,IAAI;AAElC,aAAS,eAAe,OAAO,OAAO;AACpC,YAAM,UAAU,MAAM,eAAe,eAAe;AACpD,UAAI,CAAC,QAAS;AAEd,YAAM,QAAQ,QAAQ,iBAAiB,sCAAsC;AAC7E,YAAM,QAAQ,UAAQ,KAAK,UAAU,OAAO,WAAW,KAAK,CAAC;AAAA,IAC/D;AAEA,aAAS,iBAAiB,OAAO;AAC/B,aAAO,QAAQ,IAAI;AAAA,IACrB;AAEA,UAAM,eAAe,SAAS,MAAM;AAClC,eAAS,aAAa,SAAS;AAC7B,YAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,WAAW,GAAG;AACtD,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,SAAS,SAAS,QAAQ,SAAS,OAAO,CAAC,KAAK,UAAU,MAAM,aAAa,KAAK,GAAG,CAAC;AAAA,MACvG;AACA,aAAO,aAAa,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,iBAAiB,MAAM;AAC3B,iBAAW,QAAQ,CAAC,WAAW;AAAA,IACjC;AAEA,UAAM,cAAc,MAAM;AACxB,WAAK,SAAS,MAAM,QAAQ,KAAK,aAAa,KAAK;AACnD,mBAAa,QAAQ;AACrB,oBAAc,QAAQ;AAAA,IACxB;AAEA,UAAM,cAAc,CAAC,UAAU,YAAY;AACzC,WAAK,SAAS,UAAU,OAAO;AAAA,IACjC;AAEA,UAAM,iBAAiB,CAAC,WAAW,UAAU;AAC3C,WAAK,aAAa,WAAW,KAAK;AAAA,IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { getCurrentInstance, ref, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, withModifiers, withDirectives, vModelText, Fragment, renderList, createBlock } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- import { Preferences } from "../../../../../node_modules/.pnpm/@capacitor_preferences@7.0.0_@capacitor_core@7.0.1/node_modules/@capacitor/preferences/dist/esm/index.js";
3
+ import { Preferences } from "../../../../../node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js";
4
4
  import Comment from "./Comment.vue.js";
5
5
  import $axios from "../../../core/views/utils/axios-instance.js";
6
6
  const _hoisted_1 = { id: "comments" };
@@ -50,7 +50,7 @@ const _sfc_main = {
50
50
  onFileChange: onComponentSave,
51
51
  type: "audio",
52
52
  placeholder: "Upload video",
53
- class: "w-100 br-solid br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
53
+ class: "w-100 br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
54
54
  }, null, 8, ["field"])
55
55
  ]))
56
56
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Audio.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Audio.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"video/mp4\">\n Your browser does not support the video tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"audioUrl\"\n @file-change=\"onComponentSave\"\n type=\"audio\" \n :placeholder=\"'Upload video'\" \n class=\"\n w-100\n br-solid\n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Upload from '@martyrs/src/components/Upload/Upload.vue'\n\nconst audioUrl = ref(null);\nconst fileInput = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction updateBlock(updatedBlock) {\n const index = post.value.content.findIndex(block => block === updatedBlock);\n if (index !== -1) {\n post.value.content.splice(index, 1, updatedBlock);\n }\n}\n\n\nfunction onComponentSave(url) {\n audioUrl.value = url\n\n if (audioUrl.value ) {\n emit('input', audioUrl.value);\n emit('updateBlock', props.prop, { content: audioUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,WAAW,IAAI,IAAI;AACP,QAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAUb,aAAS,gBAAgB,KAAK;AAC5B,eAAS,QAAQ;AAEjB,UAAI,SAAS,OAAQ;AACnB,aAAK,SAAS,SAAS,KAAK;AAC5B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,SAAS,OAAO;AAAA,MAC7D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Audio.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Audio.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"video/mp4\">\n Your browser does not support the video tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"audioUrl\"\n @file-change=\"onComponentSave\"\n type=\"audio\" \n :placeholder=\"'Upload video'\" \n class=\"\n w-100\n \n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Upload from '@martyrs/src/components/Upload/Upload.vue'\n\nconst audioUrl = ref(null);\nconst fileInput = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction updateBlock(updatedBlock) {\n const index = post.value.content.findIndex(block => block === updatedBlock);\n if (index !== -1) {\n post.value.content.splice(index, 1, updatedBlock);\n }\n}\n\n\nfunction onComponentSave(url) {\n audioUrl.value = url\n\n if (audioUrl.value ) {\n emit('input', audioUrl.value);\n emit('updateBlock', props.prop, { content: audioUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,WAAW,IAAI,IAAI;AACP,QAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAUb,aAAS,gBAAgB,KAAK;AAC5B,eAAS,QAAQ;AAEjB,UAAI,SAAS,OAAQ;AACnB,aAAK,SAAS,SAAS,KAAK;AAC5B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,SAAS,OAAO;AAAA,MAC7D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -60,7 +60,7 @@ const _sfc_main = {
60
60
  "onUpdate:field": _cache[0] || (_cache[0] = ($event) => embedCode.value = $event),
61
61
  type: "textarea",
62
62
  placeholder: "Paste your embed code here",
63
- class: "w-100 br-solid br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
63
+ class: "w-100 br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
64
64
  }, null, 8, ["field"]),
65
65
  createElementVNode("div", { class: "flex-v-center flex-nowrap flex gap-small" }, [
66
66
  _cache[2] || (_cache[2] = createElementVNode("p", { class: "p-small t-left" }, "Embeds from Youtube, Facebook, Instagram, Twitter, Tiktok, Soundcloud, Vimeo, Reddit, Linkedin, Medium, Spotify and Soundcloud are allowed.", -1)),
@@ -1 +1 @@
1
- {"version":3,"file":"Embed.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Embed.vue"],"sourcesContent":["<template>\n <div \n class=\"w-100 h-max-40r pd-medium bg-white radius-medium pos-relative\">\n \n <div \n v-if=\"prop.content\" \n v-html=\"prop.content\" \n class=\"flex-center constructor-iframe flex pos-relative\"\n />\n \n <div\n class=\"\" \n v-else\n >\n <Field \n v-model:field=\"embedCode\"\n type=\"textarea\" \n :placeholder=\"'Paste your embed code here'\" \n class=\"\n w-100\n br-solid\n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n <div class=\"flex-v-center flex-nowrap flex gap-small\">\n \n <p class=\"p-small t-left\">Embeds from Youtube, Facebook, Instagram, Twitter, Tiktok, Soundcloud, Vimeo, Reddit, Linkedin, Medium, Spotify and Soundcloud are allowed.</p>\n <button \n @click=\"onComponentClick\"\n class=\"button-small bg-second t-white button\"\n >\n <span>Save</span>\n </button>\n </div>\n </div>\n <!-- <button v-if=\"prop.content\" @click=\"editEmbedCode\">Edit Embed Code</button> -->\n </div>\n</template>\n\n<style lang=\"scss\">\n.constructor-iframe {\n iframe { \n width: 100% !important;\n height: 100% !important;\n position: relative !important;\n }\n}\n</style>\n\n\n<script setup>\nimport { ref,onMounted } from 'vue';\n\nimport Field from '@martyrs/src/components/Field/Field.vue'\n\nconst embedCode = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction isValidEmbedCode(code) {\n const allowedSources = [\n /youtube\\.com/,\n /facebook\\.com/,\n /instagram\\.com/,\n /twitter\\.com/,\n /tiktok\\.com/,\n /soundcloud\\.com/,\n /vimeo\\.com/,\n /reddit\\.com/,\n /linkedin\\.com/,\n /medium\\.com/,\n /spotify\\.com/,\n ];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\nonMounted(() => {\n if (props.prop.content?.includes('instagram.com') && window.instgrm) {\n window.instgrm.Embeds.process();\n }\n});\n\n\nfunction onComponentClick() {\n\n if (embedCode.value && isValidEmbedCode(embedCode.value)) {\n emit('input', embedCode.value);\n emit('updateBlock', props.prop, { content: embedCode.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\nfunction editEmbedCode() {\n let embedInput = prompt('Edit embed code:', prop.content);\n if (embedInput && isValidEmbedCode(embedInput)) {\n embedCode.value = embedInput;\n emit('input', embedCode.value);\n emit('updateBlock', props.prop, { content: embedCode.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA2DA,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAEb,aAAS,iBAAiB,MAAM;AAC9B,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACE,aAAO,eAAe,KAAK,aAAW,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC1D;AAEA,cAAU,MAAM;AACd,UAAI,MAAM,KAAK,SAAS,SAAS,eAAe,KAAK,OAAO,SAAS;AACnE,eAAO,QAAQ,OAAO,QAAO;AAAA,MAC/B;AAAA,IACF,CAAC;AAGD,aAAS,mBAAmB;AAE1B,UAAI,UAAU,SAAS,iBAAiB,UAAU,KAAK,GAAG;AACxD,aAAK,SAAS,UAAU,KAAK;AAC7B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,UAAU,OAAO;AAAA,MAC9D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Embed.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Embed.vue"],"sourcesContent":["<template>\n <div \n class=\"w-100 h-max-40r pd-medium bg-white radius-medium pos-relative\">\n \n <div \n v-if=\"prop.content\" \n v-html=\"prop.content\" \n class=\"flex-center constructor-iframe flex pos-relative\"\n />\n \n <div\n class=\"\" \n v-else\n >\n <Field \n v-model:field=\"embedCode\"\n type=\"textarea\" \n :placeholder=\"'Paste your embed code here'\" \n class=\"\n w-100\n \n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n <div class=\"flex-v-center flex-nowrap flex gap-small\">\n \n <p class=\"p-small t-left\">Embeds from Youtube, Facebook, Instagram, Twitter, Tiktok, Soundcloud, Vimeo, Reddit, Linkedin, Medium, Spotify and Soundcloud are allowed.</p>\n <button \n @click=\"onComponentClick\"\n class=\"button-small bg-second t-white button\"\n >\n <span>Save</span>\n </button>\n </div>\n </div>\n <!-- <button v-if=\"prop.content\" @click=\"editEmbedCode\">Edit Embed Code</button> -->\n </div>\n</template>\n\n<style lang=\"scss\">\n.constructor-iframe {\n iframe { \n width: 100% !important;\n height: 100% !important;\n position: relative !important;\n }\n}\n</style>\n\n\n<script setup>\nimport { ref,onMounted } from 'vue';\n\nimport Field from '@martyrs/src/components/Field/Field.vue'\n\nconst embedCode = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction isValidEmbedCode(code) {\n const allowedSources = [\n /youtube\\.com/,\n /facebook\\.com/,\n /instagram\\.com/,\n /twitter\\.com/,\n /tiktok\\.com/,\n /soundcloud\\.com/,\n /vimeo\\.com/,\n /reddit\\.com/,\n /linkedin\\.com/,\n /medium\\.com/,\n /spotify\\.com/,\n ];\n return allowedSources.some(pattern => pattern.test(code));\n}\n\nonMounted(() => {\n if (props.prop.content?.includes('instagram.com') && window.instgrm) {\n window.instgrm.Embeds.process();\n }\n});\n\n\nfunction onComponentClick() {\n\n if (embedCode.value && isValidEmbedCode(embedCode.value)) {\n emit('input', embedCode.value);\n emit('updateBlock', props.prop, { content: embedCode.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\nfunction editEmbedCode() {\n let embedInput = prompt('Edit embed code:', prop.content);\n if (embedInput && isValidEmbedCode(embedInput)) {\n embedCode.value = embedInput;\n emit('input', embedCode.value);\n emit('updateBlock', props.prop, { content: embedCode.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA2DA,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAEb,aAAS,iBAAiB,MAAM;AAC9B,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACE,aAAO,eAAe,KAAK,aAAW,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC1D;AAEA,cAAU,MAAM;AACd,UAAI,MAAM,KAAK,SAAS,SAAS,eAAe,KAAK,OAAO,SAAS;AACnE,eAAO,QAAQ,OAAO,QAAO;AAAA,MAC/B;AAAA,IACF,CAAC;AAGD,aAAS,mBAAmB;AAE1B,UAAI,UAAU,SAAS,iBAAiB,UAAU,KAAK,GAAG;AACxD,aAAK,SAAS,UAAU,KAAK;AAC7B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,UAAU,OAAO;AAAA,MAC9D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -245,7 +245,7 @@ const _sfc_main = {
245
245
  onKeydown: handleKeyDown,
246
246
  tabindex: "0",
247
247
  class: normalizeClass(["editable-div mn-b-thin", {
248
- "t-main t-semi": __props.prop.type === "Link",
248
+ "t-main fw-semi": __props.prop.type === "Link",
249
249
  "h3": __props.prop.type === "H2"
250
250
  }])
251
251
  }, null, 34),
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.vue2.js","sources":["../../../../../../../src/modules/constructor/components/elements/Textarea.vue"],"sourcesContent":["<template>\n <div>\n <div \n ref=\"editableDiv\"\n :contenteditable=\"true\"\n @input=\"handleInput\"\n @paste=\"handlePaste\"\n @keydown=\"handleKeyDown\"\n tabindex=\"0\"\n class=\"editable-div mn-b-thin\"\n :class=\"{\n 't-main t-semi': prop.type === 'Link',\n 'h3': prop.type === 'H2'\n }\"\n />\n <div v-if=\"isTextSelected\" class=\"formatting-bar\">\n <button @click=\"applyFormat('bold')\" title=\"Bold\"><b>B</b></button>\n <button @click=\"applyFormat('italic')\" title=\"Italic\"><i>I</i></button>\n <button @click=\"applyFormat('underline')\" title=\"Underline\"><u>U</u></button>\n <button @click=\"applyFormat('strikeThrough')\" title=\"Strikethrough\"><s>S</s></button>\n <button @click=\"createLink\" title=\"Insert Link\">🔗</button>\n <button @click=\"applyFormat('unlink')\" title=\"Remove Link\">⛓️‍💥</button>\n <button @click=\"applyFormat('justifyLeft')\" title=\"Align Left\">↲</button>\n <button @click=\"applyFormat('justifyCenter')\" title=\"Align Center\">↔</button>\n <button @click=\"applyFormat('justifyRight')\" title=\"Align Right\">↳</button>\n <button @click=\"applyFormat('insertUnorderedList')\" title=\"Bulleted List\">•</button>\n <button @click=\"applyFormat('insertOrderedList')\" title=\"Numbered List\">1.</button>\n <button @click=\"clearFormatting\" title=\"Clear Formatting\">🧹</button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, nextTick, onUpdated, onUnmounted, watch } from 'vue'\nimport DOMPurify from 'isomorphic-dompurify'\n\nconst sanitizeConfig = {\n ALLOWED_TAGS: ['b', 'i', 'u', 's', 'a', 'ul', 'ol', 'li', 'img', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'table', 'thead','tr','th'],\n ALLOWED_ATTR: ['href', 'target', 'src', 'alt'],\n ALLOWED_STYLES: ['text-align']\n}\n\nconst props = defineProps({\n modelValue: {\n type: String,\n default: ''\n },\n prop: {\n type: Object,\n required: true\n },\n component: Object,\n placeholder: String,\n index: Number,\n setFocus: Boolean\n})\n\nconst emit = defineEmits([\n 'update:modelValue', \n 'deleteBlock', \n 'updateBlock', \n 'addBlock'\n])\n\nconst editableDiv = ref(null)\nconst isTextSelected = ref(false)\nconst currentContent = ref('')\n\n// Обновляем содержимое при монтировании\nonMounted(() => {\n if (editableDiv.value) {\n if (props.modelValue) {\n editableDiv.value.innerHTML = props.modelValue\n currentContent.value = props.modelValue\n }\n }\n\n document.addEventListener('selectionchange', handleSelectionChange)\n \n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\n// // Отслеживаем изменения в modelValue и обновляем DOM, если они есть\n// watch(() => props.modelValue, (newValue) => {\n// if (editableDiv.value && newValue !== currentContent.value) {\n// editableDiv.value.innerHTML = newValue || ''\n// currentContent.value = newValue\n// }\n// }, { immediate: true })\n\nconst handleInput = (event) => {\n const sanitizedContent = sanitizeHTML(event.target.innerHTML)\n currentContent.value = sanitizedContent\n emit('update:modelValue', sanitizedContent)\n}\n// Улучшенная функция для извлечения нужных элементов из DOM-структуры\nconst extractUsefulContent = (node) => {\n const result = [];\n \n // Функция для определения, содержит ли узел только один из нужных нам тегов\n const containsOnlySingleImportantTag = (node) => {\n const importantElements = node.querySelectorAll('p, h1, h2, h3, h4, h5, h6, img');\n \n // Если найден только один важный элемент и нет текста непосредственно в узле\n if (importantElements.length === 1 && !Array.from(node.childNodes).some(child => \n child.nodeType === Node.TEXT_NODE && child.textContent.trim()\n )) {\n // Убедимся, что этот элемент не содержит других важных элементов\n return !importantElements[0].querySelector('p, h1, h2, h3, h4, h5, h6, img');\n }\n \n return false;\n };\n \n // Рекурсивно просматривает дерево и извлекает только нужные элементы\n const processNode = (node) => {\n // Если это текстовый узел с непустым содержимым\n if (node.nodeType === Node.TEXT_NODE) {\n if (node.textContent.trim()) {\n // Создаем p-элемент для текста без родителя\n const p = document.createElement('p');\n p.textContent = node.textContent;\n result.push(p);\n }\n return;\n }\n \n // Если это не элемент, пропускаем\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n \n // Проверяем, что это один из нужных тегов\n const tagName = node.nodeName.toLowerCase();\n \n if (['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img'].includes(tagName)) {\n // Если это нужный тег - добавляем в результат\n result.push(node.cloneNode(true));\n } else if (containsOnlySingleImportantTag(node)) {\n // Если div содержит только один важный элемент, добавляем этот элемент\n const importantElement = node.querySelector('p, h1, h2, h3, h4, h5, h6, img');\n result.push(importantElement.cloneNode(true));\n } else {\n // Если это div или другой контейнер - проходим по его дочерним узлам\n Array.from(node.childNodes).forEach(child => {\n processNode(child);\n });\n }\n };\n \n processNode(node);\n return result;\n};\n\nconst handlePaste = (event) => {\n event.preventDefault();\n const clipboardData = event.clipboardData || window.clipboardData;\n let pastedData = clipboardData.getData('text/html') || clipboardData.getData('text/plain');\n \n console.log('Raw pasted data:', pastedData);\n \n // Предварительная очистка через функцию sanitizeHTML\n const sanitizedContent = sanitizeHTML(pastedData);\n \n console.log('Sanitized content:', sanitizedContent);\n \n // Парсим очищенный HTML\n const parser = new DOMParser();\n const doc = parser.parseFromString(sanitizedContent, 'text/html');\n \n // Извлекаем полезное содержимое\n const extractedElements = extractUsefulContent(doc.body);\n \n console.log('Extracted elements:', extractedElements.map(el => el.outerHTML));\n \n if (extractedElements.length > 0) {\n // Вставляем каждый элемент как отдельный блок\n extractedElements.forEach((element, idx) => {\n const tagName = element.nodeName.toLowerCase();\n \n // Определяем тип блока в зависимости от тега\n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n // Для изображений сохраняем только src атрибут\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = 'H2'; // Используем H2 для всех заголовков, или можно настроить по-разному\n blockContent = element.innerHTML;\n } else {\n // Для p и других текстовых элементов\n blockContent = element.innerHTML;\n }\n \n if (idx === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.innerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + idx);\n }\n });\n } else {\n // Если после очистки ничего не осталось, вставляем как обычный текст\n const plainText = clipboardData.getData('text/plain');\n if (plainText.trim()) {\n // document.execCommand('insertText', false, plainText);\n handleInput({ target: editableDiv.value });\n }\n }\n};\n\n\n// Обновленная функция для обработки вставки и создания блоков\nconst handleBlockCreation = (element, index) => {\n const tagName = element.nodeName.toLowerCase();\n \n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = tagName.toUpperCase(); // H2, H3, etc.\n blockContent = element.innerHTML;\n } else {\n blockContent = element.innerHTML;\n }\n \n if (index === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.outerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + index);\n }\n};\n\nconst handleKeyDown = (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n const newBlockContent = extractContentAfterCursor(range)\n \n const sanitizedContent = sanitizeHTML(editableDiv.value.innerHTML)\n currentContent.value = sanitizedContent\n \n emit('update:modelValue', sanitizedContent)\n emit('addBlock', 'Textarea', newBlockContent, props.index + 1)\n } else if (event.key === 'Backspace' && editableDiv.value.innerHTML.trim() === \"\") {\n event.preventDefault()\n emit('deleteBlock', props.prop, { setCaretToEnd: true })\n }\n}\n\nconst extractContentAfterCursor = (range) => {\n const container = range.startContainer\n const cursorOffset = range.startOffset\n\n if (container.nodeType === Node.TEXT_NODE) {\n const textAfterCursor = container.textContent.slice(cursorOffset)\n container.textContent = container.textContent.slice(0, cursorOffset)\n return textAfterCursor\n } else if (container.nodeType === Node.ELEMENT_NODE) {\n const tempDiv = document.createElement('div')\n const childNodes = Array.from(container.childNodes)\n let foundCursor = false\n \n childNodes.forEach((node, index) => {\n if (index === cursorOffset) foundCursor = true\n if (foundCursor) tempDiv.appendChild(node.cloneNode(true))\n })\n \n while (container.childNodes[cursorOffset]) {\n container.removeChild(container.childNodes[cursorOffset])\n }\n \n return tempDiv.innerHTML\n }\n return ''\n}\n\nconst handleSelectionChange = () => {\n if (document.activeElement === editableDiv.value) {\n const selection = window.getSelection()\n isTextSelected.value = selection.rangeCount > 0 && selection.toString().length > 0\n } else {\n isTextSelected.value = false\n }\n}\n\nconst focus = (options = {}) => {\n nextTick(() => {\n editableDiv.value.focus()\n \n const shouldSetCaretToEnd = options.setCaretToEnd || (props.prop && props.prop.setCaretToEnd)\n if (props.setFocus === true && !shouldSetCaretToEnd) {\n const range = document.createRange()\n range.setStart(editableDiv.value, 0)\n range.collapse(true)\n const selection = window.getSelection()\n selection.removeAllRanges()\n selection.addRange(range)\n } else {\n setCaretToEnd(editableDiv.value)\n }\n \n emit('updateBlock', props.prop, { setFocus: false, setCaretToEnd: false })\n })\n}\n\nconst sanitizeHTML = (html) => {\n return DOMPurify.sanitize(html, sanitizeConfig)\n}\n\nconst setCaretToEnd = (element) => {\n const range = document.createRange()\n const selection = window.getSelection()\n range.selectNodeContents(element)\n range.collapse(false)\n selection.removeAllRanges()\n selection.addRange(range)\n}\n\nconst applyFormat = (format) => {\n document.execCommand(format, false, null)\n handleInput({ target: editableDiv.value })\n}\n\nconst createLink = () => {\n const url = prompt('Enter the URL:')\n if (url) {\n document.execCommand('createLink', false, url)\n handleInput({ target: editableDiv.value })\n }\n}\n\nconst clearFormatting = () => {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const selectedContent = range.cloneContents()\n const div = document.createElement('div')\n div.appendChild(selectedContent)\n const plainText = div.innerText\n document.execCommand('insertText', false, plainText)\n handleInput({ target: editableDiv.value })\n }\n}\n\nonUpdated(() => {\n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('selectionchange', handleSelectionChange)\n})\n</script>\n\n<style lang=\"scss\">\n.editable-div {\n width: 100%;\n min-height: 1rem;\n background-color: transparent;\n outline: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n \n &:empty::before {\n content: attr(placeholder);\n color: #999;\n }\n \n &:focus {\n border: 0;\n }\n}\n\n.formatting-bar {\n display: flex;\n gap: 5px;\n margin-top: 5px;\n padding: 5px;\n background-color: #f5f5f5;\n border-radius: 4px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n \n button {\n padding: 4px 8px;\n background-color: white;\n border: 1px solid #ddd;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n min-width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n \n &:hover {\n background-color: #e0e0e0;\n }\n \n &:active {\n background-color: #d0d0d0;\n }\n }\n}\n</style>"],"names":["node"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,iBAAiB;AAAA,MACrB,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,OAAO,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAAS,SAAQ,MAAK,IAAI;AAAA,MACpI,cAAc,CAAC,QAAQ,UAAU,OAAO,KAAK;AAAA,MAC7C,gBAAgB,CAAC,YAAY;AAAA,IAC/B;AAEA,UAAM,QAAQ;AAed,UAAM,OAAO;AAOb,UAAM,cAAc,IAAI,IAAI;AAC5B,UAAM,iBAAiB,IAAI,KAAK;AAChC,UAAM,iBAAiB,IAAI,EAAE;AAG7B,cAAU,MAAM;AACd,UAAI,YAAY,OAAO;AACrB,YAAI,MAAM,YAAY;AACpB,sBAAY,MAAM,YAAY,MAAM;AACpC,yBAAe,QAAQ,MAAM;AAAA,QAC/B;AAAA,MACF;AAEA,eAAS,iBAAiB,mBAAmB,qBAAqB;AAElE,UAAI,MAAM,UAAU;AAClB,iBAAS,MAAM,MAAK,CAAE;AAAA,MACxB;AAAA,IACF,CAAC;AAUD,UAAM,cAAc,CAAC,UAAU;AAC7B,YAAM,mBAAmB,aAAa,MAAM,OAAO,SAAS;AAC5D,qBAAe,QAAQ;AACvB,WAAK,qBAAqB,gBAAgB;AAAA,IAC5C;AAEA,UAAM,uBAAuB,CAAC,SAAS;AACrC,YAAM,SAAS,CAAA;AAGf,YAAM,iCAAiC,CAACA,UAAS;AAC/C,cAAM,oBAAoBA,MAAK,iBAAiB,gCAAgC;AAGhF,YAAI,kBAAkB,WAAW,KAAK,CAAC,MAAM,KAAKA,MAAK,UAAU,EAAE;AAAA,UAAK,WACtE,MAAM,aAAa,KAAK,aAAa,MAAM,YAAY,KAAI;AAAA,QACjE,GAAO;AAED,iBAAO,CAAC,kBAAkB,CAAC,EAAE,cAAc,gCAAgC;AAAA,QAC7E;AAEA,eAAO;AAAA,MACT;AAGA,YAAM,cAAc,CAACA,UAAS;AAE5B,YAAIA,MAAK,aAAa,KAAK,WAAW;AACpC,cAAIA,MAAK,YAAY,QAAQ;AAE3B,kBAAM,IAAI,SAAS,cAAc,GAAG;AACpC,cAAE,cAAcA,MAAK;AACrB,mBAAO,KAAK,CAAC;AAAA,UACf;AACA;AAAA,QACF;AAGA,YAAIA,MAAK,aAAa,KAAK,aAAc;AAGzC,cAAM,UAAUA,MAAK,SAAS,YAAW;AAEzC,YAAI,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,SAAS,OAAO,GAAG;AAEtE,iBAAO,KAAKA,MAAK,UAAU,IAAI,CAAC;AAAA,QAClC,WAAW,+BAA+BA,KAAI,GAAG;AAE/C,gBAAM,mBAAmBA,MAAK,cAAc,gCAAgC;AAC5E,iBAAO,KAAK,iBAAiB,UAAU,IAAI,CAAC;AAAA,QAC9C,OAAO;AAEL,gBAAM,KAAKA,MAAK,UAAU,EAAE,QAAQ,WAAS;AAC3C,wBAAY,KAAK;AAAA,UACnB,CAAC;AAAA,QACH;AAAA,MACF;AAEA,kBAAY,IAAI;AAChB,aAAO;AAAA,IACT;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,YAAM,eAAc;AACpB,YAAM,gBAAgB,MAAM,iBAAiB,OAAO;AACpD,UAAI,aAAa,cAAc,QAAQ,WAAW,KAAK,cAAc,QAAQ,YAAY;AAEzF,cAAQ,IAAI,oBAAoB,UAAU;AAG1C,YAAM,mBAAmB,aAAa,UAAU;AAEhD,cAAQ,IAAI,sBAAsB,gBAAgB;AAGlD,YAAM,SAAS,IAAI,UAAS;AAC5B,YAAM,MAAM,OAAO,gBAAgB,kBAAkB,WAAW;AAGhE,YAAM,oBAAoB,qBAAqB,IAAI,IAAI;AAEvD,cAAQ,IAAI,uBAAuB,kBAAkB,IAAI,QAAM,GAAG,SAAS,CAAC;AAE5E,UAAI,kBAAkB,SAAS,GAAG;AAEhC,0BAAkB,QAAQ,CAAC,SAAS,QAAQ;AAC1C,gBAAM,UAAU,QAAQ,SAAS,YAAW;AAG5C,cAAI,YAAY;AAChB,cAAI,eAAe;AAEnB,cAAI,YAAY,OAAO;AACrB,wBAAY;AAEZ,2BAAe,QAAQ,aAAa,KAAK;AAAA,UAC3C,WAAW,QAAQ,MAAM,QAAQ,GAAG;AAClC,wBAAY;AACZ,2BAAe,QAAQ;AAAA,UACzB,OAAO;AAEL,2BAAe,QAAQ;AAAA,UACzB;AAEA,cAAI,QAAQ,GAAG;AAEb,qBAAS,YAAY,cAAc,OAAO,QAAQ,SAAS;AAC3D,wBAAY,EAAE,QAAQ,YAAY,MAAK,CAAE;AAAA,UAC3C,OAAO;AAEL,iBAAK,YAAY,WAAW,cAAc,MAAM,QAAQ,GAAG;AAAA,UAC7D;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AAEL,cAAM,YAAY,cAAc,QAAQ,YAAY;AACpD,YAAI,UAAU,QAAQ;AAEpB,sBAAY,EAAE,QAAQ,YAAY,MAAK,CAAE;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AA8BA,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,UAAU;AAC5C,cAAM,eAAc;AACpB,cAAM,YAAY,OAAO,aAAY;AACrC,cAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,cAAM,kBAAkB,0BAA0B,KAAK;AAEvD,cAAM,mBAAmB,aAAa,YAAY,MAAM,SAAS;AACjE,uBAAe,QAAQ;AAEvB,aAAK,qBAAqB,gBAAgB;AAC1C,aAAK,YAAY,YAAY,iBAAiB,MAAM,QAAQ,CAAC;AAAA,MAC/D,WAAW,MAAM,QAAQ,eAAe,YAAY,MAAM,UAAU,KAAI,MAAO,IAAI;AACjF,cAAM,eAAc;AACpB,aAAK,eAAe,MAAM,MAAM,EAAE,eAAe,KAAI,CAAE;AAAA,MACzD;AAAA,IACF;AAEA,UAAM,4BAA4B,CAAC,UAAU;AAC3C,YAAM,YAAY,MAAM;AACxB,YAAM,eAAe,MAAM;AAE3B,UAAI,UAAU,aAAa,KAAK,WAAW;AACzC,cAAM,kBAAkB,UAAU,YAAY,MAAM,YAAY;AAChE,kBAAU,cAAc,UAAU,YAAY,MAAM,GAAG,YAAY;AACnE,eAAO;AAAA,MACT,WAAW,UAAU,aAAa,KAAK,cAAc;AACnD,cAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAM,aAAa,MAAM,KAAK,UAAU,UAAU;AAClD,YAAI,cAAc;AAElB,mBAAW,QAAQ,CAAC,MAAM,UAAU;AAClC,cAAI,UAAU,aAAc,eAAc;AAC1C,cAAI,YAAa,SAAQ,YAAY,KAAK,UAAU,IAAI,CAAC;AAAA,QAC3D,CAAC;AAED,eAAO,UAAU,WAAW,YAAY,GAAG;AACzC,oBAAU,YAAY,UAAU,WAAW,YAAY,CAAC;AAAA,QAC1D;AAEA,eAAO,QAAQ;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AAEA,UAAM,wBAAwB,MAAM;AAClC,UAAI,SAAS,kBAAkB,YAAY,OAAO;AAChD,cAAM,YAAY,OAAO,aAAY;AACrC,uBAAe,QAAQ,UAAU,aAAa,KAAK,UAAU,SAAQ,EAAG,SAAS;AAAA,MACnF,OAAO;AACL,uBAAe,QAAQ;AAAA,MACzB;AAAA,IACF;AAEA,UAAM,QAAQ,CAAC,UAAU,OAAO;AAC9B,eAAS,MAAM;AACb,oBAAY,MAAM,MAAK;AAEvB,cAAM,sBAAsB,QAAQ,iBAAkB,MAAM,QAAQ,MAAM,KAAK;AAC/E,YAAI,MAAM,aAAa,QAAQ,CAAC,qBAAqB;AACnD,gBAAM,QAAQ,SAAS,YAAW;AAClC,gBAAM,SAAS,YAAY,OAAO,CAAC;AACnC,gBAAM,SAAS,IAAI;AACnB,gBAAM,YAAY,OAAO,aAAY;AACrC,oBAAU,gBAAe;AACzB,oBAAU,SAAS,KAAK;AAAA,QAC1B,OAAO;AACL,wBAAc,YAAY,KAAK;AAAA,QACjC;AAEA,aAAK,eAAe,MAAM,MAAM,EAAE,UAAU,OAAO,eAAe,MAAK,CAAE;AAAA,MAC3E,CAAC;AAAA,IACH;AAEA,UAAM,eAAe,CAAC,SAAS;AAC7B,aAAO,UAAU,SAAS,MAAM,cAAc;AAAA,IAChD;AAEA,UAAM,gBAAgB,CAAC,YAAY;AACjC,YAAM,QAAQ,SAAS,YAAW;AAClC,YAAM,YAAY,OAAO,aAAY;AACrC,YAAM,mBAAmB,OAAO;AAChC,YAAM,SAAS,KAAK;AACpB,gBAAU,gBAAe;AACzB,gBAAU,SAAS,KAAK;AAAA,IAC1B;AAEA,UAAM,cAAc,CAAC,WAAW;AAC9B,eAAS,YAAY,QAAQ,OAAO,IAAI;AACxC,kBAAY,EAAE,QAAQ,YAAY,MAAK,CAAE;AAAA,IAC3C;AAEA,UAAM,aAAa,MAAM;AACvB,YAAM,MAAM,OAAO,gBAAgB;AACnC,UAAI,KAAK;AACP,iBAAS,YAAY,cAAc,OAAO,GAAG;AAC7C,oBAAY,EAAE,QAAQ,YAAY,MAAK,CAAE;AAAA,MAC3C;AAAA,IACF;AAEA,UAAM,kBAAkB,MAAM;AAC5B,YAAM,YAAY,OAAO,aAAY;AACrC,UAAI,UAAU,aAAa,GAAG;AAC5B,cAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,cAAM,kBAAkB,MAAM,cAAa;AAC3C,cAAM,MAAM,SAAS,cAAc,KAAK;AACxC,YAAI,YAAY,eAAe;AAC/B,cAAM,YAAY,IAAI;AACtB,iBAAS,YAAY,cAAc,OAAO,SAAS;AACnD,oBAAY,EAAE,QAAQ,YAAY,MAAK,CAAE;AAAA,MAC3C;AAAA,IACF;AAEA,cAAU,MAAM;AACd,UAAI,MAAM,UAAU;AAClB,iBAAS,MAAM,MAAK,CAAE;AAAA,MACxB;AAAA,IACF,CAAC;AAED,gBAAY,MAAM;AAChB,eAAS,oBAAoB,mBAAmB,qBAAqB;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Textarea.vue2.js","sources":["../../../../../../../src/modules/constructor/components/elements/Textarea.vue"],"sourcesContent":["<template>\n <div>\n <div \n ref=\"editableDiv\"\n :contenteditable=\"true\"\n @input=\"handleInput\"\n @paste=\"handlePaste\"\n @keydown=\"handleKeyDown\"\n tabindex=\"0\"\n class=\"editable-div mn-b-thin\"\n :class=\"{\n 't-main fw-semi': prop.type === 'Link',\n 'h3': prop.type === 'H2'\n }\"\n />\n <div v-if=\"isTextSelected\" class=\"formatting-bar\">\n <button @click=\"applyFormat('bold')\" title=\"Bold\"><b>B</b></button>\n <button @click=\"applyFormat('italic')\" title=\"Italic\"><i>I</i></button>\n <button @click=\"applyFormat('underline')\" title=\"Underline\"><u>U</u></button>\n <button @click=\"applyFormat('strikeThrough')\" title=\"Strikethrough\"><s>S</s></button>\n <button @click=\"createLink\" title=\"Insert Link\">🔗</button>\n <button @click=\"applyFormat('unlink')\" title=\"Remove Link\">⛓️‍💥</button>\n <button @click=\"applyFormat('justifyLeft')\" title=\"Align Left\">↲</button>\n <button @click=\"applyFormat('justifyCenter')\" title=\"Align Center\">↔</button>\n <button @click=\"applyFormat('justifyRight')\" title=\"Align Right\">↳</button>\n <button @click=\"applyFormat('insertUnorderedList')\" title=\"Bulleted List\">•</button>\n <button @click=\"applyFormat('insertOrderedList')\" title=\"Numbered List\">1.</button>\n <button @click=\"clearFormatting\" title=\"Clear Formatting\">🧹</button>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, nextTick, onUpdated, onUnmounted, watch } from 'vue'\nimport DOMPurify from 'isomorphic-dompurify'\n\nconst sanitizeConfig = {\n ALLOWED_TAGS: ['b', 'i', 'u', 's', 'a', 'ul', 'ol', 'li', 'img', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'table', 'thead','tr','th'],\n ALLOWED_ATTR: ['href', 'target', 'src', 'alt'],\n ALLOWED_STYLES: ['text-align']\n}\n\nconst props = defineProps({\n modelValue: {\n type: String,\n default: ''\n },\n prop: {\n type: Object,\n required: true\n },\n component: Object,\n placeholder: String,\n index: Number,\n setFocus: Boolean\n})\n\nconst emit = defineEmits([\n 'update:modelValue', \n 'deleteBlock', \n 'updateBlock', \n 'addBlock'\n])\n\nconst editableDiv = ref(null)\nconst isTextSelected = ref(false)\nconst currentContent = ref('')\n\n// Обновляем содержимое при монтировании\nonMounted(() => {\n if (editableDiv.value) {\n if (props.modelValue) {\n editableDiv.value.innerHTML = props.modelValue\n currentContent.value = props.modelValue\n }\n }\n\n document.addEventListener('selectionchange', handleSelectionChange)\n \n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\n// // Отслеживаем изменения в modelValue и обновляем DOM, если они есть\n// watch(() => props.modelValue, (newValue) => {\n// if (editableDiv.value && newValue !== currentContent.value) {\n// editableDiv.value.innerHTML = newValue || ''\n// currentContent.value = newValue\n// }\n// }, { immediate: true })\n\nconst handleInput = (event) => {\n const sanitizedContent = sanitizeHTML(event.target.innerHTML)\n currentContent.value = sanitizedContent\n emit('update:modelValue', sanitizedContent)\n}\n// Улучшенная функция для извлечения нужных элементов из DOM-структуры\nconst extractUsefulContent = (node) => {\n const result = [];\n \n // Функция для определения, содержит ли узел только один из нужных нам тегов\n const containsOnlySingleImportantTag = (node) => {\n const importantElements = node.querySelectorAll('p, h1, h2, h3, h4, h5, h6, img');\n \n // Если найден только один важный элемент и нет текста непосредственно в узле\n if (importantElements.length === 1 && !Array.from(node.childNodes).some(child => \n child.nodeType === Node.TEXT_NODE && child.textContent.trim()\n )) {\n // Убедимся, что этот элемент не содержит других важных элементов\n return !importantElements[0].querySelector('p, h1, h2, h3, h4, h5, h6, img');\n }\n \n return false;\n };\n \n // Рекурсивно просматривает дерево и извлекает только нужные элементы\n const processNode = (node) => {\n // Если это текстовый узел с непустым содержимым\n if (node.nodeType === Node.TEXT_NODE) {\n if (node.textContent.trim()) {\n // Создаем p-элемент для текста без родителя\n const p = document.createElement('p');\n p.textContent = node.textContent;\n result.push(p);\n }\n return;\n }\n \n // Если это не элемент, пропускаем\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n \n // Проверяем, что это один из нужных тегов\n const tagName = node.nodeName.toLowerCase();\n \n if (['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'img'].includes(tagName)) {\n // Если это нужный тег - добавляем в результат\n result.push(node.cloneNode(true));\n } else if (containsOnlySingleImportantTag(node)) {\n // Если div содержит только один важный элемент, добавляем этот элемент\n const importantElement = node.querySelector('p, h1, h2, h3, h4, h5, h6, img');\n result.push(importantElement.cloneNode(true));\n } else {\n // Если это div или другой контейнер - проходим по его дочерним узлам\n Array.from(node.childNodes).forEach(child => {\n processNode(child);\n });\n }\n };\n \n processNode(node);\n return result;\n};\n\nconst handlePaste = (event) => {\n event.preventDefault();\n const clipboardData = event.clipboardData || window.clipboardData;\n let pastedData = clipboardData.getData('text/html') || clipboardData.getData('text/plain');\n \n console.log('Raw pasted data:', pastedData);\n \n // Предварительная очистка через функцию sanitizeHTML\n const sanitizedContent = sanitizeHTML(pastedData);\n \n console.log('Sanitized content:', sanitizedContent);\n \n // Парсим очищенный HTML\n const parser = new DOMParser();\n const doc = parser.parseFromString(sanitizedContent, 'text/html');\n \n // Извлекаем полезное содержимое\n const extractedElements = extractUsefulContent(doc.body);\n \n console.log('Extracted elements:', extractedElements.map(el => el.outerHTML));\n \n if (extractedElements.length > 0) {\n // Вставляем каждый элемент как отдельный блок\n extractedElements.forEach((element, idx) => {\n const tagName = element.nodeName.toLowerCase();\n \n // Определяем тип блока в зависимости от тега\n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n // Для изображений сохраняем только src атрибут\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = 'H2'; // Используем H2 для всех заголовков, или можно настроить по-разному\n blockContent = element.innerHTML;\n } else {\n // Для p и других текстовых элементов\n blockContent = element.innerHTML;\n }\n \n if (idx === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.innerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + idx);\n }\n });\n } else {\n // Если после очистки ничего не осталось, вставляем как обычный текст\n const plainText = clipboardData.getData('text/plain');\n if (plainText.trim()) {\n // document.execCommand('insertText', false, plainText);\n handleInput({ target: editableDiv.value });\n }\n }\n};\n\n\n// Обновленная функция для обработки вставки и создания блоков\nconst handleBlockCreation = (element, index) => {\n const tagName = element.nodeName.toLowerCase();\n \n let blockType = 'Textarea';\n let blockContent = '';\n \n if (tagName === 'img') {\n blockType = 'ImageUpload';\n blockContent = element.getAttribute('src');\n } else if (tagName.match(/h[1-6]/)) {\n blockType = tagName.toUpperCase(); // H2, H3, etc.\n blockContent = element.innerHTML;\n } else {\n blockContent = element.innerHTML;\n }\n \n if (index === 0) {\n // Первый блок обновляем текущий\n document.execCommand('insertHTML', false, element.outerHTML);\n handleInput({ target: editableDiv.value });\n } else {\n // Остальные добавляем как новые блоки\n emit('addBlock', blockType, blockContent, props.index + index);\n }\n};\n\nconst handleKeyDown = (event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n const selection = window.getSelection()\n const range = selection.getRangeAt(0)\n const newBlockContent = extractContentAfterCursor(range)\n \n const sanitizedContent = sanitizeHTML(editableDiv.value.innerHTML)\n currentContent.value = sanitizedContent\n \n emit('update:modelValue', sanitizedContent)\n emit('addBlock', 'Textarea', newBlockContent, props.index + 1)\n } else if (event.key === 'Backspace' && editableDiv.value.innerHTML.trim() === \"\") {\n event.preventDefault()\n emit('deleteBlock', props.prop, { setCaretToEnd: true })\n }\n}\n\nconst extractContentAfterCursor = (range) => {\n const container = range.startContainer\n const cursorOffset = range.startOffset\n\n if (container.nodeType === Node.TEXT_NODE) {\n const textAfterCursor = container.textContent.slice(cursorOffset)\n container.textContent = container.textContent.slice(0, cursorOffset)\n return textAfterCursor\n } else if (container.nodeType === Node.ELEMENT_NODE) {\n const tempDiv = document.createElement('div')\n const childNodes = Array.from(container.childNodes)\n let foundCursor = false\n \n childNodes.forEach((node, index) => {\n if (index === cursorOffset) foundCursor = true\n if (foundCursor) tempDiv.appendChild(node.cloneNode(true))\n })\n \n while (container.childNodes[cursorOffset]) {\n container.removeChild(container.childNodes[cursorOffset])\n }\n \n return tempDiv.innerHTML\n }\n return ''\n}\n\nconst handleSelectionChange = () => {\n if (document.activeElement === editableDiv.value) {\n const selection = window.getSelection()\n isTextSelected.value = selection.rangeCount > 0 && selection.toString().length > 0\n } else {\n isTextSelected.value = false\n }\n}\n\nconst focus = (options = {}) => {\n nextTick(() => {\n editableDiv.value.focus()\n \n const shouldSetCaretToEnd = options.setCaretToEnd || (props.prop && props.prop.setCaretToEnd)\n if (props.setFocus === true && !shouldSetCaretToEnd) {\n const range = document.createRange()\n range.setStart(editableDiv.value, 0)\n range.collapse(true)\n const selection = window.getSelection()\n selection.removeAllRanges()\n selection.addRange(range)\n } else {\n setCaretToEnd(editableDiv.value)\n }\n \n emit('updateBlock', props.prop, { setFocus: false, setCaretToEnd: false })\n })\n}\n\nconst sanitizeHTML = (html) => {\n return DOMPurify.sanitize(html, sanitizeConfig)\n}\n\nconst setCaretToEnd = (element) => {\n const range = document.createRange()\n const selection = window.getSelection()\n range.selectNodeContents(element)\n range.collapse(false)\n selection.removeAllRanges()\n selection.addRange(range)\n}\n\nconst applyFormat = (format) => {\n document.execCommand(format, false, null)\n handleInput({ target: editableDiv.value })\n}\n\nconst createLink = () => {\n const url = prompt('Enter the URL:')\n if (url) {\n document.execCommand('createLink', false, url)\n handleInput({ target: editableDiv.value })\n }\n}\n\nconst clearFormatting = () => {\n const selection = window.getSelection()\n if (selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const selectedContent = range.cloneContents()\n const div = document.createElement('div')\n div.appendChild(selectedContent)\n const plainText = div.innerText\n document.execCommand('insertText', false, plainText)\n handleInput({ target: editableDiv.value })\n }\n}\n\nonUpdated(() => {\n if (props.setFocus) {\n nextTick(() => focus())\n }\n})\n\nonUnmounted(() => {\n document.removeEventListener('selectionchange', handleSelectionChange)\n})\n</script>\n\n<style lang=\"scss\">\n.editable-div {\n width: 100%;\n min-height: 1rem;\n background-color: transparent;\n outline: none;\n white-space: pre-wrap;\n word-wrap: break-word;\n \n &:empty::before {\n content: attr(placeholder);\n color: #999;\n }\n \n &:focus {\n border: 0;\n }\n}\n\n.formatting-bar {\n display: flex;\n gap: 5px;\n margin-top: 5px;\n padding: 5px;\n background-color: #f5f5f5;\n border-radius: 4px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n \n button {\n padding: 4px 8px;\n background-color: white;\n border: 1px solid #ddd;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n min-width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n \n &:hover {\n background-color: #e0e0e0;\n }\n \n &:active {\n background-color: #d0d0d0;\n }\n }\n}\n</style>"],"names":["node"],"mappings":"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"}
@@ -50,7 +50,7 @@ const _sfc_main = {
50
50
  onFileChange: onComponentSave,
51
51
  type: "file",
52
52
  placeholder: "Enter embed code",
53
- class: "w-100 br-solid br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
53
+ class: "w-100 br-1px br-black-transp-10 pd-medium radius-small mn-b-thin"
54
54
  }, null, 8, ["field"])
55
55
  ]))
56
56
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Video.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Video.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 pd-medium bg-black t-white radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"audio/mp3\">\n Your browser does not support the audio tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"videoUrl\"\n @file-change=\"onComponentSave\"\n type=\"file\" \n :placeholder=\"'Enter embed code'\" \n class=\"\n w-100\n br-solid\n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Upload from '@martyrs/src/components/Upload/Upload.vue'\n\nconst videoUrl = ref(null);\nconst fileInput = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction updateBlock(updatedBlock) {\n const index = post.value.content.findIndex(block => block === updatedBlock);\n if (index !== -1) {\n post.value.content.splice(index, 1, updatedBlock);\n }\n}\n\n\nfunction onComponentSave(url) {\n videoUrl.value = url\n\n if (videoUrl.value ) {\n emit('input', videoUrl.value);\n emit('updateBlock', props.prop, { content: videoUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,WAAW,IAAI,IAAI;AACP,QAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAUb,aAAS,gBAAgB,KAAK;AAC5B,eAAS,QAAQ;AAEjB,UAAI,SAAS,OAAQ;AACnB,aAAK,SAAS,SAAS,KAAK;AAC5B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,SAAS,OAAO;AAAA,MAC7D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Video.vue.js","sources":["../../../../../../../src/modules/constructor/components/elements/Video.vue"],"sourcesContent":["<template>\n <div \n class=\"mn-b-thin w-100 pd-medium bg-black t-white radius-medium\"\n >\n \n <div v-if=\"prop.content\" class=\"flex-center flex\">\n <audio controls class=\"w-100 h-max-30r\">\n <source :src=\"prop.content\" type=\"audio/mp3\">\n Your browser does not support the audio tag.\n </audio>\n </div>\n\n <div\n v-else\n >\n <Upload \n v-model:field=\"videoUrl\"\n @file-change=\"onComponentSave\"\n type=\"file\" \n :placeholder=\"'Enter embed code'\" \n class=\"\n w-100\n \n br-1px\n br-black-transp-10\n pd-medium\n radius-small\n mn-b-thin\n \"\n />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Upload from '@martyrs/src/components/Upload/Upload.vue'\n\nconst videoUrl = ref(null);\nconst fileInput = ref(null);\n\nconst props = defineProps([\n 'label',\n 'value',\n 'prop'\n]);\n\nconst emit = defineEmits(['input', 'updateBlock']);\n\nfunction updateBlock(updatedBlock) {\n const index = post.value.content.findIndex(block => block === updatedBlock);\n if (index !== -1) {\n post.value.content.splice(index, 1, updatedBlock);\n }\n}\n\n\nfunction onComponentSave(url) {\n videoUrl.value = url\n\n if (videoUrl.value ) {\n emit('input', videoUrl.value);\n emit('updateBlock', props.prop, { content: videoUrl.value });\n } else {\n alert('Invalid embed code or source not allowed.');\n }\n}\n\n</script>\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuCA,UAAM,WAAW,IAAI,IAAI;AACP,QAAI,IAAI;AAE1B,UAAM,QAAQ;AAMd,UAAM,OAAO;AAUb,aAAS,gBAAgB,KAAK;AAC5B,eAAS,QAAQ;AAEjB,UAAI,SAAS,OAAQ;AACnB,aAAK,SAAS,SAAS,KAAK;AAC5B,aAAK,eAAe,MAAM,MAAM,EAAE,SAAS,SAAS,OAAO;AAAA,MAC7D,OAAO;AACL,cAAM,2CAA2C;AAAA,MACnD;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,7 +6,7 @@ import _sfc_main$6 from "../elements/Card.vue.js";
6
6
  import _sfc_main$3 from "../elements/Audio.vue.js";
7
7
  import _sfc_main$2 from "../elements/Video.vue.js";
8
8
  import _sfc_main$1 from "../../../../components/Draggable/Draggable.vue.js";
9
- import v4 from "../../../../../../node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js";
9
+ import v4 from "../../../../../node_modules/uuid/dist/esm-browser/v4.js";
10
10
  const _hoisted_1 = ["data-index"];
11
11
  const _hoisted_2 = ["onMouseover"];
12
12
  const _hoisted_3 = {
@@ -172,7 +172,7 @@ function createUniversalApp({
172
172
  }
173
173
  initialize();
174
174
  }
175
- async function renderApp({ url, cookies, languages, ssrContext }) {
175
+ async function renderApp({ url, cookies, headers, languages, ssrContext }) {
176
176
  const { app, router, store, i18n, meta, moduleManager: moduleManager2 } = await createApp$1();
177
177
  if (typeof window === "undefined") {
178
178
  const { setSSRStore } = await import("../store/core.store.js");
@@ -203,6 +203,7 @@ function createUniversalApp({
203
203
  const result = await appRenderer.render({
204
204
  url,
205
205
  cookies,
206
+ headers,
206
207
  createApp: () => ({ app, router, store, i18n, meta }),
207
208
  ssrContext
208
209
  });