@ozdao/martyrs 0.2.506 → 0.2.508

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 (555) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +4 -4
  4. package/dist/_virtual/index2.js +4 -4
  5. package/dist/auth.server.cjs +1 -1
  6. package/dist/auth.server.js +1 -1
  7. package/dist/builder.cjs +52 -60
  8. package/dist/builder.js +52 -60
  9. package/dist/chats.server.cjs +1 -1
  10. package/dist/chats.server.js +1 -1
  11. package/dist/events.server.cjs +1 -1
  12. package/dist/events.server.js +1 -1
  13. package/dist/{mailing-q7sR8gCV.cjs → mailing-Bs9ThyVZ.cjs} +1 -24
  14. package/dist/{mailing-C11EYWm-.js → mailing-DzlhsxCC.js} +1 -24
  15. package/dist/main-AWSb_d2P.cjs +11 -0
  16. package/dist/{main-DC__VS5b.js → main-Dq-UfO4G.js} +2562 -2477
  17. package/dist/martyrs/src/components/Button/Button.vue.cjs +1 -1
  18. package/dist/martyrs/src/components/Button/Button.vue.js +1 -1
  19. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +3 -3
  20. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  21. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +3 -3
  22. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  23. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
  24. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  25. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
  26. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
  28. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  29. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
  30. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  31. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +1 -1
  32. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  33. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +15 -46
  34. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  35. package/dist/martyrs/src/components/Feed/Feed.vue.js +22 -53
  36. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  37. package/dist/martyrs/src/components/Field/Field.vue.cjs +14 -6
  38. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  39. package/dist/martyrs/src/components/Field/Field.vue.js +14 -6
  40. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +58 -11
  42. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  43. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +60 -13
  44. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
  46. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
  47. package/dist/martyrs/src/components/Loader/{Loader.vue.cjs → Loader.vue2.cjs} +2 -2
  48. package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +1 -0
  49. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
  50. package/dist/martyrs/src/components/Loader/{Loader.vue.cjs.map → Loader.vue2.js.map} +1 -1
  51. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs +1 -1
  52. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
  53. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +2 -2
  54. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  55. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  56. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  57. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
  58. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
  59. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  60. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
  61. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  62. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  63. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  64. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  65. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +1 -1
  66. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  72. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  74. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +42 -10
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +44 -12
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  81. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +11 -15
  82. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +21 -25
  84. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  85. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +12 -16
  86. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -1
  87. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +33 -37
  88. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +13 -9
  90. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +13 -9
  92. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
  93. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  95. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  97. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  99. package/dist/martyrs/src/modules/auth/views/router/users.cjs +0 -4
  100. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/auth/views/router/users.js +0 -4
  102. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  103. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  105. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  107. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +431 -0
  108. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -0
  109. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +431 -0
  110. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -0
  111. package/dist/martyrs/src/modules/community/router/blogposts.cjs +17 -0
  112. package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/community/router/blogposts.js +17 -0
  114. package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
  115. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  116. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  117. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -4
  118. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  119. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -4
  120. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  123. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  125. package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  127. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  129. package/dist/martyrs/src/modules/globals/globals.client.cjs +3 -0
  130. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  131. package/dist/martyrs/src/modules/globals/globals.client.js +3 -0
  132. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  133. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  134. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  135. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs +4 -6
  136. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js +4 -6
  138. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
  139. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +1 -1
  140. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +1 -1
  141. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +5 -2
  142. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
  143. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +6 -3
  144. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
  145. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  146. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  147. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  149. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -3
  150. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  151. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -3
  152. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  153. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +321 -0
  154. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -0
  155. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +321 -0
  156. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -0
  157. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  159. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +324 -0
  160. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
  161. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +324 -0
  162. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
  163. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  165. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs +32 -0
  166. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs.map +1 -0
  167. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js +32 -0
  168. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js.map +1 -0
  169. package/dist/martyrs/src/modules/icons/icons.client.cjs +2 -0
  170. package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
  171. package/dist/martyrs/src/modules/icons/icons.client.js +116 -114
  172. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  173. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +5 -3
  174. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  175. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +117 -115
  176. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  177. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  179. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +11 -36
  180. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  181. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +11 -36
  182. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  183. package/dist/martyrs/src/modules/landing/landing.client.cjs +3 -0
  184. package/dist/martyrs/src/modules/landing/landing.client.cjs.map +1 -1
  185. package/dist/martyrs/src/modules/landing/landing.client.js +3 -0
  186. package/dist/martyrs/src/modules/landing/landing.client.js.map +1 -1
  187. package/dist/martyrs/src/modules/landing/locales/en.cjs +12 -0
  188. package/dist/martyrs/src/modules/landing/locales/en.cjs.map +1 -0
  189. package/dist/martyrs/src/modules/landing/locales/en.js +12 -0
  190. package/dist/martyrs/src/modules/landing/locales/en.js.map +1 -0
  191. package/dist/martyrs/src/modules/landing/locales/index.cjs +10 -0
  192. package/dist/martyrs/src/modules/landing/locales/index.cjs.map +1 -0
  193. package/dist/martyrs/src/modules/landing/locales/index.js +10 -0
  194. package/dist/martyrs/src/modules/landing/locales/index.js.map +1 -0
  195. package/dist/martyrs/src/modules/landing/locales/ru.cjs +12 -0
  196. package/dist/martyrs/src/modules/landing/locales/ru.cjs.map +1 -0
  197. package/dist/martyrs/src/modules/landing/locales/ru.js +12 -0
  198. package/dist/martyrs/src/modules/landing/locales/ru.js.map +1 -0
  199. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  201. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  203. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +2 -2
  204. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  206. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  209. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  210. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  211. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  212. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  215. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  216. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  218. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  220. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  221. package/dist/martyrs/src/modules/music/router/music.cjs +2 -4
  222. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  223. package/dist/martyrs/src/modules/music/router/music.js +2 -4
  224. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  225. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  227. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs +86 -0
  228. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs.map +1 -0
  229. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +86 -0
  230. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -0
  231. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs +103 -0
  232. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs.map +1 -0
  233. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +103 -0
  234. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -0
  235. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +194 -0
  236. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -0
  237. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +194 -0
  238. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -0
  239. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +138 -0
  240. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs.map +1 -0
  241. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +138 -0
  242. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -0
  243. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +189 -0
  244. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -0
  245. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +189 -0
  246. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -0
  247. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +173 -0
  248. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs.map +1 -0
  249. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +173 -0
  250. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -0
  251. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +233 -0
  252. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs.map +1 -0
  253. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +233 -0
  254. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -0
  255. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +234 -0
  256. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs.map +1 -0
  257. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +234 -0
  258. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -0
  259. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +9 -8
  260. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  261. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +9 -8
  262. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +8 -82
  264. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  265. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +9 -83
  266. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  268. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  269. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +119 -0
  270. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs.map +1 -0
  271. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +119 -0
  272. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -0
  273. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +139 -0
  274. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs.map +1 -0
  275. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +139 -0
  276. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -0
  277. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -4
  278. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  279. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -4
  280. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/orders/locales/en.cjs +38 -0
  282. package/dist/martyrs/src/modules/orders/locales/en.cjs.map +1 -0
  283. package/dist/martyrs/src/modules/orders/locales/en.js +38 -0
  284. package/dist/martyrs/src/modules/orders/locales/en.js.map +1 -0
  285. package/dist/martyrs/src/modules/orders/locales/index.cjs +10 -0
  286. package/dist/martyrs/src/modules/orders/locales/index.cjs.map +1 -0
  287. package/dist/martyrs/src/modules/orders/locales/index.js +10 -0
  288. package/dist/martyrs/src/modules/orders/locales/index.js.map +1 -0
  289. package/dist/martyrs/src/modules/orders/locales/ru.cjs +38 -0
  290. package/dist/martyrs/src/modules/orders/locales/ru.cjs.map +1 -0
  291. package/dist/martyrs/src/modules/orders/locales/ru.js +38 -0
  292. package/dist/martyrs/src/modules/orders/locales/ru.js.map +1 -0
  293. package/dist/martyrs/src/modules/orders/orders.client.cjs +78 -3
  294. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  295. package/dist/martyrs/src/modules/orders/orders.client.js +80 -5
  296. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  297. package/dist/martyrs/src/modules/orders/router/applications.router.cjs +17 -0
  298. package/dist/martyrs/src/modules/orders/router/applications.router.cjs.map +1 -0
  299. package/dist/martyrs/src/modules/orders/router/applications.router.js +17 -0
  300. package/dist/martyrs/src/modules/orders/router/applications.router.js.map +1 -0
  301. package/dist/martyrs/src/modules/orders/router/customers.router.cjs +18 -0
  302. package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -0
  303. package/dist/martyrs/src/modules/orders/router/customers.router.js +18 -0
  304. package/dist/martyrs/src/modules/orders/router/customers.router.js.map +1 -0
  305. package/dist/martyrs/src/modules/orders/store/applications.cjs +4 -42
  306. package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
  307. package/dist/martyrs/src/modules/orders/store/applications.js +3 -41
  308. package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
  309. package/dist/martyrs/src/modules/orders/store/models/application.cjs +20 -0
  310. package/dist/martyrs/src/modules/orders/store/models/application.cjs.map +1 -0
  311. package/dist/martyrs/src/modules/orders/store/models/application.js +20 -0
  312. package/dist/martyrs/src/modules/orders/store/models/application.js.map +1 -0
  313. package/dist/martyrs/src/modules/orders/store/models/customer.cjs +13 -1
  314. package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
  315. package/dist/martyrs/src/modules/orders/store/models/customer.js +13 -1
  316. package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
  317. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +1 -1
  318. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  319. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +1 -1
  320. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  321. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  322. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  323. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  324. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  325. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +126 -192
  326. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  327. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +128 -194
  328. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  329. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  330. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  331. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  332. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  333. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  334. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  335. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  336. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  337. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +85 -89
  338. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  339. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +92 -96
  340. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  341. package/dist/martyrs/src/modules/organizations/organizations.client.cjs +0 -3
  342. package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
  343. package/dist/martyrs/src/modules/organizations/organizations.client.js +36 -39
  344. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  345. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +4 -0
  346. package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
  347. package/dist/martyrs/src/modules/organizations/router/organizations.js +4 -0
  348. package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
  349. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  350. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  351. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs +3 -6
  352. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
  353. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +3 -6
  354. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  355. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +1 -1
  356. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  357. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  358. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  359. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +2 -2
  360. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  361. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
  362. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  363. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.cjs +1 -1
  364. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  365. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +22 -19
  366. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  367. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +22 -19
  368. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  369. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +28 -19
  370. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  371. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +28 -19
  372. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  373. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  374. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  375. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  376. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  377. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +1 -1
  378. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  379. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +361 -105
  380. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  381. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +379 -123
  382. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  383. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
  384. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  385. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  386. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  387. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +32 -2
  388. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  389. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +33 -3
  390. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  391. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  392. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  393. package/dist/martyrs/src/modules/products/router/products.router.cjs +15 -0
  394. package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
  395. package/dist/martyrs/src/modules/products/router/products.router.js +15 -0
  396. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  397. package/dist/martyrs/src/modules/products/store/categories.cjs +25 -7
  398. package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
  399. package/dist/martyrs/src/modules/products/store/categories.js +25 -7
  400. package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
  401. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  402. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  403. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  404. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  405. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  406. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  407. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
  408. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  409. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  410. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  411. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +345 -0
  412. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -0
  413. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +345 -0
  414. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -0
  415. package/dist/martyrs/src/modules/spots/router/spots.cjs +17 -0
  416. package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
  417. package/dist/martyrs/src/modules/spots/router/spots.js +17 -0
  418. package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
  419. package/dist/martyrs.cjs.js +1 -1
  420. package/dist/martyrs.css +1 -1
  421. package/dist/martyrs.es.js +1 -1
  422. package/dist/notifications.server.cjs +1 -1
  423. package/dist/notifications.server.js +1 -1
  424. package/dist/orders.server.cjs +459 -201
  425. package/dist/orders.server.js +459 -201
  426. package/dist/organizations.server.cjs +1 -1
  427. package/dist/organizations.server.js +1 -1
  428. package/dist/products.server.cjs +428 -255
  429. package/dist/products.server.js +428 -255
  430. package/dist/style.css +129 -140
  431. package/dist/{tickets.controller-DQQcjyui.js → tickets.controller-C56OvH6v.js} +1 -1
  432. package/dist/{tickets.controller-D0V0gJCA.cjs → tickets.controller-DdnndM6c.cjs} +1 -1
  433. package/dist/wallet.server.cjs +1 -1
  434. package/dist/wallet.server.js +1 -1
  435. package/dist/{web-B1bEJ1W9.js → web-BXajFCU2.js} +1 -1
  436. package/dist/{web-D5i9k2Vv.cjs → web-DaBwwCQ5.cjs} +1 -1
  437. package/package.json +1 -1
  438. package/src/builder/modes/ssr.dev.js +10 -10
  439. package/src/builder/rspack/rspack.config.ssr.client.js +50 -50
  440. package/src/components/Checkbox/Checkbox.vue +3 -4
  441. package/src/components/Feed/Feed.old.vue +522 -0
  442. package/src/components/Feed/Feed.vue +4 -4
  443. package/src/components/Field/Field.vue +7 -1
  444. package/src/components/FieldBig/FieldBig.vue +62 -8
  445. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  446. package/src/modules/STYLES.MD +198 -0
  447. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  448. package/src/modules/auth/views/components/pages/ProfileEdit.vue +42 -8
  449. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +9 -11
  450. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +9 -11
  451. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +7 -4
  452. package/src/modules/auth/views/router/users.js +0 -4
  453. package/src/modules/community/components/pages/Posts.vue +444 -0
  454. package/src/modules/community/router/blogposts.js +15 -0
  455. package/src/modules/globals/globals.client.js +3 -0
  456. package/src/modules/globals/views/classes/globals.websocket.js +7 -8
  457. package/src/modules/globals/views/components/blocks/Card.vue +2 -1
  458. package/src/modules/globals/views/components/layouts/Client.vue +1 -2
  459. package/src/modules/globals/views/components/partials/Footer.vue +318 -164
  460. package/src/modules/globals/views/components/sections/Filters.vue +261 -121
  461. package/src/modules/globals/views/components/sections/filters/FilterCheckbox.vue +78 -0
  462. package/src/modules/globals/views/components/sections/filters/FilterDateRange.vue +177 -0
  463. package/src/modules/globals/views/components/sections/filters/FilterRange.vue +51 -50
  464. package/src/modules/icons/entities/IconLock.vue +14 -0
  465. package/src/modules/icons/icons.client.js +2 -1
  466. package/src/modules/icons/pages/IconsPage.vue +4 -2
  467. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +11 -61
  468. package/src/modules/landing/landing.client.js +6 -0
  469. package/src/modules/landing/locales/en.js +9 -0
  470. package/src/modules/landing/locales/index.js +7 -0
  471. package/src/modules/landing/locales/ru.js +9 -0
  472. package/src/modules/music/components/pages/Album.vue +1 -1
  473. package/src/modules/music/components/pages/Playlist.vue +1 -1
  474. package/src/modules/music/components/pages/Track.vue +1 -1
  475. package/src/modules/orders/components/blocks/CardApplication.vue +74 -0
  476. package/src/modules/orders/components/blocks/CardCustomer.vue +90 -0
  477. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +199 -0
  478. package/src/modules/orders/components/forms/FormApplicationDetails.vue +117 -0
  479. package/src/modules/orders/components/forms/FormCustomerDetails.vue +165 -0
  480. package/src/modules/orders/components/forms/FormSelectCustomer.vue +172 -0
  481. package/src/modules/orders/components/pages/Applications.vue +240 -0
  482. package/src/modules/orders/components/pages/Customers.vue +239 -0
  483. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  484. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -75
  485. package/src/modules/orders/components/sections/ApplicationDetails.vue +91 -0
  486. package/src/modules/orders/components/sections/CustomerDetails.vue +107 -0
  487. package/src/modules/orders/locales/en.js +35 -0
  488. package/src/modules/orders/locales/index.js +7 -0
  489. package/src/modules/orders/locales/ru.js +35 -0
  490. package/src/modules/orders/middlewares/applications.verifier.js +189 -0
  491. package/src/modules/orders/middlewares/customers.verifier.js +251 -0
  492. package/src/modules/orders/models/application.model.js +21 -0
  493. package/src/modules/orders/models/customer.model.js +26 -0
  494. package/src/modules/orders/orders.client.js +86 -1
  495. package/src/modules/orders/orders.server.js +3 -1
  496. package/src/modules/orders/router/applications.router.js +15 -0
  497. package/src/modules/orders/router/customers.router.js +17 -0
  498. package/src/modules/orders/routes/applications.routes.js +124 -12
  499. package/src/modules/orders/routes/customers.routes.js +43 -0
  500. package/src/modules/orders/store/applications.js +3 -159
  501. package/src/modules/orders/store/models/application.js +18 -0
  502. package/src/modules/orders/store/models/customer.js +12 -0
  503. package/src/modules/organizations/components/pages/Organization.new.vue +593 -0
  504. package/src/modules/organizations/components/pages/Organization.vue +155 -206
  505. package/src/modules/organizations/configs/navigation.organization.config.js +69 -85
  506. package/src/modules/organizations/organizations.client.js +0 -3
  507. package/src/modules/organizations/router/organizations.js +5 -0
  508. package/src/modules/pages/views/components/pages/Page.vue +1 -1
  509. package/src/modules/products/TASKS.MD +157 -0
  510. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  511. package/src/modules/products/components/blocks/ProductImages.vue +1 -1
  512. package/src/modules/products/components/pages/Categories.vue +27 -22
  513. package/src/modules/products/components/pages/CategoryEdit.vue +24 -13
  514. package/src/modules/products/components/pages/Products.vue +418 -173
  515. package/src/modules/products/components/sections/ProductsRecommended.vue +46 -2
  516. package/src/modules/products/controllers/categories.controller.js +321 -282
  517. package/src/modules/products/controllers/configs/products.lookup.config.js +9 -0
  518. package/src/modules/products/controllers/products.controller.js +2 -1
  519. package/src/modules/products/controllers/queries/products.queries.js +183 -11
  520. package/src/modules/products/middlewares/categories.verifier.js +58 -15
  521. package/src/modules/products/migrations/categories-to-materialized-path.js +433 -0
  522. package/src/modules/products/migrations/path-to-url.js +27 -0
  523. package/src/modules/products/models/category.model.js +8 -23
  524. package/src/modules/products/router/products.router.js +12 -0
  525. package/src/modules/products/store/categories.js +26 -7
  526. package/src/modules/rents/TASK.MD +161 -0
  527. package/src/modules/spots/components/pages/Spots.vue +342 -0
  528. package/src/modules/spots/router/spots.js +15 -0
  529. package/src/styles/base/all.scss +2 -3
  530. package/src/styles/layout.scss +16 -0
  531. package/dist/main-w3rPUBVh.cjs +0 -11
  532. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs +0 -96
  533. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs.map +0 -1
  534. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +0 -96
  535. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +0 -1
  536. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  537. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  538. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  539. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +0 -155
  540. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +0 -1
  541. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +0 -155
  542. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +0 -1
  543. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +0 -81
  544. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs.map +0 -1
  545. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +0 -81
  546. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js.map +0 -1
  547. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +0 -146
  548. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +0 -1
  549. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +0 -146
  550. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +0 -1
  551. package/src/modules/globals/views/components/partials/FooterAlt.vue +0 -363
  552. package/src/modules/orders/components/sections/FormAddCustomer.vue +0 -152
  553. package/src/modules/orders/components/sections/FormCustomerDetails.vue +0 -67
  554. package/src/modules/orders/controllers/applications.controller.js +0 -122
  555. package/src/modules/organizations/components/sections/DetailsTabSection.vue +0 -190
@@ -1 +1 @@
1
- {"version":3,"file":"Event.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["useRoute","ref","tickets.mutations","onMounted","events.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,IAAAA,IAAI,IAAI;AAEvB,UAAM,qBAAqB,CAAC,EAAE,QAAQ,WAAW,SAAQ,MAAO;AAC9DC,cAAAA,UAAkB,mBAAmB,MAAM,OAAO,QAAQ,WAAW,QAAQ;AAC7E,cAAQ,IAAI,wBAAwB,QAAQ,MAAM,KAAK;AACvD,aAAO,QAAQ,OAAO;AAAA,IACxB;AASA,UAAM,QAAQD,IAAAA,IAAI,IAAI;AACtB,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAE1BE,QAAAA,UAAU,YAAY;AACnB,gBAAU,QAAQ;AAElB,YAAM,OAAO,MAAMC,YAAY;AAAA,QAC5B,MAAMC,KAAAA,MAAW,KAAK;AAAA,QACtB,KAAK,MAAM,OAAO;AAAA,MACxB,CAAI;AAED,YAAM,QAAQ,KAAK,CAAC;AACpB,gBAAU,QAAQ;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Event.vue.cjs","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["useRoute","ref","tickets.mutations","onMounted","events.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,IAAAA,IAAI,IAAI;AAEvB,UAAM,qBAAqB,CAAC,EAAE,QAAQ,WAAW,SAAQ,MAAO;AAC9DC,cAAAA,UAAkB,mBAAmB,MAAM,OAAO,QAAQ,WAAW,QAAQ;AAC7E,cAAQ,IAAI,wBAAwB,QAAQ,MAAM,KAAK;AACvD,aAAO,QAAQ,OAAO;AAAA,IACxB;AASA,UAAM,QAAQD,IAAAA,IAAI,IAAI;AACtB,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAE1BE,QAAAA,UAAU,YAAY;AACnB,gBAAU,QAAQ;AAElB,YAAM,OAAO,MAAMC,YAAY;AAAA,QAC5B,MAAMC,KAAAA,MAAW,KAAK;AAAA,QACtB,KAAK,MAAM,OAAO;AAAA,MACxB,CAAI;AAED,YAAM,QAAQ,KAAK,CAAC;AACpB,gBAAU,QAAQ;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createCommentVNode, createBlock, Fragment, renderList, unref, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  /* empty css */
4
4
  import _sfc_main$2 from "../../../constructor/components/sections/Viewer.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Countdown/Countdown.vue.js";
@@ -14,9 +14,7 @@ import SkeletonEvent from "../../../icons/skeletons/SkeletonEvent.vue.js";
14
14
  /* empty css */
15
15
  /* empty css */
16
16
  /* empty css */
17
- /* empty css */
18
- /* empty css */
19
- /* empty css */
17
+ /* empty css */
20
18
  /* empty css */
21
19
  /* empty css */
22
20
  /* empty css */
@@ -1 +1 @@
1
- {"version":3,"file":"Event.vue.js","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["tickets.mutations","events.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,IAAI,IAAI;AAEvB,UAAM,qBAAqB,CAAC,EAAE,QAAQ,WAAW,SAAQ,MAAO;AAC9DA,gBAAkB,mBAAmB,MAAM,OAAO,QAAQ,WAAW,QAAQ;AAC7E,cAAQ,IAAI,wBAAwB,QAAQ,MAAM,KAAK;AACvD,aAAO,QAAQ,OAAO;AAAA,IACxB;AASA,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,YAAY,IAAI,IAAI;AAE1B,cAAU,YAAY;AACnB,gBAAU,QAAQ;AAElB,YAAM,OAAO,MAAMC,KAAY;AAAA,QAC5B,MAAMC,MAAW,KAAK;AAAA,QACtB,KAAK,MAAM,OAAO;AAAA,MACxB,CAAI;AAED,YAAM,QAAQ,KAAK,CAAC;AACpB,gBAAU,QAAQ;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Event.vue.js","sources":["../../../../../../../src/modules/events/components/pages/Event.vue"],"sourcesContent":["<template>\n <section id=\"eventPage\">\n <TransitionGroup tag=\"ul\" name=\"fade\" class=\"bg-light\">\n <SkeletonEvent\n v-if=\"isLoading\"\n v-for=\"i in 3\" :key=\"i\"\n />\n\n <HeroEvent\n v-if=\"!isLoading && event &&event.cover\"\n :content=\"{\n title: event.name,\n ticketLinkStripe: event.ticketLinkStripe,\n cover: event.cover,\n subtitle: event.subtitle,\n }\"\n :options=\"{\n date: event.date.start,\n }\"\n class=\"o-hidden\"\n />\n\n <div class=\"cols-2-2_1 gap-small bg-white t-black pd-t-zero mobile:pd-small pd-extra\" v-if=\"!isLoading && event\"> \n \n <div class=\"bg-light mobile:pd-medium pd-big radius-big\">\n\n <h1 class=\"z-index-1 mn-b-semi\">\n {{event?.name}}\n </h1>\n\n <div class=\"flex flex-wrap gap-micro t-medium p-semi mn-b-semi justify-start align-center\">\n <span v-if=\"event.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <IconDate :fill=\"'rgb(var(--black))'\" class=\"w-1r h-auto\"/>\n {{formatDate(event.date.start)}}\n </span>\n\n\n <span\n v-for=\"(chip, index) in event.tags\"\n :key=\"index\"\n class=\"d-inline-flex pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small bg-main\"\n >\n {{ chip }}\n </span>\n </div>\n\n <p class=\"z-index-1 p-semi mn-b-semi\">\n {{event?.description}}\n </p>\n\n <hr v-if=\"event?.content?.length > 0\" class=\"bg-black-transp-10 mn-b-semi mn-t-semi d-block\">\n\n <Viewer\n v-if=\"event && event.content\"\n :content=\"event.content\"\n :notitle=\"true\"\n />\n\n </div>\n\n <div class=\"\">\n \n <div class=\"radius-semi pd-medium bg-light mn-b-thin\">\n\n <div class=\"mn-b-small flex-nowrap flex-v-center flex pos-relative\">\n <h4 class=\"mn-r-auto\">Tickets</h4>\n <PhotoStack\n :number=\"event.numberOfTickets\"\n :photos=\"event.participantsPhotos\" \n />\n </div>\n <div v-if=\"event?.ticketsTypes?.length > 0\" v-for=\"ticketType in event.ticketsTypes\" class=\"pd-medium w-100 radius-medium bg-white mn-b-small\">\n <div class=\"flex-nowrap mn-b-small p-semi flex\">\n <span class=\"mn-r-auto\">{{ticketType.name}}</span>\n <span class=\"t-medium\">{{ticketType.price}} {{returnCurrency()}}</span>\n </div>\n <a :href=\"ticketType.link\" class=\"d-block t-center pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-white w-100 bg-second \">\n Buy Now\n </a>\n </div>\n\n <ButtonJoin \n v-if=\"auth.state.user._id && !event?.ticketsTypes?.length > 0\"\n :type=\"'event'\" \n :hasTicket=\"event.hasTicket\" \n :targetId=\"event._id\" \n :userId=\"auth.state.user._id\"\n class=\" w-100 pd-medium mn-auto\"\n @updateTicket=\"handleTicketUpdate\"\n />\n\n <p v-if=\"event?.ticketsTypes.length > 0\" class=\"z-index-1 t-transp p-small mn-t-small \">Buy ticket online with special price:</p>\n <Countdown \n v-if=\"event?.date?.start && event?.ticketsTypes?.length > 0\"\n class=\"mn-t-thin radius-medium bg-white w-100\"\n :date=\"event?.date?.start\"\n />\n </div>\n\n\n </div>\n\n <Comments \n v-if=\"!isLoading && event\" \n :type=\"'event'\" \n :target=\"event._id\" \n :owner=\"auth.state.user._id\"\n class=\"bg-light radius-medium mobile:radius-zero pd-medium\"\n />\n\n </div>\n \n </TransitionGroup> \n\n </section>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue';\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Chips from '@martyrs/src/components/Chips/Chips.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nimport Viewer from '@martyrs/src/modules/constructor/components/sections/Viewer.vue';\n\nimport Countdown from \"@martyrs/src/components/Countdown/Countdown.vue\";\n\nimport HeroEvent from '@martyrs/src/modules/events/components/sections/HeroEvent.vue';\n\nimport PhotoStack from \"@martyrs/src/modules/globals/views/components/elements/PhotoStack.vue\";\n\nimport { SkeletonEvent, IconDate } from '@martyrs/src/modules/icons/icons.client.js';\n\nimport ButtonJoin from '@martyrs/src/modules/events/components/elements/ButtonJoin.vue';\nimport Comments from '@martyrs/src/modules/community/components/sections/Comments.vue';\n\nimport Image from '@martyrs/src/modules/constructor/components/elements/Image.vue';\nimport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as tickets from '@martyrs/src/modules/events/store/tickets.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst qrcode = ref(null);\n\nconst handleTicketUpdate = ({ ticket, hasTicket, targetId }) => {\n tickets.mutations.handleTicketUpdate(event.value, ticket, hasTicket, targetId);\n console.log('HANDLE TICKET UPDATE', ticket, event.value);\n qrcode.value = ticket.qrcode;\n};\n\nfunction clickBuyTicket() {\n gtag('event', 'buy_ticket', {\n 'event_category': 'conversion',\n 'event_label': 'Buy Ticket'\n });\n}\n\nconst event = ref(null);\nconst isLoading = ref(true);\n\nonMounted(async () => {\n isLoading.value = true;\n\n const data = await events.read({\n user: auth.state.user._id,\n url: route.params.url\n });\n\n event.value = data[0];\n isLoading.value = false;\n});\n</script>\n\n\n<style>\n #eventPage {\n display: block;\n }\n</style>"],"names":["tickets.mutations","events.read","auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,IAAI,IAAI;AAEvB,UAAM,qBAAqB,CAAC,EAAE,QAAQ,WAAW,SAAQ,MAAO;AAC9DA,gBAAkB,mBAAmB,MAAM,OAAO,QAAQ,WAAW,QAAQ;AAC7E,cAAQ,IAAI,wBAAwB,QAAQ,MAAM,KAAK;AACvD,aAAO,QAAQ,OAAO;AAAA,IACxB;AASA,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,YAAY,IAAI,IAAI;AAE1B,cAAU,YAAY;AACnB,gBAAU,QAAQ;AAElB,YAAM,OAAO,MAAMC,KAAY;AAAA,QAC5B,MAAMC,MAAW,KAAK;AAAA,QACtB,KAAK,MAAM,OAAO;AAAA,MACxB,CAAI;AAED,YAAM,QAAQ,KAAK,CAAC;AACpB,gBAAU,QAAQ;AAAA,IACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
- const Tab = require("../../../../components/Tab/Tab.vue.cjs");
5
+ const Tab = require("../../../../components/Tab/Tab.vue2.cjs");
6
6
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
7
7
  ;/* empty css */
8
8
  const CardEvent = require("../blocks/CardEvent.vue.cjs");
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, createElementBlock, openBlock, createElementVNode, createCommentVNode, unref, createBlock, createVNode, isRef, withCtx, Fragment, renderList, withModifiers } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$1 from "../../../../components/Tab/Tab.vue.js";
3
+ import _sfc_main$1 from "../../../../components/Tab/Tab.vue2.js";
4
4
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
5
5
  /* empty css */
6
6
  import _sfc_main$3 from "../blocks/CardEvent.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Loader = require("../../../../components/Loader/Loader.vue.cjs");
4
+ const Loader = require("../../../../components/Loader/Loader.vue2.cjs");
5
5
  const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
6
6
  const CardEvent = require("../blocks/CardEvent.vue.cjs");
7
7
  const events = require("../../store/events.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, createCommentVNode, Transition, Fragment, renderList } from "vue";
2
- import Loader from "../../../../components/Loader/Loader.vue.js";
2
+ import Loader from "../../../../components/Loader/Loader.vue2.js";
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEvent.vue.js";
5
5
  import { read } from "../../store/events.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const EmptyState = require("../../../../components/EmptyState/EmptyState.vue.cjs");
6
6
  const CardEvent = require("../blocks/CardEvent.vue.cjs");
7
7
  const SkeletonEventShort = require("../../../icons/skeletons/SkeletonEventShort.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, TransitionGroup, withCtx, createBlock, Fragment, renderList, normalizeClass } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import _sfc_main$1 from "../../../../components/EmptyState/EmptyState.vue.js";
4
4
  import _sfc_main$2 from "../blocks/CardEvent.vue.js";
5
5
  import SkeletonEventShort from "../../../icons/skeletons/SkeletonEventShort.vue.js";
@@ -15,7 +15,7 @@ require("../../../organizations/store/organizations.cjs");
15
15
  const gallery = require("../../store/gallery.cjs");
16
16
  const CardHeader = require("../../../globals/views/components/blocks/CardHeader.vue.cjs");
17
17
  const SectionPageTitle = require("../../../globals/views/components/sections/SectionPageTitle.vue.cjs");
18
- const EditImages = require("../../../../components/EditImages/EditImages.vue.cjs");
18
+ const EditImages = require("../../../../components/EditImages/EditImages.vue2.cjs");
19
19
  const BlockTags = require("../../../../components/FieldTags/BlockTags.vue.cjs");
20
20
  const _hoisted_1 = { class: "cols-1 gap-thin pd-thin" };
21
21
  const _hoisted_2 = { class: "pos-relative" };
@@ -13,7 +13,7 @@ import "../../../organizations/store/organizations.js";
13
13
  import gallery from "../../store/gallery.js";
14
14
  import _sfc_main$3 from "../../../globals/views/components/blocks/CardHeader.vue.js";
15
15
  import _sfc_main$1 from "../../../globals/views/components/sections/SectionPageTitle.vue.js";
16
- import _sfc_main$6 from "../../../../components/EditImages/EditImages.vue.js";
16
+ import _sfc_main$6 from "../../../../components/EditImages/EditImages.vue2.js";
17
17
  import _sfc_main$7 from "../../../../components/FieldTags/BlockTags.vue.js";
18
18
  const _hoisted_1 = { class: "cols-1 gap-thin pd-thin" };
19
19
  const _hoisted_2 = { class: "pos-relative" };
@@ -10,6 +10,7 @@ const Header = require("./views/components/partials/Header.vue.cjs");
10
10
  const Navigation = require("./views/components/partials/Navigation.vue.cjs");
11
11
  const NavigationBar = require("./views/components/partials/NavigationBar.vue.cjs");
12
12
  const Sidebar = require("./views/components/partials/Sidebar.vue.cjs");
13
+ const Footer = require("./views/components/partials/Footer.vue.cjs");
13
14
  const mixins = require("./views/mixins/mixins.cjs");
14
15
  const globals = require("./views/store/globals.cjs");
15
16
  const vueAppRenderer = require("./views/utils/vue-app-renderer.cjs");
@@ -88,6 +89,7 @@ const ModuleGlobals = {
88
89
  layoutApp: App.default,
89
90
  Header: Header.default,
90
91
  Navigation: Navigation.default,
92
+ Footer: Footer.default,
91
93
  Sidebar: Sidebar.default,
92
94
  BottomNavigationBar: BottomNavigationBar.default,
93
95
  NavigationBar: NavigationBar.default
@@ -103,6 +105,7 @@ exports.Header = Header.default;
103
105
  exports.Navigation = Navigation.default;
104
106
  exports.NavigationBar = NavigationBar.default;
105
107
  exports.Sidebar = Sidebar.default;
108
+ exports.Footer = Footer.default;
106
109
  exports.mixins = mixins;
107
110
  exports.storeGlobals = globals;
108
111
  exports.appRenderer = vueAppRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"globals.client.cjs","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Components\n// import Client from \"./components/layouts/Client.vue\"\n\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport layoutApp from './views/components/layouts/App.vue';\nimport layoutClient from './views/components/layouts/Client.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\n\nimport BottomNavigationBar from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nimport Header from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nimport Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nimport NavigationBar from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nimport Sidebar from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n components: {\n // Pages\n BlockSearch,\n layoutClient,\n layoutApp,\n Header,\n Navigation,\n Sidebar,\n BottomNavigationBar,\n NavigationBar,\n },\n },\n};\n\nexport {\n BlockSearch,\n Header,\n Navigation,\n NavigationBar,\n Sidebar,\n appRenderer,\n getBrowserLocale,\n layoutApp,\n // Components\n layoutClient,\n // Client,\n mixins,\n scrollBehavior,\n store,\n i18nManager,\n // Store\n storeGlobals,\n websockets,\n};\n\nexport default ModuleGlobals;\n"],"names":["store","en","ru","i18nManager","mixins.globalMixins","alertPlugin","popupAuthPlugin","datePickerPlugin","storeGlobals.state","storeGlobals","BlockSearch","layoutClient","layoutApp","Header","Navigation","Sidebar","BottomNavigationBar","NavigationBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAS,kBAAkB,KAAKA,QAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd,IAAIC,GAAAA;AAAAA,IACJ,IAAIC,GAAAA;AAAAA,IACJ,IAAI,CAAA;AAAA;AAAA,EACR;AAEEC,2BAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMC,mBAAmB;AAE7B,MAAI,IAAIC,oBAAW;AACnB,MAAI,IAAIC,yBAAe;AACvB,MAAI,IAAIC,yBAAgB;AAIxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,SAAAA,MAAmB,UAAU,OAAO;AAElE,EAAAR,OAAM,SAAS,WAAWS,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMC,YAAAA;AAAAA,MACN,cAAMC,OAAAA;AAAAA,MACN,WAAMC,IAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA,MACN,SAAMC,QAAAA;AAAAA,MACN,qBAAMC,oBAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA,IACN;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"globals.client.cjs","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Components\n// import Client from \"./components/layouts/Client.vue\"\n\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport layoutApp from './views/components/layouts/App.vue';\nimport layoutClient from './views/components/layouts/Client.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\n\nimport BottomNavigationBar from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nimport Header from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nimport Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nimport NavigationBar from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nimport Sidebar from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nimport Footer from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n components: {\n // Pages\n BlockSearch,\n layoutClient,\n layoutApp,\n Header,\n Navigation,\n Footer,\n Sidebar,\n BottomNavigationBar,\n NavigationBar,\n },\n },\n};\n\nexport {\n BlockSearch,\n Header,\n Footer,\n Navigation,\n NavigationBar,\n Sidebar,\n appRenderer,\n getBrowserLocale,\n layoutApp,\n // Components\n layoutClient,\n // Client,\n mixins,\n scrollBehavior,\n store,\n i18nManager,\n // Store\n storeGlobals,\n websockets,\n};\n\nexport default ModuleGlobals;\n"],"names":["store","en","ru","i18nManager","mixins.globalMixins","alertPlugin","popupAuthPlugin","datePickerPlugin","storeGlobals.state","storeGlobals","BlockSearch","layoutClient","layoutApp","Header","Navigation","Footer","Sidebar","BottomNavigationBar","NavigationBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAS,kBAAkB,KAAKA,QAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd,IAAIC,GAAAA;AAAAA,IACJ,IAAIC,GAAAA;AAAAA,IACJ,IAAI,CAAA;AAAA;AAAA,EACR;AAEEC,2BAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMC,mBAAmB;AAE7B,MAAI,IAAIC,oBAAW;AACnB,MAAI,IAAIC,yBAAe;AACvB,MAAI,IAAIC,yBAAgB;AAIxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,SAAAA,MAAmB,UAAU,OAAO;AAElE,EAAAR,OAAM,SAAS,WAAWS,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,sCAA6D,CAAA;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMC,YAAAA;AAAAA,MACN,cAAMC,OAAAA;AAAAA,MACN,WAAMC,IAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,YAAMC,WAAAA;AAAAA,MACN,QAAMC,OAAAA;AAAAA,MACN,SAAMC,QAAAA;AAAAA,MACN,qBAAMC,oBAAAA;AAAAA,MACN,eAAMC,cAAAA;AAAAA,IACN;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;"}
@@ -8,6 +8,7 @@ import _sfc_main$2 from "./views/components/partials/Header.vue.js";
8
8
  import Navigation from "./views/components/partials/Navigation.vue.js";
9
9
  import _sfc_main from "./views/components/partials/NavigationBar.vue.js";
10
10
  import Sidebar from "./views/components/partials/Sidebar.vue.js";
11
+ import Footer from "./views/components/partials/Footer.vue.js";
11
12
  import { globalMixins } from "./views/mixins/mixins.js";
12
13
  import * as mixins from "./views/mixins/mixins.js";
13
14
  import * as globals from "./views/store/globals.js";
@@ -88,6 +89,7 @@ const ModuleGlobals = {
88
89
  layoutApp: _sfc_main$3,
89
90
  Header: _sfc_main$2,
90
91
  Navigation,
92
+ Footer,
91
93
  Sidebar,
92
94
  BottomNavigationBar: _sfc_main$1,
93
95
  NavigationBar: _sfc_main
@@ -96,6 +98,7 @@ const ModuleGlobals = {
96
98
  };
97
99
  export {
98
100
  _sfc_main$5 as BlockSearch,
101
+ Footer,
99
102
  _sfc_main$2 as Header,
100
103
  Navigation,
101
104
  _sfc_main as NavigationBar,
@@ -1 +1 @@
1
- {"version":3,"file":"globals.client.js","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Components\n// import Client from \"./components/layouts/Client.vue\"\n\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport layoutApp from './views/components/layouts/App.vue';\nimport layoutClient from './views/components/layouts/Client.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\n\nimport BottomNavigationBar from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nimport Header from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nimport Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nimport NavigationBar from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nimport Sidebar from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n components: {\n // Pages\n BlockSearch,\n layoutClient,\n layoutApp,\n Header,\n Navigation,\n Sidebar,\n BottomNavigationBar,\n NavigationBar,\n },\n },\n};\n\nexport {\n BlockSearch,\n Header,\n Navigation,\n NavigationBar,\n Sidebar,\n appRenderer,\n getBrowserLocale,\n layoutApp,\n // Components\n layoutClient,\n // Client,\n mixins,\n scrollBehavior,\n store,\n i18nManager,\n // Store\n storeGlobals,\n websockets,\n};\n\nexport default ModuleGlobals;\n"],"names":["mixins.globalMixins","storeGlobals.state","storeGlobals","BlockSearch","layoutClient","layoutApp","Header","BottomNavigationBar","NavigationBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAS,kBAAkB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,IAAI,CAAA;AAAA;AAAA,EACR;AAEE,cAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMA,YAAmB;AAE7B,MAAI,IAAI,WAAW;AACnB,MAAI,IAAI,eAAe;AACvB,MAAI,IAAI,gBAAgB;AAIxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,OAAmB,UAAU,OAAO;AAElE,QAAM,SAAS,WAAWC,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,WAAMC;AAAAA,MACN,QAAMC;AAAAA,MACA;AAAA,MACA;AAAA,MACN,qBAAMC;AAAAA,MACN,eAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
1
+ {"version":3,"file":"globals.client.js","sources":["../../../../../src/modules/globals/globals.client.js"],"sourcesContent":["// Components\n// import Client from \"./components/layouts/Client.vue\"\n\nimport getBrowserLocale from './views/localization/get-browser-locale.js';\nimport scrollBehavior from './views/router/scrollBehavior.js';\n\nimport layoutApp from './views/components/layouts/App.vue';\nimport layoutClient from './views/components/layouts/Client.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue';\n\nimport BottomNavigationBar from '@martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue';\nimport Header from '@martyrs/src/modules/globals/views/components/partials/Header.vue';\nimport Navigation from '@martyrs/src/modules/globals/views/components/partials/Navigation.vue';\nimport NavigationBar from '@martyrs/src/modules/globals/views/components/partials/NavigationBar.vue';\nimport Sidebar from '@martyrs/src/modules/globals/views/components/partials/Sidebar.vue';\nimport Footer from '@martyrs/src/modules/globals/views/components/partials/Footer.vue';\n\nimport * as mixins from './views/mixins/mixins.js';\nimport * as storeGlobals from './views/store/globals.js';\nimport * as appRenderer from './views/utils/vue-app-renderer.js';\n\nimport alertPlugin from './views/plugins/alert.plugin.js';\nimport popupAuthPlugin from './views/plugins/popup.auth.plugin.js';\nimport datePickerPlugin from './views/plugins/date-picker.plugin.js';\nimport storeDebuggerPlugin from './views/plugins/store-debugger/store-debugger.plugin.js';\n\nimport store from './views/classes/store.js';\nimport websockets from './views/classes/globals.websocket.js';\nimport { i18nManager } from '@martyrs/src/modules/globals/views/classes/globals.i18n.js';\n\nimport en from './locales/en.js';\nimport ru from './locales/ru.js';\n\n\n// Пример функции инициализации для модуля заказов\nfunction initializeGlobals(app, store, router, config, options = {}) {\n const route = options.route || 'Home';\n\n const locales = {\n en: en,\n ru: ru,\n es: {} // или es: undefined\n };\n\n i18nManager.register('globals', locales);\n\n const envVariables = ['NODE_ENV', 'PORT', 'APP_NAME', 'DOMAIN_URL', 'API_URL', 'WSS_URL', 'FILE_SERVER_URL', 'WDT_TOKEN', 'WDM_URL_PROD', 'GOOGLE_MAPS_API_KEY', 'MOBILE_APP'];\n\n app.config.globalProperties.DOMAIN_URL = process.env.DOMAIN_URL;\n app.config.globalProperties.API_URL = process.env.API_URL;\n app.config.globalProperties.WSS_URL = process.env.WSS_URL;\n app.config.globalProperties.MOBILE_APP = process.env.MOBILE_APP;\n app.config.globalProperties.FILE_SERVER_URL = process.env.FILE_SERVER_URL;\n app.config.globalProperties.GOOGLE_MAPS_API_KEY = process.env.GOOGLE_MAPS_API_KEY;\n\n app.mixin(mixins.globalMixins);\n\n app.use(alertPlugin);\n app.use(popupAuthPlugin);\n app.use(datePickerPlugin);\n // app.use(storeDebuggerPlugin, store);\n\n // Change Locale to Route Locale if available\n router.beforeEach((to, from, next) => {\n const locale = to.params.locale;\n\n if (locale) {\n if (!app.config.globalProperties.$i18n.availableLocales.includes(locale)) {\n return next({ path: '/404' });\n } else {\n app.config.globalProperties.$i18n.locale = locale;\n return next();\n }\n }\n\n return next();\n });\n\n if (config && config.modules) storeGlobals.state.options = config.modules;\n\n store.addStore('globals', storeGlobals);\n\n router.addRoute(route, {\n path: '404',\n name: 'notfound',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/404.vue'),\n });\n router.addRoute(route, {\n path: '401',\n name: 'unauthorized',\n component: () => import('@martyrs/src/modules/globals/views/components/pages/401.vue'),\n });\n router.addRoute(route, {\n path: ':pathMatch(.*)*',\n name: 'NotFound',\n redirect: { name: 'notfound' },\n });\n}\n\nconst ModuleGlobals = {\n initialize: initializeGlobals,\n views: {\n store: {\n storeGlobals,\n },\n router: {\n // routerOrders\n },\n components: {\n // Pages\n BlockSearch,\n layoutClient,\n layoutApp,\n Header,\n Navigation,\n Footer,\n Sidebar,\n BottomNavigationBar,\n NavigationBar,\n },\n },\n};\n\nexport {\n BlockSearch,\n Header,\n Footer,\n Navigation,\n NavigationBar,\n Sidebar,\n appRenderer,\n getBrowserLocale,\n layoutApp,\n // Components\n layoutClient,\n // Client,\n mixins,\n scrollBehavior,\n store,\n i18nManager,\n // Store\n storeGlobals,\n websockets,\n};\n\nexport default ModuleGlobals;\n"],"names":["mixins.globalMixins","storeGlobals.state","storeGlobals","BlockSearch","layoutClient","layoutApp","Header","BottomNavigationBar","NavigationBar"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAS,kBAAkB,KAAK,OAAO,QAAQ,QAAQ,UAAU,IAAI;AACnE,QAAM,QAAQ,QAAQ,SAAS;AAE/B,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,IAAI,CAAA;AAAA;AAAA,EACR;AAEE,cAAY,SAAS,WAAW,OAAO;AAIvC,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,UAAU,QAAQ,IAAI;AAClD,MAAI,OAAO,iBAAiB,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,iBAAiB,kBAAkB,QAAQ,IAAI;AAC1D,MAAI,OAAO,iBAAiB,sBAAsB,QAAQ,IAAI;AAE9D,MAAI,MAAMA,YAAmB;AAE7B,MAAI,IAAI,WAAW;AACnB,MAAI,IAAI,eAAe;AACvB,MAAI,IAAI,gBAAgB;AAIxB,SAAO,WAAW,CAAC,IAAI,MAAM,SAAS;AACpC,UAAM,SAAS,GAAG,OAAO;AAEzB,QAAI,QAAQ;AACV,UAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM,iBAAiB,SAAS,MAAM,GAAG;AACxE,eAAO,KAAK,EAAE,MAAM,QAAQ;AAAA,MAC9B,OAAO;AACL,YAAI,OAAO,iBAAiB,MAAM,SAAS;AAC3C,eAAO,KAAI;AAAA,MACb;AAAA,IACF;AAEA,WAAO,KAAI;AAAA,EACb,CAAC;AAED,MAAI,UAAU,OAAO,QAASC,OAAmB,UAAU,OAAO;AAElE,QAAM,SAAS,WAAWC,OAAY;AAEtC,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,WAAW,MAAM,OAAO,qCAA6D;AAAA,EACzF,CAAG;AACD,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,WAAU;AAAA,EAChC,CAAG;AACH;AAEK,MAAC,gBAAgB;AAAA,EACpB,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,OAAO;AAAA,MACX,cAAMA;AAAAA,IACN;AAAA,IACI,QAAQ;AAAA;AAAA,IAEZ;AAAA,IACI,YAAY;AAAA;AAAA,MAEhB,aAAMC;AAAAA,MACN,cAAMC;AAAAA,MACN,WAAMC;AAAAA,MACN,QAAMC;AAAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACN,qBAAMC;AAAAA,MACN,eAAMC;AAAAA,IACN;AAAA,EACA;AACA;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const index = require("../../../../../../_virtual/index.cjs");
3
+ const index = require("../../../../../../_virtual/index2.cjs");
4
4
  class I18nManager {
5
5
  constructor() {
6
6
  this.moduleLocales = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- import merge from "../../../../../../_virtual/index.js";
1
+ import merge from "../../../../../../_virtual/index2.js";
2
2
  class I18nManager {
3
3
  constructor() {
4
4
  this.moduleLocales = /* @__PURE__ */ new Map();
@@ -19,10 +19,6 @@ class GlobalWebSocket {
19
19
  this.rpcIdCounter = 0;
20
20
  }
21
21
  initialize(options = {}) {
22
- console.log("WSS initialize options:", options);
23
- console.log("options.wsUrl:", options.wsUrl);
24
- if (typeof window !== "undefined") console.log("window.location.protocol:", window.location.protocol);
25
- if (typeof window !== "undefined") console.log("window.location.host:", window.location.host);
26
22
  this.maxReconnectAttempts = options.maxReconnectAttempts || this.maxReconnectAttempts;
27
23
  this.reconnectDelay = options.reconnectDelay || this.reconnectDelay;
28
24
  this.baseUrl = options.wsUrl || this._getDefaultWsUrl();
@@ -31,9 +27,11 @@ class GlobalWebSocket {
31
27
  }
32
28
  _getDefaultWsUrl() {
33
29
  if (typeof window === "undefined") return "/api/ws";
34
- const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
30
+ const isSecure = window.location.protocol === "https:";
31
+ const protocol = isSecure ? "wss:" : "ws:";
35
32
  const host = window.location.hostname;
36
- return `${protocol}//${host}/api/ws`;
33
+ const port = isSecure ? "" : ":8020";
34
+ return `${protocol}//${host}${port}/api/ws`;
37
35
  }
38
36
  connect(userId) {
39
37
  if (typeof window === "undefined") return Promise.resolve(false);
@@ -1 +1 @@
1
- {"version":3,"file":"globals.websocket.cjs","sources":["../../../../../../../src/modules/globals/views/classes/globals.websocket.js"],"sourcesContent":["class GlobalWebSocket {\n constructor() {\n this.socket = null;\n this.isConnected = false;\n this.reconnectAttempts = 0;\n this.maxReconnectAttempts = 5;\n this.reconnectDelay = 3000;\n this.baseUrl = null;\n this.pingInterval = null;\n this.pingIntervalTime = 30000;\n this.listeners = {};\n this.userId = null;\n this.connectPromise = null;\n this.subscribedModules = new Set();\n\n // RPC-специфичные свойства\n this.rpcCallbacks = new Map();\n this.rpcTimeout = 30000; // 30 секунд таймаут по умолчанию\n this.rpcIdCounter = 0;\n }\n\n initialize(options = {}) {\n console.log('WSS initialize options:', options);\n console.log('options.wsUrl:', options.wsUrl);\n if (typeof window !== 'undefined') console.log('window.location.protocol:', window.location.protocol);\n if (typeof window !== 'undefined') console.log('window.location.host:', window.location.host);\n\n this.maxReconnectAttempts = options.maxReconnectAttempts || this.maxReconnectAttempts;\n this.reconnectDelay = options.reconnectDelay || this.reconnectDelay;\n this.baseUrl = options.wsUrl || this._getDefaultWsUrl();\n this.pingIntervalTime = options.pingInterval || this.pingIntervalTime;\n this.rpcTimeout = options.rpcTimeout || this.rpcTimeout;\n }\n\n _getDefaultWsUrl() {\n if (typeof window === 'undefined') return '/api/ws';\n const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n const host = window.location.hostname;\n return `${protocol}//${host}/api/ws`;\n }\n\n connect(userId) {\n if (typeof window === 'undefined') return Promise.resolve(false);\n this.userId = userId;\n\n // Проверяем существующее соединение\n if (this.isConnected && this.socket?.readyState === WebSocket.OPEN) {\n return Promise.resolve(this.socket);\n }\n\n // Предотвращаем создание множества промисов при параллельных вызовах\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n this.disconnect();\n\n // Используем baseUrl без параметров, так как аутентификация через cookie\n this.socket = new WebSocket(this.baseUrl);\n\n this.socket.onopen = () => {\n this._handleOpen();\n resolve(this.socket);\n };\n\n this.socket.onmessage = this._handleMessage.bind(this);\n this.socket.onerror = err => {\n this._handleError(err);\n reject(err);\n };\n this.socket.onclose = this._handleClose.bind(this);\n\n setTimeout(() => {\n if (!this.isConnected) {\n reject(new Error('WebSocket connection timeout'));\n }\n }, 10000);\n }).finally(() => {\n this.connectPromise = null;\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n if (typeof window === 'undefined') return;\n\n if (this.socket) {\n this.socket.onopen = null;\n this.socket.onmessage = null;\n this.socket.onerror = null;\n this.socket.onclose = null;\n if (this.socket.readyState === WebSocket.OPEN || this.socket.readyState === WebSocket.CONNECTING) {\n this.socket.close();\n }\n this.socket = null;\n }\n\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все ожидающие RPC вызовы\n for (const [id, { reject }] of this.rpcCallbacks.entries()) {\n reject(new Error('WebSocket disconnected'));\n this.rpcCallbacks.delete(id);\n }\n\n this.isConnected = false;\n this.userId = null;\n this.subscribedModules.clear(); // Очищаем подписки при отключении\n }\n\n async send(data) {\n if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n console.error('Cannot send message: WebSocket is not connected');\n return false;\n }\n\n try {\n const msg = typeof data === 'string' ? data : JSON.stringify(data);\n this.socket.send(msg);\n return true;\n } catch (err) {\n console.error('Error sending message:', err);\n return false;\n }\n }\n\n /**\n * Выполняет RPC вызов на сервере\n * @param {string} module - Имя модуля\n * @param {string} method - Имя метода\n * @param {object} params - Параметры метода\n * @param {object} [options] - Опции вызова\n * @param {number} [options.timeout] - Таймаут в миллисекундах\n * @returns {Promise<any>} - Результат вызова\n */\n rpc(module, method, params = {}, options = {}) {\n if (!this.isConnected || this.socket?.readyState !== WebSocket.OPEN) {\n return Promise.reject(new Error('WebSocket is not connected'));\n }\n\n if (!module || !method) {\n return Promise.reject(new Error('Module and method are required'));\n }\n\n // Генерируем уникальный ID для вызова\n const id = `${++this.rpcIdCounter}`;\n const timeout = options.timeout || this.rpcTimeout;\n\n return new Promise((resolve, reject) => {\n // Записываем информацию о вызове для последующей обработки ответа\n this.rpcCallbacks.set(id, {\n resolve,\n reject,\n timeoutId: setTimeout(() => {\n if (this.rpcCallbacks.has(id)) {\n this.rpcCallbacks.delete(id);\n reject(new Error(`RPC call to ${module}.${method} timed out after ${timeout}ms`));\n }\n }, timeout),\n });\n\n // Отправляем RPC запрос\n this.send({\n type: 'rpc',\n module,\n method,\n params,\n id,\n }).catch(err => {\n if (this.rpcCallbacks.has(id)) {\n clearTimeout(this.rpcCallbacks.get(id).timeoutId);\n this.rpcCallbacks.delete(id);\n reject(err);\n }\n });\n });\n }\n\n addEventListener(eventType, callback, options = {}) {\n const listenerId = `${options.module || 'global'}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n if (!this.listeners[eventType]) this.listeners[eventType] = {};\n this.listeners[eventType][listenerId] = callback;\n return listenerId;\n }\n\n removeEventListener(eventType, listenerId) {\n if (this.listeners[eventType]?.[listenerId]) {\n delete this.listeners[eventType][listenerId];\n }\n }\n\n removeModuleListeners(moduleName) {\n Object.keys(this.listeners).forEach(eventType => {\n Object.keys(this.listeners[eventType]).forEach(listenerId => {\n if (listenerId.startsWith(`${moduleName}_`)) {\n delete this.listeners[eventType][listenerId];\n }\n });\n });\n }\n\n async subscribeModule(moduleName) {\n if (!moduleName || this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'subscribe', module: moduleName });\n if (success) {\n this.subscribedModules.add(moduleName);\n }\n }\n\n async unsubscribeModule(moduleName) {\n if (!moduleName || !this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'unsubscribe', module: moduleName });\n if (success) {\n this.subscribedModules.delete(moduleName);\n }\n }\n\n _resubscribeAllModules() {\n for (const moduleName of this.subscribedModules) {\n this.send({ type: 'subscribe', module: moduleName });\n }\n }\n\n _handleOpen() {\n this.isConnected = true;\n this.reconnectAttempts = 0;\n\n this.pingInterval = setInterval(() => {\n if (this.socket?.readyState === WebSocket.OPEN) {\n this.socket.send(JSON.stringify({ type: 'ping' }));\n }\n }, this.pingIntervalTime);\n\n this._resubscribeAllModules();\n this._notifyListeners('open', { isConnected: true });\n }\n\n _handleMessage(event) {\n // Проверка на типы сообщений - пропускаем бинарные сообщения\n if (typeof event.data !== 'string') {\n console.warn('Received binary message, but only JSON is supported');\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n // Обрабатываем ответы на RPC вызовы\n if (data.type === 'rpc_response' && data.id && this.rpcCallbacks.has(data.id)) {\n const { resolve, reject, timeoutId } = this.rpcCallbacks.get(data.id);\n clearTimeout(timeoutId);\n this.rpcCallbacks.delete(data.id);\n\n if (data.error) {\n reject(Object.assign(new Error(data.error.message), data.error));\n } else {\n resolve(data.result);\n }\n\n return;\n }\n\n // Обрабатываем обычные сообщения\n this._notifyListeners('message', data);\n if (data.type) {\n this._notifyListeners(data.type, data);\n }\n } catch (err) {\n console.error('WebSocket message error:', err);\n }\n }\n\n _handleError(error) {\n console.error('WebSocket error:', error);\n this._notifyListeners('error', { error });\n\n // Отменяем все RPC вызовы с ошибкой соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection error'));\n this.rpcCallbacks.delete(id);\n }\n }\n\n _handleClose(event) {\n this.isConnected = false;\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все RPC вызовы при закрытии соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection closed'));\n this.rpcCallbacks.delete(id);\n }\n\n this._notifyListeners('close', { code: event.code, reason: event.reason });\n\n if (event.code !== 1000 && this.userId && this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n const delay = this.reconnectDelay * this.reconnectAttempts;\n setTimeout(() => {\n this.connect(this.userId).catch(err => {\n console.error('Reconnection failed:', err);\n });\n }, delay);\n }\n }\n\n _notifyListeners(eventType, data) {\n Object.values(this.listeners[eventType] || {}).forEach(fn => {\n try {\n fn(data);\n } catch (err) {\n console.error(`Listener for ${eventType} failed:`, err);\n }\n });\n }\n\n isSocketConnected() {\n return this.isConnected && this.socket?.readyState === WebSocket.OPEN;\n }\n}\n\nconst globalWebSocket = new GlobalWebSocket();\nexport default globalWebSocket;\n"],"names":["module"],"mappings":"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"}
1
+ {"version":3,"file":"globals.websocket.cjs","sources":["../../../../../../../src/modules/globals/views/classes/globals.websocket.js"],"sourcesContent":["class GlobalWebSocket {\n constructor() {\n this.socket = null;\n this.isConnected = false;\n this.reconnectAttempts = 0;\n this.maxReconnectAttempts = 5;\n this.reconnectDelay = 3000;\n this.baseUrl = null;\n this.pingInterval = null;\n this.pingIntervalTime = 30000;\n this.listeners = {};\n this.userId = null;\n this.connectPromise = null;\n this.subscribedModules = new Set();\n\n // RPC-специфичные свойства\n this.rpcCallbacks = new Map();\n this.rpcTimeout = 30000; // 30 секунд таймаут по умолчанию\n this.rpcIdCounter = 0;\n }\n\n initialize(options = {}) {\n this.maxReconnectAttempts = options.maxReconnectAttempts || this.maxReconnectAttempts;\n this.reconnectDelay = options.reconnectDelay || this.reconnectDelay;\n this.baseUrl = options.wsUrl || this._getDefaultWsUrl();\n this.pingIntervalTime = options.pingInterval || this.pingIntervalTime;\n this.rpcTimeout = options.rpcTimeout || this.rpcTimeout;\n }\n\n _getDefaultWsUrl() {\n if (typeof window === 'undefined') return '/api/ws';\n \n const isSecure = window.location.protocol === 'https:';\n const protocol = isSecure ? 'wss:' : 'ws:';\n const host = window.location.hostname;\n const port = isSecure ? '' : ':8020';\n\n return `${protocol}//${host}${port}/api/ws`;\n }\n\n connect(userId) {\n if (typeof window === 'undefined') return Promise.resolve(false);\n this.userId = userId;\n\n // Проверяем существующее соединение\n if (this.isConnected && this.socket?.readyState === WebSocket.OPEN) {\n return Promise.resolve(this.socket);\n }\n\n // Предотвращаем создание множества промисов при параллельных вызовах\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n this.disconnect();\n\n // Используем baseUrl без параметров, так как аутентификация через cookie\n this.socket = new WebSocket(this.baseUrl);\n\n this.socket.onopen = () => {\n this._handleOpen();\n resolve(this.socket);\n };\n\n this.socket.onmessage = this._handleMessage.bind(this);\n this.socket.onerror = err => {\n this._handleError(err);\n reject(err);\n };\n this.socket.onclose = this._handleClose.bind(this);\n\n setTimeout(() => {\n if (!this.isConnected) {\n reject(new Error('WebSocket connection timeout'));\n }\n }, 10000);\n }).finally(() => {\n this.connectPromise = null;\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n if (typeof window === 'undefined') return;\n\n if (this.socket) {\n this.socket.onopen = null;\n this.socket.onmessage = null;\n this.socket.onerror = null;\n this.socket.onclose = null;\n if (this.socket.readyState === WebSocket.OPEN || this.socket.readyState === WebSocket.CONNECTING) {\n this.socket.close();\n }\n this.socket = null;\n }\n\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все ожидающие RPC вызовы\n for (const [id, { reject }] of this.rpcCallbacks.entries()) {\n reject(new Error('WebSocket disconnected'));\n this.rpcCallbacks.delete(id);\n }\n\n this.isConnected = false;\n this.userId = null;\n this.subscribedModules.clear(); // Очищаем подписки при отключении\n }\n\n async send(data) {\n if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n console.error('Cannot send message: WebSocket is not connected');\n return false;\n }\n\n try {\n const msg = typeof data === 'string' ? data : JSON.stringify(data);\n this.socket.send(msg);\n return true;\n } catch (err) {\n console.error('Error sending message:', err);\n return false;\n }\n }\n\n /**\n * Выполняет RPC вызов на сервере\n * @param {string} module - Имя модуля\n * @param {string} method - Имя метода\n * @param {object} params - Параметры метода\n * @param {object} [options] - Опции вызова\n * @param {number} [options.timeout] - Таймаут в миллисекундах\n * @returns {Promise<any>} - Результат вызова\n */\n rpc(module, method, params = {}, options = {}) {\n if (!this.isConnected || this.socket?.readyState !== WebSocket.OPEN) {\n return Promise.reject(new Error('WebSocket is not connected'));\n }\n\n if (!module || !method) {\n return Promise.reject(new Error('Module and method are required'));\n }\n\n // Генерируем уникальный ID для вызова\n const id = `${++this.rpcIdCounter}`;\n const timeout = options.timeout || this.rpcTimeout;\n\n return new Promise((resolve, reject) => {\n // Записываем информацию о вызове для последующей обработки ответа\n this.rpcCallbacks.set(id, {\n resolve,\n reject,\n timeoutId: setTimeout(() => {\n if (this.rpcCallbacks.has(id)) {\n this.rpcCallbacks.delete(id);\n reject(new Error(`RPC call to ${module}.${method} timed out after ${timeout}ms`));\n }\n }, timeout),\n });\n\n // Отправляем RPC запрос\n this.send({\n type: 'rpc',\n module,\n method,\n params,\n id,\n }).catch(err => {\n if (this.rpcCallbacks.has(id)) {\n clearTimeout(this.rpcCallbacks.get(id).timeoutId);\n this.rpcCallbacks.delete(id);\n reject(err);\n }\n });\n });\n }\n\n addEventListener(eventType, callback, options = {}) {\n const listenerId = `${options.module || 'global'}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n if (!this.listeners[eventType]) this.listeners[eventType] = {};\n this.listeners[eventType][listenerId] = callback;\n return listenerId;\n }\n\n removeEventListener(eventType, listenerId) {\n if (this.listeners[eventType]?.[listenerId]) {\n delete this.listeners[eventType][listenerId];\n }\n }\n\n removeModuleListeners(moduleName) {\n Object.keys(this.listeners).forEach(eventType => {\n Object.keys(this.listeners[eventType]).forEach(listenerId => {\n if (listenerId.startsWith(`${moduleName}_`)) {\n delete this.listeners[eventType][listenerId];\n }\n });\n });\n }\n\n async subscribeModule(moduleName) {\n if (!moduleName || this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'subscribe', module: moduleName });\n if (success) {\n this.subscribedModules.add(moduleName);\n }\n }\n\n async unsubscribeModule(moduleName) {\n if (!moduleName || !this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'unsubscribe', module: moduleName });\n if (success) {\n this.subscribedModules.delete(moduleName);\n }\n }\n\n _resubscribeAllModules() {\n for (const moduleName of this.subscribedModules) {\n this.send({ type: 'subscribe', module: moduleName });\n }\n }\n\n _handleOpen() {\n this.isConnected = true;\n this.reconnectAttempts = 0;\n\n this.pingInterval = setInterval(() => {\n if (this.socket?.readyState === WebSocket.OPEN) {\n this.socket.send(JSON.stringify({ type: 'ping' }));\n }\n }, this.pingIntervalTime);\n\n this._resubscribeAllModules();\n this._notifyListeners('open', { isConnected: true });\n }\n\n _handleMessage(event) {\n // Проверка на типы сообщений - пропускаем бинарные сообщения\n if (typeof event.data !== 'string') {\n console.warn('Received binary message, but only JSON is supported');\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n // Обрабатываем ответы на RPC вызовы\n if (data.type === 'rpc_response' && data.id && this.rpcCallbacks.has(data.id)) {\n const { resolve, reject, timeoutId } = this.rpcCallbacks.get(data.id);\n clearTimeout(timeoutId);\n this.rpcCallbacks.delete(data.id);\n\n if (data.error) {\n reject(Object.assign(new Error(data.error.message), data.error));\n } else {\n resolve(data.result);\n }\n\n return;\n }\n\n // Обрабатываем обычные сообщения\n this._notifyListeners('message', data);\n if (data.type) {\n this._notifyListeners(data.type, data);\n }\n } catch (err) {\n console.error('WebSocket message error:', err);\n }\n }\n\n _handleError(error) {\n console.error('WebSocket error:', error);\n this._notifyListeners('error', { error });\n\n // Отменяем все RPC вызовы с ошибкой соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection error'));\n this.rpcCallbacks.delete(id);\n }\n }\n\n _handleClose(event) {\n this.isConnected = false;\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все RPC вызовы при закрытии соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection closed'));\n this.rpcCallbacks.delete(id);\n }\n\n this._notifyListeners('close', { code: event.code, reason: event.reason });\n\n if (event.code !== 1000 && this.userId && this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n const delay = this.reconnectDelay * this.reconnectAttempts;\n setTimeout(() => {\n this.connect(this.userId).catch(err => {\n console.error('Reconnection failed:', err);\n });\n }, delay);\n }\n }\n\n _notifyListeners(eventType, data) {\n Object.values(this.listeners[eventType] || {}).forEach(fn => {\n try {\n fn(data);\n } catch (err) {\n console.error(`Listener for ${eventType} failed:`, err);\n }\n });\n }\n\n isSocketConnected() {\n return this.isConnected && this.socket?.readyState === WebSocket.OPEN;\n }\n}\n\nconst globalWebSocket = new GlobalWebSocket();\nexport default globalWebSocket;\n"],"names":["module"],"mappings":"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"}
@@ -17,10 +17,6 @@ class GlobalWebSocket {
17
17
  this.rpcIdCounter = 0;
18
18
  }
19
19
  initialize(options = {}) {
20
- console.log("WSS initialize options:", options);
21
- console.log("options.wsUrl:", options.wsUrl);
22
- if (typeof window !== "undefined") console.log("window.location.protocol:", window.location.protocol);
23
- if (typeof window !== "undefined") console.log("window.location.host:", window.location.host);
24
20
  this.maxReconnectAttempts = options.maxReconnectAttempts || this.maxReconnectAttempts;
25
21
  this.reconnectDelay = options.reconnectDelay || this.reconnectDelay;
26
22
  this.baseUrl = options.wsUrl || this._getDefaultWsUrl();
@@ -29,9 +25,11 @@ class GlobalWebSocket {
29
25
  }
30
26
  _getDefaultWsUrl() {
31
27
  if (typeof window === "undefined") return "/api/ws";
32
- const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
28
+ const isSecure = window.location.protocol === "https:";
29
+ const protocol = isSecure ? "wss:" : "ws:";
33
30
  const host = window.location.hostname;
34
- return `${protocol}//${host}/api/ws`;
31
+ const port = isSecure ? "" : ":8020";
32
+ return `${protocol}//${host}${port}/api/ws`;
35
33
  }
36
34
  connect(userId) {
37
35
  if (typeof window === "undefined") return Promise.resolve(false);
@@ -1 +1 @@
1
- {"version":3,"file":"globals.websocket.js","sources":["../../../../../../../src/modules/globals/views/classes/globals.websocket.js"],"sourcesContent":["class GlobalWebSocket {\n constructor() {\n this.socket = null;\n this.isConnected = false;\n this.reconnectAttempts = 0;\n this.maxReconnectAttempts = 5;\n this.reconnectDelay = 3000;\n this.baseUrl = null;\n this.pingInterval = null;\n this.pingIntervalTime = 30000;\n this.listeners = {};\n this.userId = null;\n this.connectPromise = null;\n this.subscribedModules = new Set();\n\n // RPC-специфичные свойства\n this.rpcCallbacks = new Map();\n this.rpcTimeout = 30000; // 30 секунд таймаут по умолчанию\n this.rpcIdCounter = 0;\n }\n\n initialize(options = {}) {\n console.log('WSS initialize options:', options);\n console.log('options.wsUrl:', options.wsUrl);\n if (typeof window !== 'undefined') console.log('window.location.protocol:', window.location.protocol);\n if (typeof window !== 'undefined') console.log('window.location.host:', window.location.host);\n\n this.maxReconnectAttempts = options.maxReconnectAttempts || this.maxReconnectAttempts;\n this.reconnectDelay = options.reconnectDelay || this.reconnectDelay;\n this.baseUrl = options.wsUrl || this._getDefaultWsUrl();\n this.pingIntervalTime = options.pingInterval || this.pingIntervalTime;\n this.rpcTimeout = options.rpcTimeout || this.rpcTimeout;\n }\n\n _getDefaultWsUrl() {\n if (typeof window === 'undefined') return '/api/ws';\n const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n const host = window.location.hostname;\n return `${protocol}//${host}/api/ws`;\n }\n\n connect(userId) {\n if (typeof window === 'undefined') return Promise.resolve(false);\n this.userId = userId;\n\n // Проверяем существующее соединение\n if (this.isConnected && this.socket?.readyState === WebSocket.OPEN) {\n return Promise.resolve(this.socket);\n }\n\n // Предотвращаем создание множества промисов при параллельных вызовах\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n this.disconnect();\n\n // Используем baseUrl без параметров, так как аутентификация через cookie\n this.socket = new WebSocket(this.baseUrl);\n\n this.socket.onopen = () => {\n this._handleOpen();\n resolve(this.socket);\n };\n\n this.socket.onmessage = this._handleMessage.bind(this);\n this.socket.onerror = err => {\n this._handleError(err);\n reject(err);\n };\n this.socket.onclose = this._handleClose.bind(this);\n\n setTimeout(() => {\n if (!this.isConnected) {\n reject(new Error('WebSocket connection timeout'));\n }\n }, 10000);\n }).finally(() => {\n this.connectPromise = null;\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n if (typeof window === 'undefined') return;\n\n if (this.socket) {\n this.socket.onopen = null;\n this.socket.onmessage = null;\n this.socket.onerror = null;\n this.socket.onclose = null;\n if (this.socket.readyState === WebSocket.OPEN || this.socket.readyState === WebSocket.CONNECTING) {\n this.socket.close();\n }\n this.socket = null;\n }\n\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все ожидающие RPC вызовы\n for (const [id, { reject }] of this.rpcCallbacks.entries()) {\n reject(new Error('WebSocket disconnected'));\n this.rpcCallbacks.delete(id);\n }\n\n this.isConnected = false;\n this.userId = null;\n this.subscribedModules.clear(); // Очищаем подписки при отключении\n }\n\n async send(data) {\n if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n console.error('Cannot send message: WebSocket is not connected');\n return false;\n }\n\n try {\n const msg = typeof data === 'string' ? data : JSON.stringify(data);\n this.socket.send(msg);\n return true;\n } catch (err) {\n console.error('Error sending message:', err);\n return false;\n }\n }\n\n /**\n * Выполняет RPC вызов на сервере\n * @param {string} module - Имя модуля\n * @param {string} method - Имя метода\n * @param {object} params - Параметры метода\n * @param {object} [options] - Опции вызова\n * @param {number} [options.timeout] - Таймаут в миллисекундах\n * @returns {Promise<any>} - Результат вызова\n */\n rpc(module, method, params = {}, options = {}) {\n if (!this.isConnected || this.socket?.readyState !== WebSocket.OPEN) {\n return Promise.reject(new Error('WebSocket is not connected'));\n }\n\n if (!module || !method) {\n return Promise.reject(new Error('Module and method are required'));\n }\n\n // Генерируем уникальный ID для вызова\n const id = `${++this.rpcIdCounter}`;\n const timeout = options.timeout || this.rpcTimeout;\n\n return new Promise((resolve, reject) => {\n // Записываем информацию о вызове для последующей обработки ответа\n this.rpcCallbacks.set(id, {\n resolve,\n reject,\n timeoutId: setTimeout(() => {\n if (this.rpcCallbacks.has(id)) {\n this.rpcCallbacks.delete(id);\n reject(new Error(`RPC call to ${module}.${method} timed out after ${timeout}ms`));\n }\n }, timeout),\n });\n\n // Отправляем RPC запрос\n this.send({\n type: 'rpc',\n module,\n method,\n params,\n id,\n }).catch(err => {\n if (this.rpcCallbacks.has(id)) {\n clearTimeout(this.rpcCallbacks.get(id).timeoutId);\n this.rpcCallbacks.delete(id);\n reject(err);\n }\n });\n });\n }\n\n addEventListener(eventType, callback, options = {}) {\n const listenerId = `${options.module || 'global'}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n if (!this.listeners[eventType]) this.listeners[eventType] = {};\n this.listeners[eventType][listenerId] = callback;\n return listenerId;\n }\n\n removeEventListener(eventType, listenerId) {\n if (this.listeners[eventType]?.[listenerId]) {\n delete this.listeners[eventType][listenerId];\n }\n }\n\n removeModuleListeners(moduleName) {\n Object.keys(this.listeners).forEach(eventType => {\n Object.keys(this.listeners[eventType]).forEach(listenerId => {\n if (listenerId.startsWith(`${moduleName}_`)) {\n delete this.listeners[eventType][listenerId];\n }\n });\n });\n }\n\n async subscribeModule(moduleName) {\n if (!moduleName || this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'subscribe', module: moduleName });\n if (success) {\n this.subscribedModules.add(moduleName);\n }\n }\n\n async unsubscribeModule(moduleName) {\n if (!moduleName || !this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'unsubscribe', module: moduleName });\n if (success) {\n this.subscribedModules.delete(moduleName);\n }\n }\n\n _resubscribeAllModules() {\n for (const moduleName of this.subscribedModules) {\n this.send({ type: 'subscribe', module: moduleName });\n }\n }\n\n _handleOpen() {\n this.isConnected = true;\n this.reconnectAttempts = 0;\n\n this.pingInterval = setInterval(() => {\n if (this.socket?.readyState === WebSocket.OPEN) {\n this.socket.send(JSON.stringify({ type: 'ping' }));\n }\n }, this.pingIntervalTime);\n\n this._resubscribeAllModules();\n this._notifyListeners('open', { isConnected: true });\n }\n\n _handleMessage(event) {\n // Проверка на типы сообщений - пропускаем бинарные сообщения\n if (typeof event.data !== 'string') {\n console.warn('Received binary message, but only JSON is supported');\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n // Обрабатываем ответы на RPC вызовы\n if (data.type === 'rpc_response' && data.id && this.rpcCallbacks.has(data.id)) {\n const { resolve, reject, timeoutId } = this.rpcCallbacks.get(data.id);\n clearTimeout(timeoutId);\n this.rpcCallbacks.delete(data.id);\n\n if (data.error) {\n reject(Object.assign(new Error(data.error.message), data.error));\n } else {\n resolve(data.result);\n }\n\n return;\n }\n\n // Обрабатываем обычные сообщения\n this._notifyListeners('message', data);\n if (data.type) {\n this._notifyListeners(data.type, data);\n }\n } catch (err) {\n console.error('WebSocket message error:', err);\n }\n }\n\n _handleError(error) {\n console.error('WebSocket error:', error);\n this._notifyListeners('error', { error });\n\n // Отменяем все RPC вызовы с ошибкой соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection error'));\n this.rpcCallbacks.delete(id);\n }\n }\n\n _handleClose(event) {\n this.isConnected = false;\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все RPC вызовы при закрытии соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection closed'));\n this.rpcCallbacks.delete(id);\n }\n\n this._notifyListeners('close', { code: event.code, reason: event.reason });\n\n if (event.code !== 1000 && this.userId && this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n const delay = this.reconnectDelay * this.reconnectAttempts;\n setTimeout(() => {\n this.connect(this.userId).catch(err => {\n console.error('Reconnection failed:', err);\n });\n }, delay);\n }\n }\n\n _notifyListeners(eventType, data) {\n Object.values(this.listeners[eventType] || {}).forEach(fn => {\n try {\n fn(data);\n } catch (err) {\n console.error(`Listener for ${eventType} failed:`, err);\n }\n });\n }\n\n isSocketConnected() {\n return this.isConnected && this.socket?.readyState === WebSocket.OPEN;\n }\n}\n\nconst globalWebSocket = new GlobalWebSocket();\nexport default globalWebSocket;\n"],"names":[],"mappings":"AAAA,MAAM,gBAAgB;AAAA,EACpB,cAAc;AACZ,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,oBAAoB;AACzB,SAAK,uBAAuB;AAC5B,SAAK,iBAAiB;AACtB,SAAK,UAAU;AACf,SAAK,eAAe;AACpB,SAAK,mBAAmB;AACxB,SAAK,YAAY,CAAA;AACjB,SAAK,SAAS;AACd,SAAK,iBAAiB;AACtB,SAAK,oBAAoB,oBAAI,IAAG;AAGhC,SAAK,eAAe,oBAAI,IAAG;AAC3B,SAAK,aAAa;AAClB,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,WAAW,UAAU,IAAI;AACvB,YAAQ,IAAI,2BAA2B,OAAO;AAC9C,YAAQ,IAAI,kBAAkB,QAAQ,KAAK;AAC3C,QAAI,OAAO,WAAW,YAAa,SAAQ,IAAI,6BAA6B,OAAO,SAAS,QAAQ;AACpG,QAAI,OAAO,WAAW,YAAa,SAAQ,IAAI,yBAAyB,OAAO,SAAS,IAAI;AAE5F,SAAK,uBAAuB,QAAQ,wBAAwB,KAAK;AACjE,SAAK,iBAAiB,QAAQ,kBAAkB,KAAK;AACrD,SAAK,UAAU,QAAQ,SAAS,KAAK,iBAAgB;AACrD,SAAK,mBAAmB,QAAQ,gBAAgB,KAAK;AACrD,SAAK,aAAa,QAAQ,cAAc,KAAK;AAAA,EAC/C;AAAA,EAEA,mBAAmB;AACjB,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,UAAM,WAAW,OAAO,SAAS,aAAa,WAAW,SAAS;AAClE,UAAM,OAAO,OAAO,SAAS;AAC7B,WAAO,GAAG,QAAQ,KAAK,IAAI;AAAA,EAC7B;AAAA,EAEA,QAAQ,QAAQ;AACd,QAAI,OAAO,WAAW,YAAa,QAAO,QAAQ,QAAQ,KAAK;AAC/D,SAAK,SAAS;AAGd,QAAI,KAAK,eAAe,KAAK,QAAQ,eAAe,UAAU,MAAM;AAClE,aAAO,QAAQ,QAAQ,KAAK,MAAM;AAAA,IACpC;AAGA,QAAI,KAAK,gBAAgB;AACvB,aAAO,KAAK;AAAA,IACd;AAEA,SAAK,iBAAiB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACrD,WAAK,WAAU;AAGf,WAAK,SAAS,IAAI,UAAU,KAAK,OAAO;AAExC,WAAK,OAAO,SAAS,MAAM;AACzB,aAAK,YAAW;AAChB,gBAAQ,KAAK,MAAM;AAAA,MACrB;AAEA,WAAK,OAAO,YAAY,KAAK,eAAe,KAAK,IAAI;AACrD,WAAK,OAAO,UAAU,SAAO;AAC3B,aAAK,aAAa,GAAG;AACrB,eAAO,GAAG;AAAA,MACZ;AACA,WAAK,OAAO,UAAU,KAAK,aAAa,KAAK,IAAI;AAEjD,iBAAW,MAAM;AACf,YAAI,CAAC,KAAK,aAAa;AACrB,iBAAO,IAAI,MAAM,8BAA8B,CAAC;AAAA,QAClD;AAAA,MACF,GAAG,GAAK;AAAA,IACV,CAAC,EAAE,QAAQ,MAAM;AACf,WAAK,iBAAiB;AAAA,IACxB,CAAC;AAED,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,aAAa;AACX,QAAI,OAAO,WAAW,YAAa;AAEnC,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,SAAS;AACrB,WAAK,OAAO,YAAY;AACxB,WAAK,OAAO,UAAU;AACtB,WAAK,OAAO,UAAU;AACtB,UAAI,KAAK,OAAO,eAAe,UAAU,QAAQ,KAAK,OAAO,eAAe,UAAU,YAAY;AAChG,aAAK,OAAO,MAAK;AAAA,MACnB;AACA,WAAK,SAAS;AAAA,IAChB;AAEA,QAAI,KAAK,cAAc;AACrB,oBAAc,KAAK,YAAY;AAC/B,WAAK,eAAe;AAAA,IACtB;AAGA,eAAW,CAAC,IAAI,EAAE,OAAM,CAAE,KAAK,KAAK,aAAa,WAAW;AAC1D,aAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,WAAK,aAAa,OAAO,EAAE;AAAA,IAC7B;AAEA,SAAK,cAAc;AACnB,SAAK,SAAS;AACd,SAAK,kBAAkB;EACzB;AAAA,EAEA,MAAM,KAAK,MAAM;AACf,QAAI,CAAC,KAAK,UAAU,KAAK,OAAO,eAAe,UAAU,MAAM;AAC7D,cAAQ,MAAM,iDAAiD;AAC/D,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,MAAM,OAAO,SAAS,WAAW,OAAO,KAAK,UAAU,IAAI;AACjE,WAAK,OAAO,KAAK,GAAG;AACpB,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,cAAQ,MAAM,0BAA0B,GAAG;AAC3C,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,IAAI,QAAQ,QAAQ,SAAS,CAAA,GAAI,UAAU,IAAI;AAC7C,QAAI,CAAC,KAAK,eAAe,KAAK,QAAQ,eAAe,UAAU,MAAM;AACnE,aAAO,QAAQ,OAAO,IAAI,MAAM,4BAA4B,CAAC;AAAA,IAC/D;AAEA,QAAI,CAAC,UAAU,CAAC,QAAQ;AACtB,aAAO,QAAQ,OAAO,IAAI,MAAM,gCAAgC,CAAC;AAAA,IACnE;AAGA,UAAM,KAAK,GAAG,EAAE,KAAK,YAAY;AACjC,UAAM,UAAU,QAAQ,WAAW,KAAK;AAExC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEtC,WAAK,aAAa,IAAI,IAAI;AAAA,QACxB;AAAA,QACA;AAAA,QACA,WAAW,WAAW,MAAM;AAC1B,cAAI,KAAK,aAAa,IAAI,EAAE,GAAG;AAC7B,iBAAK,aAAa,OAAO,EAAE;AAC3B,mBAAO,IAAI,MAAM,eAAe,MAAM,IAAI,MAAM,oBAAoB,OAAO,IAAI,CAAC;AAAA,UAClF;AAAA,QACF,GAAG,OAAO;AAAA,MAClB,CAAO;AAGD,WAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO,EAAE,MAAM,SAAO;AACd,YAAI,KAAK,aAAa,IAAI,EAAE,GAAG;AAC7B,uBAAa,KAAK,aAAa,IAAI,EAAE,EAAE,SAAS;AAChD,eAAK,aAAa,OAAO,EAAE;AAC3B,iBAAO,GAAG;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,iBAAiB,WAAW,UAAU,UAAU,CAAA,GAAI;AAClD,UAAM,aAAa,GAAG,QAAQ,UAAU,QAAQ,IAAI,KAAK,IAAG,CAAE,IAAI,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AACzG,QAAI,CAAC,KAAK,UAAU,SAAS,EAAG,MAAK,UAAU,SAAS,IAAI,CAAA;AAC5D,SAAK,UAAU,SAAS,EAAE,UAAU,IAAI;AACxC,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB,WAAW,YAAY;AACzC,QAAI,KAAK,UAAU,SAAS,IAAI,UAAU,GAAG;AAC3C,aAAO,KAAK,UAAU,SAAS,EAAE,UAAU;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,sBAAsB,YAAY;AAChC,WAAO,KAAK,KAAK,SAAS,EAAE,QAAQ,eAAa;AAC/C,aAAO,KAAK,KAAK,UAAU,SAAS,CAAC,EAAE,QAAQ,gBAAc;AAC3D,YAAI,WAAW,WAAW,GAAG,UAAU,GAAG,GAAG;AAC3C,iBAAO,KAAK,UAAU,SAAS,EAAE,UAAU;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,gBAAgB,YAAY;AAChC,QAAI,CAAC,cAAc,KAAK,kBAAkB,IAAI,UAAU,EAAG;AAC3D,UAAM,UAAU,MAAM,KAAK,KAAK,EAAE,MAAM,aAAa,QAAQ,YAAY;AACzE,QAAI,SAAS;AACX,WAAK,kBAAkB,IAAI,UAAU;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkB,YAAY;AAClC,QAAI,CAAC,cAAc,CAAC,KAAK,kBAAkB,IAAI,UAAU,EAAG;AAC5D,UAAM,UAAU,MAAM,KAAK,KAAK,EAAE,MAAM,eAAe,QAAQ,YAAY;AAC3E,QAAI,SAAS;AACX,WAAK,kBAAkB,OAAO,UAAU;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,yBAAyB;AACvB,eAAW,cAAc,KAAK,mBAAmB;AAC/C,WAAK,KAAK,EAAE,MAAM,aAAa,QAAQ,YAAY;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,cAAc;AACZ,SAAK,cAAc;AACnB,SAAK,oBAAoB;AAEzB,SAAK,eAAe,YAAY,MAAM;AACpC,UAAI,KAAK,QAAQ,eAAe,UAAU,MAAM;AAC9C,aAAK,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,OAAM,CAAE,CAAC;AAAA,MACnD;AAAA,IACF,GAAG,KAAK,gBAAgB;AAExB,SAAK,uBAAsB;AAC3B,SAAK,iBAAiB,QAAQ,EAAE,aAAa,KAAI,CAAE;AAAA,EACrD;AAAA,EAEA,eAAe,OAAO;AAEpB,QAAI,OAAO,MAAM,SAAS,UAAU;AAClC,cAAQ,KAAK,qDAAqD;AAClE;AAAA,IACF;AAEA,QAAI;AACF,YAAM,OAAO,KAAK,MAAM,MAAM,IAAI;AAGlC,UAAI,KAAK,SAAS,kBAAkB,KAAK,MAAM,KAAK,aAAa,IAAI,KAAK,EAAE,GAAG;AAC7E,cAAM,EAAE,SAAS,QAAQ,UAAS,IAAK,KAAK,aAAa,IAAI,KAAK,EAAE;AACpE,qBAAa,SAAS;AACtB,aAAK,aAAa,OAAO,KAAK,EAAE;AAEhC,YAAI,KAAK,OAAO;AACd,iBAAO,OAAO,OAAO,IAAI,MAAM,KAAK,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC;AAAA,QACjE,OAAO;AACL,kBAAQ,KAAK,MAAM;AAAA,QACrB;AAEA;AAAA,MACF;AAGA,WAAK,iBAAiB,WAAW,IAAI;AACrC,UAAI,KAAK,MAAM;AACb,aAAK,iBAAiB,KAAK,MAAM,IAAI;AAAA,MACvC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,4BAA4B,GAAG;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,aAAa,OAAO;AAClB,YAAQ,MAAM,oBAAoB,KAAK;AACvC,SAAK,iBAAiB,SAAS,EAAE,MAAK,CAAE;AAGxC,eAAW,CAAC,IAAI,EAAE,QAAQ,UAAS,CAAE,KAAK,KAAK,aAAa,WAAW;AACrE,mBAAa,SAAS;AACtB,aAAO,IAAI,MAAM,4BAA4B,CAAC;AAC9C,WAAK,aAAa,OAAO,EAAE;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,aAAa,OAAO;AAClB,SAAK,cAAc;AACnB,QAAI,KAAK,cAAc;AACrB,oBAAc,KAAK,YAAY;AAC/B,WAAK,eAAe;AAAA,IACtB;AAGA,eAAW,CAAC,IAAI,EAAE,QAAQ,UAAS,CAAE,KAAK,KAAK,aAAa,WAAW;AACrE,mBAAa,SAAS;AACtB,aAAO,IAAI,MAAM,6BAA6B,CAAC;AAC/C,WAAK,aAAa,OAAO,EAAE;AAAA,IAC7B;AAEA,SAAK,iBAAiB,SAAS,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,QAAQ;AAEzE,QAAI,MAAM,SAAS,OAAQ,KAAK,UAAU,KAAK,oBAAoB,KAAK,sBAAsB;AAC5F,WAAK;AACL,YAAM,QAAQ,KAAK,iBAAiB,KAAK;AACzC,iBAAW,MAAM;AACf,aAAK,QAAQ,KAAK,MAAM,EAAE,MAAM,SAAO;AACrC,kBAAQ,MAAM,wBAAwB,GAAG;AAAA,QAC3C,CAAC;AAAA,MACH,GAAG,KAAK;AAAA,IACV;AAAA,EACF;AAAA,EAEA,iBAAiB,WAAW,MAAM;AAChC,WAAO,OAAO,KAAK,UAAU,SAAS,KAAK,CAAA,CAAE,EAAE,QAAQ,QAAM;AAC3D,UAAI;AACF,WAAG,IAAI;AAAA,MACT,SAAS,KAAK;AACZ,gBAAQ,MAAM,gBAAgB,SAAS,YAAY,GAAG;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK,eAAe,KAAK,QAAQ,eAAe,UAAU;AAAA,EACnE;AACF;AAEK,MAAC,kBAAkB,IAAI,gBAAe;"}
1
+ {"version":3,"file":"globals.websocket.js","sources":["../../../../../../../src/modules/globals/views/classes/globals.websocket.js"],"sourcesContent":["class GlobalWebSocket {\n constructor() {\n this.socket = null;\n this.isConnected = false;\n this.reconnectAttempts = 0;\n this.maxReconnectAttempts = 5;\n this.reconnectDelay = 3000;\n this.baseUrl = null;\n this.pingInterval = null;\n this.pingIntervalTime = 30000;\n this.listeners = {};\n this.userId = null;\n this.connectPromise = null;\n this.subscribedModules = new Set();\n\n // RPC-специфичные свойства\n this.rpcCallbacks = new Map();\n this.rpcTimeout = 30000; // 30 секунд таймаут по умолчанию\n this.rpcIdCounter = 0;\n }\n\n initialize(options = {}) {\n this.maxReconnectAttempts = options.maxReconnectAttempts || this.maxReconnectAttempts;\n this.reconnectDelay = options.reconnectDelay || this.reconnectDelay;\n this.baseUrl = options.wsUrl || this._getDefaultWsUrl();\n this.pingIntervalTime = options.pingInterval || this.pingIntervalTime;\n this.rpcTimeout = options.rpcTimeout || this.rpcTimeout;\n }\n\n _getDefaultWsUrl() {\n if (typeof window === 'undefined') return '/api/ws';\n \n const isSecure = window.location.protocol === 'https:';\n const protocol = isSecure ? 'wss:' : 'ws:';\n const host = window.location.hostname;\n const port = isSecure ? '' : ':8020';\n\n return `${protocol}//${host}${port}/api/ws`;\n }\n\n connect(userId) {\n if (typeof window === 'undefined') return Promise.resolve(false);\n this.userId = userId;\n\n // Проверяем существующее соединение\n if (this.isConnected && this.socket?.readyState === WebSocket.OPEN) {\n return Promise.resolve(this.socket);\n }\n\n // Предотвращаем создание множества промисов при параллельных вызовах\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n this.disconnect();\n\n // Используем baseUrl без параметров, так как аутентификация через cookie\n this.socket = new WebSocket(this.baseUrl);\n\n this.socket.onopen = () => {\n this._handleOpen();\n resolve(this.socket);\n };\n\n this.socket.onmessage = this._handleMessage.bind(this);\n this.socket.onerror = err => {\n this._handleError(err);\n reject(err);\n };\n this.socket.onclose = this._handleClose.bind(this);\n\n setTimeout(() => {\n if (!this.isConnected) {\n reject(new Error('WebSocket connection timeout'));\n }\n }, 10000);\n }).finally(() => {\n this.connectPromise = null;\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n if (typeof window === 'undefined') return;\n\n if (this.socket) {\n this.socket.onopen = null;\n this.socket.onmessage = null;\n this.socket.onerror = null;\n this.socket.onclose = null;\n if (this.socket.readyState === WebSocket.OPEN || this.socket.readyState === WebSocket.CONNECTING) {\n this.socket.close();\n }\n this.socket = null;\n }\n\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все ожидающие RPC вызовы\n for (const [id, { reject }] of this.rpcCallbacks.entries()) {\n reject(new Error('WebSocket disconnected'));\n this.rpcCallbacks.delete(id);\n }\n\n this.isConnected = false;\n this.userId = null;\n this.subscribedModules.clear(); // Очищаем подписки при отключении\n }\n\n async send(data) {\n if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n console.error('Cannot send message: WebSocket is not connected');\n return false;\n }\n\n try {\n const msg = typeof data === 'string' ? data : JSON.stringify(data);\n this.socket.send(msg);\n return true;\n } catch (err) {\n console.error('Error sending message:', err);\n return false;\n }\n }\n\n /**\n * Выполняет RPC вызов на сервере\n * @param {string} module - Имя модуля\n * @param {string} method - Имя метода\n * @param {object} params - Параметры метода\n * @param {object} [options] - Опции вызова\n * @param {number} [options.timeout] - Таймаут в миллисекундах\n * @returns {Promise<any>} - Результат вызова\n */\n rpc(module, method, params = {}, options = {}) {\n if (!this.isConnected || this.socket?.readyState !== WebSocket.OPEN) {\n return Promise.reject(new Error('WebSocket is not connected'));\n }\n\n if (!module || !method) {\n return Promise.reject(new Error('Module and method are required'));\n }\n\n // Генерируем уникальный ID для вызова\n const id = `${++this.rpcIdCounter}`;\n const timeout = options.timeout || this.rpcTimeout;\n\n return new Promise((resolve, reject) => {\n // Записываем информацию о вызове для последующей обработки ответа\n this.rpcCallbacks.set(id, {\n resolve,\n reject,\n timeoutId: setTimeout(() => {\n if (this.rpcCallbacks.has(id)) {\n this.rpcCallbacks.delete(id);\n reject(new Error(`RPC call to ${module}.${method} timed out after ${timeout}ms`));\n }\n }, timeout),\n });\n\n // Отправляем RPC запрос\n this.send({\n type: 'rpc',\n module,\n method,\n params,\n id,\n }).catch(err => {\n if (this.rpcCallbacks.has(id)) {\n clearTimeout(this.rpcCallbacks.get(id).timeoutId);\n this.rpcCallbacks.delete(id);\n reject(err);\n }\n });\n });\n }\n\n addEventListener(eventType, callback, options = {}) {\n const listenerId = `${options.module || 'global'}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n if (!this.listeners[eventType]) this.listeners[eventType] = {};\n this.listeners[eventType][listenerId] = callback;\n return listenerId;\n }\n\n removeEventListener(eventType, listenerId) {\n if (this.listeners[eventType]?.[listenerId]) {\n delete this.listeners[eventType][listenerId];\n }\n }\n\n removeModuleListeners(moduleName) {\n Object.keys(this.listeners).forEach(eventType => {\n Object.keys(this.listeners[eventType]).forEach(listenerId => {\n if (listenerId.startsWith(`${moduleName}_`)) {\n delete this.listeners[eventType][listenerId];\n }\n });\n });\n }\n\n async subscribeModule(moduleName) {\n if (!moduleName || this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'subscribe', module: moduleName });\n if (success) {\n this.subscribedModules.add(moduleName);\n }\n }\n\n async unsubscribeModule(moduleName) {\n if (!moduleName || !this.subscribedModules.has(moduleName)) return;\n const success = await this.send({ type: 'unsubscribe', module: moduleName });\n if (success) {\n this.subscribedModules.delete(moduleName);\n }\n }\n\n _resubscribeAllModules() {\n for (const moduleName of this.subscribedModules) {\n this.send({ type: 'subscribe', module: moduleName });\n }\n }\n\n _handleOpen() {\n this.isConnected = true;\n this.reconnectAttempts = 0;\n\n this.pingInterval = setInterval(() => {\n if (this.socket?.readyState === WebSocket.OPEN) {\n this.socket.send(JSON.stringify({ type: 'ping' }));\n }\n }, this.pingIntervalTime);\n\n this._resubscribeAllModules();\n this._notifyListeners('open', { isConnected: true });\n }\n\n _handleMessage(event) {\n // Проверка на типы сообщений - пропускаем бинарные сообщения\n if (typeof event.data !== 'string') {\n console.warn('Received binary message, but only JSON is supported');\n return;\n }\n\n try {\n const data = JSON.parse(event.data);\n\n // Обрабатываем ответы на RPC вызовы\n if (data.type === 'rpc_response' && data.id && this.rpcCallbacks.has(data.id)) {\n const { resolve, reject, timeoutId } = this.rpcCallbacks.get(data.id);\n clearTimeout(timeoutId);\n this.rpcCallbacks.delete(data.id);\n\n if (data.error) {\n reject(Object.assign(new Error(data.error.message), data.error));\n } else {\n resolve(data.result);\n }\n\n return;\n }\n\n // Обрабатываем обычные сообщения\n this._notifyListeners('message', data);\n if (data.type) {\n this._notifyListeners(data.type, data);\n }\n } catch (err) {\n console.error('WebSocket message error:', err);\n }\n }\n\n _handleError(error) {\n console.error('WebSocket error:', error);\n this._notifyListeners('error', { error });\n\n // Отменяем все RPC вызовы с ошибкой соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection error'));\n this.rpcCallbacks.delete(id);\n }\n }\n\n _handleClose(event) {\n this.isConnected = false;\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = null;\n }\n\n // Отменяем все RPC вызовы при закрытии соединения\n for (const [id, { reject, timeoutId }] of this.rpcCallbacks.entries()) {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection closed'));\n this.rpcCallbacks.delete(id);\n }\n\n this._notifyListeners('close', { code: event.code, reason: event.reason });\n\n if (event.code !== 1000 && this.userId && this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n const delay = this.reconnectDelay * this.reconnectAttempts;\n setTimeout(() => {\n this.connect(this.userId).catch(err => {\n console.error('Reconnection failed:', err);\n });\n }, delay);\n }\n }\n\n _notifyListeners(eventType, data) {\n Object.values(this.listeners[eventType] || {}).forEach(fn => {\n try {\n fn(data);\n } catch (err) {\n console.error(`Listener for ${eventType} failed:`, err);\n }\n });\n }\n\n isSocketConnected() {\n return this.isConnected && this.socket?.readyState === WebSocket.OPEN;\n }\n}\n\nconst globalWebSocket = new GlobalWebSocket();\nexport default globalWebSocket;\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const Checkbox = require("../../../../../components/Checkbox/Checkbox.vue.cjs");
5
- const Spoiler = require("../../../../../components/Spoiler/Spoiler.vue.cjs");
5
+ const Spoiler = require("../../../../../components/Spoiler/Spoiler.vue2.cjs");
6
6
  const IconChevronBottom = require("../../../../icons/navigation/IconChevronBottom.vue.cjs");
7
7
  const _hoisted_1 = { class: "w-100 o-scroll" };
8
8
  const _hoisted_2 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
@@ -1,6 +1,6 @@
1
1
  import { mergeModels, useModel, createElementBlock, openBlock, createElementVNode, Fragment, renderList, createBlock, withCtx, toDisplayString, createVNode, normalizeClass } from "vue";
2
2
  import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
3
- import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue.js";
3
+ import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue2.js";
4
4
  import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
5
5
  const _hoisted_1 = { class: "w-100 o-scroll" };
6
6
  const _hoisted_2 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };