@ozdao/martyrs 0.2.546 → 0.2.548

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 (763) hide show
  1. package/dist/auth.server.cjs +9 -9
  2. package/dist/auth.server.js +9 -9
  3. package/dist/builder.cjs +12 -751
  4. package/dist/builder.js +21 -721
  5. package/dist/chats.server.cjs +61 -59
  6. package/dist/chats.server.js +61 -59
  7. package/dist/{common.schema-BzFEVNn3.cjs → common.schema-BtXLULba.cjs} +2 -2
  8. package/dist/{common.schema-Bw1O5_2Q.js → common.schema-GFSlNJo7.js} +2 -2
  9. package/dist/community.server.cjs +10 -10
  10. package/dist/community.server.js +10 -10
  11. package/dist/{credentials.schema-C9FB2EyY.js → credentials.schema--2vvcu8c.js} +2 -2
  12. package/dist/{credentials.schema-DwhGdrwC.cjs → credentials.schema-DVXaFnXl.cjs} +2 -2
  13. package/dist/{crud-Ed3dcRsC.js → crud-D_snnl2K.js} +78 -2
  14. package/dist/{crud-DGM6Xa1R.cjs → crud-pedHI2by.cjs} +78 -2
  15. package/dist/{engagement.schema-JADHu8pj.cjs → engagement.schema-DHw4iY_W.cjs} +2 -2
  16. package/dist/{engagement.schema-Dh1adRsn.js → engagement.schema-fh6W1fb_.js} +2 -2
  17. package/dist/events.server.cjs +452 -11
  18. package/dist/events.server.js +433 -9
  19. package/dist/files.server.cjs +2 -2
  20. package/dist/files.server.js +2 -2
  21. package/dist/gallery.server.cjs +5 -5
  22. package/dist/gallery.server.js +5 -5
  23. package/dist/globals.server.cjs +11 -373
  24. package/dist/globals.server.js +11 -356
  25. package/dist/globals.websocket-C2FxNmZ1.js +357 -0
  26. package/dist/globals.websocket-Cm72lPCs.cjs +374 -0
  27. package/dist/inventory.server.cjs +4 -5
  28. package/dist/inventory.server.js +2 -3
  29. package/dist/main-DvjCsGb1.cjs +11 -0
  30. package/dist/{main-d9n_ibdE.js → main-q-y0Lhcy.js} +28 -28
  31. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.cjs +8 -8
  32. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.cjs.map +1 -1
  33. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.js +8 -8
  34. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.2.1/node_modules/bignumber.js/bignumber.js.map +1 -1
  35. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.cjs +2 -2
  36. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.cjs.map +1 -1
  37. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.js +2 -2
  38. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/ParseError.js.map +1 -1
  39. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.cjs +2 -2
  40. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.cjs.map +1 -1
  41. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.js +2 -2
  42. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/PhoneNumber.js.map +1 -1
  43. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.cjs +8 -8
  44. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.cjs.map +1 -1
  45. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.js +8 -8
  46. package/dist/martyrs/node_modules/.pnpm/libphonenumber-js@1.12.6/node_modules/libphonenumber-js/es6/metadata.js.map +1 -1
  47. package/dist/martyrs/src/components/Button/Button.vue.cjs.map +1 -1
  48. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
  49. package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs +3 -3
  50. package/dist/martyrs/src/components/Calendar/Calendar.vue2.cjs.map +1 -1
  51. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +3 -3
  52. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  53. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs +1 -1
  54. package/dist/martyrs/src/components/Chips/Chips.vue2.js +1 -1
  55. package/dist/martyrs/src/components/Countdown/Countdown.vue.cjs +4 -4
  56. package/dist/martyrs/src/components/Countdown/Countdown.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +4 -4
  58. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +1 -1
  60. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -1
  61. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.cjs +1 -1
  62. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
  63. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  64. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  66. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  67. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +1 -1
  68. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  70. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  71. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs +2 -2
  72. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +2 -2
  74. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -1
  75. package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs +1 -1
  76. package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +1 -1
  78. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  79. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
  80. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
  81. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  82. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
  83. package/dist/martyrs/src/components/Status/Snack.vue.cjs +1 -1
  84. package/dist/martyrs/src/components/Status/Snack.vue.cjs.map +1 -1
  85. package/dist/martyrs/src/components/Status/Snack.vue.js +1 -1
  86. package/dist/martyrs/src/components/Status/Snack.vue.js.map +1 -1
  87. package/dist/martyrs/src/components/Status/Status.vue.cjs +1 -1
  88. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  89. package/dist/martyrs/src/components/Status/Status.vue.js +1 -1
  90. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  91. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.cjs → UploadImage.vue2.cjs} +5 -5
  92. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs.map +1 -0
  93. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.js → UploadImage.vue2.js} +5 -5
  94. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js.map +1 -0
  95. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
  97. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  99. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +4 -4
  100. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +4 -4
  102. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  105. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  106. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  112. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +3 -3
  114. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
  115. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +3 -3
  116. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +2 -2
  118. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
  119. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +2 -2
  120. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
  122. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  125. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  126. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +2 -2
  128. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  129. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +2 -2
  130. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +2 -2
  132. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  133. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  134. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  138. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +2 -2
  140. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
  142. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +2 -2
  144. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +2 -2
  146. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.js +1 -1
  150. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +4 -4
  152. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs.map +1 -1
  153. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +4 -4
  154. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  155. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  156. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  157. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +3 -3
  158. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  159. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +3 -3
  160. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  161. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +4 -4
  162. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
  163. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +4 -4
  164. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  165. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs +2 -2
  166. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs.map +1 -1
  167. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +2 -2
  168. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  169. package/dist/martyrs/src/modules/globals/globals.client.cjs +0 -6
  170. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  171. package/dist/martyrs/src/modules/globals/globals.client.js +0 -6
  172. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  173. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +4 -1
  174. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  175. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +4 -1
  176. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  177. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +4 -4
  178. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +4 -4
  180. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  182. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  184. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/globals/views/components/elements/PhotoStack.vue.cjs +4 -4
  186. package/dist/martyrs/src/modules/globals/views/components/elements/PhotoStack.vue.js +4 -4
  187. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.cjs +2 -2
  188. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.cjs.map +1 -1
  189. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.js +2 -2
  190. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +31 -123
  192. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -1
  193. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +31 -123
  194. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -1
  195. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +3 -3
  196. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  197. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +3 -3
  198. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs.map +1 -1
  201. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +1 -1
  202. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +3 -3
  204. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +3 -3
  206. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +2 -2
  208. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs.map +1 -1
  209. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +2 -2
  210. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +10 -10
  212. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs.map +1 -1
  213. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +10 -10
  214. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  218. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs +3 -3
  220. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +3 -3
  222. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.cjs +2 -2
  224. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js +2 -2
  226. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +3 -3
  228. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +3 -3
  230. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.cjs.map +1 -1
  233. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  234. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.cjs +1 -1
  236. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +1 -1
  238. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs +3 -3
  240. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs.map +1 -1
  241. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  242. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +1 -1
  244. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  245. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +1 -1
  246. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +4 -4
  248. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  249. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +4 -4
  250. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
  252. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs.map +1 -1
  253. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  254. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  255. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +3 -3
  256. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs.map +1 -1
  257. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  258. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +5 -5
  260. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs.map +1 -1
  261. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +5 -5
  262. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +7 -7
  264. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs.map +1 -1
  265. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +7 -7
  266. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +5 -5
  268. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +5 -5
  270. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +8 -8
  272. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +8 -8
  274. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +10 -10
  276. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
  277. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +10 -10
  278. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +4 -4
  280. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
  281. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +4 -4
  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.cjs +5 -5
  284. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  285. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +5 -5
  286. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +9 -9
  288. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  289. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +9 -9
  290. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +2 -2
  292. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
  293. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  294. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +2 -2
  296. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  297. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +2 -2
  298. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  299. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.cjs +8 -8
  300. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.cjs.map +1 -1
  301. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +8 -8
  302. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  303. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +1 -1
  304. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
  305. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +1 -1
  306. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +4 -4
  308. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs.map +1 -1
  309. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +4 -4
  310. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +2 -2
  312. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -1
  313. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +2 -2
  314. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.cjs +1 -1
  316. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.cjs.map +1 -1
  317. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +1 -1
  318. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +8 -8
  320. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  321. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +8 -8
  322. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +1 -1
  324. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  325. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +1 -1
  326. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.cjs +1 -1
  328. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.cjs.map +1 -1
  329. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  330. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  331. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.cjs +1 -1
  332. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +1 -1
  333. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +3 -3
  334. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +3 -3
  335. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +3 -3
  336. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs.map +1 -1
  337. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  338. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  339. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.cjs +1 -1
  340. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.js +1 -1
  341. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.cjs +2 -2
  342. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +2 -2
  343. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  344. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  346. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +4 -4
  348. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -1
  349. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +4 -4
  350. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  351. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  352. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -1
  353. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  354. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  355. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +5 -5
  356. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  357. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +5 -5
  358. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +3 -3
  360. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +3 -3
  361. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +7 -7
  362. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  363. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +7 -7
  364. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  365. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +8 -8
  366. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
  367. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +8 -8
  368. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
  369. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  370. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  371. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  372. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs.map +1 -1
  373. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  374. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +2 -2
  376. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  377. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +2 -2
  378. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  379. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
  380. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs.map +1 -1
  381. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  382. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  383. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +4 -4
  384. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  385. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +4 -4
  386. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  387. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +3 -3
  388. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  389. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +3 -3
  390. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  391. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -4
  392. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  393. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +4 -4
  394. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  395. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +2 -2
  396. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -1
  397. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +2 -2
  398. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  399. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.cjs → THC.vue2.cjs} +2 -2
  400. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +1 -0
  401. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.js → THC.vue2.js} +2 -2
  402. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +1 -0
  403. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  404. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  405. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  406. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  407. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  408. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +5 -5
  410. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  411. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  412. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  413. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +3 -3
  414. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs.map +1 -1
  415. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +3 -3
  416. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  417. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +3 -3
  418. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs.map +1 -1
  419. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  420. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  421. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +5 -5
  422. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  423. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +5 -5
  424. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  425. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +4 -4
  426. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
  427. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +4 -4
  428. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  429. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs +2 -2
  430. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
  431. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js +2 -2
  432. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
  433. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  434. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
  435. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  436. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  437. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  438. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  439. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  440. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  441. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +3 -3
  442. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
  443. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  444. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  445. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
  446. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
  447. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  448. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  449. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +6 -6
  450. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
  451. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +6 -6
  452. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  453. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  454. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  455. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +4 -4
  456. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs.map +1 -1
  457. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +4 -4
  458. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  459. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +4 -4
  460. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
  461. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +4 -4
  462. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  463. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  464. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs.map +1 -1
  465. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  466. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  467. package/dist/martyrs.cjs.js +1 -1
  468. package/dist/martyrs.css +1 -1
  469. package/dist/martyrs.es.js +1 -1
  470. package/dist/{metadata.schema-RlxNv46L.cjs → metadata.schema-BGykn-_r.cjs} +2 -2
  471. package/dist/{metadata.schema-CWmcDJN7.js → metadata.schema-CIRR_WQ-.js} +2 -2
  472. package/dist/music.server.cjs +30 -33
  473. package/dist/music.server.js +30 -33
  474. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +2 -2
  475. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -1
  476. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js +2 -2
  477. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -1
  478. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.cjs +13 -13
  479. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.cjs.map +1 -1
  480. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js +13 -13
  481. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js.map +1 -1
  482. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.cjs +3 -3
  483. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.cjs.map +1 -1
  484. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.js +3 -3
  485. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
  486. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs +10 -10
  487. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs.map +1 -1
  488. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js +10 -10
  489. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js.map +1 -1
  490. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs +2 -2
  491. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs.map +1 -1
  492. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js +2 -2
  493. package/dist/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +1 -1
  494. package/dist/notifications.server.cjs +22 -18
  495. package/dist/notifications.server.js +22 -18
  496. package/dist/orders.server.cjs +10 -10
  497. package/dist/orders.server.js +10 -10
  498. package/dist/organizations.server.cjs +13 -13
  499. package/dist/organizations.server.js +13 -13
  500. package/dist/{ownership.schema-D1p5XSpt.cjs → ownership.schema-CRYdbemm.cjs} +2 -2
  501. package/dist/{ownership.schema-BqH4v5vH.js → ownership.schema-fwwDf_e5.js} +2 -2
  502. package/dist/pages.server.cjs +2 -2
  503. package/dist/pages.server.js +2 -2
  504. package/dist/products.server.cjs +13 -13
  505. package/dist/products.server.js +13 -13
  506. package/dist/{profile.schema-BGAe5VN5.js → profile.schema-CjLOfG7b.js} +2 -2
  507. package/dist/{profile.schema-pidHrksV.cjs → profile.schema-l0Dk4Ptu.cjs} +2 -2
  508. package/dist/rents.server.cjs +2 -2
  509. package/dist/rents.server.js +2 -2
  510. package/dist/reports.server.cjs +2 -2
  511. package/dist/reports.server.js +2 -2
  512. package/dist/{socials.schema-CtpSF9dE.cjs → socials.schema-CqEHax2w.cjs} +2 -2
  513. package/dist/{socials.schema-BOZV82Mp.js → socials.schema-DxnnaBgO.js} +2 -2
  514. package/dist/spots.server.cjs +4 -4
  515. package/dist/spots.server.js +4 -4
  516. package/dist/style.css +75 -76
  517. package/dist/{web-BkaOiiSn.js → web-8cpb2Zat.js} +1 -1
  518. package/dist/{web-CROHFHoW.cjs → web-B0k809Uc.cjs} +1 -1
  519. package/package.json +8 -12
  520. package/src/builder/builder.js +0 -6
  521. package/src/components/Button/Button.vue +0 -1
  522. package/src/components/Calendar/Calendar.vue +2 -2
  523. package/src/components/Chips/Chips.vue +1 -1
  524. package/src/components/Countdown/Countdown.vue +4 -4
  525. package/src/components/EmptyState/EmptyState.vue +1 -1
  526. package/src/components/FieldBig/FieldBig.vue +1 -1
  527. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  528. package/src/components/LocationMarker/LocationMarker.vue +2 -2
  529. package/src/components/Menu/MenuItem.vue +1 -1
  530. package/src/components/Status/Snack.vue +1 -1
  531. package/src/components/Status/Status.vue +1 -1
  532. package/src/components/UploadImage/UploadImage.vue +2 -2
  533. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  534. package/src/modules/STYLES.MD +59 -77
  535. package/src/modules/TASK-CORE-TRANSFER.MD +62 -0
  536. package/src/modules/auth/views/components/pages/EnterPassword.vue +1 -1
  537. package/src/modules/auth/views/components/pages/Profile.vue +3 -3
  538. package/src/modules/auth/views/components/pages/ProfileEdit.vue +1 -1
  539. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  540. package/src/modules/backoffice/components/admin/Users.vue +1 -1
  541. package/src/modules/backoffice/components/pages/Dashboard.vue +3 -3
  542. package/src/modules/backoffice/components/partials/Sidebar.vue +2 -2
  543. package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
  544. package/src/modules/chats/routes/chats.routes.js +6 -4
  545. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  546. package/src/modules/community/components/layouts/Community.vue +2 -2
  547. package/src/modules/community/components/sections/Comment.vue +1 -1
  548. package/src/modules/community/components/sections/Comments.vue +1 -1
  549. package/src/modules/constructor/components/elements/Card.vue +1 -1
  550. package/src/modules/constructor/components/sections/Constructor.vue +2 -2
  551. package/src/modules/constructor/components/sections/Viewer.vue +1 -1
  552. package/src/modules/events/TASKS.MD +0 -0
  553. package/src/modules/events/components/blocks/CardEvent.vue +4 -4
  554. package/src/modules/events/components/pages/Event.vue +3 -3
  555. package/src/modules/events/components/pages/Events.vue +4 -4
  556. package/src/modules/events/components/sections/SelectDate.vue +2 -2
  557. package/src/modules/globals/TASK.MD +9 -102
  558. package/src/modules/globals/globals.client.js +0 -7
  559. package/src/modules/globals/globals.server.js +14 -1
  560. package/src/modules/globals/views/classes/globals.app.js +8 -4
  561. package/src/modules/globals/views/components/blocks/CardHeader.vue +4 -4
  562. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +1 -1
  563. package/src/modules/globals/views/components/elements/PhotoStack.vue +4 -4
  564. package/src/modules/globals/views/components/partials/CitySelection.vue +2 -2
  565. package/src/modules/globals/views/components/partials/Footer.centered.vue +6 -6
  566. package/src/modules/globals/views/components/partials/Footer.vue +31 -131
  567. package/src/modules/globals/views/components/partials/Header.vue +3 -3
  568. package/src/modules/globals/views/components/partials/LocationSelection.vue +1 -1
  569. package/src/modules/globals/views/components/partials/Navigation.vue +1 -1
  570. package/src/modules/globals/views/components/sections/SectionPageTitle.vue +2 -2
  571. package/src/modules/globals/views/components/sections/Walkthrough.vue +10 -10
  572. package/src/modules/governance/TASK-TRACKER.MD +192 -0
  573. package/src/modules/governance/controllers/routes/initiatives.routes.js +106 -11
  574. package/src/modules/governance/controllers/routes/milestones.routes.js +111 -0
  575. package/src/modules/governance/controllers/routes/tasks.routes.js +164 -11
  576. package/src/modules/governance/controllers/routes/votes.routes.js +50 -9
  577. package/src/modules/governance/controllers/routes/votings.routes.js +209 -12
  578. package/src/modules/governance/data/mockData.js +654 -0
  579. package/src/modules/governance/governance.server.js +6 -11
  580. package/src/modules/governance/middlewares/initiatives.verifier.js +197 -0
  581. package/src/modules/governance/middlewares/milestones.verifier.js +243 -0
  582. package/src/modules/governance/middlewares/tasks.verifier.js +224 -0
  583. package/src/modules/governance/middlewares/votes.verifier.js +115 -0
  584. package/src/modules/governance/middlewares/votings.verifier.js +237 -0
  585. package/src/modules/governance/models/initiative.model.js +14 -8
  586. package/src/modules/governance/models/task.model.js +13 -1
  587. package/src/modules/governance/models/voting.model.js +68 -2
  588. package/src/modules/governance/reactcode/.bolt/config.json +3 -0
  589. package/src/modules/governance/reactcode/.bolt/prompt +5 -0
  590. package/src/modules/governance/reactcode/eslint.config.js +28 -0
  591. package/src/modules/governance/reactcode/index.html +13 -0
  592. package/src/modules/governance/reactcode/package-lock.json +4229 -0
  593. package/src/modules/governance/reactcode/package.json +36 -0
  594. package/src/modules/governance/reactcode/postcss.config.js +6 -0
  595. package/src/modules/governance/reactcode/src/App.tsx +29 -0
  596. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +258 -0
  597. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +257 -0
  598. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +29 -0
  599. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +59 -0
  600. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +58 -0
  601. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +82 -0
  602. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +70 -0
  603. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +183 -0
  604. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +100 -0
  605. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +184 -0
  606. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +74 -0
  607. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +88 -0
  608. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +27 -0
  609. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +96 -0
  610. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +78 -0
  611. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +155 -0
  612. package/src/modules/governance/reactcode/src/data/mockData.ts +1465 -0
  613. package/src/modules/governance/reactcode/src/index.css +3 -0
  614. package/src/modules/governance/reactcode/src/main.tsx +10 -0
  615. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +569 -0
  616. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +171 -0
  617. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +182 -0
  618. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +178 -0
  619. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +256 -0
  620. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +529 -0
  621. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +191 -0
  622. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +86 -0
  623. package/src/modules/governance/reactcode/src/vite-env.d.ts +1 -0
  624. package/src/modules/governance/reactcode/tailwind.config.js +8 -0
  625. package/src/modules/governance/reactcode/tsconfig.app.json +24 -0
  626. package/src/modules/governance/reactcode/tsconfig.json +7 -0
  627. package/src/modules/governance/reactcode/tsconfig.node.json +22 -0
  628. package/src/modules/governance/reactcode/vite.config.ts +10 -0
  629. package/src/modules/governance/seed-governance.js +348 -0
  630. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +58 -7
  631. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +70 -0
  632. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +58 -7
  633. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +65 -7
  634. package/src/modules/governance/views/components/layouts/Governance.vue +23 -0
  635. package/src/modules/governance/views/components/pages/Governance.vue +44 -0
  636. package/src/modules/governance/views/components/pages/Initiative.vue +413 -8
  637. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +159 -0
  638. package/src/modules/governance/views/components/pages/Initiatives.vue +164 -6
  639. package/src/modules/governance/views/components/pages/Milestone.vue +170 -0
  640. package/src/modules/governance/views/components/pages/Roadmap.vue +238 -0
  641. package/src/modules/governance/views/components/pages/Task.vue +393 -14
  642. package/src/modules/governance/views/components/pages/Tasks.vue +164 -10
  643. package/src/modules/governance/views/components/pages/Voting.vue +167 -20
  644. package/src/modules/governance/views/components/pages/Votings.vue +86 -9
  645. package/src/modules/governance/views/components/partials/EmptyState.vue +41 -0
  646. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +73 -0
  647. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +35 -0
  648. package/src/modules/governance/views/components/partials/VoteForm.vue +100 -0
  649. package/src/modules/governance/views/components/partials/VotingResults.vue +127 -0
  650. package/src/modules/governance/views/router/goverance.router.js +52 -1
  651. package/src/modules/governance/views/store/initiatives.js +10 -7
  652. package/src/modules/governance/views/store/tasks.js +10 -7
  653. package/src/modules/governance/views/store/votes.js +10 -7
  654. package/src/modules/governance/views/store/votings.js +9 -6
  655. package/src/modules/inventory/components/forms/AdjustmentForm.vue +1 -1
  656. package/src/modules/landing/components/sections/Examples.vue +1 -1
  657. package/src/modules/landing/components/sections/SectionEarn.vue +2 -2
  658. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  659. package/src/modules/landing/components/sections/SectionFeaturesImages.vue +1 -1
  660. package/src/modules/landing/components/sections/SectionFocus.vue +1 -1
  661. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  662. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  663. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  664. package/src/modules/landing/components/sections/SectionJoinUs.vue +1 -1
  665. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  666. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +1 -1
  667. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +3 -3
  668. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +1 -1
  669. package/src/modules/music/components/forms/AlbumForm.vue +2 -2
  670. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  671. package/src/modules/music/components/forms/PlaylistForm.vue +6 -6
  672. package/src/modules/music/components/forms/TrackForm.vue +4 -4
  673. package/src/modules/music/components/pages/Album.vue +8 -8
  674. package/src/modules/music/components/pages/Artist.vue +10 -10
  675. package/src/modules/music/components/pages/MusicLibrary.vue +4 -4
  676. package/src/modules/music/components/pages/Playlist.vue +5 -5
  677. package/src/modules/music/components/pages/Track.vue +9 -9
  678. package/src/modules/music/music.server.js +0 -1
  679. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  680. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  681. package/src/modules/notifications/notifications.server.js +26 -20
  682. package/src/modules/orders/components/blocks/CardOrder.vue +7 -7
  683. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +1 -1
  684. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  685. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +2 -2
  686. package/src/modules/orders/components/elements/PriceTotal.vue +1 -1
  687. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  688. package/src/modules/orders/components/pages/OrderBackoffice.vue +7 -7
  689. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  690. package/src/modules/orders/components/partials/ShopCart.vue +1 -1
  691. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  692. package/src/modules/orders/components/sections/Succes.vue +1 -1
  693. package/src/modules/organizations/components/blocks/CardOrganization.vue +3 -3
  694. package/src/modules/organizations/components/blocks/EmptyState.vue +1 -1
  695. package/src/modules/organizations/components/blocks/Rating.vue +2 -2
  696. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +1 -1
  697. package/src/modules/organizations/components/forms/DepartmentForm.vue +2 -2
  698. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  699. package/src/modules/organizations/components/pages/Department.vue +2 -2
  700. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  701. package/src/modules/organizations/components/pages/Organization.new.vue +7 -7
  702. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  703. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +8 -8
  704. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  705. package/src/modules/products/components/blocks/CardCategory.vue +2 -2
  706. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  707. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  708. package/src/modules/products/components/blocks/ProductDiscounts.vue +2 -2
  709. package/src/modules/products/components/elements/Price.vue +4 -4
  710. package/src/modules/products/components/elements/QuantitySelector.vue +2 -2
  711. package/src/modules/products/components/forms/StockAuditForm.vue +1 -1
  712. package/src/modules/products/components/pages/Product.vue +2 -2
  713. package/src/modules/products/components/pages/Products.vue +4 -4
  714. package/src/modules/products/components/sections/EditAttributes.vue +3 -3
  715. package/src/modules/products/components/sections/EditDiscounts.vue +3 -3
  716. package/src/modules/products/components/sections/EditVariants.vue +5 -5
  717. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  718. package/src/modules/products/components/sections/HeroRecommendation.vue +2 -2
  719. package/src/modules/products/components/sections/ProductConfigurator.vue +1 -1
  720. package/src/modules/products/components/sections/ProductsRecommended.vue +1 -1
  721. package/src/modules/products/components/sections/SectionProduct.vue +2 -2
  722. package/src/modules/reports/components/sections/FormReport.vue +2 -2
  723. package/src/modules/spots/components/blocks/CardSpot.vue +5 -5
  724. package/src/modules/spots/components/pages/Spot.vue +2 -2
  725. package/src/modules/spots/components/pages/SpotEdit.vue +3 -3
  726. package/src/modules/wallet/views/components/pages/Wallet.vue +4 -4
  727. package/src/styles/base/all.scss +20 -0
  728. package/src/styles/config.scss +10 -9
  729. package/src/styles/typography.scss +13 -13
  730. package/dist/globals.observer-C_FYclgV.cjs +0 -78
  731. package/dist/globals.observer-MZsqaE6F.js +0 -79
  732. package/dist/main-8f945Ngn.cjs +0 -11
  733. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -2
  734. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +0 -1
  735. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +0 -2
  736. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  737. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  738. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +0 -1
  739. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +0 -1
  740. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.cjs +0 -2
  741. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.cjs.map +0 -1
  742. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.js +0 -2
  743. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.js.map +0 -1
  744. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +0 -1
  745. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +0 -1
  746. package/dist/tickets.controller-9zoaVPcx.cjs +0 -444
  747. package/dist/tickets.controller-C8sWVqbB.js +0 -428
  748. package/dist/wallet.server.cjs +0 -528
  749. package/dist/wallet.server.js +0 -511
  750. package/src/builder/modes/ssr.vite.dev.js +0 -180
  751. package/src/builder/ssr/ssr-render-html.vite.js +0 -35
  752. package/src/builder/vite/index.js +0 -13
  753. package/src/builder/vite/vite.config.api.js +0 -52
  754. package/src/builder/vite/vite.config.base.js +0 -110
  755. package/src/builder/vite/vite.config.spa.client.js +0 -81
  756. package/src/builder/vite/vite.config.ssr.client.js +0 -244
  757. package/src/builder/vite/vite.config.ssr.server.js +0 -74
  758. package/src/modules/governance/controllers/factories/initiatives.controller.js +0 -90
  759. package/src/modules/governance/controllers/factories/tasks.controller.js +0 -88
  760. package/src/modules/governance/controllers/factories/votes.controller.js +0 -64
  761. package/src/modules/governance/controllers/factories/votings.controller.js +0 -105
  762. package/src/modules/governance/views/store/projects.js +0 -148
  763. /package/src/modules/governance/{DESCRIPTION.MD → IGNORE-ITS FOR FUTURE-DESCRIPTION.MD} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"globals.client.cjs","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Functional imports (needed for initialize function)\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\nimport './views/utils/polyfills.js'; // Auto-apply polyfills\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport { moduleRegistry } from './views/classes/module-registry.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n console.log('[initializeGlobals] START');\n console.log('[initializeGlobals] Store before addStore:', store);\n \n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n\n // WebSocket инициализируется в client.js после гидратации\n // чтобы не блокировать главный поток\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n console.log('[initializeGlobals] Adding globals store with state:', storeGlobals.state);\n store.addStore('globals', storeGlobals);\n console.log('[initializeGlobals] Store after addStore:', store);\n console.log('[initializeGlobals] Store.globals exists:', !!store.globals);\n console.log('[initializeGlobals] END');\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n },\n};\n\n// Component re-exports (enables tree shaking)\nexport { default as layoutApp } from './views/components/layouts/App.vue';\nexport { default as layoutClient } from './views/components/layouts/Client.vue';\nexport { default as BlockSearch } from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\nexport { default as BottomNavigationBar } from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nexport { default as Header } from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nexport { default as Navigation } from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nexport { default as NavigationBar } from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nexport { default as Sidebar } from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nexport { default as Footer } from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\nexport { default as Walkthrough } from '@martyrs/src/modules/globals/views/components/sections/Walkthrough.vue';\n\n// Functional exports\nexport {\n appRenderer,\n getBrowserLocale,\n mixins,\n moduleRegistry,\n scrollBehavior,\n store,\n i18nManager,\n storeGlobals,\n websockets,\n};\n\n// Export client factory\nexport { createUniversalApp } from './views/classes/globals.app.js';\n\n// Re-export polyfills for documentation\nexport * from './views/utils/polyfills.js';\n\nexport default ModuleGlobals;\n"],"names":["store","en","ru","i18nManager","mixins.globalMixins","alertPlugin","popupAuthPlugin","datePickerPlugin","storeGlobals.state","storeGlobals"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAS,kBAAkB,KAAKA,QAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,IAAI,8CAA8CA,MAAK;AAE/D,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd,IAAIC,GAAAA;AAAAA,IACJ,IAAIC,GAAAA;AAAAA,IACJ,IAAI,CAAA;AAAA;AAAA,EACR;AAEEC,2BAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMC,mBAAmB;AAE7B,MAAI,IAAIC,oBAAW;AACnB,MAAI,IAAIC,yBAAe;AACvB,MAAI,IAAIC,yBAAgB;AAQxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,SAAAA,MAAmB,UAAU,OAAO;AAElE,UAAQ,IAAI,wDAAwDA,aAAkB;AACtF,EAAAR,OAAM,SAAS,WAAWS,OAAY;AACtC,UAAQ,IAAI,6CAA6CT,MAAK;AAC9D,UAAQ,IAAI,6CAA6C,CAAC,CAACA,OAAM,OAAO;AACxE,UAAQ,IAAI,yBAAyB;AAErC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMS;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"globals.client.cjs","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Functional imports (needed for initialize function)\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\nimport './views/utils/polyfills.js'; // Auto-apply polyfills\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport { moduleRegistry } from './views/classes/module-registry.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n\n // WebSocket инициализируется в client.js после гидратации\n // чтобы не блокировать главный поток\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n },\n};\n\n// Component re-exports (enables tree shaking)\nexport { default as layoutApp } from './views/components/layouts/App.vue';\nexport { default as layoutClient } from './views/components/layouts/Client.vue';\nexport { default as BlockSearch } from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\nexport { default as BottomNavigationBar } from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nexport { default as Header } from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nexport { default as Navigation } from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nexport { default as NavigationBar } from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nexport { default as Sidebar } from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nexport { default as Footer } from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\nexport { default as Walkthrough } from '@martyrs/src/modules/globals/views/components/sections/Walkthrough.vue';\n\n// Functional exports\nexport {\n appRenderer,\n getBrowserLocale,\n mixins,\n moduleRegistry,\n scrollBehavior,\n store,\n i18nManager,\n storeGlobals,\n websockets,\n};\n\n// Export client factory\nexport { createUniversalApp } from './views/classes/globals.app.js';\n\n// Re-export polyfills for documentation\nexport * from './views/utils/polyfills.js';\n\nexport default ModuleGlobals;\n"],"names":["store","en","ru","i18nManager","mixins.globalMixins","alertPlugin","popupAuthPlugin","datePickerPlugin","storeGlobals.state","storeGlobals"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAS,kBAAkB,KAAKA,QAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd,IAAIC,GAAAA;AAAAA,IACJ,IAAIC,GAAAA;AAAAA,IACJ,IAAI,CAAA;AAAA;AAAA,EACR;AAEEC,2BAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMC,mBAAmB;AAE7B,MAAI,IAAIC,oBAAW;AACnB,MAAI,IAAIC,yBAAe;AACvB,MAAI,IAAIC,yBAAgB;AAQxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,SAAAA,MAAmB,UAAU,OAAO;AAElE,EAAAR,OAAM,SAAS,WAAWS,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -27,8 +27,6 @@ import { default as default14 } from "./views/components/partials/Footer.vue.js"
27
27
  import { default as default15 } from "./views/components/sections/Walkthrough.vue.js";
28
28
  import { createUniversalApp } from "./views/classes/globals.app.js";
29
29
  function initializeGlobals(app, store, router, config, options = {}) {
30
- console.log("[initializeGlobals] START");
31
- console.log("[initializeGlobals] Store before addStore:", store);
32
30
  const route = options.route || "Home";
33
31
  const locales = {
34
32
  en,
@@ -60,11 +58,7 @@ function initializeGlobals(app, store, router, config, options = {}) {
60
58
  return next();
61
59
  });
62
60
  if (config && config.modules) state.options = config.modules;
63
- console.log("[initializeGlobals] Adding globals store with state:", state);
64
61
  store.addStore("globals", globals);
65
- console.log("[initializeGlobals] Store after addStore:", store);
66
- console.log("[initializeGlobals] Store.globals exists:", !!store.globals);
67
- console.log("[initializeGlobals] END");
68
62
  router.addRoute(route, {
69
63
  path: "404",
70
64
  name: "notfound",
@@ -1 +1 @@
1
- {"version":3,"file":"globals.client.js","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Functional imports (needed for initialize function)\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\nimport './views/utils/polyfills.js'; // Auto-apply polyfills\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport { moduleRegistry } from './views/classes/module-registry.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n console.log('[initializeGlobals] START');\n console.log('[initializeGlobals] Store before addStore:', store);\n \n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n\n // WebSocket инициализируется в client.js после гидратации\n // чтобы не блокировать главный поток\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n console.log('[initializeGlobals] Adding globals store with state:', storeGlobals.state);\n store.addStore('globals', storeGlobals);\n console.log('[initializeGlobals] Store after addStore:', store);\n console.log('[initializeGlobals] Store.globals exists:', !!store.globals);\n console.log('[initializeGlobals] END');\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n },\n};\n\n// Component re-exports (enables tree shaking)\nexport { default as layoutApp } from './views/components/layouts/App.vue';\nexport { default as layoutClient } from './views/components/layouts/Client.vue';\nexport { default as BlockSearch } from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\nexport { default as BottomNavigationBar } from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nexport { default as Header } from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nexport { default as Navigation } from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nexport { default as NavigationBar } from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nexport { default as Sidebar } from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nexport { default as Footer } from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\nexport { default as Walkthrough } from '@martyrs/src/modules/globals/views/components/sections/Walkthrough.vue';\n\n// Functional exports\nexport {\n appRenderer,\n getBrowserLocale,\n mixins,\n moduleRegistry,\n scrollBehavior,\n store,\n i18nManager,\n storeGlobals,\n websockets,\n};\n\n// Export client factory\nexport { createUniversalApp } from './views/classes/globals.app.js';\n\n// Re-export polyfills for documentation\nexport * from './views/utils/polyfills.js';\n\nexport default ModuleGlobals;\n"],"names":["mixins.globalMixins","storeGlobals.state","storeGlobals"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAS,kBAAkB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,IAAI,8CAA8C,KAAK;AAE/D,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,IAAI,CAAA;AAAA;AAAA,EACR;AAEE,cAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMA,YAAmB;AAE7B,MAAI,IAAI,WAAW;AACnB,MAAI,IAAI,eAAe;AACvB,MAAI,IAAI,gBAAgB;AAQxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,OAAmB,UAAU,OAAO;AAElE,UAAQ,IAAI,wDAAwDA,KAAkB;AACtF,QAAM,SAAS,WAAWC,OAAY;AACtC,UAAQ,IAAI,6CAA6C,KAAK;AAC9D,UAAQ,IAAI,6CAA6C,CAAC,CAAC,MAAM,OAAO;AACxE,UAAQ,IAAI,yBAAyB;AAErC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,EACA;AACA;"}
1
+ {"version":3,"file":"globals.client.js","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Functional imports (needed for initialize function)\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\nimport './views/utils/polyfills.js'; // Auto-apply polyfills\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\nimport { moduleRegistry } from './views/classes/module-registry.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n\n // WebSocket инициализируется в client.js после гидратации\n // чтобы не блокировать главный поток\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n },\n};\n\n// Component re-exports (enables tree shaking)\nexport { default as layoutApp } from './views/components/layouts/App.vue';\nexport { default as layoutClient } from './views/components/layouts/Client.vue';\nexport { default as BlockSearch } from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\nexport { default as BottomNavigationBar } from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nexport { default as Header } from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nexport { default as Navigation } from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nexport { default as NavigationBar } from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nexport { default as Sidebar } from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nexport { default as Footer } from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\nexport { default as Walkthrough } from '@martyrs/src/modules/globals/views/components/sections/Walkthrough.vue';\n\n// Functional exports\nexport {\n appRenderer,\n getBrowserLocale,\n mixins,\n moduleRegistry,\n scrollBehavior,\n store,\n i18nManager,\n storeGlobals,\n websockets,\n};\n\n// Export client factory\nexport { createUniversalApp } from './views/classes/globals.app.js';\n\n// Re-export polyfills for documentation\nexport * from './views/utils/polyfills.js';\n\nexport default ModuleGlobals;\n"],"names":["mixins.globalMixins","storeGlobals.state","storeGlobals"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAS,kBAAkB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,IAAI,CAAA;AAAA;AAAA,EACR;AAEE,cAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMA,YAAmB;AAE7B,MAAI,IAAI,WAAW;AACnB,MAAI,IAAI,eAAe;AACvB,MAAI,IAAI,gBAAgB;AAQxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,OAAmB,UAAU,OAAO;AAElE,QAAM,SAAS,WAAWC,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,EACA;AACA;"}
@@ -119,7 +119,8 @@ function createUniversalApp({
119
119
  await hooks.beforeInitialize(context);
120
120
  }
121
121
  await initCriticalModules();
122
- if (typeof window !== "undefined") {
122
+ const useWebsocket = config.globals?.websocket !== false;
123
+ if (useWebsocket && typeof window !== "undefined") {
123
124
  requestIdleCallback(() => {
124
125
  globalWebSocket.initialize({
125
126
  wsUrl: process.env.WSS_URL || void 0,
@@ -128,6 +129,8 @@ function createUniversalApp({
128
129
  pingInterval: 3e4
129
130
  });
130
131
  });
132
+ }
133
+ if (typeof window !== "undefined") {
131
134
  requestIdleCallback(() => {
132
135
  moduleRegistry.preloadModules(context);
133
136
  });
@@ -1 +1 @@
1
- {"version":3,"file":"globals.app.cjs","sources":["../../../../../../../src/modules/globals/views/classes/globals.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-registry.js').then(m => m.moduleRegistry);\n const getWebsockets = () => import('./globals.websocket.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n \n const [layoutApp, moduleRegistry, globalWebSocket, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n \n // Регистрация модуля globals первым\n moduleRegistry.register('globals', {\n loader: () => import('../../globals.client.js'),\n critical: true,\n priority: 'critical'\n });\n \n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleRegistry.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 // Основная функция создания приложения\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 const initCriticalModules = async () => {\n // Если это SSR гидратация - модули загрузятся в renderAndMountApp\n const isSSRHydration = typeof window !== 'undefined' && !process.env.MOBILE_APP;\n if (isSSRHydration) {\n return;\n }\n \n // Для SPA и сервера загружаем как обычно\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n \n for (const moduleName of criticalModules) {\n try {\n await moduleRegistry.load(moduleName, context);\n await moduleRegistry.initialize(moduleName, context);\n } catch (error) {\n console.error(`Failed to load critical module ${moduleName}:`, error);\n }\n }\n };\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n const originalPush = router.push.bind(router);\n const originalReplace = router.replace.bind(router);\n\n async function paintNow() {\n await nextTick(); // flush реактивки в DOM\n await new Promise(requestAnimationFrame); // кадр layout/style\n await new Promise(requestAnimationFrame); // кадр отрисовки\n // иногда в WebView помогает ещё макротаск\n await new Promise(r => setTimeout(r, 0));\n }\n\n router.push = async (...args) => {\n // Включаем лоадер\n store.globals.state.loading = true;\n \n // Даем браузеру отрисовать лоадер\n await paintNow();\n \n // Запускаем навигацию асинхронно, чтобы не блокировать UI\n setTimeout(() => {\n originalPush(...args);\n }, 0);\n \n // Возвращаем промис для совместимости\n return Promise.resolve();\n };\n\n // router.replace = async (...args) => {\n // // Включаем лоадер\n // store.globals.state.loading = true;\n \n // // Даем браузеру отрисовать лоадер\n // await paintNow();\n \n // // Запускаем навигацию асинхронно\n // setTimeout(() => {\n // originalReplace(...args);\n // }, 0);\n \n // return Promise.resolve();\n // };\n\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleRegistry.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleRegistry.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 // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\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.globals.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 \n // 1. Критические модули\n await initCriticalModules();\n \n // 2. WebSocket (отложим после гидратации)\n if (typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n globalWebSocket.initialize({\n wsUrl: process.env.WSS_URL || undefined,\n maxReconnectAttempts: 5,\n reconnectDelay: 3000,\n pingInterval: 30000,\n });\n });\n \n // 3. Предзагрузка важных модулей в фоне\n requestIdleCallback(() => {\n moduleRegistry.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 return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleRegistry,\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, moduleRegistry } = await createApp();\n \n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('./store.js');\n setSSRStore(store);\n }\n \n \n if (typeof window === 'undefined') {\n moduleRegistry.initialized.clear();\n moduleRegistry.modules.clear();\n moduleRegistry.loadingPromises.clear();\n }\n // // На сервере загружаем auth для SSR рендеринга (vue-app-renderer требует его)\n // const context = { app, store, router, config };\n // await moduleRegistry.load('globals', context);\n // await moduleRegistry.initialize('globals', context);\n // await moduleRegistry.load('auth', context);\n // await moduleRegistry.initialize('auth', context);\n // }\n \n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n \n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleRegistry.getModulesForRoute(url);\n \n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n \n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\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 // Это не реальные модули а метаданные для дегидратации\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n const allModulesForRoute = [...new Set([...criticalModules, ...currentRouteModules])];\n \n result.loadedModules = allModulesForRoute;\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, moduleRegistry }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleRegistry });\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":["module","createVueApp","createVueSSRApp","createHead","nextTick","moduleRegistry"],"mappings":"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"}
1
+ {"version":3,"file":"globals.app.cjs","sources":["../../../../../../../src/modules/globals/views/classes/globals.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-registry.js').then(m => m.moduleRegistry);\n const getWebsockets = () => import('./globals.websocket.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n \n const [layoutApp, moduleRegistry, globalWebSocket, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n \n // Регистрация модуля globals первым\n moduleRegistry.register('globals', {\n loader: () => import('../../globals.client.js'),\n critical: true,\n priority: 'critical'\n });\n \n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleRegistry.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 // Основная функция создания приложения\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 const initCriticalModules = async () => {\n // Если это SSR гидратация - модули загрузятся в renderAndMountApp\n const isSSRHydration = typeof window !== 'undefined' && !process.env.MOBILE_APP;\n if (isSSRHydration) {\n return;\n }\n \n // Для SPA и сервера загружаем как обычно\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n \n for (const moduleName of criticalModules) {\n try {\n await moduleRegistry.load(moduleName, context);\n await moduleRegistry.initialize(moduleName, context);\n } catch (error) {\n console.error(`Failed to load critical module ${moduleName}:`, error);\n }\n }\n };\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n const originalPush = router.push.bind(router);\n const originalReplace = router.replace.bind(router);\n\n async function paintNow() {\n await nextTick(); // flush реактивки в DOM\n await new Promise(requestAnimationFrame); // кадр layout/style\n await new Promise(requestAnimationFrame); // кадр отрисовки\n // иногда в WebView помогает ещё макротаск\n await new Promise(r => setTimeout(r, 0));\n }\n\n router.push = async (...args) => {\n // Включаем лоадер\n store.globals.state.loading = true;\n \n // Даем браузеру отрисовать лоадер\n await paintNow();\n \n // Запускаем навигацию асинхронно, чтобы не блокировать UI\n setTimeout(() => {\n originalPush(...args);\n }, 0);\n \n // Возвращаем промис для совместимости\n return Promise.resolve();\n };\n\n // router.replace = async (...args) => {\n // // Включаем лоадер\n // store.globals.state.loading = true;\n \n // // Даем браузеру отрисовать лоадер\n // await paintNow();\n \n // // Запускаем навигацию асинхронно\n // setTimeout(() => {\n // originalReplace(...args);\n // }, 0);\n \n // return Promise.resolve();\n // };\n\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleRegistry.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleRegistry.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 // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\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.globals.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 \n // 1. Критические модули\n await initCriticalModules();\n \n // 2. WebSocket (отложим после гидратации, только если включен)\n const useWebsocket = config.globals?.websocket !== false; // по умолчанию false\n\n if (useWebsocket && typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n globalWebSocket.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 moduleRegistry.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 return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleRegistry,\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, moduleRegistry } = await createApp();\n \n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('./store.js');\n setSSRStore(store);\n }\n \n \n if (typeof window === 'undefined') {\n moduleRegistry.initialized.clear();\n moduleRegistry.modules.clear();\n moduleRegistry.loadingPromises.clear();\n }\n // // На сервере загружаем auth для SSR рендеринга (vue-app-renderer требует его)\n // const context = { app, store, router, config };\n // await moduleRegistry.load('globals', context);\n // await moduleRegistry.initialize('globals', context);\n // await moduleRegistry.load('auth', context);\n // await moduleRegistry.initialize('auth', context);\n // }\n \n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n \n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleRegistry.getModulesForRoute(url);\n \n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n \n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\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 // Это не реальные модули а метаданные для дегидратации\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n const allModulesForRoute = [...new Set([...criticalModules, ...currentRouteModules])];\n \n result.loadedModules = allModulesForRoute;\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, moduleRegistry }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleRegistry });\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":["module","createVueApp","createVueSSRApp","createHead","nextTick","moduleRegistry"],"mappings":"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"}
@@ -117,7 +117,8 @@ function createUniversalApp({
117
117
  await hooks.beforeInitialize(context);
118
118
  }
119
119
  await initCriticalModules();
120
- if (typeof window !== "undefined") {
120
+ const useWebsocket = config.globals?.websocket !== false;
121
+ if (useWebsocket && typeof window !== "undefined") {
121
122
  requestIdleCallback(() => {
122
123
  globalWebSocket.initialize({
123
124
  wsUrl: process.env.WSS_URL || void 0,
@@ -126,6 +127,8 @@ function createUniversalApp({
126
127
  pingInterval: 3e4
127
128
  });
128
129
  });
130
+ }
131
+ if (typeof window !== "undefined") {
129
132
  requestIdleCallback(() => {
130
133
  moduleRegistry.preloadModules(context);
131
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"globals.app.js","sources":["../../../../../../../src/modules/globals/views/classes/globals.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-registry.js').then(m => m.moduleRegistry);\n const getWebsockets = () => import('./globals.websocket.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n \n const [layoutApp, moduleRegistry, globalWebSocket, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n \n // Регистрация модуля globals первым\n moduleRegistry.register('globals', {\n loader: () => import('../../globals.client.js'),\n critical: true,\n priority: 'critical'\n });\n \n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleRegistry.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 // Основная функция создания приложения\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 const initCriticalModules = async () => {\n // Если это SSR гидратация - модули загрузятся в renderAndMountApp\n const isSSRHydration = typeof window !== 'undefined' && !process.env.MOBILE_APP;\n if (isSSRHydration) {\n return;\n }\n \n // Для SPA и сервера загружаем как обычно\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n \n for (const moduleName of criticalModules) {\n try {\n await moduleRegistry.load(moduleName, context);\n await moduleRegistry.initialize(moduleName, context);\n } catch (error) {\n console.error(`Failed to load critical module ${moduleName}:`, error);\n }\n }\n };\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n const originalPush = router.push.bind(router);\n const originalReplace = router.replace.bind(router);\n\n async function paintNow() {\n await nextTick(); // flush реактивки в DOM\n await new Promise(requestAnimationFrame); // кадр layout/style\n await new Promise(requestAnimationFrame); // кадр отрисовки\n // иногда в WebView помогает ещё макротаск\n await new Promise(r => setTimeout(r, 0));\n }\n\n router.push = async (...args) => {\n // Включаем лоадер\n store.globals.state.loading = true;\n \n // Даем браузеру отрисовать лоадер\n await paintNow();\n \n // Запускаем навигацию асинхронно, чтобы не блокировать UI\n setTimeout(() => {\n originalPush(...args);\n }, 0);\n \n // Возвращаем промис для совместимости\n return Promise.resolve();\n };\n\n // router.replace = async (...args) => {\n // // Включаем лоадер\n // store.globals.state.loading = true;\n \n // // Даем браузеру отрисовать лоадер\n // await paintNow();\n \n // // Запускаем навигацию асинхронно\n // setTimeout(() => {\n // originalReplace(...args);\n // }, 0);\n \n // return Promise.resolve();\n // };\n\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleRegistry.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleRegistry.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 // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\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.globals.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 \n // 1. Критические модули\n await initCriticalModules();\n \n // 2. WebSocket (отложим после гидратации)\n if (typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n globalWebSocket.initialize({\n wsUrl: process.env.WSS_URL || undefined,\n maxReconnectAttempts: 5,\n reconnectDelay: 3000,\n pingInterval: 30000,\n });\n });\n \n // 3. Предзагрузка важных модулей в фоне\n requestIdleCallback(() => {\n moduleRegistry.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 return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleRegistry,\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, moduleRegistry } = await createApp();\n \n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('./store.js');\n setSSRStore(store);\n }\n \n \n if (typeof window === 'undefined') {\n moduleRegistry.initialized.clear();\n moduleRegistry.modules.clear();\n moduleRegistry.loadingPromises.clear();\n }\n // // На сервере загружаем auth для SSR рендеринга (vue-app-renderer требует его)\n // const context = { app, store, router, config };\n // await moduleRegistry.load('globals', context);\n // await moduleRegistry.initialize('globals', context);\n // await moduleRegistry.load('auth', context);\n // await moduleRegistry.initialize('auth', context);\n // }\n \n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n \n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleRegistry.getModulesForRoute(url);\n \n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n \n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\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 // Это не реальные модули а метаданные для дегидратации\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n const allModulesForRoute = [...new Set([...criticalModules, ...currentRouteModules])];\n \n result.loadedModules = allModulesForRoute;\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, moduleRegistry }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleRegistry });\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","moduleRegistry"],"mappings":"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"}
1
+ {"version":3,"file":"globals.app.js","sources":["../../../../../../../src/modules/globals/views/classes/globals.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-registry.js').then(m => m.moduleRegistry);\n const getWebsockets = () => import('./globals.websocket.js').then(m => m.default);\n const getAppRenderer = () => import('../utils/vue-app-renderer.js');\n \n // Асинхронная инициализация для избежания циклических зависимостей\n async function initializeApp() {\n // Создаем конфигурацию\n const config = await getConfig();\n const hooks = getHooks;\n \n const [layoutApp, moduleRegistry, globalWebSocket, appRenderer] = await Promise.all([\n getLayoutApp(),\n getModuleRegistry(),\n getWebsockets(),\n getAppRenderer()\n ]);\n \n // Регистрация модуля globals первым\n moduleRegistry.register('globals', {\n loader: () => import('../../globals.client.js'),\n critical: true,\n priority: 'critical'\n });\n \n // Регистрация модулей из config\n Object.entries(config.modules).forEach(([name, module]) => {\n if (module.loader) {\n moduleRegistry.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 // Основная функция создания приложения\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 const initCriticalModules = async () => {\n // Если это SSR гидратация - модули загрузятся в renderAndMountApp\n const isSSRHydration = typeof window !== 'undefined' && !process.env.MOBILE_APP;\n if (isSSRHydration) {\n return;\n }\n \n // Для SPA и сервера загружаем как обычно\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n \n for (const moduleName of criticalModules) {\n try {\n await moduleRegistry.load(moduleName, context);\n await moduleRegistry.initialize(moduleName, context);\n } catch (error) {\n console.error(`Failed to load critical module ${moduleName}:`, error);\n }\n }\n };\n \n // Router guard для загрузки модулей ДО навигации (только на клиенте)\n if (typeof window !== 'undefined') {\n const originalPush = router.push.bind(router);\n const originalReplace = router.replace.bind(router);\n\n async function paintNow() {\n await nextTick(); // flush реактивки в DOM\n await new Promise(requestAnimationFrame); // кадр layout/style\n await new Promise(requestAnimationFrame); // кадр отрисовки\n // иногда в WebView помогает ещё макротаск\n await new Promise(r => setTimeout(r, 0));\n }\n\n router.push = async (...args) => {\n // Включаем лоадер\n store.globals.state.loading = true;\n \n // Даем браузеру отрисовать лоадер\n await paintNow();\n \n // Запускаем навигацию асинхронно, чтобы не блокировать UI\n setTimeout(() => {\n originalPush(...args);\n }, 0);\n \n // Возвращаем промис для совместимости\n return Promise.resolve();\n };\n\n // router.replace = async (...args) => {\n // // Включаем лоадер\n // store.globals.state.loading = true;\n \n // // Даем браузеру отрисовать лоадер\n // await paintNow();\n \n // // Запускаем навигацию асинхронно\n // setTimeout(() => {\n // originalReplace(...args);\n // }, 0);\n \n // return Promise.resolve();\n // };\n\n router.beforeEach(async (to, from) => {\n // Получаем оригинальный путь ДО fallback редиректа на 404\n // Это критически важно для SSR гидратации вложенных роутов!\n const target = to.redirectedFrom || to;\n \n // Используем оригинальный путь для определения нужных модулей\n const requiredModules = moduleRegistry.getModulesForRoute(target.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleRegistry.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 // Загружаем и инициализируем модули\n for (const module of modulesToLoad) {\n try {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n } catch (error) {\n console.error(`Failed to load module ${module.name}:`, error);\n }\n }\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.globals.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 \n // 1. Критические модули\n await initCriticalModules();\n \n // 2. WebSocket (отложим после гидратации, только если включен)\n const useWebsocket = config.globals?.websocket !== false; // по умолчанию false\n\n if (useWebsocket && typeof window !== 'undefined') {\n // Откладываем инициализацию WebSocket после гидратации\n requestIdleCallback(() => {\n globalWebSocket.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 moduleRegistry.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 return {\n app,\n router,\n store,\n i18n,\n meta,\n moduleRegistry,\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, moduleRegistry } = await createApp();\n \n // Set SSR store for useStore calls\n if (typeof window === 'undefined') {\n const { setSSRStore } = await import('./store.js');\n setSSRStore(store);\n }\n \n \n if (typeof window === 'undefined') {\n moduleRegistry.initialized.clear();\n moduleRegistry.modules.clear();\n moduleRegistry.loadingPromises.clear();\n }\n // // На сервере загружаем auth для SSR рендеринга (vue-app-renderer требует его)\n // const context = { app, store, router, config };\n // await moduleRegistry.load('globals', context);\n // await moduleRegistry.initialize('globals', context);\n // await moduleRegistry.load('auth', context);\n // await moduleRegistry.initialize('auth', context);\n // }\n \n const context = {\n app,\n store,\n router,\n config,\n ssr: true,\n };\n \n // Для SSR загружаем модули для текущего маршрута\n const requiredModules = moduleRegistry.getModulesForRoute(url);\n \n // Собираем имена модулей которые нужны для текущего роута\n const currentRouteModules = [];\n \n // Загружаем необходимые модули для SSR\n for (const module of requiredModules) {\n await moduleRegistry.load(module.name, context);\n await moduleRegistry.initialize(module.name, context);\n currentRouteModules.push(module.name);\n }\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 // Это не реальные модули а метаданные для дегидратации\n const criticalModules = ['globals', 'auth', 'organizations', 'backoffice'];\n const allModulesForRoute = [...new Set([...criticalModules, ...currentRouteModules])];\n \n result.loadedModules = allModulesForRoute;\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, moduleRegistry }) => {\n // Хук ПОСЛЕ гидратации\n if (hooks.afterHydration) {\n hooks.afterHydration({ app, router, store, moduleRegistry });\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","moduleRegistry"],"mappings":"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"}
@@ -16,7 +16,7 @@ const _hoisted_1 = {
16
16
  class: "pd-b-zero"
17
17
  };
18
18
  const _hoisted_2 = { class: "w-100 flex-v-center flex-nojustify flex" };
19
- const _hoisted_3 = { class: "w-100 gap-thin p-medium t-nowrap flex-nowrap flex-v-center flex" };
19
+ const _hoisted_3 = { class: "w-100 gap-thin p-regular t-nowrap flex-nowrap flex-v-center flex" };
20
20
  const _hoisted_4 = ["src"];
21
21
  const _hoisted_5 = {
22
22
  key: 2,
@@ -80,7 +80,7 @@ const _sfc_main = {
80
80
  key: 0,
81
81
  loading: "lazy",
82
82
  src: (_ctx.FILE_SERVER_URL || "") + __props.owner.target.profile.photo,
83
- class: "radius-medium bg-white flex-child-default object-fit-cover i-semi",
83
+ class: "radius-medium bg-white flex-child-default object-fit-cover i-medium",
84
84
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => _ctx.$router.push({
85
85
  name: __props.owner.type === "user" ? "User Profile" : "Organization",
86
86
  params: {
@@ -90,7 +90,7 @@ const _sfc_main = {
90
90
  }, null, 8, _hoisted_4)) : vue.createCommentVNode("", true),
91
91
  !__props.owner.target?.profile?.photo && __props.type !== "short" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.owner.type === "user" ? PlaceholderUserpic.default : PlaceholderOrganizationPic.default), {
92
92
  key: 1,
93
- class: "radius-medium flex-child-default cursor-pointer i-semi",
93
+ class: "radius-medium flex-child-default cursor-pointer i-medium",
94
94
  onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => _ctx.$router.push({
95
95
  name: __props.owner.type === "user" ? "User Profile" : "Organization",
96
96
  params: {
@@ -145,7 +145,7 @@ const _sfc_main = {
145
145
  ]),
146
146
  __props.type !== "short" && __props.user && (__props.user !== __props.creator.target?._id || __props.actions && __props.actions.length > 0) ? (vue.openBlock(), vue.createBlock(Dropdown.default, {
147
147
  key: 3,
148
- label: { component: IconEllipsis.default, class: "t-transp i-regular" },
148
+ label: { component: IconEllipsis.default, class: "t-transp i-medium" },
149
149
  align: "right",
150
150
  class: "cursor-pointer z-index-2"
151
151
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.vue.cjs","sources":["../../../../../../../../src/modules/globals/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-medium 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-semi\" \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-semi\"\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/globals/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":["useRouter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiLgBA,cAAAA,UAAS;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.cjs","sources":["../../../../../../../../src/modules/globals/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-medium' }\"\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/globals/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":["useRouter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiLgBA,cAAAA,UAAS;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -14,7 +14,7 @@ const _hoisted_1 = {
14
14
  class: "pd-b-zero"
15
15
  };
16
16
  const _hoisted_2 = { class: "w-100 flex-v-center flex-nojustify flex" };
17
- const _hoisted_3 = { class: "w-100 gap-thin p-medium t-nowrap flex-nowrap flex-v-center flex" };
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,
@@ -78,7 +78,7 @@ const _sfc_main = {
78
78
  key: 0,
79
79
  loading: "lazy",
80
80
  src: (_ctx.FILE_SERVER_URL || "") + __props.owner.target.profile.photo,
81
- class: "radius-medium bg-white flex-child-default object-fit-cover i-semi",
81
+ class: "radius-medium bg-white flex-child-default object-fit-cover i-medium",
82
82
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.$router.push({
83
83
  name: __props.owner.type === "user" ? "User Profile" : "Organization",
84
84
  params: {
@@ -88,7 +88,7 @@ const _sfc_main = {
88
88
  }, null, 8, _hoisted_4)) : createCommentVNode("", true),
89
89
  !__props.owner.target?.profile?.photo && __props.type !== "short" ? (openBlock(), createBlock(resolveDynamicComponent(__props.owner.type === "user" ? PlaceholderUserpic : PlaceholderOrganizationPic), {
90
90
  key: 1,
91
- class: "radius-medium flex-child-default cursor-pointer i-semi",
91
+ class: "radius-medium flex-child-default cursor-pointer i-medium",
92
92
  onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.$router.push({
93
93
  name: __props.owner.type === "user" ? "User Profile" : "Organization",
94
94
  params: {
@@ -143,7 +143,7 @@ const _sfc_main = {
143
143
  ]),
144
144
  __props.type !== "short" && __props.user && (__props.user !== __props.creator.target?._id || __props.actions && __props.actions.length > 0) ? (openBlock(), createBlock(_sfc_main$3, {
145
145
  key: 3,
146
- label: { component: _sfc_main$4, class: "t-transp i-regular" },
146
+ label: { component: _sfc_main$4, class: "t-transp i-medium" },
147
147
  align: "right",
148
148
  class: "cursor-pointer z-index-2"
149
149
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.vue.js","sources":["../../../../../../../../src/modules/globals/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-medium 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-semi\" \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-semi\"\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/globals/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/globals/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-medium' }\"\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/globals/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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -158,7 +158,7 @@ const _sfc_main = {
158
158
  }, {
159
159
  default: vue.withCtx(() => [
160
160
  vue.createElementVNode("div", _hoisted_3, [
161
- vue.createVNode(IconShopcartAdd.default, { class: "i-semi icon-button-main" }),
161
+ vue.createVNode(IconShopcartAdd.default, { class: "i-medium icon-button-main" }),
162
162
  vue.createElementVNode("span", null, vue.toDisplayString(vue.unref(t)("addtoorder")), 1)
163
163
  ])
164
164
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"PopupDateSelector.vue.cjs","sources":["../../../../../../../../src/modules/globals/views/components/blocks/PopupDateSelector.vue"],"sourcesContent":["<template>\n <Popup @close-popup=\"closePopup\" :isPopupOpen=\"isOpen\" class=\"radius-medium tablet:w-min-30r pd-medium bg-white o-hidden\">\n <h5 class=\"w-100 t-center mn-b-small\">Select Rent Period</h5>\n <Calendar\n v-model:date=\"selectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n :availabilityData=\"availabilityData\"\n :showAvailability=\"false\"\n :lowAvailabilityThreshold=\"3\"\n :requiredQuantity=\"quantity\"\n class=\"bg-light radius-small\"\n :disabled=\"isLoading\"\n />\n <div v-if=\"isLoading\" class=\"flex w-100 mn-t-thin bg-light radius-small flex-center pd-thin mn-b-thin\">\n <Loader :centered=\"false\" />\n <span>Loading availability data...</span>\n </div>\n\n <div v-if=\"availabilityError\" class=\"pd-small t-error\">\n {{ availabilityError }}\n </div>\n \n <PriceTotal\n :totalPrice=\"totalAmount\"\n :currency=\"returnCurrency()\"\n :showFees=\"showFees\"\n :feesRate=\"feesRate\"\n :showVat=\"showVat\"\n :vatRate=\"vatRate\"\n />\n <Button\n @click=\"confirmSelection\"\n :disabled=\"!selectedDates.start || !selectedDates.end || isLoading || !isAvailable\"\n class=\"h-3r w-100 bg-main button\"\n >\n <div class=\"gap-thin flex flex-center flex-nowrap\">\n <IconShopcartAdd class=\"i-semi icon-button-main\" />\n <span>{{t('addtoorder')}}</span>\n </div>\n </Button>\n <Button\n v-if=\"showCancelButton\"\n @click=\"cancelSelection\"\n class=\"mn-t-thin h-3r w-100 t-white bg-red button\"\n >\n <span>{{ t('remove') }}</span>\n </Button>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue'\n// Import the store actions\nimport * as rents from '@martyrs/src/modules/rents/views/store/rents.store.js'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\n\nconst props = defineProps({\n productId: { type: String, required: true },\n variantId: { type: String, required: true },\n quantity: { type: Number, default: 1 },\n price: { type: Number, required: true },\n isOpen: { type: Boolean, required: true },\n showFees: { type: Boolean, default: false },\n showVat: { type: Boolean, default: false },\n feesRate: { type: Number, default: 0 },\n vatRate: { type: Number, default: 0 },\n onConfirm: { type: Function, required: true },\n onCancel: { type: Function, default: null },\n showCancelButton: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits(['close'])\nconst { t } = useI18n({\n messages: {\n en: {\n addtoorder: 'Add to Shopcart'\n }\n }\n})\nconst { returnCurrency } = useGlobalMixins()\n\nconst selectedDates = ref({ start: null, end: null })\nconst availabilityData = ref([])\nconst isLoading = ref(false)\nconst availabilityError = ref(null)\nconst isAvailable = ref(true)\n\n// Load availability data for the current month and next month\nasync function loadAvailabilityData() {\n if (!props.productId || !props.variantId) return;\n\n console.log('productId', props.productId)\n console.log('variantId', props.variantId)\n \n isLoading.value = true;\n availabilityError.value = null;\n \n try {\n const today = new Date();\n const start = new Date(today.getFullYear(), today.getMonth(), 1);\n const end = new Date(today.getFullYear(), today.getMonth() + 2, 0);\n \n const data = await rents.loadAvailability({\n productId: props.productId,\n variantId: props.variantId,\n startDate: start.toISOString().split('T')[0],\n endDate: end.toISOString().split('T')[0]\n });\n \n if (data && data.availability) {\n availabilityData.value = data.availability;\n }\n } catch (error) {\n console.error('Error loading availability data:', error);\n availabilityError.value = 'Failed to load availability data. Please try again.';\n } finally {\n isLoading.value = false;\n }\n}\n\n// Check availability for selected date range\nasync function checkAvailability() {\n if (!selectedDates.value.start || !selectedDates.value.end || !props.productId || !props.variantId) {\n isAvailable.value = false;\n return;\n }\n \n isLoading.value = true;\n availabilityError.value = null;\n \n try {\n const data = await rents.loadAvailability({\n productId: props.productId,\n variantId: props.variantId,\n startDate: selectedDates.value.start.split('T')[0],\n endDate: selectedDates.value.end.split('T')[0]\n });\n \n isAvailable.value = data.available >= props.quantity;\n \n if (!isAvailable.value) {\n availabilityError.value = `Insufficient quantity. Available: ${data.available}, needed: ${props.quantity}`;\n }\n } catch (error) {\n console.error('Error checking availability:', error);\n availabilityError.value = 'Failed to check availability. Please try again.';\n isAvailable.value = false;\n } finally {\n isLoading.value = false;\n }\n}\n\nfunction calculateDays(start, end) {\n if (!start || !end) return 0\n const startDate = new Date(start)\n const endDate = new Date(end)\n const diffTime = endDate - startDate\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1\n return diffDays > 0 ? diffDays : 0\n}\n\nconst numberOfDays = computed(() => calculateDays(selectedDates.value.start, selectedDates.value.end))\nconst totalAmount = computed(() => props.price * numberOfDays.value * props.quantity)\n\nfunction closePopup() {\n emit('close')\n}\n\nfunction confirmSelection() {\n if (selectedDates.value.start && selectedDates.value.end && isAvailable.value) {\n props.onConfirm(selectedDates.value)\n closePopup()\n }\n}\n\nfunction cancelSelection() {\n if (props.onCancel) {\n props.onCancel()\n }\n // Эмитим close-popup чтобы плагин закрыл попап\n emit('close-popup')\n}\n\nwatch([() => selectedDates.value.start, () => selectedDates.value.end], ([newStart, newEnd]) => {\n if (newStart && newEnd) {\n // checkAvailability();\n }\n}, { immediate: false });\n\nwatch(() => props.isOpen, (newVal) => {\n if (newVal) {\n loadAvailabilityData();\n } else {\n selectedDates.value = { start: null, end: null };\n availabilityError.value = null;\n }\n}, { immediate: true });\n\nonMounted(() => {\n if (props.isOpen) {\n loadAvailabilityData();\n }\n});\n</script>"],"names":["useI18n","useGlobalMixins","ref","rents.loadAvailability","computed","watch","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"PopupDateSelector.vue.cjs","sources":["../../../../../../../../src/modules/globals/views/components/blocks/PopupDateSelector.vue"],"sourcesContent":["<template>\n <Popup @close-popup=\"closePopup\" :isPopupOpen=\"isOpen\" class=\"radius-medium tablet:w-min-30r pd-medium bg-white o-hidden\">\n <h5 class=\"w-100 t-center mn-b-small\">Select Rent Period</h5>\n <Calendar\n v-model:date=\"selectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n :availabilityData=\"availabilityData\"\n :showAvailability=\"false\"\n :lowAvailabilityThreshold=\"3\"\n :requiredQuantity=\"quantity\"\n class=\"bg-light radius-small\"\n :disabled=\"isLoading\"\n />\n <div v-if=\"isLoading\" class=\"flex w-100 mn-t-thin bg-light radius-small flex-center pd-thin mn-b-thin\">\n <Loader :centered=\"false\" />\n <span>Loading availability data...</span>\n </div>\n\n <div v-if=\"availabilityError\" class=\"pd-small t-error\">\n {{ availabilityError }}\n </div>\n \n <PriceTotal\n :totalPrice=\"totalAmount\"\n :currency=\"returnCurrency()\"\n :showFees=\"showFees\"\n :feesRate=\"feesRate\"\n :showVat=\"showVat\"\n :vatRate=\"vatRate\"\n />\n <Button\n @click=\"confirmSelection\"\n :disabled=\"!selectedDates.start || !selectedDates.end || isLoading || !isAvailable\"\n class=\"h-3r w-100 bg-main button\"\n >\n <div class=\"gap-thin flex flex-center flex-nowrap\">\n <IconShopcartAdd class=\"i-medium icon-button-main\" />\n <span>{{t('addtoorder')}}</span>\n </div>\n </Button>\n <Button\n v-if=\"showCancelButton\"\n @click=\"cancelSelection\"\n class=\"mn-t-thin h-3r w-100 t-white bg-red button\"\n >\n <span>{{ t('remove') }}</span>\n </Button>\n </Popup>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue'\n// Import the store actions\nimport * as rents from '@martyrs/src/modules/rents/views/store/rents.store.js'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\n\nconst props = defineProps({\n productId: { type: String, required: true },\n variantId: { type: String, required: true },\n quantity: { type: Number, default: 1 },\n price: { type: Number, required: true },\n isOpen: { type: Boolean, required: true },\n showFees: { type: Boolean, default: false },\n showVat: { type: Boolean, default: false },\n feesRate: { type: Number, default: 0 },\n vatRate: { type: Number, default: 0 },\n onConfirm: { type: Function, required: true },\n onCancel: { type: Function, default: null },\n showCancelButton: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits(['close'])\nconst { t } = useI18n({\n messages: {\n en: {\n addtoorder: 'Add to Shopcart'\n }\n }\n})\nconst { returnCurrency } = useGlobalMixins()\n\nconst selectedDates = ref({ start: null, end: null })\nconst availabilityData = ref([])\nconst isLoading = ref(false)\nconst availabilityError = ref(null)\nconst isAvailable = ref(true)\n\n// Load availability data for the current month and next month\nasync function loadAvailabilityData() {\n if (!props.productId || !props.variantId) return;\n\n console.log('productId', props.productId)\n console.log('variantId', props.variantId)\n \n isLoading.value = true;\n availabilityError.value = null;\n \n try {\n const today = new Date();\n const start = new Date(today.getFullYear(), today.getMonth(), 1);\n const end = new Date(today.getFullYear(), today.getMonth() + 2, 0);\n \n const data = await rents.loadAvailability({\n productId: props.productId,\n variantId: props.variantId,\n startDate: start.toISOString().split('T')[0],\n endDate: end.toISOString().split('T')[0]\n });\n \n if (data && data.availability) {\n availabilityData.value = data.availability;\n }\n } catch (error) {\n console.error('Error loading availability data:', error);\n availabilityError.value = 'Failed to load availability data. Please try again.';\n } finally {\n isLoading.value = false;\n }\n}\n\n// Check availability for selected date range\nasync function checkAvailability() {\n if (!selectedDates.value.start || !selectedDates.value.end || !props.productId || !props.variantId) {\n isAvailable.value = false;\n return;\n }\n \n isLoading.value = true;\n availabilityError.value = null;\n \n try {\n const data = await rents.loadAvailability({\n productId: props.productId,\n variantId: props.variantId,\n startDate: selectedDates.value.start.split('T')[0],\n endDate: selectedDates.value.end.split('T')[0]\n });\n \n isAvailable.value = data.available >= props.quantity;\n \n if (!isAvailable.value) {\n availabilityError.value = `Insufficient quantity. Available: ${data.available}, needed: ${props.quantity}`;\n }\n } catch (error) {\n console.error('Error checking availability:', error);\n availabilityError.value = 'Failed to check availability. Please try again.';\n isAvailable.value = false;\n } finally {\n isLoading.value = false;\n }\n}\n\nfunction calculateDays(start, end) {\n if (!start || !end) return 0\n const startDate = new Date(start)\n const endDate = new Date(end)\n const diffTime = endDate - startDate\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1\n return diffDays > 0 ? diffDays : 0\n}\n\nconst numberOfDays = computed(() => calculateDays(selectedDates.value.start, selectedDates.value.end))\nconst totalAmount = computed(() => props.price * numberOfDays.value * props.quantity)\n\nfunction closePopup() {\n emit('close')\n}\n\nfunction confirmSelection() {\n if (selectedDates.value.start && selectedDates.value.end && isAvailable.value) {\n props.onConfirm(selectedDates.value)\n closePopup()\n }\n}\n\nfunction cancelSelection() {\n if (props.onCancel) {\n props.onCancel()\n }\n // Эмитим close-popup чтобы плагин закрыл попап\n emit('close-popup')\n}\n\nwatch([() => selectedDates.value.start, () => selectedDates.value.end], ([newStart, newEnd]) => {\n if (newStart && newEnd) {\n // checkAvailability();\n }\n}, { immediate: false });\n\nwatch(() => props.isOpen, (newVal) => {\n if (newVal) {\n loadAvailabilityData();\n } else {\n selectedDates.value = { start: null, end: null };\n availabilityError.value = null;\n }\n}, { immediate: true });\n\nonMounted(() => {\n if (props.isOpen) {\n loadAvailabilityData();\n }\n});\n</script>"],"names":["useI18n","useGlobalMixins","ref","rents.loadAvailability","computed","watch","onMounted"],"mappings":"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"}
@@ -156,7 +156,7 @@ const _sfc_main = {
156
156
  }, {
157
157
  default: withCtx(() => [
158
158
  createElementVNode("div", _hoisted_3, [
159
- createVNode(_sfc_main$4, { class: "i-semi icon-button-main" }),
159
+ createVNode(_sfc_main$4, { class: "i-medium icon-button-main" }),
160
160
  createElementVNode("span", null, toDisplayString(unref(t)("addtoorder")), 1)
161
161
  ])
162
162
  ]),