{"version":3,"file":"EmissionInlineList-D2M5WZYK.mjs","names":[],"sources":["../src/components/display/emission/EmissionInlineList.vue","../src/components/display/emission/EmissionInlineList.vue"],"sourcesContent":["<template>\n  <div class=\"d-flex flex-column list-episode\">\n    <h2 v-if=\"title\" class=\"mb-0\">\n      {{ title }}\n    </h2>\n    <ClassicLoading\n      :loading-text=\"loading ? t('Loading emissions ...') : undefined\"\n    />\n    <SwiperList\n      v-if=\"(displayRubriquage && rubriques) || !(displayRubriquage && loaded)\"\n      :size-item-overload=\"sizeItemOverload\"\n      :list-object=\"allEmissions\"\n    >\n      <template #octopusSlide=\"{ option }\">\n        <EmissionPresentationItem\n          v-if=\"emissionDisplay === 'simple'\"\n          :emission=\"option\"\n          class=\"inline-list-element\"\n          is-description\n          :is-vertical=\"emissionVertical\"\n        />\n\n        <EmissionPlayerItem\n          v-else\n          class=\"flex-shrink-0 item-phone-margin\"\n          :emission=\"option\"\n          :class=\"[mainRubriquage(option)]\"\n          :nb-podcasts=\"nbPodcasts\"\n          :rubrique-name=\"rubriquesId(option)\"\n        />\n      </template>\n    </SwiperList>\n    <router-link\n      v-if=\"href\"\n      :to=\"href\"\n      class=\"btn btn-primary align-self-center w-fit-content m-4\"\n    >\n      {{ buttonText }}\n    </router-link>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport SwiperList from \"../list/SwiperList.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport EmissionPresentationItem from \"./EmissionPresentationItem.vue\";\nimport EmissionPlayerItem from \"./EmissionPlayerItem.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { computed, onMounted, Ref, ref } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\nimport { RouteParams } from \"vue-router\";\n\n//Props \nconst props = defineProps<{\n  /**\n   * Change style of emission item.\n   * Simple is what is seen everywhere, player displays a few podcasts that can\n   * be played directly\n   */\n  emissionDisplay?: 'player'|'simple';\n  /** When set to true with the 'simple' emissionDisplay, display emissions vertically */\n  emissionVertical?: boolean;\n  href?: string|RouteParams;\n  buttonText?: string;\n  /** Number of podcasts shown when using player display */\n  nbPodcasts?: number;\n  /** Size, in **rem**, of the emission items */\n  itemSize?: number;\n  /** Filter on organization */\n  organisationId?: string;\n  /** Filter on rubrique */\n  rubriqueId?: number;\n  /** Filter on rubriquage */\n  rubriquageId?: number;\n  /** Title of the section */\n  title?: string;\n}>();\n\n\n//Data \nconst loading = ref(true);\nconst allEmissions: Ref<Array<Emission>> = ref([]);\nconst rubriques: Ref<Array<Rubrique> | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\n\n\n//Computed\nconst displayRubriquage = computed(() => state.emissionsPage.rubriquage);\n \nconst sizeItemOverload = computed(() => {\n  if (props.itemSize) {\n    return props.itemSize;\n  } else if (props.emissionDisplay === 'simple') {\n    return 25;\n  } else {\n    return undefined;\n  }\n})\n\nonMounted(()=>{\n  fetchNext();\n  if (displayRubriquage.value) {\n    fetchRubriques();\n  }\n})\n\n//Methods\nasync function fetchNext(): Promise<void> {\n  try {\n    const data = await classicApi.fetchData<ListClassicReturn<Emission>>({\n      api: 0,\n      path: \"emission/search\",\n      parameters: {\n        first: 0,\n        size: 12,\n        organisationId: props.organisationId,\n        rubriqueId: props.rubriqueId ? [props.rubriqueId] : [],\n        rubriquageId: props.rubriquageId ? [props.rubriquageId] : [],\n        sort: \"LAST_PODCAST_DESC\",\n      },\n      specialTreatement: true,\n    });\n    allEmissions.value = allEmissions.value.concat(\n      data.result.filter((em: Emission | null) => null !== em),\n    );\n    loading.value = false;\n  } catch (error) {\n    handle403(error as AxiosError);\n  }\n}\nasync function fetchRubriques(): Promise<void> {\n  const data = await classicApi.fetchData<Rubriquage>({\n    api: 0,\n    path: \"rubriquage/\" + displayRubriquage.value,\n  });\n  rubriques.value = data.rubriques;\n}\n\nfunction rubriquesId(emission: Emission): string | undefined {\n  if (\n    !displayRubriquage.value ||\n    !emission.rubriqueIds ||\n    0 === emission.rubriqueIds.length ||\n    !rubriques.value ||\n    !rubriques.value.length\n  ) {\n    return undefined;\n  }\n\n  const rubrique = rubriques.value.find(\n    (element: Rubrique) =>\n      element.rubriqueId &&\n      emission.rubriqueIds.includes(element.rubriqueId) &&\n      element.rubriquageId === displayRubriquage.value,\n  );\n  if (rubrique) {\n    return rubrique.name;\n  }\n}\n\nfunction mainRubriquage(emission: Emission): string {\n  return state.emissionsPage.mainRubrique &&\n    emission.rubriqueIds?.includes(state.emissionsPage.mainRubrique)\n    ? \"partenaireRubrique\"\n    : \"\";\n}\n</script>\n\n<style scoped lang=\"scss\">\n.list-episode {\n  padding: 2rem 0 1rem;\n\n  @media (width <= 450px) {\n    padding: 0.5rem 0 1rem;\n  }\n\n  h2 {\n    margin-bottom: 1rem;\n  }\n}\n\n.inline-list-element {\n  @media (width <= 960px) {\n    height: 334px;\n  }\n}\n</style>\n","<template>\n  <div class=\"d-flex flex-column list-episode\">\n    <h2 v-if=\"title\" class=\"mb-0\">\n      {{ title }}\n    </h2>\n    <ClassicLoading\n      :loading-text=\"loading ? t('Loading emissions ...') : undefined\"\n    />\n    <SwiperList\n      v-if=\"(displayRubriquage && rubriques) || !(displayRubriquage && loaded)\"\n      :size-item-overload=\"sizeItemOverload\"\n      :list-object=\"allEmissions\"\n    >\n      <template #octopusSlide=\"{ option }\">\n        <EmissionPresentationItem\n          v-if=\"emissionDisplay === 'simple'\"\n          :emission=\"option\"\n          class=\"inline-list-element\"\n          is-description\n          :is-vertical=\"emissionVertical\"\n        />\n\n        <EmissionPlayerItem\n          v-else\n          class=\"flex-shrink-0 item-phone-margin\"\n          :emission=\"option\"\n          :class=\"[mainRubriquage(option)]\"\n          :nb-podcasts=\"nbPodcasts\"\n          :rubrique-name=\"rubriquesId(option)\"\n        />\n      </template>\n    </SwiperList>\n    <router-link\n      v-if=\"href\"\n      :to=\"href\"\n      class=\"btn btn-primary align-self-center w-fit-content m-4\"\n    >\n      {{ buttonText }}\n    </router-link>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport SwiperList from \"../list/SwiperList.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport EmissionPresentationItem from \"./EmissionPresentationItem.vue\";\nimport EmissionPlayerItem from \"./EmissionPlayerItem.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { computed, onMounted, Ref, ref } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\nimport { RouteParams } from \"vue-router\";\n\n//Props \nconst props = defineProps<{\n  /**\n   * Change style of emission item.\n   * Simple is what is seen everywhere, player displays a few podcasts that can\n   * be played directly\n   */\n  emissionDisplay?: 'player'|'simple';\n  /** When set to true with the 'simple' emissionDisplay, display emissions vertically */\n  emissionVertical?: boolean;\n  href?: string|RouteParams;\n  buttonText?: string;\n  /** Number of podcasts shown when using player display */\n  nbPodcasts?: number;\n  /** Size, in **rem**, of the emission items */\n  itemSize?: number;\n  /** Filter on organization */\n  organisationId?: string;\n  /** Filter on rubrique */\n  rubriqueId?: number;\n  /** Filter on rubriquage */\n  rubriquageId?: number;\n  /** Title of the section */\n  title?: string;\n}>();\n\n\n//Data \nconst loading = ref(true);\nconst allEmissions: Ref<Array<Emission>> = ref([]);\nconst rubriques: Ref<Array<Rubrique> | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\n\n\n//Computed\nconst displayRubriquage = computed(() => state.emissionsPage.rubriquage);\n \nconst sizeItemOverload = computed(() => {\n  if (props.itemSize) {\n    return props.itemSize;\n  } else if (props.emissionDisplay === 'simple') {\n    return 25;\n  } else {\n    return undefined;\n  }\n})\n\nonMounted(()=>{\n  fetchNext();\n  if (displayRubriquage.value) {\n    fetchRubriques();\n  }\n})\n\n//Methods\nasync function fetchNext(): Promise<void> {\n  try {\n    const data = await classicApi.fetchData<ListClassicReturn<Emission>>({\n      api: 0,\n      path: \"emission/search\",\n      parameters: {\n        first: 0,\n        size: 12,\n        organisationId: props.organisationId,\n        rubriqueId: props.rubriqueId ? [props.rubriqueId] : [],\n        rubriquageId: props.rubriquageId ? [props.rubriquageId] : [],\n        sort: \"LAST_PODCAST_DESC\",\n      },\n      specialTreatement: true,\n    });\n    allEmissions.value = allEmissions.value.concat(\n      data.result.filter((em: Emission | null) => null !== em),\n    );\n    loading.value = false;\n  } catch (error) {\n    handle403(error as AxiosError);\n  }\n}\nasync function fetchRubriques(): Promise<void> {\n  const data = await classicApi.fetchData<Rubriquage>({\n    api: 0,\n    path: \"rubriquage/\" + displayRubriquage.value,\n  });\n  rubriques.value = data.rubriques;\n}\n\nfunction rubriquesId(emission: Emission): string | undefined {\n  if (\n    !displayRubriquage.value ||\n    !emission.rubriqueIds ||\n    0 === emission.rubriqueIds.length ||\n    !rubriques.value ||\n    !rubriques.value.length\n  ) {\n    return undefined;\n  }\n\n  const rubrique = rubriques.value.find(\n    (element: Rubrique) =>\n      element.rubriqueId &&\n      emission.rubriqueIds.includes(element.rubriqueId) &&\n      element.rubriquageId === displayRubriquage.value,\n  );\n  if (rubrique) {\n    return rubrique.name;\n  }\n}\n\nfunction mainRubriquage(emission: Emission): string {\n  return state.emissionsPage.mainRubrique &&\n    emission.rubriqueIds?.includes(state.emissionsPage.mainRubrique)\n    ? \"partenaireRubrique\"\n    : \"\";\n}\n</script>\n\n<style scoped lang=\"scss\">\n.list-episode {\n  padding: 2rem 0 1rem;\n\n  @media (width <= 450px) {\n    padding: 0.5rem 0 1rem;\n  }\n\n  h2 {\n    margin-bottom: 1rem;\n  }\n}\n\n.inline-list-element {\n  @media (width <= 960px) {\n    height: 334px;\n  }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DA,MAAM,QAAQ;EA2Bd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,eAAqC,IAAI,CAAC,CAAC;EACjD,MAAM,YAA8C,IAAI,KAAA,CAAS;EAIjE,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAC,cAAa,gBAAgB;EAIpC,MAAM,oBAAoB,eAAe,MAAM,cAAc,UAAU;EAEvE,MAAM,mBAAmB,eAAe;GACtC,IAAI,MAAM,UACR,OAAO,MAAM;QACR,IAAI,MAAM,oBAAoB,UACnC,OAAO;QAEP;EAEJ,CAAC;EAED,gBAAc;GACZ,UAAU;GACV,IAAI,kBAAkB,OACpB,eAAe;EAEnB,CAAC;EAGD,eAAe,YAA2B;GACxC,IAAI;IACF,MAAM,OAAO,MAAM,mBAAW,UAAuC;KACnE,KAAK;KACL,MAAM;KACN,YAAY;MACV,OAAO;MACP,MAAM;MACN,gBAAgB,MAAM;MACtB,YAAY,MAAM,aAAa,CAAC,MAAM,UAAU,IAAI,CAAC;MACrD,cAAc,MAAM,eAAe,CAAC,MAAM,YAAY,IAAI,CAAC;MAC3D,MAAM;KACR;KACA,mBAAmB;IACrB,CAAC;IACD,aAAa,QAAQ,aAAa,MAAM,OACtC,KAAK,OAAO,QAAQ,OAAwB,SAAS,EAAE,CACzD;IACA,QAAQ,QAAQ;GAClB,SAAS,OAAO;IACd,UAAU,KAAmB;GAC/B;EACF;EACA,eAAe,iBAAgC;GAK7C,UAAU,SAAQ,MAJC,mBAAW,UAAsB;IAClD,KAAK;IACL,MAAM,gBAAgB,kBAAkB;GAC1C,CAAC,GACsB;EACzB;EAEA,SAAS,YAAY,UAAwC;GAC3D,IACE,CAAC,kBAAkB,SACnB,CAAC,SAAS,eACV,MAAM,SAAS,YAAY,UAC3B,CAAC,UAAU,SACX,CAAC,UAAU,MAAM,QAEjB;GAGF,MAAM,WAAW,UAAU,MAAM,MAC9B,YACC,QAAQ,cACR,SAAS,YAAY,SAAS,QAAQ,UAAU,KAChD,QAAQ,iBAAiB,kBAAkB,KAC/C;GACA,IAAI,UACF,OAAO,SAAS;EAEpB;EAEA,SAAS,eAAe,UAA4B;GAClD,OAAO,MAAM,cAAc,gBACzB,SAAS,aAAa,SAAS,MAAM,cAAc,YAAY,IAC7D,uBACA;EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBC/KO,OAAM,kCAAiC;;;CACzB,OAAM;;;;qBADzB,mBAsCM,OAtCN,YAsCM;EArCM,OAAA,SAAA,UAAA,GAAV,mBAEK,MAFL,YAEK,gBADA,OAAA,KAAK,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;EAEV,YAEE,OAAA,mBAAA,EADC,gBAAc,OAAA,UAAU,OAAA,EAAC,uBAAA,IAA4B,KAAA,EAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA;EAG/C,OAAA,qBAAqB,OAAA,aAAS,EAAO,OAAA,qBAAqB,KAAA,WAAA,UAAA,GADnE,YAuBa,OAAA,eAAA;;GArBV,sBAAoB,OAAA;GACpB,eAAa,OAAA;;GAEH,cAAY,SAOnB,EAPuB,aAAM,CAEvB,OAAA,oBAAe,YAAA,UAAA,GADvB,YAME,OAAA,6BAAA;;IAJC,UAAU;IACX,OAAM;IACN,kBAAA;IACC,eAAa,OAAA;6DAGhB,YAOE,OAAA,uBAAA;;IALA,OAAK,eAAA,CAAC,mCAAiC,CAE9B,OAAA,eAAe,MAAM,CAAA,CAAA,CAAA;IAD7B,UAAU;IAEV,eAAa,OAAA;IACb,iBAAe,OAAA,YAAY,MAAM;;;;;;;;;EAKhC,OAAA,QAAA,UAAA,GADR,YAMc,wBAAA;;GAJX,IAAI,OAAA;GACL,OAAM;;0BAEU,CAAA,gBAAA,gBAAb,OAAA,UAAU,GAAA,CAAA,CAAA,CAAA"}