@ozdao/martyrs 0.2.480 → 0.2.482

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 (458) hide show
  1. package/README.md +4 -13
  2. package/dist/{Media-CKk33U4A.js → Media-JBERcJWj.js} +1 -1
  3. package/dist/{Media-B1ZP3D7B.cjs → Media-p7Q8ZAQM.cjs} +1 -1
  4. package/dist/{abac-XF1JVCLI.cjs → abac-6LjoG9u-.cjs} +107 -26
  5. package/dist/{abac-BuL5pUZ4.js → abac-Cf_9lCSh.js} +107 -26
  6. package/dist/builder.cjs +8 -12
  7. package/dist/builder.js +8 -12
  8. package/dist/globals.server.cjs +1 -1
  9. package/dist/globals.server.js +1 -1
  10. package/dist/{main-BhAiwmnI.js → main-AtCVQKF9.js} +2855 -4162
  11. package/dist/main-B-we7C0w.cjs +11 -0
  12. package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
  13. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
  14. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  15. package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
  16. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +28 -7
  17. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  18. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +29 -8
  19. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  20. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs +5 -8
  21. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -1
  22. package/dist/martyrs/src/components/Chips/Chips.vue2.js +6 -9
  23. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -1
  24. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +84 -0
  25. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -0
  26. package/dist/martyrs/src/components/Feed/Carousel.vue.js +84 -0
  27. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -0
  28. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +4 -4
  29. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  30. package/dist/martyrs/src/components/Feed/Feed.vue.js +4 -4
  31. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  32. package/dist/martyrs/src/components/Field/Field.vue.cjs +2 -1
  33. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  34. package/dist/martyrs/src/components/Field/Field.vue.js +2 -1
  35. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  36. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +203 -151
  37. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  38. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +204 -152
  39. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  40. package/dist/martyrs/src/components/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
  41. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
  42. package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
  43. package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.js.map} +1 -1
  44. package/dist/martyrs/src/components/Radio/Radio.vue.cjs +2 -2
  45. package/dist/martyrs/src/components/Radio/Radio.vue.cjs.map +1 -1
  46. package/dist/martyrs/src/components/Radio/Radio.vue.js +2 -2
  47. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  48. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +4 -3
  49. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
  50. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +4 -3
  51. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
  52. package/dist/martyrs/src/components/Slider/{Slider.native.vue.cjs → Slider.vue.cjs} +22 -80
  53. package/dist/martyrs/src/components/Slider/Slider.vue.cjs.map +1 -0
  54. package/dist/martyrs/src/components/Slider/{Slider.native.vue.js → Slider.vue.js} +23 -81
  55. package/dist/martyrs/src/components/Slider/Slider.vue.js.map +1 -0
  56. package/dist/martyrs/src/components/Status/Status.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  58. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs +4 -2
  59. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -1
  60. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js +4 -2
  61. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -1
  62. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  64. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  66. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  70. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +4 -2
  71. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  72. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +22 -149
  73. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  74. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +24 -151
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +77 -0
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -0
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +77 -0
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -0
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +121 -0
  81. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -0
  82. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +121 -0
  83. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -0
  84. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +38 -0
  85. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -0
  86. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +38 -0
  87. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -0
  88. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  90. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  92. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  93. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  95. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  96. package/dist/martyrs/src/modules/auth/views/router/users.cjs +23 -16
  97. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  98. package/dist/martyrs/src/modules/auth/views/router/users.js +23 -16
  99. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  100. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +3 -3
  101. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  102. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +3 -3
  103. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +6 -6
  105. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +5 -4
  106. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  107. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +5 -4
  108. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +2 -2
  110. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  111. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +92 -62
  112. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +93 -63
  114. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs +82 -53
  116. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +82 -53
  118. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js.map +1 -1
  119. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -6
  120. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -6
  122. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  125. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  127. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  128. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  129. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +2 -2
  130. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  131. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  133. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +3 -9
  134. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs.map +1 -1
  135. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +3 -9
  136. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +5 -5
  139. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  140. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +10 -10
  141. package/dist/martyrs/src/modules/globals/globals.client.cjs +2 -0
  142. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  143. package/dist/martyrs/src/modules/globals/globals.client.js +2 -0
  144. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  145. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
  146. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js +1 -1
  147. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
  148. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  149. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
  150. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +84 -0
  152. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs.map +1 -0
  153. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +84 -0
  154. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js.map +1 -0
  155. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +2 -2
  156. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +2 -2
  157. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -2
  158. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -2
  159. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  161. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  163. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +17 -0
  164. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +17 -0
  166. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
  167. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs +70 -0
  168. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.cjs.map +1 -0
  169. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js +70 -0
  170. package/dist/martyrs/src/modules/globals/views/plugins/popup.auth.plugin.js.map +1 -0
  171. package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs +35 -0
  172. package/dist/martyrs/src/modules/icons/entities/IconList.vue.cjs.map +1 -0
  173. package/dist/martyrs/src/modules/icons/entities/IconList.vue.js +35 -0
  174. package/dist/martyrs/src/modules/icons/entities/IconList.vue.js.map +1 -0
  175. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +1 -3
  176. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -1
  177. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +1 -3
  178. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -1
  179. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +1 -3
  180. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -1
  181. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +1 -3
  182. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -1
  183. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs +1 -3
  184. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.cjs.map +1 -1
  185. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js +1 -3
  186. package/dist/martyrs/src/modules/icons/navigation/IconLike.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs +1 -3
  188. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.cjs.map +1 -1
  189. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js +1 -3
  190. package/dist/martyrs/src/modules/icons/navigation/IconMute.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +1 -3
  192. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -1
  193. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +1 -3
  194. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -1
  195. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +21 -20
  196. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -1
  197. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +21 -20
  198. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +1 -3
  200. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -1
  201. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +1 -3
  202. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -1
  203. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +6 -13
  204. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -1
  205. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +6 -13
  206. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs +1 -3
  208. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.cjs.map +1 -1
  209. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js +1 -3
  210. package/dist/martyrs/src/modules/icons/navigation/IconUnMute.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +1 -3
  212. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -1
  213. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +1 -3
  214. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -3
  216. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +41 -43
  218. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs +8 -8
  220. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js +8 -8
  222. package/dist/martyrs/src/modules/notifications/components/blocks/NotificationItem.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +50 -51
  224. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +51 -52
  226. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
  228. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  229. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  230. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  231. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
  232. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  233. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  234. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  235. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  236. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  237. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  238. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  239. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  240. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  241. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  242. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  243. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
  244. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  245. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  246. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  247. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  248. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  249. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +7 -4
  250. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  251. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +18 -15
  252. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  253. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  254. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  255. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  256. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  257. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +2 -2
  258. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  259. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +7 -2
  260. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  261. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +8 -3
  262. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +11 -12
  264. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  265. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +12 -13
  266. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +33 -24
  268. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +36 -27
  270. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +4 -4
  272. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +4 -4
  274. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +7 -5
  276. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  277. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +7 -5
  278. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  280. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  281. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
  282. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
  283. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +2 -2
  284. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +2 -2
  285. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  286. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  287. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +58 -41
  288. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  289. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +60 -43
  290. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +105 -85
  292. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  293. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +107 -87
  294. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +2 -2
  296. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  297. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +2 -2
  298. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  299. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
  300. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
  301. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +145 -0
  302. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -0
  303. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +145 -0
  304. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -0
  305. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  306. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  307. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +46 -31
  308. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -1
  309. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +50 -35
  310. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +43 -0
  312. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -0
  313. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +43 -0
  314. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -0
  315. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +131 -0
  316. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -0
  317. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +131 -0
  318. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -0
  319. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  320. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  321. package/dist/martyrs/src/modules/products/products.client.cjs +3 -3
  322. package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
  323. package/dist/martyrs/src/modules/products/products.client.js +3 -3
  324. package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
  325. package/dist/martyrs/src/modules/products/store/products.cjs +4 -0
  326. package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
  327. package/dist/martyrs/src/modules/products/store/products.js +4 -0
  328. package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
  329. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -1
  330. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  331. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
  332. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  333. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  334. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  335. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  336. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  337. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +2 -2
  338. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  339. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  340. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  341. package/dist/martyrs.cjs.js +1 -1
  342. package/dist/martyrs.css +1 -1
  343. package/dist/martyrs.es.js +1 -1
  344. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  345. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  346. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  347. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  348. package/dist/organizations.server.cjs +1 -1
  349. package/dist/organizations.server.js +1 -1
  350. package/dist/products.server.cjs +111 -34
  351. package/dist/products.server.js +111 -34
  352. package/dist/style.css +196 -170
  353. package/package.json +1 -1
  354. package/src/.martyrs/chunks.json +325 -0
  355. package/src/.martyrs/filemap.json +6802 -0
  356. package/src/.martyrs/semantic-analysis.json +307 -0
  357. package/src/.martyrs/toc.json +14 -0
  358. package/src/builder/rspack/rspack.config.api.js +8 -11
  359. package/src/components/Button/Button.vue +2 -2
  360. package/src/components/Checkbox/Checkbox.vue +28 -16
  361. package/src/components/Chips/Chips.vue +4 -4
  362. package/src/components/Feed/Carousel.vue +72 -0
  363. package/src/components/Feed/Feed.vue +2 -2
  364. package/src/components/Field/Field.vue +1 -0
  365. package/src/components/PhotoViewer/PhotoViewer.vue +307 -220
  366. package/src/components/Radio/Radio.vue +2 -10
  367. package/src/components/Skeleton/Skeleton.vue +9 -12
  368. package/src/components/Slider/Slider.vue +220 -100
  369. package/src/components/Status/Status.vue +0 -1
  370. package/src/components/Tooltip/Tooltip.vue +2 -2
  371. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  372. package/src/modules/auth/views/components/pages/ProfileEdit.old.vue +189 -0
  373. package/src/modules/auth/views/components/pages/ProfileEdit.vue +19 -182
  374. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +72 -0
  375. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +110 -0
  376. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +28 -0
  377. package/src/modules/auth/views/router/users.js +23 -12
  378. package/src/modules/community/components/blocks/FooterBlogpost.vue +3 -3
  379. package/src/modules/community/components/pages/BlogPost.vue +2 -1
  380. package/src/modules/community/components/sections/Comment.vue +161 -57
  381. package/src/modules/community/components/sections/Comments.vue +120 -63
  382. package/src/modules/community/components/sections/HotPosts.vue +7 -7
  383. package/src/modules/events/components/sections/EventsHot.vue +26 -33
  384. package/src/modules/globals/controllers/classes/abac/abac.core.js +3 -1
  385. package/src/modules/globals/controllers/classes/abac/abac.fields.js +126 -42
  386. package/src/modules/globals/controllers/classes/abac/v2/abac-core-fixed.js +313 -0
  387. package/src/modules/globals/controllers/classes/abac/v2/abac-express-fixed.js +276 -0
  388. package/src/modules/globals/controllers/classes/abac/v2/abac-fields-fixed.js +422 -0
  389. package/src/modules/globals/controllers/classes/abac/v2/abac-main-fixed.js +295 -0
  390. package/src/modules/globals/controllers/classes/abac/v2/abac-policies-fixed.js +316 -0
  391. package/src/modules/globals/controllers/classes/abac/v2/abac-ws-fixed.js +237 -0
  392. package/src/modules/globals/globals.client.js +2 -0
  393. package/src/modules/globals/views/components/blocks/CardFooter.vue +3 -3
  394. package/src/modules/globals/views/components/blocks/CardHeader.vue +1 -1
  395. package/src/modules/globals/views/components/blocks/PopupAuth.vue +66 -0
  396. package/src/modules/globals/views/mixins/mixins.js +37 -17
  397. package/src/modules/globals/views/plugins/popup.auth.plugin.js +77 -0
  398. package/src/modules/icons/entities/IconList.vue +14 -0
  399. package/src/modules/icons/navigation/IconCheck.vue +1 -3
  400. package/src/modules/icons/navigation/IconDoubleCheck.vue +1 -3
  401. package/src/modules/icons/navigation/IconLike.vue +1 -3
  402. package/src/modules/icons/navigation/IconMute.vue +1 -3
  403. package/src/modules/icons/navigation/IconPause.vue +1 -3
  404. package/src/modules/icons/navigation/IconPlay.vue +12 -15
  405. package/src/modules/icons/navigation/IconRefresh.vue +1 -3
  406. package/src/modules/icons/navigation/IconShuffle.vue +11 -26
  407. package/src/modules/icons/navigation/IconUnMute.vue +1 -3
  408. package/src/modules/icons/navigation/IconVolume.vue +1 -3
  409. package/src/modules/icons/pages/IconsPage.vue +0 -2
  410. package/src/modules/music/components/pages/AlbumDetail.vue +2 -2
  411. package/src/modules/music/components/pages/PlaylistDetail.vue +2 -2
  412. package/src/modules/music/components/pages/TrackDetail.vue +1 -1
  413. package/src/modules/music/components/player/MusicPlayer.vue +2 -2
  414. package/src/modules/notifications/components/blocks/NotificationItem.vue +6 -51
  415. package/src/modules/notifications/components/elements/NotificationBadge.vue +53 -97
  416. package/src/modules/organizations/configs/navigation.organization.config.js +8 -4
  417. package/src/modules/products/components/blocks/CardProduct.vue +8 -2
  418. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -4
  419. package/src/modules/products/components/blocks/ProductImages.vue +32 -23
  420. package/src/modules/products/components/blocks/ProductVariants.vue +6 -4
  421. package/src/modules/products/components/elements/Price.vue +3 -3
  422. package/src/modules/products/components/pages/Product.vue +32 -26
  423. package/src/modules/products/components/pages/ProductEdit.vue +95 -72
  424. package/src/modules/products/components/sections/EditRecommended.vue +131 -0
  425. package/src/modules/products/components/sections/ProductConfigurator.vue +35 -21
  426. package/src/modules/products/components/sections/ProductsPopular.vue +44 -0
  427. package/src/modules/products/components/sections/ProductsRecommended.vue +134 -0
  428. package/src/modules/products/controllers/configs/products.lookup.config.js +20 -15
  429. package/src/modules/products/controllers/products.controller.js +7 -22
  430. package/src/modules/products/models/category.model.js +28 -1
  431. package/src/modules/products/models/leftover.model.js +32 -0
  432. package/src/modules/products/models/product.model.js +37 -1
  433. package/src/modules/products/models/variant.model.js +35 -0
  434. package/src/modules/products/products.client.js +3 -3
  435. package/src/modules/products/routes/products.routes.js +1 -0
  436. package/src/modules/products/store/products.js +4 -0
  437. package/src/styles/base/all.scss +0 -38
  438. package/src/styles/base/shadow_transitions_hover_refactor.scss +20 -51
  439. package/src/styles/config.scss +51 -1
  440. package/dist/main-C75EcBpE.cjs +0 -11
  441. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  442. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +0 -1
  443. package/dist/martyrs/src/components/Slider/Slider.native.vue.cjs.map +0 -1
  444. package/dist/martyrs/src/components/Slider/Slider.native.vue.js.map +0 -1
  445. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs +0 -2
  446. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.cjs.map +0 -1
  447. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js +0 -2
  448. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue2.js.map +0 -1
  449. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +0 -34
  450. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +0 -1
  451. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +0 -34
  452. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +0 -1
  453. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +0 -124
  454. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +0 -1
  455. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +0 -124
  456. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +0 -1
  457. package/src/components/Slider/Slider.native.vue +0 -313
  458. package/src/modules/products/components/sections/PopularProducts.vue +0 -156
@@ -1,243 +1,330 @@
1
- <template>
2
- <div class="photo-container" @wheel="handleWheel" @mousedown="startDrag" @touchstart="handleTouchStart" @touchmove="handleTouchMove" @touchend="handleTouchEnd">
3
- <img loading="lazy" :src="photoUrl" :style="imgStyle" ref="image" @load="initialize" />
4
- </div>
5
- </template>
6
1
  <script setup>
7
- import { ref, reactive, computed, onMounted, watch } from 'vue';
8
- const props = defineProps({
9
- photoUrl: String,
10
- show: Boolean,
11
- });
12
- const scale = ref(1);
13
- const position = reactive({ x: 0, y: 0 });
14
- const dragging = ref(false);
15
- const startPosition = reactive({ x: 0, y: 0 });
16
- const startScale = ref(1);
17
- const startDistance = ref(0);
18
- const image = ref(null);
19
- const container = ref(null);
20
-
21
- const imgStyle = computed(() => ({
22
- transform: `scale(${scale.value}) translate(${position.x}px, ${position.y}px)`,
23
- }));
24
-
25
- // Наблюдаем за изменением масштаба, чтобы ограничивать позицию
26
- watch(scale, () => {
27
- constrainPosition();
28
- });
29
-
30
- const getImageDimensions = () => {
31
- if (!image.value) return { width: 0, height: 0 };
32
-
33
- // Используем естественные размеры изображения
34
- const imgWidth = image.value.naturalWidth;
35
- const imgHeight = image.value.naturalHeight;
36
-
37
- // Получаем размеры контейнера
38
- const containerRect = image.value.parentElement?.getBoundingClientRect();
39
- if (!containerRect) return { width: 0, height: 0 };
40
-
41
- const containerWidth = containerRect.width;
42
- const containerHeight = containerRect.height;
43
-
44
- // Определяем, как изображение вписывается в контейнер (с учетом object-fit: scale-down)
45
- let renderedWidth, renderedHeight;
46
-
47
- if (imgWidth > containerWidth || imgHeight > containerHeight) {
48
- const ratioX = containerWidth / imgWidth;
49
- const ratioY = containerHeight / imgHeight;
50
- const ratio = Math.min(ratioX, ratioY);
51
-
52
- renderedWidth = imgWidth * ratio;
53
- renderedHeight = imgHeight * ratio;
54
- } else {
55
- renderedWidth = imgWidth;
56
- renderedHeight = imgHeight;
57
- }
58
-
59
- return {
60
- renderedWidth,
61
- renderedHeight,
62
- containerWidth,
63
- containerHeight
2
+ import { ref, computed, onMounted, onBeforeUnmount, watch } from 'vue';
3
+
4
+ import IconChevronLeft from '@martyrs/src/modules/icons/navigation/IconChevronLeft.vue';
5
+ import IconChevronRight from '@martyrs/src/modules/icons/navigation/IconChevronRight.vue';
6
+
7
+ const props = defineProps({
8
+ photoUrl: String,
9
+ photos: Array,
10
+ initialIndex: Number,
11
+ show: Boolean,
12
+ });
13
+
14
+ const currentIndex = ref(0);
15
+ const translateX = ref(0);
16
+ const isDragging = ref(false);
17
+ const scale = ref(1);
18
+ const pos = ref({ x: 0, y: 0 });
19
+ const image = ref(null);
20
+ const thumbnailsRef = ref(null);
21
+
22
+ let startX = 0, startDist = 0, startScale = 1, dragX = 0, wheelTimer, dragTimer;
23
+
24
+ const photos = computed(() => props.photos?.length ? props.photos : props.photoUrl ? [props.photoUrl] : []);
25
+
26
+ const sliderStyle = computed(() => ({
27
+ transform: `translate3d(${translateX.value}px, 0, 0)`,
28
+ transition: isDragging.value ? 'none' : 'transform 0.3s',
29
+ backfaceVisibility: 'hidden'
30
+ }));
31
+
32
+ const imgStyle = computed(() => ({
33
+ transform: `scale3d(${scale.value}, ${scale.value}, 1) translate3d(${pos.value.x}px, ${pos.value.y}px, 0)`,
34
+ backfaceVisibility: 'hidden'
35
+ }));
36
+
37
+ const reset = () => {
38
+ scale.value = 1;
39
+ pos.value = { x: 0, y: 0 };
64
40
  };
65
- };
66
-
67
- const handleWheel = (event) => {
68
- event.preventDefault();
69
-
70
- const delta = event.deltaY > 0 ? -0.1 : 0.1;
71
- const newScale = Math.min(Math.max(1, scale.value + delta), 3);
72
-
73
- // Рассчитываем позицию курсора относительно центра изображения
74
- const rect = image.value.getBoundingClientRect();
75
- const mouseX = event.clientX - rect.left - rect.width / 2;
76
- const mouseY = event.clientY - rect.top - rect.height / 2;
77
-
78
- // Сохраняем соотношение позиции курсора к изображению при масштабировании
79
- const scaleChange = newScale / scale.value;
80
-
81
- // Обновляем позицию так, чтобы точка под курсором оставалась на месте
82
- position.x = position.x - (mouseX / scale.value) * (scaleChange - 1);
83
- position.y = position.y - (mouseY / scale.value) * (scaleChange - 1);
84
-
85
- // Обновляем масштаб
86
- scale.value = newScale;
87
-
88
- // Ограничиваем позицию после обновления масштаба
89
- constrainPosition();
90
- };
91
-
92
- const startDrag = (event) => {
93
- event.preventDefault();
94
- if (scale.value <= 1) return; // Не позволяем перетаскивать при масштабе 1
95
-
96
- dragging.value = true;
97
- startPosition.x = event.type === 'mousedown' ? event.clientX : event.touches[0].clientX;
98
- startPosition.y = event.type === 'mousedown' ? event.clientY : event.touches[0].clientY;
99
-
100
- const move = (moveEvent) => {
101
- if (dragging.value) {
102
- const currentX = moveEvent.type === 'mousemove' ? moveEvent.clientX : moveEvent.touches[0].clientX;
103
- const currentY = moveEvent.type === 'mousemove' ? moveEvent.clientY : moveEvent.touches[0].clientY;
104
-
105
- const deltaX = (currentX - startPosition.x) / scale.value;
106
- const deltaY = (currentY - startPosition.y) / scale.value;
107
-
108
- position.x += deltaX;
109
- position.y += deltaY;
110
-
111
- // Ограничиваем позицию после перемещения
112
- constrainPosition();
113
-
114
- startPosition.x = currentX;
115
- startPosition.y = currentY;
41
+
42
+ const goTo = (index) => {
43
+ currentIndex.value = index;
44
+ translateX.value = -index * window.innerWidth;
45
+ reset();
46
+ };
47
+
48
+ const jumpTo = (index) => {
49
+ isDragging.value = true;
50
+ goTo(index);
51
+ requestAnimationFrame(() => isDragging.value = false);
52
+ };
53
+
54
+ const scrollToThumb = (el) => {
55
+ if (el && thumbnailsRef.value) {
56
+ const container = thumbnailsRef.value;
57
+ const thumb = el;
58
+ const left = thumb.offsetLeft - container.offsetWidth / 2 + thumb.offsetWidth / 2;
59
+ container.scrollTo({ left, behavior: 'smooth' });
116
60
  }
117
61
  };
118
-
119
- const endDrag = () => {
120
- dragging.value = false;
121
- document.removeEventListener('mousemove', move);
122
- document.removeEventListener('mouseup', endDrag);
123
- document.removeEventListener('touchmove', move);
124
- document.removeEventListener('touchend', endDrag);
62
+
63
+ const getXY = (e) => {
64
+ const t = e.touches?.[0] || e;
65
+ return [t.clientX, t.clientY];
125
66
  };
126
-
127
- document.addEventListener('mousemove', move);
128
- document.addEventListener('mouseup', endDrag);
129
- document.addEventListener('touchmove', move);
130
- document.addEventListener('touchend', endDrag);
131
- };
132
-
133
- const handleTouchStart = (event) => {
134
- if (event.touches.length === 2) {
135
- const touch1 = event.touches[0];
136
- const touch2 = event.touches[1];
137
- const distanceX = Math.abs(touch1.clientX - touch2.clientX);
138
- const distanceY = Math.abs(touch1.clientY - touch2.clientY);
139
- startDistance.value = Math.sqrt(distanceX ** 2 + distanceY ** 2);
140
- startScale.value = scale.value;
141
- } else {
142
- startDrag(event);
143
- }
144
- };
145
-
146
- const handleTouchMove = (event) => {
147
- if (event.touches.length === 2) {
148
- event.preventDefault();
149
- const touch1 = event.touches[0];
150
- const touch2 = event.touches[1];
151
- const distanceX = Math.abs(touch1.clientX - touch2.clientX);
152
- const distanceY = Math.abs(touch1.clientY - touch2.clientY);
153
- const newDistance = Math.sqrt(distanceX ** 2 + distanceY ** 2);
154
- const scaleFactor = newDistance / startDistance.value;
67
+
68
+ const constrain = () => {
69
+ if (scale.value <= 1 || !image.value) return reset();
155
70
 
156
- // Получаем центр между двумя касаниями
157
- const centerX = (touch1.clientX + touch2.clientX) / 2;
158
- const centerY = (touch1.clientY + touch2.clientY) / 2;
71
+ const { naturalWidth: nw, naturalHeight: nh } = image.value;
72
+ const [cw, ch] = [window.innerWidth, window.innerHeight];
73
+ const r = Math.min(cw / nw, ch / nh, 1);
159
74
 
160
- // Получаем координаты центра касания относительно изображения
161
- const rect = image.value.getBoundingClientRect();
162
- const touchCenterX = centerX - rect.left - rect.width / 2;
163
- const touchCenterY = centerY - rect.top - rect.height / 2;
75
+ const maxX = Math.max(0, (nw * r * scale.value - cw) / 2 / scale.value);
76
+ const maxY = Math.max(0, (nh * r * scale.value - ch) / 2 / scale.value);
164
77
 
165
- const newScale = Math.min(Math.max(1, startScale.value * scaleFactor), 3);
166
- const scaleChange = newScale / scale.value;
78
+ pos.value.x = Math.max(-maxX, Math.min(maxX, pos.value.x));
79
+ pos.value.y = Math.max(-maxY, Math.min(maxY, pos.value.y));
80
+ };
81
+
82
+ const zoom = (newScale, fx, fy) => {
83
+ if (!image.value) return;
167
84
 
168
- // Обновляем позицию, чтобы центр касания оставался на месте
169
- position.x = position.x - (touchCenterX / scale.value) * (scaleChange - 1);
170
- position.y = position.y - (touchCenterY / scale.value) * (scaleChange - 1);
85
+ newScale = Math.max(1, Math.min(3, newScale));
86
+ const rect = image.value.getBoundingClientRect();
87
+ const [mx, my] = [fx - rect.left - rect.width / 2, fy - rect.top - rect.height / 2];
88
+ const change = newScale / scale.value;
171
89
 
90
+ pos.value.x -= (mx / scale.value) * (change - 1);
91
+ pos.value.y -= (my / scale.value) * (change - 1);
172
92
  scale.value = newScale;
173
- constrainPosition();
174
- }
175
- };
176
-
177
- const handleTouchEnd = (event) => {
178
- if (event.touches.length === 0) {
179
- startDistance.value = 0;
180
- }
181
- };
182
-
183
- const initialize = () => {
184
- scale.value = 1;
185
- position.x = 0;
186
- position.y = 0;
187
- };
188
-
189
- const constrainPosition = () => {
190
- // Если масштаб 1, сбрасываем позицию в центр
191
- if (scale.value <= 1) {
192
- position.x = 0;
193
- position.y = 0;
194
- return;
195
- }
196
-
197
- const { renderedWidth, renderedHeight, containerWidth, containerHeight } = getImageDimensions();
198
-
199
- // Вычисляем максимальное смещение
200
- const scaledWidth = renderedWidth * scale.value;
201
- const scaledHeight = renderedHeight * scale.value;
202
-
203
- // Отступ от края изображения до края контейнера при текущем масштабе
204
- const horizontalOffset = (scaledWidth - containerWidth) / 2 / scale.value;
205
- const verticalOffset = (scaledHeight - containerHeight) / 2 / scale.value;
206
-
207
- // Ограничиваем смещение, чтобы изображение не выходило за пределы контейнера
208
- if (horizontalOffset > 0) {
209
- position.x = Math.max(-horizontalOffset, Math.min(horizontalOffset, position.x));
210
- } else {
211
- position.x = 0;
212
- }
213
-
214
- if (verticalOffset > 0) {
215
- position.y = Math.max(-verticalOffset, Math.min(verticalOffset, position.y));
216
- } else {
217
- position.y = 0;
218
- }
219
- };
220
-
221
- onMounted(() => {
222
- window.addEventListener('resize', () => {
223
- constrainPosition();
93
+ constrain();
94
+ };
95
+
96
+ const startDrag = (e) => {
97
+ if (e.type === 'mousedown') e.preventDefault();
98
+ isDragging.value = true;
99
+ let [x, y] = getXY(e);
100
+
101
+ const handleMove = scale.value > 1
102
+ ? (e) => {
103
+ if (!isDragging.value) return;
104
+ if (e.type === 'touchmove') e.preventDefault();
105
+ const [cx, cy] = getXY(e);
106
+ pos.value.x += (cx - x) / scale.value;
107
+ pos.value.y += (cy - y) / scale.value;
108
+ constrain();
109
+ [x, y] = [cx, cy];
110
+ }
111
+ : (e) => {
112
+ if (!isDragging.value) return;
113
+ if (e.type === 'touchmove') e.preventDefault();
114
+ dragX = getXY(e)[0] - startX;
115
+ translateX.value = dragX - currentIndex.value * window.innerWidth;
116
+ };
117
+
118
+ const handleEnd = () => {
119
+ isDragging.value = false;
120
+ if (scale.value <= 1 && Math.abs(dragX) > window.innerWidth / 4) {
121
+ goTo(Math.max(0, Math.min(photos.value.length - 1, currentIndex.value + (dragX > 0 ? -1 : 1))));
122
+ } else if (scale.value <= 1) {
123
+ goTo(currentIndex.value);
124
+ }
125
+ dragX = 0;
126
+ document.removeEventListener('mousemove', handleMove, { passive: true });
127
+ document.removeEventListener('mouseup', handleEnd, { passive: true });
128
+ document.removeEventListener('touchmove', handleMove, { passive: false });
129
+ document.removeEventListener('touchend', handleEnd, { passive: true });
130
+ };
131
+
132
+ if (scale.value <= 1) startX = x;
133
+ document.addEventListener('mousemove', handleMove, { passive: true });
134
+ document.addEventListener('mouseup', handleEnd, { passive: true });
135
+ document.addEventListener('touchmove', handleMove, { passive: false });
136
+ document.addEventListener('touchend', handleEnd, { passive: true });
137
+ };
138
+
139
+ const handleTouchStart = (e) => {
140
+ if (e.touches.length === 2) {
141
+ clearTimeout(dragTimer);
142
+ const [t1, t2] = e.touches;
143
+ startDist = Math.hypot(t1.clientX - t2.clientX, t1.clientY - t2.clientY);
144
+ startScale = scale.value;
145
+ } else {
146
+ dragTimer = setTimeout(() => startDrag(e), 50);
147
+ }
148
+ };
149
+
150
+ const handleTouchMove = (e) => {
151
+ if (e.touches.length === 2 && !isDragging.value) {
152
+ clearTimeout(dragTimer);
153
+ e.preventDefault();
154
+ const [t1, t2] = e.touches;
155
+ const dist = Math.hypot(t1.clientX - t2.clientX, t1.clientY - t2.clientY);
156
+ zoom(startScale * (dist / startDist), (t1.clientX + t2.clientX) / 2, (t1.clientY + t2.clientY) / 2);
157
+ }
158
+ };
159
+
160
+ const handleTouchEnd = () => {
161
+ clearTimeout(dragTimer);
162
+ startDist = 0;
163
+ };
164
+
165
+ const handleWheel = (e) => {
166
+ clearTimeout(wheelTimer);
167
+ wheelTimer = setTimeout(() => zoom(scale.value + (e.deltaY > 0 ? -0.1 : 0.1), e.clientX, e.clientY), 10);
168
+ };
169
+
170
+ const handleKey = (e) => {
171
+ const dir = { ArrowLeft: -1, ArrowRight: 1 }[e.key];
172
+ if (dir) goTo(Math.max(0, Math.min(photos.value.length - 1, currentIndex.value + dir)));
173
+ };
174
+
175
+ watch(() => props.initialIndex, (i) => i != null && jumpTo(i));
176
+
177
+ onMounted(() => {
178
+ window.addEventListener('keydown', handleKey, { passive: true });
179
+ jumpTo(props.initialIndex || 0);
180
+ });
181
+
182
+ onBeforeUnmount(() => {
183
+ window.removeEventListener('keydown', handleKey);
184
+ clearTimeout(wheelTimer);
185
+ clearTimeout(dragTimer);
224
186
  });
225
- });
226
187
  </script>
227
- <style>
228
- .photo-container {
188
+
189
+ <template>
190
+ <div class="photo-viewer" @wheel.prevent="handleWheel">
191
+ <div
192
+ class="slider-track"
193
+ :style="sliderStyle"
194
+ @mousedown="startDrag"
195
+ @touchstart="handleTouchStart"
196
+ @touchmove="handleTouchMove"
197
+ @touchend="handleTouchEnd"
198
+ >
199
+ <div
200
+ v-for="(photo, index) in photos"
201
+ :key="index"
202
+ class="slide"
203
+ >
204
+ <img
205
+ :src="photo"
206
+ :style="index === currentIndex ? imgStyle : null"
207
+ :ref="el => index === currentIndex && (image = el)"
208
+ @load="() => index === currentIndex && reset()"
209
+ />
210
+ </div>
211
+ </div>
212
+
213
+ <template
214
+ v-if="photos.length > 1"
215
+ >
216
+
217
+ <span class="pos-absolute pos-l-small bs-small pos-t-small radius-small pd-thin bg-white t-black t-medium">
218
+ {{ currentIndex + 1 }} / {{ photos.length }}
219
+ </span>
220
+
221
+ <button
222
+ v-if="currentIndex > 0"
223
+ @click="goTo(currentIndex - 1)"
224
+ class="cursor-pointer hover-scale-1 bs-small pos-absolute pos-t-50 pos-l-small bg-white radius-small pd-thin"
225
+ >
226
+ <IconChevronLeft fill="rgb(var(--black)" class="i-medium"/>
227
+ </button>
228
+
229
+ <button
230
+ v-if="currentIndex < photos.length - 1"
231
+ @click="goTo(currentIndex + 1)"
232
+ class="cursor-pointer hover-scale-1 bs-small pos-absolute pos-t-50 pos-r-small bg-white radius-small pd-thin"
233
+ >
234
+ <IconChevronRight fill="rgb(var(--black)" class="i-medium"/>
235
+ </button>
236
+
237
+ <div class="pos-absolute pos-b-small radius-small pd-thin bg-light thumbnails-container">
238
+ <div class="thumbnails" ref="thumbnailsRef">
239
+ <img
240
+ v-for="(photo, i) in photos"
241
+ :key="i"
242
+ :src="photo"
243
+ @click="jumpTo(i)"
244
+ :class="['thumbnail', { active: i === currentIndex }]"
245
+ :ref="el => i === currentIndex && scrollToThumb(el)"
246
+ />
247
+ </div>
248
+ </div>
249
+ </template>
250
+
251
+ </div>
252
+ </template>
253
+
254
+ <style scoped>
255
+ .photo-viewer {
229
256
  width: 100%;
230
257
  height: 100%;
231
- background: black;
232
- overflow: hidden;
233
258
  position: relative;
259
+ background: #fff;
260
+ overflow: hidden;
261
+ user-select: none;
262
+ touch-action: none;
263
+ }
264
+
265
+ .slider-track {
266
+ display: flex;
267
+ height: 100%;
234
268
  cursor: grab;
269
+ backface-visibility: hidden;
235
270
  }
236
- .photo-container img {
271
+
272
+ .slider-track:active {
273
+ cursor: grabbing;
274
+ }
275
+
276
+ .slide {
277
+ flex: 0 0 100%;
278
+ width: 100%;
279
+ height: 100%;
280
+ overflow: hidden;
281
+ }
282
+
283
+ .slide img {
237
284
  width: 100%;
238
285
  height: 100%;
239
286
  object-fit: scale-down;
240
- transition: transform 0.05s;
241
- transform-origin: center center;
287
+ transform-origin: center;
288
+ pointer-events: none;
289
+ backface-visibility: hidden;
290
+ }
291
+
292
+ .thumbnails-container {
293
+ left: 50%;
294
+ transform: translateX(-50%);
295
+ max-width: 100%;
296
+ z-index: 1;
297
+ }
298
+
299
+ .thumbnails {
300
+ display: flex;
301
+ gap: 0.25rem;
302
+ overflow-x: auto;
303
+ scrollbar-width: none;
304
+ }
305
+
306
+ .thumbnails::-webkit-scrollbar {
307
+ display: none;
308
+ }
309
+
310
+ .thumbnail {
311
+ width: 4rem;
312
+ height: 4rem;
313
+ object-fit: cover;
314
+ cursor: pointer;
315
+ transition: opacity 0.2s;
316
+ border-radius: 0.25rem;
317
+ flex-shrink: 0;
318
+ }
319
+
320
+ .thumbnail.active {
321
+ opacity: 1;
322
+ border: 1px solid rgb(var(--second));
323
+ }
324
+
325
+
326
+ @media (max-width: 768px) {
327
+ .nav-arrow { display: none; }
328
+ .thumbnail { width: 3rem; height: 3rem; }
242
329
  }
243
330
  </style>
@@ -4,7 +4,7 @@
4
4
  <!-- Checkmark -->
5
5
  <!-- ////////////////////////// -->
6
6
  <div
7
- class="cursor-pointer mn-r-thin radius-extra pd-micro h-100 aspect-1x1 pos-relative"
7
+ class="cursor-pointer radius-extra pd-micro h-100 aspect-1x1 pos-relative"
8
8
  :class="{
9
9
  'bg-main': radio === value,
10
10
  }"
@@ -25,19 +25,11 @@
25
25
 
26
26
  </div>
27
27
  </div>
28
- <!-- <div v-if="radio === value" class="">
29
- <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
30
- <g id="24 / basic / check-mark">
31
- <path id="icon" fill-rule="evenodd" clip-rule="evenodd" d="M7.28033 10.7197L14.25 3.75L15.3107 4.81066L7.28033 12.841L3 8.56066L4.06066 7.5L7.28033 10.7197Z" fill="#000000"/>
32
- </g>
33
- </svg>
34
- </div> -->
35
-
36
28
  <!-- ////////////////////////// -->
37
29
  <!-- Label -->
38
30
  <!-- ////////////////////////// -->
39
31
 
40
- <div v-if="label" class="mn-r-auto t-transp mn-r-small">
32
+ <div v-if="label" class="mn-l-thin mn-r-auto t-transp mn-r-small">
41
33
  <span>{{label}}</span>
42
34
  </div>
43
35
 
@@ -1,10 +1,13 @@
1
1
  <template>
2
- <div class="skeleton-wrapper" :class="{ 'skeleton-wrapper--loading': loading }">
2
+ <div class="w-100 pos-relative" :class="{ 'skeleton-wrapper--loading': loading }">
3
3
  <!-- Используем слот по умолчанию, если он есть -->
4
4
  <slot v-if="hasDefaultSlot && !structure.length"></slot>
5
5
 
6
- <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->
7
- <div v-else-if="structure.length" class="skeleton-structure" :class="{ 'skeleton-structure--horizontal': horizontal }">
6
+ <div
7
+ v-else-if="structure.length"
8
+ class="skeleton-structure"
9
+ :class="{ 'skeleton-structure--horizontal': horizontal }"
10
+ >
8
11
  <div
9
12
  v-for="(item, index) in structure"
10
13
  :key="index"
@@ -12,10 +15,11 @@
12
15
  :class="[
13
16
  `skeleton-item--${item.block}`,
14
17
  `skeleton-item--${item.size || 'medium'}`,
15
- { 'skeleton-item--rounded': item.rounded }
18
+ { 'skeleton-item--rounded': item.rounded },
19
+ item.class
16
20
  ]"
17
21
  :style="item.style"
18
- ></div>
22
+ />
19
23
  </div>
20
24
 
21
25
  <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->
@@ -90,13 +94,6 @@ onMounted(() => {
90
94
  </script>
91
95
 
92
96
  <style scoped>
93
- .skeleton-wrapper {
94
- width: 100%;
95
- position: relative;
96
- background-color: var(--skeleton-card-color);
97
- padding: 1rem;
98
- }
99
-
100
97
  /* Стили для режима загрузки */
101
98
  .skeleton-wrapper--loading ::v-deep(*) {
102
99
  color: transparent !important;