{"version":3,"file":"EmissionPage-DwCSm-ei.mjs","names":[],"sources":["../src/components/pages/EmissionPage.vue","../src/components/pages/EmissionPage.vue"],"sourcesContent":["<template>\n  <section class=\"page-box\">\n    <template v-if=\"loaded && !error && emission\">\n      <PodcastmakerHeader\n        v-if=\"isPodcastmaker\"\n        :page-title=\"useEmissionTitle ? emission.name : t('Emission')\"\n        :img-url=\"emission.imageUrl\"\n      />\n      <div\n        class=\"d-flex flex-column page-element\"\n        :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n      >\n        <section class=\"module-box\">\n          <slot\n            v-if=\"editRight && !isPodcastmaker\"\n            name=\"edit-box\"\n            :emission=\"emission\"\n            :on-updated=\"getEmissionDetails\"\n          />\n\n          <div class=\"w-100 mb-2\">\n            <img\n              v-lazy=\"useProxyImageUrl(emission.imageUrl, '250')\"\n              width=\"250\"\n              height=\"250\"\n              aria-hidden=\"true\"\n              alt=\"\"\n              :title=\"t('Emission name image', { name })\"\n              class=\"img-box img-box-podcast mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start me-3\"\n            >\n\n            <div class=\"d-flex align-items-center justify-content-between\">\n              <h2>\n                <RightsIndicator\n                  inline\n                  :emission=\"emission\"\n                  action=\"edit\"\n                />\n                {{ name }}\n              </h2>\n              <ShareAnonymous\n                v-if=\"!editRight\"\n                class=\"d-flex justify-content-end flex-grow-1\"\n                :emission=\"emission\"\n                :organisation-id=\"emission.orga.id\"\n              />\n            </div>\n            <h3 v-if=\"showSubtitle\" class=\"text-secondary\">\n              {{ emission.annotations.subtitle }}\n            </h3>\n\n            <!-- eslint-disable vue/no-v-html -->\n            <p\n              class=\"html-wysiwyg-content description-text\"\n              v-html=\"urlify(description)\"\n            />\n            <!-- eslint-enable -->\n\n            <ErrorMessage v-if=\"emission.visible === false\">\n              <div class=\"d-flex\" style=\"align-items: center\">\n                <div>{{ t('Emission - Not available for listeners') }}</div>\n\n                <ClassicHelpButton relative-class=\"page-element\" small>\n                  {{ t('Emission - Not available explanation') }}\n                </ClassicHelpButton>\n              </div>\n            </ErrorMessage>\n\n            <div v-if=\"lastPodcast\" class=\"d-flex align-items-center mt-3\">\n              <PodcastPlayButton\n                :podcast=\"lastPodcast\"\n                :just-buttons=\"true\"\n              />\n              <div class=\"ms-2 fw-bold\">\n                {{ messageListenEpisode }}\n              </div>\n            </div>\n\n            <!-- Tag list -->\n            <TagList\n              v-if=\"showTags\"\n              :tag-list=\"emission.tags\"\n              :orga-id=\"authOrgaId\"\n              :emission-annotations=\"emission.annotations\"\n              :max=\"state.emissionPage.maxTags\"\n            />\n\n            <SubscribeButtons\n              v-if=\"isPodcastmaker\"\n              class=\"mt-4\"\n              :content=\"emission\"\n              :window-width=\"1000\"\n              :justify-center=\"false\"\n            />\n          </div>\n        </section>\n        <ShareSocialsButtons\n          v-if=\"state.emissionPage.ShareButtons\"\n          :organisation-id=\"emission.orga.id\"\n        />\n        <SharePlayer\n          v-if=\"!isPodcastmaker && editRight\"\n          :emission=\"emission\"\n          :organisation-id=\"authOrgaId\"\n        />\n        <section class=\"module-box\">\n          <LiveHorizontalList\n            v-if=\"!isPodcastmaker\"\n            class=\"mx-2\"\n            :emission-id=\"emissionId\"\n          />\n          <PodcastFilterList\n            v-if=\"isInit\"\n            v-model:query=\"searchPattern\"\n            class=\"mx-2\"\n            :first=\"paginateFirst\"\n            :size=\"ps\"\n            :show-count=\"true\"\n            :emission-id=\"emissionId\"\n            :emission=\"emission\"\n            :category-filter=\"false\"\n            :edit-right=\"editRight\"\n            :productor-id=\"[emission.orga.id]\"\n            :force-update-parameters=\"true\"\n            @fetch=\"podcastsFetched\"\n          />\n        </section>\n\n        <slot name=\"bottom\" v-bind=\"{ emission }\" />\n      </div>\n    </template>\n    <ClassicLoading\n      :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n      :error-text=\"error ? t(`Emission doesn't exist`) : undefined\"\n    />\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport ErrorMessage from \"../misc/ErrorMessage.vue\";\nimport ClassicHelpButton from \"../misc/ClassicHelpButton.vue\";\nimport { emissionApi } from \"../../api/emissionApi\";\nimport { useSeasonsManagement } from \"../composable/useSeasonsManagement\";\nimport RightsIndicator from \"../display/RightsIndicator.vue\"; \n\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\nconst PodcastFilterList = defineAsyncComponent(\n  () => import(\"../display/podcasts/PodcastFilterList.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n  () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst ShareSocialsButtons = defineAsyncComponent(\n  () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n  () => import(\"../display/sharing/SubscribeButtons.vue\"),\n);\nconst LiveHorizontalList = defineAsyncComponent(\n  () => import(\"../display/live/LiveHorizontalList.vue\"),\n);\nconst PodcastPlayButton = defineAsyncComponent(\n  () => import(\"../display/podcasts/PodcastPlayButton.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n  () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst TagList = defineAsyncComponent(() => import(\"../display/podcasts/TagList.vue\"));\n\n\n//Props \nconst props = withDefaults(defineProps<{\n  emissionId: number;\n  pr?: number;\n  ps?: number;\n  routeQuery?: string;\n  /** When true, display emission title in podcastmaker header */\n  useEmissionTitle?: boolean;\n}>(), {\n  pr: 0,\n  ps: 30,\n  routeQuery: ''\n});\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst emission: Ref<Emission | undefined> = ref(undefined);\nconst lastPodcast: Ref<Podcast | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst { handle403 } = useErrorHandler();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst route = useRoute();\nconst {\n  searchPattern,\n  paginateFirst,\n  isInit\n} = useSimplePageParam(props, true);\nconst { areSeasonsEnabled, formatSeason, getMaxSeason } = useSeasonsManagement();\n\n\n//Computed\nconst name = computed(() => emission.value?.name ?? \"\");\nconst description = computed(() => emission.value?.description ?? \"\");\nconst editRight = computed(() => isEditRights(emission.value?.orga.id));\n\nconst messageListenEpisode = computed((): string => {\n  const base = t(\"Listen to the latest episode\");\n  if (lastPodcast.value !== undefined && areSeasonsEnabled(emission.value)) {\n    return base + ` (${formatSeason(lastPodcast.value)})`;\n  } else {\n    return base;\n  }\n});\n\n//Watch\nwatch(() => props.emissionId, getEmissionDetails, { immediate: true });\n\n\nonBeforeUnmount(() => {\n  generalStore.contentToDisplayUpdate(null);\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n  return displayHelper.urlify(text);\n}\nfunction initError(): void {\n  error.value = true;\n  loaded.value = true;\n}\nasync function getEmissionDetails(): Promise<void> {\n  loaded.value = false;\n  error.value = false;\n  try {\n    emission.value = await emissionApi.get(props.emissionId);\n    filterStore.updateOrgaIfNecessary(emission.value.orga.id);\n    if (\n      \"PUBLIC\" !== emission.value.orga.privacy &&\n      filterStore.filterOrgaId !== emission.value.orga.id &&\n      route.query.productor !== emission.value.orga.id\n    ) {\n      initError();\n      return;\n    }\n    generalStore.contentToDisplayUpdate(emission.value);\n    updatePathParams(name.value);\n    loaded.value = true;\n  } catch (error) {\n    handle403(error as AxiosError);\n    initError();\n  }\n}\n\nfunction isReadyAndVisibleAndValid(p: Podcast): boolean {\n  return \"READY\" === p.processingStatus && p.availability.visibility && p.valid === true;\n}\n\nfunction podcastsFetched(podcasts: Array<Podcast>, season: number|undefined) {\n\n  if (areSeasonsEnabled(emission.value)) {\n    // Ignore results that are not from the last season\n    const maxSeason = getMaxSeason(emission.value);\n    if (season !== undefined && season !== maxSeason) {\n      return;\n    }\n    // If seasons are enabled, take last element\n    lastPodcast.value = podcasts.findLast(isReadyAndVisibleAndValid);\n  } else {\n    // If seasons are disabled, we have a standard date desc sort, so we take\n    // first element\n    lastPodcast.value = podcasts.find(isReadyAndVisibleAndValid);\n  }\n}\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n  return emission.value.annotations?.subtitle && state.emissionPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show tags */\nconst showTags = computed((): boolean => {\n  if (state.emissionPage?.hideTags === true) {\n    return false;\n  }\n\n  return undefined !== emission.value.tags && 0 !== emission.value.tags.length;\n});\n</script>\n","<template>\n  <section class=\"page-box\">\n    <template v-if=\"loaded && !error && emission\">\n      <PodcastmakerHeader\n        v-if=\"isPodcastmaker\"\n        :page-title=\"useEmissionTitle ? emission.name : t('Emission')\"\n        :img-url=\"emission.imageUrl\"\n      />\n      <div\n        class=\"d-flex flex-column page-element\"\n        :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n      >\n        <section class=\"module-box\">\n          <slot\n            v-if=\"editRight && !isPodcastmaker\"\n            name=\"edit-box\"\n            :emission=\"emission\"\n            :on-updated=\"getEmissionDetails\"\n          />\n\n          <div class=\"w-100 mb-2\">\n            <img\n              v-lazy=\"useProxyImageUrl(emission.imageUrl, '250')\"\n              width=\"250\"\n              height=\"250\"\n              aria-hidden=\"true\"\n              alt=\"\"\n              :title=\"t('Emission name image', { name })\"\n              class=\"img-box img-box-podcast mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start me-3\"\n            >\n\n            <div class=\"d-flex align-items-center justify-content-between\">\n              <h2>\n                <RightsIndicator\n                  inline\n                  :emission=\"emission\"\n                  action=\"edit\"\n                />\n                {{ name }}\n              </h2>\n              <ShareAnonymous\n                v-if=\"!editRight\"\n                class=\"d-flex justify-content-end flex-grow-1\"\n                :emission=\"emission\"\n                :organisation-id=\"emission.orga.id\"\n              />\n            </div>\n            <h3 v-if=\"showSubtitle\" class=\"text-secondary\">\n              {{ emission.annotations.subtitle }}\n            </h3>\n\n            <!-- eslint-disable vue/no-v-html -->\n            <p\n              class=\"html-wysiwyg-content description-text\"\n              v-html=\"urlify(description)\"\n            />\n            <!-- eslint-enable -->\n\n            <ErrorMessage v-if=\"emission.visible === false\">\n              <div class=\"d-flex\" style=\"align-items: center\">\n                <div>{{ t('Emission - Not available for listeners') }}</div>\n\n                <ClassicHelpButton relative-class=\"page-element\" small>\n                  {{ t('Emission - Not available explanation') }}\n                </ClassicHelpButton>\n              </div>\n            </ErrorMessage>\n\n            <div v-if=\"lastPodcast\" class=\"d-flex align-items-center mt-3\">\n              <PodcastPlayButton\n                :podcast=\"lastPodcast\"\n                :just-buttons=\"true\"\n              />\n              <div class=\"ms-2 fw-bold\">\n                {{ messageListenEpisode }}\n              </div>\n            </div>\n\n            <!-- Tag list -->\n            <TagList\n              v-if=\"showTags\"\n              :tag-list=\"emission.tags\"\n              :orga-id=\"authOrgaId\"\n              :emission-annotations=\"emission.annotations\"\n              :max=\"state.emissionPage.maxTags\"\n            />\n\n            <SubscribeButtons\n              v-if=\"isPodcastmaker\"\n              class=\"mt-4\"\n              :content=\"emission\"\n              :window-width=\"1000\"\n              :justify-center=\"false\"\n            />\n          </div>\n        </section>\n        <ShareSocialsButtons\n          v-if=\"state.emissionPage.ShareButtons\"\n          :organisation-id=\"emission.orga.id\"\n        />\n        <SharePlayer\n          v-if=\"!isPodcastmaker && editRight\"\n          :emission=\"emission\"\n          :organisation-id=\"authOrgaId\"\n        />\n        <section class=\"module-box\">\n          <LiveHorizontalList\n            v-if=\"!isPodcastmaker\"\n            class=\"mx-2\"\n            :emission-id=\"emissionId\"\n          />\n          <PodcastFilterList\n            v-if=\"isInit\"\n            v-model:query=\"searchPattern\"\n            class=\"mx-2\"\n            :first=\"paginateFirst\"\n            :size=\"ps\"\n            :show-count=\"true\"\n            :emission-id=\"emissionId\"\n            :emission=\"emission\"\n            :category-filter=\"false\"\n            :edit-right=\"editRight\"\n            :productor-id=\"[emission.orga.id]\"\n            :force-update-parameters=\"true\"\n            @fetch=\"podcastsFetched\"\n          />\n        </section>\n\n        <slot name=\"bottom\" v-bind=\"{ emission }\" />\n      </div>\n    </template>\n    <ClassicLoading\n      :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n      :error-text=\"error ? t(`Emission doesn't exist`) : undefined\"\n    />\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport ErrorMessage from \"../misc/ErrorMessage.vue\";\nimport ClassicHelpButton from \"../misc/ClassicHelpButton.vue\";\nimport { emissionApi } from \"../../api/emissionApi\";\nimport { useSeasonsManagement } from \"../composable/useSeasonsManagement\";\nimport RightsIndicator from \"../display/RightsIndicator.vue\"; \n\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\nconst PodcastFilterList = defineAsyncComponent(\n  () => import(\"../display/podcasts/PodcastFilterList.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n  () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst ShareSocialsButtons = defineAsyncComponent(\n  () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n  () => import(\"../display/sharing/SubscribeButtons.vue\"),\n);\nconst LiveHorizontalList = defineAsyncComponent(\n  () => import(\"../display/live/LiveHorizontalList.vue\"),\n);\nconst PodcastPlayButton = defineAsyncComponent(\n  () => import(\"../display/podcasts/PodcastPlayButton.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n  () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst TagList = defineAsyncComponent(() => import(\"../display/podcasts/TagList.vue\"));\n\n\n//Props \nconst props = withDefaults(defineProps<{\n  emissionId: number;\n  pr?: number;\n  ps?: number;\n  routeQuery?: string;\n  /** When true, display emission title in podcastmaker header */\n  useEmissionTitle?: boolean;\n}>(), {\n  pr: 0,\n  ps: 30,\n  routeQuery: ''\n});\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst emission: Ref<Emission | undefined> = ref(undefined);\nconst lastPodcast: Ref<Podcast | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst { handle403 } = useErrorHandler();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst route = useRoute();\nconst {\n  searchPattern,\n  paginateFirst,\n  isInit\n} = useSimplePageParam(props, true);\nconst { areSeasonsEnabled, formatSeason, getMaxSeason } = useSeasonsManagement();\n\n\n//Computed\nconst name = computed(() => emission.value?.name ?? \"\");\nconst description = computed(() => emission.value?.description ?? \"\");\nconst editRight = computed(() => isEditRights(emission.value?.orga.id));\n\nconst messageListenEpisode = computed((): string => {\n  const base = t(\"Listen to the latest episode\");\n  if (lastPodcast.value !== undefined && areSeasonsEnabled(emission.value)) {\n    return base + ` (${formatSeason(lastPodcast.value)})`;\n  } else {\n    return base;\n  }\n});\n\n//Watch\nwatch(() => props.emissionId, getEmissionDetails, { immediate: true });\n\n\nonBeforeUnmount(() => {\n  generalStore.contentToDisplayUpdate(null);\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n  return displayHelper.urlify(text);\n}\nfunction initError(): void {\n  error.value = true;\n  loaded.value = true;\n}\nasync function getEmissionDetails(): Promise<void> {\n  loaded.value = false;\n  error.value = false;\n  try {\n    emission.value = await emissionApi.get(props.emissionId);\n    filterStore.updateOrgaIfNecessary(emission.value.orga.id);\n    if (\n      \"PUBLIC\" !== emission.value.orga.privacy &&\n      filterStore.filterOrgaId !== emission.value.orga.id &&\n      route.query.productor !== emission.value.orga.id\n    ) {\n      initError();\n      return;\n    }\n    generalStore.contentToDisplayUpdate(emission.value);\n    updatePathParams(name.value);\n    loaded.value = true;\n  } catch (error) {\n    handle403(error as AxiosError);\n    initError();\n  }\n}\n\nfunction isReadyAndVisibleAndValid(p: Podcast): boolean {\n  return \"READY\" === p.processingStatus && p.availability.visibility && p.valid === true;\n}\n\nfunction podcastsFetched(podcasts: Array<Podcast>, season: number|undefined) {\n\n  if (areSeasonsEnabled(emission.value)) {\n    // Ignore results that are not from the last season\n    const maxSeason = getMaxSeason(emission.value);\n    if (season !== undefined && season !== maxSeason) {\n      return;\n    }\n    // If seasons are enabled, take last element\n    lastPodcast.value = podcasts.findLast(isReadyAndVisibleAndValid);\n  } else {\n    // If seasons are disabled, we have a standard date desc sort, so we take\n    // first element\n    lastPodcast.value = podcasts.find(isReadyAndVisibleAndValid);\n  }\n}\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n  return emission.value.annotations?.subtitle && state.emissionPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show tags */\nconst showTags = computed((): boolean => {\n  if (state.emissionPage?.hideTags === true) {\n    return false;\n  }\n\n  return undefined !== emission.value.tags && 0 !== emission.value.tags.length;\n});\n</script>\n"],"mappings":"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"}