{"version":3,"file":"TagList-WMAlflFl.mjs","names":[],"sources":["../src/components/display/podcasts/TagList.vue","../src/components/display/podcasts/TagList.vue"],"sourcesContent":["<template>\n  <div\n    v-if=\"undefined !== tagListFiltered && 0 !== tagListFiltered.length\"\n    class=\"tag-list-component d-flex align-items-center flex-wrap mb-3 small-text\"\n  >\n    <div class=\"fw-bold me-3\">\n      {{ t(\"Podcast tags\") + \" : \" }}\n    </div>\n    <router-link\n      v-for=\"(tag, index) in tags\"\n      :key=\"tag\"\n      class=\"d-flex align-items-center border p-1 m-1 text-dark\"\n      :to=\"{\n        name: 'tag',\n        params: { tag },\n        query: organisationQuery\n      }\"\n    >\n      <template v-if=\"!isOuestFranceTag(tag)\">{{ tag }}</template>\n      <template v-else>\n        <button\n          :id=\"'tag-list-from-podcast-page' + index\"\n          class=\"btn-transparent d-flex align-items-center\"\n        >\n          <img\n            width=\"20\"\n            height=\"20\"\n            class=\"ouest-france-logo\"\n            aria-hidden=\"true\"\n            alt=\"\"\n            title=\"Ouest France\"\n            src=\"/img/ouest_france_logo.svg\" \n          />\n          {{ formateOfTag(tag) }}\n        </button>\n        <ClassicPopover\n          :target=\"'tag-list-from-podcast-page' + index\"\n          :content=\"tag.substring(4, tag.length)\"\n          relative-class=\"page-element\"\n          :is-fixed=\"true\"\n        />\n      </template>\n    </router-link>\n\n    <button\n      v-if=\"limitTags && !showAllTags\"\n      class=\"btn\"\n      @click=\"showAllTags = true\"\n    >\n      {{ t('See more') }}\n    </button>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, ref } from \"vue\";\nconst ClassicPopover = defineAsyncComponent(\n  () => import(\"../../misc/ClassicPopover.vue\"),\n);\nimport {useTagOf} from \"../../composable/useTagOf\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  tagList: { default: () => [], type: Array as () => Array<string> },\n  podcastAnnotations: {\n    default: () => {},\n    type: Object as () => {\n      [key: string]: string | number | boolean | undefined;\n    },\n  },\n  orgaId: {default: \"\", type: String },\n  /** Max number of tags to display */\n  max: { type: Number, default: undefined }\n})\n\n\n//Composables\nconst { t } = useI18n()\nconst { isOuestFranceTag, formateOfTag } = useTagOf();\nconst filterStore = useFilterStore();\n\nconst showAllTags = ref(false);\n\n//Computed\nconst limitTags = computed((): boolean => {\n  return !!props.max && tagListFiltered.value.length > props.max;\n});\n\nconst tags = computed(() => {\n  if (limitTags.value && !showAllTags.value) {\n    return limitedTags.value;\n  } else {\n    return tagListFiltered.value;\n  }\n});\n\nconst tagListFiltered = computed(() => {\n  const tags = props.tagList.filter((tag: string) => {\n    return !tag.match(/^\\[\\[.*\\]\\]$/);\n  });\n\n  // Each tag is only displayed once\n  return tags.filter((tag, index) => tags.indexOf(tag) === index);\n});\n\nconst limitedTags = computed(() => {\n  return tagListFiltered.value.slice(0, props.max);\n});\n\nconst organisationQuery = computed(() => {\n  if(filterStore.filterOrgaId){\n    return undefined;\n  }\n  return { o: props.orgaId };\n});\n/* const ouestFranceMainTag = computed(() => {\n  if (props.podcastAnnotations?.[\"mainOfTag\"]) {\n    for (const key in props.podcastAnnotations) {\n      if (\n        props.podcastAnnotations[key] ===\n        props.podcastAnnotations[\"mainOfTag\"] &&\n        key !== \"mainOfTag\"\n      ) {\n        return \"[of]\" + key;\n      }\n    }\n  }\n  return undefined;\n}); */\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n  .tag-list-component {\n    .ouest-france-logo {\n      width: 20px;\n      height: 20px;\n      margin-right: 5px;\n    }\n\n    .main-of-tag {\n      box-shadow: var(--octopus-shadow) 0 5px 15px;\n      font-size: 0.9rem;\n    }\n  }\n\n  .btn {\n    font-size: 12px;\n    padding: 4px 8px;\n  }\n}\n</style>\n","<template>\n  <div\n    v-if=\"undefined !== tagListFiltered && 0 !== tagListFiltered.length\"\n    class=\"tag-list-component d-flex align-items-center flex-wrap mb-3 small-text\"\n  >\n    <div class=\"fw-bold me-3\">\n      {{ t(\"Podcast tags\") + \" : \" }}\n    </div>\n    <router-link\n      v-for=\"(tag, index) in tags\"\n      :key=\"tag\"\n      class=\"d-flex align-items-center border p-1 m-1 text-dark\"\n      :to=\"{\n        name: 'tag',\n        params: { tag },\n        query: organisationQuery\n      }\"\n    >\n      <template v-if=\"!isOuestFranceTag(tag)\">{{ tag }}</template>\n      <template v-else>\n        <button\n          :id=\"'tag-list-from-podcast-page' + index\"\n          class=\"btn-transparent d-flex align-items-center\"\n        >\n          <img\n            width=\"20\"\n            height=\"20\"\n            class=\"ouest-france-logo\"\n            aria-hidden=\"true\"\n            alt=\"\"\n            title=\"Ouest France\"\n            src=\"/img/ouest_france_logo.svg\" \n          />\n          {{ formateOfTag(tag) }}\n        </button>\n        <ClassicPopover\n          :target=\"'tag-list-from-podcast-page' + index\"\n          :content=\"tag.substring(4, tag.length)\"\n          relative-class=\"page-element\"\n          :is-fixed=\"true\"\n        />\n      </template>\n    </router-link>\n\n    <button\n      v-if=\"limitTags && !showAllTags\"\n      class=\"btn\"\n      @click=\"showAllTags = true\"\n    >\n      {{ t('See more') }}\n    </button>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, ref } from \"vue\";\nconst ClassicPopover = defineAsyncComponent(\n  () => import(\"../../misc/ClassicPopover.vue\"),\n);\nimport {useTagOf} from \"../../composable/useTagOf\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  tagList: { default: () => [], type: Array as () => Array<string> },\n  podcastAnnotations: {\n    default: () => {},\n    type: Object as () => {\n      [key: string]: string | number | boolean | undefined;\n    },\n  },\n  orgaId: {default: \"\", type: String },\n  /** Max number of tags to display */\n  max: { type: Number, default: undefined }\n})\n\n\n//Composables\nconst { t } = useI18n()\nconst { isOuestFranceTag, formateOfTag } = useTagOf();\nconst filterStore = useFilterStore();\n\nconst showAllTags = ref(false);\n\n//Computed\nconst limitTags = computed((): boolean => {\n  return !!props.max && tagListFiltered.value.length > props.max;\n});\n\nconst tags = computed(() => {\n  if (limitTags.value && !showAllTags.value) {\n    return limitedTags.value;\n  } else {\n    return tagListFiltered.value;\n  }\n});\n\nconst tagListFiltered = computed(() => {\n  const tags = props.tagList.filter((tag: string) => {\n    return !tag.match(/^\\[\\[.*\\]\\]$/);\n  });\n\n  // Each tag is only displayed once\n  return tags.filter((tag, index) => tags.indexOf(tag) === index);\n});\n\nconst limitedTags = computed(() => {\n  return tagListFiltered.value.slice(0, props.max);\n});\n\nconst organisationQuery = computed(() => {\n  if(filterStore.filterOrgaId){\n    return undefined;\n  }\n  return { o: props.orgaId };\n});\n/* const ouestFranceMainTag = computed(() => {\n  if (props.podcastAnnotations?.[\"mainOfTag\"]) {\n    for (const key in props.podcastAnnotations) {\n      if (\n        props.podcastAnnotations[key] ===\n        props.podcastAnnotations[\"mainOfTag\"] &&\n        key !== \"mainOfTag\"\n      ) {\n        return \"[of]\" + key;\n      }\n    }\n  }\n  return undefined;\n}); */\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n  .tag-list-component {\n    .ouest-france-logo {\n      width: 20px;\n      height: 20px;\n      margin-right: 5px;\n    }\n\n    .main-of-tag {\n      box-shadow: var(--octopus-shadow) 0 5px 15px;\n      font-size: 0.9rem;\n    }\n  }\n\n  .btn {\n    font-size: 12px;\n    padding: 4px 8px;\n  }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDA,MAAM,iBAAiB,2BACf,OAAO,iCAAA,MAAA,MAAA,EAAA,CAAA,CACf;EAMA,MAAM,QAAQ;EAed,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,kBAAkB,iBAAiB,SAAS;EACpD,MAAM,cAAc,eAAe;EAEnC,MAAM,cAAc,IAAI,KAAK;EAG7B,MAAM,YAAY,eAAwB;GACxC,OAAO,CAAC,CAAC,MAAM,OAAO,gBAAgB,MAAM,SAAS,MAAM;EAC7D,CAAC;EAED,MAAM,OAAO,eAAe;GAC1B,IAAI,UAAU,SAAS,CAAC,YAAY,OAClC,OAAO,YAAY;QAEnB,OAAO,gBAAgB;EAE3B,CAAC;EAED,MAAM,kBAAkB,eAAe;GACrC,MAAM,OAAO,MAAM,QAAQ,QAAQ,QAAgB;IACjD,OAAO,CAAC,IAAI,MAAM,cAAc;GAClC,CAAC;GAGD,OAAO,KAAK,QAAQ,KAAK,UAAU,KAAK,QAAQ,GAAG,MAAM,KAAK;EAChE,CAAC;EAED,MAAM,cAAc,eAAe;GACjC,OAAO,gBAAgB,MAAM,MAAM,GAAG,MAAM,GAAG;EACjD,CAAC;;;;;;;;;;;;;sBAEyB,eAAe;IACvC,IAAG,YAAY,cACb;IAEF,OAAO,EAAE,GAAG,MAAM,OAAO;GAC3B,CAAA;;;;;;;;;;;;;CCjHI,OAAM;;mBAED,OAAM,eAAc;;;;QAHnB,KAAA,MAAc,OAAA,mBAAe,MAAU,OAAA,gBAAgB,UAAA,UAAA,GAD/D,mBAkDM,OAlDN,YAkDM;EA9CJ,mBAEM,OAFN,YAEM,gBADD,OAAA,EAAC,cAAA,IAAA,KAAA,GAAA,CAAA;oBAEN,mBAkCc,UAAA,MAAA,WAjCW,OAAA,OAAf,KAAK,UAAK;uBADpB,YAkCc,wBAAA;IAhCX,KAAK;IACN,OAAM;IACL,IAAE;;eAA2C,IAAG;YAAmB,OAAA;;;2BAMR,CAAA,CAA3C,OAAA,iBAAiB,GAAG,KAAA,UAAA,GAArC,mBAA4D,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBAAjB,GAAG,GAAA,CAAA,CAAA,GAAA,EAAA,MAAA,UAAA,GAC9C,mBAsBW,UAAA,EAAA,KAAA,EAAA,GAAA,CArBT,mBAcS,UAAA;KAbN,IAAE,+BAAiC;KACpC,OAAM;kCAEN,mBAQE,OAAA;KAPA,OAAM;KACN,QAAO;KACP,OAAM;KACN,eAAY;KACZ,KAAI;KACJ,OAAM;KACN,KAAA;mCACA,MACF,gBAAG,OAAA,aAAa,GAAG,CAAA,GAAA,CAAA,CAAA,GAAA,GAAA,UAAA,GAErB,YAKE,OAAA,mBAAA;KAJC,QAAM,+BAAiC;KACvC,SAAS,IAAI,UAAS,GAAI,IAAI,MAAM;KACrC,kBAAe;KACd,YAAU;;;;;EAMT,OAAA,aAAS,CAAK,OAAA,eAAA,UAAA,GADtB,mBAMS,UAAA;;GAJP,OAAM;GACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,cAAW;qBAEhB,OAAA,EAAC,UAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA"}