@ozdao/martyrs 0.2.543 → 0.2.545

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 (347) hide show
  1. package/dist/builder.cjs +10 -2
  2. package/dist/builder.js +10 -2
  3. package/dist/{main-BNdv8Ji-.cjs → main-8f945Ngn.cjs} +6 -6
  4. package/dist/{main-DUwlesGq.js → main-d9n_ibdE.js} +1065 -1065
  5. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
  6. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  7. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
  8. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  9. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
  10. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  11. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
  12. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  13. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs → Feed.vue2.cjs} +3 -3
  14. package/dist/martyrs/src/components/Feed/Feed.vue2.cjs.map +1 -0
  15. package/dist/martyrs/src/components/Feed/{Feed.vue.js → Feed.vue2.js} +3 -3
  16. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs.map → Feed.vue2.js.map} +1 -1
  17. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  18. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  19. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  20. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  21. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  22. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  23. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs → BlockTags.vue2.cjs} +2 -2
  24. package/dist/martyrs/src/components/FieldTags/BlockTags.vue2.cjs.map +1 -0
  25. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.js → BlockTags.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs.map → BlockTags.vue2.js.map} +1 -1
  27. package/dist/martyrs/src/components/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
  28. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
  29. package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
  30. package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.js.map} +1 -1
  31. package/dist/martyrs/src/components/Select/{Select.vue.cjs → Select.vue2.cjs} +2 -2
  32. package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue.js → Select.vue2.js} +2 -2
  34. package/dist/martyrs/src/components/Select/{Select.vue.cjs.map → Select.vue2.js.map} +1 -1
  35. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
  36. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
  37. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  38. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
  39. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  40. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  41. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  42. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  47. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  49. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  51. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +2 -2
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +2 -2
  53. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
  58. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  59. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
  60. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  61. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
  62. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  63. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  64. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  65. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
  67. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +2 -2
  68. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +2 -2
  69. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js +1 -1
  71. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +4 -4
  72. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +4 -4
  73. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +1 -1
  75. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  77. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  79. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +5 -5
  80. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +5 -5
  81. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +3 -3
  82. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +3 -3
  83. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +8 -6
  84. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  85. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +8 -6
  86. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +2 -2
  88. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  89. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +2 -2
  90. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js +1 -1
  93. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +2 -2
  94. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +2 -2
  95. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +6 -6
  96. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +6 -6
  97. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +38 -30
  98. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  99. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +39 -31
  100. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  101. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js +1 -1
  103. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +1 -1
  105. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  107. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +4 -2
  110. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +4 -2
  112. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  115. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  117. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  119. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue.cjs → Filters.vue2.cjs} +10 -10
  120. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
  121. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue.js → Filters.vue2.js} +11 -11
  122. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
  123. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  125. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +2 -2
  126. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.js +2 -2
  127. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +21 -1
  128. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  129. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +21 -1
  130. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  131. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.cjs +2 -2
  132. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +2 -2
  133. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +2 -2
  135. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  136. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +2 -2
  137. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  138. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +2 -2
  139. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +2 -2
  140. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +4 -4
  141. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +4 -4
  142. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +3 -3
  143. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  144. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +3 -3
  145. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  146. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +2 -2
  147. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +2 -2
  148. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs +1 -1
  149. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +1 -1
  150. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  151. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  152. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  153. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  154. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +1 -1
  155. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  156. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  157. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  158. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  159. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  160. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +1 -1
  161. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +1 -1
  162. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  163. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  164. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  165. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  166. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  167. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  168. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
  169. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  170. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  171. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  172. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +7 -5
  173. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
  174. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +8 -6
  175. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  176. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +1 -1
  177. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  178. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +2 -2
  179. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  180. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +2 -2
  181. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  182. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +2 -2
  183. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  184. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +2 -2
  185. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +2 -2
  186. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +2 -2
  187. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +2 -2
  188. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +7 -5
  189. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  190. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +7 -5
  191. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  192. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +6 -6
  193. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  194. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +6 -6
  195. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  196. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +9 -7
  197. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
  198. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +9 -7
  199. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  200. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +3 -1
  201. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  202. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +3 -1
  203. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +4 -4
  205. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -4
  206. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  207. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  208. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +9 -9
  209. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +9 -9
  210. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  211. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  212. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +4 -4
  213. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +4 -4
  214. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  215. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  216. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +9 -9
  217. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +9 -9
  218. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +9 -9
  219. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +9 -9
  220. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +8 -8
  221. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +8 -8
  222. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +5 -5
  223. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  224. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +2 -2
  225. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +2 -2
  226. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
  227. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  228. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +3 -3
  229. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  230. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
  231. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  232. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  233. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  234. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  235. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  236. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  237. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  238. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +1 -1
  239. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +1 -1
  240. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +4 -2
  241. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  242. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +5 -3
  243. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  244. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +1 -1
  245. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +1 -1
  246. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -2
  247. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  248. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +5 -3
  249. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  250. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.cjs → THC.vue2.cjs} +2 -2
  251. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +1 -0
  252. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.js → THC.vue2.js} +2 -2
  253. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +1 -0
  254. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  255. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  256. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +5 -5
  257. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -5
  258. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  259. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  260. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +4 -4
  261. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  262. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +9 -9
  263. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  264. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +9 -9
  265. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  266. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +2 -2
  267. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  268. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +3 -3
  269. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  270. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +2 -2
  271. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +2 -2
  272. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +2 -2
  273. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +2 -2
  274. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +8 -6
  275. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  276. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +8 -6
  277. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  278. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  279. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  280. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +2 -2
  281. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +2 -2
  282. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  283. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  284. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +2 -2
  285. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +2 -2
  286. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +3 -3
  287. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +3 -3
  288. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
  289. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  290. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +2 -2
  291. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  292. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +2 -2
  293. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  294. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
  295. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  296. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +4 -4
  297. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +4 -4
  298. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +1 -1
  299. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +1 -1
  300. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +3 -3
  301. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  302. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  303. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  304. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +2 -2
  305. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  306. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.cjs +1 -1
  307. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  308. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  309. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  310. package/dist/martyrs.cjs.js +1 -1
  311. package/dist/martyrs.css +1 -1
  312. package/dist/martyrs.es.js +1 -1
  313. package/dist/style.css +6 -6
  314. package/dist/{web-C6njYH1C.js → web-BkaOiiSn.js} +1 -1
  315. package/dist/{web-CVdyxtLD.cjs → web-CROHFHoW.cjs} +1 -1
  316. package/package.json +1 -1
  317. package/src/builder/modes/ssr.prod.js +2 -0
  318. package/src/builder/modes/ssr.rspack.dev.js +2 -0
  319. package/src/builder/templates/page.js +4 -0
  320. package/src/builder/templates/screen.js +4 -0
  321. package/src/modules/events/components/pages/Event.vue +2 -0
  322. package/src/modules/globals/views/classes/globals.app.js +76 -48
  323. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +2 -0
  324. package/src/modules/globals/views/components/sections/Filters.vue +1 -1
  325. package/src/modules/globals/views/utils/vue-app-renderer.js +25 -1
  326. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  327. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -0
  328. package/src/modules/orders/components/blocks/CardOrderVar1.vue +12 -1
  329. package/src/modules/orders/components/pages/OrderBackoffice.vue +2 -0
  330. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +1 -1
  331. package/src/modules/orders/components/pages/Orders.vue +2 -0
  332. package/src/modules/orders/components/partials/ShopCart.vue +2 -0
  333. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -0
  334. package/src/modules/products/components/elements/Price.vue +3 -0
  335. package/src/modules/products/components/pages/Products.vue +1 -1
  336. package/src/modules/products/components/sections/EditVariants.vue +2 -0
  337. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +0 -1
  338. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  339. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +0 -1
  340. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +0 -1
  341. package/dist/martyrs/src/components/Select/Select.vue.js.map +0 -1
  342. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  343. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  344. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue.cjs.map +0 -1
  345. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue.js.map +0 -1
  346. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +0 -1
  347. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +0 -1
@@ -1,95 +1,2 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const vue = require("vue");
4
- const vueDraggableNext_esmBundler = require("../../../../node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs");
5
- const UploadImageMultiple = require("../UploadImageMultiple/UploadImageMultiple.vue.cjs");
6
- const IconCross = require("../../modules/icons/navigation/IconCross.vue.cjs");
7
- require("./EditImages.vue2.cjs");
8
- const _hoisted_1 = { class: "flex-nowrap flex gap-small" };
9
- const _hoisted_2 = { class: "pos-relative" };
10
- const _hoisted_3 = ["src"];
11
- const _hoisted_4 = {
12
- key: 1,
13
- class: "i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small"
14
- };
15
- const _sfc_main = {
16
- __name: "EditImages",
17
- props: {
18
- images: Array,
19
- text: Object,
20
- options: Object,
21
- uploadPath: {
22
- type: Object,
23
- default: "unsorted"
24
- }
25
- },
26
- emits: ["update:images"],
27
- setup(__props, { emit: __emit }) {
28
- const props = __props;
29
- const emit = __emit;
30
- const localImages = vue.ref([...props.images]);
31
- vue.watchEffect(() => {
32
- localImages.value = [...props.images];
33
- });
34
- const emitChanges = () => {
35
- emit("update:images", localImages.value);
36
- };
37
- const onImagesUpdate = (newImages) => {
38
- localImages.value = [...localImages.value, ...newImages];
39
- emitChanges();
40
- };
41
- const deleteImage = (index) => {
42
- localImages.value.splice(index, 1);
43
- emitChanges();
44
- };
45
- return (_ctx, _cache) => {
46
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
47
- localImages.value.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vueDraggableNext_esmBundler.VueDraggableNext), {
48
- key: 0,
49
- class: "gap-small flex dragArea list-group w-full",
50
- modelValue: localImages.value,
51
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localImages.value = $event),
52
- onChange: emitChanges
53
- }, {
54
- default: vue.withCtx(() => [
55
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(localImages.value, (image, index) => {
56
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
57
- vue.createElementVNode("img", {
58
- loading: "lazy",
59
- class: "i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden",
60
- src: (_ctx.FILE_SERVER_URL || "") + image
61
- }, null, 8, _hoisted_3),
62
- vue.createVNode(IconCross.default, {
63
- onClick: ($event) => deleteImage(index),
64
- class: "cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro"
65
- }, null, 8, ["onClick"])
66
- ]);
67
- }), 256))
68
- ]),
69
- _: 1
70
- }, 8, ["modelValue"])) : vue.createCommentVNode("", true),
71
- localImages.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
72
- vue.createVNode(UploadImageMultiple.default, {
73
- "onUpdate:images": onImagesUpdate,
74
- text: "Add",
75
- options: {
76
- showText: false
77
- },
78
- uploadPath: "photos",
79
- class: "radius-big"
80
- })
81
- ])) : vue.createCommentVNode("", true),
82
- localImages.value.length < 1 ? (vue.openBlock(), vue.createBlock(UploadImageMultiple.default, {
83
- key: 2,
84
- "onUpdate:images": onImagesUpdate,
85
- uploadPath: props.uploadPath,
86
- text: props.text,
87
- options: props.options,
88
- class: "w-100 pd-medium"
89
- }, null, 8, ["uploadPath", "text", "options"])) : vue.createCommentVNode("", true)
90
- ]);
91
- };
92
- }
93
- };
94
- exports.default = _sfc_main;
95
2
  //# sourceMappingURL=EditImages.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditImages.vue.cjs","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":["ref","watchEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAcA,IAAAA,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzCC,QAAAA,YAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EditImages.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,95 +1,2 @@
1
- import { ref, watchEffect, createElementBlock, openBlock, createBlock, createCommentVNode, unref, withCtx, Fragment, renderList, createElementVNode, createVNode } from "vue";
2
- import { VueDraggableNext } from "../../../../node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js";
3
- import _sfc_main$2 from "../UploadImageMultiple/UploadImageMultiple.vue.js";
4
- import _sfc_main$1 from "../../modules/icons/navigation/IconCross.vue.js";
5
- import "./EditImages.vue2.js";
6
- const _hoisted_1 = { class: "flex-nowrap flex gap-small" };
7
- const _hoisted_2 = { class: "pos-relative" };
8
- const _hoisted_3 = ["src"];
9
- const _hoisted_4 = {
10
- key: 1,
11
- class: "i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small"
12
- };
13
- const _sfc_main = {
14
- __name: "EditImages",
15
- props: {
16
- images: Array,
17
- text: Object,
18
- options: Object,
19
- uploadPath: {
20
- type: Object,
21
- default: "unsorted"
22
- }
23
- },
24
- emits: ["update:images"],
25
- setup(__props, { emit: __emit }) {
26
- const props = __props;
27
- const emit = __emit;
28
- const localImages = ref([...props.images]);
29
- watchEffect(() => {
30
- localImages.value = [...props.images];
31
- });
32
- const emitChanges = () => {
33
- emit("update:images", localImages.value);
34
- };
35
- const onImagesUpdate = (newImages) => {
36
- localImages.value = [...localImages.value, ...newImages];
37
- emitChanges();
38
- };
39
- const deleteImage = (index) => {
40
- localImages.value.splice(index, 1);
41
- emitChanges();
42
- };
43
- return (_ctx, _cache) => {
44
- return openBlock(), createElementBlock("div", _hoisted_1, [
45
- localImages.value.length > 0 ? (openBlock(), createBlock(unref(VueDraggableNext), {
46
- key: 0,
47
- class: "gap-small flex dragArea list-group w-full",
48
- modelValue: localImages.value,
49
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localImages.value = $event),
50
- onChange: emitChanges
51
- }, {
52
- default: withCtx(() => [
53
- (openBlock(true), createElementBlock(Fragment, null, renderList(localImages.value, (image, index) => {
54
- return openBlock(), createElementBlock("div", _hoisted_2, [
55
- createElementVNode("img", {
56
- loading: "lazy",
57
- class: "i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden",
58
- src: (_ctx.FILE_SERVER_URL || "") + image
59
- }, null, 8, _hoisted_3),
60
- createVNode(_sfc_main$1, {
61
- onClick: ($event) => deleteImage(index),
62
- class: "cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro"
63
- }, null, 8, ["onClick"])
64
- ]);
65
- }), 256))
66
- ]),
67
- _: 1
68
- }, 8, ["modelValue"])) : createCommentVNode("", true),
69
- localImages.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
70
- createVNode(_sfc_main$2, {
71
- "onUpdate:images": onImagesUpdate,
72
- text: "Add",
73
- options: {
74
- showText: false
75
- },
76
- uploadPath: "photos",
77
- class: "radius-big"
78
- })
79
- ])) : createCommentVNode("", true),
80
- localImages.value.length < 1 ? (openBlock(), createBlock(_sfc_main$2, {
81
- key: 2,
82
- "onUpdate:images": onImagesUpdate,
83
- uploadPath: props.uploadPath,
84
- text: props.text,
85
- options: props.options,
86
- class: "w-100 pd-medium"
87
- }, null, 8, ["uploadPath", "text", "options"])) : createCommentVNode("", true)
88
- ]);
89
- };
90
- }
91
- };
92
- export {
93
- _sfc_main as default
94
- };
1
+
95
2
  //# sourceMappingURL=EditImages.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditImages.vue.js","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAc,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzC,gBAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EditImages.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,95 @@
1
1
  "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const vue = require("vue");
4
+ const vueDraggableNext_esmBundler = require("../../../../node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.cjs");
5
+ const UploadImageMultiple = require("../UploadImageMultiple/UploadImageMultiple.vue.cjs");
6
+ const IconCross = require("../../modules/icons/navigation/IconCross.vue.cjs");
7
+ require("./EditImages.vue.cjs");
8
+ const _hoisted_1 = { class: "flex-nowrap flex gap-small" };
9
+ const _hoisted_2 = { class: "pos-relative" };
10
+ const _hoisted_3 = ["src"];
11
+ const _hoisted_4 = {
12
+ key: 1,
13
+ class: "i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small"
14
+ };
15
+ const _sfc_main = {
16
+ __name: "EditImages",
17
+ props: {
18
+ images: Array,
19
+ text: Object,
20
+ options: Object,
21
+ uploadPath: {
22
+ type: Object,
23
+ default: "unsorted"
24
+ }
25
+ },
26
+ emits: ["update:images"],
27
+ setup(__props, { emit: __emit }) {
28
+ const props = __props;
29
+ const emit = __emit;
30
+ const localImages = vue.ref([...props.images]);
31
+ vue.watchEffect(() => {
32
+ localImages.value = [...props.images];
33
+ });
34
+ const emitChanges = () => {
35
+ emit("update:images", localImages.value);
36
+ };
37
+ const onImagesUpdate = (newImages) => {
38
+ localImages.value = [...localImages.value, ...newImages];
39
+ emitChanges();
40
+ };
41
+ const deleteImage = (index) => {
42
+ localImages.value.splice(index, 1);
43
+ emitChanges();
44
+ };
45
+ return (_ctx, _cache) => {
46
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
47
+ localImages.value.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vueDraggableNext_esmBundler.VueDraggableNext), {
48
+ key: 0,
49
+ class: "gap-small flex dragArea list-group w-full",
50
+ modelValue: localImages.value,
51
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localImages.value = $event),
52
+ onChange: emitChanges
53
+ }, {
54
+ default: vue.withCtx(() => [
55
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(localImages.value, (image, index) => {
56
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
57
+ vue.createElementVNode("img", {
58
+ loading: "lazy",
59
+ class: "i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden",
60
+ src: (_ctx.FILE_SERVER_URL || "") + image
61
+ }, null, 8, _hoisted_3),
62
+ vue.createVNode(IconCross.default, {
63
+ onClick: ($event) => deleteImage(index),
64
+ class: "cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro"
65
+ }, null, 8, ["onClick"])
66
+ ]);
67
+ }), 256))
68
+ ]),
69
+ _: 1
70
+ }, 8, ["modelValue"])) : vue.createCommentVNode("", true),
71
+ localImages.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
72
+ vue.createVNode(UploadImageMultiple.default, {
73
+ "onUpdate:images": onImagesUpdate,
74
+ text: "Add",
75
+ options: {
76
+ showText: false
77
+ },
78
+ uploadPath: "photos",
79
+ class: "radius-big"
80
+ })
81
+ ])) : vue.createCommentVNode("", true),
82
+ localImages.value.length < 1 ? (vue.openBlock(), vue.createBlock(UploadImageMultiple.default, {
83
+ key: 2,
84
+ "onUpdate:images": onImagesUpdate,
85
+ uploadPath: props.uploadPath,
86
+ text: props.text,
87
+ options: props.options,
88
+ class: "w-100 pd-medium"
89
+ }, null, 8, ["uploadPath", "text", "options"])) : vue.createCommentVNode("", true)
90
+ ]);
91
+ };
92
+ }
93
+ };
94
+ exports.default = _sfc_main;
2
95
  //# sourceMappingURL=EditImages.vue2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditImages.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"EditImages.vue2.cjs","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":["ref","watchEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAcA,IAAAA,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzCC,QAAAA,YAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,95 @@
1
-
1
+ import { ref, watchEffect, createElementBlock, openBlock, createBlock, createCommentVNode, unref, withCtx, Fragment, renderList, createElementVNode, createVNode } from "vue";
2
+ import { VueDraggableNext } from "../../../../node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.6_vue@3.5.21_typescript@5.9.2_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js";
3
+ import _sfc_main$2 from "../UploadImageMultiple/UploadImageMultiple.vue.js";
4
+ import _sfc_main$1 from "../../modules/icons/navigation/IconCross.vue.js";
5
+ import "./EditImages.vue.js";
6
+ const _hoisted_1 = { class: "flex-nowrap flex gap-small" };
7
+ const _hoisted_2 = { class: "pos-relative" };
8
+ const _hoisted_3 = ["src"];
9
+ const _hoisted_4 = {
10
+ key: 1,
11
+ class: "i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small"
12
+ };
13
+ const _sfc_main = {
14
+ __name: "EditImages",
15
+ props: {
16
+ images: Array,
17
+ text: Object,
18
+ options: Object,
19
+ uploadPath: {
20
+ type: Object,
21
+ default: "unsorted"
22
+ }
23
+ },
24
+ emits: ["update:images"],
25
+ setup(__props, { emit: __emit }) {
26
+ const props = __props;
27
+ const emit = __emit;
28
+ const localImages = ref([...props.images]);
29
+ watchEffect(() => {
30
+ localImages.value = [...props.images];
31
+ });
32
+ const emitChanges = () => {
33
+ emit("update:images", localImages.value);
34
+ };
35
+ const onImagesUpdate = (newImages) => {
36
+ localImages.value = [...localImages.value, ...newImages];
37
+ emitChanges();
38
+ };
39
+ const deleteImage = (index) => {
40
+ localImages.value.splice(index, 1);
41
+ emitChanges();
42
+ };
43
+ return (_ctx, _cache) => {
44
+ return openBlock(), createElementBlock("div", _hoisted_1, [
45
+ localImages.value.length > 0 ? (openBlock(), createBlock(unref(VueDraggableNext), {
46
+ key: 0,
47
+ class: "gap-small flex dragArea list-group w-full",
48
+ modelValue: localImages.value,
49
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localImages.value = $event),
50
+ onChange: emitChanges
51
+ }, {
52
+ default: withCtx(() => [
53
+ (openBlock(true), createElementBlock(Fragment, null, renderList(localImages.value, (image, index) => {
54
+ return openBlock(), createElementBlock("div", _hoisted_2, [
55
+ createElementVNode("img", {
56
+ loading: "lazy",
57
+ class: "i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden",
58
+ src: (_ctx.FILE_SERVER_URL || "") + image
59
+ }, null, 8, _hoisted_3),
60
+ createVNode(_sfc_main$1, {
61
+ onClick: ($event) => deleteImage(index),
62
+ class: "cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro"
63
+ }, null, 8, ["onClick"])
64
+ ]);
65
+ }), 256))
66
+ ]),
67
+ _: 1
68
+ }, 8, ["modelValue"])) : createCommentVNode("", true),
69
+ localImages.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
70
+ createVNode(_sfc_main$2, {
71
+ "onUpdate:images": onImagesUpdate,
72
+ text: "Add",
73
+ options: {
74
+ showText: false
75
+ },
76
+ uploadPath: "photos",
77
+ class: "radius-big"
78
+ })
79
+ ])) : createCommentVNode("", true),
80
+ localImages.value.length < 1 ? (openBlock(), createBlock(_sfc_main$2, {
81
+ key: 2,
82
+ "onUpdate:images": onImagesUpdate,
83
+ uploadPath: props.uploadPath,
84
+ text: props.text,
85
+ options: props.options,
86
+ class: "w-100 pd-medium"
87
+ }, null, 8, ["uploadPath", "text", "options"])) : createCommentVNode("", true)
88
+ ]);
89
+ };
90
+ }
91
+ };
92
+ export {
93
+ _sfc_main as default
94
+ };
2
95
  //# sourceMappingURL=EditImages.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditImages.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"EditImages.vue2.js","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-solid br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAc,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzC,gBAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,10 +9,10 @@ const Dropdown = require("../Dropdown/Dropdown.vue2.cjs");
9
9
  const Calendar = require("../Calendar/Calendar.vue2.cjs");
10
10
  const BlockSearch = require("../../modules/globals/views/components/blocks/BlockSearch.vue.cjs");
11
11
  const BlockSorting = require("../../modules/globals/views/components/blocks/BlockSorting.vue.cjs");
12
- const Filters = require("../../modules/globals/views/components/sections/Filters.vue.cjs");
12
+ const Filters = require("../../modules/globals/views/components/sections/Filters.vue2.cjs");
13
13
  const ButtonSort = require("../../modules/globals/views/components/elements/ButtonSort.vue.cjs");
14
14
  const ButtonDate = require("../../modules/globals/views/components/elements/ButtonDate.vue.cjs");
15
- ;/* empty css */
15
+ ;/* empty css */
16
16
  const _hoisted_1 = {
17
17
  key: 0,
18
18
  style: { "transform": "scale(1)" },
@@ -427,4 +427,4 @@ const _sfc_main = {
427
427
  }
428
428
  };
429
429
  exports.default = _sfc_main;
430
- //# sourceMappingURL=Feed.vue.cjs.map
430
+ //# sourceMappingURL=Feed.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Feed.vue2.cjs","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/globals/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["useGlobalMixins","_useModel","ref","computed","search","watch","onMounted","onUnmounted"],"mappings":"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"}
@@ -7,10 +7,10 @@ import _sfc_main$2 from "../Dropdown/Dropdown.vue2.js";
7
7
  import Calendar from "../Calendar/Calendar.vue2.js";
8
8
  import _sfc_main$1 from "../../modules/globals/views/components/blocks/BlockSearch.vue.js";
9
9
  import _sfc_main$5 from "../../modules/globals/views/components/blocks/BlockSorting.vue.js";
10
- import Filters from "../../modules/globals/views/components/sections/Filters.vue.js";
10
+ import Filters from "../../modules/globals/views/components/sections/Filters.vue2.js";
11
11
  import _sfc_main$4 from "../../modules/globals/views/components/elements/ButtonSort.vue.js";
12
12
  import _sfc_main$3 from "../../modules/globals/views/components/elements/ButtonDate.vue.js";
13
- /* empty css */
13
+ /* empty css */
14
14
  const _hoisted_1 = {
15
15
  key: 0,
16
16
  style: { "transform": "scale(1)" },
@@ -427,4 +427,4 @@ const _sfc_main = {
427
427
  export {
428
428
  _sfc_main as default
429
429
  };
430
- //# sourceMappingURL=Feed.vue.js.map
430
+ //# sourceMappingURL=Feed.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.vue.cjs","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/globals/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["useGlobalMixins","_useModel","ref","computed","search","watch","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8LA,UAAM,EAAE,eAAc,IAAKA,uBAAe;AAE1C,UAAM,SAASC,IAAAA,SAAW,SAAC,QAAQ;AACnC,UAAM,OAAOA,IAAAA,SAAW,SAAC,MAAM;AAC/B,UAAM,SAASA,IAAAA,SAAW,SAAC,QAAQ;AACnC,UAAM,OAAOA,IAAAA,SAAW,SAAC,MAAM;AAC/B,UAAM,QAAQA,IAAAA,SAAW,SAAC,OAAO;AAGjC,UAAM,gBAAgBC,IAAAA,IAAI,CAAA,CAAE;AAG5B,UAAM,YAAYC,IAAAA,SAAS;AAAA,MACzB,KAAK,MAAM,MAAM,SAAS,cAAc;AAAA,MACxC,KAAK,CAAC,QAAQ;AACZ,YAAI,MAAM,UAAU,QAAW;AAC7B,gBAAM,QAAQ;AAAA,QAChB,OAAO;AACL,wBAAc,QAAQ;AAAA,QACxB;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,eAAeA,IAAAA,SAAS,MAAM;AAClC,UAAI,CAAC,OAAO,OAAO,QAAS,QAAO,CAAA;AAEnC,aAAO,OAAO,MAAM,QAAQ,IAAI,UAAQ;AAAA,QACtC,KAAK,IAAI;AAAA,QACT,OAAO,IAAI;AAAA,QACX,MAAM;AAAA,QACN,SAAS,IAAI,WAAW,CAAA;AAAA,QACxB,cAAc;AAAA,MAClB,EAAI;AAAA,IACJ,CAAC;AAGD,UAAM,QAAQ;AAuEd,UAAM,eAAeD,IAAAA,IAAI,KAAK;AAE9B,QAAI,YAAYA,IAAAA,IAAI,IAAI;AACxB,QAAI,iBAAiBA,IAAAA,IAAI,KAAK;AAC9B,QAAI,WAAWA,IAAAA,IAAI,IAAI;AAEvB,QAAI,cAAcA,IAAAA,IAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,OAAO,CAAC;AACjE,QAAI,eAAeA,IAAAA,IAAI,MAAM,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,EAAE;AAErE,QAAI,gBAAgBA,IAAAA,IAAI,EAAE;AAC1B,QAAI,cAAcA,IAAAA,IAAI,KAAK;AAE3B,QAAI,YAAY;AAEhB,aAAS,SAAS,IAAI,OAAO;AAC3B,UAAI,YAAY;AAChB,aAAO,IAAI,SAAS;AAClB,qBAAa,SAAS;AACtB,oBAAY,WAAW,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,UAAM,kBAAkB,SAAS,CAAC,UAAU;AAC1C,kBAAY,QAAQ;AACpB,oBAAc,QAAQ;AACtB,kBAAY,QAAQ;AACpB,mBAAa,QAAQ;AACrB,iBAAU;AAAA,IACZ,GAAG,GAAG;AAEN,aAAS,aAAaE,SAAQ;AAC5B,sBAAgBA,OAAM;AAAA,IACxB;AAEA,UAAM,mBAAmB,CAAC,QAAQ;AAChC,aAAO,OAAO;AAAA,QACZ,OAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,MAAM,SAAS,IAAI;AAAA,MAC5D;AAAA,IACA;AAEA,UAAM,gBAAgB,YAAY;AAChC,UAAI,CAAC,aAAa,SAAS,eAAe,OAAO;AAC/C;AAAA,MACF;AAEA,qBAAe,QAAQ;AAEvB,YAAM,mBAAmB,EAAE;AAE3B,kBAAY,SAAS,aAAa;AAElC,UAAI;AACF,cAAM,YAAY;AAAA,UAChB,MAAM,YAAY;AAAA,UAClB,OAAO,aAAa;AAAA,UACpB,QAAQ,cAAc;AAAA,UACtB,WAAW,KAAK,OAAO;AAAA,UACvB,SAAS,KAAK,OAAO;AAAA,UACrB,WAAW,KAAK,OAAO;AAAA,UACvB,WAAW,KAAK,OAAO;AAAA,UACvB,GAAG,MAAM;AAAA,QACf;AAEI,cAAM,SAAS,iBAAiB,SAAS;AAEzC,cAAM,OAAO,MAAM,MAAM,MAAM,KAAK,MAAM;AAE1C,YAAI,qBAAqB,WAAW;AAClC;AAAA,QACF;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,uBAAa,QAAQ;AAAA,QACvB,WAAW,KAAK,SAAS,aAAa,OAAO;AAC3C,uBAAa,QAAQ;AAAA,QACvB,OAAO;AACL,uBAAa,QAAQ;AAAA,QACvB;AAGA,kBAAU,QAAQ,CAAC,GAAG,UAAU,OAAO,GAAG,IAAI;AAAA,MAEhD,SAAS,OAAO;AACd,gBAAQ,MAAM,oBAAoB,KAAK;AAAA,MACzC,UAAC;AACC,YAAI,qBAAqB,WAAW;AAClC,yBAAe,QAAQ;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,aAAa,YAAY;AAC7B,gBAAU,QAAQ;AAElB,YAAM,mBAAmB,EAAE;AAE3B,UAAI,YAAY,OAAO;AACrB,kBAAU,QAAQ,CAAA;AAClB,oBAAY,QAAQ;AAAA,MACtB;AAEA,UAAI;AACF,cAAM,YAAY;AAAA,UAChB,MAAM,YAAY;AAAA,UAClB,OAAO,aAAa;AAAA,UACpB,QAAQ,cAAc;AAAA,UACtB,WAAW,KAAK,OAAO;AAAA,UACvB,SAAS,KAAK,OAAO;AAAA,UACrB,WAAW,KAAK,OAAO;AAAA,UACvB,WAAW,KAAK,OAAO;AAAA,UACvB,GAAG,MAAM;AAAA,QACf;AAEI,cAAM,SAAS,iBAAiB,SAAS;AAEzC,cAAM,OAAO,MAAM,MAAM,MAAM,KAAK,MAAM;AAE1C,YAAI,qBAAqB,WAAW;AAClC;AAAA,QACF;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,uBAAa,QAAQ;AAAA,QACvB,WAAW,KAAK,SAAS,aAAa,OAAO;AAC3C,uBAAa,QAAQ;AAAA,QACvB,OAAO;AACL,uBAAa,QAAQ;AAAA,QACvB;AAGA,kBAAU,QAAQ;AAAA,MAEpB,SAAS,OAAO;AACd,gBAAQ,MAAM,gBAAgB,KAAK;AAAA,MACrC,UAAC;AACC,YAAI,qBAAqB,WAAW;AAClC,oBAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAEAC,QAAAA;AAAAA,MACE,CAAC,MAAM,MAAM,UAAU,MAAM,KAAK,OAAO,OAAO,EAAC,GAAG,KAAK,MAAK,IAAI,OAAO,EAAC,GAAG,MAAM,QAAO,EAAE;AAAA,MAC5F,CAAC,CAAC,aAAa,SAAS,SAAS,UAAU,GAAG,CAAC,aAAa,SAAS,SAAS,UAAU,MAAM;AAC5F,YACE,gBAAgB,eAChB,YAAY,WACZ,SAAS,UAAU,SAAS,SAC5B,SAAS,UAAU,SAAS,SAC5B,KAAK,UAAU,UAAU,MAAM,KAAK,UAAU,UAAU,GACxD;AACA,sBAAY,QAAQ;AACpB,qBAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,EAAE,MAAM,KAAI;AAAA,IACd;AAEA,QAAI,WAAW;AAEfC,QAAAA,UAAU,YAAY;AACpB,YAAM,WAAU;AAEhB,UAAI,OAAO,WAAW,eAAe,CAAC,MAAM,gBAAgB,MAAM,UAAU;AAC1E,mBAAW,IAAI,qBAAqB,aAAW;AAC7C,cAAI,QAAQ,KAAK,WAAS,MAAM,cAAc,GAAG;AAC/C,0BAAa;AAAA,UACf;AAAA,QACF,CAAC;AAED,YAAI,SAAS,MAAO,UAAS,QAAQ,SAAS,KAAK;AAAA,MACrD;AAAA,IACF,CAAC;AAEDC,QAAAA,YAAY,MAAM;AAChB,UAAI,UAAU;AACZ,iBAAS,WAAU;AAAA,MACrB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Feed.vue2.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/globals/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const IconShow = require("../../modules/icons/actions/IconShow.vue.cjs");
5
- ;/* empty css */
5
+ ;/* empty css */
6
6
  const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.cjs");
7
7
  const _hoisted_1 = {
8
8
  key: 2,
@@ -158,4 +158,4 @@ const _sfc_main = {
158
158
  };
159
159
  const Field = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-36998019"]]);
160
160
  exports.default = Field;
161
- //# sourceMappingURL=Field.vue.cjs.map
161
+ //# sourceMappingURL=Field.vue2.cjs.map