@ozdao/martyrs 0.2.494 → 0.2.496
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/_virtual/index.cjs +4 -4
- package/dist/_virtual/index.js +4 -4
- package/dist/_virtual/index2.cjs +4 -4
- package/dist/_virtual/index2.js +4 -4
- package/dist/builder.cjs +41 -42
- package/dist/builder.js +43 -44
- package/dist/globals.server.cjs +13 -2
- package/dist/globals.server.js +13 -2
- package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +1 -1
- package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.cjs → Tooltip.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js.map → Tooltip.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js +1 -1
- package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +28 -13
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +28 -13
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js +1 -1
- package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js.map +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +2 -2
- package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +95 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +95 -0
- package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -0
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +2 -2
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +2 -2
- package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +127 -175
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +136 -184
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +5 -5
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +5 -5
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +5 -5
- package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +97 -144
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +113 -160
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +7 -7
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +7 -7
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +164 -170
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +185 -191
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +2 -2
- package/dist/martyrs/src/modules/music/router/music.js +2 -2
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js +1 -1
- package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.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 +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
- 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/sections/DetailsTabSection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
- package/dist/martyrs.css +1 -1
- package/dist/style.css +18 -5
- package/package.json +1 -1
- package/src/builder/rspack/rspack.config.ssr.client.js +40 -40
- package/src/modules/globals/controllers/classes/globals.websocket.js +11 -2
- package/src/modules/globals/globals.client.js +1 -2
- package/src/modules/globals/views/components/layouts/Client.vue +13 -11
- package/src/modules/globals/views/router/scrollBehavior.js +1 -1
- package/src/modules/music/README.md +2 -0
- package/src/modules/music/components/SidebarMusic.vue +7 -7
- package/src/modules/music/components/cards/ArtistCardSmall.vue +92 -0
- package/src/modules/music/components/cards/TrackListCard.vue +1 -1
- package/src/modules/music/components/forms/SearchForm.vue +1 -1
- package/src/modules/music/components/pages/Album.vue +44 -83
- package/src/modules/music/components/pages/Artist.vue +5 -5
- package/src/modules/music/components/pages/MusicLibrary.vue +5 -5
- package/src/modules/music/components/pages/Playlist.vue +35 -53
- package/src/modules/music/components/pages/SearchResults.vue +6 -6
- package/src/modules/music/components/pages/Track.vue +66 -87
- package/src/modules/music/music.client.js +1 -1
- package/src/modules/notifications/notifications.client.js +1 -1
- package/src/styles/base/all.scss +1 -0
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +0 -1
|
@@ -5,7 +5,7 @@ const vueRouter = require("vue-router");
|
|
|
5
5
|
const IconChevronBottom = require("../../../../icons/navigation/IconChevronBottom.vue.cjs");
|
|
6
6
|
const globals = require("../../store/globals.cjs");
|
|
7
7
|
const auth = require("../../../../auth/views/store/auth.cjs");
|
|
8
|
-
;/* empty css
|
|
8
|
+
;/* empty css */
|
|
9
9
|
;/* empty css */
|
|
10
10
|
;/* empty css */
|
|
11
11
|
const _pluginVue_exportHelper = require("../../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
@@ -3,7 +3,7 @@ import { useRouter, useRoute } from "vue-router";
|
|
|
3
3
|
import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
|
|
4
4
|
import { state } from "../../store/globals.js";
|
|
5
5
|
import { state as state$1 } from "../../../../auth/views/store/auth.js";
|
|
6
|
-
/* empty css
|
|
6
|
+
/* empty css */
|
|
7
7
|
/* empty css */
|
|
8
8
|
/* empty css */
|
|
9
9
|
import _export_sfc from "../../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
@@ -14,7 +14,7 @@ async function scrollBehavior(to, from, savedPosition) {
|
|
|
14
14
|
};
|
|
15
15
|
if (to.hash) {
|
|
16
16
|
let el = await findEl(to.hash);
|
|
17
|
-
let screen = await findEl("#
|
|
17
|
+
let screen = await findEl("#scrollview");
|
|
18
18
|
if ("scrollBehavior" in document.documentElement.style) {
|
|
19
19
|
return screen.scrollTo({ top: el.offsetTop, behavior: "smooth" });
|
|
20
20
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollBehavior.cjs","sources":["../../../../../../../src/modules/globals/views/router/scrollBehavior.js"],"sourcesContent":["export default async function scrollBehavior(to, from, savedPosition) {\n if (to.hash) {\n const findEl = async (hash, x) => {\n return (\n document.querySelector(hash) ||\n new Promise((resolve, reject) => {\n if (x > 50) {\n return resolve();\n }\n setTimeout(() => {\n resolve(findEl(hash, ++x || 1));\n }, 1000);\n })\n );\n };\n\n if (to.hash) {\n let el = await findEl(to.hash);\n let screen = await findEl('#
|
|
1
|
+
{"version":3,"file":"scrollBehavior.cjs","sources":["../../../../../../../src/modules/globals/views/router/scrollBehavior.js"],"sourcesContent":["export default async function scrollBehavior(to, from, savedPosition) {\n if (to.hash) {\n const findEl = async (hash, x) => {\n return (\n document.querySelector(hash) ||\n new Promise((resolve, reject) => {\n if (x > 50) {\n return resolve();\n }\n setTimeout(() => {\n resolve(findEl(hash, ++x || 1));\n }, 1000);\n })\n );\n };\n\n if (to.hash) {\n let el = await findEl(to.hash);\n let screen = await findEl('#scrollview');\n\n if ('scrollBehavior' in document.documentElement.style) {\n return screen.scrollTo({ top: el.offsetTop, behavior: 'smooth' });\n } else {\n return screen.scrollTo(0, el.offsetTop);\n }\n }\n } else if (to.matched.some(m => m.meta.scrollTo)) {\n return { top: m.meta.scrollTo.top, left: m.meta.scrollTo.left };\n } else if (savedPosition) {\n return { savedPosition };\n } else {\n return { top: 0 };\n }\n}\n"],"names":["m"],"mappings":";;AAAe,eAAe,eAAe,IAAI,MAAM,eAAe;AACpE,MAAI,GAAG,MAAM;AACX,UAAM,SAAS,OAAO,MAAM,MAAM;AAChC,aACE,SAAS,cAAc,IAAI,KAC3B,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/B,YAAI,IAAI,IAAI;AACV,iBAAO,QAAO;AAAA,QAChB;AACA,mBAAW,MAAM;AACf,kBAAQ,OAAO,MAAM,EAAE,KAAK,CAAC,CAAC;AAAA,QAChC,GAAG,GAAI;AAAA,MACT,CAAC;AAAA,IAEL;AAEA,QAAI,GAAG,MAAM;AACX,UAAI,KAAK,MAAM,OAAO,GAAG,IAAI;AAC7B,UAAI,SAAS,MAAM,OAAO,aAAa;AAEvC,UAAI,oBAAoB,SAAS,gBAAgB,OAAO;AACtD,eAAO,OAAO,SAAS,EAAE,KAAK,GAAG,WAAW,UAAU,UAAU;AAAA,MAClE,OAAO;AACL,eAAO,OAAO,SAAS,GAAG,GAAG,SAAS;AAAA,MACxC;AAAA,IACF;AAAA,EACF,WAAW,GAAG,QAAQ,KAAK,CAAAA,OAAKA,GAAE,KAAK,QAAQ,GAAG;AAChD,WAAO,EAAE,KAAK,EAAE,KAAK,SAAS,KAAK,MAAM,EAAE,KAAK,SAAS,KAAI;AAAA,EAC/D,WAAW,eAAe;AACxB,WAAO,EAAE,cAAa;AAAA,EACxB,OAAO;AACL,WAAO,EAAE,KAAK,EAAC;AAAA,EACjB;AACF;;"}
|
|
@@ -12,7 +12,7 @@ async function scrollBehavior(to, from, savedPosition) {
|
|
|
12
12
|
};
|
|
13
13
|
if (to.hash) {
|
|
14
14
|
let el = await findEl(to.hash);
|
|
15
|
-
let screen = await findEl("#
|
|
15
|
+
let screen = await findEl("#scrollview");
|
|
16
16
|
if ("scrollBehavior" in document.documentElement.style) {
|
|
17
17
|
return screen.scrollTo({ top: el.offsetTop, behavior: "smooth" });
|
|
18
18
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollBehavior.js","sources":["../../../../../../../src/modules/globals/views/router/scrollBehavior.js"],"sourcesContent":["export default async function scrollBehavior(to, from, savedPosition) {\n if (to.hash) {\n const findEl = async (hash, x) => {\n return (\n document.querySelector(hash) ||\n new Promise((resolve, reject) => {\n if (x > 50) {\n return resolve();\n }\n setTimeout(() => {\n resolve(findEl(hash, ++x || 1));\n }, 1000);\n })\n );\n };\n\n if (to.hash) {\n let el = await findEl(to.hash);\n let screen = await findEl('#
|
|
1
|
+
{"version":3,"file":"scrollBehavior.js","sources":["../../../../../../../src/modules/globals/views/router/scrollBehavior.js"],"sourcesContent":["export default async function scrollBehavior(to, from, savedPosition) {\n if (to.hash) {\n const findEl = async (hash, x) => {\n return (\n document.querySelector(hash) ||\n new Promise((resolve, reject) => {\n if (x > 50) {\n return resolve();\n }\n setTimeout(() => {\n resolve(findEl(hash, ++x || 1));\n }, 1000);\n })\n );\n };\n\n if (to.hash) {\n let el = await findEl(to.hash);\n let screen = await findEl('#scrollview');\n\n if ('scrollBehavior' in document.documentElement.style) {\n return screen.scrollTo({ top: el.offsetTop, behavior: 'smooth' });\n } else {\n return screen.scrollTo(0, el.offsetTop);\n }\n }\n } else if (to.matched.some(m => m.meta.scrollTo)) {\n return { top: m.meta.scrollTo.top, left: m.meta.scrollTo.left };\n } else if (savedPosition) {\n return { savedPosition };\n } else {\n return { top: 0 };\n }\n}\n"],"names":["m"],"mappings":"AAAe,eAAe,eAAe,IAAI,MAAM,eAAe;AACpE,MAAI,GAAG,MAAM;AACX,UAAM,SAAS,OAAO,MAAM,MAAM;AAChC,aACE,SAAS,cAAc,IAAI,KAC3B,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/B,YAAI,IAAI,IAAI;AACV,iBAAO,QAAO;AAAA,QAChB;AACA,mBAAW,MAAM;AACf,kBAAQ,OAAO,MAAM,EAAE,KAAK,CAAC,CAAC;AAAA,QAChC,GAAG,GAAI;AAAA,MACT,CAAC;AAAA,IAEL;AAEA,QAAI,GAAG,MAAM;AACX,UAAI,KAAK,MAAM,OAAO,GAAG,IAAI;AAC7B,UAAI,SAAS,MAAM,OAAO,aAAa;AAEvC,UAAI,oBAAoB,SAAS,gBAAgB,OAAO;AACtD,eAAO,OAAO,SAAS,EAAE,KAAK,GAAG,WAAW,UAAU,UAAU;AAAA,MAClE,OAAO;AACL,eAAO,OAAO,SAAS,GAAG,GAAG,SAAS;AAAA,MACxC;AAAA,IACF;AAAA,EACF,WAAW,GAAG,QAAQ,KAAK,CAAAA,OAAKA,GAAE,KAAK,QAAQ,GAAG;AAChD,WAAO,EAAE,KAAK,EAAE,KAAK,SAAS,KAAK,MAAM,EAAE,KAAK,SAAS,KAAI;AAAA,EAC/D,WAAW,eAAe;AACxB,WAAO,EAAE,cAAa;AAAA,EACxB,OAAO;AACL,WAAO,EAAE,KAAK,EAAC;AAAA,EACjB;AACF;"}
|
|
@@ -6,14 +6,14 @@ const mixins = require("../../../globals/views/mixins/mixins.cjs");
|
|
|
6
6
|
const Table = require("../../../../components/Table/Table.vue.cjs");
|
|
7
7
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
8
8
|
const PlaceholderImage = require("../../../icons/placeholders/PlaceholderImage.vue.cjs");
|
|
9
|
-
const Dropdown = require("../../../../components/Dropdown/Dropdown.
|
|
9
|
+
const Dropdown = require("../../../../components/Dropdown/Dropdown.vue2.cjs");
|
|
10
10
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
11
11
|
const IconSettings = require("../../../icons/entities/IconSettings.vue.cjs");
|
|
12
12
|
const IconEllipsis = require("../../../icons/navigation/IconEllipsis.vue.cjs");
|
|
13
13
|
const AdjustmentForm = require("../forms/AdjustmentForm.vue.cjs");
|
|
14
14
|
const StockAlertsForm = require("../forms/StockAlertsForm.vue.cjs");
|
|
15
15
|
const HistoryView = require("../forms/HistoryView.vue.cjs");
|
|
16
|
-
const ColumnSettingsMenu =
|
|
16
|
+
const ColumnSettingsMenu = require("../forms/ColumnSettingsMenu.vue.cjs");
|
|
17
17
|
const _inventory_store = require("../../store/ inventory.store.cjs");
|
|
18
18
|
const products = require("../../../products/store/products.cjs");
|
|
19
19
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
@@ -4,7 +4,7 @@ import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
|
|
|
4
4
|
import Table from "../../../../components/Table/Table.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../../components/Feed/Feed.vue.js";
|
|
6
6
|
import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
|
|
7
|
-
import _sfc_main$3 from "../../../../components/Dropdown/Dropdown.
|
|
7
|
+
import _sfc_main$3 from "../../../../components/Dropdown/Dropdown.vue2.js";
|
|
8
8
|
import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
|
|
9
9
|
import _sfc_main$2 from "../../../icons/entities/IconSettings.vue.js";
|
|
10
10
|
import _sfc_main$4 from "../../../icons/navigation/IconEllipsis.vue.js";
|
|
@@ -6,7 +6,7 @@ const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
|
6
6
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
7
7
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
8
8
|
;/* empty css */
|
|
9
|
-
;/* empty css
|
|
9
|
+
;/* empty css */
|
|
10
10
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
11
11
|
const CardOrderItem = require("../../../orders/components/blocks/CardOrderItem.vue.cjs");
|
|
12
12
|
const CardSpot = require("../../../spots/components/blocks/CardSpot.vue.cjs");
|
|
@@ -4,7 +4,7 @@ import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
|
|
|
4
4
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
6
6
|
/* empty css */
|
|
7
|
-
/* empty css
|
|
7
|
+
/* empty css */
|
|
8
8
|
import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
|
|
9
9
|
import _sfc_main$3 from "../../../orders/components/blocks/CardOrderItem.vue.js";
|
|
10
10
|
import CardSpot from "../../../spots/components/blocks/CardSpot.vue.js";
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const Button = require("../../../../components/Button/Button.vue.cjs");
|
|
5
|
+
const Media = require("../../../../components/Media/Media.vue.cjs");
|
|
6
|
+
const IconCheckmark = require("../../../icons/navigation/IconCheckmark.vue.cjs");
|
|
7
|
+
;/* empty css */
|
|
8
|
+
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
9
|
+
const _hoisted_1 = { class: "artist-card bg-light pd-medium radius-medium flex flex-center gap-big" };
|
|
10
|
+
const _hoisted_2 = { class: "artist-avatar" };
|
|
11
|
+
const _hoisted_3 = {
|
|
12
|
+
key: 1,
|
|
13
|
+
class: "w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center"
|
|
14
|
+
};
|
|
15
|
+
const _hoisted_4 = { class: "flex items-center gap-thin" };
|
|
16
|
+
const _hoisted_5 = { class: "mn-b-thin" };
|
|
17
|
+
const _hoisted_6 = { class: "t-small t-transp" };
|
|
18
|
+
const _sfc_main = {
|
|
19
|
+
__name: "ArtistCardSmall",
|
|
20
|
+
props: {
|
|
21
|
+
artist: {
|
|
22
|
+
type: Object,
|
|
23
|
+
required: true,
|
|
24
|
+
validator: (value) => {
|
|
25
|
+
return value._id && value.name && value.url;
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
isFollowing: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false
|
|
31
|
+
},
|
|
32
|
+
showFollowButton: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: true
|
|
35
|
+
},
|
|
36
|
+
artistType: {
|
|
37
|
+
type: String,
|
|
38
|
+
default: "Artist"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
emits: ["toggle-follow"],
|
|
42
|
+
setup(__props, { emit: __emit }) {
|
|
43
|
+
const props = __props;
|
|
44
|
+
const emit = __emit;
|
|
45
|
+
const handleFollowClick = () => {
|
|
46
|
+
emit("toggle-follow", props.artist._id);
|
|
47
|
+
};
|
|
48
|
+
return (_ctx, _cache) => {
|
|
49
|
+
const _component_router_link = vue.resolveComponent("router-link");
|
|
50
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
51
|
+
vue.createVNode(_component_router_link, {
|
|
52
|
+
to: __props.artist.url ? { name: "artist", params: { url: __props.artist.url } } : __props.artist.to,
|
|
53
|
+
class: "flex flex-v-center gap-thin flex-1 hover-opacity"
|
|
54
|
+
}, {
|
|
55
|
+
default: vue.withCtx(() => [
|
|
56
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
57
|
+
__props.artist.photoUrl ? (vue.openBlock(), vue.createBlock(Media.default, {
|
|
58
|
+
key: 0,
|
|
59
|
+
url: __props.artist.photoUrl,
|
|
60
|
+
alt: __props.artist.name,
|
|
61
|
+
class: "w-4r h-4r radius-full object-fit-cover"
|
|
62
|
+
}, null, 8, ["url", "alt"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, vue.toDisplayString(__props.artist.name.charAt(0)), 1))
|
|
63
|
+
]),
|
|
64
|
+
vue.createElementVNode("div", null, [
|
|
65
|
+
vue.createElementVNode("div", _hoisted_4, [
|
|
66
|
+
vue.createElementVNode("span", _hoisted_5, vue.toDisplayString(__props.artist.name), 1),
|
|
67
|
+
__props.artist.isVerified ? (vue.openBlock(), vue.createBlock(IconCheckmark.default, {
|
|
68
|
+
key: 0,
|
|
69
|
+
class: "w-1r h-1r t-primary"
|
|
70
|
+
})) : vue.createCommentVNode("", true)
|
|
71
|
+
]),
|
|
72
|
+
vue.createElementVNode("span", _hoisted_6, vue.toDisplayString(__props.artistType), 1)
|
|
73
|
+
])
|
|
74
|
+
]),
|
|
75
|
+
_: 1
|
|
76
|
+
}, 8, ["to"]),
|
|
77
|
+
__props.showFollowButton ? (vue.openBlock(), vue.createBlock(Button.default, {
|
|
78
|
+
key: 0,
|
|
79
|
+
onClick: handleFollowClick,
|
|
80
|
+
color: __props.isFollowing ? "primary" : "transp",
|
|
81
|
+
size: "small",
|
|
82
|
+
class: "bg-main"
|
|
83
|
+
}, {
|
|
84
|
+
default: vue.withCtx(() => [
|
|
85
|
+
vue.createTextVNode(vue.toDisplayString(__props.isFollowing ? "Following" : "Follow"), 1)
|
|
86
|
+
]),
|
|
87
|
+
_: 1
|
|
88
|
+
}, 8, ["color"])) : vue.createCommentVNode("", true)
|
|
89
|
+
]);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const ArtistCardSmall = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-7fd022f7"]]);
|
|
94
|
+
exports.default = ArtistCardSmall;
|
|
95
|
+
//# sourceMappingURL=ArtistCardSmall.vue.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtistCardSmall.vue.cjs","sources":["../../../../../../../src/modules/music/components/cards/ArtistCardSmall.vue"],"sourcesContent":["<!-- components/cards/ArtistCard.vue -->\n<template>\n <div class=\"artist-card bg-light pd-medium radius-medium flex flex-center gap-big\">\n <router-link \n :to=\"artist.url ? { name: 'artist', params: { url: artist.url } } : artist.to\"\n class=\"flex flex-v-center gap-thin flex-1 hover-opacity\"\n >\n <div class=\"artist-avatar\">\n <Media \n v-if=\"artist.photoUrl\"\n :url=\"artist.photoUrl\"\n :alt=\"artist.name\"\n class=\"w-4r h-4r radius-full object-fit-cover\"\n />\n <div v-else class=\"w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center\">\n {{ artist.name.charAt(0) }}\n </div>\n </div>\n\n <div>\n <div class=\"flex items-center gap-thin\">\n <span class=\"mn-b-thin\">{{ artist.name }}</span>\n <IconVerified v-if=\"artist.isVerified\" class=\"w-1r h-1r t-primary\" />\n </div>\n <span class=\"t-small t-transp\">{{ artistType }}</span>\n </div>\n </router-link>\n\n <Button \n v-if=\"showFollowButton\"\n @click=\"handleFollowClick\"\n :color=\"isFollowing ? 'primary' : 'transp'\"\n size=\"small\"\n class=\"bg-main\"\n >\n {{ isFollowing ? 'Following' : 'Follow' }}\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\n\nconst props = defineProps({\n artist: {\n type: Object,\n required: true,\n validator: (value) => {\n return value._id && value.name && value.url;\n }\n },\n isFollowing: {\n type: Boolean,\n default: false\n },\n showFollowButton: {\n type: Boolean,\n default: true\n },\n artistType: {\n type: String,\n default: 'Artist'\n }\n});\n\nconst emit = defineEmits(['toggle-follow']);\n\nconst handleFollowClick = () => {\n emit('toggle-follow', props.artist._id);\n};\n</script>\n\n<style scoped>\n.artist-card {\n transition: all 0.2s ease;\n}\n\n.artist-card:hover {\n transform: translateY(-5px);\n}\n\n.artist-avatar img {\n transition: transform 0.2s ease;\n}\n\n.artist-card:hover .artist-avatar img {\n transform: scale(1.05);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,UAAM,QAAQ;AAsBd,UAAM,OAAO;AAEb,UAAM,oBAAoB,MAAM;AAC9B,WAAK,iBAAiB,MAAM,OAAO,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { resolveComponent, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, withCtx, createElementVNode, toDisplayString, createTextVNode } from "vue";
|
|
2
|
+
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
3
|
+
import Media from "../../../../components/Media/Media.vue.js";
|
|
4
|
+
import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
7
|
+
const _hoisted_1 = { class: "artist-card bg-light pd-medium radius-medium flex flex-center gap-big" };
|
|
8
|
+
const _hoisted_2 = { class: "artist-avatar" };
|
|
9
|
+
const _hoisted_3 = {
|
|
10
|
+
key: 1,
|
|
11
|
+
class: "w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center"
|
|
12
|
+
};
|
|
13
|
+
const _hoisted_4 = { class: "flex items-center gap-thin" };
|
|
14
|
+
const _hoisted_5 = { class: "mn-b-thin" };
|
|
15
|
+
const _hoisted_6 = { class: "t-small t-transp" };
|
|
16
|
+
const _sfc_main = {
|
|
17
|
+
__name: "ArtistCardSmall",
|
|
18
|
+
props: {
|
|
19
|
+
artist: {
|
|
20
|
+
type: Object,
|
|
21
|
+
required: true,
|
|
22
|
+
validator: (value) => {
|
|
23
|
+
return value._id && value.name && value.url;
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
isFollowing: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
default: false
|
|
29
|
+
},
|
|
30
|
+
showFollowButton: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: true
|
|
33
|
+
},
|
|
34
|
+
artistType: {
|
|
35
|
+
type: String,
|
|
36
|
+
default: "Artist"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
emits: ["toggle-follow"],
|
|
40
|
+
setup(__props, { emit: __emit }) {
|
|
41
|
+
const props = __props;
|
|
42
|
+
const emit = __emit;
|
|
43
|
+
const handleFollowClick = () => {
|
|
44
|
+
emit("toggle-follow", props.artist._id);
|
|
45
|
+
};
|
|
46
|
+
return (_ctx, _cache) => {
|
|
47
|
+
const _component_router_link = resolveComponent("router-link");
|
|
48
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
49
|
+
createVNode(_component_router_link, {
|
|
50
|
+
to: __props.artist.url ? { name: "artist", params: { url: __props.artist.url } } : __props.artist.to,
|
|
51
|
+
class: "flex flex-v-center gap-thin flex-1 hover-opacity"
|
|
52
|
+
}, {
|
|
53
|
+
default: withCtx(() => [
|
|
54
|
+
createElementVNode("div", _hoisted_2, [
|
|
55
|
+
__props.artist.photoUrl ? (openBlock(), createBlock(Media, {
|
|
56
|
+
key: 0,
|
|
57
|
+
url: __props.artist.photoUrl,
|
|
58
|
+
alt: __props.artist.name,
|
|
59
|
+
class: "w-4r h-4r radius-full object-fit-cover"
|
|
60
|
+
}, null, 8, ["url", "alt"])) : (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(__props.artist.name.charAt(0)), 1))
|
|
61
|
+
]),
|
|
62
|
+
createElementVNode("div", null, [
|
|
63
|
+
createElementVNode("div", _hoisted_4, [
|
|
64
|
+
createElementVNode("span", _hoisted_5, toDisplayString(__props.artist.name), 1),
|
|
65
|
+
__props.artist.isVerified ? (openBlock(), createBlock(_sfc_main$1, {
|
|
66
|
+
key: 0,
|
|
67
|
+
class: "w-1r h-1r t-primary"
|
|
68
|
+
})) : createCommentVNode("", true)
|
|
69
|
+
]),
|
|
70
|
+
createElementVNode("span", _hoisted_6, toDisplayString(__props.artistType), 1)
|
|
71
|
+
])
|
|
72
|
+
]),
|
|
73
|
+
_: 1
|
|
74
|
+
}, 8, ["to"]),
|
|
75
|
+
__props.showFollowButton ? (openBlock(), createBlock(_sfc_main$2, {
|
|
76
|
+
key: 0,
|
|
77
|
+
onClick: handleFollowClick,
|
|
78
|
+
color: __props.isFollowing ? "primary" : "transp",
|
|
79
|
+
size: "small",
|
|
80
|
+
class: "bg-main"
|
|
81
|
+
}, {
|
|
82
|
+
default: withCtx(() => [
|
|
83
|
+
createTextVNode(toDisplayString(__props.isFollowing ? "Following" : "Follow"), 1)
|
|
84
|
+
]),
|
|
85
|
+
_: 1
|
|
86
|
+
}, 8, ["color"])) : createCommentVNode("", true)
|
|
87
|
+
]);
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const ArtistCardSmall = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7fd022f7"]]);
|
|
92
|
+
export {
|
|
93
|
+
ArtistCardSmall as default
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=ArtistCardSmall.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtistCardSmall.vue.js","sources":["../../../../../../../src/modules/music/components/cards/ArtistCardSmall.vue"],"sourcesContent":["<!-- components/cards/ArtistCard.vue -->\n<template>\n <div class=\"artist-card bg-light pd-medium radius-medium flex flex-center gap-big\">\n <router-link \n :to=\"artist.url ? { name: 'artist', params: { url: artist.url } } : artist.to\"\n class=\"flex flex-v-center gap-thin flex-1 hover-opacity\"\n >\n <div class=\"artist-avatar\">\n <Media \n v-if=\"artist.photoUrl\"\n :url=\"artist.photoUrl\"\n :alt=\"artist.name\"\n class=\"w-4r h-4r radius-full object-fit-cover\"\n />\n <div v-else class=\"w-4r h-4r flex flex center radius-extra radius-full bg-main flex-center\">\n {{ artist.name.charAt(0) }}\n </div>\n </div>\n\n <div>\n <div class=\"flex items-center gap-thin\">\n <span class=\"mn-b-thin\">{{ artist.name }}</span>\n <IconVerified v-if=\"artist.isVerified\" class=\"w-1r h-1r t-primary\" />\n </div>\n <span class=\"t-small t-transp\">{{ artistType }}</span>\n </div>\n </router-link>\n\n <Button \n v-if=\"showFollowButton\"\n @click=\"handleFollowClick\"\n :color=\"isFollowing ? 'primary' : 'transp'\"\n size=\"small\"\n class=\"bg-main\"\n >\n {{ isFollowing ? 'Following' : 'Follow' }}\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { computed } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconVerified from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue';\n\nconst props = defineProps({\n artist: {\n type: Object,\n required: true,\n validator: (value) => {\n return value._id && value.name && value.url;\n }\n },\n isFollowing: {\n type: Boolean,\n default: false\n },\n showFollowButton: {\n type: Boolean,\n default: true\n },\n artistType: {\n type: String,\n default: 'Artist'\n }\n});\n\nconst emit = defineEmits(['toggle-follow']);\n\nconst handleFollowClick = () => {\n emit('toggle-follow', props.artist._id);\n};\n</script>\n\n<style scoped>\n.artist-card {\n transition: all 0.2s ease;\n}\n\n.artist-card:hover {\n transform: translateY(-5px);\n}\n\n.artist-avatar img {\n transition: transform 0.2s ease;\n}\n\n.artist-card:hover .artist-avatar img {\n transform: scale(1.05);\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,UAAM,QAAQ;AAsBd,UAAM,OAAO;AAEb,UAAM,oBAAoB,MAAM;AAC9B,WAAK,iBAAiB,MAAM,OAAO,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -74,7 +74,7 @@ const _sfc_main = {
|
|
|
74
74
|
return (_ctx, _cache) => {
|
|
75
75
|
const _component_router_link = vue.resolveComponent("router-link");
|
|
76
76
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
77
|
-
class: vue.normalizeClass(["track-item pd-small hover-bg-
|
|
77
|
+
class: vue.normalizeClass(["track-item pd-small hover-bg-white-transp-25 flex-v-center flex cursor-pointer", { "bg-main-transp-10": isPlaying(__props.track) }]),
|
|
78
78
|
onClick: _cache[7] || (_cache[7] = ($event) => playTrack(__props.track)),
|
|
79
79
|
onDblclick: _cache[8] || (_cache[8] = ($event) => playTrack(__props.track, true)),
|
|
80
80
|
onMouseenter: _cache[9] || (_cache[9] = ($event) => hoveredIndex.value = props.index),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackListCard.vue.cjs","sources":["../../../../../../../src/modules/music/components/cards/TrackListCard.vue"],"sourcesContent":["<!-- components/cards/TrackListCard.vue -->\n<template>\n <div \n class=\"track-item pd-small hover-bg-
|
|
1
|
+
{"version":3,"file":"TrackListCard.vue.cjs","sources":["../../../../../../../src/modules/music/components/cards/TrackListCard.vue"],"sourcesContent":["<!-- components/cards/TrackListCard.vue -->\n<template>\n <div \n class=\"track-item pd-small hover-bg-white-transp-25 flex-v-center flex cursor-pointer\"\n :class=\"{'bg-main-transp-10': isPlaying(track)}\"\n @click=\"playTrack(track)\"\n @dblclick=\"playTrack(track, true)\"\n @mouseenter=\"hoveredIndex = props.index\"\n @mouseleave=\"hoveredIndex = -1\"\n >\n <div class=\"track-number w-3r t-center pos-relative\">\n <span v-if=\"!isPlaying(track) && hoveredIndex !== props.index\" class=\"t-transp\">{{ props.index + 1 }}</span>\n <Button \n v-else-if=\"!isPlaying(track) && hoveredIndex === props.index\"\n @click.stop=\"playTrack(track)\"\n class=\"bg-main pd-thin\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n >\n <IconPlay @click.stop=\"playTrack(track)\" class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </Button>\n <Button \n v-else\n @click.stop=\"pauseTrack()\"\n class=\"bg-main pd-thin\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n >\n <IconPause @click.stop=\"pauseTrack()\" class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </Button>\n </div>\n \n <div class=\"track-title flex-child-1 flex flex-v-center\">\n <div v-if=\"showCover\" class=\"track-cover mn-r-small\">\n <Media \n :url=\"track.coverUrl || (track.album && track.album.coverUrl) || '/logo/logo-placeholder.jpg'\" \n class=\"w-3r h-3r object-fit-cover o-hidden radius-small\"\n />\n </div>\n \n <div class=\"track-info\">\n <div class=\"track-name \" :class=\"{'t-main': isPlaying(track)}\">\n <router-link \n v-if=\"track.url\"\n :to=\"{ name: 'track', params: { url: track.url } }\"\n class=\"hover-t-main\"\n :class=\"{'t-main': isPlaying(track)}\"\n @click.stop\n >\n {{ track.title }}\n </router-link>\n <span v-else>{{ track.title }}</span>\n </div>\n <div :class=\"{'t-main': isPlaying(track)}\" class=\"track-artist t-transp t-small\">\n <router-link \n v-if=\"track.artist && track.artist._id\"\n :to=\"{ name: 'artist', params: { url: track.artist.url } }\"\n class=\"t-transp hover-\"\n @click.stop\n >\n {{ getArtistName(track) }}\n </router-link>\n <span v-else>{{ getArtistName(track) }}</span>\n </div>\n </div>\n </div>\n \n <div v-if=\"showAlbum\" class=\"track-album w-15r mobile:w-0 mobile:hidden t-transp t-truncate\">\n <router-link \n v-if=\"track.album && track.album._id\"\n :to=\"{ name: 'album', params: { url: track.album.url } }\"\n class=\"t-transp hover-\"\n @click.stop\n >\n {{ track.album.title }}\n </router-link>\n <span v-else>{{ track.album?.title || 'Single' }}</span>\n </div>\n \n <div class=\"track-duration w-5r t-right t-transp\">{{ formatDuration(track.duration) }}</div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\nimport IconPause from '@martyrs/src/modules/icons/navigation/IconPause.vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Props\nconst props = defineProps({\n track: {\n type: Object,\n required: true\n },\n index: {\n type: Number,\n default: 0\n },\n showCover: {\n type: Boolean,\n default: true\n },\n showAlbum: {\n type: Boolean,\n default: true\n }\n});\n\n// State\nconst hoveredIndex = ref(-1);\n\n// Methods\nconst isPlaying = (track) => {\n return playerState.currentTrack && playerState.currentTrack._id === track._id && playerState.isPlaying;\n};\n\nconst playTrack = (track, force = false) => {\n if (isPlaying(track) && !force) {\n playerActions.togglePlay();\n } else {\n playerActions.playTrack(track);\n }\n};\n\nconst pauseTrack = () => {\n playerActions.pause();\n};\n\nconst getArtistName = (track) => {\n if (!track || !track.artist) return 'Unknown Artist';\n return typeof track.artist === 'object' ? track.artist.name : 'Unknown Artist';\n};\n\nconst formatDuration = (duration) => {\n if (!duration) return '--:--';\n \n const minutes = Math.floor(duration / 60);\n const seconds = Math.floor(duration % 60);\n return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n};\n</script>"],"names":["ref","playerState","playerActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8FA,UAAM,QAAQ;AAoBd,UAAM,eAAeA,IAAAA,IAAI,EAAE;AAG3B,UAAM,YAAY,CAAC,UAAU;AAC3B,aAAOC,OAAAA,MAAY,gBAAgBA,aAAY,aAAa,QAAQ,MAAM,OAAOA,OAAAA,MAAY;AAAA,IAC/F;AAEA,UAAM,YAAY,CAAC,OAAO,QAAQ,UAAU;AAC1C,UAAI,UAAU,KAAK,KAAK,CAAC,OAAO;AAC9BC,eAAAA,QAAc,WAAU;AAAA,MAC1B,OAAO;AACLA,eAAAA,QAAc,UAAU,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,aAAa,MAAM;AACvBA,aAAAA,QAAc,MAAK;AAAA,IACrB;AAEA,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,SAAS,CAAC,MAAM,OAAQ,QAAO;AACpC,aAAO,OAAO,MAAM,WAAW,WAAW,MAAM,OAAO,OAAO;AAAA,IAChE;AAEA,UAAM,iBAAiB,CAAC,aAAa;AACnC,UAAI,CAAC,SAAU,QAAO;AAEtB,YAAM,UAAU,KAAK,MAAM,WAAW,EAAE;AACxC,YAAM,UAAU,KAAK,MAAM,WAAW,EAAE;AACxC,aAAO,GAAG,OAAO,IAAI,QAAQ,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAAA,IAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -72,7 +72,7 @@ const _sfc_main = {
|
|
|
72
72
|
return (_ctx, _cache) => {
|
|
73
73
|
const _component_router_link = resolveComponent("router-link");
|
|
74
74
|
return openBlock(), createElementBlock("div", {
|
|
75
|
-
class: normalizeClass(["track-item pd-small hover-bg-
|
|
75
|
+
class: normalizeClass(["track-item pd-small hover-bg-white-transp-25 flex-v-center flex cursor-pointer", { "bg-main-transp-10": isPlaying(__props.track) }]),
|
|
76
76
|
onClick: _cache[7] || (_cache[7] = ($event) => playTrack(__props.track)),
|
|
77
77
|
onDblclick: _cache[8] || (_cache[8] = ($event) => playTrack(__props.track, true)),
|
|
78
78
|
onMouseenter: _cache[9] || (_cache[9] = ($event) => hoveredIndex.value = props.index),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackListCard.vue.js","sources":["../../../../../../../src/modules/music/components/cards/TrackListCard.vue"],"sourcesContent":["<!-- components/cards/TrackListCard.vue -->\n<template>\n <div \n class=\"track-item pd-small hover-bg-
|
|
1
|
+
{"version":3,"file":"TrackListCard.vue.js","sources":["../../../../../../../src/modules/music/components/cards/TrackListCard.vue"],"sourcesContent":["<!-- components/cards/TrackListCard.vue -->\n<template>\n <div \n class=\"track-item pd-small hover-bg-white-transp-25 flex-v-center flex cursor-pointer\"\n :class=\"{'bg-main-transp-10': isPlaying(track)}\"\n @click=\"playTrack(track)\"\n @dblclick=\"playTrack(track, true)\"\n @mouseenter=\"hoveredIndex = props.index\"\n @mouseleave=\"hoveredIndex = -1\"\n >\n <div class=\"track-number w-3r t-center pos-relative\">\n <span v-if=\"!isPlaying(track) && hoveredIndex !== props.index\" class=\"t-transp\">{{ props.index + 1 }}</span>\n <Button \n v-else-if=\"!isPlaying(track) && hoveredIndex === props.index\"\n @click.stop=\"playTrack(track)\"\n class=\"bg-main pd-thin\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n >\n <IconPlay @click.stop=\"playTrack(track)\" class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </Button>\n <Button \n v-else\n @click.stop=\"pauseTrack()\"\n class=\"bg-main pd-thin\"\n :showLoader=\"false\"\n :showSucces=\"false\"\n >\n <IconPause @click.stop=\"pauseTrack()\" class=\"i-small\" fill=\"rgb(var(--white))\"/>\n </Button>\n </div>\n \n <div class=\"track-title flex-child-1 flex flex-v-center\">\n <div v-if=\"showCover\" class=\"track-cover mn-r-small\">\n <Media \n :url=\"track.coverUrl || (track.album && track.album.coverUrl) || '/logo/logo-placeholder.jpg'\" \n class=\"w-3r h-3r object-fit-cover o-hidden radius-small\"\n />\n </div>\n \n <div class=\"track-info\">\n <div class=\"track-name \" :class=\"{'t-main': isPlaying(track)}\">\n <router-link \n v-if=\"track.url\"\n :to=\"{ name: 'track', params: { url: track.url } }\"\n class=\"hover-t-main\"\n :class=\"{'t-main': isPlaying(track)}\"\n @click.stop\n >\n {{ track.title }}\n </router-link>\n <span v-else>{{ track.title }}</span>\n </div>\n <div :class=\"{'t-main': isPlaying(track)}\" class=\"track-artist t-transp t-small\">\n <router-link \n v-if=\"track.artist && track.artist._id\"\n :to=\"{ name: 'artist', params: { url: track.artist.url } }\"\n class=\"t-transp hover-\"\n @click.stop\n >\n {{ getArtistName(track) }}\n </router-link>\n <span v-else>{{ getArtistName(track) }}</span>\n </div>\n </div>\n </div>\n \n <div v-if=\"showAlbum\" class=\"track-album w-15r mobile:w-0 mobile:hidden t-transp t-truncate\">\n <router-link \n v-if=\"track.album && track.album._id\"\n :to=\"{ name: 'album', params: { url: track.album.url } }\"\n class=\"t-transp hover-\"\n @click.stop\n >\n {{ track.album.title }}\n </router-link>\n <span v-else>{{ track.album?.title || 'Single' }}</span>\n </div>\n \n <div class=\"track-duration w-5r t-right t-transp\">{{ formatDuration(track.duration) }}</div>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Media from '@martyrs/src/components/Media/Media.vue';\nimport IconPlay from '@martyrs/src/modules/icons/navigation/IconPlay.vue';\nimport IconPause from '@martyrs/src/modules/icons/navigation/IconPause.vue';\n\n// Import player store\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\n// Props\nconst props = defineProps({\n track: {\n type: Object,\n required: true\n },\n index: {\n type: Number,\n default: 0\n },\n showCover: {\n type: Boolean,\n default: true\n },\n showAlbum: {\n type: Boolean,\n default: true\n }\n});\n\n// State\nconst hoveredIndex = ref(-1);\n\n// Methods\nconst isPlaying = (track) => {\n return playerState.currentTrack && playerState.currentTrack._id === track._id && playerState.isPlaying;\n};\n\nconst playTrack = (track, force = false) => {\n if (isPlaying(track) && !force) {\n playerActions.togglePlay();\n } else {\n playerActions.playTrack(track);\n }\n};\n\nconst pauseTrack = () => {\n playerActions.pause();\n};\n\nconst getArtistName = (track) => {\n if (!track || !track.artist) return 'Unknown Artist';\n return typeof track.artist === 'object' ? track.artist.name : 'Unknown Artist';\n};\n\nconst formatDuration = (duration) => {\n if (!duration) return '--:--';\n \n const minutes = Math.floor(duration / 60);\n const seconds = Math.floor(duration % 60);\n return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n};\n</script>"],"names":["playerState","playerActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8FA,UAAM,QAAQ;AAoBd,UAAM,eAAe,IAAI,EAAE;AAG3B,UAAM,YAAY,CAAC,UAAU;AAC3B,aAAOA,MAAY,gBAAgBA,MAAY,aAAa,QAAQ,MAAM,OAAOA,MAAY;AAAA,IAC/F;AAEA,UAAM,YAAY,CAAC,OAAO,QAAQ,UAAU;AAC1C,UAAI,UAAU,KAAK,KAAK,CAAC,OAAO;AAC9BC,gBAAc,WAAU;AAAA,MAC1B,OAAO;AACLA,gBAAc,UAAU,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,aAAa,MAAM;AACvBA,cAAc,MAAK;AAAA,IACrB;AAEA,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,SAAS,CAAC,MAAM,OAAQ,QAAO;AACpC,aAAO,OAAO,MAAM,WAAW,WAAW,MAAM,OAAO,OAAO;AAAA,IAChE;AAEA,UAAM,iBAAiB,CAAC,aAAa;AACnC,UAAI,CAAC,SAAU,QAAO;AAEtB,YAAM,UAAU,KAAK,MAAM,WAAW,EAAE;AACxC,YAAM,UAAU,KAAK,MAAM,WAAW,EAAE;AACxC,aAAO,GAAG,OAAO,IAAI,QAAQ,SAAQ,EAAG,SAAS,GAAG,GAAG,CAAC;AAAA,IAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -6,7 +6,7 @@ const IconSearch = require("../../../icons/navigation/IconSearch.vue.cjs");
|
|
|
6
6
|
const IconCross = require("../../../icons/navigation/IconCross.vue.cjs");
|
|
7
7
|
;/* empty css */
|
|
8
8
|
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
9
|
-
const _hoisted_1 = { class: "search-form flex-v-center flex bg-
|
|
9
|
+
const _hoisted_1 = { class: "search-form flex-v-center flex bg-white-transp-50 pd-thin radius-extra" };
|
|
10
10
|
const _hoisted_2 = ["placeholder"];
|
|
11
11
|
const _sfc_main = {
|
|
12
12
|
__name: "SearchForm",
|
|
@@ -93,6 +93,6 @@ const _sfc_main = {
|
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
|
-
const SearchForm = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
96
|
+
const SearchForm = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-fa80a365"]]);
|
|
97
97
|
exports.default = SearchForm;
|
|
98
98
|
//# sourceMappingURL=SearchForm.vue.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchForm.vue.cjs","sources":["../../../../../../../src/modules/music/components/forms/SearchForm.vue"],"sourcesContent":["<!-- components/forms/SearchForm.vue -->\n<template>\n <div class=\"search-form flex-v-center flex bg-
|
|
1
|
+
{"version":3,"file":"SearchForm.vue.cjs","sources":["../../../../../../../src/modules/music/components/forms/SearchForm.vue"],"sourcesContent":["<!-- components/forms/SearchForm.vue -->\n<template>\n <div class=\"search-form flex-v-center flex bg-white-transp-50 pd-thin radius-extra\">\n <IconSearch class=\"i-small mn-r-small\" fill=\"rgb(var(--grey))\"/>\n <input \n ref=\"searchInput\"\n v-model=\"searchQuery\"\n type=\"text\"\n :placeholder=\"placeholder\"\n class=\"bg-transparent border-none flex-1\"\n @keydown.enter=\"handleSearch\"\n />\n <Button \n v-if=\"searchQuery.length > 0\"\n @click=\"clearSearch\"\n class=\"bg-transparent border-none pd-zero\"\n :showLoader=\"false\" \n :showSucces=\"false\"\n >\n <IconCross class=\"i-small\" fill=\"rgb(var(--grey))\"/>\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch, onMounted, defineEmits } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport IconSearch from '@martyrs/src/modules/icons/navigation/IconSearch.vue';\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n placeholder: {\n type: String,\n default: 'Search...'\n },\n initialQuery: {\n type: String,\n default: ''\n }\n});\n\nconst emit = defineEmits(['search']);\n\nconst searchInput = ref(null);\nconst searchQuery = ref(props.initialQuery);\nlet searchTimeout = null;\n\nconst handleSearch = () => {\n emit('search', searchQuery.value.trim());\n};\n\nconst clearSearch = () => {\n searchQuery.value = '';\n emit('search', '');\n searchInput.value?.focus();\n};\n\n// Watch for changes in search query and emit search with debounce\nwatch(searchQuery, (newQuery) => {\n // Clear previous timeout\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n \n if (newQuery.trim().length >= 2) {\n // Set new timeout for debounce\n searchTimeout = setTimeout(() => {\n handleSearch();\n }, 300);\n } else if (newQuery.trim().length === 0) {\n emit('search', '');\n }\n});\n\n// Watch for changes in initialQuery prop\nwatch(() => props.initialQuery, (newQuery) => {\n if (newQuery !== searchQuery.value) {\n searchQuery.value = newQuery;\n }\n});\n\nonMounted(() => {\n if (props.initialQuery) {\n searchQuery.value = props.initialQuery;\n }\n});\n</script>\n\n<style scoped>\n.search-form {\n transition: background-color 0.2s ease;\n}\n\n.search-form:focus-within {\n background-color: rgba(var(--dark), 0.8);\n}\n\ninput::placeholder {\n color: rgba(var(--grey), 0.8);\n}\n\ninput:focus {\n outline: none;\n}\n</style>"],"names":["ref","watch","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA8BA,UAAM,QAAQ;AAWd,UAAM,OAAO;AAEb,UAAM,cAAcA,IAAAA,IAAI,IAAI;AAC5B,UAAM,cAAcA,IAAAA,IAAI,MAAM,YAAY;AAC1C,QAAI,gBAAgB;AAEpB,UAAM,eAAe,MAAM;AACzB,WAAK,UAAU,YAAY,MAAM,KAAI,CAAE;AAAA,IACzC;AAEA,UAAM,cAAc,MAAM;AACxB,kBAAY,QAAQ;AACpB,WAAK,UAAU,EAAE;AACjB,kBAAY,OAAO,MAAK;AAAA,IAC1B;AAGAC,QAAAA,MAAM,aAAa,CAAC,aAAa;AAE/B,UAAI,eAAe;AACjB,qBAAa,aAAa;AAAA,MAC5B;AAEA,UAAI,SAAS,OAAO,UAAU,GAAG;AAE/B,wBAAgB,WAAW,MAAM;AAC/B,uBAAY;AAAA,QACd,GAAG,GAAG;AAAA,MACR,WAAW,SAAS,KAAI,EAAG,WAAW,GAAG;AACvC,aAAK,UAAU,EAAE;AAAA,MACnB;AAAA,IACF,CAAC;AAGDA,QAAAA,MAAM,MAAM,MAAM,cAAc,CAAC,aAAa;AAC5C,UAAI,aAAa,YAAY,OAAO;AAClC,oBAAY,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC;AAEDC,QAAAA,UAAU,MAAM;AACd,UAAI,MAAM,cAAc;AACtB,oBAAY,QAAQ,MAAM;AAAA,MAC5B;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ import _sfc_main$1 from "../../../icons/navigation/IconSearch.vue.js";
|
|
|
4
4
|
import _sfc_main$3 from "../../../icons/navigation/IconCross.vue.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
7
|
-
const _hoisted_1 = { class: "search-form flex-v-center flex bg-
|
|
7
|
+
const _hoisted_1 = { class: "search-form flex-v-center flex bg-white-transp-50 pd-thin radius-extra" };
|
|
8
8
|
const _hoisted_2 = ["placeholder"];
|
|
9
9
|
const _sfc_main = {
|
|
10
10
|
__name: "SearchForm",
|
|
@@ -91,7 +91,7 @@ const _sfc_main = {
|
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
|
-
const SearchForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
94
|
+
const SearchForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fa80a365"]]);
|
|
95
95
|
export {
|
|
96
96
|
SearchForm as default
|
|
97
97
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchForm.vue.js","sources":["../../../../../../../src/modules/music/components/forms/SearchForm.vue"],"sourcesContent":["<!-- components/forms/SearchForm.vue -->\n<template>\n <div class=\"search-form flex-v-center flex bg-
|
|
1
|
+
{"version":3,"file":"SearchForm.vue.js","sources":["../../../../../../../src/modules/music/components/forms/SearchForm.vue"],"sourcesContent":["<!-- components/forms/SearchForm.vue -->\n<template>\n <div class=\"search-form flex-v-center flex bg-white-transp-50 pd-thin radius-extra\">\n <IconSearch class=\"i-small mn-r-small\" fill=\"rgb(var(--grey))\"/>\n <input \n ref=\"searchInput\"\n v-model=\"searchQuery\"\n type=\"text\"\n :placeholder=\"placeholder\"\n class=\"bg-transparent border-none flex-1\"\n @keydown.enter=\"handleSearch\"\n />\n <Button \n v-if=\"searchQuery.length > 0\"\n @click=\"clearSearch\"\n class=\"bg-transparent border-none pd-zero\"\n :showLoader=\"false\" \n :showSucces=\"false\"\n >\n <IconCross class=\"i-small\" fill=\"rgb(var(--grey))\"/>\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { ref, watch, onMounted, defineEmits } from 'vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport IconSearch from '@martyrs/src/modules/icons/navigation/IconSearch.vue';\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n placeholder: {\n type: String,\n default: 'Search...'\n },\n initialQuery: {\n type: String,\n default: ''\n }\n});\n\nconst emit = defineEmits(['search']);\n\nconst searchInput = ref(null);\nconst searchQuery = ref(props.initialQuery);\nlet searchTimeout = null;\n\nconst handleSearch = () => {\n emit('search', searchQuery.value.trim());\n};\n\nconst clearSearch = () => {\n searchQuery.value = '';\n emit('search', '');\n searchInput.value?.focus();\n};\n\n// Watch for changes in search query and emit search with debounce\nwatch(searchQuery, (newQuery) => {\n // Clear previous timeout\n if (searchTimeout) {\n clearTimeout(searchTimeout);\n }\n \n if (newQuery.trim().length >= 2) {\n // Set new timeout for debounce\n searchTimeout = setTimeout(() => {\n handleSearch();\n }, 300);\n } else if (newQuery.trim().length === 0) {\n emit('search', '');\n }\n});\n\n// Watch for changes in initialQuery prop\nwatch(() => props.initialQuery, (newQuery) => {\n if (newQuery !== searchQuery.value) {\n searchQuery.value = newQuery;\n }\n});\n\nonMounted(() => {\n if (props.initialQuery) {\n searchQuery.value = props.initialQuery;\n }\n});\n</script>\n\n<style scoped>\n.search-form {\n transition: background-color 0.2s ease;\n}\n\n.search-form:focus-within {\n background-color: rgba(var(--dark), 0.8);\n}\n\ninput::placeholder {\n color: rgba(var(--grey), 0.8);\n}\n\ninput:focus {\n outline: none;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8BA,UAAM,QAAQ;AAWd,UAAM,OAAO;AAEb,UAAM,cAAc,IAAI,IAAI;AAC5B,UAAM,cAAc,IAAI,MAAM,YAAY;AAC1C,QAAI,gBAAgB;AAEpB,UAAM,eAAe,MAAM;AACzB,WAAK,UAAU,YAAY,MAAM,KAAI,CAAE;AAAA,IACzC;AAEA,UAAM,cAAc,MAAM;AACxB,kBAAY,QAAQ;AACpB,WAAK,UAAU,EAAE;AACjB,kBAAY,OAAO,MAAK;AAAA,IAC1B;AAGA,UAAM,aAAa,CAAC,aAAa;AAE/B,UAAI,eAAe;AACjB,qBAAa,aAAa;AAAA,MAC5B;AAEA,UAAI,SAAS,OAAO,UAAU,GAAG;AAE/B,wBAAgB,WAAW,MAAM;AAC/B,uBAAY;AAAA,QACd,GAAG,GAAG;AAAA,MACR,WAAW,SAAS,KAAI,EAAG,WAAW,GAAG;AACvC,aAAK,UAAU,EAAE;AAAA,MACnB;AAAA,IACF,CAAC;AAGD,UAAM,MAAM,MAAM,cAAc,CAAC,aAAa;AAC5C,UAAI,aAAa,YAAY,OAAO;AAClC,oBAAY,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC;AAED,cAAU,MAAM;AACd,UAAI,MAAM,cAAc;AACtB,oBAAY,QAAQ,MAAM;AAAA,MAC5B;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|