@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.
- package/dist/{Media-CR0V1zvB.js → Media-DW8RLbfM.js} +1 -1
- package/dist/{Media-C4Ges_Sd.mjs → Media-y_TX6us_.mjs} +1 -1
- package/dist/_virtual/index.cjs +1 -1
- package/dist/_virtual/index.js +1 -1
- package/dist/auth.server.js +1 -1
- package/dist/auth.server.mjs +1 -1
- package/dist/chats.server.js +1 -1
- package/dist/chats.server.mjs +1 -1
- package/dist/community.server.js +1 -1
- package/dist/community.server.mjs +1 -1
- package/dist/events.server.js +1 -1
- package/dist/events.server.mjs +1 -1
- package/dist/files.server.js +1 -1
- package/dist/files.server.mjs +1 -1
- package/dist/gallery.server.js +1 -1
- package/dist/gallery.server.mjs +1 -1
- package/dist/{index-DQqZReAr.js → index-CVXl1rB5.js} +0 -1
- package/dist/{index-DICZTQ-1.mjs → index-Df8vtZx7.mjs} +0 -1
- package/dist/{main-CsZAG5Wz.js → main-CCfQH-Dd.js} +2 -2
- package/dist/{main-CTcal9qN.mjs → main-CgmHzhq5.mjs} +74 -74
- 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
- package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.cjs.map +1 -0
- 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
- package/dist/martyrs/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js.map +1 -0
- package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +1 -0
- package/dist/martyrs/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.cjs +5 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.cjs.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js +5 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
- package/dist/{node_modules/.pnpm/uuid@11.1.0 → martyrs}/node_modules/uuid/dist/esm-browser/rng.cjs +4 -4
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.cjs.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js +15 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/rng.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.cjs +17 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.cjs.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js +17 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.cjs +13 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.cjs.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js +13 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/v4.js.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.cjs +8 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.cjs.map +1 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js +8 -0
- package/dist/martyrs/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs +5 -5
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js +5 -5
- package/dist/martyrs/src/components/Skeleton/Skeleton.vue.js.map +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue2.cjs → Tab.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Tab/{Tab.vue2.js.map → Tab.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
- package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
- package/dist/martyrs/src/components/Tree/Tree.vue.cjs +3 -1
- package/dist/martyrs/src/components/Tree/Tree.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Tree/Tree.vue.js +3 -1
- package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs +1 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.cjs +1 -1
- package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs +107 -21
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.js +107 -21
- package/dist/martyrs/src/modules/globals/views/classes/globals.store.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +10 -14
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +12 -16
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +7 -13
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +7 -13
- package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +6 -7
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +7 -8
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
- package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +34 -13
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +35 -14
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +20 -9
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +21 -10
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/notifications.server.js +35 -2
- package/dist/notifications.server.mjs +35 -2
- package/dist/orders.server.js +3 -3
- package/dist/orders.server.mjs +3 -3
- package/dist/organizations.server.js +1 -1
- package/dist/organizations.server.mjs +1 -1
- package/dist/products.server.js +78 -53
- package/dist/products.server.mjs +78 -53
- package/dist/rents.server.js +1 -1
- package/dist/rents.server.mjs +1 -1
- package/dist/style.css +37 -38
- package/dist/wallet.server.js +1 -1
- package/dist/wallet.server.mjs +1 -1
- package/package.json +2 -1
- package/src/components/Feed/Feed.vue +2 -7
- package/src/components/Skeleton/Skeleton.vue +4 -5
- package/src/components/Tree/Tree.vue +5 -2
- package/src/modules/auth/controllers/middlewares/authJwt.js +1 -1
- package/src/modules/auth/views/store/auth.js +2 -1
- package/src/modules/globals/controllers/classes/globals.crud.js +2 -2
- package/src/modules/globals/views/classes/globals.store.js +119 -31
- package/src/modules/globals/views/components/partials/Navigation.vue +11 -10
- package/src/modules/globals/views/utils/vue-app-renderer.js +7 -16
- package/src/modules/icons/entities/IconMusic.vue +14 -0
- package/src/modules/icons/navigation/IconCheck.vue +31 -0
- package/src/modules/icons/navigation/IconHeart.vue +26 -0
- package/src/modules/icons/navigation/IconPause.vue +31 -0
- package/src/modules/icons/navigation/IconPlay.vue +17 -0
- package/src/modules/icons/navigation/IconRefresh.vue +31 -0
- package/src/modules/icons/navigation/IconShuffle.vue +31 -0
- package/src/modules/icons/navigation/IconVolume.vue +31 -0
- package/src/modules/music/components/SidebarMusic.vue +156 -0
- package/src/modules/music/components/cards/AlbumCard.vue +107 -0
- package/src/modules/music/components/cards/ArtistCard.vue +37 -0
- package/src/modules/music/components/cards/PlaylistCard.vue +100 -0
- package/src/modules/music/components/cards/TrackCard.vue +86 -0
- package/src/modules/music/components/forms/PlaylistForm.vue +156 -0
- package/src/modules/music/components/forms/SearchForm.vue +82 -0
- package/src/modules/music/components/forms/UploadForm.vue +313 -0
- package/src/modules/music/components/layouts/MusicLayout.vue +137 -0
- package/src/modules/music/components/lists/AlbumList.vue +25 -0
- package/src/modules/music/components/lists/ArtistList.vue +25 -0
- package/src/modules/music/components/lists/PlaylistList.vue +25 -0
- package/src/modules/music/components/lists/TrackList.vue +175 -0
- package/src/modules/music/components/pages/AlbumDetail.vue +265 -0
- package/src/modules/music/components/pages/ArtistDetail.vue +247 -0
- package/src/modules/music/components/pages/MusicHome.vue +177 -0
- package/src/modules/music/components/pages/MusicLibrary.vue +192 -0
- package/src/modules/music/components/pages/MusicUpload.vue +44 -0
- package/src/modules/music/components/pages/PlaylistDetail.vue +504 -0
- package/src/modules/music/components/pages/SearchResults.vue +397 -0
- package/src/modules/music/components/pages/TrackDetail.vue +143 -0
- package/src/modules/music/components/player/MusicPlayer.vue +202 -0
- package/src/modules/music/components/player/TrackProgress.vue +110 -0
- package/src/modules/music/components/player/VolumeControl.vue +98 -0
- package/src/modules/music/controllers/album.controller.js +98 -0
- package/src/modules/music/controllers/artist.controller.js +111 -0
- package/src/modules/music/controllers/genre.controller.js +71 -0
- package/src/modules/music/controllers/music.controller.js +174 -0
- package/src/modules/music/controllers/playlist.controller.js +182 -0
- package/src/modules/music/controllers/search.controller.js +103 -0
- package/src/modules/music/controllers/stream.controller.js +106 -0
- package/src/modules/music/models/album.model.js +61 -0
- package/src/modules/music/models/artist.model.js +67 -0
- package/src/modules/music/models/genre.model.js +42 -0
- package/src/modules/music/models/play-history.model.js +51 -0
- package/src/modules/music/models/playlist.model.js +69 -0
- package/src/modules/music/models/track.model.js +94 -0
- package/src/modules/music/music.client.js +186 -0
- package/src/modules/music/music.server.js +114 -0
- package/src/modules/music/policies/music.policies.js +84 -0
- package/src/modules/music/router/music.js +77 -0
- package/src/modules/music/routes/album.routes.js +62 -0
- package/src/modules/music/routes/artist.routes.js +67 -0
- package/src/modules/music/routes/genre.routes.js +60 -0
- package/src/modules/music/routes/music.routes.js +145 -0
- package/src/modules/music/routes/playlist.routes.js +99 -0
- package/src/modules/music/routes/search.routes.js +10 -0
- package/src/modules/music/routes/stream.routes.js +38 -0
- package/src/modules/music/store/albums.js +200 -0
- package/src/modules/music/store/artists.js +180 -0
- package/src/modules/music/store/player.js +397 -0
- package/src/modules/music/store/playlists.js +211 -0
- package/src/modules/music/store/search.js +126 -0
- package/src/modules/music/store/tracks.js +230 -0
- package/src/modules/music/websocket/streaming.handler.js +151 -0
- package/src/modules/notifications/controllers/notifications.controller.js +44 -1
- package/src/modules/notifications/notifications.server.js +0 -1
- package/src/modules/notifications/routes/notifications.routes.js +3 -0
- package/src/modules/orders/components/pages/OrderCreate.vue +0 -2
- package/src/modules/products/components/blocks/CardCategory.vue +5 -4
- package/src/modules/products/components/pages/Categories.vue +38 -20
- package/src/modules/products/components/pages/CategoryEdit.vue +16 -7
- package/src/modules/products/components/pages/ProductEdit.vue +1 -0
- package/src/modules/products/controllers/categories.controller.js +155 -103
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +0 -1
- 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
- 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
- package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.cjs.map +0 -1
- package/dist/node_modules/.pnpm/@vue_shared@3.5.13/node_modules/@vue/shared/dist/shared.esm-bundler.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.cjs +0 -6
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.cjs.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js +0 -6
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.cjs.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js +0 -15
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.cjs +0 -11
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.cjs.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js +0 -11
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.cjs +0 -21
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.cjs.map +0 -1
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js +0 -21
- package/dist/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
- /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.cjs +0 -0
- /package/dist/{node_modules/.pnpm/@vue_shared@3.5.13 → martyrs}/node_modules/@vue/shared/dist/shared.esm-bundler.js +0 -0
- /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.cjs +0 -0
- /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.cjs.map +0 -0
- /package/dist/{node_modules → martyrs/node_modules}/fast-deep-equal/index.js +0 -0
- /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
|
-
|
|
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
|
|
17
|
+
class="uppercase t-medium pd-small radius-big bg-white nav-link"
|
|
18
18
|
>
|
|
19
|
-
Add
|
|
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="
|
|
49
|
-
:state="
|
|
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
|
-
|
|
135
|
+
|
|
136
|
+
// Функция для обновления порядка категорий
|
|
137
|
+
async function updateCategoriesOrder(updatedCategories) {
|
|
138
|
+
alert('helo')
|
|
119
139
|
try {
|
|
120
|
-
//
|
|
121
|
-
const
|
|
122
|
-
const flattenedCategories = flattenCategoryTree(allCategories);
|
|
140
|
+
// Преобразуем категории в плоский массив
|
|
141
|
+
const flattenedCategories = flattenCategoryTree(categories.state.all);
|
|
123
142
|
|
|
124
|
-
|
|
125
|
-
console.log(
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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)
|
|
@@ -3,111 +3,166 @@ const controllerFactory = (db) => {
|
|
|
3
3
|
|
|
4
4
|
return {
|
|
5
5
|
async read(req, res) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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]}
|