@ozdao/martyrs 0.2.566 → 0.2.567

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 (31) 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/Feed/Carousel.vue.js +2 -2
  7. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  8. package/dist/martyrs/src/components/Feed/Feed.vue.js +6 -3
  9. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  10. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  11. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  12. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  13. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
  14. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +17 -1
  15. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js.map +1 -1
  16. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +3 -3
  17. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  18. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +1 -1
  19. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  20. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  21. package/dist/martyrs.css +1 -1
  22. package/dist/martyrs.es.js +1 -1
  23. package/dist/style.css +7 -7
  24. package/dist/{web-BF3ijvEr.js → web-CH5wzMHy.js} +1 -1
  25. package/package.json +1 -1
  26. package/src/components/Feed/Carousel.vue +1 -1
  27. package/src/components/Feed/Feed.vue +3 -3
  28. package/src/modules/community/components/sections/HotPosts.vue +8 -4
  29. package/src/modules/events/components/sections/EventsHot.vue +21 -4
  30. package/src/modules/music/components/cards/TrackListCard.vue +6 -6
  31. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { W as Nn } from "./main-B9o1iBAZ.js";
1
+ import { W as Nn } from "./main-BFvlam0J.js";
2
2
  class f extends Nn {
3
3
  constructor() {
4
4
  super(...arguments), this.group = "CapacitorStorage";
@@ -52,4 +52,4 @@ class f extends Nn {
52
52
  export {
53
53
  f as PreferencesWeb
54
54
  };
55
- //# sourceMappingURL=web-BF3ijvEr.js.map
55
+ //# sourceMappingURL=web-CH5wzMHy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-BF3ijvEr.js","sources":["../../web-BF3ijvEr.js"],"sourcesContent":["import { W as p } from \"./main-B9o1iBAZ.js\";\nclass f extends p {\n constructor() {\n super(...arguments), this.group = \"CapacitorStorage\";\n }\n async configure({ group: e }) {\n typeof e == \"string\" && (this.group = e);\n }\n async get(e) {\n return { value: this.impl.getItem(this.applyPrefix(e.key)) };\n }\n async set(e) {\n this.impl.setItem(this.applyPrefix(e.key), e.value);\n }\n async remove(e) {\n this.impl.removeItem(this.applyPrefix(e.key));\n }\n async keys() {\n return { keys: this.rawKeys().map((t) => t.substring(this.prefix.length)) };\n }\n async clear() {\n for (const e of this.rawKeys())\n this.impl.removeItem(e);\n }\n async migrate() {\n var e;\n const t = [], s = [], n = \"_cap_\", o = Object.keys(this.impl).filter((i) => i.indexOf(n) === 0);\n for (const i of o) {\n const r = i.substring(n.length), a = (e = this.impl.getItem(i)) !== null && e !== void 0 ? e : \"\", { value: l } = await this.get({ key: r });\n typeof l == \"string\" ? s.push(r) : (await this.set({ key: r, value: a }), t.push(r));\n }\n return { migrated: t, existing: s };\n }\n async removeOld() {\n const e = \"_cap_\", t = Object.keys(this.impl).filter((s) => s.indexOf(e) === 0);\n for (const s of t)\n this.impl.removeItem(s);\n }\n get impl() {\n return window.localStorage;\n }\n get prefix() {\n return this.group === \"NativeStorage\" ? \"\" : `${this.group}.`;\n }\n rawKeys() {\n return Object.keys(this.impl).filter((e) => e.indexOf(this.prefix) === 0);\n }\n applyPrefix(e) {\n return this.prefix + e;\n }\n}\nexport {\n f as PreferencesWeb\n};\n"],"names":["p"],"mappings":";AACA,MAAM,UAAUA,GAAE;AAAA,EAChB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,QAAQ;AAAA,EACpC;AAAA,EACA,MAAM,UAAU,EAAE,OAAO,KAAK;AAC5B,WAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,EACxC;AAAA,EACA,MAAM,IAAI,GAAG;AACX,WAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,CAAC,EAAC;AAAA,EAC5D;AAAA,EACA,MAAM,IAAI,GAAG;AACX,SAAK,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,GAAG,EAAE,KAAK;AAAA,EACpD;AAAA,EACA,MAAM,OAAO,GAAG;AACd,SAAK,KAAK,WAAW,KAAK,YAAY,EAAE,GAAG,CAAC;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO;AACX,WAAO,EAAE,MAAM,KAAK,QAAO,EAAG,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,MAAM,CAAC,EAAC;AAAA,EAC3E;AAAA,EACA,MAAM,QAAQ;AACZ,eAAW,KAAK,KAAK,QAAO;AAC1B,WAAK,KAAK,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,MAAM,UAAU;AACd,QAAI;AACJ,UAAM,IAAI,CAAA,GAAI,IAAI,CAAA,GAAI,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC9F,eAAW,KAAK,GAAG;AACjB,YAAM,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,OAAO,QAAQ,MAAM,SAAS,IAAI,IAAI,EAAE,OAAO,MAAM,MAAM,KAAK,IAAI,EAAE,KAAK,EAAC,CAAE;AAC3I,aAAO,KAAK,WAAW,EAAE,KAAK,CAAC,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,GAAG,OAAO,EAAC,CAAE,GAAG,EAAE,KAAK,CAAC;AAAA,IACpF;AACA,WAAO,EAAE,UAAU,GAAG,UAAU,EAAC;AAAA,EACnC;AAAA,EACA,MAAM,YAAY;AAChB,UAAM,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC9E,eAAW,KAAK;AACd,WAAK,KAAK,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,UAAU,kBAAkB,KAAK,GAAG,KAAK,KAAK;AAAA,EAC5D;AAAA,EACA,UAAU;AACR,WAAO,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,KAAK,MAAM,MAAM,CAAC;AAAA,EAC1E;AAAA,EACA,YAAY,GAAG;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;"}
1
+ {"version":3,"file":"web-CH5wzMHy.js","sources":["../../web-CH5wzMHy.js"],"sourcesContent":["import { W as p } from \"./main-BFvlam0J.js\";\nclass f extends p {\n constructor() {\n super(...arguments), this.group = \"CapacitorStorage\";\n }\n async configure({ group: e }) {\n typeof e == \"string\" && (this.group = e);\n }\n async get(e) {\n return { value: this.impl.getItem(this.applyPrefix(e.key)) };\n }\n async set(e) {\n this.impl.setItem(this.applyPrefix(e.key), e.value);\n }\n async remove(e) {\n this.impl.removeItem(this.applyPrefix(e.key));\n }\n async keys() {\n return { keys: this.rawKeys().map((t) => t.substring(this.prefix.length)) };\n }\n async clear() {\n for (const e of this.rawKeys())\n this.impl.removeItem(e);\n }\n async migrate() {\n var e;\n const t = [], s = [], n = \"_cap_\", o = Object.keys(this.impl).filter((i) => i.indexOf(n) === 0);\n for (const i of o) {\n const r = i.substring(n.length), a = (e = this.impl.getItem(i)) !== null && e !== void 0 ? e : \"\", { value: l } = await this.get({ key: r });\n typeof l == \"string\" ? s.push(r) : (await this.set({ key: r, value: a }), t.push(r));\n }\n return { migrated: t, existing: s };\n }\n async removeOld() {\n const e = \"_cap_\", t = Object.keys(this.impl).filter((s) => s.indexOf(e) === 0);\n for (const s of t)\n this.impl.removeItem(s);\n }\n get impl() {\n return window.localStorage;\n }\n get prefix() {\n return this.group === \"NativeStorage\" ? \"\" : `${this.group}.`;\n }\n rawKeys() {\n return Object.keys(this.impl).filter((e) => e.indexOf(this.prefix) === 0);\n }\n applyPrefix(e) {\n return this.prefix + e;\n }\n}\nexport {\n f as PreferencesWeb\n};\n"],"names":["p"],"mappings":";AACA,MAAM,UAAUA,GAAE;AAAA,EAChB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,QAAQ;AAAA,EACpC;AAAA,EACA,MAAM,UAAU,EAAE,OAAO,KAAK;AAC5B,WAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,EACxC;AAAA,EACA,MAAM,IAAI,GAAG;AACX,WAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,CAAC,EAAC;AAAA,EAC5D;AAAA,EACA,MAAM,IAAI,GAAG;AACX,SAAK,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,GAAG,EAAE,KAAK;AAAA,EACpD;AAAA,EACA,MAAM,OAAO,GAAG;AACd,SAAK,KAAK,WAAW,KAAK,YAAY,EAAE,GAAG,CAAC;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO;AACX,WAAO,EAAE,MAAM,KAAK,QAAO,EAAG,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,MAAM,CAAC,EAAC;AAAA,EAC3E;AAAA,EACA,MAAM,QAAQ;AACZ,eAAW,KAAK,KAAK,QAAO;AAC1B,WAAK,KAAK,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,MAAM,UAAU;AACd,QAAI;AACJ,UAAM,IAAI,CAAA,GAAI,IAAI,CAAA,GAAI,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC9F,eAAW,KAAK,GAAG;AACjB,YAAM,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,OAAO,QAAQ,MAAM,SAAS,IAAI,IAAI,EAAE,OAAO,MAAM,MAAM,KAAK,IAAI,EAAE,KAAK,EAAC,CAAE;AAC3I,aAAO,KAAK,WAAW,EAAE,KAAK,CAAC,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,GAAG,OAAO,EAAC,CAAE,GAAG,EAAE,KAAK,CAAC;AAAA,IACpF;AACA,WAAO,EAAE,UAAU,GAAG,UAAU,EAAC;AAAA,EACnC;AAAA,EACA,MAAM,YAAY;AAChB,UAAM,IAAI,SAAS,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC9E,eAAW,KAAK;AACd,WAAK,KAAK,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,WAAO,OAAO;AAAA,EAChB;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,UAAU,kBAAkB,KAAK,GAAG,KAAK,KAAK;AAAA,EAC5D;AAAA,EACA,UAAU;AACR,WAAO,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,KAAK,MAAM,MAAM,CAAC;AAAA,EAC1E;AAAA,EACA,YAAY,GAAG;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;"}
@@ -52,7 +52,7 @@ const _sfc_main = {
52
52
  return (_ctx, _cache) => {
53
53
  return openBlock(), createElementBlock("div", _hoisted_1, [
54
54
  isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
55
- createVNode(Loader)
55
+ createVNode(Loader, { centered: true })
56
56
  ])) : entities.value.length < 1 ? (openBlock(), createBlock(_sfc_main$1, {
57
57
  key: 1,
58
58
  title: __props.states.empty.title,
@@ -92,7 +92,7 @@ const _sfc_main = {
92
92
  };
93
93
  }
94
94
  };
95
- const Carousel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fc5562fa"]]);
95
+ const Carousel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5db0aea4"]]);
96
96
  export {
97
97
  Carousel as default
98
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.vue.js","sources":["../../../../../src/components/Feed/Carousel.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n <!-- Empty State -->\n <EmptyState\n v-else-if=\"entities.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n <!-- Slider with loaded entities -->\n <Slider v-else :showDots=\"showDots\">\n <div \n v-for=\"(entity, key) in entities\" \n :key=\"key\"\n class=\"carousel__slide pd-nano\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </Slider>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Slider from '@martyrs/src/components/Slider/Slider.vue'\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst props = defineProps({\n showDots: Boolean,\n store: Object,\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n options: Object,\n text: Object,\n user: Object\n})\n\nconst entities = ref([])\nconst isLoading = ref(true)\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entities.value = await props.store.read(props.options)\n isLoading.value = false\n } catch (error) {\n console.error('Error loading entities:', error)\n entities.value = []\n isLoading.value = false\n } finally {\n isLoading.value = false\n }\n})\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,EAAE,eAAc,IAAK,gBAAe;AAE1C,UAAM,QAAQ;AAiBd,UAAM,WAAW,IAAI,CAAA,CAAE;AACvB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI;AACF,iBAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AACrD,kBAAU,QAAQ;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,iBAAS,QAAQ,CAAA;AACjB,kBAAU,QAAQ;AAAA,MACpB,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Carousel.vue.js","sources":["../../../../../src/components/Feed/Carousel.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader :centered=\"true\" />\n </div>\n <!-- Empty State -->\n <EmptyState\n v-else-if=\"entities.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n <!-- Slider with loaded entities -->\n <Slider v-else :showDots=\"showDots\">\n <div \n v-for=\"(entity, key) in entities\" \n :key=\"key\"\n class=\"carousel__slide pd-nano\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </Slider>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Slider from '@martyrs/src/components/Slider/Slider.vue'\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst props = defineProps({\n showDots: Boolean,\n store: Object,\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n options: Object,\n text: Object,\n user: Object\n})\n\nconst entities = ref([])\nconst isLoading = ref(true)\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entities.value = await props.store.read(props.options)\n isLoading.value = false\n } catch (error) {\n console.error('Error loading entities:', error)\n entities.value = []\n isLoading.value = false\n } finally {\n isLoading.value = false\n }\n})\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,EAAE,eAAc,IAAK,gBAAe;AAE1C,UAAM,QAAQ;AAiBd,UAAM,WAAW,IAAI,CAAA,CAAE;AACvB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI;AACF,iBAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AACrD,kBAAU,QAAQ;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,iBAAS,QAAQ,CAAA;AACjB,kBAAU,QAAQ;AAAA,MACpB,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -363,7 +363,10 @@ const _sfc_main = {
363
363
  class: normalizeClass(unref(replaceClasses)("radius-medium bg-light pd-thin flex-child-default o-hidden d-block", __props.skeleton.class))
364
364
  }, null, 8, ["structure", "horizontal", "loading", "class"]);
365
365
  }), 128)) : createCommentVNode("", true),
366
- unref(isLoading) && __props.skeleton?.hide ? (openBlock(), createBlock(Loader, { key: 1 })) : createCommentVNode("", true)
366
+ unref(isLoading) && __props.skeleton?.hide ? (openBlock(), createBlock(Loader, {
367
+ key: 1,
368
+ centered: true
369
+ })) : createCommentVNode("", true)
367
370
  ]),
368
371
  _: 1
369
372
  }, 8, ["class"])) : itemsList.value.length < 1 ? (openBlock(), createBlock(TransitionGroup, {
@@ -404,7 +407,7 @@ const _sfc_main = {
404
407
  _: 3
405
408
  }, 8, ["class"]),
406
409
  unref(isLoading) && __props.keepSlotVisible ? (openBlock(), createElementBlock("div", _hoisted_3, [
407
- createVNode(Loader)
410
+ createVNode(Loader, { centered: true })
408
411
  ])) : createCommentVNode("", true)
409
412
  ])),
410
413
  __props.showLoadMore && hasMoreItems.value && itemsList.value.length > 0 && !unref(isLoadingExtra) ? (openBlock(), createElementBlock("button", {
@@ -418,7 +421,7 @@ const _sfc_main = {
418
421
  class: "sentinel"
419
422
  }, null, 512)),
420
423
  unref(isLoadingExtra) ? (openBlock(), createElementBlock("div", _hoisted_4, [
421
- createVNode(Loader)
424
+ createVNode(Loader, { centered: true })
422
425
  ])) : createCommentVNode("", true)
423
426
  ], 64);
424
427
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.vue.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/core/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/core/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/core/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/core/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
1
+ {"version":3,"file":"Feed.vue.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\" :centered=\"true\" />\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader :centered=\"true\" />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader :centered=\"true\" />\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/core/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/core/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/core/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/core/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, renderSlot } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
4
4
  const _sfc_main = {
5
5
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  export {
15
15
  _sfc_main as default
16
16
  };
17
- //# sourceMappingURL=Menu.vue2.js.map
17
+ //# sourceMappingURL=Menu.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -3,7 +3,7 @@ import { ref, inject, onMounted, resolveComponent, createElementBlock, createCom
3
3
  /* empty css */
4
4
  /* empty css */
5
5
  import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue.js";
6
- import _sfc_main$6 from "../../../../../components/Menu/Menu.vue2.js";
6
+ import _sfc_main$6 from "../../../../../components/Menu/Menu.vue.js";
7
7
  import _sfc_main$b from "../../../../../components/Menu/MenuItem.vue.js";
8
8
  import _sfc_main$3 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
9
9
  import _sfc_main$2 from "../../../../reports/components/sections/FormReport.vue.js";
@@ -1 +1 @@
1
- {"version":3,"file":"HotPosts.vue.js","sources":["../../../../../../../src/modules/community/components/sections/HotPosts.vue"],"sourcesContent":["<template>\n <Carousel\n :store=\"{\n read: (options) => blog.read({ \n skip: props.skip, \n limit: props.limit,\n user: props.userId,\n period: props.period,\n category: props.category \n })\n }\"\n :text=\"{\n messages: {\n en: {\n title: 'No Blogposts Found',\n description: 'Currently, there are no blogposts available.'\n }\n }\n }\"\n v-slot=\"{ \n item\n }\"\n class=\"slider-hotpost flex-child-default\"\n >\n <CardBlogpost \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n :hideDescription=\"true\"\n class=\"bg-white flex flex-column radius-medium h-35r\"\n />\n </Carousel>\n</template>\n\n<script setup>\nimport { defineProps } from 'vue'\nimport Carousel from '@martyrs/src/components/Feed/Carousel.vue'\nimport CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue'\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\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 },\n category: {\n type: String,\n default: 'featured'\n }\n})\n</script>\n\n<style lang=\"scss\">\n.slider-hotpost :deep(.carousel__slide ) {\n flex: 0 0 25%;\n}\n\n@media screen and (max-width: 1025px) {\n .slider-hotpost :deep(.carousel__slide ) {\n flex: 0 0 75%;\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"HotPosts.vue.js","sources":["../../../../../../../src/modules/community/components/sections/HotPosts.vue"],"sourcesContent":["<template>\n <Carousel\n :store=\"{\n read: (options) => blog.read({ \n skip: props.skip, \n limit: props.limit,\n user: props.userId,\n period: props.period,\n category: props.category \n })\n }\"\n :text=\"{\n messages: {\n en: {\n title: 'No Blogposts Found',\n description: 'Currently, there are no blogposts available.'\n }\n }\n }\"\n v-slot=\"{ \n item\n }\"\n class=\"slider-hotpost flex-child-default\"\n >\n <CardBlogpost \n :key=\"item._id\" \n :blogpost=\"item\" \n :user=\"auth.state.user._id\" \n :hideDescription=\"true\"\n class=\"bg-white flex flex-column radius-medium h-35r\"\n />\n </Carousel>\n</template>\n\n<script setup>\nimport { defineProps } from 'vue'\nimport Carousel from '@martyrs/src/components/Feed/Carousel.vue'\nimport CardBlogpost from '@martyrs/src/modules/community/components/blocks/CardBlogpost.vue'\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\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 },\n category: {\n type: String,\n default: 'featured'\n }\n})\n</script>\n\n<style lang=\"scss\">\n.slider-hotpost {\n .carousel__slide {\n flex: 0 0 33%;\n }\n}\n\n@media screen and (max-width: 1025px) {\n .slider-hotpost {\n .carousel__slide {\n flex: 0 0 75%;\n }\n }\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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,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";
@@ -5,7 +5,7 @@ import "vue-i18n";
5
5
  /* empty css */
6
6
  import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue.js";
7
7
  import _sfc_main$7 from "../../../../components/Chips/Chips.vue.js";
8
- /* empty css */
8
+ /* empty css */
9
9
  import "../../../../components/Menu/MenuItem.vue.js";
10
10
  import _sfc_main$6 from "../../../icons/entities/IconFollowing.vue.js";
11
11
  import _sfc_main$5 from "../../../icons/navigation/IconEdit.vue.js";
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createVNode, withCtx, createBlock, createCommentVNode, unref, createElementVNode } from "vue";
2
- import _sfc_main$1 from "../../../../components/Menu/Menu.vue2.js";
2
+ import _sfc_main$1 from "../../../../components/Menu/Menu.vue.js";
3
3
  import _sfc_main$2 from "../../../../components/Menu/MenuItem.vue.js";
4
4
  /* empty css */
5
5
  import _sfc_main$4 from "../../../icons/entities/IconProducts.vue.js";