{"version":3,"file":"PodcastInlineListTemplate-DJSNNFOh.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastInlineListTemplate.vue","../src/components/display/podcasts/PodcastInlineListTemplate.vue"],"sourcesContent":["<template>\n  <div class=\"podcast-inline-container\">\n    <div class=\"d-flex align-items-center\" :class=\"podcastId ? 'mb-4' : 'mb-2'\">\n      <component :is=\"titleTag\" class=\"mb-0\">\n        {{ title }}\n      </component>\n    </div>\n\n    <div v-if=\"!podcastId\" class=\"d-flex justify-content-between\">\n      <div v-if=\"!noSort\" class=\"d-flex\">\n        <button\n          class=\"btn btn-underline\"\n          :class=\"{ active: !popularSort }\"\n          @click=\"sortChrono()\"\n        >\n          {{ t(\"Last added\") }}\n        </button>\n        <button\n          class=\"btn btn-underline\"\n          :class=\"{ active: popularSort }\"\n          @click=\"sortPopular()\"\n        >\n          {{ t(\"Most popular\") }}\n        </button>\n      </div>\n      <div v-if=\"displayArrow\" class=\"hide-phone\">\n        <button\n          class=\"btn admin-button m-1\"\n          :class=\"{ disabled: !previousAvailable }\"\n          :title=\"t('Display previous')\"\n          @click=\"displayPrevious()\"\n        >\n          <ChevronLeftIcon :size=\"30\" />\n        </button>\n        <button\n          class=\"btn admin-button m-1\"\n          :class=\"{ disabled: !nextAvailable }\"\n          :title=\"t('Display next')\"\n          @click=\"displayNext()\"\n        >\n          <ChevronRightIcon :size=\"30\" />\n        </button>\n      </div>\n    </div>\n    <slot name=\"list-inline\" />\n    <router-link\n      v-if=\"buttonText\"\n      class=\"btn btn-primary align-self-center w-fit-content m-4\"\n      :to=\"refTo\"\n      @click=\"handleSeeMoreButton\"\n    >\n      {{ buttonText }}\n      <PlusIcon v-if=\"buttonPlus\" :size=\"16\" class=\"ms-1\" />\n    </router-link>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport PlusIcon from \"vue-material-design-icons/Plus.vue\";\nimport ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ChevronRightIcon from \"vue-material-design-icons/ChevronRight.vue\";\nimport { useRubriquesFilterComputed } from \"../../composable/route/useRubriquesFilterComputed\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { computed } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  displayArrow: { default: true, type: Boolean },\n  previousAvailable: { default: false, type: Boolean },\n  nextAvailable: { default: false, type: Boolean },\n  popularSort: { default: false, type: Boolean },\n  buttonText: { default: undefined, type: String },\n  buttonPlus: { default: false, type: Boolean },\n  title: { default: \"\", type: String },\n  href: { default: undefined, type: String },\n  iabId: { default: undefined, type: Number },\n  rubriqueId: { default: () => [], type: Array as () => Array<number> },\n  noRubriquageId: { default: () => [], type: Array as () => Array<number> },\n  podcastId: { default: undefined, type: Number },\n  titleTag: { default: \"h2\", type: String },\n  /** Hide sort options */\n  noSort: { default: false, type: Boolean }\n})\n\n//Emits\nconst emit = defineEmits([\"sortChrono\", \"sortPopular\", \"displayPrevious\", \"displayNext\"]);\n\n//Composables\nconst { t } = useI18n();\nconst { returnRubriquesFilter } = useRubriquesFilterParam();\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst filterStore = useFilterStore();\nconst router = useRouter();\nconst route = useRoute();\n\n\n//Computed\nconst refTo = computed(() => {\n  if (props.href) return props.href;\n  if (props.iabId) {\n    return {\n      name: \"category\",\n      params: { iabId: props.iabId },\n    };\n  }\n  return {\n    name: \"podcasts\",\n    query: {\n      iabId: filterStore.filterIab?.id,\n      rubriquesId: rubriqueQueryParam.value,\n      productor: filterStore.filterOrgaId\n    },\n  };\n});\n\n//Methods\nfunction sortChrono(): void {\n  emit(\"sortChrono\");\n}\nfunction sortPopular(): void {\n  emit(\"sortPopular\");\n}\nfunction displayPrevious(): void {\n  emit(\"displayPrevious\");\n}\nfunction displayNext(): void {\n  emit(\"displayNext\");\n}\nfunction handleSeeMoreButton(event: { preventDefault: () => void }) {\n  if (props.href ||\n    !props.rubriqueId ||\n    0 === props.rubriqueId.length ||\n    props.noRubriquageId.length\n  ) {\n    return;\n  }\n  event.preventDefault();\n  const rubriqueChosenId = props.rubriqueId.at(-1);\n  let filterToAdd: RubriquageFilter|undefined;\n  if (filterStore.filterRubriquage.length) {\n    for (let i = 0, len = filterStore.filterRubriquage.length; i < len; i++) {\n      const rubriqueChosen = filterStore.filterRubriquage[i].rubriques.find(\n        (element: Rubrique) => element.rubriqueId === rubriqueChosenId,\n      );\n      if (rubriqueChosen) {\n        filterToAdd = {\n          rubriquageId: filterStore.filterRubriquage[i].rubriquageId ?? 0,\n          rubriqueId: rubriqueChosenId,\n          nameRubriquage: filterStore.filterRubriquage[i].title,\n          nameRubrique: rubriqueChosen.name,\n        };\n        break;\n      }\n    }\n  }\n  if(!filterToAdd){return;}\n  const queries = returnRubriquesFilter((a) => {\n    const indexRubriquage = a.findIndex(filter => filter.rubriquageId === filterToAdd.rubriquageId);\n    if (indexRubriquage === -1) {\n      a.push(filterToAdd);\n    } else {\n      a[indexRubriquage] = filterToAdd;\n    }\n    return a;\n  })\n  router.push({\n    name: \"podcasts\",\n    query: {...route.query, ...queries}\n  });\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .podcast-inline-container {\n  display: flex;\n  flex-direction: column;\n  padding: 1rem;\n\n  @media (width <= 450px) {\n    padding: 1rem 0;\n  }\n}\n</style>\n","<template>\n  <div class=\"podcast-inline-container\">\n    <div class=\"d-flex align-items-center\" :class=\"podcastId ? 'mb-4' : 'mb-2'\">\n      <component :is=\"titleTag\" class=\"mb-0\">\n        {{ title }}\n      </component>\n    </div>\n\n    <div v-if=\"!podcastId\" class=\"d-flex justify-content-between\">\n      <div v-if=\"!noSort\" class=\"d-flex\">\n        <button\n          class=\"btn btn-underline\"\n          :class=\"{ active: !popularSort }\"\n          @click=\"sortChrono()\"\n        >\n          {{ t(\"Last added\") }}\n        </button>\n        <button\n          class=\"btn btn-underline\"\n          :class=\"{ active: popularSort }\"\n          @click=\"sortPopular()\"\n        >\n          {{ t(\"Most popular\") }}\n        </button>\n      </div>\n      <div v-if=\"displayArrow\" class=\"hide-phone\">\n        <button\n          class=\"btn admin-button m-1\"\n          :class=\"{ disabled: !previousAvailable }\"\n          :title=\"t('Display previous')\"\n          @click=\"displayPrevious()\"\n        >\n          <ChevronLeftIcon :size=\"30\" />\n        </button>\n        <button\n          class=\"btn admin-button m-1\"\n          :class=\"{ disabled: !nextAvailable }\"\n          :title=\"t('Display next')\"\n          @click=\"displayNext()\"\n        >\n          <ChevronRightIcon :size=\"30\" />\n        </button>\n      </div>\n    </div>\n    <slot name=\"list-inline\" />\n    <router-link\n      v-if=\"buttonText\"\n      class=\"btn btn-primary align-self-center w-fit-content m-4\"\n      :to=\"refTo\"\n      @click=\"handleSeeMoreButton\"\n    >\n      {{ buttonText }}\n      <PlusIcon v-if=\"buttonPlus\" :size=\"16\" class=\"ms-1\" />\n    </router-link>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport PlusIcon from \"vue-material-design-icons/Plus.vue\";\nimport ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ChevronRightIcon from \"vue-material-design-icons/ChevronRight.vue\";\nimport { useRubriquesFilterComputed } from \"../../composable/route/useRubriquesFilterComputed\";\nimport { useRubriquesFilterParam } from \"../../composable/route/useRubriquesFilterParam\";\nimport { RubriquageFilter } from \"@/stores/class/rubrique/rubriquageFilter\";\nimport { computed } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n  displayArrow: { default: true, type: Boolean },\n  previousAvailable: { default: false, type: Boolean },\n  nextAvailable: { default: false, type: Boolean },\n  popularSort: { default: false, type: Boolean },\n  buttonText: { default: undefined, type: String },\n  buttonPlus: { default: false, type: Boolean },\n  title: { default: \"\", type: String },\n  href: { default: undefined, type: String },\n  iabId: { default: undefined, type: Number },\n  rubriqueId: { default: () => [], type: Array as () => Array<number> },\n  noRubriquageId: { default: () => [], type: Array as () => Array<number> },\n  podcastId: { default: undefined, type: Number },\n  titleTag: { default: \"h2\", type: String },\n  /** Hide sort options */\n  noSort: { default: false, type: Boolean }\n})\n\n//Emits\nconst emit = defineEmits([\"sortChrono\", \"sortPopular\", \"displayPrevious\", \"displayNext\"]);\n\n//Composables\nconst { t } = useI18n();\nconst { returnRubriquesFilter } = useRubriquesFilterParam();\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst filterStore = useFilterStore();\nconst router = useRouter();\nconst route = useRoute();\n\n\n//Computed\nconst refTo = computed(() => {\n  if (props.href) return props.href;\n  if (props.iabId) {\n    return {\n      name: \"category\",\n      params: { iabId: props.iabId },\n    };\n  }\n  return {\n    name: \"podcasts\",\n    query: {\n      iabId: filterStore.filterIab?.id,\n      rubriquesId: rubriqueQueryParam.value,\n      productor: filterStore.filterOrgaId\n    },\n  };\n});\n\n//Methods\nfunction sortChrono(): void {\n  emit(\"sortChrono\");\n}\nfunction sortPopular(): void {\n  emit(\"sortPopular\");\n}\nfunction displayPrevious(): void {\n  emit(\"displayPrevious\");\n}\nfunction displayNext(): void {\n  emit(\"displayNext\");\n}\nfunction handleSeeMoreButton(event: { preventDefault: () => void }) {\n  if (props.href ||\n    !props.rubriqueId ||\n    0 === props.rubriqueId.length ||\n    props.noRubriquageId.length\n  ) {\n    return;\n  }\n  event.preventDefault();\n  const rubriqueChosenId = props.rubriqueId.at(-1);\n  let filterToAdd: RubriquageFilter|undefined;\n  if (filterStore.filterRubriquage.length) {\n    for (let i = 0, len = filterStore.filterRubriquage.length; i < len; i++) {\n      const rubriqueChosen = filterStore.filterRubriquage[i].rubriques.find(\n        (element: Rubrique) => element.rubriqueId === rubriqueChosenId,\n      );\n      if (rubriqueChosen) {\n        filterToAdd = {\n          rubriquageId: filterStore.filterRubriquage[i].rubriquageId ?? 0,\n          rubriqueId: rubriqueChosenId,\n          nameRubriquage: filterStore.filterRubriquage[i].title,\n          nameRubrique: rubriqueChosen.name,\n        };\n        break;\n      }\n    }\n  }\n  if(!filterToAdd){return;}\n  const queries = returnRubriquesFilter((a) => {\n    const indexRubriquage = a.findIndex(filter => filter.rubriquageId === filterToAdd.rubriquageId);\n    if (indexRubriquage === -1) {\n      a.push(filterToAdd);\n    } else {\n      a[indexRubriquage] = filterToAdd;\n    }\n    return a;\n  })\n  router.push({\n    name: \"podcasts\",\n    query: {...route.query, ...queries}\n  });\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .podcast-inline-container {\n  display: flex;\n  flex-direction: column;\n  padding: 1rem;\n\n  @media (width <= 450px) {\n    padding: 1rem 0;\n  }\n}\n</style>\n"],"mappings":"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"}