@ozdao/martyrs 0.2.543 → 0.2.544

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 (396) hide show
  1. package/dist/builder.cjs +10 -2
  2. package/dist/builder.js +10 -2
  3. package/dist/{main-BNdv8Ji-.cjs → main-8f945Ngn.cjs} +6 -6
  4. package/dist/{main-DUwlesGq.js → main-d9n_ibdE.js} +1065 -1065
  5. package/dist/martyrs/src/components/Button/{Button.vue2.cjs → Button.vue.cjs} +2 -2
  6. package/dist/martyrs/src/components/Button/{Button.vue2.js.map → Button.vue.cjs.map} +1 -1
  7. package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +2 -2
  8. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
  9. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
  10. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
  11. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  12. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  13. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
  14. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  15. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
  16. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  17. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
  18. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  19. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
  20. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  21. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs → Feed.vue2.cjs} +4 -4
  22. package/dist/martyrs/src/components/Feed/Feed.vue2.cjs.map +1 -0
  23. package/dist/martyrs/src/components/Feed/{Feed.vue.js → Feed.vue2.js} +4 -4
  24. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs.map → Feed.vue2.js.map} +1 -1
  25. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  26. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  27. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  28. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  29. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +2 -2
  30. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  31. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs → BlockTags.vue2.cjs} +2 -2
  32. package/dist/martyrs/src/components/FieldTags/BlockTags.vue2.cjs.map +1 -0
  33. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.js → BlockTags.vue2.js} +2 -2
  34. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs.map → BlockTags.vue2.js.map} +1 -1
  35. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  36. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  37. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  38. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  39. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
  40. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
  41. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  42. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
  43. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  44. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  45. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  46. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +3 -3
  50. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +3 -3
  51. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +3 -3
  52. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +3 -3
  53. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +4 -4
  54. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +4 -4
  55. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +2 -2
  56. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +2 -2
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +2 -2
  60. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  61. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +3 -3
  62. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +3 -3
  63. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +3 -3
  64. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +3 -3
  65. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +3 -3
  66. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +3 -3
  67. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +2 -2
  68. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  69. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
  71. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  73. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js +1 -1
  75. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  77. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +4 -4
  78. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +4 -4
  79. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +1 -1
  81. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  83. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  85. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +5 -5
  90. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +5 -5
  91. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +3 -3
  92. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +3 -3
  93. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +8 -6
  94. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  95. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +8 -6
  96. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  97. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  98. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  99. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +2 -2
  100. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
  101. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js +1 -1
  103. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  105. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +5 -5
  106. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +5 -5
  107. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +38 -30
  108. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +39 -31
  110. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  115. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
  116. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
  117. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  119. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +4 -2
  120. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +4 -2
  122. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  125. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  127. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +2 -2
  128. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +2 -2
  129. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  131. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue.cjs → Filters.vue2.cjs} +9 -9
  132. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
  133. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue.js → Filters.vue2.js} +10 -10
  134. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
  135. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  137. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +1 -1
  139. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +21 -1
  140. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  141. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +21 -1
  142. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  143. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +1 -1
  145. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +2 -2
  146. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  147. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  149. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  151. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +2 -2
  152. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  153. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +3 -3
  154. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +2 -2
  155. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +4 -4
  156. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +4 -4
  157. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +3 -3
  158. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  159. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +3 -3
  160. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  161. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +2 -2
  162. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +2 -2
  163. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +1 -1
  165. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  167. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  169. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
  170. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  171. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  173. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  174. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  175. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  176. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  177. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +2 -2
  178. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  179. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
  180. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  181. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  182. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  183. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +3 -3
  184. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +3 -3
  185. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  186. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  187. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +1 -1
  189. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +2 -2
  190. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +2 -2
  191. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +3 -3
  192. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +3 -3
  193. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  195. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +3 -3
  196. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +3 -3
  197. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  199. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  201. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  203. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +7 -5
  204. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +8 -6
  206. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +2 -2
  208. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  209. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +2 -2
  210. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  211. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +2 -2
  212. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  213. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +1 -1
  215. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +1 -1
  217. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +6 -4
  218. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  219. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +6 -4
  220. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  221. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  222. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  223. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +6 -6
  224. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +6 -6
  226. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +9 -7
  228. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +9 -7
  230. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +3 -1
  232. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  233. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +3 -1
  234. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +1 -1
  236. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  237. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +1 -1
  238. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  239. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +4 -4
  240. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -4
  241. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +10 -10
  242. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +10 -10
  243. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  244. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  245. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +2 -2
  246. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +2 -2
  247. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +4 -4
  248. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +4 -4
  249. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +2 -2
  250. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  251. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +10 -10
  252. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +10 -10
  253. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +10 -10
  254. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +10 -10
  255. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +9 -9
  256. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -9
  257. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  258. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  259. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +4 -4
  260. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +4 -4
  261. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +2 -2
  262. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
  263. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
  264. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  265. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +3 -3
  266. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  267. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
  268. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  269. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  270. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  271. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +2 -2
  272. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  273. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +2 -2
  274. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  275. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  277. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +1 -1
  278. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +1 -1
  279. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +4 -2
  280. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  281. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +5 -3
  282. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -2
  284. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  285. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +5 -3
  286. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.cjs → THC.vue2.cjs} +2 -2
  288. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +1 -0
  289. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.js → THC.vue2.js} +2 -2
  290. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +1 -0
  291. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +2 -2
  292. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
  293. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +5 -5
  294. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -5
  295. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  296. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  297. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +4 -4
  298. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  299. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +8 -8
  300. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  301. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +8 -8
  302. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  303. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +2 -2
  304. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  305. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +2 -2
  306. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  307. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
  308. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
  309. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -1
  310. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  311. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +7 -5
  312. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  313. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +7 -5
  314. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  316. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  317. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  318. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  319. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  320. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  321. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +3 -3
  322. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  323. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +3 -3
  324. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +3 -3
  325. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +2 -2
  326. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +2 -2
  327. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +2 -2
  328. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +2 -2
  329. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  330. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  331. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  332. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  333. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +3 -3
  334. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +3 -3
  335. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  336. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  337. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
  338. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  339. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +3 -3
  340. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  341. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +1 -1
  342. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +1 -1
  343. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
  344. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  345. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  346. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  347. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  348. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  349. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.cjs +1 -1
  350. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  351. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  352. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  353. package/dist/martyrs.cjs.js +1 -1
  354. package/dist/martyrs.css +1 -1
  355. package/dist/martyrs.es.js +1 -1
  356. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  357. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  358. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  359. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  360. package/dist/style.css +6 -6
  361. package/dist/{web-C6njYH1C.js → web-BkaOiiSn.js} +1 -1
  362. package/dist/{web-CVdyxtLD.cjs → web-CROHFHoW.cjs} +1 -1
  363. package/package.json +1 -1
  364. package/src/builder/modes/ssr.prod.js +2 -0
  365. package/src/builder/modes/ssr.rspack.dev.js +2 -0
  366. package/src/builder/templates/page.js +4 -0
  367. package/src/builder/templates/screen.js +4 -0
  368. package/src/modules/events/components/pages/Event.vue +2 -0
  369. package/src/modules/globals/views/classes/globals.app.js +76 -48
  370. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +2 -0
  371. package/src/modules/globals/views/components/sections/Filters.vue +1 -1
  372. package/src/modules/globals/views/utils/vue-app-renderer.js +25 -1
  373. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  374. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -0
  375. package/src/modules/orders/components/blocks/CardOrderVar1.vue +12 -1
  376. package/src/modules/orders/components/pages/OrderBackoffice.vue +2 -0
  377. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +1 -1
  378. package/src/modules/orders/components/pages/Orders.vue +2 -0
  379. package/src/modules/orders/components/partials/ShopCart.vue +2 -0
  380. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -0
  381. package/src/modules/products/components/elements/Price.vue +3 -0
  382. package/src/modules/products/components/pages/Products.vue +1 -1
  383. package/src/modules/products/components/sections/EditVariants.vue +2 -0
  384. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +0 -1
  385. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
  386. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +0 -1
  387. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  388. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +0 -1
  389. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  390. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  391. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  392. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  393. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue.cjs.map +0 -1
  394. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue.js.map +0 -1
  395. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +0 -1
  396. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"globals.app.js","sources":["../../../../../../../src/modules/globals/views/classes/globals.app.js"],"sourcesContent":["// client-factory.js - фабрика для создания клиентского приложения\nimport { 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 // Критические модули одинаковые для всех проектов\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 router.beforeEach(async (to, from) => {\n // Получаем модули для маршрута\n const requiredModules = moduleRegistry.getModulesForRoute(to.path);\n \n // Проверяем, какие модули еще не загружены\n const modulesToLoad = requiredModules.filter(m => !moduleRegistry.initialized.has(m.name));\n \n if (modulesToLoad.length > 0) {\n // Показываем глобальный лоадер\n if (store.globals && store.globals.state) {\n store.globals.state.loading = true;\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 // Лоадер остается включенным - страница сама выключит через globals.state.loading = false\n \n // После загрузки модулей и регистрации их роутов,\n // возвращаем тот же путь для повторной навигации с новыми роутами\n return to.fullPath;\n }\n });\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 };\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 // Создаем context для загрузки модулей\n const context = { app, store, router, config };\n \n // Загружаем auth модуль сразу - он критичен\n moduleRegistry.load('auth', context).then(() => {\n // Загружаем важные модули в следующем тике\n setTimeout(async () => {\n try {\n await Promise.all([\n moduleRegistry.load('organizations', context),\n moduleRegistry.load('backoffice', context),\n ]);\n } catch (error) {\n console.error('Error loading core modules:', error);\n }\n }, 0);\n \n // Загружаем некритичные модули когда браузер idle\n requestIdleCallback(async () => {\n try {\n await moduleRegistry.load('notifications', context);\n // Маркер для тестов\n if (typeof window !== 'undefined') {\n window.performance.mark('client-ready');\n }\n } catch (error) {\n console.error('Error loading non-critical modules:', error);\n }\n });\n }).catch(error => {\n console.error('Error loading auth module:', error);\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":";;AAIO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAA;AACb,GAAG;AAED,QAAM,eAAe,MAAM,OAAO,kCAA+B,EAAE,KAAK,OAAK,EAAE,OAAO;AACtF,QAAM,oBAAoB,MAAM,OAAO,sBAAsB,EAAE,KAAK,OAAK,EAAE,cAAc;AACzF,QAAM,gBAAgB,MAAM,OAAO,wBAAwB,EAAE,KAAK,OAAK,EAAE,OAAO;AAChF,QAAM,iBAAiB,MAAM,OAAO,8BAA8B;AAGlE,iBAAe,gBAAgB;AAE7B,UAAM,SAAS,MAAM,UAAS;AAC9B,UAAM,QAAQ;AAEd,UAAM,CAAC,WAAW,gBAAgB,iBAAiB,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,MAClF,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,cAAa;AAAA,MACb,eAAc;AAAA,IACpB,CAAK;AAGD,mBAAe,SAAS,WAAW;AAAA,MACjC,QAAQ,MAAM,OAAO,yBAAyB;AAAA,MAC9C,UAAU;AAAA,MACV,UAAU;AAAA,IAChB,CAAK;AAGD,WAAO,QAAQ,OAAO,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,MAAM,MAAM;AACzD,UAAI,OAAO,QAAQ;AACjB,uBAAe,SAAS,MAAM;AAAA,UAC5B,QAAQ,OAAO;AAAA,UACf,QAAQ,OAAO,UAAU,CAAA;AAAA,UACzB,UAAU,OAAO,YAAY;AAAA,UAC7B,UAAU,OAAO,YAAY;AAAA,UAC7B,cAAc,OAAO,gBAAgB,CAAA;AAAA,UACrC,SAAS,OAAO,WAAW;AAAA,QACrC,CAAS;AAAA,MACH;AAAA,IACF,CAAC;AAGD,aAASA,cAAY;AACnB,YAAM,QAAQ,SAAQ;AACtB,YAAM,MAAM,QAAQ,IAAI,aACpBC,UAAa,WAAW,MAAM,IAC9BC,aAAgB,WAAW,MAAM;AAErC,YAAM,OAAO,WAAU;AACvB,YAAM,OAAO,WAAU;AAEvB,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,MACR;AAGM,YAAM,SAAS,UAAU,OAAO;AAChC,cAAQ,SAAS;AAGjB,YAAM,sBAAsB,YAAY;AAEtC,cAAM,kBAAkB,CAAC,WAAW,QAAQ,iBAAiB,YAAY;AAEzE,mBAAW,cAAc,iBAAiB;AACxC,cAAI;AACF,kBAAM,eAAe,KAAK,YAAY,OAAO;AAC7C,kBAAM,eAAe,WAAW,YAAY,OAAO;AAAA,UACrD,SAAS,OAAO;AACd,oBAAQ,MAAM,kCAAkC,UAAU,KAAK,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAGA,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,WAAW,OAAO,IAAI,SAAS;AAEpC,gBAAM,kBAAkB,eAAe,mBAAmB,GAAG,IAAI;AAGjE,gBAAM,gBAAgB,gBAAgB,OAAO,OAAK,CAAC,eAAe,YAAY,IAAI,EAAE,IAAI,CAAC;AAEzF,cAAI,cAAc,SAAS,GAAG;AAE5B,gBAAI,MAAM,WAAW,MAAM,QAAQ,OAAO;AACxC,oBAAM,QAAQ,MAAM,UAAU;AAAA,YAChC;AAGA,uBAAW,UAAU,eAAe;AAClC,kBAAI;AACF,sBAAM,eAAe,KAAK,OAAO,MAAM,OAAO;AAC9C,sBAAM,eAAe,WAAW,OAAO,MAAM,OAAO;AAAA,cACtD,SAAS,OAAO;AACd,wBAAQ,MAAM,yBAAyB,OAAO,IAAI,KAAK,KAAK;AAAA,cAC9D;AAAA,YACF;AAMA,mBAAO,GAAG;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAGA,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,iBAAiB,SAAS,CAAC,MAAM;AACtC,cAAI,EAAE,WAAW,EAAE,QAAQ,SAAS,eAAe,GAAG;AACpD,oBAAQ,MAAM,yBAAyB,CAAC;AAAA,UAG1C;AAAA,QACF,CAAC;AAAA,MACH;AAGA,YAAM,aAAa,YAAY;AAE7B,YAAI,MAAM,kBAAkB;AAC1B,gBAAM,MAAM,iBAAiB,OAAO;AAAA,QACtC;AAGA,cAAM,oBAAmB;AAGzB,YAAI,OAAO,WAAW,aAAa;AAEjC,8BAAoB,MAAM;AACxB,4BAAgB,WAAW;AAAA,cACzB,OAAO,QAAQ,IAAI,WAAW;AAAA,cAC9B,sBAAsB;AAAA,cACtB,gBAAgB;AAAA,cAChB,cAAc;AAAA,YAC5B,CAAa;AAAA,UACH,CAAC;AAGD,8BAAoB,MAAM;AACxB,2BAAe,eAAe,OAAO;AAAA,UACvC,CAAC;AAAA,QACH;AAGA,YAAI,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI;AAGlC,YAAI,QAAQ,IAAI,YAAY;AAC1B,cAAI,MAAM,MAAM;AAAA,QAClB;AAGA,YAAI,MAAM,iBAAiB;AACzB,gBAAM,MAAM,gBAAgB,OAAO;AAAA,QACrC;AAEA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACM;AAGA,UAAI,CAAC,QAAQ,IAAI,YAAY;AAC3B,eAAO,WAAU;AAAA,MACnB;AAGA,iBAAU;AAAA,IACZ;AAGA,mBAAe,UAAU,EAAE,KAAK,SAAS,WAAW,WAAU,GAAI;AAChE,YAAM,EAAE,KAAK,QAAQ,OAAO,MAAM,MAAM,gBAAAC,oBAAmB,MAAMH,YAAS;AAG1E,UAAI,OAAO,WAAW,aAAa;AACjC,cAAM,EAAE,YAAW,IAAK,MAAM,OAAO,YAAY;AACjD,oBAAY,KAAK;AAAA,MACnB;AAgBA,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACb;AAGM,YAAM,kBAAkBG,gBAAe,mBAAmB,GAAG;AAG7D,YAAM,sBAAsB,CAAA;AAG5B,iBAAW,UAAU,iBAAiB;AACpC,cAAMA,gBAAe,KAAK,OAAO,MAAM,OAAO;AAC9C,cAAMA,gBAAe,WAAW,OAAO,MAAM,OAAO;AACpD,4BAAoB,KAAK,OAAO,IAAI;AAAA,MACtC;AAGA,YAAM,OAAO,KAAK,GAAG;AACrB,YAAM,OAAO,QAAO;AAEpB,YAAM,SAAS,MAAM,YAAY,OAAO;AAAA,QACtC;AAAA,QACA;AAAA,QACA,WAAW,OAAO,EAAE,KAAK,QAAQ,OAAO,MAAM;QAC9C;AAAA,MACR,CAAO;AAED,UAAI,YAAY,SAAS;AACvB,eAAO,cAAc,MAAM,KAAK,WAAW,OAAO;AAAA,MACpD;AAIA,YAAM,kBAAkB,CAAC,WAAW,QAAQ,iBAAiB,YAAY;AACzE,YAAM,qBAAqB,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;AAEpF,aAAO,gBAAgB;AAEvB,aAAO;AAAA,IACT;AAGA,QAAI,OAAO,WAAW,eAAe,QAAQ,IAAI,YAAY;AAC3DH,kBAAS;AAAA,IACX;AAGA,QAAI,OAAO,WAAW,eAAe,CAAC,QAAQ,IAAI,YAAY;AAE5D,kBAAY,kBAAkB,aAAEA,aAAW,MAAK,CAAE,EAAE,KAAK,CAAC,EAAE,KAAK,QAAQ,OAAO,gBAAAG,gBAAc,MAAO;AAEnG,YAAI,MAAM,gBAAgB;AACxB,gBAAM,eAAe,EAAE,KAAK,QAAQ,OAAO,gBAAAA,iBAAgB;AAAA,QAC7D;AAGA,cAAM,UAAU,EAAE,KAAK,OAAO,QAAQ,OAAM;AAG5C,QAAAA,gBAAe,KAAK,QAAQ,OAAO,EAAE,KAAK,MAAM;AAE5C,qBAAW,YAAY;AACrB,gBAAI;AACF,oBAAM,QAAQ,IAAI;AAAA,gBAChBA,gBAAe,KAAK,iBAAiB,OAAO;AAAA,gBAC5CA,gBAAe,KAAK,cAAc,OAAO;AAAA,cAC3D,CAAiB;AAAA,YACH,SAAS,OAAO;AACd,sBAAQ,MAAM,+BAA+B,KAAK;AAAA,YACpD;AAAA,UACF,GAAG,CAAC;AAGJ,8BAAoB,YAAY;AAC9B,gBAAI;AACF,oBAAMA,gBAAe,KAAK,iBAAiB,OAAO;AAElD,kBAAI,OAAO,WAAW,aAAa;AACjC,uBAAO,YAAY,KAAK,cAAc;AAAA,cACxC;AAAA,YACF,SAAS,OAAO;AACd,sBAAQ,MAAM,uCAAuC,KAAK;AAAA,YAC5D;AAAA,UACF,CAAC;AAAA,QACL,CAAC,EAAE,MAAM,WAAS;AAChB,kBAAQ,MAAM,8BAA8B,KAAK;AAAA,QACnD,CAAC;AAAA,MACH,CAAC,EAAE,MAAM,WAAS;AAChB,gBAAQ,MAAM,qBAAqB,KAAK;AAAA,MAC1C,CAAC;AAAA,IACH;AAEA,WAAO,EAAA,WAAEH,aAAW,UAAS;AAAA,EAC/B;AAGA,SAAO,cAAa;AACtB;"}
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":";;AAIO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,CAAA;AACb,GAAG;AAED,QAAM,eAAe,MAAM,OAAO,kCAA+B,EAAE,KAAK,OAAK,EAAE,OAAO;AACtF,QAAM,oBAAoB,MAAM,OAAO,sBAAsB,EAAE,KAAK,OAAK,EAAE,cAAc;AACzF,QAAM,gBAAgB,MAAM,OAAO,wBAAwB,EAAE,KAAK,OAAK,EAAE,OAAO;AAChF,QAAM,iBAAiB,MAAM,OAAO,8BAA8B;AAGlE,iBAAe,gBAAgB;AAE7B,UAAM,SAAS,MAAM,UAAS;AAC9B,UAAM,QAAQ;AAEd,UAAM,CAAC,WAAW,gBAAgB,iBAAiB,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,MAClF,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,cAAa;AAAA,MACb,eAAc;AAAA,IACpB,CAAK;AAGD,mBAAe,SAAS,WAAW;AAAA,MACjC,QAAQ,MAAM,OAAO,yBAAyB;AAAA,MAC9C,UAAU;AAAA,MACV,UAAU;AAAA,IAChB,CAAK;AAGD,WAAO,QAAQ,OAAO,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,MAAM,MAAM;AACzD,UAAI,OAAO,QAAQ;AACjB,uBAAe,SAAS,MAAM;AAAA,UAC5B,QAAQ,OAAO;AAAA,UACf,QAAQ,OAAO,UAAU,CAAA;AAAA,UACzB,UAAU,OAAO,YAAY;AAAA,UAC7B,UAAU,OAAO,YAAY;AAAA,UAC7B,cAAc,OAAO,gBAAgB,CAAA;AAAA,UACrC,SAAS,OAAO,WAAW;AAAA,QACrC,CAAS;AAAA,MACH;AAAA,IACF,CAAC;AAGD,aAASA,cAAY;AACnB,YAAM,QAAQ,SAAQ;AACtB,YAAM,MAAM,QAAQ,IAAI,aACpBC,UAAa,WAAW,MAAM,IAC9BC,aAAgB,WAAW,MAAM;AAErC,YAAM,OAAO,WAAU;AACvB,YAAM,OAAO,WAAU;AAEvB,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,MACR;AAGM,YAAM,SAAS,UAAU,OAAO;AAChC,cAAQ,SAAS;AAGjB,YAAM,sBAAsB,YAAY;AAEtC,cAAM,iBAAiB,OAAO,WAAW,eAAe,CAAC,QAAQ,IAAI;AACrE,YAAI,gBAAgB;AAClB;AAAA,QACF;AAGA,cAAM,kBAAkB,CAAC,WAAW,QAAQ,iBAAiB,YAAY;AAEzE,mBAAW,cAAc,iBAAiB;AACxC,cAAI;AACF,kBAAM,eAAe,KAAK,YAAY,OAAO;AAC7C,kBAAM,eAAe,WAAW,YAAY,OAAO;AAAA,UACrD,SAAS,OAAO;AACd,oBAAQ,MAAM,kCAAkC,UAAU,KAAK,KAAK;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAGA,UAAI,OAAO,WAAW,aAAa;AACjC,cAAM,eAAe,OAAO,KAAK,KAAK,MAAM;AACpB,eAAO,QAAQ,KAAK,MAAM;AAElD,uBAAe,WAAW;AACxB,gBAAM,SAAQ;AACd,gBAAM,IAAI,QAAQ,qBAAqB;AACvC,gBAAM,IAAI,QAAQ,qBAAqB;AAEvC,gBAAM,IAAI,QAAQ,OAAK,WAAW,GAAG,CAAC,CAAC;AAAA,QACzC;AAEA,eAAO,OAAO,UAAU,SAAS;AAE/B,gBAAM,QAAQ,MAAM,UAAU;AAG9B,gBAAM,SAAQ;AAGd,qBAAW,MAAM;AACf,yBAAa,GAAG,IAAI;AAAA,UACtB,GAAG,CAAC;AAGJ,iBAAO,QAAQ,QAAO;AAAA,QACxB;AAiBA,eAAO,WAAW,OAAO,IAAI,SAAS;AAGpC,gBAAM,SAAS,GAAG,kBAAkB;AAGpC,gBAAM,kBAAkB,eAAe,mBAAmB,OAAO,IAAI;AAGrE,gBAAM,gBAAgB,gBAAgB,OAAO,OAAK,CAAC,eAAe,YAAY,IAAI,EAAE,IAAI,CAAC;AAEzF,cAAI,cAAc,SAAS,GAAG;AAE5B,gBAAI,GAAG,gBAAgB;AACrB,sBAAQ,IAAI,iDAAiD,OAAO,MAAM,YAAY,cAAc,IAAI,OAAK,EAAE,IAAI,CAAC;AAAA,YACtH;AAGA,uBAAW,UAAU,eAAe;AAClC,kBAAI;AACF,sBAAM,eAAe,KAAK,OAAO,MAAM,OAAO;AAC9C,sBAAM,eAAe,WAAW,OAAO,MAAM,OAAO;AAAA,cACtD,SAAS,OAAO;AACd,wBAAQ,MAAM,yBAAyB,OAAO,IAAI,KAAK,KAAK;AAAA,cAC9D;AAAA,YACF;AAKA,mBAAO,EAAE,MAAM,OAAO,UAAU,SAAS,KAAI;AAAA,UAC/C;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO,cAAc,OAAO,IAAI,SAAS;AACpC,cAAM,QAAQ,MAAM,UAAU;AAAA,MACnC,CAAC;AAGD,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,iBAAiB,SAAS,CAAC,MAAM;AACtC,cAAI,EAAE,WAAW,EAAE,QAAQ,SAAS,eAAe,GAAG;AACpD,oBAAQ,MAAM,yBAAyB,CAAC;AAAA,UAG1C;AAAA,QACF,CAAC;AAAA,MACH;AAGA,YAAM,aAAa,YAAY;AAE7B,YAAI,MAAM,kBAAkB;AAC1B,gBAAM,MAAM,iBAAiB,OAAO;AAAA,QACtC;AAGA,cAAM,oBAAmB;AAGzB,YAAI,OAAO,WAAW,aAAa;AAEjC,8BAAoB,MAAM;AACxB,4BAAgB,WAAW;AAAA,cACzB,OAAO,QAAQ,IAAI,WAAW;AAAA,cAC9B,sBAAsB;AAAA,cACtB,gBAAgB;AAAA,cAChB,cAAc;AAAA,YAC5B,CAAa;AAAA,UACH,CAAC;AAGD,8BAAoB,MAAM;AACxB,2BAAe,eAAe,OAAO;AAAA,UACvC,CAAC;AAAA,QACH;AAGA,YAAI,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI;AAGlC,YAAI,QAAQ,IAAI,YAAY;AAC1B,cAAI,MAAM,MAAM;AAAA,QAClB;AAGA,YAAI,MAAM,iBAAiB;AACzB,gBAAM,MAAM,gBAAgB,OAAO;AAAA,QACrC;AAEA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACV;AAAA,MACM;AAGA,UAAI,CAAC,QAAQ,IAAI,YAAY;AAC3B,eAAO,WAAU;AAAA,MACnB;AAGA,iBAAU;AAAA,IACZ;AAGA,mBAAe,UAAU,EAAE,KAAK,SAAS,WAAW,WAAU,GAAI;AAChE,YAAM,EAAE,KAAK,QAAQ,OAAO,MAAM,MAAM,gBAAAC,oBAAmB,MAAMH,YAAS;AAG1E,UAAI,OAAO,WAAW,aAAa;AACjC,cAAM,EAAE,YAAW,IAAK,MAAM,OAAO,YAAY;AACjD,oBAAY,KAAK;AAAA,MACnB;AAGA,UAAI,OAAO,WAAW,aAAa;AACjC,QAAAG,gBAAe,YAAY,MAAK;AAChC,QAAAA,gBAAe,QAAQ,MAAK;AAC5B,QAAAA,gBAAe,gBAAgB,MAAK;AAAA,MACtC;AASA,YAAM,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACb;AAGM,YAAM,kBAAkBA,gBAAe,mBAAmB,GAAG;AAG7D,YAAM,sBAAsB,CAAA;AAG5B,iBAAW,UAAU,iBAAiB;AACpC,cAAMA,gBAAe,KAAK,OAAO,MAAM,OAAO;AAC9C,cAAMA,gBAAe,WAAW,OAAO,MAAM,OAAO;AACpD,4BAAoB,KAAK,OAAO,IAAI;AAAA,MACtC;AAGA,YAAM,OAAO,KAAK,GAAG;AACrB,YAAM,OAAO,QAAO;AAEpB,YAAM,SAAS,MAAM,YAAY,OAAO;AAAA,QACtC;AAAA,QACA;AAAA,QACA,WAAW,OAAO,EAAE,KAAK,QAAQ,OAAO,MAAM;QAC9C;AAAA,MACR,CAAO;AAED,UAAI,YAAY,SAAS;AACvB,eAAO,cAAc,MAAM,KAAK,WAAW,OAAO;AAAA,MACpD;AAIA,YAAM,kBAAkB,CAAC,WAAW,QAAQ,iBAAiB,YAAY;AACzE,YAAM,qBAAqB,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;AAEpF,aAAO,gBAAgB;AAEvB,aAAO;AAAA,IACT;AAGA,QAAI,OAAO,WAAW,eAAe,QAAQ,IAAI,YAAY;AAC3DH,kBAAS;AAAA,IACX;AAGA,QAAI,OAAO,WAAW,eAAe,CAAC,QAAQ,IAAI,YAAY;AAE5D,kBAAY,kBAAkB,aAAEA,aAAW,MAAK,CAAE,EAAE,KAAK,CAAC,EAAE,KAAK,QAAQ,OAAO,gBAAAG,gBAAc,MAAO;AAEnG,YAAI,MAAM,gBAAgB;AACxB,gBAAM,eAAe,EAAE,KAAK,QAAQ,OAAO,gBAAAA,iBAAgB;AAAA,QAC7D;AAGA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,YAAY,KAAK,cAAc;AAAA,QACxC;AAAA,MACF,CAAC,EAAE,MAAM,WAAS;AAChB,gBAAQ,MAAM,qBAAqB,KAAK;AAAA,MAC1C,CAAC;AAAA,IACH;AAEA,WAAO,EAAA,WAAEH,aAAW,UAAS;AAAA,EAC/B;AAGA,SAAO,cAAa;AACtB;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Feed = require("../../../../../components/Feed/Feed.vue.cjs");
4
+ const Feed = require("../../../../../components/Feed/Feed.vue2.cjs");
5
5
  const BlockSearch = require("./BlockSearch.vue.cjs");
6
6
  const Card = require("./Card.vue.cjs");
7
7
  const clickOutside = require("../../../../../components/FieldPhone/click-outside.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, watch, createElementBlock, openBlock, createCommentVNode, withDirectives, createElementVNode, normalizeClass, renderSlot, createTextVNode, toDisplayString, Fragment, renderList, createVNode, unref, withCtx } from "vue";
2
- import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
2
+ import _sfc_main$2 from "../../../../../components/Feed/Feed.vue2.js";
3
3
  import _sfc_main$1 from "./BlockSearch.vue.js";
4
4
  import _sfc_main$3 from "./Card.vue.js";
5
5
  import clickOutside from "../../../../../components/FieldPhone/click-outside.js";
@@ -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,13 +3,13 @@ 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");
10
10
  const FormReport = require("../../../../reports/components/sections/FormReport.vue.cjs");
11
11
  ;/* empty css */
12
- ;/* empty css */
12
+ ;/* empty css */
13
13
  const PhotoStack = require("../elements/PhotoStack.vue.cjs");
14
14
  const _hoisted_1 = {
15
15
  key: 0,
@@ -1,13 +1,13 @@
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";
8
8
  import _sfc_main$5 from "../../../../reports/components/sections/FormReport.vue.js";
9
9
  /* empty css */
10
- /* empty css */
10
+ /* empty css */
11
11
  import _sfc_main$2 from "../elements/PhotoStack.vue.js";
12
12
  const _hoisted_1 = {
13
13
  key: 0,
@@ -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 Popup = require("../../../../../components/Popup/Popup.vue.cjs");
6
- const Button = require("../../../../../components/Button/Button.vue2.cjs");
6
+ const Button = require("../../../../../components/Button/Button.vue.cjs");
7
7
  const _hoisted_1 = { class: "t-center" };
8
8
  const _hoisted_2 = { class: "mn-b-medium" };
9
9
  const _hoisted_3 = { class: "mn-b-semi t-transp" };
@@ -1,7 +1,7 @@
1
1
  import { createBlock, openBlock, withCtx, createElementVNode, toDisplayString, createVNode, createTextVNode } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
4
- import _sfc_main$2 from "../../../../../components/Button/Button.vue2.js";
4
+ import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
5
5
  const _hoisted_1 = { class: "t-center" };
6
6
  const _hoisted_2 = { class: "mn-b-medium" };
7
7
  const _hoisted_3 = { class: "mn-b-semi t-transp" };
@@ -5,10 +5,11 @@ const vueI18n = require("vue-i18n");
5
5
  const Popup = require("../../../../../components/Popup/Popup.vue.cjs");
6
6
  const Loader = require("../../../../../components/Loader/Loader.vue2.cjs");
7
7
  const Calendar = require("../../../../../components/Calendar/Calendar.vue2.cjs");
8
- const Button = require("../../../../../components/Button/Button.vue2.cjs");
8
+ const Button = require("../../../../../components/Button/Button.vue.cjs");
9
9
  const IconShopcartAdd = require("../../../../icons/actions/IconShopcartAdd.vue.cjs");
10
10
  const PriceTotal = require("../../../../orders/components/elements/PriceTotal.vue.cjs");
11
11
  const rents_store = require("../../../../rents/views/store/rents.store.cjs");
12
+ const mixins = require("../../mixins/mixins.cjs");
12
13
  const _hoisted_1 = {
13
14
  key: 0,
14
15
  class: "flex w-100 mn-t-thin bg-light radius-small flex-center pd-thin mn-b-thin"
@@ -45,6 +46,7 @@ const _sfc_main = {
45
46
  }
46
47
  }
47
48
  });
49
+ const { returnCurrency } = mixins.useGlobalMixins();
48
50
  const selectedDates = vue.ref({ start: null, end: null });
49
51
  const availabilityData = vue.ref([]);
50
52
  const isLoading = vue.ref(false);
@@ -143,7 +145,7 @@ const _sfc_main = {
143
145
  availabilityError.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, vue.toDisplayString(availabilityError.value), 1)) : vue.createCommentVNode("", true),
144
146
  vue.createVNode(PriceTotal.default, {
145
147
  totalPrice: totalAmount.value,
146
- currency: _ctx.returnCurrency(),
148
+ currency: vue.unref(returnCurrency)(),
147
149
  showFees: __props.showFees,
148
150
  feesRate: __props.feesRate,
149
151
  showVat: __props.showVat,
@@ -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'\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})\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","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-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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"}
@@ -3,10 +3,11 @@ import { useI18n } from "vue-i18n";
3
3
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
4
4
  import Loader from "../../../../../components/Loader/Loader.vue2.js";
5
5
  import Calendar from "../../../../../components/Calendar/Calendar.vue2.js";
6
- import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
6
+ import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
7
7
  import _sfc_main$4 from "../../../../icons/actions/IconShopcartAdd.vue.js";
8
8
  import _sfc_main$2 from "../../../../orders/components/elements/PriceTotal.vue.js";
9
9
  import { loadAvailability } from "../../../../rents/views/store/rents.store.js";
10
+ import { useGlobalMixins } from "../../mixins/mixins.js";
10
11
  const _hoisted_1 = {
11
12
  key: 0,
12
13
  class: "flex w-100 mn-t-thin bg-light radius-small flex-center pd-thin mn-b-thin"
@@ -43,6 +44,7 @@ const _sfc_main = {
43
44
  }
44
45
  }
45
46
  });
47
+ const { returnCurrency } = useGlobalMixins();
46
48
  const selectedDates = ref({ start: null, end: null });
47
49
  const availabilityData = ref([]);
48
50
  const isLoading = ref(false);
@@ -141,7 +143,7 @@ const _sfc_main = {
141
143
  availabilityError.value ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(availabilityError.value), 1)) : createCommentVNode("", true),
142
144
  createVNode(_sfc_main$2, {
143
145
  totalPrice: totalAmount.value,
144
- currency: _ctx.returnCurrency(),
146
+ currency: unref(returnCurrency)(),
145
147
  showFees: __props.showFees,
146
148
  feesRate: __props.feesRate,
147
149
  showVat: __props.showVat,
@@ -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'\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})\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-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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"}
@@ -9,7 +9,7 @@ const Popup = require("../../../../../components/Popup/Popup.vue.cjs");
9
9
  require("vue-i18n");
10
10
  ;/* empty css */
11
11
  const Loader = require("../../../../../components/Loader/Loader.vue2.cjs");
12
- ;/* empty css */
12
+ ;/* empty css */
13
13
  ;/* empty css */
14
14
  const LocationSelection = require("../partials/LocationSelection.vue.cjs");
15
15
  const ShopCart = require("../../../../orders/components/partials/ShopCart.vue.cjs");
@@ -7,7 +7,7 @@ import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
7
7
  import "vue-i18n";
8
8
  /* empty css */
9
9
  import Loader from "../../../../../components/Loader/Loader.vue2.js";
10
- /* empty css */
10
+ /* empty css */
11
11
  /* empty css */
12
12
  import _sfc_main$2 from "../partials/LocationSelection.vue.js";
13
13
  import _sfc_main$3 from "../../../../orders/components/partials/ShopCart.vue.js";
@@ -7,7 +7,7 @@ const globals = require("../../store/globals.cjs");
7
7
  const shopcart = require("../../../../orders/store/shopcart.cjs");
8
8
  const auth = require("../../../../auth/views/store/auth.cjs");
9
9
  const NotificationBadge = require("../../../../notifications/components/elements/NotificationBadge.vue.cjs");
10
- const Button = require("../../../../../components/Button/Button.vue2.cjs");
10
+ const Button = require("../../../../../components/Button/Button.vue.cjs");
11
11
  const Select = require("../../../../../components/Select/Select.vue.cjs");
12
12
  const IconShopcart = require("../../../../icons/entities/IconShopcart.vue.cjs");
13
13
  const IconProfile = require("../../../../icons/entities/IconProfile.vue.cjs");
@@ -5,7 +5,7 @@ import { state } from "../../store/globals.js";
5
5
  import { actions, getters } from "../../../../orders/store/shopcart.js";
6
6
  import { state as state$1 } from "../../../../auth/views/store/auth.js";
7
7
  import NotificationBadge from "../../../../notifications/components/elements/NotificationBadge.vue.js";
8
- import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
8
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
9
9
  import Select from "../../../../../components/Select/Select.vue.js";
10
10
  import _sfc_main$3 from "../../../../icons/entities/IconShopcart.vue.js";
11
11
  import _sfc_main$4 from "../../../../icons/entities/IconProfile.vue.js";
@@ -5,8 +5,8 @@ const vueRouter = require("vue-router");
5
5
  const IconChevronBottom = require("../../../../icons/navigation/IconChevronBottom.vue.cjs");
6
6
  const globals = require("../../store/globals.cjs");
7
7
  const auth = require("../../../../auth/views/store/auth.cjs");
8
- ;/* empty css */
9
- ;/* empty css */
8
+ ;/* empty css */
9
+ ;/* empty css */
10
10
  ;/* empty css */
11
11
  const _pluginVue_exportHelper = require("../../../../../../../_virtual/_plugin-vue_export-helper.cjs");
12
12
  const _hoisted_1 = ["onClick"];
@@ -3,8 +3,8 @@ import { useRouter, useRoute } from "vue-router";
3
3
  import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
4
4
  import { state } from "../../store/globals.js";
5
5
  import { state as state$1 } from "../../../../auth/views/store/auth.js";
6
- /* empty css */
7
- /* empty css */
6
+ /* empty css */
7
+ /* empty css */
8
8
  /* empty css */
9
9
  import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
10
10
  const _hoisted_1 = ["onClick"];
@@ -5,7 +5,7 @@ const vueRouter = require("vue-router");
5
5
  const vueI18n = require("vue-i18n");
6
6
  const IconShopcart = require("../../../../icons/entities/IconShopcart.vue.cjs");
7
7
  const IconProfile = require("../../../../icons/entities/IconProfile.vue.cjs");
8
- const Button = require("../../../../../components/Button/Button.vue2.cjs");
8
+ const Button = require("../../../../../components/Button/Button.vue.cjs");
9
9
  const globals = require("../../store/globals.cjs");
10
10
  const shopcart = require("../../../../orders/store/shopcart.cjs");
11
11
  const auth = require("../../../../auth/views/store/auth.cjs");
@@ -3,7 +3,7 @@ import { useRouter, useRoute } from "vue-router";
3
3
  import { useI18n } from "vue-i18n";
4
4
  import _sfc_main$2 from "../../../../icons/entities/IconShopcart.vue.js";
5
5
  import _sfc_main$3 from "../../../../icons/entities/IconProfile.vue.js";
6
- import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
6
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
7
7
  import { state } from "../../store/globals.js";
8
8
  import { getters, actions } from "../../../../orders/store/shopcart.js";
9
9
  import { state as state$1 } from "../../../../auth/views/store/auth.js";
@@ -4,11 +4,11 @@ const vue = require("vue");
4
4
  const mixins = require("../../mixins/mixins.cjs");
5
5
  const Popup = require("../../../../../components/Popup/Popup.vue.cjs");
6
6
  const Checkbox = require("../../../../../components/Checkbox/Checkbox.vue.cjs");
7
- const Field = require("../../../../../components/Field/Field.vue.cjs");
7
+ const Field = require("../../../../../components/Field/Field.vue2.cjs");
8
8
  const Calendar = require("../../../../../components/Calendar/Calendar.vue2.cjs");
9
9
  const IconFilter = require("../../../../icons/navigation/IconFilter.vue.cjs");
10
10
  const IconCalendar = ;/* empty css */
11
- ;/* empty css */
11
+ ;/* empty css */
12
12
  const _pluginVue_exportHelper = require("../../../../../../../_virtual/_plugin-vue_export-helper.cjs");
13
13
  const _hoisted_1 = { class: "flex t-nowrap gap-thin" };
14
14
  const _hoisted_2 = { key: 0 };
@@ -60,7 +60,7 @@ const _sfc_main = {
60
60
  const filters = vue.useModel(__props, "filters");
61
61
  const selected = vue.useModel(__props, "selected");
62
62
  const emit = __emit;
63
- const { formatDate } = mixins.useGlobalMixins();
63
+ const { formatDate, returnCurrency } = mixins.useGlobalMixins();
64
64
  const showAllFilters = vue.ref(false);
65
65
  const individualPopups = vue.reactive({});
66
66
  const tempSelected = vue.reactive({});
@@ -265,7 +265,7 @@ const _sfc_main = {
265
265
  "onUpdate:field": ($event) => tempSelected[filter.value].min = $event,
266
266
  placeholder: filter.minPlaceholder || "Min",
267
267
  type: "number",
268
- label: _ctx.returnCurrency(),
268
+ label: vue.unref(returnCurrency)(),
269
269
  class: "w-50 bg-light pd-small radius-small"
270
270
  }, null, 8, ["field", "onUpdate:field", "placeholder", "label"]),
271
271
  vue.createVNode(Field.default, {
@@ -273,7 +273,7 @@ const _sfc_main = {
273
273
  "onUpdate:field": ($event) => tempSelected[filter.value].max = $event,
274
274
  placeholder: filter.maxPlaceholder || "Max",
275
275
  type: "number",
276
- label: _ctx.returnCurrency(),
276
+ label: vue.unref(returnCurrency)(),
277
277
  class: "w-50 bg-light pd-small radius-small"
278
278
  }, null, 8, ["field", "onUpdate:field", "placeholder", "label"])
279
279
  ])) : filter.type === "date" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12, [
@@ -340,7 +340,7 @@ const _sfc_main = {
340
340
  "onUpdate:field": ($event) => tempSelected[filter.value].min = $event,
341
341
  placeholder: filter.minPlaceholder || "Min",
342
342
  type: "number",
343
- label: _ctx.returnCurrency(),
343
+ label: vue.unref(returnCurrency)(),
344
344
  class: "w-50 bg-light pd-small radius-small"
345
345
  }, null, 8, ["field", "onUpdate:field", "placeholder", "label"]),
346
346
  vue.createVNode(Field.default, {
@@ -348,7 +348,7 @@ const _sfc_main = {
348
348
  "onUpdate:field": ($event) => tempSelected[filter.value].max = $event,
349
349
  placeholder: filter.maxPlaceholder || "Max",
350
350
  type: "number",
351
- label: _ctx.returnCurrency(),
351
+ label: vue.unref(returnCurrency)(),
352
352
  class: "w-50 bg-light pd-small radius-small"
353
353
  }, null, 8, ["field", "onUpdate:field", "placeholder", "label"])
354
354
  ])) : filter.type === "date" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, [
@@ -380,6 +380,6 @@ const _sfc_main = {
380
380
  };
381
381
  }
382
382
  };
383
- const Filters = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c337ccbe"]]);
383
+ const Filters = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-d582f4fc"]]);
384
384
  exports.default = Filters;
385
- //# sourceMappingURL=Filters.vue.cjs.map
385
+ //# sourceMappingURL=Filters.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.vue2.cjs","sources":["../../../../../../../../src/modules/globals/views/components/sections/Filters.vue"],"sourcesContent":["<template>\n <div class=\"flex t-nowrap gap-thin\">\n <!-- All Filters Button -->\n <button\n @click=\"showAllFilters = true\"\n class=\"pd-small radius-medium bg-light flex-v-center flex gap-micro cursor-pointer\"\n :class=\"{ 'bg-main': activeFiltersCount > 0 }\"\n >\n <IconFilter class=\"i-medium\" />\n <span class=\"h-1r\"></span>\n <span v-if=\"activeFiltersCount\">{{ activeFiltersCount }}</span>\n </button>\n\n <!-- Individual Filter Buttons -->\n <button\n v-for=\"filter in filters\"\n :key=\"filter.value\"\n @click=\"openFilter(filter.value)\"\n class=\"pd-small radius-medium bg-light cursor-pointer flex-v-center flex gap-micro\"\n :class=\"{ 'selected bg-main': isFilterActive(filter) }\"\n >\n <IconCalendar v-if=\"filter.type === 'date'\" class=\"mn-r-micro i-medium\" />\n <span class=\"t-nowrap\">{{ filter.type === 'date' && getFilterValue(filter) ? formatFilterValue(filter) : filter.title }}</span>\n <span v-if=\"getFilterValue(filter) && filter.type !== 'date'\" class=\"mn-l-micro\">\n {{ formatFilterValue(filter) }}\n </span>\n </button>\n\n <!-- All Filters Popup -->\n <Popup\n :isPopupOpen=\"showAllFilters\"\n @close-popup=\"showAllFilters = false\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"w-min-20r bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <div class=\"flex-v-center flex-nowrap flex mn-b-medium\">\n <h3 class=\"flex-child-full\">Filters</h3>\n </div>\n\n <div class=\"filters-content\">\n <div \n v-for=\"filter in filters\" \n :key=\"filter.value\"\n class=\"mn-b-medium\"\n >\n <h4 class=\"mn-b-small\">{{ filter.title }}</h4>\n \n <!-- Checkbox Filter -->\n <div v-if=\"filter.type === 'checkbox'\">\n <Checkbox\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n v-model:radio=\"tempSelected[filter.value]\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n\n <!-- Radio Filter -->\n <div v-else-if=\"filter.type === 'radio'\">\n <div\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n @click=\"tempSelected[filter.value] = option.value\"\n class=\"pd-small radius-small cursor-pointer mn-b-micro\"\n :class=\"{ \n 'bg-main': tempSelected[filter.value] === option.value,\n 'bg-light': tempSelected[filter.value] !== option.value\n }\"\n >\n {{ option.label }}\n </div>\n </div>\n\n <!-- Range Filter -->\n <div v-else-if=\"filter.type === 'range'\" class=\"flex gap-thin\">\n <Field\n v-model:field=\"tempSelected[filter.value].min\"\n :placeholder=\"filter.minPlaceholder || 'Min'\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"tempSelected[filter.value].max\"\n :placeholder=\"filter.maxPlaceholder || 'Max'\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button \n @click=\"applyAllFilters\" \n class=\"button bg-main flex-child-full\"\n >\n Apply\n </button>\n <button \n @click=\"resetFilters\" \n class=\"button bg-light\"\n >\n Reset Filters\n </button>\n </div>\n </Popup>\n\n <!-- Individual Filter Popups -->\n <Popup\n v-for=\"filter in filters\"\n :key=\"`popup-${filter.value}`\"\n :isPopupOpen=\"individualPopups[filter.value]\"\n @close-popup=\"individualPopups[filter.value] = false\"\n :align=\"isPhone() ? 'bottom center' : 'center center'\"\n class=\"bg-white radius-medium mobile:radius-zero mobile:radius-tr-medium mobile:radius-tl-medium mobile:w-100 pd-medium\"\n >\n <h4 class=\"mn-b-medium\">{{ filter.title }}</h4>\n \n <!-- Checkbox Filter -->\n <div v-if=\"filter.type === 'checkbox'\">\n <Checkbox\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n :label=\"option.label\"\n :value=\"option.value\"\n v-model:radio=\"tempSelected[filter.value]\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n\n <!-- Radio Filter -->\n <div v-else-if=\"filter.type === 'radio'\">\n <div\n v-for=\"option in filter.options\"\n :key=\"option.value\"\n @click=\"tempSelected[filter.value] = option.value\"\n class=\"pd-small radius-small cursor-pointer mn-b-micro\"\n :class=\"{ \n 'bg-main': tempSelected[filter.value] === option.value,\n 'bg-light': tempSelected[filter.value] !== option.value\n }\"\n >\n {{ option.label }}\n </div>\n </div>\n\n <!-- Range Filter -->\n <div v-else-if=\"filter.type === 'range'\" class=\"flex gap-thin\">\n <Field\n v-model:field=\"tempSelected[filter.value].min\"\n :placeholder=\"filter.minPlaceholder || 'Min'\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"tempSelected[filter.value].max\"\n :placeholder=\"filter.maxPlaceholder || 'Max'\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n\n <!-- Date Filter -->\n <div v-else-if=\"filter.type === 'date'\">\n <div class=\"mn-t-small\">\n <Calendar\n v-model:date=\"tempSelected[filter.value]\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"bg-light radius-small\"\n />\n </div>\n </div>\n\n <div class=\"flex gap-thin mn-t-medium\">\n <button \n @click=\"cancelFilter(filter.value)\" \n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyFilter(filter.value)\" \n class=\"bg-main w-100 button flex-child-full\"\n >\n Apply\n </button>\n \n \n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, reactive, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\nimport Popup from '@martyrs/src/components/Popup/Popup.vue'\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue'\nimport IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\nconst filters = defineModel('filters', {\n type: Array,\n required: true\n})\n\nconst selected = defineModel('selected', {\n type: Object,\n default: () => ({})\n})\n\nconst emit = defineEmits(['select'])\n\nconst { formatDate, returnCurrency } = useGlobalMixins()\n\n// State\nconst showAllFilters = ref(false)\nconst individualPopups = reactive({})\nconst tempSelected = reactive({})\nconst tempDateRange = ref(null)\n\n// Initialize popups and temp values\nwatch(filters, (newFilters) => {\n newFilters.forEach(filter => {\n individualPopups[filter.value] = false\n \n if (!tempSelected[filter.value]) {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = [...(selected.value[filter.value] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { ...(selected.value[filter.value] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = selected.value[filter.value] || null\n } else {\n tempSelected[filter.value] = selected.value[filter.value] || null\n }\n }\n })\n}, { immediate: true, deep: true })\n\n// Sync selected to tempSelected\nwatch(selected, (newSelected) => {\n Object.keys(newSelected).forEach(key => {\n const filter = filters.value.find(f => f.value === key)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[key] = [...(newSelected[key] || [])]\n } else if (filter.type === 'range') {\n tempSelected[key] = { ...(newSelected[key] || { min: '', max: '' }) }\n } else {\n tempSelected[key] = newSelected[key]\n }\n }\n })\n}, { deep: true })\n\n// Computed\nconst activeFiltersCount = computed(() => {\n return Object.entries(selected.value).filter(([key, value]) => {\n if (Array.isArray(value)) return value.length > 0\n if (typeof value === 'object' && value !== null) {\n return value.min || value.max\n }\n return value !== null && value !== undefined\n }).length\n})\n\n// Methods\nconst openFilter = (filterValue) => {\n individualPopups[filterValue] = true\n}\n\nconst isFilterActive = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n if (Array.isArray(value)) return value.length > 0\n if (filter.type === 'range') return value.min || value.max\n return true\n}\n\nconst getFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return false\n \n if (filter.type === 'range') {\n return value.min || value.max\n }\n \n if (filter.type === 'date') {\n return value && value.start && value.end\n }\n \n if (Array.isArray(value)) {\n return value.length > 0\n }\n \n return value\n}\n\nconst formatFilterValue = (filter) => {\n const value = selected.value[filter.value]\n if (!value) return ''\n \n if (Array.isArray(value)) {\n return `(${value.length})`\n }\n \n if (filter.type === 'range') {\n if (!value.min && !value.max) return ''\n return `${value.min || '0'}-${value.max || '∞'}`\n }\n \n if (filter.type === 'date') {\n if (!value || !value.start || !value.end) return ''\n return `${formatDate(value.start, { dayMonth: true, language: 'en' })} - ${formatDate(value.end, { dayMonth: true, language: 'en' })}`\n }\n \n if (filter.type === 'radio') {\n const option = filter.options.find(o => o.value === value)\n return option ? `(${option.label})` : ''\n }\n \n return ''\n}\n\nconst applyFilter = (filterValue) => {\n selected.value[filterValue] = tempSelected[filterValue]\n individualPopups[filterValue] = false\n emit('select', { filter: filterValue, value: tempSelected[filterValue] })\n}\n\nconst cancelFilter = (filterValue) => {\n const filter = filters.value.find(f => f.value === filterValue)\n if (filter) {\n if (filter.type === 'checkbox') {\n tempSelected[filterValue] = [...(selected.value[filterValue] || [])]\n } else if (filter.type === 'range') {\n tempSelected[filterValue] = { ...(selected.value[filterValue] || { min: '', max: '' }) }\n } else if (filter.type === 'date') {\n tempSelected[filterValue] = selected.value[filterValue] || null\n } else {\n tempSelected[filterValue] = selected.value[filterValue] || null\n }\n }\n individualPopups[filterValue] = false\n}\n\nconst applyAllFilters = () => {\n Object.entries(tempSelected).forEach(([key, value]) => {\n if (selected.value[key] !== value) {\n selected.value[key] = value\n emit('select', { filter: key, value })\n }\n })\n showAllFilters.value = false\n}\n\nconst resetFilters = () => {\n filters.value.forEach(filter => {\n if (filter.type === 'checkbox') {\n tempSelected[filter.value] = []\n selected.value[filter.value] = []\n } else if (filter.type === 'range') {\n tempSelected[filter.value] = { min: '', max: '' }\n selected.value[filter.value] = { min: '', max: '' }\n } else if (filter.type === 'date') {\n tempSelected[filter.value] = null\n selected.value[filter.value] = null\n } else {\n tempSelected[filter.value] = null\n selected.value[filter.value] = null\n }\n emit('select', { filter: filter.value, value: null })\n })\n}\n</script>\n\n<style scoped>\n.filters-content {\n max-height: 60vh;\n overflow-y: auto;\n}\n</style>"],"names":["_useModel","useGlobalMixins","ref","reactive","watch","computed"],"mappings":"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"}