@ozdao/martyrs 0.2.571 → 0.2.572

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 (818) 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/{main-BFvlam0J.js → main-BfEQkhXS.js} +1173 -1191
  5. package/dist/martyrs/dist/{main-BFvlam0J.js → main-BfEQkhXS.js} +94 -112
  6. package/dist/martyrs/dist/main-BfEQkhXS.js.map +1 -0
  7. package/dist/martyrs/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +3 -3
  8. package/dist/martyrs/dist/{web-CH5wzMHy.js.map → web-BqTV9va1.js.map} +1 -1
  9. 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
  10. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  11. 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
  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.map +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/web.js +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.map +1 -1
  15. 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
  16. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  17. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  18. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/dayjs.min.js +1 -1
  19. package/dist/martyrs/node_modules/dayjs/dayjs.min.js.map +1 -0
  20. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  21. package/dist/martyrs/node_modules/dayjs/plugin/weekOfYear.js.map +1 -0
  22. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  23. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  24. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
  25. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
  26. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
  27. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
  28. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
  29. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
  30. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  31. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  32. package/dist/martyrs/src/components/Block/Block.vue.js +2 -2
  33. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  34. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +1 -1
  35. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -1
  36. package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
  37. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +6 -6
  38. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  39. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +2 -2
  40. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/Chips/Chips.vue.js +2 -2
  42. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
  43. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  44. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +4 -4
  45. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
  46. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  47. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
  48. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +3 -3
  49. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  50. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  51. package/dist/martyrs/src/components/Feed/Feed.vue.js +4 -4
  52. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  53. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  54. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  55. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  56. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  57. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +1 -1
  58. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +3 -3
  60. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  61. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  62. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  63. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  64. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  65. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +2 -2
  66. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  67. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  68. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  69. package/dist/martyrs/src/components/Radio/Radio.vue.js +1 -1
  70. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  71. package/dist/martyrs/src/components/Select/Select.vue.js +2 -2
  72. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
  73. package/dist/martyrs/src/components/Table/Table.vue.js +3 -3
  74. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  75. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  76. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  77. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
  78. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -0
  79. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +4 -4
  80. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  81. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +4 -4
  82. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
  84. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js +4 -4
  85. package/dist/martyrs/src/modules/auth/views/components/blocks/ProfileCard.vue.js.map +1 -1
  86. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  87. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  88. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  89. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  90. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +8 -8
  91. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  92. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  93. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  95. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  97. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  99. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +3 -3
  100. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  102. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +3 -3
  104. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  105. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  106. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +7 -7
  108. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
  110. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  112. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +4 -4
  113. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  114. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +5 -5
  115. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  116. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
  117. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  118. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +2 -2
  119. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/community/components/blocks/Activity.vue.js +7 -7
  121. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  122. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +4 -4
  124. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +10 -10
  126. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  128. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  129. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  130. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +2 -2
  131. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +3 -3
  133. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  134. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  135. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js +1 -1
  136. package/dist/martyrs/src/modules/constructor/components/elements/Audio.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  138. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  140. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  141. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js +1 -1
  142. package/dist/martyrs/src/modules/constructor/components/elements/Video.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  144. package/dist/martyrs/src/modules/core/views/classes/core.app.js +2 -1
  145. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  146. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js +2 -2
  147. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSorting.vue.js.map +1 -1
  148. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +10 -10
  149. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  150. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
  151. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
  152. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  153. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  155. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js +1 -1
  156. package/dist/martyrs/src/modules/core/views/components/elements/ButtonDate.vue.js.map +1 -1
  157. package/dist/martyrs/src/modules/core/views/components/elements/PhotoStack.vue.js +3 -3
  158. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +25 -5
  159. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
  160. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +4 -4
  161. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  162. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +11 -11
  163. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  164. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +1 -1
  165. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +16 -16
  167. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
  168. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +7 -7
  169. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  170. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
  171. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
  172. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +24 -24
  173. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +3 -3
  175. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js.map +1 -1
  176. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +7 -7
  177. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  178. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +2 -2
  179. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  180. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
  181. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  183. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +2 -2
  184. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -1
  185. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +3 -3
  186. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -1
  187. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +2 -2
  188. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/core/views/store/core.store.js +29 -47
  190. package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
  191. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +21 -2
  192. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  193. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +5 -5
  194. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  195. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js +3 -3
  196. package/dist/martyrs/src/modules/events/components/blocks/CardEventShort.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  198. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +19 -19
  200. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +8 -8
  202. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  204. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
  206. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +5 -5
  208. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
  210. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  212. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +2 -2
  213. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  214. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
  215. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  216. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  217. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
  218. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  219. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  220. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +4 -4
  221. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  222. package/dist/martyrs/src/modules/icons/navigation/IconSort.vue.js +4 -4
  223. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +7 -7
  224. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  225. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  226. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  228. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  229. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  230. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +11 -11
  232. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  233. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
  234. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +5 -5
  236. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  238. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  240. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +2 -2
  242. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  244. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +2 -2
  246. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +3 -3
  248. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +6 -6
  250. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +4 -4
  252. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +3 -3
  254. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -1
  255. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +5 -5
  256. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +4 -4
  258. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +3 -3
  260. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +5 -5
  262. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +5 -5
  264. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  265. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +8 -8
  266. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +5 -5
  268. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +7 -7
  270. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +2 -2
  272. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +13 -13
  274. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +24 -24
  276. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  277. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +8 -8
  278. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +10 -13
  280. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +9 -9
  282. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +27 -27
  284. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +17 -17
  286. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +27 -27
  288. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  290. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +8 -8
  291. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
  292. package/dist/martyrs/src/modules/music/music.client.js +6 -6
  293. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  294. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  295. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  296. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  297. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  299. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  300. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +2 -2
  301. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +2 -2
  302. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
  303. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  304. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +5 -5
  305. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  306. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +9 -9
  307. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +5 -5
  309. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  310. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js +2 -2
  311. package/dist/martyrs/src/modules/orders/components/blocks/StatusHistory.vue.js.map +1 -1
  312. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  313. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  314. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +3 -3
  315. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  316. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  317. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
  318. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  319. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  320. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  321. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +17 -17
  322. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +2 -2
  324. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  325. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +4 -4
  326. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +2 -2
  328. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  329. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +3 -3
  330. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  331. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  332. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  333. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +3 -3
  334. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  335. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -3
  336. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +3 -3
  337. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  338. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
  339. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  340. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  341. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js +8 -8
  342. package/dist/martyrs/src/modules/organizations/components/blocks/Contacts.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
  344. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +3 -3
  345. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  346. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  347. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  348. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  349. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  350. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
  351. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  352. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  353. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  354. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +7 -7
  355. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  356. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  357. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
  358. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +4 -4
  360. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  361. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  362. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  363. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  364. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +3 -3
  365. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
  366. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +5 -5
  367. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  368. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  369. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  370. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  371. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +4 -4
  372. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +3 -3
  374. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +5 -5
  376. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  377. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +3 -3
  378. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  379. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +2 -2
  380. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  381. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +5 -5
  382. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js.map +1 -1
  383. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
  384. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  385. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +3 -3
  386. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  387. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +1 -1
  388. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
  389. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  390. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
  391. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  392. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +7 -7
  393. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  394. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +7 -7
  395. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  396. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +12 -12
  397. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  398. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +4 -4
  399. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  400. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +6 -6
  401. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  402. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  403. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
  404. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +9 -9
  405. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  406. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
  407. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  408. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +2 -2
  409. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  410. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +2 -2
  411. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  412. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +6 -6
  413. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  414. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js +1 -1
  415. package/dist/martyrs/src/modules/rents/views/components/blocks/CardRent.vue.js.map +1 -1
  416. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/DateLabel.vue.js +1 -1
  417. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +2 -2
  418. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  419. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +8 -8
  420. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  421. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +1 -1
  422. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
  423. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  424. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  425. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  426. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +6 -6
  427. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  428. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
  429. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
  430. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  431. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  432. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
  433. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  434. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  435. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js.map +1 -1
  436. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +3 -3
  437. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
  438. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +6 -6
  439. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  440. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  441. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  442. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +3 -3
  443. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  444. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +5 -5
  445. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
  446. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +5 -5
  447. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +1 -1
  448. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +5 -5
  449. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +1 -1
  450. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +2 -2
  451. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +1 -1
  452. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +4 -4
  453. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +1 -1
  454. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +12 -12
  455. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +1 -1
  456. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +4 -4
  457. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
  458. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +24 -24
  459. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  460. package/dist/martyrs.css +1 -1
  461. package/dist/martyrs.es.js +1 -1
  462. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  463. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  464. package/dist/style.css +194 -202
  465. package/dist/{web-CH5wzMHy.js → web-BqTV9va1.js} +1 -1
  466. package/package.json +6 -8
  467. package/src/builder/modes/ssr.prod.js +1 -0
  468. package/src/builder/modes/ssr.rspack.dev.js +13 -6
  469. package/src/builder/rspack/rspack.config.base.js +7 -0
  470. package/src/builder/rspack/rspack.config.ssr.client.js +19 -44
  471. package/src/builder/templates/page.js +21 -0
  472. package/src/components/Block/Block.vue +1 -1
  473. package/src/components/BottomSheet/BottomSheet.vue +1 -1
  474. package/src/components/Calendar/Calendar.vue +5 -5
  475. package/src/components/Checkbox/Checkbox.vue +2 -2
  476. package/src/components/Chips/Chips.vue +2 -2
  477. package/src/components/Completion/Completion.vue +2 -2
  478. package/src/components/Countdown/Countdown.vue +5 -5
  479. package/src/components/DatePicker/DatePicker.vue +4 -4
  480. package/src/components/EditImages/EditImages.vue +1 -1
  481. package/src/components/Feed/Feed.old.vue +1 -1
  482. package/src/components/Feed/Feed.vue +1 -1
  483. package/src/components/FieldBig/FieldBig.vue +2 -2
  484. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  485. package/src/components/FieldTags/BlockTags.vue +1 -1
  486. package/src/components/Loader/Loader.vue +1 -1
  487. package/src/components/Menu/MenuItem.vue +2 -2
  488. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  489. package/src/components/Radio/Radio.vue +1 -1
  490. package/src/components/Select/Select.vue +1 -1
  491. package/src/components/Table/Table.vue +2 -2
  492. package/src/components/Text/Text.vue +1 -1
  493. package/src/components/UploadImage/UploadImage.vue +2 -2
  494. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +3 -3
  495. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  496. package/src/configurator/components/pages/Styles.vue +2 -2
  497. package/src/jit/.claude/settings.local.json +10 -0
  498. package/src/jit/CLAUDE.md +387 -0
  499. package/src/jit/core.js +274 -0
  500. package/src/jit/extractor.js +140 -0
  501. package/src/jit/index.js +19 -0
  502. package/src/jit/loader.js +46 -0
  503. package/src/jit/plugin.js +209 -0
  504. package/src/jit/rules.js +474 -0
  505. package/src/jit/variants.js +128 -0
  506. package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
  507. package/src/modules/auth/views/components/blocks/ProfileCard.vue +4 -4
  508. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  509. package/src/modules/auth/views/components/pages/EnterPassword.vue +2 -2
  510. package/src/modules/auth/views/components/pages/Profile.vue +5 -5
  511. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +1 -1
  512. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +2 -2
  513. package/src/modules/auth/views/components/pages/ResetPassword.vue +1 -1
  514. package/src/modules/auth/views/components/pages/SignIn.vue +3 -3
  515. package/src/modules/auth/views/components/pages/SignUp.vue +1 -1
  516. package/src/modules/auth/views/components/pages/UserDashboard.vue +3 -3
  517. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  518. package/src/modules/auth/views/components/sections/ProfileCompletion.vue +2 -2
  519. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +7 -7
  520. package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
  521. package/src/modules/backoffice/components/admin/Backcalls.vue +1 -1
  522. package/src/modules/backoffice/components/admin/FastOrders.vue +1 -1
  523. package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -2
  524. package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
  525. package/src/modules/backoffice/components/admin/Users.vue +2 -2
  526. package/src/modules/backoffice/components/pages/Dashboard.vue +4 -4
  527. package/src/modules/backoffice/components/partials/Sidebar.vue +5 -5
  528. package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
  529. package/src/modules/chats/components/sections/ChatWindow.vue +2 -2
  530. package/src/modules/community/components/blocks/Activity.vue +7 -7
  531. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  532. package/src/modules/community/components/blocks/FooterBlogpost.vue +4 -4
  533. package/src/modules/community/components/layouts/Community.vue +10 -10
  534. package/src/modules/community/components/pages/CreateBlogPost.vue +1 -1
  535. package/src/modules/community/components/pages/Posts.vue +2 -2
  536. package/src/modules/community/components/sections/Comment.vue +2 -2
  537. package/src/modules/constructor/components/elements/Audio.vue +1 -1
  538. package/src/modules/constructor/components/elements/Caption.vue +1 -1
  539. package/src/modules/constructor/components/elements/Embed.vue +1 -1
  540. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  541. package/src/modules/constructor/components/elements/Video.vue +1 -1
  542. package/src/modules/core/views/classes/core.app.js +2 -1
  543. package/src/modules/core/views/components/blocks/BlockSorting.vue +2 -2
  544. package/src/modules/core/views/components/blocks/CardFooter.vue +4 -4
  545. package/src/modules/core/views/components/blocks/CardHeader.vue +7 -7
  546. package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
  547. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  548. package/src/modules/core/views/components/elements/ButtonDate.vue +1 -1
  549. package/src/modules/core/views/components/elements/PhotoStack.vue +3 -3
  550. package/src/modules/core/views/components/layouts/App.vue +28 -4
  551. package/src/modules/core/views/components/layouts/Client.vue +4 -4
  552. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +15 -15
  553. package/src/modules/core/views/components/partials/CitySelection.vue +1 -1
  554. package/src/modules/core/views/components/partials/Footer.centered.vue +17 -17
  555. package/src/modules/core/views/components/partials/Footer.vue +18 -18
  556. package/src/modules/core/views/components/partials/Header.vue +10 -11
  557. package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
  558. package/src/modules/core/views/components/partials/Navigation.vue +20 -19
  559. package/src/modules/core/views/components/partials/NavigationBar.vue +3 -3
  560. package/src/modules/core/views/components/partials/Sidebar.vue +6 -6
  561. package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
  562. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +1 -1
  563. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +2 -2
  564. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +2 -2
  565. package/src/modules/core/views/components/sections/filters/FilterRange.vue +2 -2
  566. package/src/modules/core/views/store/core.store.js +36 -60
  567. package/src/modules/core/views/utils/vue-app-renderer.js +31 -1
  568. package/src/modules/events/components/blocks/CardEvent.vue +6 -6
  569. package/src/modules/events/components/blocks/CardEventShort.vue +3 -3
  570. package/src/modules/events/components/pages/EditEvent.vue +1 -1
  571. package/src/modules/events/components/pages/EditEventTickets.vue +18 -18
  572. package/src/modules/events/components/pages/Event.vue +5 -5
  573. package/src/modules/events/components/pages/Events.vue +2 -2
  574. package/src/modules/events/components/pages/EventsBackoffice.vue +2 -2
  575. package/src/modules/events/components/sections/EditTickets.vue +5 -5
  576. package/src/modules/events/components/sections/EventsHot.vue +2 -2
  577. package/src/modules/events/components/sections/List.vue +1 -1
  578. package/src/modules/events/components/sections/SelectDate.vue +1 -1
  579. package/src/modules/gallery/components/pages/Gallery.vue +1 -1
  580. package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
  581. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +14 -14
  582. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +13 -13
  583. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +2 -2
  584. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +1 -1
  585. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +1 -1
  586. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +2 -2
  587. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +6 -6
  588. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +18 -18
  589. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +7 -7
  590. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +9 -9
  591. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +4 -4
  592. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +1 -1
  593. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
  594. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +6 -6
  595. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +2 -2
  596. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +15 -15
  597. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +41 -41
  598. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +8 -8
  599. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +6 -6
  600. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +9 -9
  601. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +14 -14
  602. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +44 -44
  603. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +8 -8
  604. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +3 -3
  605. package/src/modules/governance/reactcode-2/App.tsx +28 -0
  606. package/src/modules/governance/reactcode-2/README.md +20 -0
  607. package/src/modules/governance/reactcode-2/components/Charts.tsx +58 -0
  608. package/src/modules/governance/reactcode-2/components/Layout.tsx +457 -0
  609. package/src/modules/governance/reactcode-2/components/TaskPage.tsx +325 -0
  610. package/src/modules/governance/reactcode-2/components/VoteBadge.tsx +27 -0
  611. package/src/modules/governance/reactcode-2/components/VotingsFeedPage.tsx +328 -0
  612. package/src/modules/governance/reactcode-2/constants.ts +154 -0
  613. package/src/modules/governance/reactcode-2/index.html +70 -0
  614. package/src/modules/governance/reactcode-2/index.tsx +15 -0
  615. package/src/modules/governance/reactcode-2/metadata.json +5 -0
  616. package/src/modules/governance/reactcode-2/package.json +23 -0
  617. package/src/modules/governance/reactcode-2/pnpm-lock.yaml +1410 -0
  618. package/src/modules/governance/reactcode-2/tsconfig.json +29 -0
  619. package/src/modules/governance/reactcode-2/types.ts +48 -0
  620. package/src/modules/governance/reactcode-2/vite.config.ts +23 -0
  621. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +10 -10
  622. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +15 -15
  623. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +9 -9
  624. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +11 -11
  625. package/src/modules/governance/views/components/layouts/Governance.vue +1 -1
  626. package/src/modules/governance/views/components/pages/Governance.vue +3 -3
  627. package/src/modules/governance/views/components/pages/Initiative.vue +112 -112
  628. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +31 -31
  629. package/src/modules/governance/views/components/pages/Initiatives.vue +20 -22
  630. package/src/modules/governance/views/components/pages/Milestone.vue +25 -25
  631. package/src/modules/governance/views/components/pages/Roadmap.vue +47 -47
  632. package/src/modules/governance/views/components/pages/Task.vue +106 -106
  633. package/src/modules/governance/views/components/pages/Tasks.vue +16 -16
  634. package/src/modules/governance/views/components/pages/Voting.vue +23 -23
  635. package/src/modules/governance/views/components/pages/Votings.vue +7 -7
  636. package/src/modules/governance/views/components/partials/EmptyState.vue +3 -3
  637. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +11 -11
  638. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +4 -4
  639. package/src/modules/governance/views/components/partials/VoteForm.vue +14 -14
  640. package/src/modules/governance/views/components/partials/VotingResults.vue +22 -22
  641. package/src/modules/icons/components/IconSearchPopup.vue +3 -3
  642. package/src/modules/icons/entities/IconCash.vue +23 -0
  643. package/src/modules/icons/navigation/IconSort.vue +4 -4
  644. package/src/modules/icons/pages/IconsPage.vue +7 -7
  645. package/src/modules/inventory/components/forms/AdjustmentForm.vue +3 -3
  646. package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
  647. package/src/modules/inventory/components/forms/StockAlertsForm.vue +1 -1
  648. package/src/modules/inventory/components/pages/Inventory.vue +10 -10
  649. package/src/modules/inventory/components/pages/InventoryEdit.vue +6 -6
  650. package/src/modules/landing/components/blocks/MapBlock.vue +2 -2
  651. package/src/modules/landing/components/sections/Examples.vue +1 -1
  652. package/src/modules/landing/components/sections/InstagramSection.vue +1 -1
  653. package/src/modules/landing/components/sections/SectionEarn.vue +4 -4
  654. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  655. package/src/modules/landing/components/sections/SectionFocus.vue +2 -2
  656. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  657. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  658. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  659. package/src/modules/landing/components/sections/SectionJoinUs.vue +2 -2
  660. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  661. package/src/modules/landing/components/sections/SectionOverview.vue +2 -2
  662. package/src/modules/landing/components/sections/SectionRoadmap.vue +2 -2
  663. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +8 -8
  664. package/src/modules/marketplace/views/components/pages/Marketplace.vue +5 -5
  665. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
  666. package/src/modules/music/components/SidebarMusic.vue +11 -11
  667. package/src/modules/music/components/blocks/ActionButtons.vue +2 -2
  668. package/src/modules/music/components/cards/AlbumCard.vue +4 -4
  669. package/src/modules/music/components/cards/ArtistCard.vue +3 -8
  670. package/src/modules/music/components/cards/ArtistCardSmall.vue +2 -2
  671. package/src/modules/music/components/cards/PlaylistCard.vue +4 -4
  672. package/src/modules/music/components/cards/TrackListCard.vue +5 -5
  673. package/src/modules/music/components/forms/AlbumForm.vue +8 -8
  674. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  675. package/src/modules/music/components/forms/PlaylistForm.vue +7 -7
  676. package/src/modules/music/components/forms/SearchForm.vue +1 -1
  677. package/src/modules/music/components/forms/TrackForm.vue +13 -13
  678. package/src/modules/music/components/pages/Album.vue +22 -22
  679. package/src/modules/music/components/pages/Artist.vue +7 -7
  680. package/src/modules/music/components/pages/MusicHome.vue +13 -18
  681. package/src/modules/music/components/pages/MusicLibrary.vue +9 -9
  682. package/src/modules/music/components/pages/Playlist.vue +25 -25
  683. package/src/modules/music/components/pages/SearchResults.vue +15 -15
  684. package/src/modules/music/components/pages/Track.vue +25 -25
  685. package/src/modules/music/components/player/FullscreenPlayer.vue +5 -5
  686. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  687. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  688. package/src/modules/orders/components/blocks/CardApplication.vue +1 -1
  689. package/src/modules/orders/components/blocks/CardCustomer.vue +1 -1
  690. package/src/modules/orders/components/blocks/CardOrder.vue +9 -9
  691. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +5 -5
  692. package/src/modules/orders/components/blocks/CardOrderItem.vue +9 -9
  693. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  694. package/src/modules/orders/components/blocks/CardOrderVar1.vue +4 -4
  695. package/src/modules/orders/components/blocks/StatusHistory.vue +3 -3
  696. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
  697. package/src/modules/orders/components/elements/PriceTotal.vue +3 -3
  698. package/src/modules/orders/components/forms/FormApplicationDetails.vue +2 -2
  699. package/src/modules/orders/components/forms/FormCustomerDetails.vue +3 -3
  700. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  701. package/src/modules/orders/components/pages/OrderBackoffice.vue +15 -15
  702. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  703. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -4
  704. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  705. package/src/modules/orders/components/partials/ShopCart.vue +2 -2
  706. package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
  707. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  708. package/src/modules/orders/components/sections/CustomerDetails.vue +2 -2
  709. package/src/modules/orders/components/sections/Succes.vue +4 -4
  710. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  711. package/src/modules/organizations/components/blocks/CardOrganization.vue +4 -4
  712. package/src/modules/organizations/components/blocks/Contacts.vue +8 -8
  713. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  714. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
  715. package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
  716. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  717. package/src/modules/organizations/components/pages/Department.vue +2 -2
  718. package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
  719. package/src/modules/organizations/components/pages/Members.vue +1 -1
  720. package/src/modules/organizations/components/pages/Organization.new.vue +8 -8
  721. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  722. package/src/modules/organizations/components/pages/OrganizationDocuments.vue +2 -2
  723. package/src/modules/organizations/components/pages/Organizations.vue +3 -3
  724. package/src/modules/organizations/components/sections/Documents.vue +2 -2
  725. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  726. package/src/modules/organizations/components/sections/Unit.vue +1 -1
  727. package/src/modules/pages/views/components/blocks/CardPage.vue +2 -2
  728. package/src/modules/pages/views/components/pages/Page.vue +5 -5
  729. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  730. package/src/modules/products/components/blocks/CardPosition.vue +4 -4
  731. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  732. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -3
  733. package/src/modules/products/components/blocks/ProductImages.vue +2 -2
  734. package/src/modules/products/components/blocks/ProductVariants.vue +2 -2
  735. package/src/modules/products/components/elements/Image360.vue +2 -2
  736. package/src/modules/products/components/elements/Price.vue +2 -2
  737. package/src/modules/products/components/elements/QuantitySelector.vue +3 -3
  738. package/src/modules/products/components/elements/THC.vue +1 -1
  739. package/src/modules/products/components/forms/ReorderSettingsForm.vue +1 -1
  740. package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
  741. package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
  742. package/src/modules/products/components/pages/Categories.vue +1 -1
  743. package/src/modules/products/components/pages/CategoryEdit.vue +2 -2
  744. package/src/modules/products/components/pages/Product.vue +6 -6
  745. package/src/modules/products/components/pages/ProductEdit.vue +6 -6
  746. package/src/modules/products/components/pages/Products.vue +11 -11
  747. package/src/modules/products/components/sections/EditAttributes.vue +4 -4
  748. package/src/modules/products/components/sections/EditCategories.vue +1 -1
  749. package/src/modules/products/components/sections/EditDiscounts.vue +6 -6
  750. package/src/modules/products/components/sections/EditRecommended.vue +1 -1
  751. package/src/modules/products/components/sections/EditVariants.vue +8 -8
  752. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  753. package/src/modules/products/components/sections/ProductConfigurator.vue +2 -2
  754. package/src/modules/products/components/sections/ProductInformationSection.vue +10 -10
  755. package/src/modules/products/components/sections/ProductsRecommended.vue +2 -2
  756. package/src/modules/products/components/sections/SectionProduct.vue +7 -7
  757. package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +3 -3
  758. package/src/modules/rents/views/components/blocks/CardRent.vue +1 -1
  759. package/src/modules/rents/views/components/pages/Gant/DateLabel.vue +1 -1
  760. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +2 -2
  761. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +8 -8
  762. package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +1 -1
  763. package/src/modules/rents/views/components/pages/Rents.vue +1 -1
  764. package/src/modules/rents/views/components/pages/RentsEdit.vue +6 -6
  765. package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
  766. package/src/modules/reports/components/sections/FormReport.vue +1 -1
  767. package/src/modules/spots/components/blocks/CardSpot.vue +4 -4
  768. package/src/modules/spots/components/blocks/SpotMemberModify.vue +1 -1
  769. package/src/modules/spots/components/layouts/Spots.vue +2 -2
  770. package/src/modules/spots/components/pages/Spot.vue +5 -5
  771. package/src/modules/spots/components/pages/SpotEdit.vue +2 -2
  772. package/src/modules/spots/components/pages/Spots.vue +3 -3
  773. package/src/modules/spots/components/sections/MapSection.vue +1 -1
  774. package/src/modules/spots/components/sections/WorktimeEdit.vue +4 -4
  775. package/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue +5 -5
  776. package/src/modules/wallet/views/components/blocks/CardDeposit.vue +5 -5
  777. package/src/modules/wallet/views/components/blocks/CashDeposit.vue +2 -2
  778. package/src/modules/wallet/views/components/blocks/CryptoDeposit.vue +4 -4
  779. package/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue +11 -11
  780. package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +4 -4
  781. package/src/modules/wallet/views/components/pages/Wallet.vue +22 -22
  782. package/src/styles/config.scss +193 -507
  783. package/src/styles/layout.scss +81 -1
  784. package/src/styles/reset.scss +2 -0
  785. package/src/styles/theme.scss +1 -8
  786. package/dist/martyrs/dist/main-BFvlam0J.js.map +0 -1
  787. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  788. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.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/Tooltip/Tooltip.vue.js.map +0 -1
  793. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  794. 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
  795. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  796. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
  797. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/weekOfYear.js.map +0 -1
  798. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
  799. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  800. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
  801. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  802. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
  803. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  804. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -20
  805. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  806. package/src/modules/LAYOUT.MD +0 -767
  807. package/src/modules/STYLES.MD +0 -298
  808. package/src/modules/inventory/inventory.router.js +0 -72
  809. package/src/modules/products/products.router.js +0 -299
  810. package/src/styles/base/all.scss +0 -233
  811. package/src/styles/base/backgrounds.scss +0 -70
  812. package/src/styles/base/borders.scss +0 -407
  813. package/src/styles/base/scrolling.scss +0 -137
  814. package/src/styles/base/shadow_transitions_hover_refactor.scss +0 -158
  815. package/src/styles/base/transitions.scss +0 -109
  816. package/src/styles/responsive.scss +0 -152
  817. package/src/styles/typography.scss +0 -161
  818. /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":"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":"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"}
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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"core.app.js","sources":["../../../../../../../src/modules/core/views/classes/core.app.js"],"sourcesContent":["// client-factory.js - фабрика для создания клиентского приложения\nimport { nextTick, createApp as createVueApp, createSSRApp as createVueSSRApp } from 'vue';\nimport { createHead } from '@unhead/vue';\n\nexport function createUniversalApp({\n getConfig,\n getRouter,\n getLocales,\n getStore,\n getHooks = {}\n}) {\n // Lazy imports to avoid circular dependencies\n const getLayoutApp = () => import('../components/layouts/App.vue').then(m => m.default);\n const getModuleRegistry = () => import('./module.manager.js').then(m => m.moduleManager);\n const getWebsockets = () => import('./ws.manager.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // [LOADING 14] Starting initializeApp\n performance.mark('loading-14-start');\n console.log('[LOADING 14] Starting application initialization...');\n\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n\n // [LOADING 15] Loading core dependencies\n performance.mark('loading-15-start');\n console.log('[LOADING 15] Loading core dependencies via Promise.all...');\n\n const [layoutApp, moduleManager, wsManager, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n\n performance.mark('loading-15-end');\n performance.measure('loading-15', 'loading-15-start', 'loading-15-end');\n const measure15 = performance.getEntriesByName('loading-15')[0];\n console.log(`[LOADING 15] Core dependencies loaded in ${measure15?.duration?.toFixed(2)}ms`);\n \n // Core module is always loaded - no need to register in moduleManager\n\n // [LOADING 16] Registering modules in registry\n performance.mark('loading-16-start');\n console.log('[LOADING 16] Registering modules in registry...');\n\n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleManager.register(name, {\n loader: module.loader,\n routes: module.routes || [],\n priority: module.priority || 'normal',\n critical: module.critical || false,\n dependencies: module.dependencies || [],\n preload: module.preload || false\n });\n }\n });\n\n performance.mark('loading-16-end');\n performance.measure('loading-16', 'loading-16-start', 'loading-16-end');\n const measure16 = performance.getEntriesByName('loading-16')[0];\n console.log(`[LOADING 16] Modules registered in ${measure16?.duration?.toFixed(2)}ms`);\n \n // Основная функция создания приложения\n function createApp() {\n const store = getStore();\n const app = process.env.MOBILE_APP \n ? createVueApp(layoutApp, config) \n : createVueSSRApp(layoutApp, config);\n \n const meta = createHead();\n const i18n = getLocales();\n \n const context = {\n app,\n store,\n router: null,\n config,\n };\n \n // Создаем роутер с контекстом\n const router = getRouter(context);\n context.router = router;\n\n // Регистрируем заглушки для роутов, которые требуют другие модули\n // Когда Organizations/Backoffice/Auth загрузятся, они заменят эти заглушки\n const stubComponent = { template: '<router-view />' };\n\n router.addRoute('Home', {\n path: 'backoffice',\n name: 'Backoffice Root',\n children: [],\n component: stubComponent,\n meta: {\n sidebar_width_hidden: 'w-0',\n }\n });\n\n router.addRoute('Home', {\n path: 'organizations/:_id',\n name: 'OrganizationRoot',\n children: [],\n component: stubComponent\n });\n\n router.addRoute('Home', {\n path: 'users/:_id',\n name: 'User Profile Root',\n children: [],\n component: stubComponent\n });\n \n // No critical modules - everything loads on demand\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleManager.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleManager.initialized.has(m.name));\n \n if (modulesToLoad.length > 0) {\n // Логируем если это редирект с 404 (для отладки)\n if (to.redirectedFrom) {\n console.log('[Router] Loading modules for redirected path:', target.path, 'modules:', modulesToLoad.map(m => m.name));\n }\n\n // [LOADING 18] Loading modules for route\n performance.mark('loading-18-start');\n console.log(`[LOADING 18] Loading ${modulesToLoad.length} modules for route...`);\n\n // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\n\n performance.mark('loading-18-end');\n performance.measure('loading-18', 'loading-18-start', 'loading-18-end');\n const measure18 = performance.getEntriesByName('loading-18')[0];\n console.log(`[LOADING 18] Modules loaded for route in ${measure18?.duration?.toFixed(2)}ms`);\n\n // После загрузки модулей и регистрации их роутов,\n // возвращаем объект с оригинальным путем и replace: true\n // Это заставит роутер заново резолвить маршрут с новыми роутами\n return { path: target.fullPath, replace: true };\n }\n });\n }\n\n router.beforeResolve(async (to, from) => {\n store.core.state.loading = false;\n })\n \n // Error handler для lazy loaded chunks\n if (typeof window !== 'undefined') {\n window.addEventListener('error', (e) => {\n if (e.message && e.message.includes('Loading chunk')) {\n console.error('Chunk loading failed:', e);\n // Можно показать уведомление пользователю\n // или попытаться перезагрузить\n }\n });\n }\n \n // Инициализация в правильном порядке\n const initialize = async () => {\n // Хук ДО инициализации\n if (hooks.beforeInitialize) {\n await hooks.beforeInitialize(context);\n }\n // [LOADING 17] Initializing Core module\n performance.mark('loading-17-start');\n console.log('[LOADING 17] Initializing Core module...');\n\n // Core module must ALWAYS be initialized\n const ModuleCore = await import('../../core.client.js');\n await ModuleCore.default.initialize(app, store, router, config);\n\n performance.mark('loading-17-end');\n performance.measure('loading-17', 'loading-17-start', 'loading-17-end');\n const measure17 = performance.getEntriesByName('loading-17')[0];\n console.log(`[LOADING 17] Core module initialized in ${measure17?.duration?.toFixed(2)}ms`);\n\n // 2. WebSocket (отложим после гидратации, только если включен)\n const useWebsocket = config.globals?.websocket !== false; // по умолчанию false\n\n if (useWebsocket && typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n wsManager.initialize({\n wsUrl: process.env.WSS_URL || undefined,\n maxReconnectAttempts: 5,\n reconnectDelay: 3000,\n pingInterval: 30000,\n });\n });\n }\n\n // 3. Предзагрузка важных модулей в фоне\n if (typeof window !== 'undefined') {\n requestIdleCallback(() => {\n moduleManager.preloadModules(context);\n });\n }\n \n // 5. Подключаем Vue плагины\n app.use(router).use(i18n).use(meta);\n \n // 6. Монтируем приложение\n if (process.env.MOBILE_APP) {\n app.mount('#app');\n }\n\n // Хук ПОСЛЕ инициализации\n if (hooks.afterInitialize) {\n await hooks.afterInitialize(context);\n }\n\n // [LOADING 19] Application initialization completed\n performance.mark('loading-19-end');\n performance.measure('loading-19', 'loading-14-start', 'loading-19-end');\n const measure19 = performance.getEntriesByName('loading-19')[0];\n console.log(`[LOADING 19] Application initialization completed in ${measure19?.duration?.toFixed(2)}ms`);\n\n return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleManager,\n config,\n };\n };\n \n // Возвращаем промис для SSR\n if (!process.env.MOBILE_APP) {\n return initialize();\n }\n \n // Для SPA инициализируем сразу\n initialize();\n }\n \n // FOR SSR / SERVER ENTRY\n async function renderApp({ url, cookies, languages, ssrContext }) {\n const { app, router, store, i18n, meta, moduleManager } = await createApp();\n \n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('../store/core.store.js');\n await setSSRStore(store);\n }\n \n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n\n // [LOADING 20] SSR renderApp starting and loading modules\n performance.mark('loading-20-start');\n console.log('[LOADING 20] SSR renderApp starting and loading modules...');\n\n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleManager.getModulesForRoute(url);\n\n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n\n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\n\n performance.mark('loading-20-end');\n performance.measure('loading-20', 'loading-20-start', 'loading-20-end');\n const measure20 = performance.getEntriesByName('loading-20')[0];\n console.log(`[LOADING 20] SSR modules loaded in ${measure20?.duration?.toFixed(2)}ms`);\n \n // После загрузки модулей и регистрации роутов, выполняем навигацию\n await router.push(url);\n await router.isReady();\n \n const result = await appRenderer.render({\n url,\n cookies,\n createApp: () => ({ app, router, store, i18n, meta }),\n ssrContext\n });\n \n if (ssrContext?.modules) {\n result.usedModules = Array.from(ssrContext.modules);\n }\n \n // Передаем только модули текущего роута (без критических)\n result.loadedModules = currentRouteModules;\n\n // [LOADING 21] SSR render completed\n performance.mark('loading-21-end');\n performance.measure('loading-21', 'loading-20-start', 'loading-21-end');\n const measure21 = performance.getEntriesByName('loading-21')[0];\n console.log(`[LOADING 21] SSR render completed in ${measure21?.duration?.toFixed(2)}ms`);\n\n // Clean up for next SSR request\n if (typeof window === 'undefined') {\n moduleManager.initialized.clear();\n moduleManager.modules.clear();\n moduleManager.loadingPromises.clear();\n\n const { clearSSRStore } = await import('../store/core.store.js');\n await clearSSRStore();\n }\n\n return result;\n }\n \n // FOR SPA\n if (typeof window !== 'undefined' && process.env.MOBILE_APP) {\n createApp();\n }\n \n // FOR SSR / CLIENT ENTRY\n if (typeof window !== 'undefined' && !process.env.MOBILE_APP) {\n // Используем renderAndMountApp для правильной гидратации со state\n appRenderer.renderAndMountApp({ createApp, hooks }).then(({ app, router, store, moduleManager }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleManager });\n }\n \n // Модули уже загружены в renderAndMountApp, просто ставим маркер\n if (typeof window !== 'undefined') {\n window.performance.mark('client-ready');\n }\n }).catch(error => {\n console.error('Hydration failed:', error);\n });\n }\n \n return { createApp, renderApp };\n }\n \n // Возвращаем промис, который резолвится с функциями\n return initializeApp();\n}"],"names":["createApp","createVueApp","createVueSSRApp","moduleManager"],"mappings":"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"}
1
+ {"version":3,"file":"core.app.js","sources":["../../../../../../../src/modules/core/views/classes/core.app.js"],"sourcesContent":["// client-factory.js - фабрика для создания клиентского приложения\nimport { nextTick, createApp as createVueApp, createSSRApp as createVueSSRApp } from 'vue';\nimport { createHead } from '@unhead/vue';\n\nexport function createUniversalApp({\n getConfig,\n getRouter,\n getLocales,\n getStore,\n getHooks = {}\n}) {\n // Lazy imports to avoid circular dependencies\n const getLayoutApp = () => import('../components/layouts/App.vue').then(m => m.default);\n const getModuleRegistry = () => import('./module.manager.js').then(m => m.moduleManager);\n const getWebsockets = () => import('./ws.manager.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // [LOADING 14] Starting initializeApp\n performance.mark('loading-14-start');\n console.log('[LOADING 14] Starting application initialization...');\n\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n\n // [LOADING 15] Loading core dependencies\n performance.mark('loading-15-start');\n console.log('[LOADING 15] Loading core dependencies via Promise.all...');\n\n const [layoutApp, moduleManager, wsManager, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n\n performance.mark('loading-15-end');\n performance.measure('loading-15', 'loading-15-start', 'loading-15-end');\n const measure15 = performance.getEntriesByName('loading-15')[0];\n console.log(`[LOADING 15] Core dependencies loaded in ${measure15?.duration?.toFixed(2)}ms`);\n \n // Core module is always loaded - no need to register in moduleManager\n\n // [LOADING 16] Registering modules in registry\n performance.mark('loading-16-start');\n console.log('[LOADING 16] Registering modules in registry...');\n\n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleManager.register(name, {\n loader: module.loader,\n routes: module.routes || [],\n priority: module.priority || 'normal',\n critical: module.critical || false,\n dependencies: module.dependencies || [],\n preload: module.preload || false\n });\n }\n });\n\n performance.mark('loading-16-end');\n performance.measure('loading-16', 'loading-16-start', 'loading-16-end');\n const measure16 = performance.getEntriesByName('loading-16')[0];\n console.log(`[LOADING 16] Modules registered in ${measure16?.duration?.toFixed(2)}ms`);\n \n // Основная функция создания приложения\n function createApp() {\n const store = getStore();\n const app = process.env.MOBILE_APP \n ? createVueApp(layoutApp, config) \n : createVueSSRApp(layoutApp, config);\n \n const meta = createHead();\n const i18n = getLocales();\n \n const context = {\n app,\n store,\n router: null,\n config,\n };\n \n // Создаем роутер с контекстом\n const router = getRouter(context);\n context.router = router;\n\n // Регистрируем заглушки для роутов, которые требуют другие модули\n // Когда Organizations/Backoffice/Auth загрузятся, они заменят эти заглушки\n const stubComponent = { template: '<router-view />' };\n\n router.addRoute('Home', {\n path: 'backoffice',\n name: 'Backoffice Root',\n children: [],\n component: stubComponent,\n meta: {\n sidebar_width_hidden: 'w-0',\n }\n });\n\n router.addRoute('Home', {\n path: 'organizations/:_id',\n name: 'OrganizationRoot',\n children: [],\n component: stubComponent\n });\n\n router.addRoute('Home', {\n path: 'users/:_id',\n name: 'User Profile Root',\n children: [],\n component: stubComponent\n });\n \n // No critical modules - everything loads on demand\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleManager.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleManager.initialized.has(m.name));\n \n if (modulesToLoad.length > 0) {\n // Логируем если это редирект с 404 (для отладки)\n if (to.redirectedFrom) {\n console.log('[Router] Loading modules for redirected path:', target.path, 'modules:', modulesToLoad.map(m => m.name));\n }\n\n // [LOADING 18] Loading modules for route\n performance.mark('loading-18-start');\n console.log(`[LOADING 18] Loading ${modulesToLoad.length} modules for route...`);\n\n // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\n\n performance.mark('loading-18-end');\n performance.measure('loading-18', 'loading-18-start', 'loading-18-end');\n const measure18 = performance.getEntriesByName('loading-18')[0];\n console.log(`[LOADING 18] Modules loaded for route in ${measure18?.duration?.toFixed(2)}ms`);\n\n // После загрузки модулей и регистрации их роутов,\n // возвращаем объект с оригинальным путем и replace: true\n // Это заставит роутер заново резолвить маршрут с новыми роутами\n return { path: target.fullPath, replace: true };\n }\n });\n }\n\n router.beforeResolve(async (to, from) => {\n store.core.state.loading = false;\n })\n \n // Error handler для lazy loaded chunks\n if (typeof window !== 'undefined') {\n window.addEventListener('error', (e) => {\n if (e.message && e.message.includes('Loading chunk')) {\n console.error('Chunk loading failed:', e);\n // Можно показать уведомление пользователю\n // или попытаться перезагрузить\n }\n });\n }\n \n // Инициализация в правильном порядке\n const initialize = async () => {\n // Хук ДО инициализации\n if (hooks.beforeInitialize) {\n await hooks.beforeInitialize(context);\n }\n // [LOADING 17] Initializing Core module\n performance.mark('loading-17-start');\n console.log('[LOADING 17] Initializing Core module...');\n\n // Core module must ALWAYS be initialized\n const ModuleCore = await import('../../core.client.js');\n await ModuleCore.default.initialize(app, store, router, config);\n\n performance.mark('loading-17-end');\n performance.measure('loading-17', 'loading-17-start', 'loading-17-end');\n const measure17 = performance.getEntriesByName('loading-17')[0];\n console.log(`[LOADING 17] Core module initialized in ${measure17?.duration?.toFixed(2)}ms`);\n\n // 2. WebSocket (отложим после гидратации, только если включен)\n const useWebsocket = config.globals?.websocket !== false; // по умолчанию false\n\n if (useWebsocket && typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n wsManager.initialize({\n wsUrl: process.env.WSS_URL || undefined,\n maxReconnectAttempts: 5,\n reconnectDelay: 3000,\n pingInterval: 30000,\n });\n });\n }\n\n // 3. Предзагрузка важных модулей в фоне\n if (typeof window !== 'undefined') {\n requestIdleCallback(() => {\n moduleManager.preloadModules(context);\n });\n }\n \n // 5. Подключаем Vue плагины\n app.use(router).use(i18n).use(meta);\n \n // 6. Монтируем приложение\n if (process.env.MOBILE_APP) {\n app.mount('#app');\n }\n\n // Хук ПОСЛЕ инициализации\n if (hooks.afterInitialize) {\n await hooks.afterInitialize(context);\n }\n\n // [LOADING 19] Application initialization completed\n performance.mark('loading-19-end');\n performance.measure('loading-19', 'loading-14-start', 'loading-19-end');\n const measure19 = performance.getEntriesByName('loading-19')[0];\n console.log(`[LOADING 19] Application initialization completed in ${measure19?.duration?.toFixed(2)}ms`);\n\n return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleManager,\n config,\n };\n };\n \n // Возвращаем промис для SSR\n if (!process.env.MOBILE_APP) {\n return initialize();\n }\n \n // Для SPA инициализируем сразу\n initialize();\n }\n \n // FOR SSR / SERVER ENTRY\n async function renderApp({ url, cookies, headers, languages, ssrContext }) {\n const { app, router, store, i18n, meta, moduleManager } = await createApp();\n \n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('../store/core.store.js');\n await setSSRStore(store);\n }\n \n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n\n // [LOADING 20] SSR renderApp starting and loading modules\n performance.mark('loading-20-start');\n console.log('[LOADING 20] SSR renderApp starting and loading modules...');\n\n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleManager.getModulesForRoute(url);\n\n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n\n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleManager.load(module.name, context);\n await moduleManager.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\n\n performance.mark('loading-20-end');\n performance.measure('loading-20', 'loading-20-start', 'loading-20-end');\n const measure20 = performance.getEntriesByName('loading-20')[0];\n console.log(`[LOADING 20] SSR modules loaded in ${measure20?.duration?.toFixed(2)}ms`);\n \n // После загрузки модулей и регистрации роутов, выполняем навигацию\n await router.push(url);\n await router.isReady();\n \n const result = await appRenderer.render({\n url,\n cookies,\n headers,\n createApp: () => ({ app, router, store, i18n, meta }),\n ssrContext\n });\n \n if (ssrContext?.modules) {\n result.usedModules = Array.from(ssrContext.modules);\n }\n \n // Передаем только модули текущего роута (без критических)\n result.loadedModules = currentRouteModules;\n\n // [LOADING 21] SSR render completed\n performance.mark('loading-21-end');\n performance.measure('loading-21', 'loading-20-start', 'loading-21-end');\n const measure21 = performance.getEntriesByName('loading-21')[0];\n console.log(`[LOADING 21] SSR render completed in ${measure21?.duration?.toFixed(2)}ms`);\n\n // Clean up for next SSR request\n if (typeof window === 'undefined') {\n moduleManager.initialized.clear();\n moduleManager.modules.clear();\n moduleManager.loadingPromises.clear();\n\n const { clearSSRStore } = await import('../store/core.store.js');\n await clearSSRStore();\n }\n\n return result;\n }\n \n // FOR SPA\n if (typeof window !== 'undefined' && process.env.MOBILE_APP) {\n createApp();\n }\n \n // FOR SSR / CLIENT ENTRY\n if (typeof window !== 'undefined' && !process.env.MOBILE_APP) {\n // Используем renderAndMountApp для правильной гидратации со state\n appRenderer.renderAndMountApp({ createApp, hooks }).then(({ app, router, store, moduleManager }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleManager });\n }\n \n // Модули уже загружены в renderAndMountApp, просто ставим маркер\n if (typeof window !== 'undefined') {\n window.performance.mark('client-ready');\n }\n }).catch(error => {\n console.error('Hydration failed:', error);\n });\n }\n \n return { createApp, renderApp };\n }\n \n // Возвращаем промис, который резолвится с функциями\n return initializeApp();\n}"],"names":["createApp","createVueApp","createVueSSRApp","moduleManager"],"mappings":"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"}
@@ -51,7 +51,7 @@ const _sfc_main = {
51
51
  onClick: _cache[1] || (_cache[1] = withModifiers(() => order.value = "asc", ["stop"])),
52
52
  class: normalizeClass([{
53
53
  "bg-white t-black": order.value === "asc"
54
- }, "radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-solid br-1px br-grey-transp-25 w-100"])
54
+ }, "radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-1px br-grey-transp-25 w-100"])
55
55
  }, [
56
56
  createVNode(_sfc_main$2, {
57
57
  order: "asc",
@@ -64,7 +64,7 @@ const _sfc_main = {
64
64
  onClick: _cache[2] || (_cache[2] = withModifiers(() => order.value = "desc", ["stop"])),
65
65
  class: normalizeClass([{
66
66
  "bg-white t-black": order.value === "desc"
67
- }, "radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-solid br-1px br-grey-transp-25 w-100"])
67
+ }, "radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-1px br-grey-transp-25 w-100"])
68
68
  }, [
69
69
  createVNode(_sfc_main$2, {
70
70
  order: "desc",
@@ -1 +1 @@
1
- {"version":3,"file":"BlockSorting.vue.js","sources":["../../../../../../../../src/modules/core/views/components/blocks/BlockSorting.vue"],"sourcesContent":["<script setup>\nimport { ref } from 'vue';\n\nimport Radio from \"@martyrs/src/components/Radio/Radio.vue\";\n\nimport ButtonSort from '@martyrs/src/modules/core/views/components/elements/ButtonSort.vue'\nimport IconSort from '@martyrs/src/modules/icons/navigation/IconSort.vue'\n\nconst props = defineProps({\n title: {\n type: String,\n default: 'Sorting Options'\n },\n options: {\n type: Array,\n default: [{\n label: 'Date',\n value: 'createdAt'\n },{\n label: 'Popularity',\n value: 'popularity'\n },{\n label: 'Creator',\n value: 'creator'\n }]\n }\n});\n\nconst param = defineModel('param')\nconst order = defineModel('order')\n</script>\n\n<template>\n <div class=\"w-100 o-hidden\">\n <h4 class=\"mn-b-thin\">{{title}}</h4>\n\n <Radio \n v-for=\"option in options\"\n v-model:radio=\"param\"\n :label=\"option.label\"\n :value=\"option.value\"\n class=\"w-100 mn-b-thin\"\n />\n\n <div class=\"w-100 flex-nowrap flex gap-micro\">\n <button \n @click.stop=\"() => order = 'asc'\"\n :class=\"{\n 'bg-white t-black': order === 'asc'\n }\"\n class=\"radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-solid br-1px br-grey-transp-25 w-100\"\n >\n <IconSort\n :order=\"'asc'\"\n :fill=\"order === 'asc' ? 'rgb(var(--black))' : 'rgb(var(--white))'\"\n class=\"i-small\"\n />\n Ascending\n </button>\n\n <button \n @click.stop=\"() => order = 'desc'\"\n :class=\"{\n 'bg-white t-black': order === 'desc'\n }\"\n class=\"radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-solid br-1px br-grey-transp-25 w-100\"\n >\n <IconSort\n :order=\"'desc'\"\n :fill=\"order === 'desc' ? 'rgb(var(--black))' : 'rgb(var(--white))'\"\n class=\"i-small\"\n />\n Descending\n </button>\n </div>\n </div>\n</template>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,UAAM,QAAQA,SAAW,SAAC,OAAO;AACjC,UAAM,QAAQA,SAAW,SAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlockSorting.vue.js","sources":["../../../../../../../../src/modules/core/views/components/blocks/BlockSorting.vue"],"sourcesContent":["<script setup>\nimport { ref } from 'vue';\n\nimport Radio from \"@martyrs/src/components/Radio/Radio.vue\";\n\nimport ButtonSort from '@martyrs/src/modules/core/views/components/elements/ButtonSort.vue'\nimport IconSort from '@martyrs/src/modules/icons/navigation/IconSort.vue'\n\nconst props = defineProps({\n title: {\n type: String,\n default: 'Sorting Options'\n },\n options: {\n type: Array,\n default: [{\n label: 'Date',\n value: 'createdAt'\n },{\n label: 'Popularity',\n value: 'popularity'\n },{\n label: 'Creator',\n value: 'creator'\n }]\n }\n});\n\nconst param = defineModel('param')\nconst order = defineModel('order')\n</script>\n\n<template>\n <div class=\"w-100 o-hidden\">\n <h4 class=\"mn-b-thin\">{{title}}</h4>\n\n <Radio \n v-for=\"option in options\"\n v-model:radio=\"param\"\n :label=\"option.label\"\n :value=\"option.value\"\n class=\"w-100 mn-b-thin\"\n />\n\n <div class=\"w-100 flex-nowrap flex gap-micro\">\n <button \n @click.stop=\"() => order = 'asc'\"\n :class=\"{\n 'bg-white t-black': order === 'asc'\n }\"\n class=\"radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-1px br-grey-transp-25 w-100\"\n >\n <IconSort\n :order=\"'asc'\"\n :fill=\"order === 'asc' ? 'rgb(var(--black))' : 'rgb(var(--white))'\"\n class=\"i-small\"\n />\n Ascending\n </button>\n\n <button \n @click.stop=\"() => order = 'desc'\"\n :class=\"{\n 'bg-white t-black': order === 'desc'\n }\"\n class=\"radius-semi flex-center w-100 uppercase p-small flex-nowrap flex gap-thin pd-thin br-1px br-grey-transp-25 w-100\"\n >\n <IconSort\n :order=\"'desc'\"\n :fill=\"order === 'desc' ? 'rgb(var(--black))' : 'rgb(var(--white))'\"\n class=\"i-small\"\n />\n Descending\n </button>\n </div>\n </div>\n</template>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,UAAM,QAAQA,SAAW,SAAC,OAAO;AACjC,UAAM,QAAQA,SAAW,SAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,24 +1,24 @@
1
1
  import { resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createBlock, withModifiers, resolveDynamicComponent, toDisplayString, withCtx, createTextVNode, Fragment, renderList, normalizeClass } from "vue";
2
2
  import { useRouter } from "vue-router";
3
- import _sfc_main$1 from "../../../../../components/Tooltip/Tooltip.vue.js";
4
- import _sfc_main$3 from "../../../../../components/Dropdown/Dropdown.vue.js";
3
+ import _sfc_main$1 from "../../../../../components/Tooltip/Tooltip.vue2.js";
4
+ import _sfc_main$3 from "../../../../../components/Dropdown/Dropdown.vue2.js";
5
5
  import PlaceholderUserpic from "../../../../icons/placeholders/PlaceholderUserpic.vue.js";
6
6
  import PlaceholderOrganizationPic from "../../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
7
7
  import _sfc_main$4 from "../../../../icons/navigation/IconEllipsis.vue.js";
8
8
  import _sfc_main$5 from "../../../../reports/components/sections/FormReport.vue.js";
9
- /* empty css */
9
+ /* empty css */
10
10
  /* empty css */
11
11
  import _sfc_main$2 from "../elements/PhotoStack.vue.js";
12
12
  const _hoisted_1 = {
13
13
  key: 0,
14
14
  class: "pd-b-zero"
15
15
  };
16
- const _hoisted_2 = { class: "w-100 flex-v-center flex-nojustify flex" };
16
+ const _hoisted_2 = { class: "w-100 flex-v-center flex-justify-start flex" };
17
17
  const _hoisted_3 = { class: "w-100 gap-thin p-regular t-nowrap flex-nowrap flex-v-center flex" };
18
18
  const _hoisted_4 = ["src"];
19
19
  const _hoisted_5 = {
20
20
  key: 2,
21
- class: "gap-thin flex flex-nowrap t-medium w-100 pos-relative"
21
+ class: "gap-thin flex flex-nowrap fw-medium w-100 pos-relative"
22
22
  };
23
23
  const _hoisted_6 = { key: 0 };
24
24
  const _hoisted_7 = { key: 2 };
@@ -104,7 +104,7 @@ const _sfc_main = {
104
104
  _id: __props.owner.target._id
105
105
  }
106
106
  }), ["stop"])),
107
- class: "cursor-pointer w-max t-trim"
107
+ class: "cursor-pointer w-max truncate"
108
108
  }, toDisplayString(__props.owner.target?.profile?.name || __props.creator.target?.username || "Anonymous"), 1),
109
109
  !__props.creator.hidden && __props.owner.target?.profile?.name !== __props.creator.target?.profile?.name ? (openBlock(), createElementBlock("span", _hoisted_6, "·")) : createCommentVNode("", true),
110
110
  !__props.creator.hidden && __props.owner.target?.profile?.name !== __props.creator.target?.profile?.name ? (openBlock(), createElementBlock("span", {
@@ -115,7 +115,7 @@ const _sfc_main = {
115
115
  _id: __props.creator.target?._id
116
116
  }
117
117
  }), ["stop"])),
118
- class: "cursor-pointer w-max t-trim"
118
+ class: "cursor-pointer w-max truncate"
119
119
  }, [
120
120
  createElementVNode("div", null, "by " + toDisplayString(__props.creator.target?.profile?.name || __props.creator.target?.username || "Anonymous"), 1)
121
121
  ])) : createCommentVNode("", true),
@@ -158,7 +158,7 @@ const _sfc_main = {
158
158
  class: "w-100"
159
159
  }, {
160
160
  default: withCtx(() => _cache[4] || (_cache[4] = [
161
- createElementVNode("button", { class: "w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button" }, " Report ", -1)
161
+ createElementVNode("button", { class: "w-100 bg-black br-1px br-white-transp-20 t-white button-small button" }, " Report ", -1)
162
162
  ])),
163
163
  _: 1
164
164
  }, 8, ["user", "type", "target"])) : createCommentVNode("", true),
@@ -167,7 +167,7 @@ const _sfc_main = {
167
167
  action.to ? (openBlock(), createBlock(_component_router_link, {
168
168
  key: action.to,
169
169
  to: action.to,
170
- class: normalizeClass(action.class || "w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button")
170
+ class: normalizeClass(action.class || "w-100 bg-black br-1px br-white-transp-20 t-white button-small button")
171
171
  }, {
172
172
  default: withCtx(() => [
173
173
  createTextVNode(toDisplayString(action.label), 1)
@@ -177,7 +177,7 @@ const _sfc_main = {
177
177
  action.method ? (openBlock(), createElementBlock("button", {
178
178
  key: 1,
179
179
  onClick: action.method,
180
- class: normalizeClass(action.class || "w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button")
180
+ class: normalizeClass(action.class || "w-100 bg-black br-1px br-white-transp-20 t-white button-small button")
181
181
  }, toDisplayString(action.label), 11, _hoisted_13)) : createCommentVNode("", true)
182
182
  ], 64);
183
183
  }), 256)) : createCommentVNode("", true)
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.vue.js","sources":["../../../../../../../../src/modules/core/views/components/blocks/CardHeader.vue"],"sourcesContent":["<template>\n\t<header \n\t\tv-if=\"owner\" \n\t\tclass=\"pd-b-zero \"\n\t>\n\t\t<div \n\t\t\tclass=\"w-100 flex-v-center flex-nojustify flex\"\n\t\t>\n\n\t\t\t<div\n\t\t\t\tclass=\"w-100 gap-thin p-regular t-nowrap flex-nowrap flex-v-center flex\"\n\t\t\t>\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"owner.target?.profile?.photo?.length > 0 && type !== 'short'\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + owner.target.profile.photo\" \n\t\t\t\t\tclass=\"radius-medium bg-white flex-child-default object-fit-cover i-medium\" \n\n\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\tname: owner.type === 'user' ? 'User Profile' : 'Organization', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: owner.target._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t/>\n\t\t\t\t<component\n\t\t\t\t\tv-if=\"!owner.target?.profile?.photo && type !== 'short'\"\n\t\t\t\t\t:is=\"owner.type === 'user' ? PlaceholderUserpic : PlaceholderOrganizationPic\"\n\t\t\t\t\tclass=\"radius-medium flex-child-default cursor-pointer i-medium\"\n\n\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\tname: owner.type === 'user' ? 'User Profile' : 'Organization', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: owner.target._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t/>\n\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"type !== 'short'\"\n\t\t\t\t\tclass=\"gap-thin flex flex-nowrap t-medium w-100 pos-relative\"\n\t\t\t\t>\n\t\t\t\t\t<span \n\t\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\t\tname: owner.type === 'user' ? 'User Profile' : 'Organization', \n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\t_id: owner.target._id\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\" \n\t\t\t\t\t\tclass=\"cursor-pointer w-max t-trim\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{owner.target?.profile?.name || creator.target?.username || 'Anonymous'}}\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span v-if=\"!creator.hidden && owner.target?.profile?.name !== creator.target?.profile?.name\">·</span> \n\n\t\t\t\t\t<span\n\t\t\t\t\t\tv-if=\"!creator.hidden && owner.target?.profile?.name !== creator.target?.profile?.name\"\n\t\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\t\tname: 'User Profile', \n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\t_id: creator.target?._id\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\" \n\t\t\t\t\t\tclass=\"cursor-pointer w-max t-trim\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div>by {{creator.target?.profile?.name || creator.target?.username || 'Anonymous'}}</div>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span v-if=\"date\">·</span> \n\n\t\t\t\t\t<span v-if=\"date\" class=\"pos-relative w-max\">\n\t\t\t\t\t\t<Tooltip v-if=\"date\" :text=\"formatDate(date)\">\n\t\t\t\t\t \t\t{{getTimeElapsed(date)}}\n\t\t\t\t\t \t</Tooltip>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span v-if=\"dateFormatted\">·</span>\n\n\t\t\t\t\t<span v-if=\"dateFormatted\"> {{dateFormatted}}</span>\n\t\t\t\t</div>\n\t\t\t\t\n\n\t\t\t\t<!-- Participaters avatar -->\n\t\t\t\t<div class=\"d-block mn-l-auto flex-nowrap flex flex-v-center\">\n\t\t\t\t\t<PhotoStack\n\t\t\t\t\t\tv-if=\"members\"\n\t\t\t\t\t\t:number=\"members\"\n\t\t\t \t:photos=\"membersPhotos\" \n\t\t\t />\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Report -->\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"type !== 'short' && user && (user !== creator.target?._id || (actions && actions.length > 0))\"\n\t\t\t\t\t:label=\"{ component: IconEllipsis, class: 't-transp i-regular' }\"\n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer z-index-2\"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black flex-column flex gap-thin pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\tv-if=\"user !== creator.target?._id\"\n\t\t\t\t\t\t\t:user=\"user\"\n\t\t\t\t\t\t\t:type=\"entityType\" \n\t\t\t\t\t\t\t:target=\"entity._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<template \n\t\t\t v-for=\"action in actions\" \n\t\t\t v-if=\"actions && actions.length > 0\"\n\t\t\t >\n\t\t\t <router-link\n\t\t\t v-if=\"action.to\"\n\t\t\t :key=\"action.to\"\n\t\t\t :to=\"action.to\"\n\t\t\t :class=\"action.class || 'w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button'\"\n\t\t\t >\n\t\t\t {{ action.label }}\n\t\t\t </router-link>\n\n\t\t\t <button\n\t\t\t v-if=\"action.method\"\n\t\t\t @click=\"action.method\"\n\t\t\t :class=\"action.class || 'w-100 bg-black br-solid br-1px br-white-transp-20 t-white button-small button'\"\n\t\t\t >\n\t\t\t {{ action.label }}\n\t\t\t </button>\n\t\t\t </template>\n\t\t\t\t\t</section>\n\t\t </Dropdown>\t\n\t\t\t</div>\n\t\t</div>\n\t</header>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed,ref } from 'vue'\n\n\timport { useRouter } from 'vue-router'\n\n\timport Tooltip from '@martyrs/src/components/Tooltip/Tooltip.vue'\n\timport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\n\n\timport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n\timport PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\timport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\n\timport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n\timport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n\timport PhotoStack from \"@martyrs/src/modules/core/views/components/elements/PhotoStack.vue\"\n\n\n\tconst props = defineProps([\n\t\t'user',\n\t\t'entity',\n\t\t'entityType',\n\t\t'date',\n\t\t'dateFormatted',\n\t\t'owner',\n\t\t'creator',\n\t\t'members',\n\t\t'membersPhotos',\n\t\t'type',\n\t\t'actions'\n\t])\n\n\tconst router = useRouter()\n\n\tfunction getTimeElapsed(timestamp) {\n\t const now = new Date();\n\t const createdAt = new Date(timestamp);\n\t const timeDiff = Math.abs(now - createdAt);\n\t const seconds = Math.floor(timeDiff / 1000);\n\t const minutes = Math.floor(seconds / 60);\n\t const hours = Math.floor(minutes / 60);\n\t const days = Math.floor(hours / 24);\n\t const weeks = Math.floor(days / 7);\n\t \n\t if (weeks > 0) {\n\t return `${weeks} week${weeks > 1 ? 's' : ''} ago`;\n\t } else if (days > 0) {\n\t return `${days} day${days > 1 ? 's' : ''} ago`;\n\t } else if (hours > 0) {\n\t return `${hours} hour${hours > 1 ? 's' : ''} ago`;\n\t } else if (minutes > 0) {\n\t return `${minutes} minute${minutes > 1 ? 's' : ''} ago`;\n\t } else {\n\t return 'Just now';\n\t }\n\t}\n\n</script>\n\n<style lang=\"scss\">\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiLgB,cAAS;AAExB,aAAS,eAAe,WAAW;AACjC,YAAM,MAAM,oBAAI,KAAI;AACpB,YAAM,YAAY,IAAI,KAAK,SAAS;AACpC,YAAM,WAAW,KAAK,IAAI,MAAM,SAAS;AACzC,YAAM,UAAU,KAAK,MAAM,WAAW,GAAI;AAC1C,YAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,YAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,YAAM,OAAO,KAAK,MAAM,QAAQ,EAAE;AAClC,YAAM,QAAQ,KAAK,MAAM,OAAO,CAAC;AAEjC,UAAI,QAAQ,GAAG;AACb,eAAO,GAAG,KAAK,QAAQ,QAAQ,IAAI,MAAM,EAAE;AAAA,MAC7C,WAAW,OAAO,GAAG;AACnB,eAAO,GAAG,IAAI,OAAO,OAAO,IAAI,MAAM,EAAE;AAAA,MAC1C,WAAW,QAAQ,GAAG;AACpB,eAAO,GAAG,KAAK,QAAQ,QAAQ,IAAI,MAAM,EAAE;AAAA,MAC7C,WAAW,UAAU,GAAG;AACtB,eAAO,GAAG,OAAO,UAAU,UAAU,IAAI,MAAM,EAAE;AAAA,MACnD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardHeader.vue.js","sources":["../../../../../../../../src/modules/core/views/components/blocks/CardHeader.vue"],"sourcesContent":["<template>\n\t<header \n\t\tv-if=\"owner\" \n\t\tclass=\"pd-b-zero \"\n\t>\n\t\t<div \n\t\t\tclass=\"w-100 flex-v-center flex-justify-start flex\"\n\t\t>\n\n\t\t\t<div\n\t\t\t\tclass=\"w-100 gap-thin p-regular t-nowrap flex-nowrap flex-v-center flex\"\n\t\t\t>\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"owner.target?.profile?.photo?.length > 0 && type !== 'short'\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + owner.target.profile.photo\" \n\t\t\t\t\tclass=\"radius-medium bg-white flex-child-default object-fit-cover i-medium\" \n\n\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\tname: owner.type === 'user' ? 'User Profile' : 'Organization', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: owner.target._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t/>\n\t\t\t\t<component\n\t\t\t\t\tv-if=\"!owner.target?.profile?.photo && type !== 'short'\"\n\t\t\t\t\t:is=\"owner.type === 'user' ? PlaceholderUserpic : PlaceholderOrganizationPic\"\n\t\t\t\t\tclass=\"radius-medium flex-child-default cursor-pointer i-medium\"\n\n\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\tname: owner.type === 'user' ? 'User Profile' : 'Organization', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: owner.target._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t/>\n\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"type !== 'short'\"\n\t\t\t\t\tclass=\"gap-thin flex flex-nowrap fw-medium w-100 pos-relative\"\n\t\t\t\t>\n\t\t\t\t\t<span \n\t\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\t\tname: owner.type === 'user' ? 'User Profile' : 'Organization', \n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\t_id: owner.target._id\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\" \n\t\t\t\t\t\tclass=\"cursor-pointer w-max truncate\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{owner.target?.profile?.name || creator.target?.username || 'Anonymous'}}\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span v-if=\"!creator.hidden && owner.target?.profile?.name !== creator.target?.profile?.name\">·</span> \n\n\t\t\t\t\t<span\n\t\t\t\t\t\tv-if=\"!creator.hidden && owner.target?.profile?.name !== creator.target?.profile?.name\"\n\t\t\t\t\t\t@click.stop=\"$router.push({\n\t\t\t\t\t\t\tname: 'User Profile', \n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\t_id: creator.target?._id\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\" \n\t\t\t\t\t\tclass=\"cursor-pointer w-max truncate\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div>by {{creator.target?.profile?.name || creator.target?.username || 'Anonymous'}}</div>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span v-if=\"date\">·</span> \n\n\t\t\t\t\t<span v-if=\"date\" class=\"pos-relative w-max\">\n\t\t\t\t\t\t<Tooltip v-if=\"date\" :text=\"formatDate(date)\">\n\t\t\t\t\t \t\t{{getTimeElapsed(date)}}\n\t\t\t\t\t \t</Tooltip>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span v-if=\"dateFormatted\">·</span>\n\n\t\t\t\t\t<span v-if=\"dateFormatted\"> {{dateFormatted}}</span>\n\t\t\t\t</div>\n\t\t\t\t\n\n\t\t\t\t<!-- Participaters avatar -->\n\t\t\t\t<div class=\"d-block mn-l-auto flex-nowrap flex flex-v-center\">\n\t\t\t\t\t<PhotoStack\n\t\t\t\t\t\tv-if=\"members\"\n\t\t\t\t\t\t:number=\"members\"\n\t\t\t \t:photos=\"membersPhotos\" \n\t\t\t />\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Report -->\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"type !== 'short' && user && (user !== creator.target?._id || (actions && actions.length > 0))\"\n\t\t\t\t\t:label=\"{ component: IconEllipsis, class: 't-transp i-regular' }\"\n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer z-index-2\"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black flex-column flex gap-thin pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\tv-if=\"user !== creator.target?._id\"\n\t\t\t\t\t\t\t:user=\"user\"\n\t\t\t\t\t\t\t:type=\"entityType\" \n\t\t\t\t\t\t\t:target=\"entity._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<template \n\t\t\t v-for=\"action in actions\" \n\t\t\t v-if=\"actions && actions.length > 0\"\n\t\t\t >\n\t\t\t <router-link\n\t\t\t v-if=\"action.to\"\n\t\t\t :key=\"action.to\"\n\t\t\t :to=\"action.to\"\n\t\t\t :class=\"action.class || 'w-100 bg-black br-1px br-white-transp-20 t-white button-small button'\"\n\t\t\t >\n\t\t\t {{ action.label }}\n\t\t\t </router-link>\n\n\t\t\t <button\n\t\t\t v-if=\"action.method\"\n\t\t\t @click=\"action.method\"\n\t\t\t :class=\"action.class || 'w-100 bg-black br-1px br-white-transp-20 t-white button-small button'\"\n\t\t\t >\n\t\t\t {{ action.label }}\n\t\t\t </button>\n\t\t\t </template>\n\t\t\t\t\t</section>\n\t\t </Dropdown>\t\n\t\t\t</div>\n\t\t</div>\n\t</header>\n</template>\n\n\n<script setup=\"props\">\n\timport { computed,ref } from 'vue'\n\n\timport { useRouter } from 'vue-router'\n\n\timport Tooltip from '@martyrs/src/components/Tooltip/Tooltip.vue'\n\timport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\n\n\timport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n\timport PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\timport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\n\timport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n\timport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n\timport PhotoStack from \"@martyrs/src/modules/core/views/components/elements/PhotoStack.vue\"\n\n\n\tconst props = defineProps([\n\t\t'user',\n\t\t'entity',\n\t\t'entityType',\n\t\t'date',\n\t\t'dateFormatted',\n\t\t'owner',\n\t\t'creator',\n\t\t'members',\n\t\t'membersPhotos',\n\t\t'type',\n\t\t'actions'\n\t])\n\n\tconst router = useRouter()\n\n\tfunction getTimeElapsed(timestamp) {\n\t const now = new Date();\n\t const createdAt = new Date(timestamp);\n\t const timeDiff = Math.abs(now - createdAt);\n\t const seconds = Math.floor(timeDiff / 1000);\n\t const minutes = Math.floor(seconds / 60);\n\t const hours = Math.floor(minutes / 60);\n\t const days = Math.floor(hours / 24);\n\t const weeks = Math.floor(days / 7);\n\t \n\t if (weeks > 0) {\n\t return `${weeks} week${weeks > 1 ? 's' : ''} ago`;\n\t } else if (days > 0) {\n\t return `${days} day${days > 1 ? 's' : ''} ago`;\n\t } else if (hours > 0) {\n\t return `${hours} hour${hours > 1 ? 's' : ''} ago`;\n\t } else if (minutes > 0) {\n\t return `${minutes} minute${minutes > 1 ? 's' : ''} ago`;\n\t } else {\n\t return 'Just now';\n\t }\n\t}\n\n</script>\n\n<style lang=\"scss\">\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiLgB,cAAS;AAExB,aAAS,eAAe,WAAW;AACjC,YAAM,MAAM,oBAAI,KAAI;AACpB,YAAM,YAAY,IAAI,KAAK,SAAS;AACpC,YAAM,WAAW,KAAK,IAAI,MAAM,SAAS;AACzC,YAAM,UAAU,KAAK,MAAM,WAAW,GAAI;AAC1C,YAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,YAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,YAAM,OAAO,KAAK,MAAM,QAAQ,EAAE;AAClC,YAAM,QAAQ,KAAK,MAAM,OAAO,CAAC;AAEjC,UAAI,QAAQ,GAAG;AACb,eAAO,GAAG,KAAK,QAAQ,QAAQ,IAAI,MAAM,EAAE;AAAA,MAC7C,WAAW,OAAO,GAAG;AACnB,eAAO,GAAG,IAAI,OAAO,OAAO,IAAI,MAAM,EAAE;AAAA,MAC1C,WAAW,QAAQ,GAAG;AACpB,eAAO,GAAG,KAAK,QAAQ,QAAQ,IAAI,MAAM,EAAE;AAAA,MAC7C,WAAW,UAAU,GAAG;AACtB,eAAO,GAAG,OAAO,UAAU,UAAU,IAAI,MAAM,EAAE;AAAA,MACnD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -26,13 +26,13 @@ const _sfc_main = {
26
26
  class: "help-icon mn-b-thin",
27
27
  style: { "font-size": "2rem" }
28
28
  }, "💬", -1),
29
- createElementVNode("div", { class: "help-title t-medium mn-b-micro" }, "Need help?", -1),
29
+ createElementVNode("div", { class: "help-title fw-medium mn-b-micro" }, "Need help?", -1),
30
30
  createElementVNode("div", { class: "help-subtitle t-small t-transp" }, "24/7 online support", -1)
31
31
  ]), 8, _hoisted_1)) : createCommentVNode("", true);
32
32
  };
33
33
  }
34
34
  };
35
- const HelpCard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4497b8c1"]]);
35
+ const HelpCard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-cdb417ab"]]);
36
36
  export {
37
37
  HelpCard as default
38
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HelpCard.vue.js","sources":["../../../../../../../../src/modules/core/views/components/blocks/HelpCard.vue"],"sourcesContent":["<template>\n <a\n v-if=\"supportUrl\"\n :href=\"supportUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"help-card pd-small mn-small radius-small bg-light cursor-pointer\"\n >\n <div class=\"help-icon mn-b-thin\" style=\"font-size: 2rem;\">💬</div>\n <div class=\"help-title t-medium mn-b-micro\">Need help?</div>\n <div class=\"help-subtitle t-small t-transp\">24/7 online support</div>\n </a>\n</template>\n\n<script setup>\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\nimport { computed } from 'vue';\n\nconst store = useStore()\n\ndefineProps({\n theme: {\n type: String,\n default: 'light'\n }\n});\n\nconst supportUrl = computed(() => store.core.state.config?.app?.support?.url);\n</script>\n\n<style scoped>\n.help-card {\n margin-top: auto;\n text-decoration: none;\n color: inherit;\n display: block;\n transition: opacity 0.2s ease;\n}\n\n.help-card:hover {\n opacity: 0.8;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,UAAM,QAAQ,SAAQ;AAStB,UAAM,aAAa,SAAS,MAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HelpCard.vue.js","sources":["../../../../../../../../src/modules/core/views/components/blocks/HelpCard.vue"],"sourcesContent":["<template>\n <a\n v-if=\"supportUrl\"\n :href=\"supportUrl\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"help-card pd-small mn-small radius-small bg-light cursor-pointer\"\n >\n <div class=\"help-icon mn-b-thin\" style=\"font-size: 2rem;\">💬</div>\n <div class=\"help-title fw-medium mn-b-micro\">Need help?</div>\n <div class=\"help-subtitle t-small t-transp\">24/7 online support</div>\n </a>\n</template>\n\n<script setup>\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\nimport { computed } from 'vue';\n\nconst store = useStore()\n\ndefineProps({\n theme: {\n type: String,\n default: 'light'\n }\n});\n\nconst supportUrl = computed(() => store.core.state.config?.app?.support?.url);\n</script>\n\n<style scoped>\n.help-card {\n margin-top: auto;\n text-decoration: none;\n color: inherit;\n display: block;\n transition: opacity 0.2s ease;\n}\n\n.help-card:hover {\n opacity: 0.8;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,UAAM,QAAQ,SAAQ;AAStB,UAAM,aAAa,SAAS,MAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;"}
@@ -67,7 +67,7 @@ const _sfc_main = {
67
67
  _cache[1] || (_cache[1] = createTextVNode(" Already have an account? ")),
68
68
  createElementVNode("a", {
69
69
  onClick: handleSignIn,
70
- class: "t-second cursor-pointer"
70
+ class: "t-grey cursor-pointer"
71
71
  }, "Sign in")
72
72
  ])
73
73
  ])