@ozdao/martyrs 0.2.564 → 0.2.566

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 (366) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/dist/main-B9o1iBAZ.js +943 -0
  13. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  14. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  15. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  16. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  17. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  19. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  23. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  28. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  30. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  31. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  34. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  38. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  40. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  42. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  57. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  59. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  60. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  63. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  64. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  65. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  66. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  67. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  68. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  69. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  70. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  71. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  72. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  75. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  76. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  77. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
  78. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  80. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  81. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  82. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  83. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  84. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  85. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  86. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +2 -2
  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.js +4 -4
  90. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  92. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  93. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  95. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  96. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  98. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  99. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  100. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  101. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  103. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  105. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  106. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  107. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  108. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -3
  109. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +25 -25
  111. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  115. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  117. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  118. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  119. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  120. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +121 -206
  122. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  124. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  125. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +167 -246
  128. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  130. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +136 -221
  131. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  134. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  135. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +32 -154
  136. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  138. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  140. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  142. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  143. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  144. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  145. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  146. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  148. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  150. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  152. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  153. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  156. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  160. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  162. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  169. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  172. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  173. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  175. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  177. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  178. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  179. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  180. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  181. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  183. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  186. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  188. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  190. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  192. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  193. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  195. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  196. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  197. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  198. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  199. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  200. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  202. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  203. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  205. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  206. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  207. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  208. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  210. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  211. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  213. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  214. package/dist/martyrs.css +1 -1
  215. package/dist/martyrs.es.js +1 -1
  216. package/dist/music.server.js +44 -18
  217. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  218. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  219. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  220. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  221. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  222. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  223. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  224. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  226. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  227. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  228. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  229. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  230. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  231. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  232. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  233. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  234. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  235. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  236. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  237. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  238. package/dist/notifications.server.js +0 -3
  239. package/dist/orders.server.js +5 -6
  240. package/dist/organizations.server.js +9 -10
  241. package/dist/products.server.js +27 -26
  242. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  243. package/dist/rents.server.js +2 -3
  244. package/dist/spots.server.js +1 -1
  245. package/dist/style.css +252 -161
  246. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  247. package/package.json +1 -1
  248. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  249. package/src/builder/rspack/rspack.config.api.js +15 -4
  250. package/src/builder/rspack/rspack.config.base.js +3 -3
  251. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  252. package/src/builder/templates/page.js +2 -2
  253. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  254. package/src/components/Button/Button.vue +50 -37
  255. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  256. package/src/components/Loader/Loader.vue +1 -1
  257. package/src/components/Tree/Tree.vue +6 -3
  258. package/src/modules/LAYOUT.MD +767 -0
  259. package/src/modules/PROCESS.md +0 -0
  260. package/src/modules/TASKS.MD +17 -0
  261. package/src/modules/auth/auth.client.js +11 -7
  262. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  263. package/src/modules/auth/views/router/auth.router.js +94 -0
  264. package/src/modules/auth/views/router/users.router.js +153 -0
  265. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  266. package/src/modules/community/community.server.js +8 -0
  267. package/src/modules/community/policies/blog.policies.js +55 -0
  268. package/src/modules/community/routes/blog.routes.js +1 -1
  269. package/src/modules/community/routes/comments.routes.js +1 -1
  270. package/src/modules/community/routes/reactions.routes.js +1 -4
  271. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  272. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  273. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  274. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  275. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  276. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  277. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  278. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  279. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  280. package/src/modules/core/core.server.js +1 -0
  281. package/src/modules/core/locales/en.js +45 -0
  282. package/src/modules/core/locales/ru.js +45 -0
  283. package/src/modules/core/models/schemas/common.schema.js +1 -1
  284. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  285. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  286. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  287. package/src/modules/core/views/mixins/mixins.js +1 -2
  288. package/src/modules/core/views/router/addRoutes.js +6 -1
  289. package/src/modules/events/events.client.js +3 -0
  290. package/src/modules/events/routes/events.routes.js +1 -1
  291. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  292. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  293. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  294. package/src/modules/marketplace/marketplace.router.js +66 -0
  295. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  296. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  297. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  298. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  299. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  300. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  301. package/src/modules/music/components/pages/Album.vue +55 -67
  302. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  303. package/src/modules/music/components/pages/Playlist.vue +61 -70
  304. package/src/modules/music/components/pages/Track.vue +54 -71
  305. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  306. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  307. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  308. package/src/modules/music/components/player/Visualizer.vue +151 -0
  309. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  310. package/src/modules/music/components/player/tonar.png +0 -0
  311. package/src/modules/music/controllers/stream.controller.js +1 -1
  312. package/src/modules/music/music.server.js +1 -1
  313. package/src/modules/music/policies/music.policies.js +3 -2
  314. package/src/modules/music/router/library.router.js +26 -0
  315. package/src/modules/music/router/music.router.js +176 -0
  316. package/src/modules/music/routes/albums.routes.js +13 -12
  317. package/src/modules/music/routes/tracks.routes.js +39 -0
  318. package/src/modules/music/store/albums.js +10 -2
  319. package/src/modules/music/store/player.js +101 -89
  320. package/src/modules/music/store/tracks.js +5 -21
  321. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  322. package/src/modules/notifications/notifications.server.js +1 -3
  323. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  324. package/src/modules/orders/orders.server.js +0 -1
  325. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  326. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  327. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  328. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  329. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  330. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  331. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  332. package/src/modules/products/components/pages/Categories.vue +9 -6
  333. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  334. package/src/modules/products/components/pages/Product.vue +11 -5
  335. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  336. package/src/modules/products/controllers/categories.controller.js +32 -27
  337. package/src/modules/products/routes/categories.routes.js +1 -1
  338. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  339. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  340. package/src/modules/spots/components/pages/Map.vue +2 -2
  341. package/src/styles/config.scss +6 -6
  342. package/dist/abac-DYoheWuc.js +0 -1031
  343. package/dist/core.abac-DUPBnlk6.js +0 -298
  344. package/dist/core.logger-C3q8A9dl.js +0 -51
  345. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  346. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  347. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  348. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  349. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  350. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  351. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  352. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  353. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  354. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  355. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  356. package/src/modules/auth/auth.router.js +0 -262
  357. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  358. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  359. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  360. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  361. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  362. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  363. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  364. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  365. package/src/modules/governance/reactcode/eslint.config.js +0 -28
  366. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
@@ -1,9 +1,9 @@
1
1
  import { useModel, ref, createElementBlock, openBlock, Fragment, createVNode, withCtx, createBlock, unref, renderList } from "vue";
2
2
  import { useRoute } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
4
- /* empty css */
5
- import _sfc_main$3 from "../../../icons/navigation/IconCross.vue.js";
6
4
  /* empty css */
5
+ import _sfc_main$3 from "../../../icons/navigation/IconCross.vue.js";
6
+ /* empty css */
7
7
  import _sfc_main$6 from "../../../../components/Popup/Popup.vue.js";
8
8
  import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
9
9
  import _sfc_main$4 from "../../../core/views/components/blocks/BlockSearch.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, computed, createElementBlock, createCommentVNode, openBlock, createVNode, createElementVNode, createTextVNode, toDisplayString, Fragment, renderList, unref, normalizeClass, withCtx, createBlock } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
4
- import Select from "../../../../components/Select/Select.vue2.js";
3
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
4
+ import Select from "../../../../components/Select/Select.vue.js";
5
5
  import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
6
6
  import IconTime from "../../../icons/entities/IconTime.vue.js";
7
7
  import _sfc_main$3 from "../blocks/CardOrderItem.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, onMounted, watch, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, unref, toDisplayString, createVNode, Fragment, renderList, withCtx, createTextVNode } from "vue";
2
- import _sfc_main$9 from "../../../../components/Button/Button.vue.js";
2
+ import _sfc_main$9 from "../../../../components/Button/Button.vue2.js";
3
3
  import _sfc_main$7 from "../blocks/CardOrderItem.vue.js";
4
4
  import _sfc_main$1 from "../sections/AskToLogin.vue.js";
5
5
  import _sfc_main$3 from "../sections/Succes.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { getCurrentInstance, computed, ref, onMounted, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, withCtx, createElementVNode, createTextVNode, unref, Fragment, renderList, toDisplayString } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- /* empty css */
4
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
3
+ /* empty css */
4
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
5
5
  import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
6
6
  import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
7
7
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { createElementBlock, openBlock, createVNode, createElementVNode, withCtx, toDisplayString, createCommentVNode, unref, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
3
  import StatusBadge from "../../../../components/Table/StatusBadge.vue.js";
4
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
4
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
5
5
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
6
6
  /* empty css */
7
7
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,7 +1,7 @@
1
1
  import { createElementBlock, openBlock, createVNode, createElementVNode, withCtx, toDisplayString, createCommentVNode, unref, Fragment, renderList, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
3
  import StatusBadge from "../../../../components/Table/StatusBadge.vue.js";
4
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
4
+ import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
5
5
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
6
6
  /* empty css */
7
7
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
@@ -1,10 +1,10 @@
1
1
  import { watch, onMounted, computed, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, Fragment, renderList } from "vue";
2
2
  import { useRoute } from "vue-router";
3
- /* empty css */
3
+ /* empty css */
4
4
  /* empty css */
5
5
  /* empty css */
6
6
  /* empty css */
7
- import Field from "../../../../components/Field/Field.vue2.js";
7
+ import Field from "../../../../components/Field/Field.vue.js";
8
8
  import _sfc_main$2 from "../../../../components/Radio/Radio.vue.js";
9
9
  /* empty css */
10
10
  /* empty css */
@@ -1,6 +1,6 @@
1
1
  import { computed, createBlock, openBlock, withCtx, createElementVNode, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
- import Select from "../../../../components/Select/Select.vue2.js";
3
+ import Select from "../../../../components/Select/Select.vue.js";
4
4
  const _hoisted_1 = { class: "mn-b-small flex-nowrap flex" };
5
5
  const _sfc_main = {
6
6
  __name: "FormPayment",
@@ -74,7 +74,7 @@ const _sfc_main = {
74
74
  return (_ctx, _cache) => {
75
75
  return openBlock(), createElementBlock("div", {
76
76
  class: "o-hidden pos-relative cursor-pointer bg-light",
77
- onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.push({ name: "Organization", params: { _id: __props.organization._id } }))
77
+ onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$router.push("/organizations/" + __props.organization._id))
78
78
  }, [
79
79
  createElementVNode("div", _hoisted_1, [
80
80
  __props.organization.profile.photo && __props.organization.profile.photo.length > 0 ? (openBlock(), createElementBlock("img", {
@@ -1 +1 @@
1
- {"version":3,"file":"CardOrganization.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/CardOrganization.vue"],"sourcesContent":["<template>\n <div \n class=\"o-hidden pos-relative cursor-pointer bg-light \"\n @click=\"$router.push({name: 'Organization', params: {_id: organization._id}})\"\n >\n <div class=\"h-4r flex pos-relative\">\n\n <img loading=\"lazy\" \n v-if=\"organization.profile.photo && organization.profile.photo.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + organization.profile.photo\" \n class=\"h-4r w-4r radius-extra bg-white\" \n style=\"flex: 0 1 auto\"\n />\n\n <PlaceholderOrganizationPic\n v-else\n class=\"w-4r h-max radius-medium\"\n style=\"flex: 0 1 auto\"\n />\n \n <div class=\"pos-relative w-100 flex-h-center flex flex-column flex-child-1 flex-child mn-l-thin w-100\">\n \n <!-- <Text :text=\"organization.profile.name ? organization.profile.name : ''\" :maxLen=\"18\" class=\"h3 d-block\"/> -->\n <p class=\"h4 t-truncate w-100\">{{organization.profile.name}}</p>\n <!-- RATING -->\n <!-- <div v-if=\"showRating && organization.rating\" class=\"w-max star-container flex-v-center flex\">\n <img loading=\"lazy\" \n v-for=\"i in 5\"\n class=\"i-small mn-r-thin\"\n :src=\"i <= organization.rating.median ? '/icons/star.svg' : '/icons/star-stroke.svg'\"\n >\n\n <span class=\"p-small t-semi mn-r-thin\">{{organization.rating.median}}</span>\n <span class=\"p-small\">({{organization.rating.amount}})</span>\n </div> -->\n\n <div v-if=\"showFollowers || showTags\" class=\"mn-t-micro gap-micro flex-nowrap flex\">\n\n <Chips \n v-if=\"showTags && organization.profile.tags?.length > 0\" \n :chips=\"organization.profile.tags.slice(0,3)\"\n class=\"pos-relative t-trimmed\"\n >\n <div v-if=\"showFollowers\" class=\"t-truncate pos-relative p-regular mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <p class=\"t-truncate\">{{organization.numberOfSubscribers}} followers</p>\n\n <ButtonToggleMembership\n v-if=\"\n user?._id \n && organization.owner !== user._id\n \"\n :user=\"user._id\"\n :type=\"'organization'\" \n :role=\"'subscriber'\" \n :target=\"organization._id\" \n :status=\"organization.isSubscriber\" \n :text=\"{create: '+', remove: '-'}\"\n @updateMembership=\"event => emits('updateMembership', event, 'isSubscriber', 'numberOfSubscribers')\"\n class=\"i-medium\" \n />\n </div>\n </Chips>\n </div>\n\n </div>\n\n </div>\n\n\n <div \n v-if=\"showProducts && organization.products\" \n class=\"mn-b-small t-nowrap mn-t-small w-100 flex-nowrap flex flex-v-center pd-small bg-white radius-medium\"\n >\n <IconTime class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-micro\">\n {{\n organization.distance ? \n organization.distance > 50 ? \n '3-5 days' : \n Math.ceil((5 + 5 + 3 * organization.distance) / 5) * 5 \n + '-' \n + Math.ceil((15 + 5 + 3 * organization.distance) / 5) * 5 \n + ' MIN' : 'Unavailable' \n }} \n </span>\n\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"t-transp t-grey mn-r-micro\">|</span>\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"mn-r-thin\">{{organization.distance ? organization.distance.toFixed(1) + 'KM' : ''}}</span>\n <!-- <span class=\"mn-r-thin\">{{organization.nearestSpotDistance}}</span> -->\n <!-- <IconPrice class=\"i-medium mn-r-micro\"/> -->\n <!-- <span class=\"mn-r-thin\">{{returnCurrency()}}500 </span> -->\n <IconShopcart class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-thin\"> {{organization.products.length}} products</span>\n </div>\n\n <div v-if=\"showProducts && organization.products?.length > 0\" class=\"w-100 o-scroll scroll-hide radius-medium\">\n <div class=\"w-max flex-nowrap flex gap-thin\">\n <CardOrderItem\n @click.stop=\"$router.push(`/organizations/${organization._id}/products/${product._id}`)\"\n v-for=\"product in organization.products.slice(0,5)\"\n :key=\"product._id\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variants?.[0]?._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.variants?.[0]?.quantity || 1\"\n :unit=\"product.variants?.[0]?.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.variants?.[0]?.price\"\n class=\"pd-thin w-15r radius-medium bg-white\"\n\n />\n <button class=\"pd-thin w-15r radius-medium bg-main button\">\n View menu\n </button>\n </div>\n </div>\n\n </div>\n</template>\n\n<script setup>\n import { ref } from 'vue'\n import { useRouter } from 'vue-router'\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n import Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n import PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\n import IconPrice from '@martyrs/src/modules/icons/entities/IconPrice.vue'\n import IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n import ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n const props = defineProps({\n // Model\n user: String,\n organization: Object,\n // View\n showProducts: {\n type: Boolean,\n default: false\n },\n showFollowers: {\n type: Boolean,\n default: true\n },\n showRating: {\n type: Boolean,\n default: false\n },\n showFeatured: {\n type: Boolean,\n default: true\n },\n showTags: {\n type: Boolean,\n default: true\n },\n });\n\n const emits = defineEmits(['updateMembership'])\n\n const router = useRouter();\n</script>\n\n<style>\n\n.t-trimmed {\n font-size: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsKE,UAAM,QAAQ;AAEC,cAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardOrganization.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/CardOrganization.vue"],"sourcesContent":["<template>\n <div\n class=\"o-hidden pos-relative cursor-pointer bg-light \"\n @click=\"$router.push('/organizations/' + organization._id)\"\n >\n <div class=\"h-4r flex pos-relative\">\n\n <img loading=\"lazy\" \n v-if=\"organization.profile.photo && organization.profile.photo.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + organization.profile.photo\" \n class=\"h-4r w-4r radius-extra bg-white\" \n style=\"flex: 0 1 auto\"\n />\n\n <PlaceholderOrganizationPic\n v-else\n class=\"w-4r h-max radius-medium\"\n style=\"flex: 0 1 auto\"\n />\n \n <div class=\"pos-relative w-100 flex-h-center flex flex-column flex-child-1 flex-child mn-l-thin w-100\">\n \n <!-- <Text :text=\"organization.profile.name ? organization.profile.name : ''\" :maxLen=\"18\" class=\"h3 d-block\"/> -->\n <p class=\"h4 t-truncate w-100\">{{organization.profile.name}}</p>\n <!-- RATING -->\n <!-- <div v-if=\"showRating && organization.rating\" class=\"w-max star-container flex-v-center flex\">\n <img loading=\"lazy\" \n v-for=\"i in 5\"\n class=\"i-small mn-r-thin\"\n :src=\"i <= organization.rating.median ? '/icons/star.svg' : '/icons/star-stroke.svg'\"\n >\n\n <span class=\"p-small t-semi mn-r-thin\">{{organization.rating.median}}</span>\n <span class=\"p-small\">({{organization.rating.amount}})</span>\n </div> -->\n\n <div v-if=\"showFollowers || showTags\" class=\"mn-t-micro gap-micro flex-nowrap flex\">\n\n <Chips \n v-if=\"showTags && organization.profile.tags?.length > 0\" \n :chips=\"organization.profile.tags.slice(0,3)\"\n class=\"pos-relative t-trimmed\"\n >\n <div v-if=\"showFollowers\" class=\"t-truncate pos-relative p-regular mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <p class=\"t-truncate\">{{organization.numberOfSubscribers}} followers</p>\n\n <ButtonToggleMembership\n v-if=\"\n user?._id \n && organization.owner !== user._id\n \"\n :user=\"user._id\"\n :type=\"'organization'\" \n :role=\"'subscriber'\" \n :target=\"organization._id\" \n :status=\"organization.isSubscriber\" \n :text=\"{create: '+', remove: '-'}\"\n @updateMembership=\"event => emits('updateMembership', event, 'isSubscriber', 'numberOfSubscribers')\"\n class=\"i-medium\" \n />\n </div>\n </Chips>\n </div>\n\n </div>\n\n </div>\n\n\n <div \n v-if=\"showProducts && organization.products\" \n class=\"mn-b-small t-nowrap mn-t-small w-100 flex-nowrap flex flex-v-center pd-small bg-white radius-medium\"\n >\n <IconTime class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-micro\">\n {{\n organization.distance ? \n organization.distance > 50 ? \n '3-5 days' : \n Math.ceil((5 + 5 + 3 * organization.distance) / 5) * 5 \n + '-' \n + Math.ceil((15 + 5 + 3 * organization.distance) / 5) * 5 \n + ' MIN' : 'Unavailable' \n }} \n </span>\n\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"t-transp t-grey mn-r-micro\">|</span>\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"mn-r-thin\">{{organization.distance ? organization.distance.toFixed(1) + 'KM' : ''}}</span>\n <!-- <span class=\"mn-r-thin\">{{organization.nearestSpotDistance}}</span> -->\n <!-- <IconPrice class=\"i-medium mn-r-micro\"/> -->\n <!-- <span class=\"mn-r-thin\">{{returnCurrency()}}500 </span> -->\n <IconShopcart class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-thin\"> {{organization.products.length}} products</span>\n </div>\n\n <div v-if=\"showProducts && organization.products?.length > 0\" class=\"w-100 o-scroll scroll-hide radius-medium\">\n <div class=\"w-max flex-nowrap flex gap-thin\">\n <CardOrderItem\n @click.stop=\"$router.push(`/organizations/${organization._id}/products/${product._id}`)\"\n v-for=\"product in organization.products.slice(0,5)\"\n :key=\"product._id\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variants?.[0]?._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.variants?.[0]?.quantity || 1\"\n :unit=\"product.variants?.[0]?.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.variants?.[0]?.price\"\n class=\"pd-thin w-15r radius-medium bg-white\"\n\n />\n <button class=\"pd-thin w-15r radius-medium bg-main button\">\n View menu\n </button>\n </div>\n </div>\n\n </div>\n</template>\n\n<script setup>\n import { ref } from 'vue'\n import { useRouter } from 'vue-router'\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n import Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n import PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\n import IconPrice from '@martyrs/src/modules/icons/entities/IconPrice.vue'\n import IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n import ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n const props = defineProps({\n // Model\n user: String,\n organization: Object,\n // View\n showProducts: {\n type: Boolean,\n default: false\n },\n showFollowers: {\n type: Boolean,\n default: true\n },\n showRating: {\n type: Boolean,\n default: false\n },\n showFeatured: {\n type: Boolean,\n default: true\n },\n showTags: {\n type: Boolean,\n default: true\n },\n });\n\n const emits = defineEmits(['updateMembership'])\n\n const router = useRouter();\n</script>\n\n<style>\n\n.t-trimmed {\n font-size: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsKE,UAAM,QAAQ;AAEC,cAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { createBlock, openBlock, withCtx, createTextVNode, toDisplayString } from "vue";
2
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
2
+ import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
3
3
  import membershipsStore from "../../store/memberships.store.js";
4
4
  const _sfc_main = {
5
5
  __name: "ButtonToggleMembership",
@@ -1,5 +1,5 @@
1
1
  import { ref, createElementBlock, openBlock, createElementVNode, createVNode, createCommentVNode, withCtx, Fragment, renderList, normalizeClass, createBlock, toDisplayString, createTextVNode } from "vue";
2
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
2
+ import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
3
3
  import _sfc_main$1 from "../../../../components/Feed/Feed.vue.js";
4
4
  import PlaceholderUserpic from "../../../icons/placeholders/PlaceholderUserpic.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/navigation/IconCheck.vue.js";
@@ -1,9 +1,9 @@
1
1
  import { computed, ref, reactive, createElementBlock, openBlock, createVNode, createElementVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, toDisplayString, createCommentVNode, unref, normalizeClass } from "vue";
2
2
  import { useRoute } from "vue-router";
3
3
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
4
- import Field from "../../../../components/Field/Field.vue2.js";
4
+ import Field from "../../../../components/Field/Field.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Checkbox/Checkbox.vue.js";
6
- import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
6
+ import _sfc_main$6 from "../../../../components/Button/Button.vue2.js";
7
7
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
8
8
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
9
9
  import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, Fragment, renderList, withCtx } from "vue";
2
- import Field from "../../../../components/Field/Field.vue2.js";
3
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
2
+ import Field from "../../../../components/Field/Field.vue.js";
3
+ import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
4
4
  import _sfc_main$2 from "../../../icons/navigation/IconDelete.vue.js";
5
5
  import _sfc_main$1 from "../../../icons/navigation/IconAdd.vue.js";
6
6
  const _hoisted_1 = { class: "mn-b-thin t-transp p-regular" };
@@ -5,7 +5,7 @@ import "vue-i18n";
5
5
  /* empty css */
6
6
  import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue.js";
7
7
  import _sfc_main$7 from "../../../../components/Chips/Chips.vue.js";
8
- /* empty css */
8
+ /* empty css */
9
9
  import "../../../../components/Menu/MenuItem.vue.js";
10
10
  import _sfc_main$6 from "../../../icons/entities/IconFollowing.vue.js";
11
11
  import _sfc_main$5 from "../../../icons/navigation/IconEdit.vue.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, withCtx, createBlock, createCommentVNode, unref, createElementVNode } from "vue";
2
- import _sfc_main$1 from "../../../../components/Menu/Menu.vue.js";
2
+ import _sfc_main$1 from "../../../../components/Menu/Menu.vue2.js";
3
3
  import _sfc_main$2 from "../../../../components/Menu/MenuItem.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$4 from "../../../icons/entities/IconProducts.vue.js";
6
6
  import _sfc_main$8 from "../../../icons/entities/IconEvents.vue.js";
7
7
  import _sfc_main$3 from "../../../icons/entities/IconGroups.vue.js";
@@ -4,11 +4,11 @@ import "vue-i18n";
4
4
  /* empty css */
5
5
  import _sfc_main$2 from "../../../../components/FieldTags/BlockTags.vue.js";
6
6
  /* empty css */
7
- import Field from "../../../../components/Field/Field.vue2.js";
8
- /* empty css */
9
- import _sfc_main$1 from "../../../../components/SelectMulti/SelectMulti.vue.js";
7
+ import Field from "../../../../components/Field/Field.vue.js";
8
+ /* empty css */
9
+ import _sfc_main$1 from "../../../../components/SelectMulti/SelectMulti.vue2.js";
10
10
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
11
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
11
+ import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
12
12
  /* empty css */
13
13
  import { state as state$1 } from "../../../auth/views/store/auth.js";
14
14
  import { actions, state } from "../../store/organizations.js";
@@ -34,7 +34,7 @@ const _sfc_main = {
34
34
  }
35
35
  }
36
36
  function redirectTo() {
37
- router.replace({ name: "Organization", params: { _id: state.current._id } });
37
+ router.replace("/organizations/" + state.current._id);
38
38
  }
39
39
  return (_ctx, _cache) => {
40
40
  return openBlock(), createElementBlock("div", _hoisted_1, [
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationEdit.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/OrganizationEdit.vue"],"sourcesContent":["<template>\n<div class=\"for-transition pd-thin\">\n \n <h3 class=\"mn-b-small\">Type of group</h3>\n <p class=\"mn-b-thin\">Public groups are open to everyone, whereas in exclusive groups only members can post. If you wish to make a group private, select 'hidden'.</p>\n \n <SelectMulti\n v-model=\"organization.state.current.types\"\n :options=\"['public','exclusive','hidden']\"\n :multiple=\"false\"\n :taggable=\"false\"\n placeholder=\"Type to search or add type of organization\"\n class=\"mn-b-semi bg-light pd-medium radius-small\" \n />\n\n\n <h3 class=\"mn-b-small\">Profile</h3>\n\n <div class=\"mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex\">\n <UploadImage \n v-model:photo=\"organization.state.current.profile.photo\"\n :uploadPath=\"'organizations/' + organization.state.current._id + '/avatars'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload photo</h4>\n </div>\n\n <Field \n v-model:field=\"organization.state.current.profile.name\" \n placeholder=\"Name of organization\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <Field \n v-model:field=\"organization.state.current.profile.description\" \n placeholder=\"Brief description of your group\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <BlockTags\n @tags-changed=\"newTags => organization.state.current.profile.tags = newTags\"\n :tags=\"organization.state.current.profile.tags\"\n class=\"mn-b-small\"\n />\n\n <h3 class=\"mn-b-small\">Contacts</h3>\n <Field \n v-model:field=\"organization.state.current.contacts.email\"\n label=\"Email\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.website\"\n label=\"Website\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.phone\"\n label=\"Phone\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.address\"\n label=\"Address\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <h3 class=\"mn-b-small\">Socials</h3>\n <p class=\"mn-b-thin\">Please provide only the username for social media profiles, without full links.</p>\n\n <Field \n v-model:field=\"organization.state.current.socials.instagram\"\n label=\"Instagram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.twitter\"\n label=\"Twitter\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.facebook\"\n label=\"Facebook\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.telegram\"\n label=\"Telegram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.youtube\"\n label=\"Youtube\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n \n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"bg-main w-100 mn-b-thin\">Save</Button>\n <!-- <Button :submit=\"onDelete\" :callback=\"redirectDash\" class=\"mn-b-thin bg-fourth\">Delete</Button> -->\n\n</div>\n\n</template>\n\n<script setup>\n import { onMounted, computed } from 'vue';\n\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n import BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\n import Tab from '@martyrs/src/components/Tab/Tab.vue';\n import Field from '@martyrs/src/components/Field/Field.vue';\n import Select from '@martyrs/src/components/Select/Select.vue';\n import SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue'\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Button from '@martyrs/src/components/Button/Button.vue';\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\n const route = useRoute()\n const router = useRouter()\n\n organization.actions.reset();\n\n onMounted(async()=>{\n if (route.params._id) {\n await organization.actions.read({ _id: route.params._id });\n } \n })\n \n const organizationData = computed(() => organization.state.current)\n\n async function onSubmit() {\n if (route.params._id) {\n await organization.actions.update(route.params._id, organizationData.value)\n } else {\n await organization.actions.create(organization.state.current, auth.state.user._id)\n }\n }\n\n async function onDelete() {\n if (route.params._id) {\n await organization.actions.remove(route.params._id)\n router.push({name: 'Organization'})\n }\n }\n\n function redirectTo () {\n router.replace({ name: 'Organization', params: { _id: organization.state.current._id }});\n }\n</script>"],"names":["organization.actions","organization.state","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAmIE,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExBA,YAAqB,MAAK;AAE1B,cAAU,YAAS;AACjB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMA,QAAqB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC3D;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,SAAS,MAAMC,MAAmB,OAAO;AAElE,mBAAe,WAAW;AACxB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMD,QAAqB,OAAO,MAAM,OAAO,KAAK,iBAAiB,KAAK;AAAA,MAC5E,OAAO;AACL,cAAMA,QAAqB,OAAOC,MAAmB,SAASC,QAAW,KAAK,GAAG;AAAA,MACnF;AAAA,IACF;AASA,aAAS,aAAc;AACrB,aAAO,QAAQ,EAAE,MAAM,gBAAgB,QAAQ,EAAE,KAAKD,MAAmB,QAAQ,IAAG,EAAE,CAAC;AAAA,IACzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"OrganizationEdit.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/OrganizationEdit.vue"],"sourcesContent":["<template>\n<div class=\"for-transition pd-thin\">\n \n <h3 class=\"mn-b-small\">Type of group</h3>\n <p class=\"mn-b-thin\">Public groups are open to everyone, whereas in exclusive groups only members can post. If you wish to make a group private, select 'hidden'.</p>\n \n <SelectMulti\n v-model=\"organization.state.current.types\"\n :options=\"['public','exclusive','hidden']\"\n :multiple=\"false\"\n :taggable=\"false\"\n placeholder=\"Type to search or add type of organization\"\n class=\"mn-b-semi bg-light pd-medium radius-small\" \n />\n\n\n <h3 class=\"mn-b-small\">Profile</h3>\n\n <div class=\"mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex\">\n <UploadImage \n v-model:photo=\"organization.state.current.profile.photo\"\n :uploadPath=\"'organizations/' + organization.state.current._id + '/avatars'\"\n class=\"h-4r w-4r aspect-1x1 o-hidden mn-b-thin radius-extra\" \n />\n <h4>Upload photo</h4>\n </div>\n\n <Field \n v-model:field=\"organization.state.current.profile.name\" \n placeholder=\"Name of organization\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <Field \n v-model:field=\"organization.state.current.profile.description\" \n placeholder=\"Brief description of your group\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <BlockTags\n @tags-changed=\"newTags => organization.state.current.profile.tags = newTags\"\n :tags=\"organization.state.current.profile.tags\"\n class=\"mn-b-small\"\n />\n\n <h3 class=\"mn-b-small\">Contacts</h3>\n <Field \n v-model:field=\"organization.state.current.contacts.email\"\n label=\"Email\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.website\"\n label=\"Website\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.phone\"\n label=\"Phone\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.contacts.address\"\n label=\"Address\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n\n <h3 class=\"mn-b-small\">Socials</h3>\n <p class=\"mn-b-thin\">Please provide only the username for social media profiles, without full links.</p>\n\n <Field \n v-model:field=\"organization.state.current.socials.instagram\"\n label=\"Instagram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.twitter\"\n label=\"Twitter\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.facebook\"\n label=\"Facebook\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.telegram\"\n label=\"Telegram\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n <Field \n v-model:field=\"organization.state.current.socials.youtube\"\n label=\"Youtube\" \n placeholder=\"\" \n class=\"mn-b-thin bg-light pd-medium radius-small\" \n />\n \n \n <Button :submit=\"onSubmit\" :callback=\"redirectTo\" class=\"bg-main w-100 mn-b-thin\">Save</Button>\n <!-- <Button :submit=\"onDelete\" :callback=\"redirectDash\" class=\"mn-b-thin bg-fourth\">Delete</Button> -->\n\n</div>\n\n</template>\n\n<script setup>\n import { onMounted, computed } from 'vue';\n\n import { useRoute, useRouter } from 'vue-router';\n\n import Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n import BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'\n import Tab from '@martyrs/src/components/Tab/Tab.vue';\n import Field from '@martyrs/src/components/Field/Field.vue';\n import Select from '@martyrs/src/components/Select/Select.vue';\n import SelectMulti from '@martyrs/src/components/SelectMulti/SelectMulti.vue'\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Button from '@martyrs/src/components/Button/Button.vue';\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n import membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\n const route = useRoute()\n const router = useRouter()\n\n organization.actions.reset();\n\n onMounted(async()=>{\n if (route.params._id) {\n await organization.actions.read({ _id: route.params._id });\n } \n })\n \n const organizationData = computed(() => organization.state.current)\n\n async function onSubmit() {\n if (route.params._id) {\n await organization.actions.update(route.params._id, organizationData.value)\n } else {\n await organization.actions.create(organization.state.current, auth.state.user._id)\n }\n }\n\n async function onDelete() {\n if (route.params._id) {\n await organization.actions.remove(route.params._id)\n router.push('/organizations/' + route.params._id)\n }\n }\n\n function redirectTo () {\n router.replace('/organizations/' + organization.state.current._id);\n }\n</script>"],"names":["organization.actions","organization.state","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAmIE,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExBA,YAAqB,MAAK;AAE1B,cAAU,YAAS;AACjB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMA,QAAqB,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,MAC3D;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,SAAS,MAAMC,MAAmB,OAAO;AAElE,mBAAe,WAAW;AACxB,UAAI,MAAM,OAAO,KAAK;AACpB,cAAMD,QAAqB,OAAO,MAAM,OAAO,KAAK,iBAAiB,KAAK;AAAA,MAC5E,OAAO;AACL,cAAMA,QAAqB,OAAOC,MAAmB,SAASC,QAAW,KAAK,GAAG;AAAA,MACnF;AAAA,IACF;AASA,aAAS,aAAc;AACrB,aAAO,QAAQ,oBAAoBD,MAAmB,QAAQ,GAAG;AAAA,IACnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,10 +1,10 @@
1
1
  import { ref, watchEffect, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, Fragment, renderList, unref, toDisplayString, withCtx } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
- import Field from "../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../components/Field/Field.vue.js";
4
4
  /* empty css */
5
- /* empty css */
6
- import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
7
5
  /* empty css */
6
+ import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
7
+ /* empty css */
8
8
  /* empty css */
9
9
  const _hoisted_1 = { class: "documents" };
10
10
  const _hoisted_2 = { class: "mn-b-big cols-4" };
@@ -1,7 +1,7 @@
1
1
  import { ref, resolveDirective, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withDirectives, createCommentVNode, isRef, unref, withCtx, Fragment, renderList, createBlock } from "vue";
2
- import Field from "../../../../components/Field/Field.vue2.js";
3
- /* empty css */
4
- import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
2
+ import Field from "../../../../components/Field/Field.vue.js";
3
+ /* empty css */
4
+ import _sfc_main$6 from "../../../../components/Button/Button.vue2.js";
5
5
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
6
6
  import _sfc_main$1 from "../../../core/views/components/blocks/BlockSearch.vue.js";
7
7
  import _sfc_main$3 from "../../../auth/views/components/blocks/CardUser.vue.js";
@@ -2,10 +2,10 @@ import { ref, withAsyncContext, watch, createElementBlock, openBlock, createElem
2
2
  import { useRouter, useRoute } from "vue-router";
3
3
  import "../../../../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.js";
4
4
  /* empty css */
5
- /* empty css */
6
- /* empty css */
7
- /* empty css */
5
+ /* empty css */
8
6
  /* empty css */
7
+ /* empty css */
8
+ /* empty css */
9
9
  import _sfc_main$2 from "../blocks/CardOrganization.vue.js";
10
10
  import _sfc_main$1 from "../blocks/EmptyState.vue.js";
11
11
  import "./Unit.vue.js";
@@ -1,9 +1,9 @@
1
1
  import { ref, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, createVNode, createBlock, unref, withCtx, createTextVNode, toDisplayString, Fragment, renderList } from "vue";
2
2
  import _sfc_main$1 from "../../../../icons/navigation/IconEdit.vue.js";
3
3
  import _sfc_main$2 from "../../../../icons/navigation/IconAdd.vue.js";
4
- /* empty css */
5
4
  /* empty css */
6
- /* empty css */
5
+ /* empty css */
6
+ /* empty css */
7
7
  import { useRouter } from "vue-router";
8
8
  /* empty css */
9
9
  const _hoisted_1 = { class: "flex flex-nowrap gap-thin card-page-title" };
@@ -2,8 +2,8 @@ import { ref, onMounted, createElementBlock, createCommentVNode, openBlock, crea
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useGlobalMixins } from "../../../../core/views/mixins/mixins.js";
4
4
  import { actions, state } from "../../store/pages.js";
5
- import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
6
- /* empty css */
5
+ import _sfc_main$2 from "../../../../../components/Button/Button.vue2.js";
6
+ /* empty css */
7
7
  /* empty css */
8
8
  /* empty css */
9
9
  import _sfc_main$1 from "../../../../constructor/components/sections/Constructor.vue.js";
@@ -2,7 +2,7 @@ import { computed, ref, onMounted, createBlock, createCommentVNode, openBlock, w
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../../components/Block/Block.vue.js";
4
4
  import _sfc_main$3 from "../../../../../components/Popup/Popup.vue.js";
5
- import _sfc_main$5 from "../../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$5 from "../../../../../components/Button/Button.vue2.js";
6
6
  import _sfc_main$4 from "../../../../constructor/components/sections/Constructor.vue.js";
7
7
  import _sfc_main$2 from "../blocks/CardPage.vue.js";
8
8
  import { actions } from "../../store/pages.js";
@@ -6,7 +6,7 @@ import _sfc_main$2 from "../../../icons/navigation/IconDelete.vue.js";
6
6
  const _hoisted_1 = { class: "flex-v-center bg-light pd-small radius-small flex-column flex" };
7
7
  const _hoisted_2 = { class: "w-100 flex-v-center flex-nowrap gap-thin flex" };
8
8
  const _hoisted_3 = ["src"];
9
- const _hoisted_4 = { class: "my-handle word-break t-truncate w-100 w-max-100 mn-r-auto" };
9
+ const _hoisted_4 = { class: "my-handle t-truncate w-100 w-max-100 mn-r-auto" };
10
10
  const _sfc_main = {
11
11
  __name: "CardCategory",
12
12
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"CardCategory.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n v-if=\"access\"\n :to=\"{\n name: route.meta.context === 'backoffice' ? 'BackofficeCategoryEdit' : 'Organization_CategoryEdit',\n params: {\n _id: route.params._id,\n category: category._id\n }\n }\"\n class=\"\n i-medium\n cursor-pointer\n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\"\n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n v-if=\"access\"\n @click=\"deleteCategory(category)\"\n class=\"\n i-medium\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n access: {\n type: Boolean,\n default: false\n }\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8EA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardCategory.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n v-if=\"access\"\n :to=\"{\n name: route.meta.context === 'backoffice' ? 'BackofficeCategoryEdit' : 'Organization_CategoryEdit',\n params: {\n _id: route.params._id,\n category: category._id\n }\n }\"\n class=\"\n i-medium\n cursor-pointer\n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\"\n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n v-if=\"access\"\n @click=\"deleteCategory(category)\"\n class=\"\n i-medium\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n access: {\n type: Boolean,\n default: false\n }\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8EA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
- import { resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, withCtx, createVNode, renderSlot, toDisplayString } from "vue";
1
+ import { computed, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, withCtx, createVNode, renderSlot, toDisplayString } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
+ import { useRoute } from "vue-router";
3
4
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
4
5
  import _sfc_main$4 from "../../../icons/actions/IconShopcartAdd.vue.js";
5
6
  import _sfc_main$2 from "../elements/THC.vue.js";
@@ -60,13 +61,25 @@ const _sfc_main = {
60
61
  }
61
62
  },
62
63
  setup(__props) {
64
+ const route = useRoute();
65
+ const props = __props;
63
66
  const { t } = useI18n();
67
+ const editPath = computed(() => {
68
+ if (route.meta.context === "backoffice") {
69
+ return `/backoffice/products/${props.product._id}/edit`;
70
+ }
71
+ if (route.meta.context === "organization" || props.organization) {
72
+ const orgId = props.organization || route.params._id;
73
+ return `/organizations/${orgId}/products/${props.product._id}/edit`;
74
+ }
75
+ return `/products/${props.product._id}/edit`;
76
+ });
64
77
  return (_ctx, _cache) => {
65
78
  const _component_router_link = resolveComponent("router-link");
66
79
  return openBlock(), createElementBlock("div", _hoisted_1, [
67
80
  __props.access ? (openBlock(), createBlock(_component_router_link, {
68
81
  key: 0,
69
- to: __props.organization ? { name: "Organization_ProductEdit", params: { id: __props.organization, product: __props.product._id } } : { name: "ProductEdit", params: { product: __props.product._id } },
82
+ to: editPath.value,
70
83
  class: "z-index-2 cursor-pointer pos-absolute pos-t-regular pos-r-regular radius-extra pd-thin bg-second"
71
84
  }, {
72
85
  default: withCtx(() => [
@@ -1 +1 @@
1
- {"version":3,"file":"CardProduct.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardProduct.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"\n\t\t\tradius-medium \n\t\t\tcols-1\n\t\t\to-hidden\n\t\t\tpos-relative\n\t\t\"\n\t>\n\t\t<!-- Edit Button -->\n\t\t<router-link\n\t\t\tv-if=\"access\"\n :to=\"organization ? { name: 'Organization_ProductEdit', params: { id: organization, product: product._id } } : { name: 'ProductEdit', params: { product: product._id } }\"\n class=\"\n \tz-index-2\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-medium\"\n classes=\"fill-white\"\n />\n </router-link>\n\n\t\t<!-- Product Image Sqaure -->\n\t\t<div \n\t\t\tclass=\"o-hidden d-flex pd-thin pd-b-zero radius-medium o-hidden w-100 pos-relative aspect-1x1\"\n\t\t>\n\t\t\t<div class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<!-- Image Wrappers -->\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"product.images?.[0]\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + (product.images?.[0] || '').split('/').slice(0, -1).join('/') + '/thumbnail_' + (product.images?.[0] || '').split('/').pop()\"\n\t\t\t\t\tclass=\"pos-absolute object-fit-cover radius-small h-max-100 h-100 w-100\"\n\t\t\t\t>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-else\n\t\t\t\t\tclass=\"radius-medium h-100 w-100\"\n\t\t\t\t/>\n\t\t\t\t<span v-if=\"product.available <= 0 && product.listing !== 'rent'\" class=\"pos-absolute bg-white t-black pd-thin radius-medium p-small t-medium pos-t-medium pos-l-medium\">Out of Stock</span>\n\t\t\t\t<THC v-if=\"product.attributes?.length > 0 && product.attributes[1]?.name === 'THC'\" :product=\"product\" />\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Product Info Start -->\n\t\t<div class=\"pd-small cols-1 t-left\">\n\t\t\t<!-- Detail -->\n\t\t\t<p\n\t\t\t\tv-if=\"product.attributes?.length > 0\"\n\t\t\t\tclass=\"t-semi t-transp p-small mn-b-thin\"\n\t\t\t>\n\t\t\t\t{{product.attributes[0]?.value}}\n\t\t\t</p>\n\t\t\t<!-- Name -->\n\t\t\t<span style=\" hyphens: auto;\" class=\"word-break t-truncate p-regular mn-b-micro w-100 w-max-100 \">\n\t\t\t\t{{product.name}}\n\t\t\t</span>\n\n\t\t\t<p \n\t\t\t\tv-if=\"product.description && !product.translations && product.listing !== 'rent'\" \n\t\t\t\tclass=\"mn-b-small t-transp p-small\"\n\t\t\t>\n\t\t\t\t{{product.description.substring(0, 99)}}...\n\t\t\t</p>\n\n\t\t\t<slot></slot>\n\n\t\t\t<div v-if=\"product.variants?.length > 0\" class=\"flex-v-center flex-nowrap flex\">\n\t\t\t\t<Price \n\t\t\t\t\t:product=\"product\" \n\t\t\t\t\tsize=\"small\" \n\t\t\t\t\tclass=\"bg-white h-100 p-regular flex flex-center pd-thin radius-small mn-r-auto\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<button\n\t\t\t\t\tv-if=\"showAddToCart\"\n\t\t class=\"\n\t\t cursor-pointer \n\t\t radius-extra pd-thin bg-main\n\t\t \"\n\t\t >\n\t\t <IconShopcartAdd\n\t\t\t\t\t\tclass=\"icon-button-main i-medium\"\n\t\t\t\t\t/>\n\t\t </button>\n\t\t </div>\n\t\t</div>\n\n\t</div>\n\n</template>\n\n\n<script setup=\"props\">\n\timport {computed } from 'vue'\n\timport { useI18n } from 'vue-i18n'\n\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\timport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\n\timport THC from '@martyrs/src/modules/products/components/elements/THC.vue'\n\timport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n\n\timport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\n\n\tconst props = defineProps({\n\t\tproduct: {\n\t\t\ttype: Object\n\t\t},\n\t\taccess: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\torganization: {\n\t\t\ttype: String\n\t\t},\n\t\tshowAddToCart: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tuser: {\n\t\t\ttype: [Object, String] \n\t\t},\n\t\ttype: {\n\t\t\ttype: Object\n\t\t}\n\t})\n\n const { t } = useI18n()\n</script>\n\n<style lang=\"scss\">\n.word-break {\n width: 100%; \n overflow: auto;\n overflow-wrap: break-word;\n word-break: break-all;\n white-space: -moz-pre-wrap;\n white-space: -hp-pre-wrap;\n white-space: -o-pre-wrap;\n white-space: -pre-wrap; \n white-space: pre-wrap; \n white-space: pre-line; \n word-wrap: break-word;\n}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIE,UAAM,EAAE,EAAC,IAAK,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardProduct.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardProduct.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"\n\t\t\tradius-medium \n\t\t\tcols-1\n\t\t\to-hidden\n\t\t\tpos-relative\n\t\t\"\n\t>\n\t\t<!-- Edit Button -->\n\t\t<router-link\n\t\t\tv-if=\"access\"\n :to=\"editPath\"\n class=\"\n \tz-index-2\n cursor-pointer \n pos-absolute pos-t-regular pos-r-regular\n radius-extra pd-thin bg-second\n \"\n >\n <IconEdit\n class=\"i-medium\"\n classes=\"fill-white\"\n />\n </router-link>\n\n\t\t<!-- Product Image Sqaure -->\n\t\t<div \n\t\t\tclass=\"o-hidden d-flex pd-thin pd-b-zero radius-medium o-hidden w-100 pos-relative aspect-1x1\"\n\t\t>\n\t\t\t<div class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<!-- Image Wrappers -->\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"product.images?.[0]\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + (product.images?.[0] || '').split('/').slice(0, -1).join('/') + '/thumbnail_' + (product.images?.[0] || '').split('/').pop()\"\n\t\t\t\t\tclass=\"pos-absolute object-fit-cover radius-small h-max-100 h-100 w-100\"\n\t\t\t\t>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-else\n\t\t\t\t\tclass=\"radius-medium h-100 w-100\"\n\t\t\t\t/>\n\t\t\t\t<span v-if=\"product.available <= 0 && product.listing !== 'rent'\" class=\"pos-absolute bg-white t-black pd-thin radius-medium p-small t-medium pos-t-medium pos-l-medium\">Out of Stock</span>\n\t\t\t\t<THC v-if=\"product.attributes?.length > 0 && product.attributes[1]?.name === 'THC'\" :product=\"product\" />\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Product Info Start -->\n\t\t<div class=\"pd-small cols-1 t-left\">\n\t\t\t<!-- Detail -->\n\t\t\t<p\n\t\t\t\tv-if=\"product.attributes?.length > 0\"\n\t\t\t\tclass=\"t-semi t-transp p-small mn-b-thin\"\n\t\t\t>\n\t\t\t\t{{product.attributes[0]?.value}}\n\t\t\t</p>\n\t\t\t<!-- Name -->\n\t\t\t<span style=\" hyphens: auto;\" class=\"word-break t-truncate p-regular mn-b-micro w-100 w-max-100 \">\n\t\t\t\t{{product.name}}\n\t\t\t</span>\n\n\t\t\t<p \n\t\t\t\tv-if=\"product.description && !product.translations && product.listing !== 'rent'\" \n\t\t\t\tclass=\"mn-b-small t-transp p-small\"\n\t\t\t>\n\t\t\t\t{{product.description.substring(0, 99)}}...\n\t\t\t</p>\n\n\t\t\t<slot></slot>\n\n\t\t\t<div v-if=\"product.variants?.length > 0\" class=\"flex-v-center flex-nowrap flex\">\n\t\t\t\t<Price \n\t\t\t\t\t:product=\"product\" \n\t\t\t\t\tsize=\"small\" \n\t\t\t\t\tclass=\"bg-white h-100 p-regular flex flex-center pd-thin radius-small mn-r-auto\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<button\n\t\t\t\t\tv-if=\"showAddToCart\"\n\t\t class=\"\n\t\t cursor-pointer \n\t\t radius-extra pd-thin bg-main\n\t\t \"\n\t\t >\n\t\t <IconShopcartAdd\n\t\t\t\t\t\tclass=\"icon-button-main i-medium\"\n\t\t\t\t\t/>\n\t\t </button>\n\t\t </div>\n\t\t</div>\n\n\t</div>\n\n</template>\n\n\n<script setup=\"props\">\n\timport {computed } from 'vue'\n\timport { useI18n } from 'vue-i18n'\n\timport { useRoute } from 'vue-router'\n\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\timport IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'\n\n\timport THC from '@martyrs/src/modules/products/components/elements/THC.vue'\n\timport Price from '@martyrs/src/modules/products/components/elements/Price.vue'\n\n\timport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\n\n\tconst route = useRoute()\n\n\tconst props = defineProps({\n\t\tproduct: {\n\t\t\ttype: Object\n\t\t},\n\t\taccess: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\torganization: {\n\t\t\ttype: String\n\t\t},\n\t\tshowAddToCart: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tuser: {\n\t\t\ttype: [Object, String]\n\t\t},\n\t\ttype: {\n\t\t\ttype: Object\n\t\t}\n\t})\n\n const { t } = useI18n()\n\n\tconst editPath = computed(() => {\n\t\tif (route.meta.context === 'backoffice') {\n\t\t\treturn `/backoffice/products/${props.product._id}/edit`\n\t\t}\n\t\tif (route.meta.context === 'organization' || props.organization) {\n\t\t\tconst orgId = props.organization || route.params._id\n\t\t\treturn `/organizations/${orgId}/products/${props.product._id}/edit`\n\t\t}\n\t\treturn `/products/${props.product._id}/edit`\n\t})\n</script>\n\n<style lang=\"scss\">\n.word-break {\n width: 100%; \n overflow: auto;\n overflow-wrap: break-word;\n word-break: break-all;\n white-space: -moz-pre-wrap;\n white-space: -hp-pre-wrap;\n white-space: -o-pre-wrap;\n white-space: -pre-wrap; \n white-space: pre-wrap; \n white-space: pre-line; \n word-wrap: break-word;\n}\n</style>\n\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6GC,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ;AAuBb,UAAM,EAAE,EAAC,IAAK,QAAO;AAEtB,UAAM,WAAW,SAAS,MAAM;AAC/B,UAAI,MAAM,KAAK,YAAY,cAAc;AACxC,eAAO,wBAAwB,MAAM,QAAQ,GAAG;AAAA,MACjD;AACA,UAAI,MAAM,KAAK,YAAY,kBAAkB,MAAM,cAAc;AAChE,cAAM,QAAQ,MAAM,gBAAgB,MAAM,OAAO;AACjD,eAAO,kBAAkB,KAAK,aAAa,MAAM,QAAQ,GAAG;AAAA,MAC7D;AACA,aAAO,aAAa,MAAM,QAAQ,GAAG;AAAA,IACtC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, createStaticVNode, createVNode, Transition, withCtx, createCommentVNode, withModifiers, createBlock } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue2.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue.js";
3
3
  /* empty css */
4
4
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = { class: "product-360-viewer" };
@@ -1,11 +1,11 @@
1
- import { ref, reactive, onUnmounted, onMounted, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, withCtx, createVNode, unref, createTextVNode, isRef } from "vue";
1
+ import { ref, reactive, onUnmounted, onMounted, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, withCtx, unref, createTextVNode, createVNode, isRef } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useStore } from "../../../core/views/store/core.store.js";
4
4
  import { state } from "../../../auth/views/store/auth.js";
5
5
  import { state as state$1, actions } from "../../store/categories.js";
6
6
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
7
- /* empty css */
8
7
  /* empty css */
8
+ /* empty css */
9
9
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
10
10
  import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
11
11
  import _sfc_main$4 from "../../../../components/Tree/Tree.vue.js";
@@ -124,7 +124,8 @@ const _sfc_main = {
124
124
  }, {
125
125
  default: withCtx(() => [
126
126
  _cache[3] || (_cache[3] = createElementVNode("h2", { class: "mn-r-auto" }, " Categories ", -1)),
127
- createVNode(_component_router_link, {
127
+ unref(hasAccess)(unref(route).params._id, "products", "edit", state.accesses, state.access.roles) ? (openBlock(), createBlock(_component_router_link, {
128
+ key: 0,
128
129
  to: {
129
130
  name: unref(route).meta.context === "backoffice" ? "BackofficeCategoryAdd" : "Organization_CategoryAdd",
130
131
  params: {
@@ -137,7 +138,7 @@ const _sfc_main = {
137
138
  createTextVNode(" Add New ")
138
139
  ])),
139
140
  _: 1
140
- }, 8, ["to"])
141
+ }, 8, ["to"])) : createCommentVNode("", true)
141
142
  ]),
142
143
  _: 1
143
144
  })) : createCommentVNode("", true),
@@ -156,8 +157,9 @@ const _sfc_main = {
156
157
  state: state$1
157
158
  },
158
159
  options: {
159
- user: state.user._id,
160
- tree: true
160
+ owner: unref(route).params._id,
161
+ tree: true,
162
+ limit: 20
161
163
  },
162
164
  sort: unref(sort),
163
165
  "onUpdate:sort": _cache[0] || (_cache[0] = ($event) => isRef(sort) ? sort.value = $event : sort = $event),
@@ -173,6 +175,7 @@ const _sfc_main = {
173
175
  items: state$1.all,
174
176
  state: state$1.all,
175
177
  "parent-id": null,
178
+ dragndrop: unref(hasAccess)(unref(route).params._id, "products", "edit", state.accesses, state.access.roles),
176
179
  onUpdate: updateCategoriesOrder
177
180
  }, {
178
181
  default: withCtx(({ item }) => [
@@ -183,7 +186,7 @@ const _sfc_main = {
183
186
  }, null, 8, ["category", "access"])
184
187
  ]),
185
188
  _: 1
186
- }, 8, ["items", "state"])) : createCommentVNode("", true)
189
+ }, 8, ["items", "state", "dragndrop"])) : createCommentVNode("", true)
187
190
  ]),
188
191
  _: 1
189
192
  }, 8, ["store", "options", "sort", "items"])
@@ -1 +1 @@
1
- {"version":3,"file":"Categories.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link\n :to=\"{\n name: route.meta.context === 'backoffice' ? 'BackofficeCategoryAdd' : 'Organization_CategoryAdd',\n params: {\n _id: $route.params._id\n }\n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\"\n :parent-id=\"null\"\n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\n const route = useRoute();\n const router = useRouter();\n const store = useStore();\n const { hasAccess } = useGlobalMixins();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\n })\n\n store.core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\"\n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => {\n const routeName = route.meta.context === 'backoffice' ? 'BackofficeCategoryAdd' : 'Organization_CategoryAdd';\n route.params._id ? router.push({ name: routeName, params: { _id: route.params._id} }) : router.push({ name: routeName });\n }\n }],\n\n onUnmounted(() => {\n store.core.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для сбора затронутых категорий при drag-n-drop\n function collectAffectedCategories(eventData) {\n const result = {\n movedCategory: null,\n affectedCategories: []\n };\n \n console.log('collectAffectedCategories - eventData:', eventData);\n \n // Проверяем, что это объект от Tree компонента с полной информацией\n if (eventData && eventData.movedItem) {\n // Если категория переместилась между уровнями\n if (eventData.movedItem._id) {\n result.movedCategory = {\n _id: eventData.movedItem._id,\n newParent: eventData.parentId // Используем parentId из события (null для корня)\n };\n }\n \n // Собираем все категории текущего уровня с их новым порядком\n const items = eventData.items || [];\n console.log('Level items:', items);\n \n items.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else if (eventData && eventData._id) {\n // Fallback для старого формата (простой объект категории)\n result.movedCategory = {\n _id: eventData._id,\n newParent: eventData.parent || null\n };\n \n // Пытаемся найти категории того же уровня\n const parentId = eventData.parent;\n const sameLevel = parentId \n ? categories.state.all.find(c => c._id === parentId)?.children || []\n : categories.state.all;\n \n sameLevel.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else {\n // Если нет данных о перемещении, собираем корневые категории\n console.log('No event data, collecting root level categories');\n categories.state.all.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n }\n \n console.log('collectAffectedCategories - result:', result);\n \n return result;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n const data = collectAffectedCategories(event);\n \n // ОДИН КОНСОЛЬ ЛОГ НА ФРОНТЕНДЕ - ЧТО ОТПРАВЛЯЕМ\n console.log('📤 FRONTEND SENDING:', JSON.stringify(data, null, 2));\n await categories.actions.updateOrder(data);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["IconPlus","auth.state","categories.state","categories.actions"],"mappings":"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"}
1
+ {"version":3,"file":"Categories.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link\n v-if=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n :to=\"{\n name: route.meta.context === 'backoffice' ? 'BackofficeCategoryAdd' : 'Organization_CategoryAdd',\n params: {\n _id: $route.params._id\n }\n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n owner: route.params._id,\n tree: true,\n limit: 20\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree\n v-if=\"items\"\n :items=\"categories.state.all\"\n :state=\"categories.state.all\"\n :parent-id=\"null\"\n :dragndrop=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n @update=\"updateCategoriesOrder\"\n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\n const route = useRoute();\n const router = useRouter();\n const store = useStore();\n const { hasAccess } = useGlobalMixins();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\n })\n\n store.core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\"\n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => {\n const routeName = route.meta.context === 'backoffice' ? 'BackofficeCategoryAdd' : 'Organization_CategoryAdd';\n route.params._id ? router.push({ name: routeName, params: { _id: route.params._id} }) : router.push({ name: routeName });\n }\n }],\n\n onUnmounted(() => {\n store.core.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для сбора затронутых категорий при drag-n-drop\n function collectAffectedCategories(eventData) {\n const result = {\n movedCategory: null,\n affectedCategories: []\n };\n \n console.log('collectAffectedCategories - eventData:', eventData);\n \n // Проверяем, что это объект от Tree компонента с полной информацией\n if (eventData && eventData.movedItem) {\n // Если категория переместилась между уровнями\n if (eventData.movedItem._id) {\n result.movedCategory = {\n _id: eventData.movedItem._id,\n newParent: eventData.parentId // Используем parentId из события (null для корня)\n };\n }\n \n // Собираем все категории текущего уровня с их новым порядком\n const items = eventData.items || [];\n console.log('Level items:', items);\n \n items.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else if (eventData && eventData._id) {\n // Fallback для старого формата (простой объект категории)\n result.movedCategory = {\n _id: eventData._id,\n newParent: eventData.parent || null\n };\n \n // Пытаемся найти категории того же уровня\n const parentId = eventData.parent;\n const sameLevel = parentId \n ? categories.state.all.find(c => c._id === parentId)?.children || []\n : categories.state.all;\n \n sameLevel.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else {\n // Если нет данных о перемещении, собираем корневые категории\n console.log('No event data, collecting root level categories');\n categories.state.all.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n }\n \n console.log('collectAffectedCategories - result:', result);\n \n return result;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n const data = collectAffectedCategories(event);\n \n // ОДИН КОНСОЛЬ ЛОГ НА ФРОНТЕНДЕ - ЧТО ОТПРАВЛЯЕМ\n console.log('📤 FRONTEND SENDING:', JSON.stringify(data, null, 2));\n await categories.actions.updateOrder(data);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["IconPlus","auth.state","categories.state","categories.actions"],"mappings":"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"}