@ozdao/martyrs 0.2.547 → 0.2.549

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 (837) 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/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
  60. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
  61. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  62. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  63. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +1 -1
  64. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -1
  65. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.cjs +1 -1
  66. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
  67. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
  68. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  69. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  70. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  71. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  72. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  73. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +2 -2
  74. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  75. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  76. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  77. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs +1 -1
  78. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  79. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  80. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  81. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs +2 -2
  82. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.cjs.map +1 -1
  83. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +2 -2
  84. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -1
  85. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  86. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  87. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  88. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  89. package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs +1 -1
  90. package/dist/martyrs/src/components/Menu/MenuItem.vue.cjs.map +1 -1
  91. package/dist/martyrs/src/components/Menu/MenuItem.vue.js +1 -1
  92. package/dist/martyrs/src/components/Menu/MenuItem.vue.js.map +1 -1
  93. package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
  94. package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
  95. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  96. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  97. package/dist/martyrs/src/components/Status/Snack.vue.cjs +1 -1
  98. package/dist/martyrs/src/components/Status/Snack.vue.cjs.map +1 -1
  99. package/dist/martyrs/src/components/Status/Snack.vue.js +1 -1
  100. package/dist/martyrs/src/components/Status/Snack.vue.js.map +1 -1
  101. package/dist/martyrs/src/components/Status/Status.vue.cjs +1 -1
  102. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  103. package/dist/martyrs/src/components/Status/Status.vue.js +1 -1
  104. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  105. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs +3 -3
  106. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +1 -1
  107. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +3 -3
  108. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  111. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  112. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  114. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  117. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +7 -7
  118. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  119. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +7 -7
  120. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  123. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  124. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  127. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  129. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  131. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  133. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
  135. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  136. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  139. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +3 -3
  140. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +3 -3
  142. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +2 -2
  144. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
  145. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +2 -2
  146. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
  148. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  151. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  152. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  153. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +3 -3
  154. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  155. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  156. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  157. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  159. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +2 -2
  160. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  162. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  166. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +2 -2
  168. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
  170. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  173. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +2 -2
  174. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs.map +1 -1
  175. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +2 -2
  176. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  177. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.js +1 -1
  180. package/dist/martyrs/src/modules/constructor/components/sections/Viewer.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +4 -4
  182. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +4 -4
  184. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  186. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  187. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  189. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +5 -5
  190. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  191. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +5 -5
  192. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  193. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +4 -4
  194. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
  195. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +4 -4
  196. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs +2 -2
  198. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.cjs.map +1 -1
  199. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +2 -2
  200. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  202. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  203. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +4 -1
  204. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +4 -1
  206. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  207. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  209. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +5 -5
  210. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  211. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +5 -5
  212. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  215. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  216. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/globals/views/components/elements/PhotoStack.vue.cjs +4 -4
  218. package/dist/martyrs/src/modules/globals/views/components/elements/PhotoStack.vue.js +4 -4
  219. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.cjs +2 -2
  220. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.js +2 -2
  222. package/dist/martyrs/src/modules/globals/views/components/partials/CitySelection.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +6 -6
  224. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +6 -6
  226. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +4 -4
  228. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +4 -4
  230. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs.map +1 -1
  233. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +1 -1
  234. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +3 -3
  236. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +3 -3
  238. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +1 -1
  240. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +1 -1
  241. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +2 -2
  242. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs.map +1 -1
  243. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +2 -2
  244. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +10 -10
  246. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +10 -10
  248. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +3 -3
  250. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs.map +1 -1
  251. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  252. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +2 -2
  254. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  255. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +2 -2
  256. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  257. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +3 -3
  258. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
  259. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs +3 -3
  260. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.cjs.map +1 -1
  261. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +3 -3
  262. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.cjs +2 -2
  264. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.cjs.map +1 -1
  265. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js +2 -2
  266. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +2 -2
  268. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  270. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.cjs +1 -1
  272. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  274. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.cjs.map +1 -1
  277. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js +1 -1
  278. package/dist/martyrs/src/modules/landing/components/sections/SectionJoinUs.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs +3 -3
  280. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.cjs.map +1 -1
  281. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +3 -3
  282. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +1 -1
  284. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  285. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +1 -1
  286. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +4 -4
  288. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  289. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +4 -4
  290. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
  292. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs.map +1 -1
  293. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  294. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +4 -4
  296. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs.map +1 -1
  297. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +4 -4
  298. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  299. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +6 -6
  300. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs.map +1 -1
  301. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +6 -6
  302. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  303. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +7 -7
  304. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs.map +1 -1
  305. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +7 -7
  306. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  307. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +6 -6
  308. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs.map +1 -1
  309. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +6 -6
  310. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +9 -9
  312. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  313. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +9 -9
  314. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +10 -10
  316. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
  317. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +10 -10
  318. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +4 -4
  320. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
  321. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +4 -4
  322. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +6 -6
  324. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  325. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +6 -6
  326. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +10 -10
  328. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  329. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +10 -10
  330. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  331. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +2 -2
  332. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
  333. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +2 -2
  334. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  335. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +2 -2
  336. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  337. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +2 -2
  338. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  339. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.cjs +8 -8
  340. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.cjs.map +1 -1
  341. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +8 -8
  342. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +1 -1
  344. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +1 -1
  346. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +4 -4
  348. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs.map +1 -1
  349. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +4 -4
  350. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  351. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +2 -2
  352. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -1
  353. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +2 -2
  354. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  355. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.cjs +1 -1
  356. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.cjs.map +1 -1
  357. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +1 -1
  358. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +2 -2
  360. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  361. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +2 -2
  362. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  363. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +9 -9
  364. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  365. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +9 -9
  366. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  367. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  368. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  369. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +1 -1
  370. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  371. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +1 -1
  372. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.cjs +1 -1
  374. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.cjs.map +1 -1
  375. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  376. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  377. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
  378. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  379. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  380. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  381. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.cjs +1 -1
  382. package/dist/martyrs/src/modules/orders/components/sections/Succes.vue.js +1 -1
  383. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +5 -5
  384. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +5 -5
  385. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +3 -3
  386. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs.map +1 -1
  387. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +3 -3
  388. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  389. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.cjs +1 -1
  390. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.js +1 -1
  391. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.cjs +2 -2
  392. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +2 -2
  393. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  394. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -1
  395. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  396. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  397. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +3 -3
  398. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -1
  399. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +3 -3
  400. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  401. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +2 -2
  402. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -1
  403. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  404. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  405. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +7 -7
  406. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  407. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +7 -7
  408. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +5 -5
  410. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +5 -5
  411. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +9 -9
  412. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  413. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -9
  414. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  415. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +9 -9
  416. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
  417. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +9 -9
  418. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
  419. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  420. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  421. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  422. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  423. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +3 -3
  424. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs.map +1 -1
  425. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  426. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  427. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  428. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  429. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  430. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  431. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  432. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  433. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  434. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  435. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +2 -2
  436. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  437. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +2 -2
  438. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  439. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
  440. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs.map +1 -1
  441. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  442. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  443. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +4 -4
  444. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  445. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +4 -4
  446. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +3 -3
  448. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  449. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +3 -3
  450. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -4
  452. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  453. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +4 -4
  454. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  455. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +2 -2
  456. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -1
  457. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +2 -2
  458. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  459. package/dist/martyrs/src/modules/products/components/elements/{THC.vue2.cjs → THC.vue.cjs} +2 -2
  460. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +1 -0
  461. package/dist/martyrs/src/modules/products/components/elements/{THC.vue2.js → THC.vue.js} +2 -2
  462. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +1 -0
  463. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +3 -3
  464. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -3
  465. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  466. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  467. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  468. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  469. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  470. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  471. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +5 -5
  472. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  473. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  474. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  475. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +4 -4
  476. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs.map +1 -1
  477. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +4 -4
  478. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  479. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +5 -5
  480. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs.map +1 -1
  481. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +5 -5
  482. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  483. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +7 -7
  484. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  485. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +7 -7
  486. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  487. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +3 -3
  488. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
  489. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +3 -3
  490. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  491. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs +2 -2
  492. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
  493. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js +2 -2
  494. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
  495. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  496. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
  497. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  498. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  499. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  500. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  501. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  502. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  503. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +3 -3
  504. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
  505. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  506. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  507. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  508. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  509. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  510. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  511. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +3 -3
  512. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
  513. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +3 -3
  514. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  515. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +6 -6
  516. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
  517. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +6 -6
  518. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  519. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +2 -2
  520. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  521. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +2 -2
  522. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  523. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +3 -3
  524. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs.map +1 -1
  525. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +3 -3
  526. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  527. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +5 -5
  528. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
  529. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +5 -5
  530. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  531. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
  532. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  533. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  534. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  535. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +2 -2
  536. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  537. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +28 -6
  538. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs.map +1 -1
  539. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +6 -6
  540. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +1 -1
  541. package/dist/martyrs.cjs.js +1 -1
  542. package/dist/martyrs.css +1 -1
  543. package/dist/martyrs.es.js +1 -1
  544. package/dist/{metadata.schema-RlxNv46L.cjs → metadata.schema-BGykn-_r.cjs} +2 -2
  545. package/dist/{metadata.schema-CWmcDJN7.js → metadata.schema-CIRR_WQ-.js} +2 -2
  546. package/dist/music.server.cjs +30 -33
  547. package/dist/music.server.js +30 -33
  548. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +2 -2
  549. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -1
  550. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js +2 -2
  551. package/dist/node_modules/.pnpm/@vue_shared@3.5.21/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -1
  552. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.cjs +13 -13
  553. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.cjs.map +1 -1
  554. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js +13 -13
  555. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js.map +1 -1
  556. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.cjs +3 -3
  557. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.cjs.map +1 -1
  558. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.js +3 -3
  559. package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
  560. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs +10 -10
  561. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs.map +1 -1
  562. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js +10 -10
  563. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js.map +1 -1
  564. 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
  565. 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
  566. 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
  567. 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
  568. package/dist/notifications.server.cjs +22 -18
  569. package/dist/notifications.server.js +22 -18
  570. package/dist/orders.server.cjs +10 -10
  571. package/dist/orders.server.js +10 -10
  572. package/dist/organizations.server.cjs +13 -13
  573. package/dist/organizations.server.js +13 -13
  574. package/dist/{ownership.schema-D1p5XSpt.cjs → ownership.schema-CRYdbemm.cjs} +2 -2
  575. package/dist/{ownership.schema-BqH4v5vH.js → ownership.schema-fwwDf_e5.js} +2 -2
  576. package/dist/pages.server.cjs +2 -2
  577. package/dist/pages.server.js +2 -2
  578. package/dist/products.server.cjs +13 -13
  579. package/dist/products.server.js +13 -13
  580. package/dist/{profile.schema-BGAe5VN5.js → profile.schema-CjLOfG7b.js} +2 -2
  581. package/dist/{profile.schema-pidHrksV.cjs → profile.schema-l0Dk4Ptu.cjs} +2 -2
  582. package/dist/rents.server.cjs +2 -2
  583. package/dist/rents.server.js +2 -2
  584. package/dist/reports.server.cjs +2 -2
  585. package/dist/reports.server.js +2 -2
  586. package/dist/{socials.schema-CtpSF9dE.cjs → socials.schema-CqEHax2w.cjs} +2 -2
  587. package/dist/{socials.schema-BOZV82Mp.js → socials.schema-DxnnaBgO.js} +2 -2
  588. package/dist/spots.server.cjs +4 -4
  589. package/dist/spots.server.js +4 -4
  590. package/dist/style.css +75 -76
  591. package/dist/{web-BkaOiiSn.js → web-8cpb2Zat.js} +1 -1
  592. package/dist/{web-CROHFHoW.cjs → web-B0k809Uc.cjs} +1 -1
  593. package/package.json +8 -12
  594. package/src/builder/builder.js +0 -6
  595. package/src/components/Button/Button.vue +0 -1
  596. package/src/components/Calendar/Calendar.vue +2 -2
  597. package/src/components/Chips/Chips.vue +1 -1
  598. package/src/components/Countdown/Countdown.vue +4 -4
  599. package/src/components/EmptyState/EmptyState.vue +1 -1
  600. package/src/components/FieldBig/FieldBig.vue +1 -1
  601. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  602. package/src/components/LocationMarker/LocationMarker.vue +2 -2
  603. package/src/components/Menu/MenuItem.vue +1 -1
  604. package/src/components/Status/Snack.vue +1 -1
  605. package/src/components/Status/Status.vue +1 -1
  606. package/src/components/UploadImage/UploadImage.vue +2 -2
  607. package/src/configurator/components/layouts/layoutConfigurator.vue +1 -1
  608. package/src/modules/STYLES.MD +59 -77
  609. package/src/modules/TASK-CORE-TRANSFER.MD +62 -0
  610. package/src/modules/auth/views/components/pages/EnterPassword.vue +1 -1
  611. package/src/modules/auth/views/components/pages/Profile.vue +3 -3
  612. package/src/modules/auth/views/components/pages/ProfileEdit.vue +1 -1
  613. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  614. package/src/modules/backoffice/components/admin/Users.vue +1 -1
  615. package/src/modules/backoffice/components/pages/Dashboard.vue +3 -3
  616. package/src/modules/backoffice/components/partials/Sidebar.vue +2 -2
  617. package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
  618. package/src/modules/chats/routes/chats.routes.js +6 -4
  619. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  620. package/src/modules/community/components/layouts/Community.vue +2 -2
  621. package/src/modules/community/components/sections/Comment.vue +1 -1
  622. package/src/modules/community/components/sections/Comments.vue +1 -1
  623. package/src/modules/constructor/components/elements/Card.vue +1 -1
  624. package/src/modules/constructor/components/sections/Constructor.vue +2 -2
  625. package/src/modules/constructor/components/sections/Viewer.vue +1 -1
  626. package/src/modules/events/TASKS.MD +0 -0
  627. package/src/modules/events/components/blocks/CardEvent.vue +4 -4
  628. package/src/modules/events/components/pages/Event.vue +3 -3
  629. package/src/modules/events/components/pages/Events.vue +4 -4
  630. package/src/modules/events/components/sections/SelectDate.vue +2 -2
  631. package/src/modules/globals/globals.server.js +14 -1
  632. package/src/modules/globals/views/classes/globals.app.js +8 -4
  633. package/src/modules/globals/views/components/blocks/CardHeader.vue +4 -4
  634. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +1 -1
  635. package/src/modules/globals/views/components/elements/PhotoStack.vue +4 -4
  636. package/src/modules/globals/views/components/partials/CitySelection.vue +2 -2
  637. package/src/modules/globals/views/components/partials/Footer.centered.vue +6 -6
  638. package/src/modules/globals/views/components/partials/Footer.vue +6 -6
  639. package/src/modules/globals/views/components/partials/Header.vue +3 -3
  640. package/src/modules/globals/views/components/partials/LocationSelection.vue +1 -1
  641. package/src/modules/globals/views/components/partials/Navigation.vue +1 -1
  642. package/src/modules/globals/views/components/sections/SectionPageTitle.vue +2 -2
  643. package/src/modules/globals/views/components/sections/Walkthrough.vue +10 -10
  644. package/src/modules/governance/TASK-TRACKER.MD +192 -0
  645. package/src/modules/governance/controllers/routes/initiatives.routes.js +106 -11
  646. package/src/modules/governance/controllers/routes/milestones.routes.js +111 -0
  647. package/src/modules/governance/controllers/routes/tasks.routes.js +164 -11
  648. package/src/modules/governance/controllers/routes/votes.routes.js +50 -9
  649. package/src/modules/governance/controllers/routes/votings.routes.js +209 -12
  650. package/src/modules/governance/data/mockData.js +654 -0
  651. package/src/modules/governance/governance.server.js +6 -11
  652. package/src/modules/governance/middlewares/initiatives.verifier.js +197 -0
  653. package/src/modules/governance/middlewares/milestones.verifier.js +243 -0
  654. package/src/modules/governance/middlewares/tasks.verifier.js +224 -0
  655. package/src/modules/governance/middlewares/votes.verifier.js +115 -0
  656. package/src/modules/governance/middlewares/votings.verifier.js +237 -0
  657. package/src/modules/governance/models/initiative.model.js +14 -8
  658. package/src/modules/governance/models/task.model.js +13 -1
  659. package/src/modules/governance/models/voting.model.js +68 -2
  660. package/src/modules/governance/reactcode/.bolt/config.json +3 -0
  661. package/src/modules/governance/reactcode/.bolt/prompt +5 -0
  662. package/src/modules/governance/reactcode/eslint.config.js +28 -0
  663. package/src/modules/governance/reactcode/index.html +13 -0
  664. package/src/modules/governance/reactcode/package-lock.json +4229 -0
  665. package/src/modules/governance/reactcode/package.json +36 -0
  666. package/src/modules/governance/reactcode/postcss.config.js +6 -0
  667. package/src/modules/governance/reactcode/src/App.tsx +29 -0
  668. package/src/modules/governance/reactcode/src/components/CreateInitiativeForm.tsx +258 -0
  669. package/src/modules/governance/reactcode/src/components/CreateMilestoneForm.tsx +257 -0
  670. package/src/modules/governance/reactcode/src/components/EmptyState.tsx +29 -0
  671. package/src/modules/governance/reactcode/src/components/InitiativeCard.tsx +59 -0
  672. package/src/modules/governance/reactcode/src/components/LinkedEntityCard.tsx +58 -0
  673. package/src/modules/governance/reactcode/src/components/MilestoneCard.tsx +82 -0
  674. package/src/modules/governance/reactcode/src/components/ProductRepositories.tsx +70 -0
  675. package/src/modules/governance/reactcode/src/components/ProductSummary.tsx +183 -0
  676. package/src/modules/governance/reactcode/src/components/ProductTeam.tsx +100 -0
  677. package/src/modules/governance/reactcode/src/components/ProposeTaskForm.tsx +184 -0
  678. package/src/modules/governance/reactcode/src/components/TaskAssignForm.tsx +74 -0
  679. package/src/modules/governance/reactcode/src/components/TaskCard.tsx +88 -0
  680. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +27 -0
  681. package/src/modules/governance/reactcode/src/components/VoteForm.tsx +96 -0
  682. package/src/modules/governance/reactcode/src/components/VotingCard.tsx +78 -0
  683. package/src/modules/governance/reactcode/src/components/VotingResults.tsx +155 -0
  684. package/src/modules/governance/reactcode/src/data/mockData.ts +1465 -0
  685. package/src/modules/governance/reactcode/src/index.css +3 -0
  686. package/src/modules/governance/reactcode/src/main.tsx +10 -0
  687. package/src/modules/governance/reactcode/src/pages/InitiativeDetailPage.tsx +569 -0
  688. package/src/modules/governance/reactcode/src/pages/InitiativeMilestonesPage.tsx +171 -0
  689. package/src/modules/governance/reactcode/src/pages/InitiativesListPage.tsx +182 -0
  690. package/src/modules/governance/reactcode/src/pages/MilestoneDetailPage.tsx +178 -0
  691. package/src/modules/governance/reactcode/src/pages/RoadmapPage.tsx +256 -0
  692. package/src/modules/governance/reactcode/src/pages/TaskDetailPage.tsx +529 -0
  693. package/src/modules/governance/reactcode/src/pages/VotingDetailPage.tsx +191 -0
  694. package/src/modules/governance/reactcode/src/pages/VotingsListPage.tsx +86 -0
  695. package/src/modules/governance/reactcode/src/vite-env.d.ts +1 -0
  696. package/src/modules/governance/reactcode/tailwind.config.js +8 -0
  697. package/src/modules/governance/reactcode/tsconfig.app.json +24 -0
  698. package/src/modules/governance/reactcode/tsconfig.json +7 -0
  699. package/src/modules/governance/reactcode/tsconfig.node.json +22 -0
  700. package/src/modules/governance/reactcode/vite.config.ts +10 -0
  701. package/src/modules/governance/seed-governance.js +348 -0
  702. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +58 -7
  703. package/src/modules/governance/views/components/blocks/CardMilestoneItem.vue +70 -0
  704. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +58 -7
  705. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +65 -7
  706. package/src/modules/governance/views/components/layouts/Governance.vue +23 -0
  707. package/src/modules/governance/views/components/pages/Governance.vue +44 -0
  708. package/src/modules/governance/views/components/pages/Initiative.vue +413 -8
  709. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +159 -0
  710. package/src/modules/governance/views/components/pages/Initiatives.vue +164 -6
  711. package/src/modules/governance/views/components/pages/Milestone.vue +170 -0
  712. package/src/modules/governance/views/components/pages/Roadmap.vue +238 -0
  713. package/src/modules/governance/views/components/pages/Task.vue +393 -14
  714. package/src/modules/governance/views/components/pages/Tasks.vue +164 -10
  715. package/src/modules/governance/views/components/pages/Voting.vue +167 -20
  716. package/src/modules/governance/views/components/pages/Votings.vue +86 -9
  717. package/src/modules/governance/views/components/partials/EmptyState.vue +41 -0
  718. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +73 -0
  719. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +35 -0
  720. package/src/modules/governance/views/components/partials/VoteForm.vue +100 -0
  721. package/src/modules/governance/views/components/partials/VotingResults.vue +127 -0
  722. package/src/modules/governance/views/router/goverance.router.js +52 -1
  723. package/src/modules/governance/views/store/initiatives.js +10 -7
  724. package/src/modules/governance/views/store/tasks.js +10 -7
  725. package/src/modules/governance/views/store/votes.js +10 -7
  726. package/src/modules/governance/views/store/votings.js +9 -6
  727. package/src/modules/inventory/components/forms/AdjustmentForm.vue +1 -1
  728. package/src/modules/landing/components/sections/Examples.vue +1 -1
  729. package/src/modules/landing/components/sections/SectionEarn.vue +2 -2
  730. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  731. package/src/modules/landing/components/sections/SectionFeaturesImages.vue +1 -1
  732. package/src/modules/landing/components/sections/SectionFocus.vue +1 -1
  733. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  734. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  735. package/src/modules/landing/components/sections/SectionHeroVideo.vue +2 -2
  736. package/src/modules/landing/components/sections/SectionJoinUs.vue +1 -1
  737. package/src/modules/landing/components/sections/SectionMobileApp.vue +3 -3
  738. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +1 -1
  739. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +3 -3
  740. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +1 -1
  741. package/src/modules/music/components/forms/AlbumForm.vue +2 -2
  742. package/src/modules/music/components/forms/ArtistForm.vue +4 -4
  743. package/src/modules/music/components/forms/PlaylistForm.vue +6 -6
  744. package/src/modules/music/components/forms/TrackForm.vue +4 -4
  745. package/src/modules/music/components/pages/Album.vue +8 -8
  746. package/src/modules/music/components/pages/Artist.vue +10 -10
  747. package/src/modules/music/components/pages/MusicLibrary.vue +4 -4
  748. package/src/modules/music/components/pages/Playlist.vue +5 -5
  749. package/src/modules/music/components/pages/Track.vue +9 -9
  750. package/src/modules/music/music.server.js +0 -1
  751. package/src/modules/notifications/components/blocks/NotificationItem.vue +1 -1
  752. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  753. package/src/modules/notifications/notifications.server.js +26 -20
  754. package/src/modules/orders/components/blocks/CardOrder.vue +7 -7
  755. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +1 -1
  756. package/src/modules/orders/components/blocks/CardOrderUser.vue +3 -3
  757. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +2 -2
  758. package/src/modules/orders/components/elements/PriceTotal.vue +1 -1
  759. package/src/modules/orders/components/pages/Favorites.vue +1 -1
  760. package/src/modules/orders/components/pages/OrderBackoffice.vue +7 -7
  761. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  762. package/src/modules/orders/components/partials/ShopCart.vue +1 -1
  763. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  764. package/src/modules/orders/components/sections/Succes.vue +1 -1
  765. package/src/modules/organizations/components/blocks/CardOrganization.vue +3 -3
  766. package/src/modules/organizations/components/blocks/EmptyState.vue +1 -1
  767. package/src/modules/organizations/components/blocks/Rating.vue +2 -2
  768. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +1 -1
  769. package/src/modules/organizations/components/forms/DepartmentForm.vue +2 -2
  770. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  771. package/src/modules/organizations/components/pages/Department.vue +2 -2
  772. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  773. package/src/modules/organizations/components/pages/Organization.new.vue +7 -7
  774. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  775. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +8 -8
  776. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  777. package/src/modules/products/components/blocks/CardCategory.vue +2 -2
  778. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  779. package/src/modules/products/components/blocks/CardProduct.vue +3 -3
  780. package/src/modules/products/components/blocks/ProductDiscounts.vue +2 -2
  781. package/src/modules/products/components/elements/Price.vue +4 -4
  782. package/src/modules/products/components/elements/QuantitySelector.vue +2 -2
  783. package/src/modules/products/components/forms/StockAuditForm.vue +1 -1
  784. package/src/modules/products/components/pages/Product.vue +2 -2
  785. package/src/modules/products/components/pages/Products.vue +4 -4
  786. package/src/modules/products/components/sections/EditAttributes.vue +3 -3
  787. package/src/modules/products/components/sections/EditDiscounts.vue +3 -3
  788. package/src/modules/products/components/sections/EditVariants.vue +5 -5
  789. package/src/modules/products/components/sections/FilterProducts.vue +3 -3
  790. package/src/modules/products/components/sections/HeroRecommendation.vue +2 -2
  791. package/src/modules/products/components/sections/ProductConfigurator.vue +1 -1
  792. package/src/modules/products/components/sections/ProductsRecommended.vue +1 -1
  793. package/src/modules/products/components/sections/SectionProduct.vue +2 -2
  794. package/src/modules/reports/components/sections/FormReport.vue +2 -2
  795. package/src/modules/spots/components/blocks/CardSpot.vue +5 -5
  796. package/src/modules/spots/components/pages/Spot.vue +2 -2
  797. package/src/modules/spots/components/pages/SpotEdit.vue +3 -3
  798. package/src/modules/wallet/views/components/pages/Wallet.vue +10 -10
  799. package/src/styles/base/all.scss +20 -0
  800. package/src/styles/config.scss +10 -9
  801. package/src/styles/typography.scss +13 -13
  802. package/dist/globals.observer-C_FYclgV.cjs +0 -78
  803. package/dist/globals.observer-MZsqaE6F.js +0 -79
  804. package/dist/main-8f945Ngn.cjs +0 -11
  805. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
  806. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -2
  807. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +0 -1
  808. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +0 -2
  809. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  810. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  811. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  812. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  813. package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
  814. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.cjs +0 -2
  815. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.cjs.map +0 -1
  816. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.js +0 -2
  817. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue2.js.map +0 -1
  818. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +0 -1
  819. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +0 -1
  820. package/dist/tickets.controller-9zoaVPcx.cjs +0 -444
  821. package/dist/tickets.controller-C8sWVqbB.js +0 -428
  822. package/dist/wallet.server.cjs +0 -528
  823. package/dist/wallet.server.js +0 -511
  824. package/src/builder/modes/ssr.vite.dev.js +0 -180
  825. package/src/builder/ssr/ssr-render-html.vite.js +0 -35
  826. package/src/builder/vite/index.js +0 -13
  827. package/src/builder/vite/vite.config.api.js +0 -52
  828. package/src/builder/vite/vite.config.base.js +0 -110
  829. package/src/builder/vite/vite.config.spa.client.js +0 -81
  830. package/src/builder/vite/vite.config.ssr.client.js +0 -244
  831. package/src/builder/vite/vite.config.ssr.server.js +0 -74
  832. package/src/modules/governance/controllers/factories/initiatives.controller.js +0 -90
  833. package/src/modules/governance/controllers/factories/tasks.controller.js +0 -88
  834. package/src/modules/governance/controllers/factories/votes.controller.js +0 -64
  835. package/src/modules/governance/controllers/factories/votings.controller.js +0 -105
  836. package/src/modules/governance/views/store/projects.js +0 -148
  837. /package/src/modules/governance/{DESCRIPTION.MD → IGNORE-ITS FOR FUTURE-DESCRIPTION.MD} +0 -0
@@ -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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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const IconSearch = require("../../../../icons/navigation/IconSearch.vue.cjs");
5
- const Field = require("../../../../../components/Field/Field.vue.cjs");
5
+ const Field = require("../../../../../components/Field/Field.vue2.cjs");
6
6
  const _sfc_main = {
7
7
  __name: "BlockSearch",
8
8
  props: {
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, createBlock, openBlock, withCtx, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../icons/navigation/IconSearch.vue.js";
3
- import Field from "../../../../../components/Field/Field.vue.js";
3
+ import Field from "../../../../../components/Field/Field.vue2.js";
4
4
  const _sfc_main = {
5
5
  __name: "BlockSearch",
6
6
  props: {
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const Tooltip = require("../../../../../components/Tooltip/Tooltip.vue2.cjs");
6
- const Dropdown = require("../../../../../components/Dropdown/Dropdown.vue2.cjs");
6
+ const Dropdown = require("../../../../../components/Dropdown/Dropdown.vue.cjs");
7
7
  const PlaceholderUserpic = require("../../../../icons/placeholders/PlaceholderUserpic.vue.cjs");
8
8
  const PlaceholderOrganizationPic = require("../../../../icons/placeholders/PlaceholderOrganizationPic.vue.cjs");
9
9
  const IconEllipsis = require("../../../../icons/navigation/IconEllipsis.vue.cjs");
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createBlock, withModifiers, resolveDynamicComponent, toDisplayString, withCtx, createTextVNode, Fragment, renderList, normalizeClass } from "vue";
2
2
  import { useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../../components/Tooltip/Tooltip.vue2.js";
4
- import _sfc_main$3 from "../../../../../components/Dropdown/Dropdown.vue2.js";
4
+ import _sfc_main$3 from "../../../../../components/Dropdown/Dropdown.vue.js";
5
5
  import PlaceholderUserpic from "../../../../icons/placeholders/PlaceholderUserpic.vue.js";
6
6
  import PlaceholderOrganizationPic from "../../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
7
7
  import _sfc_main$4 from "../../../../icons/navigation/IconEllipsis.vue.js";
@@ -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
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"PopupDateSelector.vue.js","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":["rents.loadAvailability"],"mappings":"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"}
1
+ {"version":3,"file":"PopupDateSelector.vue.js","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":["rents.loadAvailability"],"mappings":"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"}
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  const PlaceholderUserpic = require("../../../../icons/placeholders/PlaceholderUserpic.vue.cjs");
5
5
  const _hoisted_1 = {
6
6
  key: 0,
7
- class: "w-4r pos-relative i-semi"
7
+ class: "w-4r pos-relative i-medium"
8
8
  };
9
9
  const _hoisted_2 = {
10
10
  style: {
@@ -12,7 +12,7 @@ const _hoisted_2 = {
12
12
  top: "0px",
13
13
  right: "0px"
14
14
  },
15
- class: "br-solid br-2px br-white z-index-1 radius-big i-semi bg-second flex flex-center t-white p-small t-semi"
15
+ class: "br-solid br-2px br-white z-index-1 radius-big i-medium bg-second flex flex-center t-white p-small t-semi"
16
16
  };
17
17
  const _hoisted_3 = ["src"];
18
18
  const _sfc_main = {
@@ -43,7 +43,7 @@ const _sfc_main = {
43
43
  right: index * 20 + 20 + "%",
44
44
  zIndex: 1 - index
45
45
  }),
46
- class: "br-solid br-2px br-white i-semi bg-light radius-big"
46
+ class: "br-solid br-2px br-white i-medium bg-light radius-big"
47
47
  }, null, 12, _hoisted_3)) : (vue.openBlock(), vue.createBlock(PlaceholderUserpic.default, {
48
48
  key: 1,
49
49
  style: vue.normalizeStyle({
@@ -52,7 +52,7 @@ const _sfc_main = {
52
52
  right: index * 20 + 20 + "%",
53
53
  zIndex: 1 - index
54
54
  }),
55
- class: "br-solid br-2px br-white i-semi bg-light radius-big"
55
+ class: "br-solid br-2px br-white i-medium bg-light radius-big"
56
56
  }, null, 8, ["style"]))
57
57
  ], 64);
58
58
  }), 256)) : vue.createCommentVNode("", true)