@ozdao/martyrs 0.2.566 → 0.2.568

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/{main-B9o1iBAZ.js → main-BFvlam0J.js} +9 -6
  2. package/dist/martyrs/dist/{main-B9o1iBAZ.js → main-BFvlam0J.js} +2 -2
  3. package/dist/martyrs/dist/{main-B9o1iBAZ.js.map → main-BFvlam0J.js.map} +1 -1
  4. package/dist/martyrs/dist/{web-BF3ijvEr.js → web-CH5wzMHy.js} +2 -2
  5. package/dist/martyrs/dist/{web-BF3ijvEr.js.map → web-CH5wzMHy.js.map} +1 -1
  6. package/dist/martyrs/src/components/EditImages/{EditImages.vue2.js → EditImages.vue.js} +2 -2
  7. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -0
  8. package/dist/martyrs/src/components/Feed/Carousel.vue.js +2 -2
  9. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  10. package/dist/martyrs/src/components/Feed/Feed.vue.js +7 -4
  11. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  12. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
  13. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
  14. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
  15. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
  16. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +6 -5
  17. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  18. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue2.js → Filters.vue.js} +2 -2
  19. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +1 -0
  20. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  21. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  22. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +17 -1
  23. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  24. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  25. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  26. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +3 -3
  27. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  28. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +4 -4
  29. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  30. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +1 -1
  31. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  32. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  33. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  34. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  35. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  36. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  37. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  38. package/dist/martyrs.css +1 -1
  39. package/dist/martyrs.es.js +1 -1
  40. package/dist/style.css +7 -7
  41. package/dist/{web-BF3ijvEr.js → web-CH5wzMHy.js} +1 -1
  42. package/package.json +1 -1
  43. package/src/components/Feed/Carousel.vue +1 -1
  44. package/src/components/Feed/Feed.vue +3 -3
  45. package/src/modules/community/components/sections/HotPosts.vue +8 -4
  46. package/src/modules/core/views/components/layouts/Client.vue +12 -6
  47. package/src/modules/events/components/sections/EventsHot.vue +21 -4
  48. package/src/modules/music/components/cards/TrackListCard.vue +6 -6
  49. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +1 -3
  50. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +0 -1
  51. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +0 -1
  52. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import { resolveComponent, createBlock, openBlock, withCtx, createVNode, createElementVNode, createElementBlock, createCommentVNode, toDisplayString } from "vue";
2
+ import { useRoute } from "vue-router";
2
3
  import Carousel from "../../../../components/Feed/Carousel.vue.js";
3
4
  import Media from "../../../../components/Media/Media.vue.js";
4
5
  import { read } from "../../store/events.js";
@@ -33,9 +34,24 @@ const _sfc_main = {
33
34
  status: {
34
35
  type: String,
35
36
  default: "featured"
37
+ },
38
+ organization: {
39
+ type: String
36
40
  }
37
41
  },
38
42
  setup(__props) {
43
+ const route = useRoute();
44
+ const props = __props;
45
+ const getEventPath = (item) => {
46
+ if (route.meta.context === "backoffice") {
47
+ return `/backoffice/events/${item.url}`;
48
+ }
49
+ if (route.meta.context === "organization" || props.organization) {
50
+ const orgId = props.organization || route.params._id;
51
+ return `/organizations/${orgId}/events/${item.url}`;
52
+ }
53
+ return `/events/${item.url}`;
54
+ };
39
55
  return (_ctx, _cache) => {
40
56
  const _component_router_link = resolveComponent("router-link");
41
57
  return openBlock(), createBlock(Carousel, {
@@ -56,7 +72,7 @@ const _sfc_main = {
56
72
  }, {
57
73
  default: withCtx(({ item }) => [
58
74
  createVNode(_component_router_link, {
59
- to: { name: "Event", params: { url: item.url } },
75
+ to: getEventPath(item),
60
76
  class: "cursor-pointer pos-relative flex flex-justify-end flex-column h-25r bg-semi radius-medium o-hidden pd-medium t-white bg-dark"
61
77
  }, {
62
78
  default: withCtx(() => [
@@ -1 +1 @@
1
- {"version":3,"file":"EventsHot.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"EventsHot.vue.js","sources":["../../../../../../../src/modules/events/components/sections/EventsHot.vue"],"sourcesContent":["<template>\n <Carousel\n :store=\"{\n read: (options) => events.read({ \n skip, \n limit,\n status \n })\n }\"\n :text=\"{\n en: {\n title: 'No Featured Events Found',\n description: 'Currently, there are no featured events available.'\n }\n }\"\n class=\"slider-hotpost flex-child-default\"\n >\n <template v-slot=\"{ item }\">\n <router-link\n :to=\"getEventPath(item)\"\n class=\"cursor-pointer pos-relative flex flex-justify-end flex-column h-25r bg-semi radius-medium o-hidden pd-medium t-white bg-dark\"\n >\n <Media \n :url=\"(FILE_SERVER_URL || '') + item.cover\"\n class=\"pos-absolute pos-t-0 pos-r-0 z-index-1 w-100 h-100 object-fit-cover bg-light\"\n />\n <div class=\"pos-relative z-index-2\">\n <h3 \n class=\"mn-b-small\"\n >\n {{ item.name }}\n </h3>\n <span v-if=\"item.date?.start\" class=\"mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small t-medium bg-white\">\n <span class=\"t-semi t-black\" > \n {{item.location}} / {{formatDate(item.date.start, { language: $i18n.locale, monthName: true, })}} \n </span>\n </span> \n </div>\n </router-link>\n </template>\n </Carousel>\n</template>\n\n<script setup>\nimport { ref, onMounted, defineProps, computed } from 'vue'\nimport { useRoute } from 'vue-router'\nimport Carousel from '@martyrs/src/components/Feed/Carousel.vue'\nimport Media from '@martyrs/src/components/Media/Media.vue'\nimport * as events from '@martyrs/src/modules/events/store/events.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst route = useRoute()\n\nconst props = defineProps({\n skip: {\n type: Number,\n default: 0\n },\n limit: {\n type: Number,\n default: 8\n },\n userId: {\n type: String,\n default: () => auth.state.user._id\n },\n period: {\n type: String,\n default: 'year'\n },\n status: {\n type: String,\n default: 'featured'\n },\n organization: {\n type: String\n }\n})\n\nconst getEventPath = (item) => {\n if (route.meta.context === 'backoffice') {\n return `/backoffice/events/${item.url}`\n }\n if (route.meta.context === 'organization' || props.organization) {\n const orgId = props.organization || route.params._id\n return `/organizations/${orgId}/events/${item.url}`\n }\n return `/events/${item.url}`\n}\n</script>\n\n<style lang=\"scss\">\n.slider-hotpost .embla__slide {\n flex: 0 0 75%;\n}\n@media screen and (max-width: 1025px) {\n .slider-hotpost .embla__slide {\n flex: 0 0 75%;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,UAAM,QAAQ,SAAQ;AAEtB,UAAM,QAAQ;AA0Bd,UAAM,eAAe,CAAC,SAAS;AAC7B,UAAI,MAAM,KAAK,YAAY,cAAc;AACvC,eAAO,sBAAsB,KAAK,GAAG;AAAA,MACvC;AACA,UAAI,MAAM,KAAK,YAAY,kBAAkB,MAAM,cAAc;AAC/D,cAAM,QAAQ,MAAM,gBAAgB,MAAM,OAAO;AACjD,eAAO,kBAAkB,KAAK,WAAW,KAAK,GAAG;AAAA,MACnD;AACA,aAAO,WAAW,KAAK,GAAG;AAAA,IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,7 @@ import { useRoute } from "vue-router";
4
4
  import _sfc_main$8 from "../../../../components/Button/Button.vue2.js";
5
5
  /* empty css */
6
6
  import _sfc_main$4 from "../../../../components/Chips/Chips.vue.js";
7
- /* empty css */
7
+ /* empty css */
8
8
  import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
9
9
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
10
10
  import PhotoViewer from "../../../../components/PhotoViewer/PhotoViewer.vue.js";
@@ -12,7 +12,7 @@ import { state } from "../../../auth/views/store/auth.js";
12
12
  import gallery from "../../store/gallery.js";
13
13
  import _sfc_main$3 from "../../../core/views/components/blocks/CardHeader.vue.js";
14
14
  import _sfc_main$1 from "../../../core/views/components/sections/SectionPageTitle.vue.js";
15
- import _sfc_main$6 from "../../../../components/EditImages/EditImages.vue2.js";
15
+ import _sfc_main$6 from "../../../../components/EditImages/EditImages.vue.js";
16
16
  import _sfc_main$7 from "../../../../components/FieldTags/BlockTags.vue.js";
17
17
  const _hoisted_1 = { class: "cols-1 gap-thin pd-thin" };
18
18
  const _hoisted_2 = { class: "pos-relative" };
@@ -2,7 +2,7 @@ import { ref, watch, createElementBlock, openBlock, createElementVNode, unref, c
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useI18n } from "vue-i18n";
4
4
  import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
5
- import Filters from "../../../../core/views/components/sections/Filters.vue2.js";
5
+ import Filters from "../../../../core/views/components/sections/Filters.vue.js";
6
6
  import _sfc_main$1 from "../../../../core/views/components/sections/filters/FiltersGroup.vue.js";
7
7
  import Field from "../../../../../components/Field/Field.vue.js";
8
8
  import _sfc_main$3 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
@@ -124,7 +124,7 @@ const _sfc_main = {
124
124
  }, [
125
125
  __props.track.url ? (openBlock(), createBlock(_component_router_link, {
126
126
  key: 0,
127
- to: { name: "track", params: { url: __props.track.url } },
127
+ to: "/music/tracks/" + __props.track.url,
128
128
  class: normalizeClass(["hover-t-main hover-t-underline", { "t-main": isPlaying(__props.track) }]),
129
129
  onClick: _cache[4] || (_cache[4] = withModifiers(() => {
130
130
  }, ["stop"]))
@@ -140,7 +140,7 @@ const _sfc_main = {
140
140
  }, [
141
141
  __props.track.artist && __props.track.artist._id ? (openBlock(), createBlock(_component_router_link, {
142
142
  key: 0,
143
- to: { name: "artist", params: { url: __props.track.artist.url } },
143
+ to: "/music/artists/" + __props.track.artist.url,
144
144
  class: "t-transp hover-t-underline",
145
145
  onClick: _cache[5] || (_cache[5] = withModifiers(() => {
146
146
  }, ["stop"]))
@@ -156,7 +156,7 @@ const _sfc_main = {
156
156
  __props.showAlbum ? (openBlock(), createElementBlock("div", _hoisted_8, [
157
157
  __props.track.album && __props.track.album._id ? (openBlock(), createBlock(_component_router_link, {
158
158
  key: 0,
159
- to: { name: "album", params: { url: __props.track.album.url } },
159
+ to: "/music/albums/" + __props.track.album.url,
160
160
  class: "t-transp hover-t-underline",
161
161
  onClick: _cache[6] || (_cache[6] = withModifiers(() => {
162
162
  }, ["stop"]))
@@ -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-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 hover-t-underline\"\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-t-underline\"\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-t-underline\"\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.togglePlay();\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,WAAU;AAAA,IAC1B;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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=\"'/music/tracks/' + track.url\"\n class=\"hover-t-main hover-t-underline\"\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=\"'/music/artists/' + track.artist.url\"\n class=\"t-transp hover-t-underline\"\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=\"'/music/albums/' + track.album.url\"\n class=\"t-transp hover-t-underline\"\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.togglePlay();\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,WAAU;AAAA,IAC1B;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { computed, watch, createElementBlock, openBlock, createBlock, createCommentVNode, unref, withCtx, createVNode } from "vue";
1
+ import { computed, watch, createElementBlock, openBlock, Fragment, createBlock, createCommentVNode, unref, withCtx, createVNode } from "vue";
2
2
  import { useRoute } from "vue-router";
3
3
  import MusicPlayer from "../player/MusicPlayer.vue.js";
4
4
  import FullscreenPlayer from "../player/FullscreenPlayer.vue.js";
@@ -21,10 +21,10 @@ const _sfc_main = {
21
21
  }
22
22
  });
23
23
  return (_ctx, _cache) => {
24
- return openBlock(), createElementBlock("div", null, [
24
+ return openBlock(), createElementBlock(Fragment, null, [
25
25
  currentTrack.value && !showFullPlayer.value ? (openBlock(), createBlock(MusicPlayer, {
26
26
  key: 0,
27
- class: "pos-absolute pos-b-0 w-100"
27
+ class: "pos-sticky pos-b-0 w-100"
28
28
  })) : createCommentVNode("", true),
29
29
  showFullPlayer.value ? (openBlock(), createBlock(_sfc_main$1, {
30
30
  key: 1,
@@ -36,7 +36,7 @@ const _sfc_main = {
36
36
  ]),
37
37
  _: 1
38
38
  }, 8, ["show"])) : createCommentVNode("", true)
39
- ]);
39
+ ], 64);
40
40
  };
41
41
  }
42
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MusicBottomPlayer.vue.js","sources":["../../../../../../../src/modules/music/components/layouts/MusicBottomPlayer.vue"],"sourcesContent":["<!-- components/layouts/MusicBottomPlayer.vue -->\n<template>\n <div>\n <MusicPlayer v-if=\"currentTrack && !showFullPlayer\" class=\"pos-absolute pos-b-0 w-100\" />\n\n <BottomSheet\n v-if=\"showFullPlayer\"\n :show=\"showFullPlayer\"\n @toggle=\"playerActions.toggleFullPlayer()\"\n >\n <FullscreenPlayer />\n </BottomSheet>\n </div>\n</template>\n\n<script setup>\nimport { computed, watch } from 'vue';\nimport { useRoute } from 'vue-router';\nimport MusicPlayer from '../player/MusicPlayer.vue';\nimport FullscreenPlayer from '../player/FullscreenPlayer.vue';\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\n// Import store modules\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\nconst route = useRoute();\n\n// Current track from player store\nconst currentTrack = computed(() => {\n return playerState.currentTrack;\n});\n\n// Fullscreen player state\nconst showFullPlayer = computed(() => {\n return playerState.showFullPlayer;\n});\n\n// Close fullscreen player on route change\nwatch(() => route.path, () => {\n if (playerState.showFullPlayer) {\n playerActions.toggleFullPlayer();\n }\n});\n</script>\n\n<style>\n/* Shared control button styles for both players */\n.control-btn {\n background: none;\n border: none;\n color: rgb(var(--grey));\n cursor: pointer;\n padding: 8px;\n border-radius: 50%;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.control-icon {\n width: 16px;\n height: 16px;\n}\n\n.control-btn.primary {\n background: rgb(var(--second));\n color: rgb(var(--white));\n width: 32px;\n height: 32px;\n}\n\n.play-icon {\n width: 14px;\n height: 14px;\n fill: rgb(var(--white));\n}\n\n.control-btn.primary:hover {\n background: rgb(var(--second));\n transform: scale(1.06);\n}\n\n.control-btn.secondary:hover {\n color: rgb(var(--white));\n background: rgba(var(--black),0.1);\n}\n\n.control-btn.secondary:hover .control-icon {\n fill: rgb(var(--white));\n}\n\n.control-btn.active {\n color: rgb(var(--main));\n background: rgba(var(--second),0.1);\n}\n\n.control-btn.active .control-icon {\n fill: rgb(var(--main));\n}\n\n.control-btn.active:hover {\n color: rgb(var(--main));\n opacity: 0.8;\n background: rgba(var(--second),0.2);\n}\n</style>"],"names":["playerState","playerActions"],"mappings":";;;;;;;;;;AAyBA,UAAM,QAAQ,SAAQ;AAGtB,UAAM,eAAe,SAAS,MAAM;AAClC,aAAOA,MAAY;AAAA,IACrB,CAAC;AAGD,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAOA,MAAY;AAAA,IACrB,CAAC;AAGD,UAAM,MAAM,MAAM,MAAM,MAAM;AAC5B,UAAIA,MAAY,gBAAgB;AAC9BC,gBAAc,iBAAgB;AAAA,MAChC;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"MusicBottomPlayer.vue.js","sources":["../../../../../../../src/modules/music/components/layouts/MusicBottomPlayer.vue"],"sourcesContent":["<!-- components/layouts/MusicBottomPlayer.vue -->\n<template>\n <MusicPlayer v-if=\"currentTrack && !showFullPlayer\" class=\"pos-sticky pos-b-0 w-100\" />\n\n <BottomSheet\n v-if=\"showFullPlayer\"\n :show=\"showFullPlayer\"\n @toggle=\"playerActions.toggleFullPlayer()\"\n >\n <FullscreenPlayer />\n </BottomSheet>\n</template>\n\n<script setup>\nimport { computed, watch } from 'vue';\nimport { useRoute } from 'vue-router';\nimport MusicPlayer from '../player/MusicPlayer.vue';\nimport FullscreenPlayer from '../player/FullscreenPlayer.vue';\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\n// Import store modules\nimport { state as playerState, actions as playerActions } from '../../store/player.js';\n\nconst route = useRoute();\n\n// Current track from player store\nconst currentTrack = computed(() => {\n return playerState.currentTrack;\n});\n\n// Fullscreen player state\nconst showFullPlayer = computed(() => {\n return playerState.showFullPlayer;\n});\n\n// Close fullscreen player on route change\nwatch(() => route.path, () => {\n if (playerState.showFullPlayer) {\n playerActions.toggleFullPlayer();\n }\n});\n</script>\n\n<style>\n/* Shared control button styles for both players */\n.control-btn {\n background: none;\n border: none;\n color: rgb(var(--grey));\n cursor: pointer;\n padding: 8px;\n border-radius: 50%;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.control-icon {\n width: 16px;\n height: 16px;\n}\n\n.control-btn.primary {\n background: rgb(var(--second));\n color: rgb(var(--white));\n width: 32px;\n height: 32px;\n}\n\n.play-icon {\n width: 14px;\n height: 14px;\n fill: rgb(var(--white));\n}\n\n.control-btn.primary:hover {\n background: rgb(var(--second));\n transform: scale(1.06);\n}\n\n.control-btn.secondary:hover {\n color: rgb(var(--white));\n background: rgba(var(--black),0.1);\n}\n\n.control-btn.secondary:hover .control-icon {\n fill: rgb(var(--white));\n}\n\n.control-btn.active {\n color: rgb(var(--main));\n background: rgba(var(--second),0.1);\n}\n\n.control-btn.active .control-icon {\n fill: rgb(var(--main));\n}\n\n.control-btn.active:hover {\n color: rgb(var(--main));\n opacity: 0.8;\n background: rgba(var(--second),0.2);\n}\n</style>"],"names":["playerState","playerActions"],"mappings":";;;;;;;;;;AAuBA,UAAM,QAAQ,SAAQ;AAGtB,UAAM,eAAe,SAAS,MAAM;AAClC,aAAOA,MAAY;AAAA,IACrB,CAAC;AAGD,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAOA,MAAY;AAAA,IACrB,CAAC;AAGD,UAAM,MAAM,MAAM,MAAM,MAAM;AAC5B,UAAIA,MAAY,gBAAgB;AAC9BC,gBAAc,iBAAgB;AAAA,MAChC;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, unref, normalizeStyle, Fragment, renderList, createBlock, withCtx, createTextVNode, toDisplayString, createVNode } from "vue";
2
2
  import _imports_0 from "./tonar.png.js";
3
- import { r as fu } from "../../../../../dist/main-B9o1iBAZ.js";
3
+ import { r as fu } from "../../../../../dist/main-BFvlam0J.js";
4
4
  import _sfc_main$1 from "../../../icons/navigation/IconLike.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/entities/IconEvents.vue.js";
6
6
  import _sfc_main$3 from "../cards/TrackListCard.vue.js";
@@ -10,7 +10,7 @@ import _sfc_main$2 from "../../../../components/Radio/Radio.vue.js";
10
10
  /* empty css */
11
11
  /* empty css */
12
12
  /* empty css */
13
- /* empty css */
13
+ /* empty css */
14
14
  /* empty css */
15
15
  import CardSpot from "../../../spots/components/blocks/CardSpot.vue.js";
16
16
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, withCtx, createBlock, createCommentVNode, unref, createElementVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Menu/Menu.vue2.js";
3
3
  import _sfc_main$2 from "../../../../components/Menu/MenuItem.vue.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$4 from "../../../icons/entities/IconProducts.vue.js";
6
6
  import _sfc_main$8 from "../../../icons/entities/IconEvents.vue.js";
7
7
  import _sfc_main$3 from "../../../icons/entities/IconGroups.vue.js";
@@ -6,7 +6,7 @@ import _sfc_main$2 from "../../../../components/FieldTags/BlockTags.vue.js";
6
6
  /* empty css */
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
8
  /* empty css */
9
- import _sfc_main$1 from "../../../../components/SelectMulti/SelectMulti.vue2.js";
9
+ import _sfc_main$1 from "../../../../components/SelectMulti/SelectMulti.vue.js";
10
10
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
11
11
  import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
12
12
  /* empty css */
@@ -15,7 +15,7 @@ import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
- /* empty css */
18
+ /* empty css */
19
19
  /* empty css */
20
20
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
21
21
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -5,14 +5,14 @@ import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
5
5
  import Field from "../../../../components/Field/Field.vue.js";
6
6
  import Select from "../../../../components/Select/Select.vue.js";
7
7
  import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
8
- import _sfc_main$4 from "../../../../components/EditImages/EditImages.vue2.js";
8
+ import _sfc_main$4 from "../../../../components/EditImages/EditImages.vue.js";
9
9
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
10
10
  import _sfc_main$5 from "../../../icons/navigation/IconCross.vue.js";
11
11
  import _sfc_main$a from "../../../icons/navigation/IconDelete.vue.js";
12
12
  import _sfc_main$7 from "../sections/EditVariants.vue.js";
13
13
  import _sfc_main$6 from "../sections/EditAttributes.vue.js";
14
14
  import _sfc_main$8 from "../sections/EditDiscounts.vue.js";
15
- /* empty css */
15
+ /* empty css */
16
16
  import _sfc_main$9 from "../sections/EditRecommended.vue.js";
17
17
  import { useStore, setError } from "../../../core/views/store/core.store.js";
18
18
  import { state as state$2 } from "../../../auth/views/store/auth.js";
@@ -9,7 +9,7 @@ import "vue-i18n";
9
9
  import { actions as actions$1 } from "../../store/categories.js";
10
10
  /* empty css */
11
11
  import Field from "../../../../components/Field/Field.vue.js";
12
- import Filters from "../../../core/views/components/sections/Filters.vue2.js";
12
+ import Filters from "../../../core/views/components/sections/Filters.vue.js";
13
13
  import Calendar from "../../../../components/Calendar/Calendar.vue2.js";
14
14
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
15
15
  import _sfc_main$6 from "../blocks/CardProduct.vue.js";
@@ -9,7 +9,7 @@ import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
9
9
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
10
10
  import Select from "../../../../components/Select/Select.vue.js";
11
11
  import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
12
- import _sfc_main$9 from "../../../../components/EditImages/EditImages.vue2.js";
12
+ import _sfc_main$9 from "../../../../components/EditImages/EditImages.vue.js";
13
13
  import _sfc_main$8 from "./EditIngredients.vue.js";
14
14
  import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
15
15
  import _sfc_main$5 from "../../../icons/navigation/IconEdit.vue.js";