@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,6 +1,6 @@
1
1
  import { ref, computed, watch, createElementBlock, openBlock, Fragment, withDirectives, createVNode, normalizeClass, withModifiers, createCommentVNode, createElementVNode, toDisplayString, Transition, withCtx, renderList, vShow, unref, nextTick } from "vue";
2
2
  import clickOutside from "../FieldPhone/click-outside.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = {
6
6
  key: 0,
@@ -131,4 +131,4 @@ const Select = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-849
131
131
  export {
132
132
  Select as default
133
133
  };
134
- //# sourceMappingURL=Select.vue2.js.map
134
+ //# sourceMappingURL=Select.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.vue.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"t-transp mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover-bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, watch, onMounted, createElementBlock, openBlock, withKeys, normalizeClass, withModifiers, renderSlot, createElementVNode, createVNode, createCommentVNode, withDirectives, Fragment, renderList, toDisplayString, vShow, Transition, withCtx, normalizeStyle, createTextVNode, nextTick } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = ["tabindex", "onKeydown", "onKeypress", "aria-owns"];
4
4
  const _hoisted_2 = { class: "multiselect__tags-wrap" };
5
5
  const _hoisted_3 = { class: "multiselect__tag" };
@@ -622,4 +622,4 @@ const _sfc_main = {
622
622
  export {
623
623
  _sfc_main as default
624
624
  };
625
- //# sourceMappingURL=SelectMulti.vue.js.map
625
+ //# sourceMappingURL=SelectMulti.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMulti.vue2.js","sources":["../../../../../src/components/SelectMulti/SelectMulti.vue"],"sourcesContent":["<template>\n <div\n ref=\"multiselect\"\n :tabindex=\"searchable ? -1 : tabindex\"\n :class=\"{\n 'multiselect--active': isOpen,\n 'multiselect--disabled': disabled,\n 'multiselect--above': isAbove,\n 'multiselect--has-options-group': hasOptionGroup\n }\"\n @focus=\"activate\"\n @blur=\"searchable ? false : deactivate\"\n @keydown.self.down.prevent=\"pointerForward\"\n @keydown.self.up.prevent=\"pointerBackward\"\n @keypress.enter.tab.stop.self=\"addPointerElement\"\n @keyup.esc=\"deactivate\"\n class=\"multiselect flex flex-v-center\"\n role=\"combobox\"\n :aria-owns=\"`listbox-${id}`\">\n \n <slot name=\"caret\" :toggle>\n <div @mousedown.prevent.stop=\"toggle\" class=\"multiselect__select\"></div>\n </slot>\n \n <slot name=\"clear\" :search />\n \n <div ref=\"tags\" class=\"multiselect__tags\">\n <slot\n name=\"selection\"\n :search\n :remove=\"removeElement\"\n :values=\"visibleValues\"\n :is-open=\"isOpen\">\n <div class=\"multiselect__tags-wrap\" v-show=\"visibleValues.length > 0\">\n <template v-for=\"(option, index) of visibleValues\" :key=\"index\">\n <slot name=\"tag\" :option :search :remove=\"removeElement\">\n <span class=\"multiselect__tag\">\n <span v-text=\"getOptionLabel(option)\" />\n <i \n tabindex=\"1\" \n @keypress.enter.prevent=\"removeElement(option)\"\n @mousedown.prevent=\"removeElement(option)\" \n class=\"multiselect__tag-icon\" />\n </span>\n </slot>\n </template>\n </div>\n <template v-if=\"internalValue?.length > limit\">\n <slot name=\"limit\">\n <strong class=\"multiselect__strong\" v-text=\"limitText(internalValue.length - limit)\" />\n </slot>\n </template>\n </slot>\n <transition name=\"multiselect__loading\">\n <slot name=\"loading\">\n <div v-show=\"loading\" class=\"multiselect__spinner\" />\n </slot>\n </transition>\n <input\n ref=\"searchInput\"\n v-if=\"searchable\"\n :name\n :id\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n :placeholder\n :style=\"inputStyle\"\n :value=\"search\"\n :disabled\n :tabindex\n @input=\"updateSearch($event.target.value)\"\n @focus.prevent=\"activate\"\n @blur.prevent=\"deactivate\"\n @keyup.esc=\"deactivate\"\n @keydown.down.prevent=\"pointerForward\"\n @keydown.up.prevent=\"pointerBackward\"\n @keypress.enter.prevent.stop.self=\"addPointerElement\"\n @keydown.delete.stop=\"removeLastElement\"\n class=\"multiselect__input\"\n :aria-controls=\"`listbox-${id}`\" />\n <span\n v-if=\"isSingleLabelVisible\"\n class=\"multiselect__single\"\n @mousedown.prevent=\"toggle\">\n <slot name=\"singleLabel\" :option=\"singleValue\">\n {{ currentOptionLabel }}\n </slot>\n </span>\n <span\n v-if=\"isPlaceholderVisible\"\n class=\"multiselect__placeholder\"\n @mousedown.prevent=\"toggle\">\n <slot name=\"placeholder\">\n {{ placeholder }}\n </slot>\n </span>\n </div>\n \n <transition name=\"multiselect\">\n <div\n class=\"multiselect__content-wrapper\"\n v-show=\"isOpen\"\n @focus=\"activate\"\n tabindex=\"-1\"\n @mousedown.prevent\n :style=\"{ maxHeight: `${optimizedHeight}px` }\"\n ref=\"list\">\n <ul class=\"multiselect__content\" :style=\"contentStyle\" role=\"listbox\" :id=\"`listbox-${id}`\">\n <slot name=\"beforeList\" />\n <li v-if=\"multiple && max === internalValue.length\">\n <span class=\"multiselect__option\">\n <slot name=\"maxElements\">\n Maximum of {{ max }} options selected. First remove a selected option to select another.\n </slot>\n </span>\n </li>\n <template v-if=\"!max || internalValue.length < max\">\n <li \n class=\"multiselect__element\"\n v-for=\"(option, index) of filteredOptions\"\n :key=\"index\"\n :id=\"`${id}-${index}`\"\n :role=\"!(option?.$isLabel || option?.$isDisabled) ? 'option' : null\">\n <span\n v-if=\"!(option?.$isLabel || option?.$isDisabled)\"\n :class=\"optionHighlight(index, option)\"\n @click.stop=\"select(option)\"\n @mouseenter.self=\"pointerSet(index)\"\n :data-select=\"option?.isTag ? tagPlaceholder : selectLabelText\"\n :data-selected=\"selectedLabelText\"\n :data-deselect=\"deselectLabelText\"\n class=\"multiselect__option\">\n <slot name=\"option\" :option :search :index>\n <span>{{ getOptionLabel(option) }}</span>\n </slot>\n </span>\n <span\n v-if=\"option?.$isLabel || option?.$isDisabled\"\n :data-select=\"groupSelect && selectGroupLabelText\"\n :data-deselect=\"groupSelect && deselectGroupLabelText\"\n :class=\"groupHighlight(index, option)\"\n @mouseenter.self=\"groupSelect && pointerSet(index)\"\n @mousedown.prevent=\"selectGroup(option)\"\n class=\"multiselect__option\">\n <slot name=\"option\" :option :search :index>\n <span>{{ getOptionLabel(option) }}</span>\n </slot>\n </span>\n </li>\n </template>\n <li v-show=\"showNoResults && filteredOptions.length === 0 && search && !loading\">\n <span class=\"multiselect__option\">\n <slot name=\"noResult\" :search>\n No elements found. Consider changing the search query.\n </slot>\n </span>\n </li>\n <li v-show=\"showNoOptions && (options.length === 0 || (hasOptionGroup && filteredOptions.length === 0)) && !search && !loading\">\n <span class=\"multiselect__option\">\n <slot name=\"noOptions\">List is empty.</slot>\n </span>\n </li>\n <slot name=\"afterList\" />\n </ul>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted, nextTick } from 'vue'\n\n// Props\nconst props = defineProps({\n modelValue: { type: null, default: () => [] },\n options: { type: Array, required: true },\n multiple: { type: Boolean, default: false },\n trackBy: String,\n label: String,\n searchable: { type: Boolean, default: true },\n clearOnSelect: { type: Boolean, default: true },\n hideSelected: { type: Boolean, default: false },\n placeholder: { type: String, default: 'Select option' },\n allowEmpty: { type: Boolean, default: true },\n resetAfter: { type: Boolean, default: false },\n closeOnSelect: { type: Boolean, default: true },\n customLabel: {\n type: Function,\n default: (option, label) => {\n if (!option && option !== 0) return ''\n return label ? option[label] : option\n }\n },\n taggable: { type: Boolean, default: false },\n tagPlaceholder: { type: String, default: 'Press enter to create a tag' },\n tagPosition: { type: String, default: 'top' },\n max: { type: [Number, Boolean], default: false },\n id: { default: null },\n optionsLimit: { type: Number, default: 1000 },\n groupValues: String,\n groupLabel: String,\n groupSelect: { type: Boolean, default: false },\n blockKeys: { type: Array, default: () => [] },\n preserveSearch: { type: Boolean, default: false },\n preselectFirst: { type: Boolean, default: false },\n preventAutofocus: { type: Boolean, default: false },\n internalSearch: { type: Boolean, default: true },\n name: { type: String, default: '' },\n selectLabel: { type: String, default: 'Press enter to select' },\n selectGroupLabel: { type: String, default: 'Press enter to select group' },\n selectedLabel: { type: String, default: 'Selected' },\n deselectLabel: { type: String, default: 'Press enter to remove' },\n deselectGroupLabel: { type: String, default: 'Press enter to deselect group' },\n showLabels: { type: Boolean, default: true },\n limit: { type: Number, default: 99999 },\n maxHeight: { type: Number, default: 300 },\n limitText: { type: Function, default: count => `and ${count} more` },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n openDirection: { type: String, default: '' },\n showNoOptions: { type: Boolean, default: true },\n showNoResults: { type: Boolean, default: true },\n tabindex: { type: Number, default: 0 },\n showPointer: { type: Boolean, default: true },\n optionHeight: { type: Number, default: 40 }\n})\n\n// Emits\nconst emit = defineEmits(['open', 'search-change', 'close', 'select', 'update:modelValue', 'remove', 'tag'])\n\n// Refs\nconst multiselect = ref(null)\nconst searchInput = ref(null)\nconst list = ref(null)\nconst tags = ref(null)\n\n// State\nconst search = ref('')\nconst isOpen = ref(false)\nconst preferredOpenDirection = ref('below')\nconst optimizedHeight = ref(props.maxHeight)\nconst pointer = ref(0)\nconst pointerDirty = ref(false)\n\n// Helper functions\nconst isEmpty = opt => {\n if (opt === 0) return false\n if (Array.isArray(opt) && opt.length === 0) return true\n return !opt\n}\n\nconst includes = (str, query) => {\n if (str === undefined) str = 'undefined'\n if (str === null) str = 'null'\n if (str === false) str = 'false'\n return str.toString().toLowerCase().indexOf(query.trim()) !== -1\n}\n\nconst filterOptions = (options, search, label, customLabel) => {\n return search \n ? options.filter(option => includes(customLabel(option, label), search))\n .sort((a, b) => customLabel(a, label).length - customLabel(b, label).length)\n : options\n}\n\nconst flattenOptions = (values, label) => options =>\n options.reduce((prev, curr) => {\n if (curr[values]?.length) {\n prev.push({ $groupLabel: curr[label], $isLabel: true })\n return prev.concat(curr[values])\n }\n return prev\n }, [])\n\nconst stripGroups = options => options.filter(option => !option.$isLabel)\n\nconst filterGroups = (search, label, values, groupLabel, customLabel) => groups =>\n groups.map(group => {\n if (!group[values]) {\n console.warn(`Options passed to vue-multiselect do not contain groups, despite the config.`)\n return []\n }\n const groupOptions = filterOptions(group[values], search, label, customLabel)\n return groupOptions.length ? { [groupLabel]: group[groupLabel], [values]: groupOptions } : []\n })\n\nconst flow = (...fns) => x => fns.reduce((v, f) => f(v), x)\n\n// Computed\nconst internalValue = computed(() => {\n const val = props.modelValue\n return val || val === 0 ? (Array.isArray(val) ? val : [val]) : []\n})\n\nconst filteredOptions = computed(() => {\n const searchVal = search.value || ''\n const normalizedSearch = searchVal.toLowerCase().trim()\n let options = props.options.concat()\n\n if (props.internalSearch) {\n options = props.groupValues \n ? filterAndFlat(options, normalizedSearch, props.label)\n : filterOptions(options, normalizedSearch, props.label, props.customLabel)\n } else {\n options = props.groupValues \n ? flattenOptions(props.groupValues, props.groupLabel)(options) \n : options\n }\n\n options = props.hideSelected ? options.filter(o => !isSelected(o)) : options\n\n if (props.taggable && normalizedSearch.length && !isExistingOption(normalizedSearch)) {\n if (props.tagPosition === 'bottom') {\n options.push({ isTag: true, label: searchVal })\n } else {\n options.unshift({ isTag: true, label: searchVal })\n }\n }\n\n return options.slice(0, props.optionsLimit)\n})\n\nconst valueKeys = computed(() => \n props.trackBy ? internalValue.value.map(el => el[props.trackBy]) : internalValue.value\n)\n\nconst optionKeys = computed(() => {\n const options = props.groupValues ? flatAndStrip(props.options) : props.options\n return options.map(el => props.customLabel(el, props.label).toString().toLowerCase())\n})\n\nconst currentOptionLabel = computed(() =>\n props.multiple \n ? (props.searchable ? '' : props.placeholder)\n : internalValue.value.length \n ? getOptionLabel(internalValue.value[0])\n : props.searchable ? '' : props.placeholder\n)\n\nconst hasOptionGroup = computed(() => props.groupValues && props.groupLabel && props.groupSelect)\n\nconst isSingleLabelVisible = computed(() =>\n (singleValue.value || singleValue.value === 0) &&\n (!isOpen.value || !props.searchable) &&\n !visibleValues.value.length\n)\n\nconst isPlaceholderVisible = computed(() =>\n !internalValue.value.length && (!props.searchable || !isOpen.value)\n)\n\nconst visibleValues = computed(() =>\n props.multiple ? internalValue.value.slice(0, props.limit) : []\n)\n\nconst singleValue = computed(() => internalValue.value[0])\n\nconst deselectLabelText = computed(() => props.showLabels ? props.deselectLabel : '')\nconst deselectGroupLabelText = computed(() => props.showLabels ? props.deselectGroupLabel : '')\nconst selectLabelText = computed(() => props.showLabels ? props.selectLabel : '')\nconst selectGroupLabelText = computed(() => props.showLabels ? props.selectGroupLabel : '')\nconst selectedLabelText = computed(() => props.showLabels ? props.selectedLabel : '')\n\nconst inputStyle = computed(() => {\n if (props.searchable || (props.multiple && props.modelValue?.length)) {\n return isOpen.value\n ? { width: '100%' }\n : { width: '0', position: 'absolute', padding: '0' }\n }\n return ''\n})\n\nconst contentStyle = computed(() => \n props.options.length ? { display: 'inline-block' } : { display: 'block' }\n)\n\nconst isAbove = computed(() => {\n if (['above', 'top'].includes(props.openDirection)) return true\n if (['below', 'bottom'].includes(props.openDirection)) return false\n return preferredOpenDirection.value === 'above'\n})\n\nconst pointerPosition = computed(() => pointer.value * props.optionHeight)\nconst visibleElements = computed(() => optimizedHeight.value / props.optionHeight)\n\n// Methods\nconst filterAndFlat = (options, search, label) =>\n flow(\n filterGroups(search, label, props.groupValues, props.groupLabel, props.customLabel),\n flattenOptions(props.groupValues, props.groupLabel)\n )(options)\n\nconst flatAndStrip = options =>\n flow(\n flattenOptions(props.groupValues, props.groupLabel),\n stripGroups\n )(options)\n\nconst updateSearch = query => {\n search.value = query\n}\n\nconst isExistingOption = query => \n props.options ? optionKeys.value.indexOf(query) > -1 : false\n\nconst isSelected = option => {\n const opt = props.trackBy ? option[props.trackBy] : option\n return valueKeys.value.indexOf(opt) > -1\n}\n\nconst isOptionDisabled = option => !!option?.$isDisabled\n\nconst getOptionLabel = option => {\n if (isEmpty(option)) return ''\n if (option.isTag) return option.label\n if (option.$isLabel) return option.$groupLabel\n const label = props.customLabel(option, props.label)\n return isEmpty(label) ? '' : label\n}\n\nconst select = (option, key) => {\n if (option.$isLabel && props.groupSelect) {\n selectGroup(option)\n return\n }\n if (props.blockKeys.indexOf(key) !== -1 || props.disabled || option.$isDisabled || option.$isLabel) return\n if (props.max && props.multiple && internalValue.value.length === props.max) return\n if (key === 'Tab' && !pointerDirty.value) return\n \n if (option.isTag) {\n emit('tag', option.label, props.id)\n search.value = ''\n if (props.closeOnSelect && !props.multiple) deactivate()\n } else {\n if (isSelected(option)) {\n if (key !== 'Tab') removeElement(option)\n return\n }\n\n emit('update:modelValue', props.multiple ? internalValue.value.concat([option]) : option)\n emit('select', option, props.id)\n\n if (props.clearOnSelect) search.value = ''\n }\n \n if (props.closeOnSelect) deactivate()\n}\n\nconst selectGroup = selectedGroup => {\n const group = props.options.find(option => \n option[props.groupLabel] === selectedGroup.$groupLabel\n )\n if (!group) return\n\n if (wholeGroupSelected(group)) {\n emit('remove', group[props.groupValues], props.id)\n const newValue = internalValue.value.filter(option => \n group[props.groupValues].indexOf(option) === -1\n )\n emit('update:modelValue', newValue)\n } else {\n let optionsToAdd = group[props.groupValues].filter(option => \n !(isOptionDisabled(option) || isSelected(option))\n )\n if (props.max) optionsToAdd.splice(props.max - internalValue.value.length)\n \n emit('select', optionsToAdd, props.id)\n emit('update:modelValue', internalValue.value.concat(optionsToAdd))\n }\n\n if (props.closeOnSelect) deactivate()\n}\n\nconst wholeGroupSelected = group =>\n group[props.groupValues].every(option => isSelected(option) || isOptionDisabled(option))\n\nconst wholeGroupDisabled = group =>\n group[props.groupValues].every(isOptionDisabled)\n\nconst removeElement = (option, shouldClose = true) => {\n if (props.disabled || option?.$isDisabled) return\n if (!props.allowEmpty && internalValue.value.length <= 1) {\n deactivate()\n return\n }\n\n const index = typeof option === 'object' \n ? valueKeys.value.indexOf(option[props.trackBy])\n : valueKeys.value.indexOf(option)\n\n const newValue = props.multiple\n ? internalValue.value.slice(0, index).concat(internalValue.value.slice(index + 1))\n : null\n\n emit('update:modelValue', newValue)\n emit('remove', option, props.id)\n\n if (props.closeOnSelect && shouldClose) deactivate()\n}\n\nconst removeLastElement = () => {\n if (props.blockKeys.indexOf('Delete') !== -1) return\n if (search.value.length === 0 && Array.isArray(internalValue.value) && internalValue.value.length) {\n removeElement(internalValue.value[internalValue.value.length - 1], false)\n }\n}\n\nconst activate = () => {\n if (isOpen.value || props.disabled) return\n\n adjustPosition()\n if (props.groupValues && pointer.value === 0 && filteredOptions.value.length) {\n pointer.value = 1\n }\n\n isOpen.value = true\n if (props.searchable) {\n if (!props.preserveSearch) search.value = ''\n if (!props.preventAutofocus) nextTick(() => searchInput.value?.focus())\n } else if (!props.preventAutofocus) {\n multiselect.value?.focus()\n }\n emit('open', props.id)\n}\n\nconst deactivate = () => {\n if (!isOpen.value) return\n\n isOpen.value = false\n if (props.searchable) {\n searchInput.value?.blur()\n } else {\n multiselect.value?.blur()\n }\n if (!props.preserveSearch) search.value = ''\n emit('close', getValue(), props.id)\n}\n\nconst toggle = () => {\n isOpen.value ? deactivate() : activate()\n}\n\nconst adjustPosition = () => {\n if (typeof window === 'undefined') return\n\n const spaceAbove = multiselect.value.getBoundingClientRect().top\n const spaceBelow = window.innerHeight - multiselect.value.getBoundingClientRect().bottom\n const hasEnoughSpaceBelow = spaceBelow > props.maxHeight\n\n if (hasEnoughSpaceBelow || spaceBelow > spaceAbove || ['below', 'bottom'].includes(props.openDirection)) {\n preferredOpenDirection.value = 'below'\n optimizedHeight.value = Math.min(spaceBelow - 40, props.maxHeight)\n } else {\n preferredOpenDirection.value = 'above'\n optimizedHeight.value = Math.min(spaceAbove - 40, props.maxHeight)\n }\n}\n\nconst getValue = () => \n props.multiple ? internalValue.value : internalValue.value.length === 0 ? null : internalValue.value[0]\n\n// Pointer methods\nconst optionHighlight = (index, option) => ({\n 'multiselect__option--highlight': index === pointer.value && props.showPointer,\n 'multiselect__option--selected': isSelected(option)\n})\n\nconst groupHighlight = (index, selectedGroup) => {\n if (!props.groupSelect) {\n return ['multiselect__option--disabled', { 'multiselect__option--group': selectedGroup.$isLabel }]\n }\n const group = props.options.find(option => \n option[props.groupLabel] === selectedGroup.$groupLabel\n )\n return group && !wholeGroupDisabled(group)\n ? ['multiselect__option--group', \n { 'multiselect__option--highlight': index === pointer.value && props.showPointer },\n { 'multiselect__option--group-selected': wholeGroupSelected(group) }]\n : 'multiselect__option--disabled'\n}\n\nconst addPointerElement = ({ key } = 'Enter') => {\n if (filteredOptions.value.length > 0) {\n select(filteredOptions.value[pointer.value], key)\n }\n pointerReset()\n}\n\nconst pointerForward = () => {\n if (pointer.value < filteredOptions.value.length - 1) {\n pointer.value++\n if (list.value.scrollTop <= pointerPosition.value - (visibleElements.value - 1) * props.optionHeight) {\n list.value.scrollTop = pointerPosition.value - (visibleElements.value - 1) * props.optionHeight\n }\n if (filteredOptions.value[pointer.value]?.$isLabel && !props.groupSelect) pointerForward()\n }\n pointerDirty.value = true\n}\n\nconst pointerBackward = () => {\n if (pointer.value > 0) {\n pointer.value--\n if (list.value.scrollTop >= pointerPosition.value) {\n list.value.scrollTop = pointerPosition.value\n }\n if (filteredOptions.value[pointer.value]?.$isLabel && !props.groupSelect) pointerBackward()\n } else {\n if (filteredOptions.value[pointer.value]?.$isLabel && !props.groupSelect) pointerForward()\n }\n pointerDirty.value = true\n}\n\nconst pointerReset = () => {\n if (!props.closeOnSelect) return\n pointer.value = 0\n if (list.value) list.value.scrollTop = 0\n}\n\nconst pointerAdjust = () => {\n if (pointer.value >= filteredOptions.value.length - 1) {\n pointer.value = filteredOptions.value.length ? filteredOptions.value.length - 1 : 0\n }\n if (filteredOptions.value.length > 0 && filteredOptions.value[pointer.value]?.$isLabel && !props.groupSelect) {\n pointerForward()\n }\n}\n\nconst pointerSet = index => {\n pointer.value = index\n pointerDirty.value = true\n}\n\n// Watchers\nwatch(() => internalValue.value, () => {\n if (props.resetAfter && internalValue.value.length) {\n search.value = ''\n emit('update:modelValue', props.multiple ? [] : null)\n }\n}, { deep: true })\n\nwatch(search, () => emit('search-change', search.value))\n\nwatch(filteredOptions, () => pointerAdjust())\n\nwatch(isOpen, () => pointerDirty.value = false)\n\nwatch(pointer, () => {\n searchInput.value?.setAttribute('aria-activedescendant', `${props.id}-${pointer.value}`)\n})\n\n// Lifecycle\nonMounted(() => {\n if (!props.multiple && props.max) {\n console.warn('[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.')\n }\n if (props.preselectFirst && !internalValue.value.length && props.options.length) {\n select(filteredOptions.value[0])\n }\n})\n</script>\n\n<style>\nfieldset[disabled] .multiselect {\n pointer-events: none;\n}\n\n.multiselect__spinner {\n position: absolute;\n right: 1px;\n top: 1px;\n width: 40px;\n height: 38px;\n background: #fff;\n display: block;\n}\n\n.multiselect__spinner::before,\n.multiselect__spinner::after {\n position: absolute;\n content: \"\";\n top: 50%;\n left: 50%;\n margin: -8px 0 0 -8px;\n width: 16px;\n height: 16px;\n border-radius: 100%;\n border-color: #41b883 transparent transparent;\n border-style: solid;\n border-width: 2px;\n box-shadow: 0 0 0 1px transparent;\n}\n\n.multiselect__spinner::before {\n animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);\n animation-iteration-count: infinite;\n}\n\n.multiselect__spinner::after {\n animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);\n animation-iteration-count: infinite;\n}\n\n.multiselect__loading-enter-active,\n.multiselect__loading-leave-active {\n transition: opacity 0.4s ease-in-out;\n opacity: 1;\n}\n\n.multiselect__loading-enter,\n.multiselect__loading-leave-active {\n opacity: 0;\n}\n\n.multiselect,\n.multiselect__input,\n.multiselect__single {\n font-family: inherit;\n touch-action: manipulation;\n}\n\n.multiselect {\n display: block;\n position: relative;\n width: 100%;\n min-height: 40px;\n}\n\n.multiselect * {\n box-sizing: border-box;\n}\n\n.multiselect:focus {\n outline: none;\n}\n\n.multiselect--disabled {\n background: #ededed;\n pointer-events: none;\n opacity: 0.6;\n}\n\n.multiselect--active {\n z-index: 50;\n}\n\n.multiselect--active:not(.multiselect--above) .multiselect__current,\n.multiselect--active:not(.multiselect--above) .multiselect__input,\n.multiselect--active:not(.multiselect--above) .multiselect__tags {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.multiselect--active .multiselect__select {\n transform: rotateZ(180deg);\n}\n\n.multiselect--above.multiselect--active .multiselect__current,\n.multiselect--above.multiselect--active .multiselect__input,\n.multiselect--above.multiselect--active .multiselect__tags {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.multiselect__input,\n.multiselect__single,\n.multiselect__placeholder {\n position: relative;\n display: inline-block;\n min-height: 20px;\n line-height: 20px;\n border: none;\n width: calc(100%);\n height: inherit;\n box-sizing: border-box;\n vertical-align: top;\n display: flex;\n align-items: center;\n}\n\n.multiselect__input::placeholder {\n color: #35495e;\n}\n\n.multiselect__tag ~ .multiselect__input,\n.multiselect__tag ~ .multiselect__single {\n width: auto;\n}\n\n.multiselect__input:hover,\n.multiselect__single:hover {\n border-color: #cfcfcf;\n}\n\n.multiselect__input:focus,\n.multiselect__single:focus {\n border-color: #a8a8a8;\n outline: none;\n}\n\n.multiselect__tags-wrap {\n display: inline;\n}\n\n.multiselect__tags {\n display: block;\n height: inherit;\n}\n\n.multiselect__tag {\n position: relative;\n display: inline-block;\n padding: 4px 26px 4px 10px;\n border-radius: 5px;\n margin-right: 10px;\n color: #fff;\n line-height: 1;\n background: #41b883;\n margin-bottom: 5px;\n white-space: nowrap;\n overflow: hidden;\n max-width: 100%;\n text-overflow: ellipsis;\n}\n\n.multiselect__tag-icon {\n cursor: pointer;\n margin-left: 7px;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n font-weight: 700;\n font-style: initial;\n width: 22px;\n text-align: center;\n line-height: 22px;\n transition: all 0.2s ease;\n border-radius: 5px;\n}\n\n.multiselect__tag-icon::after {\n content: \"×\";\n color: #266d4d;\n font-size: 14px;\n}\n\n.multiselect__tag-icon:focus::after,\n.multiselect__tag-icon:hover::after {\n color: white;\n}\n\n.multiselect__current {\n line-height: 16px;\n min-height: 40px;\n box-sizing: border-box;\n display: block;\n overflow: hidden;\n padding: 8px 12px 0;\n padding-right: 30px;\n white-space: nowrap;\n margin: 0;\n text-decoration: none;\n border-radius: 5px;\n border: 1px solid #e8e8e8;\n cursor: pointer;\n}\n\n.multiselect__select {\n line-height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: center;\n position: absolute;\n box-sizing: border-box;\n width: 40px;\n height: 38px;\n right: 1px;\n top: calc(50% - 19px);\n padding: 4px 8px;\n margin: 0;\n text-decoration: none;\n text-align: center;\n cursor: pointer;\n transition: transform 0.2s ease;\n}\n\n.multiselect__select::before {\n position: relative;\n color: #999;\n margin-top: 4px;\n border-style: solid;\n border-width: 5px 5px 0 5px;\n border-color: #999 transparent transparent transparent;\n content: \"\";\n}\n\n.multiselect--active .multiselect__placeholder {\n display: none;\n}\n\n.multiselect__content-wrapper {\n position: absolute;\n display: block;\n background: #fff;\n width: 100%;\n max-height: 240px;\n height: min-content;\n overflow: auto;\n left: 0;\n border-top: none;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n z-index: 50;\n -webkit-overflow-scrolling: touch;\n}\n\n.multiselect__content {\n list-style: none;\n display: inline-block;\n padding: 0;\n margin: 0;\n min-width: 100%;\n vertical-align: top;\n}\n\n.multiselect--above .multiselect__content-wrapper {\n bottom: 100%;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n border-bottom: none;\n border-top: 1px solid #e8e8e8;\n}\n\n.multiselect__content::-webkit-scrollbar {\n display: none;\n}\n\n.multiselect__element {\n display: block;\n}\n\n.multiselect__option {\n display: block;\n padding: 12px;\n min-height: 40px;\n line-height: 16px;\n text-decoration: none;\n text-transform: none;\n vertical-align: middle;\n position: relative;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.multiselect__option::after {\n top: 0;\n right: 0;\n position: absolute;\n line-height: 40px;\n padding-right: 12px;\n padding-left: 20px;\n font-size: 13px;\n}\n\n.multiselect__option--highlight {\n background: rgba(var(--main), 0.1);\n outline: none;\n}\n\n.multiselect__option--highlight::after {\n content: attr(data-select);\n}\n\n.multiselect__option--selected {\n background: #f3f3f3;\n color: #35495e;\n font-weight: bold;\n}\n\n.multiselect__option--selected::after {\n content: attr(data-selected);\n color: silver;\n background: inherit;\n}\n\n.multiselect__option--selected.multiselect__option--highlight {\n background: rgba(var(--red), 0.1);\n}\n\n.multiselect__option--selected.multiselect__option--highlight::after {\n content: attr(data-deselect);\n}\n\n.multiselect--disabled .multiselect__current,\n.multiselect--disabled .multiselect__select {\n background: #ededed;\n color: #a6a6a6;\n}\n\n.multiselect__option--disabled {\n background: #ededed !important;\n color: #a6a6a6 !important;\n cursor: text;\n pointer-events: none;\n}\n\n.multiselect__option--group {\n background: #ededed;\n color: #35495e;\n}\n\n.multiselect__option--group.multiselect__option--highlight {\n background: #35495e;\n color: #fff;\n}\n\n.multiselect__option--group.multiselect__option--highlight::after {\n background: #35495e;\n}\n\n.multiselect__option--disabled.multiselect__option--highlight {\n background: #dedede;\n}\n\n.multiselect__option--group-selected.multiselect__option--highlight {\n background: #ff6a6a;\n color: #fff;\n}\n\n.multiselect__option--group-selected.multiselect__option--highlight::after {\n background: #ff6a6a;\n content: attr(data-deselect);\n color: #fff;\n}\n\n.multiselect-enter-active,\n.multiselect-leave-active {\n transition: all 0.15s ease;\n}\n\n.multiselect-enter,\n.multiselect-leave-active {\n opacity: 0;\n}\n\n.multiselect__strong {\n margin-bottom: 8px;\n line-height: 20px;\n display: inline-block;\n vertical-align: top;\n}\n\n*[dir=\"rtl\"] .multiselect {\n text-align: right;\n}\n\n*[dir=\"rtl\"] .multiselect__select {\n right: auto;\n left: 1px;\n}\n\n*[dir=\"rtl\"] .multiselect__tags {\n padding: 8px 8px 0 40px;\n}\n\n*[dir=\"rtl\"] .multiselect__content {\n text-align: right;\n}\n\n*[dir=\"rtl\"] .multiselect__option::after {\n right: auto;\n left: 0;\n}\n\n*[dir=\"rtl\"] .multiselect__clear {\n right: auto;\n left: 12px;\n}\n\n*[dir=\"rtl\"] .multiselect__spinner {\n right: auto;\n left: 1px;\n}\n\n@keyframes spinning {\n from {\n transform: rotate(0);\n }\n to {\n transform: rotate(2turn);\n }\n}\n</style>"],"names":["search"],"mappings":"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"}
@@ -5,7 +5,8 @@ const _sfc_main = {
5
5
  props: {
6
6
  items: Array,
7
7
  state: Array,
8
- parentId: { type: String, default: null }
8
+ parentId: { type: String, default: null },
9
+ dragndrop: { type: Boolean, default: true }
9
10
  },
10
11
  emits: ["update"],
11
12
  setup(__props, { emit: __emit }) {
@@ -40,6 +41,7 @@ const _sfc_main = {
40
41
  }
41
42
  return (_ctx, _cache) => {
42
43
  return openBlock(), createBlock(unref(VueDraggableNext), mergeProps(dragOptions, {
44
+ disabled: !__props.dragndrop,
43
45
  class: "dragArea list-group w-full",
44
46
  list: __props.items,
45
47
  handle: ".my-handle",
@@ -56,6 +58,7 @@ const _sfc_main = {
56
58
  items: item.children,
57
59
  state: __props.state,
58
60
  "parent-id": item._id,
61
+ dragndrop: __props.dragndrop,
59
62
  onUpdate: emitChange,
60
63
  class: "pd-l-medium"
61
64
  }, {
@@ -63,12 +66,12 @@ const _sfc_main = {
63
66
  renderSlot(_ctx.$slots, "default", { item: item2 })
64
67
  ]),
65
68
  _: 2
66
- }, 1032, ["items", "state", "parent-id"])
69
+ }, 1032, ["items", "state", "parent-id", "dragndrop"])
67
70
  ]);
68
71
  }), 128))
69
72
  ]),
70
73
  _: 3
71
- }, 16, ["list"]);
74
+ }, 16, ["disabled", "list"]);
72
75
  };
73
76
  }
74
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.vue.js","sources":["../../../../../src/components/Tree/Tree.vue"],"sourcesContent":["<template>\n <VueDraggableNext\n v-bind=\"dragOptions\" \n class=\"dragArea list-group w-full\"\n :list=\"items\"\n :handle=\"'.my-handle'\"\n @change=\"handleChange\"\n >\n <div v-for=\"item in items\" :key=\"item._id\" class=\"mn-t-thin radius-medium mn-b-thin\">\n <slot\n :item=\"item\"\n >\n </slot>\n <Tree \n :items=\"item.children\"\n :state=\"state\"\n :parent-id=\"item._id\"\n @update=\"emitChange\"\n class=\"pd-l-medium\"\n v-slot=\"{ item }\"\n >\n <slot\n :item=\"item\"\n >\n </slot>\n </Tree>\n </div>\n </VueDraggableNext>\n</template>\n\n<script setup>\nimport { VueDraggableNext } from 'vue-draggable-next';\n\nimport Tree from './Tree.vue';\n\nconst props = defineProps({\n items: Array,\n state: Array,\n parentId: { type: String, default: null }\n});\n\nconst emits = defineEmits(['update']);\n\nconst dragOptions = {\n animation: 200,\n group: 'category',\n ghostClass: 'ghost'\n};\n\nfunction findCategoryAndUpdateParent(items, targetId, parentId = null) {\n for (const item of items) {\n if (item._id === targetId) {\n item.parent = parentId;\n return item;\n }\n \n if (item.children) {\n const found = findCategoryAndUpdateParent(item.children, targetId, item._id);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nfunction updateOrders(items, startOrder = 0) {\n let currentOrder = startOrder;\n \n items.forEach(item => {\n item.order = currentOrder++;\n \n if (item.children?.length) {\n currentOrder = updateOrders(item.children, currentOrder);\n }\n });\n \n return currentOrder;\n}\n\nfunction handleChange(event) {\n console.log('event order is', event)\n if (!event.added && !event.moved) return;\n \n let movedItem = null;\n \n if (event.added) {\n // Элемент добавлен с другого уровня\n movedItem = event.added.element;\n // Устанавливаем правильный parent для этого уровня\n movedItem.parent = props.parentId;\n } else if (event.moved) {\n // Элемент перемещен на том же уровне (только изменение порядка)\n movedItem = props.items[event.moved.newIndex];\n // Parent не меняется при перемещении на том же уровне\n }\n \n // Обновляем order для текущего уровня\n props.items.forEach((item, index) => {\n item.order = index;\n });\n \n // Передаем полную информацию об изменении\n emits('update', {\n movedItem: movedItem,\n parentId: props.parentId,\n items: props.items\n });\n}\n\nfunction emitChange(event) {\n emits('update', event);\n}\n</script> "],"names":[],"mappings":";;;;;;;;;;;AAmCA,UAAM,QAAQ;AAMd,UAAM,QAAQ;AAEd,UAAM,cAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAiCA,aAAS,aAAa,OAAO;AAC3B,cAAQ,IAAI,kBAAkB,KAAK;AACnC,UAAI,CAAC,MAAM,SAAS,CAAC,MAAM,MAAO;AAElC,UAAI,YAAY;AAEhB,UAAI,MAAM,OAAO;AAEf,oBAAY,MAAM,MAAM;AAExB,kBAAU,SAAS,MAAM;AAAA,MAC3B,WAAW,MAAM,OAAO;AAEtB,oBAAY,MAAM,MAAM,MAAM,MAAM,QAAQ;AAAA,MAE9C;AAGA,YAAM,MAAM,QAAQ,CAAC,MAAM,UAAU;AACnC,aAAK,QAAQ;AAAA,MACf,CAAC;AAGD,YAAM,UAAU;AAAA,QACd;AAAA,QACA,UAAU,MAAM;AAAA,QAChB,OAAO,MAAM;AAAA,MACjB,CAAG;AAAA,IACH;AAEA,aAAS,WAAW,OAAO;AACzB,YAAM,UAAU,KAAK;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tree.vue.js","sources":["../../../../../src/components/Tree/Tree.vue"],"sourcesContent":["<template>\n <VueDraggableNext\n v-bind=\"dragOptions\"\n :disabled=\"!dragndrop\"\n class=\"dragArea list-group w-full\"\n :list=\"items\"\n :handle=\"'.my-handle'\"\n @change=\"handleChange\"\n >\n <div v-for=\"item in items\" :key=\"item._id\" class=\"mn-t-thin radius-medium mn-b-thin\">\n <slot\n :item=\"item\"\n >\n </slot>\n <Tree\n :items=\"item.children\"\n :state=\"state\"\n :parent-id=\"item._id\"\n :dragndrop=\"dragndrop\"\n @update=\"emitChange\"\n class=\"pd-l-medium\"\n v-slot=\"{ item }\"\n >\n <slot\n :item=\"item\"\n >\n </slot>\n </Tree>\n </div>\n </VueDraggableNext>\n</template>\n\n<script setup>\nimport { VueDraggableNext } from 'vue-draggable-next';\n\nimport Tree from './Tree.vue';\n\nconst props = defineProps({\n items: Array,\n state: Array,\n parentId: { type: String, default: null },\n dragndrop: { type: Boolean, default: true }\n});\n\nconst emits = defineEmits(['update']);\n\nconst dragOptions = {\n animation: 200,\n group: 'category',\n ghostClass: 'ghost'\n};\n\nfunction findCategoryAndUpdateParent(items, targetId, parentId = null) {\n for (const item of items) {\n if (item._id === targetId) {\n item.parent = parentId;\n return item;\n }\n \n if (item.children) {\n const found = findCategoryAndUpdateParent(item.children, targetId, item._id);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nfunction updateOrders(items, startOrder = 0) {\n let currentOrder = startOrder;\n \n items.forEach(item => {\n item.order = currentOrder++;\n \n if (item.children?.length) {\n currentOrder = updateOrders(item.children, currentOrder);\n }\n });\n \n return currentOrder;\n}\n\nfunction handleChange(event) {\n console.log('event order is', event)\n if (!event.added && !event.moved) return;\n \n let movedItem = null;\n \n if (event.added) {\n // Элемент добавлен с другого уровня\n movedItem = event.added.element;\n // Устанавливаем правильный parent для этого уровня\n movedItem.parent = props.parentId;\n } else if (event.moved) {\n // Элемент перемещен на том же уровне (только изменение порядка)\n movedItem = props.items[event.moved.newIndex];\n // Parent не меняется при перемещении на том же уровне\n }\n \n // Обновляем order для текущего уровня\n props.items.forEach((item, index) => {\n item.order = index;\n });\n \n // Передаем полную информацию об изменении\n emits('update', {\n movedItem: movedItem,\n parentId: props.parentId,\n items: props.items\n });\n}\n\nfunction emitChange(event) {\n emits('update', event);\n}\n</script> "],"names":[],"mappings":";;;;;;;;;;;;AAqCA,UAAM,QAAQ;AAOd,UAAM,QAAQ;AAEd,UAAM,cAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAiCA,aAAS,aAAa,OAAO;AAC3B,cAAQ,IAAI,kBAAkB,KAAK;AACnC,UAAI,CAAC,MAAM,SAAS,CAAC,MAAM,MAAO;AAElC,UAAI,YAAY;AAEhB,UAAI,MAAM,OAAO;AAEf,oBAAY,MAAM,MAAM;AAExB,kBAAU,SAAS,MAAM;AAAA,MAC3B,WAAW,MAAM,OAAO;AAEtB,oBAAY,MAAM,MAAM,MAAM,MAAM,QAAQ;AAAA,MAE9C;AAGA,YAAM,MAAM,QAAQ,CAAC,MAAM,UAAU;AACnC,aAAK,QAAQ;AAAA,MACf,CAAC;AAGD,YAAM,UAAU;AAAA,QACd;AAAA,QACA,UAAU,MAAM;AAAA,QAChB,OAAO,MAAM;AAAA,MACjB,CAAG;AAAA,IACH;AAEA,aAAS,WAAW,OAAO;AACzB,YAAM,UAAU,KAAK;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, watch, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, withModifiers, createVNode, toDisplayString } from "vue";
2
2
  import axios from "axios";
3
- import Loader from "../Loader/Loader.vue2.js";
3
+ import Loader from "../Loader/Loader.vue.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
5
5
  import _sfc_main$2 from "../../modules/icons/navigation/IconDelete.vue.js";
6
6
  /* empty css */
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, withModifiers, createVNode, createElementVNode, Transition, withCtx, createBlock, createCommentVNode, toDisplayString } from "vue";
2
2
  import axios from "axios";
3
- import Loader from "../Loader/Loader.vue2.js";
3
+ import Loader from "../Loader/Loader.vue.js";
4
4
  import _sfc_main$1 from "../../modules/icons/navigation/IconUpload.vue.js";
5
5
  import { useStore } from "../../modules/core/views/store/core.store.js";
6
6
  const _hoisted_1 = {
@@ -2,7 +2,8 @@ import * as auth from "./views/store/auth.js";
2
2
  import * as twofa from "./views/store/twofa.js";
3
3
  import * as users from "./views/store/users.js";
4
4
  import addRoutes from "../core/views/router/addRoutes.js";
5
- import { getRoutes } from "./auth.router.js";
5
+ import { getAuthRoutes } from "./views/router/auth.router.js";
6
+ import { getUsersRoutes } from "./views/router/users.router.js";
6
7
  import * as auth_validation from "./views/middlewares/auth.validation.js";
7
8
  import { i18nManager } from "../core/views/classes/i18n.manager.js";
8
9
  import locales from "./locales/index.js";
@@ -27,10 +28,10 @@ const importsTime = performance.measure("loading-36-imports", "loading-36-stores
27
28
  console.log(`[LOADING 36] Router/middleware/locales imports completed in ${importsTime.duration.toFixed(2)}ms`);
28
29
  function initializeAuth(app, store, router, options = {}) {
29
30
  i18nManager.register("auth", locales);
30
- const routes = getRoutes(options);
31
- routes.forEach(({ parentName, config }) => {
32
- addRoutes(router, { ...config, parentName });
33
- });
31
+ const authRoute = getAuthRoutes(options);
32
+ const usersRoute = getUsersRoutes(options);
33
+ addRoutes(router, { ...authRoute.config, parentName: authRoute.parentName });
34
+ addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });
34
35
  store.addStore("auth", auth);
35
36
  store.addStore("twofa", twofa);
36
37
  store.addStore("users", users);
@@ -45,7 +46,8 @@ const ModuleAuth = {
45
46
  storeUsers: users
46
47
  },
47
48
  router: {
48
- getRoutes
49
+ getAuthRoutes,
50
+ getUsersRoutes
49
51
  },
50
52
  middlewares: {
51
53
  validationAuth: auth_validation
@@ -69,7 +71,8 @@ export {
69
71
  default10 as SignUp,
70
72
  default12 as SliderFeatures,
71
73
  ModuleAuth as default,
72
- getRoutes,
74
+ getAuthRoutes,
75
+ getUsersRoutes,
73
76
  initializeAuth as initialize,
74
77
  auth as storeAuth,
75
78
  twofa as storeTwofa,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.client.js","sources":["../../../../../src/modules/auth/auth.client.js"],"sourcesContent":["// [LOADING 36] Auth module import started\nperformance.mark('loading-36-start');\nconsole.log('[LOADING 36] Auth module import started...');\n\n// Functional imports (needed for initialize function)\nimport * as storeAuth from './views/store/auth.js';\nimport * as storeTwofa from './views/store/twofa.js';\nimport * as storeUsers from './views/store/users.js';\n\nperformance.mark('loading-36-stores-end');\nconst storesTime = performance.measure('loading-36-stores', 'loading-36-start', 'loading-36-stores-end');\nconsole.log(`[LOADING 36] Store imports completed in ${storesTime.duration.toFixed(2)}ms`);\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getRoutes } from './auth.router.js';\n\n// Middlewares\nimport * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';\n\nimport { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js';\n\nimport locales from './locales/index.js';\n\nperformance.mark('loading-36-imports-end');\nconst importsTime = performance.measure('loading-36-imports', 'loading-36-stores-end', 'loading-36-imports-end');\nconsole.log(`[LOADING 36] Router/middleware/locales imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n// Component re-exports (enables tree shaking)\nexport { default as Auth } from './views/components/layouts/Auth.vue';\nexport { default as EnterCode } from './views/components/pages/EnterCode.vue';\nexport { default as EnterPassword } from './views/components/pages/EnterPassword.vue';\nexport { default as Invite } from './views/components/pages/Invite.vue';\nexport { default as Profile } from './views/components/pages/Profile.vue';\nexport { default as ProfileEdit } from './views/components/pages/ProfileEdit.vue';\nexport { default as ResetPassword } from './views/components/pages/ResetPassword.vue';\nexport { default as SignIn } from './views/components/pages/SignIn.vue';\nexport { default as SignUp } from './views/components/pages/SignUp.vue';\nexport { default as FeaturedUsers } from './views/components/sections/FeaturedUsers.vue';\nexport { default as SliderFeatures } from './views/components/sections/SliderFeatures.vue';\n\n// Пример функции инициализации для модуля аутентификации\nfunction initializeAuth(app, store, router, options = {}) {\n i18nManager.register('auth', locales);\n\n const routes = getRoutes(options);\n routes.forEach(({ parentName, config }) => {\n addRoutes(router, { ...config, parentName });\n });\n\n store.addStore('auth', storeAuth);\n store.addStore('twofa', storeTwofa);\n store.addStore('users', storeUsers);\n\n app.provide('store', store);\n}\n\nconst ModuleAuth = {\n initialize: initializeAuth,\n views: {\n store: {\n storeAuth,\n storeTwofa,\n storeUsers,\n },\n router: {\n getRoutes,\n },\n middlewares: {\n validationAuth,\n },\n },\n};\n\n// Functional exports\nexport {\n storeAuth,\n storeTwofa,\n storeUsers,\n getRoutes,\n validationAuth,\n initializeAuth as initialize,\n};\n\n// [LOADING 36] Auth module import completed\nperformance.mark('loading-36-end');\nperformance.measure('loading-36-total', 'loading-36-start', 'loading-36-end');\nconst totalTime = performance.getEntriesByName('loading-36-total')[0];\nconsole.log(`[LOADING 36] Auth module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleAuth;\n"],"names":["storeAuth","storeTwofa","storeUsers","validationAuth"],"mappings":";;;;;;;;;;;;;;;;;;;AACA,YAAY,KAAK,kBAAkB;AACnC,QAAQ,IAAI,4CAA4C;AAOxD,YAAY,KAAK,uBAAuB;AACxC,MAAM,aAAa,YAAY,QAAQ,qBAAqB,oBAAoB,uBAAuB;AACvG,QAAQ,IAAI,2CAA2C,WAAW,SAAS,QAAQ,CAAC,CAAC,IAAI;AAazF,YAAY,KAAK,wBAAwB;AACzC,MAAM,cAAc,YAAY,QAAQ,sBAAsB,yBAAyB,wBAAwB;AAC/G,QAAQ,IAAI,+DAA+D,YAAY,SAAS,QAAQ,CAAC,CAAC,IAAI;AAgB9G,SAAS,eAAe,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AACxD,cAAY,SAAS,QAAQ,OAAO;AAEpC,QAAM,SAAS,UAAU,OAAO;AAChC,SAAO,QAAQ,CAAC,EAAE,YAAY,OAAM,MAAO;AACzC,cAAU,QAAQ,EAAE,GAAG,QAAQ,WAAU,CAAE;AAAA,EAC7C,CAAC;AAED,QAAM,SAAS,QAAQA,IAAS;AAChC,QAAM,SAAS,SAASC,KAAU;AAClC,QAAM,SAAS,SAASC,KAAU;AAElC,MAAI,QAAQ,SAAS,KAAK;AAC5B;AAEK,MAAC,aAAa;AAAA,EACjB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,WAAMF;AAAAA,MACN,YAAMC;AAAAA,MACN,YAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,IACN;AAAA,IACI,aAAa;AAAA,MACjB,gBAAMC;AAAAA,IACN;AAAA,EACA;AACA;AAaA,YAAY,KAAK,gBAAgB;AACjC,YAAY,QAAQ,oBAAoB,oBAAoB,gBAAgB;AAC5E,MAAM,YAAY,YAAY,iBAAiB,kBAAkB,EAAE,CAAC;AACpE,QAAQ,IAAI,8CAA8C,WAAW,UAAU,QAAQ,CAAC,CAAC,IAAI;"}
1
+ {"version":3,"file":"auth.client.js","sources":["../../../../../src/modules/auth/auth.client.js"],"sourcesContent":["// [LOADING 36] Auth module import started\nperformance.mark('loading-36-start');\nconsole.log('[LOADING 36] Auth module import started...');\n\n// Functional imports (needed for initialize function)\nimport * as storeAuth from './views/store/auth.js';\nimport * as storeTwofa from './views/store/twofa.js';\nimport * as storeUsers from './views/store/users.js';\n\nperformance.mark('loading-36-stores-end');\nconst storesTime = performance.measure('loading-36-stores', 'loading-36-start', 'loading-36-stores-end');\nconsole.log(`[LOADING 36] Store imports completed in ${storesTime.duration.toFixed(2)}ms`);\n\n// Router\nimport addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';\nimport { getAuthRoutes } from './views/router/auth.router.js';\nimport { getUsersRoutes } from './views/router/users.router.js';\n\n// Middlewares\nimport * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';\n\nimport { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js';\n\nimport locales from './locales/index.js';\n\nperformance.mark('loading-36-imports-end');\nconst importsTime = performance.measure('loading-36-imports', 'loading-36-stores-end', 'loading-36-imports-end');\nconsole.log(`[LOADING 36] Router/middleware/locales imports completed in ${importsTime.duration.toFixed(2)}ms`);\n\n// Component re-exports (enables tree shaking)\nexport { default as Auth } from './views/components/layouts/Auth.vue';\nexport { default as EnterCode } from './views/components/pages/EnterCode.vue';\nexport { default as EnterPassword } from './views/components/pages/EnterPassword.vue';\nexport { default as Invite } from './views/components/pages/Invite.vue';\nexport { default as Profile } from './views/components/pages/Profile.vue';\nexport { default as ProfileEdit } from './views/components/pages/ProfileEdit.vue';\nexport { default as ResetPassword } from './views/components/pages/ResetPassword.vue';\nexport { default as SignIn } from './views/components/pages/SignIn.vue';\nexport { default as SignUp } from './views/components/pages/SignUp.vue';\nexport { default as FeaturedUsers } from './views/components/sections/FeaturedUsers.vue';\nexport { default as SliderFeatures } from './views/components/sections/SliderFeatures.vue';\n\n// Пример функции инициализации для модуля аутентификации\nfunction initializeAuth(app, store, router, options = {}) {\n i18nManager.register('auth', locales);\n\n const authRoute = getAuthRoutes(options);\n const usersRoute = getUsersRoutes(options);\n\n addRoutes(router, { ...authRoute.config, parentName: authRoute.parentName });\n addRoutes(router, { ...usersRoute.config, parentName: usersRoute.parentName });\n\n store.addStore('auth', storeAuth);\n store.addStore('twofa', storeTwofa);\n store.addStore('users', storeUsers);\n\n app.provide('store', store);\n}\n\nconst ModuleAuth = {\n initialize: initializeAuth,\n views: {\n store: {\n storeAuth,\n storeTwofa,\n storeUsers,\n },\n router: {\n getAuthRoutes,\n getUsersRoutes,\n },\n middlewares: {\n validationAuth,\n },\n },\n};\n\n// Functional exports\nexport {\n storeAuth,\n storeTwofa,\n storeUsers,\n getAuthRoutes,\n getUsersRoutes,\n validationAuth,\n initializeAuth as initialize,\n};\n\n// [LOADING 36] Auth module import completed\nperformance.mark('loading-36-end');\nperformance.measure('loading-36-total', 'loading-36-start', 'loading-36-end');\nconst totalTime = performance.getEntriesByName('loading-36-total')[0];\nconsole.log(`[LOADING 36] Auth module fully imported in ${totalTime?.duration?.toFixed(2)}ms`);\n\nexport default ModuleAuth;\n"],"names":["storeAuth","storeTwofa","storeUsers","validationAuth"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,YAAY,KAAK,kBAAkB;AACnC,QAAQ,IAAI,4CAA4C;AAOxD,YAAY,KAAK,uBAAuB;AACxC,MAAM,aAAa,YAAY,QAAQ,qBAAqB,oBAAoB,uBAAuB;AACvG,QAAQ,IAAI,2CAA2C,WAAW,SAAS,QAAQ,CAAC,CAAC,IAAI;AAczF,YAAY,KAAK,wBAAwB;AACzC,MAAM,cAAc,YAAY,QAAQ,sBAAsB,yBAAyB,wBAAwB;AAC/G,QAAQ,IAAI,+DAA+D,YAAY,SAAS,QAAQ,CAAC,CAAC,IAAI;AAgB9G,SAAS,eAAe,KAAK,OAAO,QAAQ,UAAU,CAAA,GAAI;AACxD,cAAY,SAAS,QAAQ,OAAO;AAEpC,QAAM,YAAY,cAAc,OAAO;AACvC,QAAM,aAAa,eAAe,OAAO;AAEzC,YAAU,QAAQ,EAAE,GAAG,UAAU,QAAQ,YAAY,UAAU,YAAY;AAC3E,YAAU,QAAQ,EAAE,GAAG,WAAW,QAAQ,YAAY,WAAW,YAAY;AAE7E,QAAM,SAAS,QAAQA,IAAS;AAChC,QAAM,SAAS,SAASC,KAAU;AAClC,QAAM,SAAS,SAASC,KAAU;AAElC,MAAI,QAAQ,SAAS,KAAK;AAC5B;AAEK,MAAC,aAAa;AAAA,EACjB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,WAAMF;AAAAA,MACN,YAAMC;AAAAA,MACN,YAAMC;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IACN;AAAA,IACI,aAAa;AAAA,MACjB,gBAAMC;AAAAA,IACN;AAAA,EACA;AACA;AAcA,YAAY,KAAK,gBAAgB;AACjC,YAAY,QAAQ,oBAAoB,oBAAoB,gBAAgB;AAC5E,MAAM,YAAY,YAAY,iBAAiB,kBAAkB,EAAE,CAAC;AACpE,QAAQ,IAAI,8CAA8C,WAAW,UAAU,QAAQ,CAAC,CAAC,IAAI;"}
@@ -1,5 +1,5 @@
1
1
  import { reactive, watch, ref, createElementBlock, openBlock, createElementVNode, toDisplayString, unref, withDirectives, vModelText } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import { useRoute, useRouter } from "vue-router";
4
4
  import { useI18n } from "vue-i18n";
5
5
  import { state as state$1 } from "../../store/auth.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, createTextVNode, withCtx } from "vue";
2
2
  /* empty css */
3
- import Field from "../../../../../components/Field/Field.vue2.js";
4
- import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
3
+ import Field from "../../../../../components/Field/Field.vue.js";
4
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import { useI18n } from "vue-i18n";
7
7
  import { state, actions } from "../../store/auth.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, withCtx } from "vue";
2
2
  /* empty css */
3
- import Field from "../../../../../components/Field/Field.vue2.js";
4
- import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
3
+ import Field from "../../../../../components/Field/Field.vue.js";
4
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import { state, actions } from "../../store/auth.js";
7
7
  import invitesStore from "../../../../organizations/store/invites.store.js";
@@ -1,9 +1,9 @@
1
1
  import { ref, inject, onMounted, resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createVNode, createBlock, unref, withCtx, toDisplayString, Fragment, renderList, normalizeClass, resolveDynamicComponent } from "vue";
2
- /* empty css */
3
- /* empty css */
2
+ /* empty css */
4
3
  /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue.js";
6
- import _sfc_main$6 from "../../../../../components/Menu/Menu.vue.js";
6
+ import _sfc_main$6 from "../../../../../components/Menu/Menu.vue2.js";
7
7
  import _sfc_main$b from "../../../../../components/Menu/MenuItem.vue.js";
8
8
  import _sfc_main$3 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
9
9
  import _sfc_main$2 from "../../../../reports/components/sections/FormReport.vue.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, provide, resolveComponent, createBlock, openBlock, withCtx, createElementBlock, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
3
- import Loader from "../../../../../components/Loader/Loader.vue2.js";
3
+ import Loader from "../../../../../components/Loader/Loader.vue.js";
4
4
  import _sfc_main$2 from "./ProfileEditSidebar.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import { state } from "../../store/auth.js";
@@ -1,6 +1,6 @@
1
1
  import { createElementBlock, openBlock, createVNode, createElementVNode, unref, withCtx, createTextVNode } from "vue";
2
2
  import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
3
- import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
4
4
  import _sfc_main$1 from "../sections/ProfileEditCredentials.vue.js";
5
5
  import { useRouter } from "vue-router";
6
6
  import { actions as actions$1 } from "../../store/auth.js";
@@ -1,6 +1,6 @@
1
1
  import { createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
2
- import Field from "../../../../../components/Field/Field.vue2.js";
3
- import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
2
+ import Field from "../../../../../components/Field/Field.vue.js";
3
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
4
4
  import UploadImage from "../../../../../components/UploadImage/UploadImage.vue.js";
5
5
  import { useRouter } from "vue-router";
6
6
  import { state, actions } from "../../store/users.js";
@@ -1,8 +1,8 @@
1
1
  import { ref, computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Transition, withCtx, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
- import Field from "../../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
- import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
6
6
  import { useRoute, useRouter } from "vue-router";
7
7
  import { useI18n } from "vue-i18n";
8
8
  import { useStore } from "../../../../core/views/store/core.store.js";
@@ -1,11 +1,12 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, createTextVNode, toDisplayString, unref, withCtx, Transition, withDirectives, vShow } from "vue";
2
2
  import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
- import Field from "../../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
- import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
6
6
  import { useRoute, useRouter } from "vue-router";
7
7
  import { useI18n } from "vue-i18n";
8
8
  import { useStore } from "../../../../core/views/store/core.store.js";
9
+ import { state, actions } from "../../store/auth.js";
9
10
  import { validateInputs, validatePhone, validateEmail } from "../../validations/inputs.validation.js";
10
11
  /* empty css */
11
12
  const _hoisted_1 = { class: "" };
@@ -24,7 +25,6 @@ const _sfc_main = {
24
25
  __name: "SignIn",
25
26
  setup(__props) {
26
27
  const store = useStore();
27
- const auth = store.auth;
28
28
  const core = store.core;
29
29
  const phoneValidation = ref(null);
30
30
  const passswordValidation = ref(null);
@@ -61,21 +61,21 @@ const _sfc_main = {
61
61
  if (tabAuth.value === "phone") await validateInputs(
62
62
  phoneValidation,
63
63
  validatePhone,
64
- auth.state.user.phone,
64
+ state.user.phone,
65
65
  "Некорректный телефон"
66
66
  );
67
67
  if (tabAuth.value === "email") await validateInputs(
68
68
  emailValidation,
69
69
  validateEmail,
70
- auth.state.user.email,
70
+ state.user.email,
71
71
  "Некорректный email"
72
72
  );
73
73
  } catch (error) {
74
74
  console.log(error);
75
75
  throw new Error();
76
76
  }
77
- const userCopy = { ...auth.state.user };
78
- await auth.actions.login(userCopy, tabAuth.value);
77
+ const userCopy = { ...state.user };
78
+ await actions.login(userCopy, tabAuth.value);
79
79
  }
80
80
  function redirectTo() {
81
81
  if (route.query?.returnUrl) {
@@ -89,7 +89,7 @@ const _sfc_main = {
89
89
  router.push({
90
90
  name: "User Profile",
91
91
  params: {
92
- _id: auth.state.user._id
92
+ _id: state.user._id
93
93
  },
94
94
  query: {
95
95
  afterAuth: "true"
@@ -134,7 +134,7 @@ const _sfc_main = {
134
134
  default: withCtx(() => [
135
135
  withDirectives(createElementVNode("div", _hoisted_7, [
136
136
  createVNode(_sfc_main$2, {
137
- onChange: _cache[1] || (_cache[1] = (event) => unref(auth).state.user.phone = event),
137
+ onChange: _cache[1] || (_cache[1] = (event) => state.user.phone = event),
138
138
  dropdownOptions: {
139
139
  showDialCodeInSelection: true,
140
140
  showFlags: true,
@@ -157,8 +157,8 @@ const _sfc_main = {
157
157
  default: withCtx(() => [
158
158
  withDirectives(createElementVNode("div", _hoisted_8, [
159
159
  createVNode(Field, {
160
- field: unref(auth).state.user.email,
161
- "onUpdate:field": _cache[2] || (_cache[2] = ($event) => unref(auth).state.user.email = $event),
160
+ field: state.user.email,
161
+ "onUpdate:field": _cache[2] || (_cache[2] = ($event) => state.user.email = $event),
162
162
  placeholder: unref(t)("auth.signIn.emailPlaceholder"),
163
163
  validation: emailValidation.value,
164
164
  tabIndex: -1,
@@ -172,8 +172,8 @@ const _sfc_main = {
172
172
  })
173
173
  ]),
174
174
  createVNode(Field, {
175
- field: unref(auth).state.user.password,
176
- "onUpdate:field": _cache[3] || (_cache[3] = ($event) => unref(auth).state.user.password = $event),
175
+ field: state.user.password,
176
+ "onUpdate:field": _cache[3] || (_cache[3] = ($event) => state.user.password = $event),
177
177
  type: "password",
178
178
  validation: passswordValidation.value,
179
179
  placeholder: unref(t)("auth.signIn.passwordPlaceholder"),
@@ -1 +1 @@
1
- {"version":3,"file":"SignIn.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/SignIn.vue"],"sourcesContent":["<template>\n\t<section class=\"\">\n\t\t<!-- Header -->\n\t\t<img loading=\"lazy\" :src=\"'/logo/logo.svg'\" class=\"i-extra radius-small mn-b-small\">\n\n\t\t<h3 class=\"mn-b-medium\">\n\t\t\t{{ t('auth.signIn.title') }}\n\t\t\t<br>\n\t\t\t<span class=\"t-semi\">{{ t('auth.signIn.subtitle') }}</span>\n\t\t</h3>\n\n\t\t<p class=\"mn-b-big\">\n\t\t\t<router-link :to=\"{name: 'Sign Up', query: { returnUrl: route.query?.returnUrl}}\" class=\"underline t-second\">{{ t('auth.signIn.signup') }}</router-link>\n\t\t</p>\n\t\t\n\t\t<!-- Select -->\n\t\t<div \n\t\t\tv-if=\"availableTabs.length > 1\" \n\t\t\tclass=\"mn-b-small p-small uppercase t-semi bg-light radius-small o-hidden\"\n\t\t>\n\t\t\t<Tab \n\t\t\t\tv-model:selected=\"tabAuth\"\n\t\t\t\t:tabs=\"availableTabs\"\n\t\t\t\tclassTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n\t\t\t/>\n\t\t</div>\n\t\t<!-- Form -->\n\t\t<div class=\"pos-relative\">\n\t\t<!-- Phone -->\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<div v-show=\"tabAuth === 'phone'\" class=\"mn-b-thin radius-small\">\n\t\t\t\t\t<FieldPhone\n\t\t\t\t\t\t@change=\"(event) => auth.state.user.phone = event\" \t\n\t\t\t\t\t\t:dropdownOptions=\"{\n\t\t\t\t\t\t\tshowDialCodeInSelection: true,\n\t\t\t\t\t\t\tshowFlags: true,\n\t\t\t\t\t\t\tshowDialCodeInList: true,\n\t\t\t\t\t\t\ttabIndex: -1\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:validCharactersOnly=\"true\"\n\t\t\t\t\t\t:validation=\"phoneValidation\" \n\t\t\t\t\t\tmode=\"national\"\n\t\t\t\t\t\t:inputOptions=\"{placeholder: t('auth.signIn.phonePlaceholder'), type: 'tel'}\"\n\t\t\t\t\t\tclass=\"bg-light h-4r pd-small radius-small mn-b-thin\" \n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<div v-show=\"tabAuth === 'email'\" class=\"mn-b-thin radius-small o-hidden\">\n\t\t\t\t\t<Field \n\t\t\t\t\t\tv-model:field=\"auth.state.user.email\" \t\n\t\t\t\t\t\t:placeholder=\"t('auth.signIn.emailPlaceholder')\" \t\n\t\t\t\t\t\t:validation=\"emailValidation\"\n\t\t\t\t\t\t:tabIndex=\"-1\"\n\t\t\t\t\t\tclass=\"bg-light h-4r pd-medium radius-small\" \n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<!-- Password -->\n\t\t<Field \n\t\t\tv-model:field=\"auth.state.user.password\"\n\t\t\ttype=\"password\" \t\n\t\t\t:validation=\"passswordValidation\" \n\t\t\t:placeholder=\"t('auth.signIn.passwordPlaceholder')\" \n\t\t\tclass=\"\n bg-light\n pd-medium\n radius-small\n mn-b-semi\n h-4r \n \"\n\t\t/>\n\t\t<!-- Links -->\n\t\t<div class=\"w-100 mn-b-big\">\n\t\t\t<router-link\n\t\t\t\t:to=\"{name: 'Reset Password', query: { returnUrl: route.query?.returnUrl}}\"\n\t\t\t\tclass=\"underline d-block t-blue\"\n\t\t\t>\n\t\t\t\t{{ t('auth.signIn.forgotPassword') }}\n\t\t\t</router-link>\n\t\t</div>\n\t\t<!-- Button -->\n\t\t<Button \n\t\t\t:submit=\"onSubmit\" \n\t\t\t:callback=\"redirectTo\" \n\t\t\tclass=\"w-100 bg-main\"\n\t\t>\n\t\t\t{{ t('auth.signIn.signin') }}\n\t\t</Button>\n\t\t\n\t\t<!-- <Button \n\t\t\t:submit=\"onSubmitApple\" \n\t\t\t:callback=\"redirectTo\" \n\t\t\tclass=\"mn-b-thin bg-black t-white\"\n\t\t>\n\t\t\t{{ t('auth.signIn.signin_apple') }}\n\t\t</Button> -->\n\t</section> \n</template>\n\n<script setup>\n// Import components\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport FieldPhone from '@martyrs/src/components/FieldPhone/FieldPhone.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Import libs\nimport { computed, onMounted, ref, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n// Import store\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n// Import validation\nimport * as inputsValidation from '@martyrs/src/modules/auth/views/validations/inputs.validation'\n\n// Get store\nconst store = useStore()\nconst auth = store.auth\nconst core = store.core\n\n// Init validation\nconst phoneValidation = ref(null)\nconst passswordValidation = ref(null)\nconst emailValidation = ref(null)\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Localization\nconst { t } = useI18n({\n\tuseScope: 'global'\n})\n// Accessing state\nconst availableTabs = computed(() => {\n const tabs = [\n { name: t('auth.signIn.phone'), value: 'phone' },\n { name: t('auth.signIn.email'), value: 'email' }\n ];\n const excludeMethods = core.state?.options?.auth?.authMethodsExclude || [];\n return tabs.filter(tab => !excludeMethods.includes(tab.value));\n});\n\nconst tabAuth = ref(availableTabs.value.length ? availableTabs.value[0].value : '');\n\nconst loadExternalScript = (src) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n}\n\nonMounted(async () => {\n\tawait loadExternalScript('https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js');\n});\n// Methods\nasync function onSubmit() {\n\ttry {\n\t if (tabAuth.value === 'phone') await inputsValidation.validateInputs(\n\t\t\tphoneValidation, \n\t\t\tinputsValidation.validatePhone, \n\t\t\tauth.state.user.phone, \n\t\t\t'Некорректный телефон'\n\t\t)\n\t\tif (tabAuth.value === 'email') await inputsValidation.validateInputs(\n\t\t\temailValidation, \n\t\t\tinputsValidation.validateEmail, \n\t\t\tauth.state.user.email, \n\t\t\t'Некорректный email'\n\t\t)\n\t} catch (error) {\n\t\tconsole.log(error)\n\t\tthrow new Error\n\t}\n\n\t// COSTIL PLEASE GOD MAKE IT GOOD, FUKEN INPUT COMPONENT RETURN OBJECT NUT NUMBER\n\tconst userCopy = {...auth.state.user};\n\t// COSTIL PLEASE GOD MAKE IT GOOD, FUKEN INPUT COMPONENT RETURN OBJECT NUT NUMBER\n\n \tawait auth.actions.login(userCopy, tabAuth.value)\n}\n\nasync function onSubmitApple() {\n try {\n window.AppleID.auth.init({\n clientId: 'com.thecommune.app.signin',\n scope: 'email name',\n redirectURI: 'https://thecommunephuket.com/auth/signin',\n usePopup: true,\n });\n\n let response = await window.AppleID.auth.signIn();\n\n if (response) {\n console.log(response);\n await auth.actions.login(response, 'apple');\n }\n\n } catch (error) {\n console.error(error);\n throw new Error('Error during Apple authentication');\n }\n}\n\nfunction redirectTo () {\n\tif (route.query?.returnUrl) {\n\t\trouter.push({ \n\t\t\tpath: route.query?.returnUrl,\n\t\t\tquery: { \n\t\t\t\tafterAuth: 'true' \n\t\t\t}\n\t\t})\n\t} else { \n\t\trouter.push({ \n\t\t\tname: 'User Profile', \n\t\t\tparams: { \n\t\t\t\t_id: auth.state.user._id \n\t\t\t},\n\t\t\tquery: { \n\t\t\t\tafterAuth: 'true' \n\t\t\t}\n\t\t})\n\t}\n}\n</script>\n\n<style lang=\"scss\">\n\n\t.input-error {\n\t border: 1px solid red;\n\t box-shadow: 0 0 3px 0 red;\n\t}\n</style>"],"names":["inputsValidation.validateInputs","inputsValidation.validatePhone","inputsValidation.validateEmail"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuHA,UAAM,QAAQ,SAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,UAAM,OAAO,MAAM;AAGnB,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,sBAAsB,IAAI,IAAI;AACpC,UAAM,kBAAkB,IAAI,IAAI;AAEhC,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACrB,UAAU;AAAA,IACX,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACjC,YAAM,OAAO;AAAA,QACT,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,QAAO;AAAA,QAC9C,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,QAAO;AAAA,MACtD;AACI,YAAM,iBAAiB,KAAK,OAAO,SAAS,MAAM,sBAAsB,CAAA;AACxE,aAAO,KAAK,OAAO,SAAO,CAAC,eAAe,SAAS,IAAI,KAAK,CAAC;AAAA,IACjE,CAAC;AAED,UAAM,UAAU,IAAI,cAAc,MAAM,SAAS,cAAc,MAAM,CAAC,EAAE,QAAQ,EAAE;AAElF,UAAM,qBAAqB,CAAC,QAAQ;AAClC,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,OAAO;AACd,eAAO,MAAM;AACb,eAAO,SAAS;AAChB,eAAO,UAAU;AACjB,iBAAS,KAAK,YAAY,MAAM;AAAA,MAClC,CAAC;AAAA,IACH;AAEA,cAAU,YAAY;AACrB,YAAM,mBAAmB,sFAAsF;AAAA,IAChH,CAAC;AAED,mBAAe,WAAW;AACzB,UAAI;AACF,YAAI,QAAQ,UAAU,QAAS,OAAMA;AAAAA,UACrC;AAAA,UACAC;AAAAA,UACA,KAAK,MAAM,KAAK;AAAA,UAChB;AAAA,QACH;AACE,YAAI,QAAQ,UAAU,QAAS,OAAMD;AAAAA,UACpC;AAAA,UACAE;AAAAA,UACA,KAAK,MAAM,KAAK;AAAA,UAChB;AAAA,QACH;AAAA,MACC,SAAS,OAAO;AACf,gBAAQ,IAAI,KAAK;AACjB,cAAM,IAAI;AAAA,MACX;AAGA,YAAM,WAAW,EAAC,GAAG,KAAK,MAAM,KAAI;AAGnC,YAAM,KAAK,QAAQ,MAAM,UAAU,QAAQ,KAAK;AAAA,IAClD;AAwBA,aAAS,aAAc;AACtB,UAAI,MAAM,OAAO,WAAW;AAC3B,eAAO,KAAK;AAAA,UACX,MAAM,MAAM,OAAO;AAAA,UACnB,OAAO;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACA,CAAG;AAAA,MACF,OAAO;AACN,eAAO,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,YACP,KAAK,KAAK,MAAM,KAAK;AAAA,UACzB;AAAA,UACG,OAAO;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACA,CAAG;AAAA,MACF;AAAA,IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SignIn.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/SignIn.vue"],"sourcesContent":["<template>\n\t<section class=\"\">\n\t\t<!-- Header -->\n\t\t<img loading=\"lazy\" :src=\"'/logo/logo.svg'\" class=\"i-extra radius-small mn-b-small\">\n\n\t\t<h3 class=\"mn-b-medium\">\n\t\t\t{{ t('auth.signIn.title') }}\n\t\t\t<br>\n\t\t\t<span class=\"t-semi\">{{ t('auth.signIn.subtitle') }}</span>\n\t\t</h3>\n\n\t\t<p class=\"mn-b-big\">\n\t\t\t<router-link :to=\"{name: 'Sign Up', query: { returnUrl: route.query?.returnUrl}}\" class=\"underline t-second\">{{ t('auth.signIn.signup') }}</router-link>\n\t\t</p>\n\t\t\n\t\t<!-- Select -->\n\t\t<div \n\t\t\tv-if=\"availableTabs.length > 1\" \n\t\t\tclass=\"mn-b-small p-small uppercase t-semi bg-light radius-small o-hidden\"\n\t\t>\n\t\t\t<Tab \n\t\t\t\tv-model:selected=\"tabAuth\"\n\t\t\t\t:tabs=\"availableTabs\"\n\t\t\t\tclassTab=\"pd-small pd-r-medium pd-l-medium w-100 pd-small radius-small\"\n\t\t\t/>\n\t\t</div>\n\t\t<!-- Form -->\n\t\t<div class=\"pos-relative\">\n\t\t<!-- Phone -->\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<div v-show=\"tabAuth === 'phone'\" class=\"mn-b-thin radius-small\">\n\t\t\t\t\t<FieldPhone\n\t\t\t\t\t\t@change=\"(event) => auth.state.user.phone = event\" \t\n\t\t\t\t\t\t:dropdownOptions=\"{\n\t\t\t\t\t\t\tshowDialCodeInSelection: true,\n\t\t\t\t\t\t\tshowFlags: true,\n\t\t\t\t\t\t\tshowDialCodeInList: true,\n\t\t\t\t\t\t\ttabIndex: -1\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:validCharactersOnly=\"true\"\n\t\t\t\t\t\t:validation=\"phoneValidation\" \n\t\t\t\t\t\tmode=\"national\"\n\t\t\t\t\t\t:inputOptions=\"{placeholder: t('auth.signIn.phonePlaceholder'), type: 'tel'}\"\n\t\t\t\t\t\tclass=\"bg-light h-4r pd-small radius-small mn-b-thin\" \n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t<div v-show=\"tabAuth === 'email'\" class=\"mn-b-thin radius-small o-hidden\">\n\t\t\t\t\t<Field \n\t\t\t\t\t\tv-model:field=\"auth.state.user.email\" \t\n\t\t\t\t\t\t:placeholder=\"t('auth.signIn.emailPlaceholder')\" \t\n\t\t\t\t\t\t:validation=\"emailValidation\"\n\t\t\t\t\t\t:tabIndex=\"-1\"\n\t\t\t\t\t\tclass=\"bg-light h-4r pd-medium radius-small\" \n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<!-- Password -->\n\t\t<Field \n\t\t\tv-model:field=\"auth.state.user.password\"\n\t\t\ttype=\"password\" \t\n\t\t\t:validation=\"passswordValidation\" \n\t\t\t:placeholder=\"t('auth.signIn.passwordPlaceholder')\" \n\t\t\tclass=\"\n bg-light\n pd-medium\n radius-small\n mn-b-semi\n h-4r \n \"\n\t\t/>\n\t\t<!-- Links -->\n\t\t<div class=\"w-100 mn-b-big\">\n\t\t\t<router-link\n\t\t\t\t:to=\"{name: 'Reset Password', query: { returnUrl: route.query?.returnUrl}}\"\n\t\t\t\tclass=\"underline d-block t-blue\"\n\t\t\t>\n\t\t\t\t{{ t('auth.signIn.forgotPassword') }}\n\t\t\t</router-link>\n\t\t</div>\n\t\t<!-- Button -->\n\t\t<Button \n\t\t\t:submit=\"onSubmit\" \n\t\t\t:callback=\"redirectTo\" \n\t\t\tclass=\"w-100 bg-main\"\n\t\t>\n\t\t\t{{ t('auth.signIn.signin') }}\n\t\t</Button>\n\t\t\n\t\t<!-- <Button \n\t\t\t:submit=\"onSubmitApple\" \n\t\t\t:callback=\"redirectTo\" \n\t\t\tclass=\"mn-b-thin bg-black t-white\"\n\t\t>\n\t\t\t{{ t('auth.signIn.signin_apple') }}\n\t\t</Button> -->\n\t</section> \n</template>\n\n<script setup>\n// Import components\nimport Tab from '@martyrs/src/components/Tab/Tab.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport FieldPhone from '@martyrs/src/components/FieldPhone/FieldPhone.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Import libs\nimport { computed, onMounted, ref, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n// Import store\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n// Import validation\nimport * as inputsValidation from '@martyrs/src/modules/auth/views/validations/inputs.validation'\n\n// Get store\nconst store = useStore()\nconst core = store.core\n\n// Init validation\nconst phoneValidation = ref(null)\nconst passswordValidation = ref(null)\nconst emailValidation = ref(null)\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Localization\nconst { t } = useI18n({\n\tuseScope: 'global'\n})\n// Accessing state\nconst availableTabs = computed(() => {\n const tabs = [\n { name: t('auth.signIn.phone'), value: 'phone' },\n { name: t('auth.signIn.email'), value: 'email' }\n ];\n const excludeMethods = core.state?.options?.auth?.authMethodsExclude || [];\n return tabs.filter(tab => !excludeMethods.includes(tab.value));\n});\n\nconst tabAuth = ref(availableTabs.value.length ? availableTabs.value[0].value : '');\n\nconst loadExternalScript = (src) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.head.appendChild(script);\n });\n}\n\nonMounted(async () => {\n\tawait loadExternalScript('https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js');\n});\n// Methods\nasync function onSubmit() {\n\ttry {\n\t if (tabAuth.value === 'phone') await inputsValidation.validateInputs(\n\t\t\tphoneValidation, \n\t\t\tinputsValidation.validatePhone, \n\t\t\tauth.state.user.phone, \n\t\t\t'Некорректный телефон'\n\t\t)\n\t\tif (tabAuth.value === 'email') await inputsValidation.validateInputs(\n\t\t\temailValidation, \n\t\t\tinputsValidation.validateEmail, \n\t\t\tauth.state.user.email, \n\t\t\t'Некорректный email'\n\t\t)\n\t} catch (error) {\n\t\tconsole.log(error)\n\t\tthrow new Error\n\t}\n\n\t// COSTIL PLEASE GOD MAKE IT GOOD, FUKEN INPUT COMPONENT RETURN OBJECT NUT NUMBER\n\tconst userCopy = {...auth.state.user};\n\t// COSTIL PLEASE GOD MAKE IT GOOD, FUKEN INPUT COMPONENT RETURN OBJECT NUT NUMBER\n\n \tawait auth.actions.login(userCopy, tabAuth.value)\n}\n\nasync function onSubmitApple() {\n try {\n window.AppleID.auth.init({\n clientId: 'com.thecommune.app.signin',\n scope: 'email name',\n redirectURI: 'https://thecommunephuket.com/auth/signin',\n usePopup: true,\n });\n\n let response = await window.AppleID.auth.signIn();\n\n if (response) {\n console.log(response);\n await auth.actions.login(response, 'apple');\n }\n\n } catch (error) {\n console.error(error);\n throw new Error('Error during Apple authentication');\n }\n}\n\nfunction redirectTo () {\n\tif (route.query?.returnUrl) {\n\t\trouter.push({ \n\t\t\tpath: route.query?.returnUrl,\n\t\t\tquery: { \n\t\t\t\tafterAuth: 'true' \n\t\t\t}\n\t\t})\n\t} else { \n\t\trouter.push({ \n\t\t\tname: 'User Profile', \n\t\t\tparams: { \n\t\t\t\t_id: auth.state.user._id \n\t\t\t},\n\t\t\tquery: { \n\t\t\t\tafterAuth: 'true' \n\t\t\t}\n\t\t})\n\t}\n}\n</script>\n\n<style lang=\"scss\">\n\n\t.input-error {\n\t border: 1px solid red;\n\t box-shadow: 0 0 3px 0 red;\n\t}\n</style>"],"names":["inputsValidation.validateInputs","inputsValidation.validatePhone","auth.state","inputsValidation.validateEmail","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwHA,UAAM,QAAQ,SAAQ;AACtB,UAAM,OAAO,MAAM;AAGnB,UAAM,kBAAkB,IAAI,IAAI;AAChC,UAAM,sBAAsB,IAAI,IAAI;AACpC,UAAM,kBAAkB,IAAI,IAAI;AAEhC,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACrB,UAAU;AAAA,IACX,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACjC,YAAM,OAAO;AAAA,QACT,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,QAAO;AAAA,QAC9C,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,QAAO;AAAA,MACtD;AACI,YAAM,iBAAiB,KAAK,OAAO,SAAS,MAAM,sBAAsB,CAAA;AACxE,aAAO,KAAK,OAAO,SAAO,CAAC,eAAe,SAAS,IAAI,KAAK,CAAC;AAAA,IACjE,CAAC;AAED,UAAM,UAAU,IAAI,cAAc,MAAM,SAAS,cAAc,MAAM,CAAC,EAAE,QAAQ,EAAE;AAElF,UAAM,qBAAqB,CAAC,QAAQ;AAClC,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,OAAO;AACd,eAAO,MAAM;AACb,eAAO,SAAS;AAChB,eAAO,UAAU;AACjB,iBAAS,KAAK,YAAY,MAAM;AAAA,MAClC,CAAC;AAAA,IACH;AAEA,cAAU,YAAY;AACrB,YAAM,mBAAmB,sFAAsF;AAAA,IAChH,CAAC;AAED,mBAAe,WAAW;AACzB,UAAI;AACF,YAAI,QAAQ,UAAU,QAAS,OAAMA;AAAAA,UACrC;AAAA,UACAC;AAAAA,UACAC,MAAW,KAAK;AAAA,UAChB;AAAA,QACH;AACE,YAAI,QAAQ,UAAU,QAAS,OAAMF;AAAAA,UACpC;AAAA,UACAG;AAAAA,UACAD,MAAW,KAAK;AAAA,UAChB;AAAA,QACH;AAAA,MACC,SAAS,OAAO;AACf,gBAAQ,IAAI,KAAK;AACjB,cAAM,IAAI;AAAA,MACX;AAGA,YAAM,WAAW,EAAC,GAAGA,MAAW,KAAI;AAGnC,YAAME,QAAa,MAAM,UAAU,QAAQ,KAAK;AAAA,IAClD;AAwBA,aAAS,aAAc;AACtB,UAAI,MAAM,OAAO,WAAW;AAC3B,eAAO,KAAK;AAAA,UACX,MAAM,MAAM,OAAO;AAAA,UACnB,OAAO;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACA,CAAG;AAAA,MACF,OAAO;AACN,eAAO,KAAK;AAAA,UACX,MAAM;AAAA,UACN,QAAQ;AAAA,YACP,KAAKF,MAAW,KAAK;AAAA,UACzB;AAAA,UACG,OAAO;AAAA,YACN,WAAW;AAAA,UACf;AAAA,QACA,CAAG;AAAA,MACF;AAAA,IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { ref, computed, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Transition, withCtx, withDirectives, vShow, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
- import Field from "../../../../../components/Field/Field.vue2.js";
3
+ import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
- import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
6
6
  import { useRoute, useRouter } from "vue-router";
7
7
  import { useI18n } from "vue-i18n";
8
8
  import { useStore } from "../../../../core/views/store/core.store.js";
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, createElementBlock, createCommentVNode, openBlock, createElementVNode, createBlock, createVNode, withCtx, createTextVNode } from "vue";
2
- import Field from "../../../../../components/Field/Field.vue2.js";
3
- import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
2
+ import Field from "../../../../../components/Field/Field.vue.js";
3
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
4
4
  import { useRoute, useRouter } from "vue-router";
5
5
  import { actions, state } from "../../store/users.js";
6
6
  import { sendCode, state as state$1 } from "../../store/twofa.js";