@ozdao/martyrs 0.2.470 → 0.2.472

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 (284) hide show
  1. package/dist/{Media-CR0V1zvB.js → Media-DW8RLbfM.js} +1 -1
  2. package/dist/{Media-C4Ges_Sd.mjs → Media-y_TX6us_.mjs} +1 -1
  3. package/dist/_virtual/index.cjs +1 -1
  4. package/dist/_virtual/index.js +1 -1
  5. package/dist/auth.server.js +1 -1
  6. package/dist/auth.server.mjs +1 -1
  7. package/dist/chats.server.js +1 -1
  8. package/dist/chats.server.mjs +1 -1
  9. package/dist/community.server.js +1 -1
  10. package/dist/community.server.mjs +1 -1
  11. package/dist/events.server.js +1 -1
  12. package/dist/events.server.mjs +1 -1
  13. package/dist/files.server.js +1 -1
  14. package/dist/files.server.mjs +1 -1
  15. package/dist/gallery.server.js +1 -1
  16. package/dist/gallery.server.mjs +1 -1
  17. package/dist/{index-DQqZReAr.js → index-CVXl1rB5.js} +0 -1
  18. package/dist/{index-DICZTQ-1.mjs → index-Df8vtZx7.mjs} +0 -1
  19. package/dist/{main-CsZAG5Wz.js → main-CCfQH-Dd.js} +2 -2
  20. package/dist/{main-CTcal9qN.mjs → main-CgmHzhq5.mjs} +74 -74
  21. package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs +1 -1
  22. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs.map +1 -0
  23. package/dist/{node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_ → martyrs}/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js +1 -1
  24. package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
  25. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -0
  26. package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
  27. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.cjs +5 -0
  28. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.cjs.map +1 -0
  29. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  30. package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  31. package/dist/{node_modules/.pnpm/uuid@11.1.0 → martyrs}/node_modules/uuid/dist/esm-browser/rng.cjs +4 -4
  32. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.cjs.map +1 -0
  33. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
  34. package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
  35. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.cjs +17 -0
  36. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.cjs.map +1 -0
  37. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
  38. package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
  39. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.cjs +13 -0
  40. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.cjs.map +1 -0
  41. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
  42. package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
  43. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.cjs +8 -0
  44. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.cjs.map +1 -0
  45. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  46. package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  47. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
  48. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  49. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  50. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  51. package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
  52. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
  53. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  54. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  55. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +5 -5
  56. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +5 -5
  58. package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/Tab/{Tab.vue2.cjs → Tab.vue.cjs} +2 -2
  60. package/dist/martyrs/src/components/Tab/{Tab.vue2.js.map → Tab.vue.cjs.map} +1 -1
  61. package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
  62. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
  63. package/dist/martyrs/src/components/Tree/Tree.vue.cjs +3 -1
  64. package/dist/martyrs/src/components/Tree/Tree.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/components/Tree/Tree.vue.js +3 -1
  66. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  81. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  85. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +1 -0
  86. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  87. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -0
  88. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  89. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +1 -1
  90. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  91. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  93. package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs +107 -21
  94. package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs.map +1 -1
  95. package/dist/martyrs/src/modules/globals/views/classes/globals.store.js +107 -21
  96. package/dist/martyrs/src/modules/globals/views/classes/globals.store.js.map +1 -1
  97. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +10 -14
  98. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  99. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +12 -16
  100. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  103. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +7 -13
  104. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  105. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +7 -13
  106. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  107. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +6 -7
  108. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +7 -8
  110. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  111. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  113. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  115. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  117. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
  118. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
  119. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +2 -2
  120. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  121. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  123. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  125. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  127. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  129. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  130. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  131. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  132. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  133. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +34 -13
  134. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  135. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +35 -14
  136. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +20 -9
  138. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +21 -10
  140. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
  143. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  145. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -1
  146. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  147. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -1
  148. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  151. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  153. package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.js +1 -1
  155. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  157. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
  159. package/dist/martyrs.cjs.js +1 -1
  160. package/dist/martyrs.css +1 -1
  161. package/dist/martyrs.es.js +1 -1
  162. package/dist/notifications.server.js +35 -2
  163. package/dist/notifications.server.mjs +35 -2
  164. package/dist/orders.server.js +3 -3
  165. package/dist/orders.server.mjs +3 -3
  166. package/dist/organizations.server.js +1 -1
  167. package/dist/organizations.server.mjs +1 -1
  168. package/dist/products.server.js +78 -53
  169. package/dist/products.server.mjs +78 -53
  170. package/dist/rents.server.js +1 -1
  171. package/dist/rents.server.mjs +1 -1
  172. package/dist/style.css +37 -38
  173. package/dist/wallet.server.js +1 -1
  174. package/dist/wallet.server.mjs +1 -1
  175. package/package.json +2 -1
  176. package/src/components/Feed/Feed.vue +2 -7
  177. package/src/components/Skeleton/Skeleton.vue +4 -5
  178. package/src/components/Tree/Tree.vue +5 -2
  179. package/src/modules/auth/controllers/middlewares/authJwt.js +1 -1
  180. package/src/modules/auth/views/store/auth.js +2 -1
  181. package/src/modules/globals/controllers/classes/globals.crud.js +2 -2
  182. package/src/modules/globals/views/classes/globals.store.js +119 -31
  183. package/src/modules/globals/views/components/partials/Navigation.vue +11 -10
  184. package/src/modules/globals/views/utils/vue-app-renderer.js +7 -16
  185. package/src/modules/icons/entities/IconMusic.vue +14 -0
  186. package/src/modules/icons/navigation/IconCheck.vue +31 -0
  187. package/src/modules/icons/navigation/IconHeart.vue +26 -0
  188. package/src/modules/icons/navigation/IconPause.vue +31 -0
  189. package/src/modules/icons/navigation/IconPlay.vue +17 -0
  190. package/src/modules/icons/navigation/IconRefresh.vue +31 -0
  191. package/src/modules/icons/navigation/IconShuffle.vue +31 -0
  192. package/src/modules/icons/navigation/IconVolume.vue +31 -0
  193. package/src/modules/music/components/SidebarMusic.vue +156 -0
  194. package/src/modules/music/components/cards/AlbumCard.vue +107 -0
  195. package/src/modules/music/components/cards/ArtistCard.vue +37 -0
  196. package/src/modules/music/components/cards/PlaylistCard.vue +100 -0
  197. package/src/modules/music/components/cards/TrackCard.vue +86 -0
  198. package/src/modules/music/components/forms/PlaylistForm.vue +156 -0
  199. package/src/modules/music/components/forms/SearchForm.vue +82 -0
  200. package/src/modules/music/components/forms/UploadForm.vue +313 -0
  201. package/src/modules/music/components/layouts/MusicLayout.vue +137 -0
  202. package/src/modules/music/components/lists/AlbumList.vue +25 -0
  203. package/src/modules/music/components/lists/ArtistList.vue +25 -0
  204. package/src/modules/music/components/lists/PlaylistList.vue +25 -0
  205. package/src/modules/music/components/lists/TrackList.vue +175 -0
  206. package/src/modules/music/components/pages/AlbumDetail.vue +265 -0
  207. package/src/modules/music/components/pages/ArtistDetail.vue +247 -0
  208. package/src/modules/music/components/pages/MusicHome.vue +177 -0
  209. package/src/modules/music/components/pages/MusicLibrary.vue +192 -0
  210. package/src/modules/music/components/pages/MusicUpload.vue +44 -0
  211. package/src/modules/music/components/pages/PlaylistDetail.vue +504 -0
  212. package/src/modules/music/components/pages/SearchResults.vue +397 -0
  213. package/src/modules/music/components/pages/TrackDetail.vue +143 -0
  214. package/src/modules/music/components/player/MusicPlayer.vue +202 -0
  215. package/src/modules/music/components/player/TrackProgress.vue +110 -0
  216. package/src/modules/music/components/player/VolumeControl.vue +98 -0
  217. package/src/modules/music/controllers/album.controller.js +98 -0
  218. package/src/modules/music/controllers/artist.controller.js +111 -0
  219. package/src/modules/music/controllers/genre.controller.js +71 -0
  220. package/src/modules/music/controllers/music.controller.js +174 -0
  221. package/src/modules/music/controllers/playlist.controller.js +182 -0
  222. package/src/modules/music/controllers/search.controller.js +103 -0
  223. package/src/modules/music/controllers/stream.controller.js +106 -0
  224. package/src/modules/music/models/album.model.js +61 -0
  225. package/src/modules/music/models/artist.model.js +67 -0
  226. package/src/modules/music/models/genre.model.js +42 -0
  227. package/src/modules/music/models/play-history.model.js +51 -0
  228. package/src/modules/music/models/playlist.model.js +69 -0
  229. package/src/modules/music/models/track.model.js +94 -0
  230. package/src/modules/music/music.client.js +186 -0
  231. package/src/modules/music/music.server.js +114 -0
  232. package/src/modules/music/policies/music.policies.js +84 -0
  233. package/src/modules/music/router/music.js +77 -0
  234. package/src/modules/music/routes/album.routes.js +62 -0
  235. package/src/modules/music/routes/artist.routes.js +67 -0
  236. package/src/modules/music/routes/genre.routes.js +60 -0
  237. package/src/modules/music/routes/music.routes.js +145 -0
  238. package/src/modules/music/routes/playlist.routes.js +99 -0
  239. package/src/modules/music/routes/search.routes.js +10 -0
  240. package/src/modules/music/routes/stream.routes.js +38 -0
  241. package/src/modules/music/store/albums.js +200 -0
  242. package/src/modules/music/store/artists.js +180 -0
  243. package/src/modules/music/store/player.js +397 -0
  244. package/src/modules/music/store/playlists.js +211 -0
  245. package/src/modules/music/store/search.js +126 -0
  246. package/src/modules/music/store/tracks.js +230 -0
  247. package/src/modules/music/websocket/streaming.handler.js +151 -0
  248. package/src/modules/notifications/controllers/notifications.controller.js +44 -1
  249. package/src/modules/notifications/notifications.server.js +0 -1
  250. package/src/modules/notifications/routes/notifications.routes.js +3 -0
  251. package/src/modules/orders/components/pages/OrderCreate.vue +0 -2
  252. package/src/modules/products/components/blocks/CardCategory.vue +5 -4
  253. package/src/modules/products/components/pages/Categories.vue +38 -20
  254. package/src/modules/products/components/pages/CategoryEdit.vue +16 -7
  255. package/src/modules/products/components/pages/ProductEdit.vue +1 -0
  256. package/src/modules/products/controllers/categories.controller.js +155 -103
  257. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
  258. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  259. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +0 -1
  260. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs.map +0 -1
  261. package/dist/node_modules/.pnpm/@vue_server-renderer@3.5.13_vue@3.5.13_typescript@5.8.3_/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +0 -1
  262. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +0 -1
  263. package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
  264. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.cjs +0 -6
  265. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.cjs.map +0 -1
  266. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
  267. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  268. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.cjs.map +0 -1
  269. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
  270. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  271. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.cjs +0 -11
  272. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.cjs.map +0 -1
  273. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
  274. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  275. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.cjs +0 -21
  276. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.cjs.map +0 -1
  277. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -21
  278. package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  279. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +0 -0
  280. /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
  281. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.cjs +0 -0
  282. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.cjs.map +0 -0
  283. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.js +0 -0
  284. /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.vue.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n\n <div v-if=\"search || date || (sort && !sort.hideButton)\" class=\"mn-b-thin 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 <template\n v-if=\"filter\"\n >\n <div \n :class=\"filter.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-extra aspect-1x1 h-100\"\n >\n <IconFilter @click=\"() => filter.active = !filter.active\" class=\"w-1r h-auto\"/>\n </div>\n\n \n <BottomSheet\n :show=\"filter.active\"\n @toggle=\"() => filter.active = false\"\n class=\"z-index-10 pos-fixed pos-r-0\"\n :class=\"{\n 'pos-t-4r': filter.active,\n 'pos-t-100': !filter.active\n }\"\n >\n <BlockFilter\n v-model:filter=\"filter\"\n :options=\"filter.options\"\n @click_filter=\"() => { filter.active = false } \"\n class=\"h-100 w-100 pd-small pd-b-5r bg-light\"\n />\n </BottomSheet> \n </template>\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-big\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-semi 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-extra 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-semi t-white bg-black\"\n />\n </Dropdown> \n </div>\n\n <TransitionGroup \n v-if=\"isLoading\"\n tag=\"ul\" \n name=\"scaleTransition\" \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=\"isLoading\"\n :key=\"'skeleton-' + i\"\n class=\"radius-medium o-hidden d-block\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-if=\"!isLoading && 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=\"pd-medium mn-b-thin bg-light radius-medium\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n v-if=\"!isLoading && itemsList.length > 0\"\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\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\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, shallowRef, watch } from 'vue';\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/DatePicker/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'\nimport BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.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 search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\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 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});\n \nconst itemsList = shallowRef(items.value || []);\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\n// let sortParam = ref(sort.value?.param || 'createdAt');\n// let sortOrder = ref(sort.value?.order || 'asc');\n\nlet currentSearch = ref('');\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 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 loadMoreItems = async () => {\n isLoadingExtra.value = true\n\n if (hasMoreItems.value) {\n currentSkip.value += currentLimit.value;\n \n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n ...props.options\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 itemsList.value = [...itemsList.value, ...data];\n \n if (items.value) items.value = itemsList.value;\n }\n\n isLoadingExtra.value = false\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n search: currentSearch.value,\n ...props.options\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 itemsList.value = data;\n if (items.value) items.value = itemsList.value;\n isLoading.value = false;\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\n<style>\n.feed-move, /* apply transition to moving elements */\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/* ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
1
+ {"version":3,"file":"Feed.vue.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n\n <div v-if=\"search || date || (sort && !sort.hideButton)\" class=\"mn-b-thin 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 <template\n v-if=\"filter\"\n >\n <div \n :class=\"filter.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-extra aspect-1x1 h-100\"\n >\n <IconFilter @click=\"() => filter.active = !filter.active\" class=\"w-1r h-auto\"/>\n </div>\n\n \n <BottomSheet\n :show=\"filter.active\"\n @toggle=\"() => filter.active = false\"\n class=\"z-index-10 pos-fixed pos-r-0\"\n :class=\"{\n 'pos-t-4r': filter.active,\n 'pos-t-100': !filter.active\n }\"\n >\n <BlockFilter\n v-model:filter=\"filter\"\n :options=\"filter.options\"\n @click_filter=\"() => { filter.active = false } \"\n class=\"h-100 w-100 pd-small pd-b-5r bg-light\"\n />\n </BottomSheet> \n </template>\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-big\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-semi 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-extra 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-semi t-white bg-black\"\n />\n </Dropdown> \n </div>\n\n <TransitionGroup \n v-if=\"isLoading\"\n tag=\"ul\" \n name=\"scaleTransition\" \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=\"radius-medium o-hidden d-block\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-if=\"!isLoading && 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=\"pd-medium mn-b-thin bg-light radius-medium\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n v-if=\"!isLoading && itemsList.length > 0\"\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\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\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, shallowRef, watch } from 'vue';\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/DatePicker/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'\nimport BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.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 search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\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 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});\n \nconst itemsList = shallowRef(items.value || []);\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('');\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 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 loadMoreItems = async () => {\n isLoadingExtra.value = true\n\n if (hasMoreItems.value) {\n currentSkip.value += currentLimit.value;\n \n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n ...props.options\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 itemsList.value = [...itemsList.value, ...data];\n \n if (items.value) items.value = itemsList.value;\n }\n\n isLoadingExtra.value = false\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n const data = await props.store.read({\n skip: currentSkip.value,\n limit: currentLimit.value,\n dateStart: date.value ? date.value.start : null,\n dateEnd: date.value ? date.value.end : null,\n sortParam: sort.value ? sort.value.param : null,\n sortOrder: sort.value ? sort.value.order : null,\n search: currentSearch.value,\n ...props.options\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 itemsList.value = data;\n if (items.value) items.value = itemsList.value;\n isLoading.value = false;\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);\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\n<style>\n.feed-move, /* apply transition to moving elements */\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/* ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyKA,UAAM,SAASA,SAAW,SAAC,QAAQ;AACnC,UAAM,OAAOA,SAAY,SAAA,MAAM;AAC/B,UAAM,SAASA,SAAW,SAAC,QAAQ;AACnC,UAAM,OAAOA,SAAY,SAAA,MAAM;AAC/B,UAAM,QAAQA,SAAY,SAAA,OAAO;AAGjC,UAAM,QAAQ;AA+Dd,UAAM,YAAY,WAAW,MAAM,SAAS,CAAA,CAAE;AAC9C,UAAM,eAAe,IAAI,KAAK;AAE9B,QAAI,YAAY,IAAI,IAAI;AACxB,QAAI,iBAAiB,IAAI,KAAK;AAC9B,QAAI,WAAW,IAAI,IAAI;AAEvB,QAAI,cAAc,IAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,OAAO,CAAC;AACjE,QAAI,eAAe,IAAI,MAAM,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,EAAE;AAErE,QAAI,gBAAgB,IAAI,EAAE;AAE1B,aAAS,SAAS,IAAI,OAAO;AAC3B,UAAI,YAAY;AAChB,aAAO,IAAI,SAAS;AAClB,qBAAa,SAAS;AACtB,oBAAY,WAAW,MAAM,GAAG,GAAG,IAAI,GAAG,KAAK;AAAA,MAChD;AAAA,IACH;AAEA,UAAM,kBAAkB,SAAS,CAAC,UAAU;AAC1C,oBAAc,QAAQ;AACtB,kBAAY,QAAQ;AACpB,mBAAa,QAAQ;AACrB,iBAAY;AAAA,IACd,GAAG,GAAG;AAEN,aAAS,aAAaC,SAAQ;AAC5B,sBAAgBA,OAAM;AAAA,IACxB;AAEA,UAAM,gBAAgB,YAAY;AAChC,qBAAe,QAAQ;AAEvB,UAAI,aAAa,OAAO;AACtB,oBAAY,SAAS,aAAa;AAElC,cAAM,OAAO,MAAM,MAAM,MAAM,KAAK;AAAA,UAClC,MAAM,YAAY;AAAA,UAClB,OAAO,aAAa;AAAA,UACpB,QAAQ,cAAc;AAAA,UACtB,WAAW,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAAA,UAC3C,SAAS,KAAK,QAAQ,KAAK,MAAM,MAAM;AAAA,UACvC,WAAW,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAAA,UAC3C,WAAW,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAAA,UAC3C,GAAG,MAAM;AAAA,QACf,CAAK;AAED,YAAI,KAAK,WAAW,GAAG;AACrB,uBAAa,QAAQ;AAAA,QACtB,WAAU,KAAK,SAAS,aAAa,OAAO;AAC3C,uBAAa,QAAQ;AAAA,QAC3B,OAAW;AACL,uBAAa,QAAQ;AAAA,QAC3B;AAEI,kBAAU,QAAQ,CAAC,GAAG,UAAU,OAAO,GAAG,IAAI;AAE9C,YAAI,MAAM,MAAO,OAAM,QAAQ,UAAU;AAAA,MAC7C;AAEE,qBAAe,QAAQ;AAAA,IACzB;AAEA,UAAM,aAAa,YAAY;AAC7B,gBAAU,QAAQ;AAClB,YAAM,OAAO,MAAM,MAAM,MAAM,KAAK;AAAA,QAClC,MAAM,YAAY;AAAA,QAClB,OAAO,aAAa;AAAA,QACpB,WAAW,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAAA,QAC3C,SAAS,KAAK,QAAQ,KAAK,MAAM,MAAM;AAAA,QACvC,WAAW,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAAA,QAC3C,WAAW,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAAA,QAC3C,QAAQ,cAAc;AAAA,QACtB,GAAG,MAAM;AAAA,MACb,CAAG;AAED,UAAI,KAAK,WAAW,GAAG;AACrB,qBAAa,QAAQ;AAAA,MACtB,WAAU,KAAK,SAAS,aAAa,OAAO;AAC3C,qBAAa,QAAQ;AAAA,MACzB,OAAS;AACL,qBAAa,QAAQ;AAAA,MACzB;AAEE,gBAAU,QAAQ;AAClB,UAAI,MAAM,MAAO,OAAM,QAAQ,UAAU;AACzC,gBAAU,QAAQ;AAAA,IACpB;AACA;AAAA,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,YACZ,mCAAS,YAAU,mCAAS,WAC5B,mCAAS,YAAU,mCAAS,UAC5B,KAAK,UAAU,UAAU,MAAM,KAAK,UAAU,UAAU,GACxD;AACA,sBAAY,QAAQ;AACpB,qBAAY;AAAA,QAClB;AAAA,MACG;AAAA,MACD,EAAE,MAAM,KAAI;AAAA,IACd;AACA,QAAI,WAAW;AAEf,cAAU,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,UACrB;AAAA,QACK,CAAA;AAED,YAAI,SAAS,MAAO,UAAS,QAAQ,SAAS,KAAK;AAAA,MACvD;AAAA,IACA,CAAC;AAED,gBAAY,MAAM;AAChB,UAAI,UAAU;AACZ,iBAAS,WAAY;AAAA,MACzB;AAAA,IACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
6
6
  const _sfc_main = {
7
7
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  }
15
15
  };
16
16
  exports.default = _sfc_main;
17
- //# sourceMappingURL=Menu.vue.cjs.map
17
+ //# sourceMappingURL=Menu.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, renderSlot } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
4
4
  const _sfc_main = {
5
5
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  export {
15
15
  _sfc_main as default
16
16
  };
17
- //# sourceMappingURL=Menu.vue.js.map
17
+ //# sourceMappingURL=Menu.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -12,7 +12,7 @@ const _sfc_main = {
12
12
  // Флаг загрузки, определяет, нужно ли показывать скелетон
13
13
  loading: {
14
14
  type: Boolean,
15
- default: true
15
+ default: false
16
16
  },
17
17
  // Структура скелетона, если не используется слот
18
18
  structure: {
@@ -32,12 +32,12 @@ const _sfc_main = {
32
32
  // Цвет блоков скелетона (серый)
33
33
  blockColor: {
34
34
  type: String,
35
- default: "rgb(var(--light))"
35
+ default: "rgba(var(--white),0.25)"
36
36
  },
37
37
  // Цвет анимированной полосы (белый с прозрачностью)
38
38
  highlightColor: {
39
39
  type: String,
40
- default: "rgba(255, 255, 255, 0.9)"
40
+ default: "rgba(var(--white), 0.9)"
41
41
  },
42
42
  // Скорость анимации в секундах
43
43
  animationDuration: {
@@ -47,7 +47,7 @@ const _sfc_main = {
47
47
  // Радиус закругления
48
48
  borderRadius: {
49
49
  type: String,
50
- default: "4px"
50
+ default: "0.5rem"
51
51
  }
52
52
  },
53
53
  setup(__props) {
@@ -90,6 +90,6 @@ const _sfc_main = {
90
90
  };
91
91
  }
92
92
  };
93
- const Skeleton = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-1c010433"]]);
93
+ const Skeleton = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-70b3339a"]]);
94
94
  exports.default = Skeleton;
95
95
  //# sourceMappingURL=Skeleton.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.vue.cjs","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"skeleton-wrapper\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->\n <div v-else-if=\"structure.length\" class=\"skeleton-structure\" :class=\"{ 'skeleton-structure--horizontal': horizontal }\">\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded }\n ]\"\n :style=\"item.style\"\n ></div>\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: true\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(255, 255, 255, 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '4px'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n.skeleton-wrapper {\n width: 100%;\n position: relative;\n background-color: var(--skeleton-card-color);\n padding: 1rem;\n}\n\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n z-index: 10;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":["useSlots","computed","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQA,IAAAA,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiBC,IAAAA,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5DC,QAAAA,UAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Skeleton.vue.cjs","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"skeleton-wrapper\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->\n <div v-else-if=\"structure.length\" class=\"skeleton-structure\" :class=\"{ 'skeleton-structure--horizontal': horizontal }\">\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded }\n ]\"\n :style=\"item.style\"\n ></div>\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: false\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgba(var(--white),0.25)'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(var(--white), 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '0.5rem'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n.skeleton-wrapper {\n width: 100%;\n position: relative;\n background-color: var(--skeleton-card-color);\n padding: 1rem;\n}\n\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":["useSlots","computed","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQA,IAAAA,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiBC,IAAAA,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5DC,QAAAA,UAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,7 +10,7 @@ const _sfc_main = {
10
10
  // Флаг загрузки, определяет, нужно ли показывать скелетон
11
11
  loading: {
12
12
  type: Boolean,
13
- default: true
13
+ default: false
14
14
  },
15
15
  // Структура скелетона, если не используется слот
16
16
  structure: {
@@ -30,12 +30,12 @@ const _sfc_main = {
30
30
  // Цвет блоков скелетона (серый)
31
31
  blockColor: {
32
32
  type: String,
33
- default: "rgb(var(--light))"
33
+ default: "rgba(var(--white),0.25)"
34
34
  },
35
35
  // Цвет анимированной полосы (белый с прозрачностью)
36
36
  highlightColor: {
37
37
  type: String,
38
- default: "rgba(255, 255, 255, 0.9)"
38
+ default: "rgba(var(--white), 0.9)"
39
39
  },
40
40
  // Скорость анимации в секундах
41
41
  animationDuration: {
@@ -45,7 +45,7 @@ const _sfc_main = {
45
45
  // Радиус закругления
46
46
  borderRadius: {
47
47
  type: String,
48
- default: "4px"
48
+ default: "0.5rem"
49
49
  }
50
50
  },
51
51
  setup(__props) {
@@ -88,7 +88,7 @@ const _sfc_main = {
88
88
  };
89
89
  }
90
90
  };
91
- const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1c010433"]]);
91
+ const Skeleton = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-70b3339a"]]);
92
92
  export {
93
93
  Skeleton as default
94
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.vue.js","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"skeleton-wrapper\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->\n <div v-else-if=\"structure.length\" class=\"skeleton-structure\" :class=\"{ 'skeleton-structure--horizontal': horizontal }\">\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded }\n ]\"\n :style=\"item.style\"\n ></div>\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: true\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(255, 255, 255, 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '4px'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n.skeleton-wrapper {\n width: 100%;\n position: relative;\n background-color: var(--skeleton-card-color);\n padding: 1rem;\n}\n\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n z-index: 10;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQ,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiB,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5D,cAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Skeleton.vue.js","sources":["../../../../../src/components/Skeleton/Skeleton.vue"],"sourcesContent":["<template>\n <div class=\"skeleton-wrapper\" :class=\"{ 'skeleton-wrapper--loading': loading }\">\n <!-- Используем слот по умолчанию, если он есть -->\n <slot v-if=\"hasDefaultSlot && !structure.length\"></slot>\n \n <!-- Создаем скелетон на основе переданной структуры, если слот пустой -->\n <div v-else-if=\"structure.length\" class=\"skeleton-structure\" :class=\"{ 'skeleton-structure--horizontal': horizontal }\">\n <div \n v-for=\"(item, index) in structure\" \n :key=\"index\" \n class=\"skeleton-item\"\n :class=\"[\n `skeleton-item--${item.block}`,\n `skeleton-item--${item.size || 'medium'}`,\n { 'skeleton-item--rounded': item.rounded }\n ]\"\n :style=\"item.style\"\n ></div>\n </div>\n \n <!-- Если слот пустой и структура не определена - показываем дефолтный скелетон -->\n <div v-else class=\"skeleton-default\">\n <div class=\"skeleton-item skeleton-item--text skeleton-item--small\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--medium\"></div>\n <div class=\"skeleton-item skeleton-item--text skeleton-item--large\"></div>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, useSlots, computed, onMounted } from 'vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n // Флаг загрузки, определяет, нужно ли показывать скелетон\n loading: {\n type: Boolean,\n default: false\n },\n // Структура скелетона, если не используется слот\n structure: {\n type: Array,\n default: () => []\n },\n // Горизонтальное расположение элементов (для карточек пользователей)\n horizontal: {\n type: Boolean,\n default: false\n },\n // Цвет фона карточки (светлый фон)\n cardColor: {\n type: String,\n default: 'rgb(var(--light))'\n },\n // Цвет блоков скелетона (серый)\n blockColor: {\n type: String,\n default: 'rgba(var(--white),0.25)'\n },\n // Цвет анимированной полосы (белый с прозрачностью)\n highlightColor: {\n type: String,\n default: 'rgba(var(--white), 0.9)'\n },\n // Скорость анимации в секундах\n animationDuration: {\n type: Number,\n default: 1.5\n },\n // Радиус закругления\n borderRadius: {\n type: String,\n default: '0.5rem'\n }\n});\n\n// Проверяем наличие слота по умолчанию\nconst hasDefaultSlot = computed(() => Boolean(slots.default));\n\n// Применяем CSS переменные для настройки стилей\nonMounted(() => {\n const root = document.documentElement;\n root.style.setProperty('--skeleton-card-color', props.cardColor);\n root.style.setProperty('--skeleton-block-color', props.blockColor);\n root.style.setProperty('--skeleton-highlight-color', props.highlightColor);\n root.style.setProperty('--skeleton-animation-duration', `${props.animationDuration}s`);\n root.style.setProperty('--skeleton-border-radius', props.borderRadius);\n});\n</script>\n\n<style scoped>\n.skeleton-wrapper {\n width: 100%;\n position: relative;\n background-color: var(--skeleton-card-color);\n padding: 1rem;\n}\n\n/* Стили для режима загрузки */\n.skeleton-wrapper--loading ::v-deep(*) {\n color: transparent !important;\n border-color: transparent !important;\n position: relative;\n}\n\n.skeleton-wrapper--loading ::v-deep(img),\n.skeleton-wrapper--loading ::v-deep(svg),\n.skeleton-wrapper--loading ::v-deep(button),\n.skeleton-wrapper--loading ::v-deep(a) {\n opacity: 0;\n}\n\n.skeleton-wrapper--loading ::v-deep(*::before),\n.skeleton-wrapper--loading ::v-deep(*::after) {\n display: none !important;\n}\n\n.skeleton-wrapper--loading ::v-deep(*) {\n position: relative;\n background-color: var(--skeleton-block-color) !important;\n border-radius: var(--skeleton-border-radius);\n overflow: hidden;\n}\n\n.skeleton-wrapper--loading ::v-deep(*)::before {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n display: block !important;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Стили для структурного скелетона */\n.skeleton-structure {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Горизонтальный скелетон для карточек пользователей */\n.skeleton-structure--horizontal {\n flex-direction: row;\n align-items: center;\n flex-wrap: nowrap;\n}\n\n.skeleton-item {\n background-color: var(--skeleton-block-color);\n border-radius: var(--skeleton-border-radius);\n position: relative;\n overflow: hidden;\n}\n\n.skeleton-item::after {\n content: '';\n position: absolute;\n top: 0;\n left: -100%;\n width: 100%;\n height: 100%;\n animation: shimmer var(--skeleton-animation-duration) infinite;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n var(--skeleton-highlight-color) 50%,\n transparent 100%\n );\n}\n\n/* Типы блоков */\n.skeleton-item--text {\n height: 1rem;\n width: 100%;\n}\n\n.skeleton-item--text-group {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1;\n}\n\n.skeleton-item--image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.skeleton-item--avatar {\n width: 4rem;\n height: 4rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--button {\n height: 3rem;\n width: 8rem;\n}\n\n.skeleton-item--circle {\n border-radius: 50%;\n}\n\n.skeleton-item--action {\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.skeleton-item--actions-group {\n display: flex;\n gap: 0.5rem;\n margin-left: auto;\n}\n\n.skeleton-item--square {\n aspect-ratio: 1 / 1;\n}\n\n/* Размеры */\n.skeleton-item--small {\n width: 30%;\n}\n\n.skeleton-item--medium {\n width: 60%;\n}\n\n.skeleton-item--large {\n width: 100%;\n}\n\n.skeleton-item--rounded {\n border-radius: 50%;\n}\n\n/* Дефолтный скелетон */\n.skeleton-default {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n width: 100%;\n}\n\n/* Анимация движения полосы */\n@keyframes shimmer {\n 0% {\n left: -100%;\n }\n 100% {\n left: 100%;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQ,SAAU;AAExB,UAAM,QAAQ;AA4Cd,UAAM,iBAAiB,SAAS,MAAM,QAAQ,MAAM,OAAO,CAAC;AAG5D,cAAU,MAAM;AACd,YAAM,OAAO,SAAS;AACtB,WAAK,MAAM,YAAY,yBAAyB,MAAM,SAAS;AAC/D,WAAK,MAAM,YAAY,0BAA0B,MAAM,UAAU;AACjE,WAAK,MAAM,YAAY,8BAA8B,MAAM,cAAc;AACzE,WAAK,MAAM,YAAY,iCAAiC,GAAG,MAAM,iBAAiB,GAAG;AACrF,WAAK,MAAM,YAAY,4BAA4B,MAAM,YAAY;AAAA,IACvE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const _hoisted_1 = { class: "flex-nowrap flex-v-center flex pos-relative" };
6
6
  const _hoisted_2 = ["onClick"];
7
7
  const _sfc_main = {
@@ -69,4 +69,4 @@ const _sfc_main = {
69
69
  }
70
70
  };
71
71
  exports.default = _sfc_main;
72
- //# sourceMappingURL=Tab.vue2.cjs.map
72
+ //# sourceMappingURL=Tab.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue2.js","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n tabClass ? tabClass : 'pd-small pd-r-medium pd-l-medium w-max pd-small radius-small'\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\n\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n tabClass: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqBA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAc,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA,WAAa,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA;AAAA,IACA;AAGA,wBAAmB;AAGnB,UAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/C,UAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B,WAAa,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B;AACE,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAK,CAAA;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACvC;AAGE,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tab.vue.cjs","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n tabClass ? tabClass : 'pd-small pd-r-medium pd-l-medium w-max pd-small radius-small'\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\n\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n tabClass: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":["ref","watch"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAcA,IAAG,IAAC,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA,WAAa,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA;AAAA,IACA;AAGA,wBAAmB;AAGnBC,QAAAA,MAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/CA,QAAAA,MAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B,WAAa,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B;AACE,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAK,CAAA;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACvC;AAGE,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref, watch, createElementBlock, openBlock, Fragment, renderList, normalizeStyle, normalizeClass, toDisplayString } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = { class: "flex-nowrap flex-v-center flex pos-relative" };
4
4
  const _hoisted_2 = ["onClick"];
5
5
  const _sfc_main = {
@@ -69,4 +69,4 @@ const _sfc_main = {
69
69
  export {
70
70
  _sfc_main as default
71
71
  };
72
- //# sourceMappingURL=Tab.vue2.js.map
72
+ //# sourceMappingURL=Tab.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tab.vue.js","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n tabClass ? tabClass : 'pd-small pd-r-medium pd-l-medium w-max pd-small radius-small'\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\n\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n tabClass: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqBA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAc,IAAI,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA,WAAa,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA;AAAA,IACA;AAGA,wBAAmB;AAGnB,UAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/C,UAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B,WAAa,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B;AACE,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAK,CAAA;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACvC;AAGE,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;"}
@@ -44,11 +44,13 @@ const _sfc_main = {
44
44
  return currentOrder;
45
45
  }
46
46
  function handleChange(event) {
47
+ console.log("event order is", event);
47
48
  if (!event.added && !event.moved) return;
48
49
  const targetId = event.added ? event.added.element._id : props.items[event.moved.newIndex]._id;
49
50
  const updatedCategory = findCategoryAndUpdateParent(props.state, targetId);
50
51
  if (!updatedCategory) return;
51
52
  updateOrders(props.state);
53
+ console.log("hi");
52
54
  emits("update", updatedCategory);
53
55
  }
54
56
  function emitChange(event) {
@@ -70,7 +72,7 @@ const _sfc_main = {
70
72
  vue.renderSlot(_ctx.$slots, "default", { item }),
71
73
  vue.createVNode(_sfc_main, {
72
74
  items: item.children,
73
- state: __props.items,
75
+ state: __props.state,
74
76
  onUpdate: emitChange,
75
77
  class: "pd-l-medium"
76
78
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.vue.cjs","sources":["../../../../../src/components/Tree/Tree.vue"],"sourcesContent":["<template>\n <VueDraggableNext\n v-bind=\"dragOptions\" \n class=\"dragArea list-group w-full\"\n :list=\"items\"\n :handle=\"'.my-handle'\"\n @change=\"handleChange\"\n >\n <div v-for=\"item in items\" :key=\"item._id\" class=\"mn-t-thin radius-medium mn-b-thin\">\n <slot\n :item=\"item\"\n >\n </slot>\n <Tree \n :items=\"item.children\"\n :state=\"items\"\n @update=\"emitChange\"\n class=\"pd-l-medium\"\n v-slot=\"{ item }\"\n >\n <slot\n :item=\"item\"\n >\n </slot>\n </Tree>\n </div>\n </VueDraggableNext>\n</template>\n\n<script setup>\nimport { VueDraggableNext } from 'vue-draggable-next';\n\nimport Tree from './Tree.vue';\n\nconst props = defineProps({\n items: Array,\n state: Array\n});\n\nconst emits = defineEmits(['update']);\n\nconst dragOptions = {\n animation: 200,\n group: 'category',\n ghostClass: 'ghost'\n};\n\nfunction findCategoryAndUpdateParent(items, targetId, parentId = null) {\n for (const item of items) {\n if (item._id === targetId) {\n item.parent = parentId;\n return item;\n }\n \n if (item.children) {\n const found = findCategoryAndUpdateParent(item.children, targetId, item._id);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nfunction updateOrders(items, startOrder = 0) {\n let currentOrder = startOrder;\n \n items.forEach(item => {\n item.order = currentOrder++;\n \n if (item.children?.length) {\n currentOrder = updateOrders(item.children, currentOrder);\n }\n });\n \n return currentOrder;\n}\n\nfunction handleChange(event) {\n if (!event.added && !event.moved) return;\n \n const targetId = event.added ? \n event.added.element._id : \n props.items[event.moved.newIndex]._id;\n \n const updatedCategory = findCategoryAndUpdateParent(props.state, targetId);\n if (!updatedCategory) return;\n \n // Обновляем order для всего дерева категорий\n updateOrders(props.state);\n \n // Отправляем обновленную категорию\n emits('update', updatedCategory);\n}\n\nfunction emitChange(event) {\n emits('update', event);\n}\n</script> "],"names":[],"mappings":";;;;;;;;;;;;AAkCA,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAEd,UAAM,cAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAEA,aAAS,4BAA4B,OAAO,UAAU,WAAW,MAAM;AACrE,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,QAAQ,UAAU;AACzB,eAAK,SAAS;AACd,iBAAO;AAAA,QACb;AAEI,YAAI,KAAK,UAAU;AACjB,gBAAM,QAAQ,4BAA4B,KAAK,UAAU,UAAU,KAAK,GAAG;AAC3E,cAAI,OAAO;AACT,mBAAO;AAAA,UACf;AAAA,QACA;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO,aAAa,GAAG;AAC3C,UAAI,eAAe;AAEnB,YAAM,QAAQ,UAAQ;;AACpB,aAAK,QAAQ;AAEb,aAAI,UAAK,aAAL,mBAAe,QAAQ;AACzB,yBAAe,aAAa,KAAK,UAAU,YAAY;AAAA,QAC7D;AAAA,MACA,CAAG;AAED,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO;AAC3B,UAAI,CAAC,MAAM,SAAS,CAAC,MAAM,MAAO;AAElC,YAAM,WAAW,MAAM,QACrB,MAAM,MAAM,QAAQ,MACpB,MAAM,MAAM,MAAM,MAAM,QAAQ,EAAE;AAEpC,YAAM,kBAAkB,4BAA4B,MAAM,OAAO,QAAQ;AACzE,UAAI,CAAC,gBAAiB;AAGtB,mBAAa,MAAM,KAAK;AAGxB,YAAM,UAAU,eAAe;AAAA,IACjC;AAEA,aAAS,WAAW,OAAO;AACzB,YAAM,UAAU,KAAK;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tree.vue.cjs","sources":["../../../../../src/components/Tree/Tree.vue"],"sourcesContent":["<template>\n <VueDraggableNext\n v-bind=\"dragOptions\" \n class=\"dragArea list-group w-full\"\n :list=\"items\"\n :handle=\"'.my-handle'\"\n @change=\"handleChange\"\n >\n <div v-for=\"item in items\" :key=\"item._id\" class=\"mn-t-thin radius-medium mn-b-thin\">\n <slot\n :item=\"item\"\n >\n </slot>\n <Tree \n :items=\"item.children\"\n :state=\"state\"\n @update=\"emitChange\"\n class=\"pd-l-medium\"\n v-slot=\"{ item }\"\n >\n <slot\n :item=\"item\"\n >\n </slot>\n </Tree>\n </div>\n </VueDraggableNext>\n</template>\n\n<script setup>\nimport { VueDraggableNext } from 'vue-draggable-next';\n\nimport Tree from './Tree.vue';\n\nconst props = defineProps({\n items: Array,\n state: Array\n});\n\nconst emits = defineEmits(['update']);\n\nconst dragOptions = {\n animation: 200,\n group: 'category',\n ghostClass: 'ghost'\n};\n\nfunction findCategoryAndUpdateParent(items, targetId, parentId = null) {\n for (const item of items) {\n if (item._id === targetId) {\n item.parent = parentId;\n return item;\n }\n \n if (item.children) {\n const found = findCategoryAndUpdateParent(item.children, targetId, item._id);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nfunction updateOrders(items, startOrder = 0) {\n let currentOrder = startOrder;\n \n items.forEach(item => {\n item.order = currentOrder++;\n \n if (item.children?.length) {\n currentOrder = updateOrders(item.children, currentOrder);\n }\n });\n \n return currentOrder;\n}\n\nfunction handleChange(event) {\n\n console.log('event order is', event)\n if (!event.added && !event.moved) return;\n \n const targetId = event.added ? \n event.added.element._id : \n props.items[event.moved.newIndex]._id;\n \n const updatedCategory = findCategoryAndUpdateParent(props.state, targetId);\n\n if (!updatedCategory) return;\n \n // Обновляем order для всего дерева категорий\n updateOrders(props.state);\n console.log('hi')\n // Отправляем обновленную категорию\n emits('update', updatedCategory);\n}\n\nfunction emitChange(event) {\n emits('update', event);\n}\n</script> "],"names":[],"mappings":";;;;;;;;;;;;AAkCA,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAEd,UAAM,cAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAEA,aAAS,4BAA4B,OAAO,UAAU,WAAW,MAAM;AACrE,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,QAAQ,UAAU;AACzB,eAAK,SAAS;AACd,iBAAO;AAAA,QACb;AAEI,YAAI,KAAK,UAAU;AACjB,gBAAM,QAAQ,4BAA4B,KAAK,UAAU,UAAU,KAAK,GAAG;AAC3E,cAAI,OAAO;AACT,mBAAO;AAAA,UACf;AAAA,QACA;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO,aAAa,GAAG;AAC3C,UAAI,eAAe;AAEnB,YAAM,QAAQ,UAAQ;;AACpB,aAAK,QAAQ;AAEb,aAAI,UAAK,aAAL,mBAAe,QAAQ;AACzB,yBAAe,aAAa,KAAK,UAAU,YAAY;AAAA,QAC7D;AAAA,MACA,CAAG;AAED,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO;AAEzB,cAAQ,IAAI,kBAAkB,KAAK;AACrC,UAAI,CAAC,MAAM,SAAS,CAAC,MAAM,MAAO;AAElC,YAAM,WAAW,MAAM,QACrB,MAAM,MAAM,QAAQ,MACpB,MAAM,MAAM,MAAM,MAAM,QAAQ,EAAE;AAEpC,YAAM,kBAAkB,4BAA4B,MAAM,OAAO,QAAQ;AAEzE,UAAI,CAAC,gBAAiB;AAGtB,mBAAa,MAAM,KAAK;AACxB,cAAQ,IAAI,IAAI;AAEhB,YAAM,UAAU,eAAe;AAAA,IACjC;AAEA,aAAS,WAAW,OAAO;AACzB,YAAM,UAAU,KAAK;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -42,11 +42,13 @@ const _sfc_main = {
42
42
  return currentOrder;
43
43
  }
44
44
  function handleChange(event) {
45
+ console.log("event order is", event);
45
46
  if (!event.added && !event.moved) return;
46
47
  const targetId = event.added ? event.added.element._id : props.items[event.moved.newIndex]._id;
47
48
  const updatedCategory = findCategoryAndUpdateParent(props.state, targetId);
48
49
  if (!updatedCategory) return;
49
50
  updateOrders(props.state);
51
+ console.log("hi");
50
52
  emits("update", updatedCategory);
51
53
  }
52
54
  function emitChange(event) {
@@ -68,7 +70,7 @@ const _sfc_main = {
68
70
  renderSlot(_ctx.$slots, "default", { item }),
69
71
  createVNode(_sfc_main, {
70
72
  items: item.children,
71
- state: __props.items,
73
+ state: __props.state,
72
74
  onUpdate: emitChange,
73
75
  class: "pd-l-medium"
74
76
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.vue.js","sources":["../../../../../src/components/Tree/Tree.vue"],"sourcesContent":["<template>\n <VueDraggableNext\n v-bind=\"dragOptions\" \n class=\"dragArea list-group w-full\"\n :list=\"items\"\n :handle=\"'.my-handle'\"\n @change=\"handleChange\"\n >\n <div v-for=\"item in items\" :key=\"item._id\" class=\"mn-t-thin radius-medium mn-b-thin\">\n <slot\n :item=\"item\"\n >\n </slot>\n <Tree \n :items=\"item.children\"\n :state=\"items\"\n @update=\"emitChange\"\n class=\"pd-l-medium\"\n v-slot=\"{ item }\"\n >\n <slot\n :item=\"item\"\n >\n </slot>\n </Tree>\n </div>\n </VueDraggableNext>\n</template>\n\n<script setup>\nimport { VueDraggableNext } from 'vue-draggable-next';\n\nimport Tree from './Tree.vue';\n\nconst props = defineProps({\n items: Array,\n state: Array\n});\n\nconst emits = defineEmits(['update']);\n\nconst dragOptions = {\n animation: 200,\n group: 'category',\n ghostClass: 'ghost'\n};\n\nfunction findCategoryAndUpdateParent(items, targetId, parentId = null) {\n for (const item of items) {\n if (item._id === targetId) {\n item.parent = parentId;\n return item;\n }\n \n if (item.children) {\n const found = findCategoryAndUpdateParent(item.children, targetId, item._id);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nfunction updateOrders(items, startOrder = 0) {\n let currentOrder = startOrder;\n \n items.forEach(item => {\n item.order = currentOrder++;\n \n if (item.children?.length) {\n currentOrder = updateOrders(item.children, currentOrder);\n }\n });\n \n return currentOrder;\n}\n\nfunction handleChange(event) {\n if (!event.added && !event.moved) return;\n \n const targetId = event.added ? \n event.added.element._id : \n props.items[event.moved.newIndex]._id;\n \n const updatedCategory = findCategoryAndUpdateParent(props.state, targetId);\n if (!updatedCategory) return;\n \n // Обновляем order для всего дерева категорий\n updateOrders(props.state);\n \n // Отправляем обновленную категорию\n emits('update', updatedCategory);\n}\n\nfunction emitChange(event) {\n emits('update', event);\n}\n</script> "],"names":[],"mappings":";;;;;;;;;;AAkCA,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAEd,UAAM,cAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAEA,aAAS,4BAA4B,OAAO,UAAU,WAAW,MAAM;AACrE,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,QAAQ,UAAU;AACzB,eAAK,SAAS;AACd,iBAAO;AAAA,QACb;AAEI,YAAI,KAAK,UAAU;AACjB,gBAAM,QAAQ,4BAA4B,KAAK,UAAU,UAAU,KAAK,GAAG;AAC3E,cAAI,OAAO;AACT,mBAAO;AAAA,UACf;AAAA,QACA;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO,aAAa,GAAG;AAC3C,UAAI,eAAe;AAEnB,YAAM,QAAQ,UAAQ;;AACpB,aAAK,QAAQ;AAEb,aAAI,UAAK,aAAL,mBAAe,QAAQ;AACzB,yBAAe,aAAa,KAAK,UAAU,YAAY;AAAA,QAC7D;AAAA,MACA,CAAG;AAED,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO;AAC3B,UAAI,CAAC,MAAM,SAAS,CAAC,MAAM,MAAO;AAElC,YAAM,WAAW,MAAM,QACrB,MAAM,MAAM,QAAQ,MACpB,MAAM,MAAM,MAAM,MAAM,QAAQ,EAAE;AAEpC,YAAM,kBAAkB,4BAA4B,MAAM,OAAO,QAAQ;AACzE,UAAI,CAAC,gBAAiB;AAGtB,mBAAa,MAAM,KAAK;AAGxB,YAAM,UAAU,eAAe;AAAA,IACjC;AAEA,aAAS,WAAW,OAAO;AACzB,YAAM,UAAU,KAAK;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tree.vue.js","sources":["../../../../../src/components/Tree/Tree.vue"],"sourcesContent":["<template>\n <VueDraggableNext\n v-bind=\"dragOptions\" \n class=\"dragArea list-group w-full\"\n :list=\"items\"\n :handle=\"'.my-handle'\"\n @change=\"handleChange\"\n >\n <div v-for=\"item in items\" :key=\"item._id\" class=\"mn-t-thin radius-medium mn-b-thin\">\n <slot\n :item=\"item\"\n >\n </slot>\n <Tree \n :items=\"item.children\"\n :state=\"state\"\n @update=\"emitChange\"\n class=\"pd-l-medium\"\n v-slot=\"{ item }\"\n >\n <slot\n :item=\"item\"\n >\n </slot>\n </Tree>\n </div>\n </VueDraggableNext>\n</template>\n\n<script setup>\nimport { VueDraggableNext } from 'vue-draggable-next';\n\nimport Tree from './Tree.vue';\n\nconst props = defineProps({\n items: Array,\n state: Array\n});\n\nconst emits = defineEmits(['update']);\n\nconst dragOptions = {\n animation: 200,\n group: 'category',\n ghostClass: 'ghost'\n};\n\nfunction findCategoryAndUpdateParent(items, targetId, parentId = null) {\n for (const item of items) {\n if (item._id === targetId) {\n item.parent = parentId;\n return item;\n }\n \n if (item.children) {\n const found = findCategoryAndUpdateParent(item.children, targetId, item._id);\n if (found) {\n return found;\n }\n }\n }\n return null;\n}\n\nfunction updateOrders(items, startOrder = 0) {\n let currentOrder = startOrder;\n \n items.forEach(item => {\n item.order = currentOrder++;\n \n if (item.children?.length) {\n currentOrder = updateOrders(item.children, currentOrder);\n }\n });\n \n return currentOrder;\n}\n\nfunction handleChange(event) {\n\n console.log('event order is', event)\n if (!event.added && !event.moved) return;\n \n const targetId = event.added ? \n event.added.element._id : \n props.items[event.moved.newIndex]._id;\n \n const updatedCategory = findCategoryAndUpdateParent(props.state, targetId);\n\n if (!updatedCategory) return;\n \n // Обновляем order для всего дерева категорий\n updateOrders(props.state);\n console.log('hi')\n // Отправляем обновленную категорию\n emits('update', updatedCategory);\n}\n\nfunction emitChange(event) {\n emits('update', event);\n}\n</script> "],"names":[],"mappings":";;;;;;;;;;AAkCA,UAAM,QAAQ;AAKd,UAAM,QAAQ;AAEd,UAAM,cAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AAEA,aAAS,4BAA4B,OAAO,UAAU,WAAW,MAAM;AACrE,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,QAAQ,UAAU;AACzB,eAAK,SAAS;AACd,iBAAO;AAAA,QACb;AAEI,YAAI,KAAK,UAAU;AACjB,gBAAM,QAAQ,4BAA4B,KAAK,UAAU,UAAU,KAAK,GAAG;AAC3E,cAAI,OAAO;AACT,mBAAO;AAAA,UACf;AAAA,QACA;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO,aAAa,GAAG;AAC3C,UAAI,eAAe;AAEnB,YAAM,QAAQ,UAAQ;;AACpB,aAAK,QAAQ;AAEb,aAAI,UAAK,aAAL,mBAAe,QAAQ;AACzB,yBAAe,aAAa,KAAK,UAAU,YAAY;AAAA,QAC7D;AAAA,MACA,CAAG;AAED,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAO;AAEzB,cAAQ,IAAI,kBAAkB,KAAK;AACrC,UAAI,CAAC,MAAM,SAAS,CAAC,MAAM,MAAO;AAElC,YAAM,WAAW,MAAM,QACrB,MAAM,MAAM,QAAQ,MACpB,MAAM,MAAM,MAAM,MAAM,QAAQ,EAAE;AAEpC,YAAM,kBAAkB,4BAA4B,MAAM,OAAO,QAAQ;AAEzE,UAAI,CAAC,gBAAiB;AAGtB,mBAAa,MAAM,KAAK;AACxB,cAAQ,IAAI,IAAI;AAEhB,YAAM,UAAU,eAAe;AAAA,IACjC;AAEA,aAAS,WAAW,OAAO;AACzB,YAAM,UAAU,KAAK;AAAA,IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  ;/* empty css */
6
6
  ;/* empty css */
7
7
  require("vue-i18n");
@@ -1,5 +1,5 @@
1
1
  import { ref, resolveComponent, createElementBlock, openBlock, createVNode, createElementVNode, withCtx, Transition, createBlock, resolveDynamicComponent } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  /* empty css */
4
4
  /* empty css */
5
5
  import "vue-i18n";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const Button = require("../../../../../components/Button/Button.vue.cjs");
7
7
  const vueRouter = require("vue-router");
@@ -1,5 +1,5 @@
1
1
  import { ref, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, createTextVNode, withCtx } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const Button = require("../../../../../components/Button/Button.vue.cjs");
7
7
  const vueRouter = require("vue-router");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, withCtx } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  ;/* empty css */
5
5
  ;/* empty css */
6
6
  const Dropdown = require("../../../../../components/Dropdown/Dropdown.vue2.cjs");
7
- const Menu = require("../../../../../components/Menu/Menu.vue.cjs");
7
+ const Menu = require("../../../../../components/Menu/Menu.vue2.cjs");
8
8
  const MenuItem = require("../../../../../components/Menu/MenuItem.vue.cjs");
9
9
  const ButtonToggleMembership = require("../../../../organizations/components/elements/ButtonToggleMembership.vue.cjs");
10
10
  const FormReport = require("../../../../reports/components/sections/FormReport.vue.cjs");
@@ -2,7 +2,7 @@ import { ref, inject, computed, onMounted, createElementBlock, createCommentVNod
2
2
  /* empty css */
3
3
  /* empty css */
4
4
  import _sfc_main$5 from "../../../../../components/Dropdown/Dropdown.vue2.js";
5
- import _sfc_main$a from "../../../../../components/Menu/Menu.vue.js";
5
+ import _sfc_main$a from "../../../../../components/Menu/Menu.vue2.js";
6
6
  import _sfc_main$b from "../../../../../components/Menu/MenuItem.vue.js";
7
7
  import _sfc_main$7 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
8
8
  import _sfc_main$6 from "../../../../reports/components/sections/FormReport.vue.js";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
- const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
5
+ const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
6
6
  const Feed = require("../../../../../components/Feed/Feed.vue.cjs");
7
7
  const CardBlogpost = require("../../../../community/components/blocks/CardBlogpost.vue.cjs");
8
8
  const auth = require("../../store/auth.cjs");
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createVNode, unref, withCtx, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
3
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
5
5
  import _sfc_main$3 from "../../../../community/components/blocks/CardBlogpost.vue.js";
6
6
  import { state } from "../../store/auth.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const Checkbox = require("../../../../../components/Checkbox/Checkbox.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, createCommentVNode, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode, unref } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$3 from "../../../../../components/Checkbox/Checkbox.vue.js";
5
5
  import _sfc_main$4 from "../../../../../components/Button/Button.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Transition, withCtx, createTextVNode } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");
@@ -1,5 +1,5 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, createTextVNode, toDisplayString, unref, withCtx, Transition, withDirectives, vShow } from "vue";
2
- import _sfc_main$1 from "../../../../../components/Tab/Tab.vue2.js";
2
+ import _sfc_main$1 from "../../../../../components/Tab/Tab.vue.js";
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
4
  import _sfc_main$2 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
5
  import _sfc_main$3 from "../../../../../components/Button/Button.vue.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Tab = require("../../../../../components/Tab/Tab.vue2.cjs");
4
+ const Tab = require("../../../../../components/Tab/Tab.vue.cjs");
5
5
  const Field = require("../../../../../components/Field/Field.vue.cjs");
6
6
  const FieldPhone = require("../../../../../components/FieldPhone/FieldPhone.vue.cjs");
7
7
  const Button = require("../../../../../components/Button/Button.vue.cjs");