@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
@@ -4,7 +4,7 @@
4
4
  class="radius-big mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex"
5
5
  >
6
6
  <h2 class="mn-r-auto">
7
- Product Categories
7
+ Categories
8
8
  </h2>
9
9
 
10
10
  <router-link
@@ -14,9 +14,9 @@
14
14
  _id: $route.params._id
15
15
  }
16
16
  }"
17
- class="uppercase t-medium pd-small radius-big bg-white nav-link"
17
+ class="uppercase t-medium pd-small radius-big bg-white nav-link"
18
18
  >
19
- Add category
19
+ Add New
20
20
  </router-link>
21
21
  </Block>
22
22
 
@@ -36,17 +36,19 @@
36
36
  :options="{
37
37
  user: auth.state.user._id,
38
38
  rootOnly: true,
39
+ excludeChildren: false
39
40
  }"
41
+ v-model:sort="sort"
42
+ v-model:items="categories.state.all"
40
43
  v-slot="{
41
44
  items
42
45
  }"
43
46
  class="cols-1 pos-relative w-100 rows-1 gap-thin"
44
-
45
47
  >
46
48
  <Tree
47
49
  v-if="items"
48
- :items="items"
49
- :state="items"
50
+ :items="categories.state.all"
51
+ :state="categories.state.all"
50
52
  @update="updateCategoriesOrder"
51
53
  v-slot="{ item }"
52
54
  >
@@ -60,9 +62,7 @@
60
62
  </template>
61
63
 
62
64
  <script setup>
63
- import { onMounted, onUnmounted, computed } from 'vue';
64
- import { VueDraggableNext } from 'vue-draggable-next';
65
-
65
+ import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';
66
66
  import { useRoute, useRouter } from 'vue-router';
67
67
 
68
68
  import * as globals from '@martyrs/src/modules/globals/views/store/globals';
@@ -81,6 +81,23 @@
81
81
 
82
82
  import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'
83
83
 
84
+ let search = ref(null)
85
+
86
+ let sort = reactive({
87
+ param: 'order',
88
+ order: 'asc',
89
+ options: [{
90
+ label: 'Order',
91
+ value: 'order'
92
+ },{
93
+ label: 'Name',
94
+ value: 'name'
95
+ },{
96
+ label: 'Date',
97
+ value: 'createdAt'
98
+ }]
99
+ })
100
+
84
101
  globals.state.navigation_bar.actions = [{
85
102
  component: IconPlus,
86
103
  props: {
@@ -98,6 +115,7 @@
98
115
 
99
116
  });
100
117
 
118
+ // Функция для преобразования иерархического дерева категорий в плоский массив
101
119
  function flattenCategoryTree(categories) {
102
120
  let flatCategories = [];
103
121
 
@@ -114,17 +132,18 @@
114
132
  return flatCategories;
115
133
  }
116
134
 
117
- // Обновленная функция для обновления порядка категорий
118
- async function updateCategoriesOrder(category) {
135
+
136
+ // Функция для обновления порядка категорий
137
+ async function updateCategoriesOrder(updatedCategories) {
138
+ alert('helo')
119
139
  try {
120
- // Получаем все категории и преобразуем их в плоский массив
121
- const allCategories = categories.state.all;
122
- const flattenedCategories = flattenCategoryTree(allCategories);
140
+ // Преобразуем категории в плоский массив
141
+ const flattenedCategories = flattenCategoryTree(categories.state.all);
123
142
 
124
- // Обновляем порядок для всех категорий
125
- console.log('flated', flattenedCategories)
143
+ console.log(flattenedCategories)
144
+ console.log( categories.state.all)
126
145
  await categories.actions.updateOrder(flattenedCategories);
127
-
146
+
128
147
  console.log('Categories order updated successfully');
129
148
  } catch (error) {
130
149
  console.error('Error updating categories order:', error);
@@ -133,7 +152,7 @@
133
152
  }
134
153
 
135
154
  async function deleteCategory(category) {
136
- // Запрашиваем подтверждение у пользователя
155
+ // Запрашиваем подтверждение у пользователя
137
156
  const isConfirmed = confirm(`Are you sure you want to delete the category "${category.name}"?`);
138
157
 
139
158
  // Если пользователь подтвердил удаление, продолжаем процесс
@@ -143,8 +162,7 @@
143
162
  alert('Category deletion cancelled');
144
163
  }
145
164
  }
146
-
147
165
  </script>
148
166
 
149
167
  <style lang="scss">
150
- </style>
168
+ </style>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="pd-thin bg-white for-transition w-100">
2
+ <div v-if="!isLoading" class="pd-thin bg-white for-transition w-100">
3
3
  <Block v-if="!MOBILE_APP" class="radius-big mn-b-thin flex-nowrap flex-v-center flex">
4
4
  <h1 class="mn-r-auto">
5
5
  {{route.params.category ? 'Edit Category' : 'Add Category'}}
@@ -176,7 +176,7 @@
176
176
 
177
177
  <script setup>
178
178
  // Import libs
179
- import { computed, onUnmounted } from 'vue'
179
+ import { computed, onUnmounted, onMounted, ref } from 'vue'
180
180
  import { useRoute,useRouter } from 'vue-router'
181
181
 
182
182
  import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';
@@ -200,12 +200,21 @@
200
200
  const route = useRoute()
201
201
  const router = useRouter()
202
202
 
203
+ const emits = defineEmits(['page-loading', 'page-loaded']);
204
+
203
205
  // Data prefetching
204
- if (route.params.category) {
205
- categories.actions.read({url: route.params.category})
206
- } else {
207
- categories.actions.clean() // Adjusted based on the new store's method to reset the category state
208
- }
206
+ const isLoading = ref(true)
207
+ onMounted(async () => {
208
+ emits('page-loading');
209
+ if (route.params.category) {
210
+ await categories.actions.read({url: route.params.category})
211
+ } else {
212
+ categories.actions.clean() // Adjusted based on the new store's method to reset the category state
213
+ }
214
+
215
+ emits('page-loaded');
216
+ isLoading.value = false
217
+ })
209
218
 
210
219
  // Accessing state
211
220
  const category = computed(() => categories.state.current)
@@ -355,6 +355,7 @@
355
355
  categories.state.all = await categories.actions.read({
356
356
  user: auth.state.user._id,
357
357
  rootOnly: true,
358
+ excludeChildren: false,
358
359
  limit: 100
359
360
  })
360
361
 
@@ -3,111 +3,166 @@ const controllerFactory = (db) => {
3
3
 
4
4
  return {
5
5
  async read(req, res) {
6
- try {
7
- const {
8
- parent,
9
- url,
10
- search,
11
- sort = 'order',
12
- order = 1,
13
- skip = 0,
14
- limit = 10,
15
- excludeChildren = false,
16
- rootOnly = false
17
- } = req.query;
18
-
19
- const matchStage = {
20
- ...(req.query.status && { status: req.query.status }),
21
- ...(req.query.url && { url: req.query.url }),
22
- ...(search && { name: { $regex: search, $options: 'i' } }),
23
- ...(parent ? { parent: new db.mongoose.Types.ObjectId(parent) } : {}),
24
- ...(rootOnly === true ? { parent: null } : {})
25
- };
26
-
27
- const pipeline = [
28
- { $match: matchStage },
29
- {
30
- $graphLookup: {
31
- from: 'categories',
32
- startWith: '$_id',
33
- connectFromField: '_id',
34
- connectToField: 'parent',
35
- as: 'allDescendants',
36
- maxDepth: 10
37
- }
38
- },
39
- { $sort: { [sort]: order === 'asc' ? 1 : -1 } },
40
- { $skip: Number(skip) },
41
- { $limit: Number(limit) },
42
- ];
43
-
44
- const flatResults = await Category.aggregate(pipeline);
45
-
46
- function buildTree(items) {
47
- const itemMap = {};
48
- const roots = [];
49
-
50
- // First pass: Create map of items by ID
51
- items.forEach(item => {
52
- itemMap[item._id.toString()] = {
53
- ...item,
54
- children: []
55
- };
56
- });
57
-
58
- // Second pass: Build tree structure
59
- items.forEach(item => {
60
- const itemId = item._id.toString();
61
- const parentId = item.parent?._id?.toString();
62
- if (parentId && itemMap[parentId]) {
63
- itemMap[parentId].children.push(itemMap[itemId]);
64
- } else {
65
- roots.push(itemMap[itemId]);
66
- }
67
- });
68
-
69
- // Sort children arrays by order property
70
- const sortByOrder = (a, b) => {
71
- const orderA = a.order ?? Number.MAX_SAFE_INTEGER;
72
- const orderB = b.order ?? Number.MAX_SAFE_INTEGER;
73
- return orderA - orderB;
74
- };
75
-
76
- // Recursive function to sort children at all levels
77
- const sortChildren = (node) => {
78
- if (node.children && node.children.length > 0) {
79
- node.children.sort(sortByOrder);
80
- node.children.forEach(sortChildren);
81
- }
82
- };
83
-
84
- // Sort roots and all children
85
- roots.sort(sortByOrder);
86
- roots.forEach(sortChildren);
87
-
88
- return roots;
89
- }
6
+ try {
7
+ let {
8
+ parent,
9
+ url,
10
+ search,
11
+ sortParam = 'order',
12
+ sortOrder = 'asc',
13
+ skip = 0,
14
+ limit = 10,
15
+ excludeChildren = 'true',
16
+ rootOnly = false
17
+ } = req.query;
18
+
19
+ // Создаем условия для выборки категорий
20
+ const matchStage = {
21
+ ...(req.query.status && { status: req.query.status }),
22
+ ...(req.query.url && { url: req.query.url }),
23
+ ...(search && { name: { $regex: search, $options: 'i' } }),
24
+ ...(parent ? { parent: new db.mongoose.Types.ObjectId(parent) } : {}),
25
+ ...(rootOnly === 'true' && !search ? { parent: null } : {})
26
+ };
90
27
 
91
- const treeResults = flatResults.map(doc => {
92
- const descendants = doc.allDescendants || [];
93
- const allItems = [doc, ...descendants];
94
- const tree = buildTree(allItems);
95
-
96
- // Find and return only the root node (original document)
97
- return tree.find(node => node._id.toString() === doc._id.toString());
98
- });
28
+ console.log('matchStage', matchStage)
99
29
 
100
- // Sort root categories
101
- treeResults.sort((a, b) => {
102
- const orderA = a.order ?? Number.MAX_SAFE_INTEGER;
103
- const orderB = b.order ?? Number.MAX_SAFE_INTEGER;
104
- return orderA - orderB;
30
+ if (search) excludeChildren = 'true'
31
+
32
+ // Базовый пайплайн для получения категорий
33
+ const pipeline = [
34
+ { $match: matchStage },
35
+ { $sort: { [sortParam]: sortOrder === 'asc' ? 1 : -1 } },
36
+ { $skip: Number(skip) },
37
+ { $limit: Number(limit) },
38
+ ];
39
+
40
+ // Если дочерние категории не исключаются, добавляем этап для получения потомков
41
+ if (excludeChildren !== 'true') {
42
+ pipeline.push({
43
+ $graphLookup: {
44
+ from: 'categories',
45
+ startWith: '$_id',
46
+ connectFromField: '_id',
47
+ connectToField: 'parent',
48
+ as: 'allDescendants',
49
+ maxDepth: 10
50
+ }
105
51
  });
52
+ }
53
+
54
+ // Выполняем агрегацию
55
+ const results = await Category.aggregate(pipeline);
56
+
57
+ // Если исключаем дочерние категории, просто возвращаем результаты
58
+ if (excludeChildren === 'true') {
59
+ console.log(results)
60
+ res.status(200).json(results);
61
+ return
62
+ }
63
+
64
+ // Объединяем все категории и их потомков в один массив
65
+ const allCategories = [];
66
+
67
+ results.forEach(doc => {
68
+ // Добавляем текущую категорию (без allDescendants)
69
+ const category = { ...doc };
70
+ delete category.allDescendants;
71
+ allCategories.push(category);
72
+
73
+ // Добавляем потомков, если они есть
74
+ if (doc.allDescendants && doc.allDescendants.length > 0) {
75
+ allCategories.push(...doc.allDescendants);
76
+ }
77
+ });
78
+
79
+ // Удаляем дубликаты категорий по ID
80
+ const uniqueCategories = Array.from(
81
+ new Map(allCategories.map(item => [item._id.toString(), item])).values()
82
+ );
83
+
84
+ // Строим дерево категорий
85
+ const tree = buildAdjacencyTree(uniqueCategories, sortParam, sortOrder);
106
86
 
107
- res.json(treeResults);
108
- } catch (err) {
109
- res.status(500).json({ message: err.message });
87
+ // Функция для построения дерева категорий с использованием паттерна Adjacency List
88
+ function buildAdjacencyTree(categories, sortParam, sortOrder) {
89
+ // Создаем карту категорий по ID для быстрого доступа
90
+ const categoryMap = new Map();
91
+
92
+ // Инициализируем каждую категорию с пустым массивом children
93
+ categories.forEach(category => {
94
+ categoryMap.set(category._id.toString(), {
95
+ ...category,
96
+ children: []
97
+ });
98
+ });
99
+
100
+ // Строим дерево, связывая родительские и дочерние категории
101
+ const rootCategories = [];
102
+
103
+ categories.forEach(category => {
104
+ const categoryWithChildren = categoryMap.get(category._id.toString());
105
+
106
+ // Если у категории есть родитель и этот родитель есть в нашей карте
107
+ if (category.parent && categoryMap.has(category.parent.toString())) {
108
+ const parentCategory = categoryMap.get(category.parent.toString());
109
+ parentCategory.children.push(categoryWithChildren);
110
+ }
111
+ // Иначе это корневая категория
112
+ else if (!category.parent) {
113
+ rootCategories.push(categoryWithChildren);
114
+ }
115
+ });
116
+
117
+ // Рекурсивная функция для сортировки категорий на всех уровнях
118
+ function sortCategories(nodes) {
119
+ if (!nodes || nodes.length === 0) {
120
+ return nodes;
121
+ }
122
+
123
+ // Сортируем текущий уровень
124
+ nodes.sort((a, b) => {
125
+ const valueA = a[sortParam] ?? (sortParam === 'order' ? Number.MAX_SAFE_INTEGER : '');
126
+ const valueB = b[sortParam] ?? (sortParam === 'order' ? Number.MAX_SAFE_INTEGER : '');
127
+
128
+ if (typeof valueA === 'number' && typeof valueB === 'number') {
129
+ return sortOrder === 'asc' ? valueA - valueB : valueB - valueA;
130
+ } else {
131
+ const stringA = String(valueA);
132
+ const stringB = String(valueB);
133
+ return sortOrder === 'asc' ? stringA.localeCompare(stringB) : stringB.localeCompare(stringA);
134
+ }
135
+ });
136
+
137
+ // Рекурсивно сортируем дочерние категории
138
+ nodes.forEach(node => {
139
+ if (node.children && node.children.length > 0) {
140
+ sortCategories(node.children);
141
+ }
142
+ });
143
+
144
+ return nodes;
145
+ }
146
+
147
+ // Сортируем категории на всех уровнях и возвращаем результат
148
+ return sortCategories(rootCategories);
110
149
  }
150
+
151
+ // Если rootOnly=true, возвращаем все корневые категории из дерева
152
+ if (rootOnly === 'true') {
153
+ res.json(tree);
154
+ }
155
+ // Иначе возвращаем только те корневые категории, которые соответствуют запросу
156
+ else {
157
+ const requestedCategoryIds = results.map(r => r._id.toString());
158
+ const filteredTree = tree.filter(category =>
159
+ requestedCategoryIds.includes(category._id.toString())
160
+ );
161
+ res.status(200).json(filteredTree);
162
+ }
163
+ } catch (err) {
164
+ res.status(500).json({ message: err.message });
165
+ }
111
166
  },
112
167
 
113
168
  async create(req, res) {
@@ -142,7 +197,6 @@ const controllerFactory = (db) => {
142
197
 
143
198
  async update(req, res) {
144
199
  try {
145
- console.log(req.body);
146
200
  const category = req.body; // Expecting a single category object directly
147
201
 
148
202
  if (!category || !category._id) {
@@ -167,7 +221,6 @@ const controllerFactory = (db) => {
167
221
  },
168
222
 
169
223
  async updateOrder(req, res) {
170
- console.log(req.body)
171
224
 
172
225
  try {
173
226
  const { categories } = req.body;
@@ -186,7 +239,6 @@ const controllerFactory = (db) => {
186
239
 
187
240
  await Category.bulkWrite(bulkOps);
188
241
  const updatedCategories = await Category.find().sort({ order: 'asc' }).lean();
189
- console.log(updatedCategories)
190
242
  res.status(200).json(updatedCategories);
191
243
 
192
244
  } catch (err) {
@@ -1 +0,0 @@
1
- {"version":3,"file":"Menu.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Menu.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tab.vue2.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 +0,0 @@
1
- {"version":3,"file":"server-renderer.esm-bundler.cjs","sources":["../../../../../../../../../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"],"sourcesContent":["/**\n* @vue/server-renderer v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { createVNode, ssrUtils, ssrContextKey, warn as warn$2, Fragment, Static, Comment, Text, mergeProps, createApp, initDirectivesForSSR } from 'vue';\nimport { isOn, isRenderableAttrValue, isSVGTag, propsToAttrMap, isBooleanAttr, includeBooleanAttr, isSSRSafeAttrName, escapeHtml, normalizeClass, isString, normalizeStyle, stringifyStyle, makeMap, isArray, toDisplayString, extend, isFunction, EMPTY_OBJ, getGlobalThis, NOOP, isObject, looseEqual, looseIndexOf, isPromise, escapeHtmlComment, isVoidTag } from '@vue/shared';\nexport { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared';\n\nconst shouldIgnoreProp = /* @__PURE__ */ makeMap(\n `,key,ref,innerHTML,textContent,ref_key,ref_for`\n);\nfunction ssrRenderAttrs(props, tag) {\n let ret = \"\";\n for (const key in props) {\n if (shouldIgnoreProp(key) || isOn(key) || tag === \"textarea\" && key === \"value\") {\n continue;\n }\n const value = props[key];\n if (key === \"class\") {\n ret += ` class=\"${ssrRenderClass(value)}\"`;\n } else if (key === \"style\") {\n ret += ` style=\"${ssrRenderStyle(value)}\"`;\n } else if (key === \"className\") {\n ret += ` class=\"${String(value)}\"`;\n } else {\n ret += ssrRenderDynamicAttr(key, value, tag);\n }\n }\n return ret;\n}\nfunction ssrRenderDynamicAttr(key, value, tag) {\n if (!isRenderableAttrValue(value)) {\n return ``;\n }\n const attrKey = tag && (tag.indexOf(\"-\") > 0 || isSVGTag(tag)) ? key : propsToAttrMap[key] || key.toLowerCase();\n if (isBooleanAttr(attrKey)) {\n return includeBooleanAttr(value) ? ` ${attrKey}` : ``;\n } else if (isSSRSafeAttrName(attrKey)) {\n return value === \"\" ? ` ${attrKey}` : ` ${attrKey}=\"${escapeHtml(value)}\"`;\n } else {\n console.warn(\n `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}`\n );\n return ``;\n }\n}\nfunction ssrRenderAttr(key, value) {\n if (!isRenderableAttrValue(value)) {\n return ``;\n }\n return ` ${key}=\"${escapeHtml(value)}\"`;\n}\nfunction ssrRenderClass(raw) {\n return escapeHtml(normalizeClass(raw));\n}\nfunction ssrRenderStyle(raw) {\n if (!raw) {\n return \"\";\n }\n if (isString(raw)) {\n return escapeHtml(raw);\n }\n const styles = normalizeStyle(raw);\n return escapeHtml(stringifyStyle(styles));\n}\n\nfunction ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) {\n return renderComponentVNode(\n createVNode(comp, props, children),\n parentComponent,\n slotScopeId\n );\n}\n\nconst { ensureValidVNode } = ssrUtils;\nfunction ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) {\n push(`<!--[-->`);\n ssrRenderSlotInner(\n slots,\n slotName,\n slotProps,\n fallbackRenderFn,\n push,\n parentComponent,\n slotScopeId\n );\n push(`<!--]-->`);\n}\nfunction ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) {\n const slotFn = slots[slotName];\n if (slotFn) {\n const slotBuffer = [];\n const bufferedPush = (item) => {\n slotBuffer.push(item);\n };\n const ret = slotFn(\n slotProps,\n bufferedPush,\n parentComponent,\n slotScopeId ? \" \" + slotScopeId : \"\"\n );\n if (isArray(ret)) {\n const validSlotContent = ensureValidVNode(ret);\n if (validSlotContent) {\n renderVNodeChildren(\n push,\n validSlotContent,\n parentComponent,\n slotScopeId\n );\n } else if (fallbackRenderFn) {\n fallbackRenderFn();\n }\n } else {\n let isEmptySlot = true;\n if (transition) {\n isEmptySlot = false;\n } else {\n for (let i = 0; i < slotBuffer.length; i++) {\n if (!isComment(slotBuffer[i])) {\n isEmptySlot = false;\n break;\n }\n }\n }\n if (isEmptySlot) {\n if (fallbackRenderFn) {\n fallbackRenderFn();\n }\n } else {\n let start = 0;\n let end = slotBuffer.length;\n if (transition && slotBuffer[0] === \"<!--[-->\" && slotBuffer[end - 1] === \"<!--]-->\") {\n start++;\n end--;\n }\n for (let i = start; i < end; i++) {\n push(slotBuffer[i]);\n }\n }\n }\n } else if (fallbackRenderFn) {\n fallbackRenderFn();\n }\n}\nconst commentTestRE = /^<!--[\\s\\S]*-->$/;\nconst commentRE = /<!--[^]*?-->/gm;\nfunction isComment(item) {\n if (typeof item !== \"string\" || !commentTestRE.test(item)) return false;\n if (item.length <= 8) return true;\n return !item.replace(commentRE, \"\").trim();\n}\n\nfunction ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) {\n parentPush(\"<!--teleport start-->\");\n const context = parentComponent.appContext.provides[ssrContextKey];\n const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {});\n const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []);\n const bufferIndex = targetBuffer.length;\n let teleportContent;\n if (disabled) {\n contentRenderFn(parentPush);\n teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`;\n } else {\n const { getBuffer, push } = createBuffer();\n push(`<!--teleport start anchor-->`);\n contentRenderFn(push);\n push(`<!--teleport anchor-->`);\n teleportContent = getBuffer();\n }\n targetBuffer.splice(bufferIndex, 0, teleportContent);\n parentPush(\"<!--teleport end-->\");\n}\n\nfunction ssrInterpolate(value) {\n return escapeHtml(toDisplayString(value));\n}\n\nlet activeSub;\nlet batchDepth = 0;\nlet batchedSub;\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= ~8;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\n\nclass Dep {\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n {\n return;\n }\n }\n trigger(debugInfo) {\n this.version++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nSymbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nSymbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nSymbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\n\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\n\nconst stack = [];\nfunction pushWarningContext$1(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext$1() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext$1(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext$1();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nlet devtools;\nlet buffer = [];\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n buffer = [];\n }\n }, 3e3);\n } else {\n buffer = [];\n }\n}\n\n{\n const g = getGlobalThis();\n const registerGlobalSetter = (key, setter) => {\n let setters;\n if (!(setters = g[key])) setters = g[key] = [];\n setters.push(setter);\n return (v) => {\n if (setters.length > 1) setters.forEach((set) => set(v));\n else setters[0](v);\n };\n };\n registerGlobalSetter(\n `__VUE_INSTANCE_SETTERS__`,\n (v) => v\n );\n registerGlobalSetter(\n `__VUE_SSR_SETTERS__`,\n (v) => v\n );\n}\n!!(process.env.NODE_ENV !== \"production\") ? {\n get(target, key) {\n track(target, \"get\", \"\");\n return target[key];\n },\n set() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn$1(`setupContext.attrs is readonly.`);\n return false;\n }\n} : {\n get(target, key) {\n track(target, \"get\", \"\");\n return target[key];\n }\n};\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name = inferFromRegistry(\n instance.components || instance.parent.type.components\n ) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\n!!(process.env.NODE_ENV !== \"production\") || true ? devtools : void 0;\n!!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook : NOOP;\n\nfunction ssrRenderList(source, renderItem) {\n if (isArray(source) || isString(source)) {\n for (let i = 0, l = source.length; i < l; i++) {\n renderItem(source[i], i);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n return;\n }\n for (let i = 0; i < source; i++) {\n renderItem(i + 1, i);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n const arr = Array.from(source);\n for (let i = 0, l = arr.length; i < l; i++) {\n renderItem(arr[i], i);\n }\n } else {\n const keys = Object.keys(source);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n renderItem(source[key], key, i);\n }\n }\n }\n}\n\nasync function ssrRenderSuspense(push, { default: renderContent }) {\n if (renderContent) {\n renderContent();\n } else {\n push(`<!---->`);\n }\n}\n\nfunction ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) {\n if (typeof dir !== \"function\" && dir.getSSRProps) {\n return dir.getSSRProps(\n {\n dir,\n instance: ssrUtils.getComponentPublicInstance(instance.$),\n value,\n oldValue: void 0,\n arg,\n modifiers\n },\n null\n ) || {};\n }\n return {};\n}\n\nconst ssrLooseEqual = looseEqual;\nfunction ssrLooseContain(arr, value) {\n return looseIndexOf(arr, value) > -1;\n}\nfunction ssrRenderDynamicModel(type, model, value) {\n switch (type) {\n case \"radio\":\n return looseEqual(model, value) ? \" checked\" : \"\";\n case \"checkbox\":\n return (isArray(model) ? ssrLooseContain(model, value) : model) ? \" checked\" : \"\";\n default:\n return ssrRenderAttr(\"value\", model);\n }\n}\nfunction ssrGetDynamicModelProps(existingProps = {}, model) {\n const { type, value } = existingProps;\n switch (type) {\n case \"radio\":\n return looseEqual(model, value) ? { checked: true } : null;\n case \"checkbox\":\n return (isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null;\n default:\n return { value: model };\n }\n}\n\nfunction ssrCompile(template, instance) {\n {\n throw new Error(\n `On-the-fly template compilation is not supported in the ESM build of @vue/server-renderer. All templates must be pre-compiled into render functions.`\n );\n }\n}\n\nconst {\n createComponentInstance,\n setCurrentRenderingInstance,\n setupComponent,\n renderComponentRoot,\n normalizeVNode,\n pushWarningContext,\n popWarningContext\n} = ssrUtils;\nfunction createBuffer() {\n let appendable = false;\n const buffer = [];\n return {\n getBuffer() {\n return buffer;\n },\n push(item) {\n const isStringItem = isString(item);\n if (appendable && isStringItem) {\n buffer[buffer.length - 1] += item;\n return;\n }\n buffer.push(item);\n appendable = isStringItem;\n if (isPromise(item) || isArray(item) && item.hasAsync) {\n buffer.hasAsync = true;\n }\n }\n };\n}\nfunction renderComponentVNode(vnode, parentComponent = null, slotScopeId) {\n const instance = vnode.component = createComponentInstance(\n vnode,\n parentComponent,\n null\n );\n if (!!(process.env.NODE_ENV !== \"production\")) pushWarningContext(vnode);\n const res = setupComponent(\n instance,\n true\n /* isSSR */\n );\n if (!!(process.env.NODE_ENV !== \"production\")) popWarningContext();\n const hasAsyncSetup = isPromise(res);\n let prefetches = instance.sp;\n if (hasAsyncSetup || prefetches) {\n const p = Promise.resolve(res).then(() => {\n if (hasAsyncSetup) prefetches = instance.sp;\n if (prefetches) {\n return Promise.all(\n prefetches.map((prefetch) => prefetch.call(instance.proxy))\n );\n }\n }).catch(NOOP);\n return p.then(() => renderComponentSubTree(instance, slotScopeId));\n } else {\n return renderComponentSubTree(instance, slotScopeId);\n }\n}\nfunction renderComponentSubTree(instance, slotScopeId) {\n if (!!(process.env.NODE_ENV !== \"production\")) pushWarningContext(instance.vnode);\n const comp = instance.type;\n const { getBuffer, push } = createBuffer();\n if (isFunction(comp)) {\n let root = renderComponentRoot(instance);\n if (!comp.props) {\n for (const key in instance.attrs) {\n if (key.startsWith(`data-v-`)) {\n (root.props || (root.props = {}))[key] = ``;\n }\n }\n }\n renderVNode(push, instance.subTree = root, instance, slotScopeId);\n } else {\n if ((!instance.render || instance.render === NOOP) && !instance.ssrRender && !comp.ssrRender && isString(comp.template)) {\n comp.ssrRender = ssrCompile(comp.template);\n }\n const ssrRender = instance.ssrRender || comp.ssrRender;\n if (ssrRender) {\n let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0;\n let hasCloned = false;\n let cur = instance;\n while (true) {\n const scopeId = cur.vnode.scopeId;\n if (scopeId) {\n if (!hasCloned) {\n attrs = { ...attrs };\n hasCloned = true;\n }\n attrs[scopeId] = \"\";\n }\n const parent = cur.parent;\n if (parent && parent.subTree && parent.subTree === cur.vnode) {\n cur = parent;\n } else {\n break;\n }\n }\n if (slotScopeId) {\n if (!hasCloned) attrs = { ...attrs };\n const slotScopeIdList = slotScopeId.trim().split(\" \");\n for (let i = 0; i < slotScopeIdList.length; i++) {\n attrs[slotScopeIdList[i]] = \"\";\n }\n }\n const prev = setCurrentRenderingInstance(instance);\n try {\n ssrRender(\n instance.proxy,\n push,\n instance,\n attrs,\n // compiler-optimized bindings\n instance.props,\n instance.setupState,\n instance.data,\n instance.ctx\n );\n } finally {\n setCurrentRenderingInstance(prev);\n }\n } else if (instance.render && instance.render !== NOOP) {\n renderVNode(\n push,\n instance.subTree = renderComponentRoot(instance),\n instance,\n slotScopeId\n );\n } else {\n const componentName = comp.name || comp.__file || `<Anonymous>`;\n warn$2(`Component ${componentName} is missing template or render function.`);\n push(`<!---->`);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) popWarningContext();\n return getBuffer();\n}\nfunction renderVNode(push, vnode, parentComponent, slotScopeId) {\n const { type, shapeFlag, children, dirs, props } = vnode;\n if (dirs) {\n vnode.props = applySSRDirectives(vnode, props, dirs);\n }\n switch (type) {\n case Text:\n push(escapeHtml(children));\n break;\n case Comment:\n push(\n children ? `<!--${escapeHtmlComment(children)}-->` : `<!---->`\n );\n break;\n case Static:\n push(children);\n break;\n case Fragment:\n if (vnode.slotScopeIds) {\n slotScopeId = (slotScopeId ? slotScopeId + \" \" : \"\") + vnode.slotScopeIds.join(\" \");\n }\n push(`<!--[-->`);\n renderVNodeChildren(\n push,\n children,\n parentComponent,\n slotScopeId\n );\n push(`<!--]-->`);\n break;\n default:\n if (shapeFlag & 1) {\n renderElementVNode(push, vnode, parentComponent, slotScopeId);\n } else if (shapeFlag & 6) {\n push(renderComponentVNode(vnode, parentComponent, slotScopeId));\n } else if (shapeFlag & 64) {\n renderTeleportVNode(push, vnode, parentComponent, slotScopeId);\n } else if (shapeFlag & 128) {\n renderVNode(push, vnode.ssContent, parentComponent, slotScopeId);\n } else {\n warn$2(\n \"[@vue/server-renderer] Invalid VNode type:\",\n type,\n `(${typeof type})`\n );\n }\n }\n}\nfunction renderVNodeChildren(push, children, parentComponent, slotScopeId) {\n for (let i = 0; i < children.length; i++) {\n renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId);\n }\n}\nfunction renderElementVNode(push, vnode, parentComponent, slotScopeId) {\n const tag = vnode.type;\n let { props, children, shapeFlag, scopeId } = vnode;\n let openTag = `<${tag}`;\n if (props) {\n openTag += ssrRenderAttrs(props, tag);\n }\n if (scopeId) {\n openTag += ` ${scopeId}`;\n }\n let curParent = parentComponent;\n let curVnode = vnode;\n while (curParent && curVnode === curParent.subTree) {\n curVnode = curParent.vnode;\n if (curVnode.scopeId) {\n openTag += ` ${curVnode.scopeId}`;\n }\n curParent = curParent.parent;\n }\n if (slotScopeId) {\n openTag += ` ${slotScopeId}`;\n }\n push(openTag + `>`);\n if (!isVoidTag(tag)) {\n let hasChildrenOverride = false;\n if (props) {\n if (props.innerHTML) {\n hasChildrenOverride = true;\n push(props.innerHTML);\n } else if (props.textContent) {\n hasChildrenOverride = true;\n push(escapeHtml(props.textContent));\n } else if (tag === \"textarea\" && props.value) {\n hasChildrenOverride = true;\n push(escapeHtml(props.value));\n }\n }\n if (!hasChildrenOverride) {\n if (shapeFlag & 8) {\n push(escapeHtml(children));\n } else if (shapeFlag & 16) {\n renderVNodeChildren(\n push,\n children,\n parentComponent,\n slotScopeId\n );\n }\n }\n push(`</${tag}>`);\n }\n}\nfunction applySSRDirectives(vnode, rawProps, dirs) {\n const toMerge = [];\n for (let i = 0; i < dirs.length; i++) {\n const binding = dirs[i];\n const {\n dir: { getSSRProps }\n } = binding;\n if (getSSRProps) {\n const props = getSSRProps(binding, vnode);\n if (props) toMerge.push(props);\n }\n }\n return mergeProps(rawProps || {}, ...toMerge);\n}\nfunction renderTeleportVNode(push, vnode, parentComponent, slotScopeId) {\n const target = vnode.props && vnode.props.to;\n const disabled = vnode.props && vnode.props.disabled;\n if (!target) {\n if (!disabled) {\n warn$2(`[@vue/server-renderer] Teleport is missing target prop.`);\n }\n return [];\n }\n if (!isString(target)) {\n warn$2(\n `[@vue/server-renderer] Teleport target must be a query selector string.`\n );\n return [];\n }\n ssrRenderTeleport(\n push,\n (push2) => {\n renderVNodeChildren(\n push2,\n vnode.children,\n parentComponent,\n slotScopeId\n );\n },\n target,\n disabled || disabled === \"\",\n parentComponent\n );\n}\n\nconst { isVNode: isVNode$1 } = ssrUtils;\nfunction nestedUnrollBuffer(buffer, parentRet, startIndex) {\n if (!buffer.hasAsync) {\n return parentRet + unrollBufferSync$1(buffer);\n }\n let ret = parentRet;\n for (let i = startIndex; i < buffer.length; i += 1) {\n const item = buffer[i];\n if (isString(item)) {\n ret += item;\n continue;\n }\n if (isPromise(item)) {\n return item.then((nestedItem) => {\n buffer[i] = nestedItem;\n return nestedUnrollBuffer(buffer, ret, i);\n });\n }\n const result = nestedUnrollBuffer(item, ret, 0);\n if (isPromise(result)) {\n return result.then((nestedItem) => {\n buffer[i] = nestedItem;\n return nestedUnrollBuffer(buffer, \"\", i);\n });\n }\n ret = result;\n }\n return ret;\n}\nfunction unrollBuffer$1(buffer) {\n return nestedUnrollBuffer(buffer, \"\", 0);\n}\nfunction unrollBufferSync$1(buffer) {\n let ret = \"\";\n for (let i = 0; i < buffer.length; i++) {\n let item = buffer[i];\n if (isString(item)) {\n ret += item;\n } else {\n ret += unrollBufferSync$1(item);\n }\n }\n return ret;\n}\nasync function renderToString(input, context = {}) {\n if (isVNode$1(input)) {\n return renderToString(createApp({ render: () => input }), context);\n }\n const vnode = createVNode(input._component, input._props);\n vnode.appContext = input._context;\n input.provide(ssrContextKey, context);\n const buffer = await renderComponentVNode(vnode);\n const result = await unrollBuffer$1(buffer);\n await resolveTeleports(context);\n if (context.__watcherHandles) {\n for (const unwatch of context.__watcherHandles) {\n unwatch();\n }\n }\n return result;\n}\nasync function resolveTeleports(context) {\n if (context.__teleportBuffers) {\n context.teleports = context.teleports || {};\n for (const key in context.__teleportBuffers) {\n context.teleports[key] = await unrollBuffer$1(\n await Promise.all([context.__teleportBuffers[key]])\n );\n }\n }\n}\n\nconst { isVNode } = ssrUtils;\nasync function unrollBuffer(buffer, stream) {\n if (buffer.hasAsync) {\n for (let i = 0; i < buffer.length; i++) {\n let item = buffer[i];\n if (isPromise(item)) {\n item = await item;\n }\n if (isString(item)) {\n stream.push(item);\n } else {\n await unrollBuffer(item, stream);\n }\n }\n } else {\n unrollBufferSync(buffer, stream);\n }\n}\nfunction unrollBufferSync(buffer, stream) {\n for (let i = 0; i < buffer.length; i++) {\n let item = buffer[i];\n if (isString(item)) {\n stream.push(item);\n } else {\n unrollBufferSync(item, stream);\n }\n }\n}\nfunction renderToSimpleStream(input, context, stream) {\n if (isVNode(input)) {\n return renderToSimpleStream(\n createApp({ render: () => input }),\n context,\n stream\n );\n }\n const vnode = createVNode(input._component, input._props);\n vnode.appContext = input._context;\n input.provide(ssrContextKey, context);\n Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => {\n if (context.__watcherHandles) {\n for (const unwatch of context.__watcherHandles) {\n unwatch();\n }\n }\n }).then(() => stream.push(null)).catch((error) => {\n stream.destroy(error);\n });\n return stream;\n}\nfunction renderToStream(input, context = {}) {\n console.warn(\n `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.`\n );\n return renderToNodeStream(input, context);\n}\nfunction renderToNodeStream(input, context = {}) {\n {\n throw new Error(\n `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.`\n );\n }\n}\nfunction pipeToNodeWritable(input, context = {}, writable) {\n renderToSimpleStream(input, context, {\n push(content) {\n if (content != null) {\n writable.write(content);\n } else {\n writable.end();\n }\n },\n destroy(err) {\n writable.destroy(err);\n }\n });\n}\nfunction renderToWebStream(input, context = {}) {\n if (typeof ReadableStream !== \"function\") {\n throw new Error(\n `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.`\n );\n }\n const encoder = new TextEncoder();\n let cancelled = false;\n return new ReadableStream({\n start(controller) {\n renderToSimpleStream(input, context, {\n push(content) {\n if (cancelled) return;\n if (content != null) {\n controller.enqueue(encoder.encode(content));\n } else {\n controller.close();\n }\n },\n destroy(err) {\n controller.error(err);\n }\n });\n },\n cancel() {\n cancelled = true;\n }\n });\n}\nfunction pipeToWebWritable(input, context = {}, writable) {\n const writer = writable.getWriter();\n const encoder = new TextEncoder();\n let hasReady = false;\n try {\n hasReady = isPromise(writer.ready);\n } catch (e) {\n }\n renderToSimpleStream(input, context, {\n async push(content) {\n if (hasReady) {\n await writer.ready;\n }\n if (content != null) {\n return writer.write(encoder.encode(content));\n } else {\n return writer.close();\n }\n },\n destroy(err) {\n console.log(err);\n writer.close();\n }\n });\n}\n\ninitDirectivesForSSR();\n\nexport { pipeToNodeWritable, pipeToWebWritable, renderToNodeStream, renderToSimpleStream, renderToStream, renderToString, renderToWebStream, ssrGetDirectiveProps, ssrGetDynamicModelProps, ssrInterpolate, ssrLooseContain, ssrLooseEqual, ssrRenderAttr, ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrRenderDynamicAttr, ssrRenderDynamicModel, ssrRenderList, ssrRenderSlot, ssrRenderSlotInner, ssrRenderStyle, ssrRenderSuspense, ssrRenderTeleport, renderVNode as ssrRenderVNode };\n"],"names":["makeMap","isOn","isRenderableAttrValue","isSVGTag","propsToAttrMap","isBooleanAttr","includeBooleanAttr","isSSRSafeAttrName","escapeHtml","normalizeClass","isString","normalizeStyle","stringifyStyle","ssrUtils","ssrContextKey","isFunction","EMPTY_OBJ","getGlobalThis","NOOP","buffer","isPromise","isArray","warn$2","Text","Comment","escapeHtmlComment","Static","Fragment","isVoidTag","mergeProps","createApp","createVNode","initDirectivesForSSR"],"mappings":"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","x_google_ignoreList":[0]}