@ozdao/martyrs 0.2.541 → 0.2.543

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 (324) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +3 -6
  4. package/dist/_virtual/index2.cjs.map +1 -1
  5. package/dist/_virtual/index2.js +2 -5
  6. package/dist/_virtual/index2.js.map +1 -1
  7. package/dist/main-BNdv8Ji-.cjs +11 -0
  8. package/dist/{main-BpBtIUcJ.js → main-DUwlesGq.js} +3135 -3555
  9. package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
  10. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
  11. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  12. package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
  13. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +93 -0
  14. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  15. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +94 -1
  16. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  17. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +0 -93
  18. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  19. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -94
  20. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  21. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -2
  22. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
  23. package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -3
  24. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  25. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +5 -3
  26. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  27. package/dist/martyrs/src/components/Feed/Feed.vue.js +5 -3
  28. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  30. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  31. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.cjs +30 -21
  32. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.cjs.map +1 -1
  33. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +32 -23
  34. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
  35. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.cjs +235 -0
  36. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.cjs.map +1 -0
  37. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.js +235 -0
  38. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.js.map +1 -0
  39. package/dist/martyrs/src/components/Marquee/Marquee.vue.cjs +17 -8
  40. package/dist/martyrs/src/components/Marquee/Marquee.vue.cjs.map +1 -1
  41. package/dist/martyrs/src/components/Marquee/Marquee.vue.js +17 -8
  42. package/dist/martyrs/src/components/Marquee/Marquee.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/Tab/Tab.vue.cjs +3 -1
  44. package/dist/martyrs/src/components/Tab/Tab.vue.cjs.map +1 -1
  45. package/dist/martyrs/src/components/Tab/Tab.vue.js +4 -2
  46. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -1
  47. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs +219 -0
  48. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs.map +1 -0
  49. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js +219 -0
  50. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js.map +1 -0
  51. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +2 -2
  60. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +4 -4
  61. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  62. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  64. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  69. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +2 -7
  70. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  71. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +2 -7
  72. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  73. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +2 -13
  74. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  75. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +2 -13
  76. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  77. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  79. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -4
  80. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
  81. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -4
  82. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
  85. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +3 -3
  90. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +22 -22
  91. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  93. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  95. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  96. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  97. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  98. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  99. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  100. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  101. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  103. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  105. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  107. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue2.cjs → Filters.vue.cjs} +2 -2
  112. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue2.js.map → Filters.vue.cjs.map} +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue2.js → Filters.vue.js} +2 -2
  114. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue.js.map +1 -0
  115. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -0
  116. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  118. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
  119. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  121. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  123. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  125. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  127. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  129. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  131. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  135. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  137. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  138. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +11 -11
  139. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  140. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +12 -12
  141. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +2 -2
  142. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +16 -16
  143. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  145. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  146. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +16 -16
  147. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  149. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  151. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  153. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  155. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  157. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  159. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  161. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  163. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  165. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  167. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  169. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  170. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  171. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  173. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  174. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  175. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  177. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  179. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  180. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  181. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +3 -4
  182. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +3 -4
  184. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  186. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  187. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  189. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +2 -2
  190. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +20 -20
  191. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  192. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  193. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +3 -4
  194. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  195. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +3 -4
  196. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +4 -5
  198. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
  199. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +4 -5
  200. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +3 -4
  202. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  203. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +3 -4
  204. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  206. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +6 -6
  207. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  209. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  211. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  213. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  215. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  217. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  218. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  219. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  220. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  222. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +5 -2
  224. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +5 -2
  226. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +49 -41
  228. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +54 -46
  230. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  233. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  234. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  235. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +5 -5
  236. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  238. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  240. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  241. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  242. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  243. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  244. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  245. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  246. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  247. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  248. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  249. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  250. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  251. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  252. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  253. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  254. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  255. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  256. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  257. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  258. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +11 -11
  259. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  260. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  261. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  262. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  263. package/dist/martyrs.cjs.js +1 -1
  264. package/dist/martyrs.css +1 -1
  265. package/dist/martyrs.es.js +1 -1
  266. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs +1 -1
  267. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js +1 -1
  268. package/dist/style.css +133 -133
  269. package/dist/{web-DsdyXC8n.js → web-C6njYH1C.js} +1 -1
  270. package/dist/{web-C9bVm6Nw.cjs → web-CVdyxtLD.cjs} +1 -1
  271. package/package.json +1 -1
  272. package/src/components/Feed/Carousel.vue +3 -0
  273. package/src/components/Feed/Feed.vue +3 -0
  274. package/src/components/FieldTags/BlockTags.vue +28 -16
  275. package/src/components/FieldTags/FieldTags.vue +327 -508
  276. package/src/components/Marquee/Marquee.vue +25 -14
  277. package/src/components/Tab/Tab.vue +2 -0
  278. package/src/components/UploadImage/UploadImage.vue +192 -18
  279. package/src/modules/community/components/blocks/CardBlogpost.vue +2 -7
  280. package/src/modules/community/components/blocks/FooterBlogpost.vue +2 -13
  281. package/src/modules/community/components/pages/CreateBlogPost.vue +0 -1
  282. package/src/modules/globals/TASK.MD +105 -1
  283. package/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  284. package/src/modules/products/components/blocks/CardCategory.vue +6 -0
  285. package/src/modules/products/components/pages/Categories.vue +4 -1
  286. package/src/modules/products/components/pages/CategoryEdit.vue +53 -39
  287. package/src/modules/products/components/pages/Products.vue +1 -1
  288. package/dist/_virtual/index3.cjs +0 -5
  289. package/dist/_virtual/index3.cjs.map +0 -1
  290. package/dist/_virtual/index3.js +0 -5
  291. package/dist/_virtual/index3.js.map +0 -1
  292. package/dist/main-7IA3UHca.cjs +0 -11
  293. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  294. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +0 -480
  295. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs.map +0 -1
  296. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +0 -480
  297. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js.map +0 -1
  298. package/dist/martyrs/src/components/FieldTags/create-tags.cjs +0 -52
  299. package/dist/martyrs/src/components/FieldTags/create-tags.cjs.map +0 -1
  300. package/dist/martyrs/src/components/FieldTags/create-tags.js +0 -52
  301. package/dist/martyrs/src/components/FieldTags/create-tags.js.map +0 -1
  302. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.cjs +0 -32
  303. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.cjs.map +0 -1
  304. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.js +0 -32
  305. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.js.map +0 -1
  306. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs +0 -329
  307. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs.map +0 -1
  308. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js +0 -329
  309. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js.map +0 -1
  310. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs +0 -100
  311. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +0 -1
  312. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +0 -100
  313. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +0 -1
  314. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +0 -1
  315. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs +0 -39
  316. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs.map +0 -1
  317. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +0 -39
  318. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +0 -1
  319. package/src/components/FieldTags/FieldTagsNew.vue +0 -366
  320. package/src/components/FieldTags/README.md +0 -513
  321. package/src/components/FieldTags/create-tags.js +0 -97
  322. package/src/components/FieldTags/tag-input.vue +0 -55
  323. package/src/components/FieldTags/vue-tags-input.props.js +0 -342
  324. package/src/components/FieldTags/vue-tags-input.scss +0 -149
@@ -31,6 +31,7 @@ const _sfc_main = {
31
31
  const resizeObserver = ref(null);
32
32
  const checkInterval = ref(null);
33
33
  const resizeTimeout = ref(null);
34
+ const previousSize = ref({ width: 0, height: 0 });
34
35
  const widthMin = ref("100%");
35
36
  const widthContainer = ref(0);
36
37
  const widthContent = ref(0);
@@ -85,11 +86,19 @@ const _sfc_main = {
85
86
  if (resizeObserver.value) {
86
87
  resizeObserver.value.disconnect();
87
88
  }
88
- resizeObserver.value = new ResizeObserver(() => {
89
- clearTimeout(resizeTimeout.value);
90
- resizeTimeout.value = setTimeout(() => {
91
- calculateClones();
92
- }, 150);
89
+ resizeObserver.value = new ResizeObserver((entries) => {
90
+ const entry = entries[0];
91
+ const newWidth = entry.contentRect.width;
92
+ const newHeight = entry.contentRect.height;
93
+ const widthChanged = Math.abs(newWidth - previousSize.value.width) > 1;
94
+ const heightChanged = Math.abs(newHeight - previousSize.value.height) > 1;
95
+ if (widthChanged || heightChanged) {
96
+ previousSize.value = { width: newWidth, height: newHeight };
97
+ clearTimeout(resizeTimeout.value);
98
+ resizeTimeout.value = setTimeout(() => {
99
+ calculateClones();
100
+ }, 300);
101
+ }
93
102
  });
94
103
  resizeObserver.value.observe(marqueeOverlayContainer.value);
95
104
  } else {
@@ -123,7 +132,7 @@ const _sfc_main = {
123
132
  "--pauseOnHover": `${props.pauseOnHover ? "paused" : "running"}`,
124
133
  "--pauseOnClick": `${props.pauseOnClick ? "paused" : "running"}`,
125
134
  "--pauseAnimation": `${props.vertical && verticalAnimationPause.value || props.pause ? "paused" : "running"}`,
126
- "--gradient-color": `rgba(${props.gradientColor}, 1), rgba(${props.gradientColor}, 0)`,
135
+ "--gradient-color": props.gradientColor,
127
136
  "--gradient-length": `${gradientLength.value}`,
128
137
  "--min-width": `${widthMin.value}`,
129
138
  "--min-height": `${heightMin.value}`,
@@ -179,9 +188,9 @@ const _sfc_main = {
179
188
  (newVal, oldVal) => {
180
189
  if (newVal !== oldVal) {
181
190
  if (newVal) {
182
- emits("onResume");
183
- } else {
184
191
  emits("onPause");
192
+ } else {
193
+ emits("onResume");
185
194
  }
186
195
  }
187
196
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Marquee.vue.js","sources":["../../../../../src/components/Marquee/Marquee.vue"],"sourcesContent":["<template>\n <div\n v-if=\"ready\"\n class=\"vue3-marquee\"\n :class=\"{ vertical: vertical, horizontal: !vertical }\"\n :style=\"getCurrentStyle\"\n @mouseenter=\"hoverStarted\"\n @mouseleave=\"hoverEnded\"\n @mousedown=\"mouseDown\"\n @mouseup=\"mouseUp\"\n >\n <div\n class=\"transparent-overlay\"\n ref=\"marqueeOverlayContainer\"\n :aria-hidden=\"true\"\n :class=\"{ vertical: vertical, horizontal: !vertical, overlay: gradient }\"\n />\n\n <div \n class=\"marquee\"\n ref=\"marqueeContent\">\n <slot></slot>\n </div>\n\n <div \n class=\"marquee\" \n :aria-hidden=\"true\"\n >\n <slot></slot>\n </div>\n\n <div\n v-for=\"num in cloneAmount\"\n :key=\"num\"\n :aria-hidden=\"true\"\n class=\"marquee cloned\"\n >\n <slot></slot>\n </div\n >\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onBeforeUnmount, computed, watch, nextTick } from 'vue'\n\nconst props = defineProps({\n vertical: { type: Boolean, default: false },\n direction: { type: String, default: 'normal' },\n duration: { type: Number, default: 20 },\n delay: { type: Number, default: 0 },\n loop: { type: Number, default: 0 },\n clone: { type: Boolean, default: false },\n gradient: { type: Boolean, default: false },\n gradientColor: { type: [Array,String], default: () => [255, 255, 255] },\n gradientLength: { type: String },\n pauseOnHover: { type: Boolean, default: false },\n pauseOnClick: { type: Boolean, default: false },\n pause: { type: Boolean, default: false }\n})\n\nconst emits = defineEmits(['onComplete', 'onLoopComplete', 'onPause', 'onResume'])\n\nconst ready = ref(false)\n\nconst cloneAmount = ref(0)\nconst loopCounter = ref(0)\nconst loopInterval = ref(null)\nconst resizeObserver = ref(null)\nconst checkInterval = ref(null)\nconst resizeTimeout = ref(null)\n\nconst widthMin = ref('100%')\nconst widthContainer = ref(0)\nconst widthContent = ref(0)\nconst heightMin = ref('100%')\nconst heightContainer = ref(0)\nconst heightContent = ref(0)\n\nconst gradientLength = ref('200px')\n\nconst verticalAnimationPause = ref(false)\nconst marqueeContent = ref(null)\nconst marqueeOverlayContainer = ref(null)\n\n// Removed ForcesUpdate - no longer needed\n\nconst checkForClone = async () => {\n if (props.vertical) {\n verticalAnimationPause.value = true\n }\n\n await nextTick()\n \n const calculateClones = () => {\n widthMin.value = '0%'\n heightMin.value = '0%'\n\n if (marqueeContent.value !== null && marqueeOverlayContainer.value !== null) {\n if (marqueeContent.value && marqueeOverlayContainer.value) {\n if (\n props.vertical &&\n 'clientHeight' in marqueeContent.value &&\n 'clientHeight' in marqueeOverlayContainer.value\n ) {\n heightContent.value = marqueeContent.value.clientHeight\n heightContainer.value = marqueeOverlayContainer.value.clientHeight\n\n const localCloneAmount = Math.ceil(heightContainer.value / heightContent.value)\n\n cloneAmount.value = isFinite(localCloneAmount) ? localCloneAmount : 0\n\n verticalAnimationPause.value = false\n\n return cloneAmount.value\n } else if (\n !props.vertical &&\n 'clientWidth' in marqueeContent.value &&\n 'clientWidth' in marqueeOverlayContainer.value\n ) {\n widthContent.value = marqueeContent.value.clientWidth\n widthContainer.value = marqueeOverlayContainer.value.clientWidth\n\n const localCloneAmount = Math.ceil(widthContainer.value / widthContent.value)\n\n cloneAmount.value = isFinite(localCloneAmount) ? localCloneAmount : 0\n\n return cloneAmount.value\n } else {\n widthMin.value = '100%'\n heightMin.value = '100%'\n return 0\n }\n } else {\n widthMin.value = '100%'\n heightMin.value = '100%'\n return 0\n }\n } else {\n widthMin.value = '100%'\n heightMin.value = '100%'\n return 0\n }\n }\n \n // Run once immediately\n calculateClones()\n \n // Setup ResizeObserver for efficient resize detection\n if (typeof ResizeObserver !== 'undefined' && marqueeOverlayContainer.value) {\n if (resizeObserver.value) {\n resizeObserver.value.disconnect()\n }\n \n resizeObserver.value = new ResizeObserver(() => {\n clearTimeout(resizeTimeout.value)\n resizeTimeout.value = setTimeout(() => {\n calculateClones()\n }, 150)\n })\n \n resizeObserver.value.observe(marqueeOverlayContainer.value)\n } else {\n // Fallback for browsers without ResizeObserver\n // Only check once after a delay for initial setup\n if (checkInterval.value) {\n clearInterval(checkInterval.value)\n }\n \n checkInterval.value = setTimeout(() => {\n calculateClones()\n checkInterval.value = null\n }, 500)\n }\n}\n\nconst hoverStarted = () => { if (props.pauseOnHover) emits('onPause') }\nconst hoverEnded = () => { if (props.pauseOnHover) emits('onResume') }\nconst mouseDown = () => { if (props.pauseOnClick) emits('onPause') }\nconst mouseUp = () => { if (props.pauseOnClick) emits('onResume') }\n\nconst getCurrentStyle = computed(() => {\n return {\n '--loops': `${props.loop === 0 ? 'infinite' : props.loop}`,\n '--duration': `${props.duration}s`,\n '--delay': `${props.delay}s`,\n '--direction': `${props.direction}`,\n '--pauseOnHover': `${props.pauseOnHover ? 'paused' : 'running'}`,\n '--pauseOnClick': `${props.pauseOnClick ? 'paused' : 'running'}`,\n '--pauseAnimation': `${(props.vertical && verticalAnimationPause.value) || props.pause ? 'paused' : 'running'}`,\n '--gradient-color': `rgba(${props.gradientColor}, 1), rgba(${props.gradientColor}, 0)`,\n '--gradient-length': `${gradientLength.value}`,\n '--min-width': `${widthMin.value}`,\n '--min-height': `${heightMin.value}`,\n '--orientation': props.vertical ? 'scrollY' : 'scrollX'\n }\n})\n\nconst setupMarquee = async () => {\n if (props.vertical) {\n heightMin.value = '100%'\n widthMin.value = 'auto'\n } else {\n heightMin.value = 'auto'\n widthMin.value = '100%'\n }\n\n if (props.gradient && props.gradientLength) {\n gradientLength.value = props.gradientLength\n }\n\n if (props.clone) {\n await checkForClone()\n ready.value = true\n } else {\n ready.value = true\n }\n}\n\nonMounted(async () => {\n setupMarquee()\n\n loopInterval.value = setInterval(() => {\n loopCounter.value++\n\n if (props.loop !== 0 && loopCounter.value === props.loop) {\n emits('onComplete')\n clearInterval(loopInterval.value)\n }\n\n emits('onLoopComplete')\n }, props.duration * 1000)\n})\n\nonBeforeUnmount(() => {\n clearInterval(loopInterval.value)\n \n if (resizeObserver.value) {\n resizeObserver.value.disconnect()\n resizeObserver.value = null\n }\n \n if (checkInterval.value) {\n clearInterval(checkInterval.value)\n checkInterval.value = null\n }\n \n if (resizeTimeout.value) {\n clearTimeout(resizeTimeout.value)\n resizeTimeout.value = null\n }\n})\n\n// Removed inefficient watchers - ResizeObserver handles this now\n\nwatch(\n () => props.pause,\n (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal) {\n emits('onResume')\n } else {\n emits('onPause')\n }\n }\n }\n)\n</script>\n\n<style lang=\"scss\">\n.vue3-marquee {\n display: flex !important;\n position: relative;\n\n .marquee {\n flex: 0 0 auto;\n min-width: var(--min-width);\n min-height: var(--min-height);\n z-index: 1;\n will-change: transform;\n transform: translateZ(0);\n backface-visibility: hidden;\n\n animation: var(--orientation) var(--duration) linear var(--delay) var(--loops);\n animation-play-state: var(--pauseAnimation);\n animation-direction: var(--direction);\n contain: layout style paint;\n }\n\n .overlay {\n position: absolute;\n width: 100%;\n height: 100%;\n\n &:before {\n left: 0;\n top: 0;\n }\n\n &:before, &:after {\n content: '';\n position: absolute;\n z-index: 2;\n }\n }\n\n .transparent-overlay {\n position: absolute;\n width: 100.5%;\n height: 100.5%;\n }\n\n\n &.horizontal {\n overflow-x: hidden !important;\n overflow-y: hidden !important;\n flex-direction: row !important;\n width: 100%;\n height: max-content;\n\n .marquee {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n .overlay::before,.overlay::after {\n background: linear-gradient(to right, var(--gradient-color));\n height: 100%;\n width: var(--gradient-length);\n }\n\n .overlay::after {\n transform: rotateZ(180deg);\n right: 0;\n top: 0;\n }\n }\n\n &.vertical {\n overflow-y: hidden !important;\n overflow-x: hidden !important;\n flex-direction: column !important;\n height: 100%;\n width: max-content;\n\n .marquee {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .overlay::before, .overlay::after {\n background: linear-gradient(to bottom, var(--gradient-color));\n height: var(--gradient-length);\n width: 100%;\n }\n\n .overlay::after {\n transform: rotateZ(-180deg);\n left: 0;\n bottom: 0;\n }\n }\n\n &:hover {\n div {\n animation-play-state: var(--pauseOnHover);\n }\n }\n\n &:active {\n div {\n animation-play-state: var(--pauseOnClick);\n } \n }\n}\n\n@keyframes scrollX {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes scrollY {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(0, -100%, 0);\n }\n}\n</style>"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Marquee.vue.js","sources":["../../../../../src/components/Marquee/Marquee.vue"],"sourcesContent":["<template>\n <div\n v-if=\"ready\"\n class=\"vue3-marquee\"\n :class=\"{ vertical: vertical, horizontal: !vertical }\"\n :style=\"getCurrentStyle\"\n @mouseenter=\"hoverStarted\"\n @mouseleave=\"hoverEnded\"\n @mousedown=\"mouseDown\"\n @mouseup=\"mouseUp\"\n >\n <div\n class=\"transparent-overlay\"\n ref=\"marqueeOverlayContainer\"\n :aria-hidden=\"true\"\n :class=\"{ vertical: vertical, horizontal: !vertical, overlay: gradient }\"\n />\n\n <div \n class=\"marquee\"\n ref=\"marqueeContent\">\n <slot></slot>\n </div>\n\n <div \n class=\"marquee\" \n :aria-hidden=\"true\"\n >\n <slot></slot>\n </div>\n\n <div\n v-for=\"num in cloneAmount\"\n :key=\"num\"\n :aria-hidden=\"true\"\n class=\"marquee cloned\"\n >\n <slot></slot>\n </div\n >\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, onBeforeUnmount, computed, watch, nextTick } from 'vue'\n\nconst props = defineProps({\n vertical: { type: Boolean, default: false },\n direction: { type: String, default: 'normal' },\n duration: { type: Number, default: 20 },\n delay: { type: Number, default: 0 },\n loop: { type: Number, default: 0 },\n clone: { type: Boolean, default: false },\n gradient: { type: Boolean, default: false },\n gradientColor: { type: [Array,String], default: () => [255, 255, 255] },\n gradientLength: { type: String },\n pauseOnHover: { type: Boolean, default: false },\n pauseOnClick: { type: Boolean, default: false },\n pause: { type: Boolean, default: false }\n})\n\nconst emits = defineEmits(['onComplete', 'onLoopComplete', 'onPause', 'onResume'])\n\nconst ready = ref(false)\n\nconst cloneAmount = ref(0)\nconst loopCounter = ref(0)\nconst loopInterval = ref(null)\nconst resizeObserver = ref(null)\nconst checkInterval = ref(null)\nconst resizeTimeout = ref(null)\nconst previousSize = ref({ width: 0, height: 0 })\n\nconst widthMin = ref('100%')\nconst widthContainer = ref(0)\nconst widthContent = ref(0)\nconst heightMin = ref('100%')\nconst heightContainer = ref(0)\nconst heightContent = ref(0)\n\nconst gradientLength = ref('200px')\n\nconst verticalAnimationPause = ref(false)\nconst marqueeContent = ref(null)\nconst marqueeOverlayContainer = ref(null)\n\n// Removed ForcesUpdate - no longer needed\n\nconst checkForClone = async () => {\n if (props.vertical) {\n verticalAnimationPause.value = true\n }\n\n await nextTick()\n \n const calculateClones = () => {\n widthMin.value = '0%'\n heightMin.value = '0%'\n\n if (marqueeContent.value !== null && marqueeOverlayContainer.value !== null) {\n if (marqueeContent.value && marqueeOverlayContainer.value) {\n if (\n props.vertical &&\n 'clientHeight' in marqueeContent.value &&\n 'clientHeight' in marqueeOverlayContainer.value\n ) {\n heightContent.value = marqueeContent.value.clientHeight\n heightContainer.value = marqueeOverlayContainer.value.clientHeight\n\n const localCloneAmount = Math.ceil(heightContainer.value / heightContent.value)\n\n cloneAmount.value = isFinite(localCloneAmount) ? localCloneAmount : 0\n\n verticalAnimationPause.value = false\n\n return cloneAmount.value\n } else if (\n !props.vertical &&\n 'clientWidth' in marqueeContent.value &&\n 'clientWidth' in marqueeOverlayContainer.value\n ) {\n widthContent.value = marqueeContent.value.clientWidth\n widthContainer.value = marqueeOverlayContainer.value.clientWidth\n\n const localCloneAmount = Math.ceil(widthContainer.value / widthContent.value)\n\n cloneAmount.value = isFinite(localCloneAmount) ? localCloneAmount : 0\n\n return cloneAmount.value\n } else {\n widthMin.value = '100%'\n heightMin.value = '100%'\n return 0\n }\n } else {\n widthMin.value = '100%'\n heightMin.value = '100%'\n return 0\n }\n } else {\n widthMin.value = '100%'\n heightMin.value = '100%'\n return 0\n }\n }\n \n // Run once immediately\n calculateClones()\n \n // Setup ResizeObserver for efficient resize detection\n if (typeof ResizeObserver !== 'undefined' && marqueeOverlayContainer.value) {\n if (resizeObserver.value) {\n resizeObserver.value.disconnect()\n }\n \n resizeObserver.value = new ResizeObserver((entries) => {\n const entry = entries[0]\n const newWidth = entry.contentRect.width\n const newHeight = entry.contentRect.height\n \n // Only recalculate if size changed significantly (more than 1px)\n const widthChanged = Math.abs(newWidth - previousSize.value.width) > 1\n const heightChanged = Math.abs(newHeight - previousSize.value.height) > 1\n \n if (widthChanged || heightChanged) {\n previousSize.value = { width: newWidth, height: newHeight }\n clearTimeout(resizeTimeout.value)\n resizeTimeout.value = setTimeout(() => {\n calculateClones()\n }, 300)\n }\n })\n \n resizeObserver.value.observe(marqueeOverlayContainer.value)\n } else {\n // Fallback for browsers without ResizeObserver\n // Only check once after a delay for initial setup\n if (checkInterval.value) {\n clearInterval(checkInterval.value)\n }\n \n checkInterval.value = setTimeout(() => {\n calculateClones()\n checkInterval.value = null\n }, 500)\n }\n}\n\nconst hoverStarted = () => { if (props.pauseOnHover) emits('onPause') }\nconst hoverEnded = () => { if (props.pauseOnHover) emits('onResume') }\nconst mouseDown = () => { if (props.pauseOnClick) emits('onPause') }\nconst mouseUp = () => { if (props.pauseOnClick) emits('onResume') }\n\nconst getCurrentStyle = computed(() => {\n return {\n '--loops': `${props.loop === 0 ? 'infinite' : props.loop}`,\n '--duration': `${props.duration}s`,\n '--delay': `${props.delay}s`,\n '--direction': `${props.direction}`,\n '--pauseOnHover': `${props.pauseOnHover ? 'paused' : 'running'}`,\n '--pauseOnClick': `${props.pauseOnClick ? 'paused' : 'running'}`,\n '--pauseAnimation': `${(props.vertical && verticalAnimationPause.value) || props.pause ? 'paused' : 'running'}`,\n '--gradient-color': props.gradientColor,\n '--gradient-length': `${gradientLength.value}`,\n '--min-width': `${widthMin.value}`,\n '--min-height': `${heightMin.value}`,\n '--orientation': props.vertical ? 'scrollY' : 'scrollX'\n }\n})\n\nconst setupMarquee = async () => {\n if (props.vertical) {\n heightMin.value = '100%'\n widthMin.value = 'auto'\n } else {\n heightMin.value = 'auto'\n widthMin.value = '100%'\n }\n\n if (props.gradient && props.gradientLength) {\n gradientLength.value = props.gradientLength\n }\n\n if (props.clone) {\n await checkForClone()\n ready.value = true\n } else {\n ready.value = true\n }\n}\n\nonMounted(async () => {\n setupMarquee()\n\n loopInterval.value = setInterval(() => {\n loopCounter.value++\n\n if (props.loop !== 0 && loopCounter.value === props.loop) {\n emits('onComplete')\n clearInterval(loopInterval.value)\n }\n\n emits('onLoopComplete')\n }, props.duration * 1000)\n})\n\nonBeforeUnmount(() => {\n clearInterval(loopInterval.value)\n \n if (resizeObserver.value) {\n resizeObserver.value.disconnect()\n resizeObserver.value = null\n }\n \n if (checkInterval.value) {\n clearInterval(checkInterval.value)\n checkInterval.value = null\n }\n \n if (resizeTimeout.value) {\n clearTimeout(resizeTimeout.value)\n resizeTimeout.value = null\n }\n})\n\n// Removed inefficient watchers - ResizeObserver handles this now\n\nwatch(\n () => props.pause,\n (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal) {\n emits('onPause')\n } else {\n emits('onResume')\n }\n }\n }\n)\n</script>\n\n<style lang=\"scss\">\n.vue3-marquee {\n display: flex !important;\n position: relative;\n will-change: transform;\n transform: translateZ(0);\n backface-visibility: hidden;\n\n .marquee {\n flex: 0 0 auto;\n min-width: var(--min-width);\n min-height: var(--min-height);\n z-index: 1;\n\n animation: var(--orientation) var(--duration) linear var(--delay) var(--loops);\n animation-play-state: var(--pauseAnimation);\n animation-direction: var(--direction);\n }\n\n .overlay {\n position: absolute;\n width: 100%;\n height: 100%;\n\n &:before {\n left: 0;\n top: 0;\n }\n\n &:before, &:after {\n content: '';\n position: absolute;\n z-index: 2;\n }\n }\n\n .transparent-overlay {\n position: absolute;\n width: 100.5%;\n height: 100.5%;\n }\n\n\n &.horizontal {\n overflow-x: hidden !important;\n overflow-y: hidden !important;\n flex-direction: row !important;\n width: 100%;\n height: max-content;\n\n .marquee {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n .overlay::before,.overlay::after {\n background: linear-gradient(to right, var(--gradient-color), transparent);\n height: 100%;\n width: var(--gradient-length);\n }\n\n .overlay::after {\n transform: rotateZ(180deg);\n right: 0;\n top: 0;\n }\n }\n\n &.vertical {\n overflow-y: hidden !important;\n overflow-x: hidden !important;\n flex-direction: column !important;\n height: 100%;\n width: max-content;\n\n .marquee {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .overlay::before, .overlay::after {\n background: linear-gradient(to bottom, var(--gradient-color), transparent);\n height: var(--gradient-length);\n width: 100%;\n }\n\n .overlay::after {\n transform: rotateZ(-180deg);\n left: 0;\n bottom: 0;\n }\n }\n\n &:hover {\n div {\n animation-play-state: var(--pauseOnHover);\n }\n }\n\n &:active {\n div {\n animation-play-state: var(--pauseOnClick);\n } \n }\n}\n\n@keyframes scrollX {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@keyframes scrollY {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(0, -100%, 0);\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8CA,UAAM,QAAQ;AAed,UAAM,QAAQ;AAEd,UAAM,QAAQ,IAAI,KAAK;AAEvB,UAAM,cAAc,IAAI,CAAC;AACzB,UAAM,cAAc,IAAI,CAAC;AACzB,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,iBAAiB,IAAI,IAAI;AAC/B,UAAM,gBAAgB,IAAI,IAAI;AAC9B,UAAM,gBAAgB,IAAI,IAAI;AAC9B,UAAM,eAAe,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAC,CAAE;AAEhD,UAAM,WAAW,IAAI,MAAM;AAC3B,UAAM,iBAAiB,IAAI,CAAC;AAC5B,UAAM,eAAe,IAAI,CAAC;AAC1B,UAAM,YAAY,IAAI,MAAM;AAC5B,UAAM,kBAAkB,IAAI,CAAC;AAC7B,UAAM,gBAAgB,IAAI,CAAC;AAE3B,UAAM,iBAAiB,IAAI,OAAO;AAElC,UAAM,yBAAyB,IAAI,KAAK;AACxC,UAAM,iBAAiB,IAAI,IAAI;AAC/B,UAAM,0BAA0B,IAAI,IAAI;AAIxC,UAAM,gBAAgB,YAAY;AAChC,UAAI,MAAM,UAAU;AAClB,+BAAuB,QAAQ;AAAA,MACjC;AAEA,YAAM,SAAQ;AAEd,YAAM,kBAAkB,MAAM;AAC5B,iBAAS,QAAQ;AACjB,kBAAU,QAAQ;AAElB,YAAI,eAAe,UAAU,QAAQ,wBAAwB,UAAU,MAAM;AAC3E,cAAI,eAAe,SAAS,wBAAwB,OAAO;AACzD,gBACE,MAAM,YACN,kBAAkB,eAAe,SACjC,kBAAkB,wBAAwB,OAC1C;AACA,4BAAc,QAAQ,eAAe,MAAM;AAC3C,8BAAgB,QAAQ,wBAAwB,MAAM;AAEtD,oBAAM,mBAAmB,KAAK,KAAK,gBAAgB,QAAQ,cAAc,KAAK;AAE9E,0BAAY,QAAQ,SAAS,gBAAgB,IAAI,mBAAmB;AAEpE,qCAAuB,QAAQ;AAE/B,qBAAO,YAAY;AAAA,YACrB,WACE,CAAC,MAAM,YACP,iBAAiB,eAAe,SAChC,iBAAiB,wBAAwB,OACzC;AACA,2BAAa,QAAQ,eAAe,MAAM;AAC1C,6BAAe,QAAQ,wBAAwB,MAAM;AAErD,oBAAM,mBAAmB,KAAK,KAAK,eAAe,QAAQ,aAAa,KAAK;AAE5E,0BAAY,QAAQ,SAAS,gBAAgB,IAAI,mBAAmB;AAEpE,qBAAO,YAAY;AAAA,YACrB,OAAO;AACL,uBAAS,QAAQ;AACjB,wBAAU,QAAQ;AAClB,qBAAO;AAAA,YACT;AAAA,UACF,OAAO;AACL,qBAAS,QAAQ;AACjB,sBAAU,QAAQ;AAClB,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,mBAAS,QAAQ;AACjB,oBAAU,QAAQ;AAClB,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,sBAAe;AAGf,UAAI,OAAO,mBAAmB,eAAe,wBAAwB,OAAO;AAC1E,YAAI,eAAe,OAAO;AACxB,yBAAe,MAAM,WAAU;AAAA,QACjC;AAEA,uBAAe,QAAQ,IAAI,eAAe,CAAC,YAAY;AACrD,gBAAM,QAAQ,QAAQ,CAAC;AACvB,gBAAM,WAAW,MAAM,YAAY;AACnC,gBAAM,YAAY,MAAM,YAAY;AAGpC,gBAAM,eAAe,KAAK,IAAI,WAAW,aAAa,MAAM,KAAK,IAAI;AACrE,gBAAM,gBAAgB,KAAK,IAAI,YAAY,aAAa,MAAM,MAAM,IAAI;AAExE,cAAI,gBAAgB,eAAe;AACjC,yBAAa,QAAQ,EAAE,OAAO,UAAU,QAAQ,UAAS;AACzD,yBAAa,cAAc,KAAK;AAChC,0BAAc,QAAQ,WAAW,MAAM;AACrC,8BAAe;AAAA,YACjB,GAAG,GAAG;AAAA,UACR;AAAA,QACF,CAAC;AAED,uBAAe,MAAM,QAAQ,wBAAwB,KAAK;AAAA,MAC5D,OAAO;AAGL,YAAI,cAAc,OAAO;AACvB,wBAAc,cAAc,KAAK;AAAA,QACnC;AAEA,sBAAc,QAAQ,WAAW,MAAM;AACrC,0BAAe;AACf,wBAAc,QAAQ;AAAA,QACxB,GAAG,GAAG;AAAA,MACR;AAAA,IACF;AAEA,UAAM,eAAe,MAAM;AAAE,UAAI,MAAM,aAAc,OAAM,SAAS;AAAA,IAAE;AACtE,UAAM,aAAa,MAAM;AAAE,UAAI,MAAM,aAAc,OAAM,UAAU;AAAA,IAAE;AACrE,UAAM,YAAY,MAAM;AAAE,UAAI,MAAM,aAAc,OAAM,SAAS;AAAA,IAAE;AACnE,UAAM,UAAU,MAAM;AAAE,UAAI,MAAM,aAAc,OAAM,UAAU;AAAA,IAAE;AAElE,UAAM,kBAAkB,SAAS,MAAM;AACrC,aAAO;AAAA,QACL,WAAW,GAAG,MAAM,SAAS,IAAI,aAAa,MAAM,IAAI;AAAA,QACxD,cAAc,GAAG,MAAM,QAAQ;AAAA,QAC/B,WAAW,GAAG,MAAM,KAAK;AAAA,QACzB,eAAe,GAAG,MAAM,SAAS;AAAA,QACjC,kBAAkB,GAAG,MAAM,eAAe,WAAW,SAAS;AAAA,QAC9D,kBAAkB,GAAG,MAAM,eAAe,WAAW,SAAS;AAAA,QAC9D,oBAAoB,GAAI,MAAM,YAAY,uBAAuB,SAAU,MAAM,QAAQ,WAAW,SAAS;AAAA,QAC7G,oBAAoB,MAAM;AAAA,QAC1B,qBAAqB,GAAG,eAAe,KAAK;AAAA,QAC5C,eAAe,GAAG,SAAS,KAAK;AAAA,QAChC,gBAAgB,GAAG,UAAU,KAAK;AAAA,QAClC,iBAAiB,MAAM,WAAW,YAAY;AAAA,MAClD;AAAA,IACA,CAAC;AAED,UAAM,eAAe,YAAY;AAC/B,UAAI,MAAM,UAAU;AAClB,kBAAU,QAAQ;AAClB,iBAAS,QAAQ;AAAA,MACnB,OAAO;AACL,kBAAU,QAAQ;AAClB,iBAAS,QAAQ;AAAA,MACnB;AAEA,UAAI,MAAM,YAAY,MAAM,gBAAgB;AAC1C,uBAAe,QAAQ,MAAM;AAAA,MAC/B;AAEA,UAAI,MAAM,OAAO;AACf,cAAM,cAAa;AACnB,cAAM,QAAQ;AAAA,MAChB,OAAO;AACL,cAAM,QAAQ;AAAA,MAChB;AAAA,IACF;AAEA,cAAU,YAAY;AACpB,mBAAY;AAEZ,mBAAa,QAAQ,YAAY,MAAM;AACrC,oBAAY;AAEZ,YAAI,MAAM,SAAS,KAAK,YAAY,UAAU,MAAM,MAAM;AACxD,gBAAM,YAAY;AAClB,wBAAc,aAAa,KAAK;AAAA,QAClC;AAEA,cAAM,gBAAgB;AAAA,MACxB,GAAG,MAAM,WAAW,GAAI;AAAA,IAC1B,CAAC;AAED,oBAAgB,MAAM;AACpB,oBAAc,aAAa,KAAK;AAEhC,UAAI,eAAe,OAAO;AACxB,uBAAe,MAAM,WAAU;AAC/B,uBAAe,QAAQ;AAAA,MACzB;AAEA,UAAI,cAAc,OAAO;AACvB,sBAAc,cAAc,KAAK;AACjC,sBAAc,QAAQ;AAAA,MACxB;AAEA,UAAI,cAAc,OAAO;AACvB,qBAAa,cAAc,KAAK;AAChC,sBAAc,QAAQ;AAAA,MACxB;AAAA,IACF,CAAC;AAID;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,QAAQ,WAAW;AAClB,YAAI,WAAW,QAAQ;AACrB,cAAI,QAAQ;AACV,kBAAM,SAAS;AAAA,UACjB,OAAO;AACL,kBAAM,UAAU;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +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 mixins = require("../../modules/globals/views/mixins/mixins.cjs");
4
5
  ;/* empty css */
5
6
  const _hoisted_1 = { class: "flex-nowrap flex-v-center flex pos-relative" };
6
7
  const _hoisted_2 = ["onClick"];
@@ -15,6 +16,7 @@ const _sfc_main = {
15
16
  },
16
17
  emits: ["update:selected", "tab-click"],
17
18
  setup(__props, { emit: __emit }) {
19
+ const { replaceClasses } = mixins.useGlobalMixins();
18
20
  const emit = __emit;
19
21
  const props = __props;
20
22
  const selectedTab = vue.ref(0);
@@ -59,7 +61,7 @@ const _sfc_main = {
59
61
  onClick: ($event) => handleTabClick(index, tab),
60
62
  class: vue.normalizeClass(["z-index-1 t-center cursor-pointer", [
61
63
  isSelected(index, tab) ? "bg-main" : "",
62
- _ctx.replaceClasses("pd-small pd-r-medium pd-l-medium w-max pd-small radius-small", __props.classTab)
64
+ vue.unref(replaceClasses)("pd-small pd-r-medium pd-l-medium w-max pd-small radius-small", __props.classTab)
63
65
  ]]),
64
66
  style: vue.normalizeStyle(isSelected(index, tab) ? "background: rgb(var(--main)) !important" : "")
65
67
  }, vue.toDisplayString(tab.name || tab.label), 15, _hoisted_2);
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue.cjs","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n replaceClasses('pd-small pd-r-medium pd-l-medium w-max pd-small radius-small', classTab)\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\n\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n classTab: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":["ref","watch"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAcA,IAAAA,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF,WAAW,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAGA,wBAAmB;AAGnBC,QAAAA,MAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/CA,QAAAA,MAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,WAAW,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B;AACA,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAG,CAAE;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACrC;AAGA,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tab.vue.cjs","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n replaceClasses('pd-small pd-r-medium pd-l-medium w-max pd-small radius-small', classTab)\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nconst { replaceClasses } = useGlobalMixins();\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n classTab: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":["useGlobalMixins","ref","watch"],"mappings":";;;;;;;;;;;;;;;;;;AAsBA,UAAM,EAAE,eAAc,IAAKA,uBAAe;AAC1C,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAcC,IAAAA,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF,WAAW,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAGA,wBAAmB;AAGnBC,QAAAA,MAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/CA,QAAAA,MAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,WAAW,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B;AACA,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAG,CAAE;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACrC;AAGA,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
- import { ref, watch, createElementBlock, openBlock, Fragment, renderList, normalizeStyle, normalizeClass, toDisplayString } from "vue";
1
+ import { ref, watch, createElementBlock, openBlock, Fragment, renderList, normalizeStyle, normalizeClass, unref, toDisplayString } from "vue";
2
+ import { useGlobalMixins } from "../../modules/globals/views/mixins/mixins.js";
2
3
  /* empty css */
3
4
  const _hoisted_1 = { class: "flex-nowrap flex-v-center flex pos-relative" };
4
5
  const _hoisted_2 = ["onClick"];
@@ -13,6 +14,7 @@ const _sfc_main = {
13
14
  },
14
15
  emits: ["update:selected", "tab-click"],
15
16
  setup(__props, { emit: __emit }) {
17
+ const { replaceClasses } = useGlobalMixins();
16
18
  const emit = __emit;
17
19
  const props = __props;
18
20
  const selectedTab = ref(0);
@@ -57,7 +59,7 @@ const _sfc_main = {
57
59
  onClick: ($event) => handleTabClick(index, tab),
58
60
  class: normalizeClass(["z-index-1 t-center cursor-pointer", [
59
61
  isSelected(index, tab) ? "bg-main" : "",
60
- _ctx.replaceClasses("pd-small pd-r-medium pd-l-medium w-max pd-small radius-small", __props.classTab)
62
+ unref(replaceClasses)("pd-small pd-r-medium pd-l-medium w-max pd-small radius-small", __props.classTab)
61
63
  ]]),
62
64
  style: normalizeStyle(isSelected(index, tab) ? "background: rgb(var(--main)) !important" : "")
63
65
  }, toDisplayString(tab.name || tab.label), 15, _hoisted_2);
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue.js","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n replaceClasses('pd-small pd-r-medium pd-l-medium w-max pd-small radius-small', classTab)\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\n\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n classTab: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqBA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAc,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF,WAAW,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAGA,wBAAmB;AAGnB,UAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/C,UAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,WAAW,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B;AACA,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAG,CAAE;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACrC;AAGA,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tab.vue.js","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n replaceClasses('pd-small pd-r-medium pd-l-medium w-max pd-small radius-small', classTab)\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nconst { replaceClasses } = useGlobalMixins();\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n classTab: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAsBA,UAAM,EAAE,eAAc,IAAK,gBAAe;AAC1C,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAc,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF,WAAW,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAGA,wBAAmB;AAGnB,UAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/C,UAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B,WAAW,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC7B;AACA,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAG,CAAE;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACrC;AAGA,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const vue = require("vue");
4
+ const axios = require("axios");
5
+ const Loader = require("../Loader/Loader.vue2.cjs");
6
+ const IconUpload = ;/* empty css */
7
+ const IconDelete = require("../../modules/icons/navigation/IconDelete.vue.cjs");
8
+ ;/* empty css */
9
+ const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.cjs");
10
+ const _hoisted_1 = ["src"];
11
+ const _hoisted_2 = {
12
+ key: 1,
13
+ class: "flex-v-center pos-relative z-index-2 flex-h-center flex w-100 h-100 radius-small bg-second"
14
+ };
15
+ const _hoisted_3 = { class: "z-index-2 pos-relative hover-controls pos-absolute w-100 h-100 flex-v-center flex-h-center flex" };
16
+ const _hoisted_4 = {
17
+ key: 0,
18
+ class: "hover-upload-icon"
19
+ };
20
+ const _hoisted_5 = {
21
+ key: 1,
22
+ class: "hover-buttons flex gap-small"
23
+ };
24
+ const _hoisted_6 = {
25
+ key: 2,
26
+ class: "z-index-2 loading-overlay pos-absolute w-100 h-100 flex-v-center flex-h-center flex"
27
+ };
28
+ const _hoisted_7 = {
29
+ key: 0,
30
+ class: "upload-text-block flex flex-column"
31
+ };
32
+ const _hoisted_8 = { class: "mn-b-small t-medium" };
33
+ const _hoisted_9 = { class: "mn-b-medium t-transp" };
34
+ const _hoisted_10 = { key: 0 };
35
+ const _hoisted_11 = {
36
+ key: 1,
37
+ class: "flex gap-thin"
38
+ };
39
+ const _sfc_main = {
40
+ __name: "UploadImage",
41
+ props: {
42
+ uploadPath: {
43
+ type: String,
44
+ required: true
45
+ },
46
+ photo: {
47
+ type: String,
48
+ default: null
49
+ },
50
+ text: {
51
+ type: [Object, Boolean],
52
+ default: null
53
+ }
54
+ },
55
+ emits: ["update:photo", "error"],
56
+ setup(__props, { emit: __emit }) {
57
+ const imageUrl = vue.ref(null);
58
+ const fileInput = vue.ref(null);
59
+ const previewUrl = vue.ref(null);
60
+ const loading = vue.ref(false);
61
+ const props = __props;
62
+ const emit = __emit;
63
+ const textConfig = vue.computed(() => {
64
+ const defaults = {
65
+ title: "Upload Image",
66
+ subtitle: "Drag & drop your image here or click button. Supported: JPG, PNG, GIF. Max size: 2MB",
67
+ buttonText: "Choose Image"
68
+ };
69
+ if (props.text === true) {
70
+ return defaults;
71
+ } else if (typeof props.text === "object" && props.text !== null) {
72
+ return {
73
+ title: props.text.title || defaults.title,
74
+ subtitle: props.text.subtitle || defaults.subtitle,
75
+ buttonText: props.text.buttonText || defaults.buttonText
76
+ };
77
+ }
78
+ return defaults;
79
+ });
80
+ vue.watch(props, ({ photo }) => {
81
+ if (photo) imageUrl.value = photo;
82
+ });
83
+ function onComponentClick() {
84
+ fileInput.value.click();
85
+ }
86
+ async function onFileChange(e) {
87
+ let file = e.target.files[0];
88
+ if (!file) {
89
+ console.error("No file selected");
90
+ return;
91
+ }
92
+ const reader = new FileReader();
93
+ reader.onload = (e2) => {
94
+ previewUrl.value = e2.target.result;
95
+ };
96
+ reader.readAsDataURL(file);
97
+ let formData = new FormData();
98
+ formData.append("file", file);
99
+ console.log("Sending file:", file.name);
100
+ loading.value = true;
101
+ try {
102
+ const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true });
103
+ let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData);
104
+ console.log("Upload response:", response);
105
+ imageUrl.value = response.data[0].filepath;
106
+ previewUrl.value = null;
107
+ emit("update:photo", imageUrl.value);
108
+ } catch (error) {
109
+ emit("error", error);
110
+ console.error("Upload error:", error);
111
+ previewUrl.value = null;
112
+ } finally {
113
+ loading.value = false;
114
+ }
115
+ }
116
+ function onDrop(e) {
117
+ e.preventDefault();
118
+ onFileChange({
119
+ target: {
120
+ files: e.dataTransfer.files
121
+ }
122
+ });
123
+ }
124
+ function deleteImage() {
125
+ imageUrl.value = null;
126
+ previewUrl.value = null;
127
+ emit("update:photo", null);
128
+ if (fileInput.value) {
129
+ fileInput.value.value = "";
130
+ }
131
+ }
132
+ return (_ctx, _cache) => {
133
+ return vue.openBlock(), vue.createElementBlock("div", {
134
+ class: vue.normalizeClass(["upload-image-wrapper flex-v-center flex-nowrap flex gap-small", { "with-text": __props.text }])
135
+ }, [
136
+ vue.createElementVNode("div", {
137
+ onClick: onComponentClick,
138
+ onDrop,
139
+ onDragover: _cache[0] || (_cache[0] = vue.withModifiers(() => {
140
+ }, ["prevent"])),
141
+ class: "pos-relative radius-small br-solid br-1px br-black-transp-10 h-100 aspect-1x1 flex-v-center flex-h-center flex cursor-pointer"
142
+ }, [
143
+ imageUrl.value || __props.photo || previewUrl.value ? (vue.openBlock(), vue.createElementBlock("img", {
144
+ key: 0,
145
+ loading: "lazy",
146
+ src: previewUrl.value || (_ctx.FILE_SERVER_URL || "") + (imageUrl.value || __props.photo),
147
+ alt: "Uploaded image",
148
+ class: "pos-absolute radius-small o-hidden z-index-1 w-100 h-100 object-fit-cover"
149
+ }, null, 8, _hoisted_1)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
150
+ vue.createVNode(IconUpload.default, {
151
+ class: "i-medium upload-icon",
152
+ fill: "rgb(var(--white))"
153
+ })
154
+ ])),
155
+ vue.createElementVNode("div", _hoisted_3, [
156
+ !imageUrl.value && !__props.photo && !previewUrl.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
157
+ vue.createVNode(IconUpload.default, {
158
+ class: "i-medium",
159
+ fill: "rgb(var(--white))"
160
+ })
161
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
162
+ vue.createElementVNode("button", {
163
+ onClick: vue.withModifiers(onComponentClick, ["stop"]),
164
+ class: "hover-button radius-small pd-thin bg-main t-white br-none cursor-pointer"
165
+ }, [
166
+ vue.createVNode(IconUpload.default, {
167
+ class: "i-semi",
168
+ fill: "rgb(var(--white))"
169
+ })
170
+ ]),
171
+ vue.createElementVNode("button", {
172
+ onClick: vue.withModifiers(deleteImage, ["stop"]),
173
+ class: "hover-button radius-small pd-thin bg-danger t-white br-none cursor-pointer"
174
+ }, [
175
+ vue.createVNode(IconDelete.default, {
176
+ class: "i-semi",
177
+ fill: "rgb(var(--white))"
178
+ })
179
+ ])
180
+ ]))
181
+ ]),
182
+ loading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
183
+ vue.createVNode(Loader.default, { centered: false })
184
+ ])) : vue.createCommentVNode("", true),
185
+ vue.createElementVNode("input", {
186
+ type: "file",
187
+ name: "file",
188
+ ref_key: "fileInput",
189
+ ref: fileInput,
190
+ onChange: onFileChange,
191
+ style: { "display": "none" }
192
+ }, null, 544)
193
+ ], 32),
194
+ __props.text ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
195
+ vue.createElementVNode("span", _hoisted_8, vue.toDisplayString(textConfig.value.title), 1),
196
+ vue.createElementVNode("span", _hoisted_9, vue.toDisplayString(textConfig.value.subtitle), 1),
197
+ !imageUrl.value && !__props.photo && !previewUrl.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
198
+ vue.createElementVNode("button", {
199
+ onClick: onComponentClick,
200
+ class: "button button-small w-max bg-main t-black cursor-pointer"
201
+ }, vue.toDisplayString(textConfig.value.buttonText), 1)
202
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_11, [
203
+ vue.createElementVNode("button", {
204
+ onClick: onComponentClick,
205
+ class: "button button-small w-max bg-second t-white cursor-pointer"
206
+ }, " Upload "),
207
+ vue.createElementVNode("button", {
208
+ onClick: deleteImage,
209
+ class: "button button-small w-max bg-red t-white cursor-pointer"
210
+ }, " Delete ")
211
+ ]))
212
+ ])) : vue.createCommentVNode("", true)
213
+ ], 2);
214
+ };
215
+ }
216
+ };
217
+ const UploadImage = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-26da6988"]]);
218
+ exports.default = UploadImage;
219
+ //# sourceMappingURL=UploadImage.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadImage.vue2.cjs","sources":["../../../../../src/components/UploadImage/UploadImage.vue"],"sourcesContent":["<template>\n <div class=\"upload-image-wrapper flex-v-center flex-nowrap flex gap-small\" :class=\"{'with-text': text}\">\n <div \n @click=\"onComponentClick\"\n @drop=\"onDrop\"\n @dragover.prevent\n class=\"pos-relative radius-small br-solid br-1px br-black-transp-10 h-100 aspect-1x1 flex-v-center flex-h-center flex cursor-pointer\"\n >\n <img loading=\"lazy\" \n v-if=\"imageUrl || photo || previewUrl\" \n :src=\"previewUrl || (FILE_SERVER_URL || '') + (imageUrl || photo)\"\n alt=\"Uploaded image\" \n class=\"pos-absolute radius-small o-hidden z-index-1 w-100 h-100 object-fit-cover\"\n />\n \n <div v-else class=\"flex-v-center pos-relative z-index-2 flex-h-center flex w-100 h-100 radius-small bg-second\" >\n <IconUpload class=\"i-medium upload-icon\" fill=\"rgb(var(--white))\" />\n </div>\n \n <!-- Hover controls -->\n <div class=\"z-index-2 pos-relative hover-controls pos-absolute w-100 h-100 flex-v-center flex-h-center flex\">\n <div v-if=\"!imageUrl && !photo && !previewUrl\" class=\"hover-upload-icon\">\n <IconUpload class=\"i-medium\" fill=\"rgb(var(--white))\" />\n </div>\n <div v-else class=\"hover-buttons flex gap-small\">\n <button @click.stop=\"onComponentClick\" class=\"hover-button radius-small pd-thin bg-main t-white br-none cursor-pointer\">\n <IconUpload class=\"i-semi\" fill=\"rgb(var(--white))\" />\n </button>\n <button @click.stop=\"deleteImage\" class=\"hover-button radius-small pd-thin bg-danger t-white br-none cursor-pointer\">\n <IconDelete class=\"i-semi\" fill=\"rgb(var(--white))\" />\n </button>\n </div>\n </div>\n \n <!-- Loading overlay -->\n <div v-if=\"loading\" class=\"z-index-2 loading-overlay pos-absolute w-100 h-100 flex-v-center flex-h-center flex\">\n <Loader :centered=\"false\" />\n </div>\n \n <input type=\"file\" name=\"file\" ref=\"fileInput\" @change=\"onFileChange\" style=\"display: none\"/>\n </div>\n \n <!-- Text block -->\n <div v-if=\"text\" class=\"upload-text-block flex flex-column\">\n <span class=\"mn-b-small t-medium\">{{ textConfig.title }}</span>\n <span class=\"mn-b-medium t-transp\">{{ textConfig.subtitle }}</span>\n <div v-if=\"!imageUrl && !photo && !previewUrl\">\n <button @click=\"onComponentClick\" class=\"button button-small w-max bg-main t-black cursor-pointer\">\n {{ textConfig.buttonText }}\n </button>\n </div>\n <div v-else class=\"flex gap-thin\">\n <button @click=\"onComponentClick\" class=\"button button-small w-max bg-second t-white cursor-pointer\">\n Upload \n </button>\n <button @click=\"deleteImage\" class=\"button button-small w-max bg-red t-white cursor-pointer\">\n Delete\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch, computed } from 'vue';\nimport axios from 'axios';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport IconUpload from '@martyrs/src/modules/icons/navigation/IconUpload.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nconst imageUrl = ref(null);\nconst fileInput = ref(null);\nconst previewUrl = ref(null);\nconst loading = ref(false);\n\nconst props = defineProps({\n uploadPath: {\n type: String,\n required: true\n },\n photo: {\n type: String,\n default: null\n },\n text: {\n type: [Object, Boolean],\n default: null\n }\n});\n\nconst emit = defineEmits(['update:photo', 'error']);\n\n// Text configuration with defaults\nconst textConfig = computed(() => {\n const defaults = {\n title: 'Upload Image',\n subtitle: 'Drag & drop your image here or click button. Supported: JPG, PNG, GIF. Max size: 2MB',\n buttonText: 'Choose Image'\n };\n \n if (props.text === true) {\n return defaults;\n } else if (typeof props.text === 'object' && props.text !== null) {\n return {\n title: props.text.title || defaults.title,\n subtitle: props.text.subtitle || defaults.subtitle,\n buttonText: props.text.buttonText || defaults.buttonText\n };\n }\n \n return defaults;\n});\n\nwatch(props, ({photo}) => {\n if(photo) imageUrl.value = photo;\n});\n\nfunction onComponentClick() {\n fileInput.value.click();\n}\n\nasync function onFileChange(e) {\n let file = e.target.files[0];\n if (!file) {\n console.error(\"No file selected\");\n return;\n }\n \n // Create preview from file\n const reader = new FileReader();\n reader.onload = (e) => {\n previewUrl.value = e.target.result;\n };\n reader.readAsDataURL(file);\n \n let formData = new FormData();\n formData.append(\"file\", file);\n\n console.log(\"Sending file:\", file.name); // Логируем имя файла перед отправкой\n \n loading.value = true;\n\n try {\n const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true }); \n\n let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData);\n console.log(\"Upload response:\", response); // Логируем ответ сервера\n imageUrl.value = response.data[0].filepath;\n previewUrl.value = null; // Clear preview after successful upload\n emit('update:photo', imageUrl.value);\n } catch (error) {\n emit('error', error);\n console.error(\"Upload error:\", error); // Логируем ошибку\n previewUrl.value = null; // Clear preview on error\n } finally {\n loading.value = false;\n }\n}\n\n\nfunction onDrop(e) {\n e.preventDefault();\n onFileChange({\n target: {\n files: e.dataTransfer.files\n }\n });\n}\n\nfunction deleteImage() {\n imageUrl.value = null;\n previewUrl.value = null;\n emit('update:photo', null);\n // Reset file input\n if (fileInput.value) {\n fileInput.value.value = '';\n }\n}\n</script>\n\n<style scoped>\n.image-upload-area {\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.image-upload-area:hover {\n opacity: 0.95;\n}\n\n/* Hover controls */\n.hover-controls {\n top: 0;\n left: 0;\n background: rgba(0, 0, 0, 0.7);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n}\n\n.image-upload-area:hover .hover-controls {\n opacity: 1;\n pointer-events: all;\n}\n\n.hover-upload-icon {\n animation: pulse 1.5s infinite;\n}\n\n.hover-button {\n transition: transform 0.2s ease, background-color 0.2s ease;\n}\n\n.hover-button:hover {\n transform: scale(1.1);\n}\n\n.hover-button:active {\n transform: scale(0.95);\n}\n\n/* Loading overlay */\n.loading-overlay {\n top: 0;\n left: 0;\n background: rgba(255, 255, 255, 0.9);\n z-index: 10;\n}\n\n/* Animations */\n@keyframes pulse {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.05);\n opacity: 0.8;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* Upload icon in empty state */\n.upload-icon {\n transition: transform 0.3s ease;\n}\n\n.image-upload-area:hover .upload-icon {\n transform: scale(1.1);\n}\n</style>\n"],"names":["ref","computed","watch","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEA,UAAM,WAAWA,IAAAA,IAAI,IAAI;AACzB,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAC1B,UAAM,aAAaA,IAAAA,IAAI,IAAI;AAC3B,UAAM,UAAUA,IAAAA,IAAI,KAAK;AAEzB,UAAM,QAAQ;AAed,UAAM,OAAO;AAGb,UAAM,aAAaC,IAAAA,SAAS,MAAM;AAChC,YAAM,WAAW;AAAA,QACf,OAAO;AAAA,QACP,UAAU;AAAA,QACV,YAAY;AAAA,MAChB;AAEE,UAAI,MAAM,SAAS,MAAM;AACvB,eAAO;AAAA,MACT,WAAW,OAAO,MAAM,SAAS,YAAY,MAAM,SAAS,MAAM;AAChE,eAAO;AAAA,UACL,OAAO,MAAM,KAAK,SAAS,SAAS;AAAA,UACpC,UAAU,MAAM,KAAK,YAAY,SAAS;AAAA,UAC1C,YAAY,MAAM,KAAK,cAAc,SAAS;AAAA,QACpD;AAAA,MACE;AAEA,aAAO;AAAA,IACT,CAAC;AAEDC,QAAAA,MAAM,OAAO,CAAC,EAAC,MAAK,MAAM;AACxB,UAAG,MAAO,UAAS,QAAQ;AAAA,IAC7B,CAAC;AAED,aAAS,mBAAmB;AAC1B,gBAAU,MAAM,MAAK;AAAA,IACvB;AAEA,mBAAe,aAAa,GAAG;AAC7B,UAAI,OAAO,EAAE,OAAO,MAAM,CAAC;AAC3B,UAAI,CAAC,MAAM;AACT,gBAAQ,MAAM,kBAAkB;AAChC;AAAA,MACF;AAGA,YAAM,SAAS,IAAI,WAAU;AAC7B,aAAO,SAAS,CAACC,OAAM;AACrB,mBAAW,QAAQA,GAAE,OAAO;AAAA,MAC9B;AACA,aAAO,cAAc,IAAI;AAEzB,UAAI,WAAW,IAAI,SAAQ;AAC3B,eAAS,OAAO,QAAQ,IAAI;AAE5B,cAAQ,IAAI,iBAAiB,KAAK,IAAI;AAEtC,cAAQ,QAAQ;AAEhB,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS,iBAAiB,KAAI,CAAE;AAEnF,YAAI,WAAW,MAAM,OAAO,KAAK,mCAAmC,mBAAmB,MAAM,UAAU,CAAC,IAAI,QAAQ;AACpH,gBAAQ,IAAI,oBAAoB,QAAQ;AACxC,iBAAS,QAAQ,SAAS,KAAK,CAAC,EAAE;AAClC,mBAAW,QAAQ;AACnB,aAAK,gBAAgB,SAAS,KAAK;AAAA,MACrC,SAAS,OAAO;AACd,aAAK,SAAS,KAAK;AACnB,gBAAQ,MAAM,iBAAiB,KAAK;AACpC,mBAAW,QAAQ;AAAA,MACrB,UAAC;AACC,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAGA,aAAS,OAAO,GAAG;AACjB,QAAE,eAAc;AAChB,mBAAa;AAAA,QACX,QAAQ;AAAA,UACN,OAAO,EAAE,aAAa;AAAA,QAC5B;AAAA,MACA,CAAG;AAAA,IACH;AAEA,aAAS,cAAc;AACrB,eAAS,QAAQ;AACjB,iBAAW,QAAQ;AACnB,WAAK,gBAAgB,IAAI;AAEzB,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,QAAQ;AAAA,MAC1B;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}