{"version":3,"file":"PodcastPage-R4JMH7QG.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/pages/PodcastPage.vue","../src/components/pages/PodcastPage.vue"],"sourcesContent":["<template>\n  <section v-if=\"podcast\" class=\"module-box\">\n    <slot\n      v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n      name=\"recording-item-button\"\n      :podcast=\"podcast\"\n      :live=\"true\"\n      :recording=\"podcastConference\"\n      :on-delete-item=\"removeDeleted\"\n      :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n    />\n    <slot\n      v-else-if=\"editRight && isEditBox\"\n      name=\"edit-box\"\n      :podcast=\"podcast\"\n      :display-studio-access=\"isDebriefing\"\n      :on-update-transcription=\"resetTranscription\"\n      :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n    />\n    <div class=\"mb-2 w-100\">\n      <PodcastImage\n        :class=\"[\n          isLiveReadyToRecord &&\n          podcastConference &&\n          'null' !== podcastConference &&\n          podcastConference.status\n            ? podcastConference.status.toLowerCase() + '-shadow'\n            : '',\n        ]\"\n        class=\"me-3\"\n        show-processing\n        :hide-play=\"isLiveReadyToRecord\"\n        :podcast=\"podcast\"\n        :playing-podcast=\"playingPodcast\"\n        :fetch-conference=\"podcastConference\"\n        :is-animator-live=\"isOctopusAndAnimator\"\n      />\n      <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n        <time \n          v-if=\"0 !== date.length\" :class=\"!isLiveReady ? 'me-5' : ''\"\n          :datetime=\"podcast.pubDate\">\n          {{ date }}\n        </time>\n        <div v-if=\"isLiveReady\" class=\"text-danger\">\n          {{ t(\"Episode record in live\") }}\n        </div>\n        <div class=\"d-flex flex-column align-items-end\">\n          <time :datetime=\"durationIso\">\n            {{ duration }}\n          </time>\n          <ShareAnonymous v-if=\"!editRight\" :podcast=\"podcast\" :organisation-id=\"podcast.organisation.id\"/>\n        </div>\n      </div>\n      <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n        <RightsIndicator\n          :podcast=\"podcast\"\n          action=\"edit\"\n          inline\n        />\n        {{ podcast.title }}\n      </h2>\n      <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n        {{ podcast.annotations.subtitle }}\n      </h3>\n      \n      <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n      <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n      <!-- eslint-disable vue/no-v-html -->\n      <div\n        v-if=\"showSummary\"\n        class=\"description-text html-wysiwyg-content\"\n        :class=\"{ 'mb-4': showSummary && showDescription }\"\n        v-html=\"urlify(podcast.summary)\"\n      />\n      <div\n        v-if=\"showDescription\"\n        class=\"description-text html-wysiwyg-content\"\n        v-html=\"urlify(podcast.description)\"\n      />\n      <!-- eslint-enable -->\n      <div class=\"my-3\">\n        <div class=\"mb-1\">\n          {{ t(\"Emission\") + \" : \" }}\n          <router-link\n            :to=\"{\n              name: 'emission',\n              params: { emissionId: podcast.emission.emissionId },\n            }\"\n            :title=\"t('Series name page', { name: podcast.emission.name })\"\n          >\n            {{ podcast.emission.name }}\n          </router-link>\n        </div>\n        <ParticipantDescription :participants=\"podcast.animators\" />\n        <ParticipantDescription\n          :participants=\"podcast.guests\"\n          :is-guest=\"true\"\n        />\n        <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n          {{ t(\"Producted by : \") }}\n          <router-link\n            :to=\"{\n              name: 'productor',\n              params: { productorId: podcast.organisation.id },\n            }\"\n          >\n            {{ podcast.organisation.name }}\n          </router-link>\n        </div>\n        <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n          {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n        </div>\n        <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n          {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n        </div>\n        <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n          {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n        </div>\n        <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n          {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n        </div>\n        <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n          {{ t(\"Author credits\") + \" : \" + authorCredit }}\n        </div>\n        <a\n          v-if=\"podcast.article && !authStore.isGarRole\"\n          class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n          :href=\"podcast.article\"\n          rel=\"noreferrer noopener\"\n          target=\"_blank\"\n          :title=\"t('New window', {text : t('See associated article')})\"\n        >\n          <NewspaperVariantOutlineIcon class=\"me-1\" />\n          <div>{{ t(\"See associated article\") }}</div>\n        </a>\n        <PodcastPlayBar\n          v-if=\"state.emissionsPage.progressBar\"\n          :podcast=\"podcast\"\n        />\n        <div v-if=\"editRight && !isPodcastmaker\">\n          <div\n            v-if=\"\n              podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n            \"\n            class=\"me-5 text-secondary\"\n          >\n            {{ t(\"From RSS\") }}\n          </div>\n          <ErrorMessage v-if=\"'' !== errorMessage\" :message=\"errorMessage\" />\n        </div>\n        <div class=\"d-flex align-items-center flex-wrap\">\n          <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n          <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n        </div>\n      </div>\n    </div>\n    <TagList\n      v-if=\"showTags\"\n      :tag-list=\"tags\"\n      :orga-id=\"podcast.organisation.id\"\n      :podcast-annotations=\"podcast.annotations\"\n      :max=\"state.podcastPage.maxTags\"\n    />\n    <PodcastRubriqueList\n      v-if=\"podcastRubriques?.length\"\n      :orga-id=\"podcast.organisation.id\"\n      :rubrique-ids=\"podcastRubriques\"\n    />\n    <PodcastRawTranscript\n      ref=\"podcastRawTranscript\"\n      :podcast-id=\"podcast.podcastId\"\n    />\n    <SubscribeButtons\n      v-if=\"isPodcastmaker\"\n      class=\"mt-4\"\n      :content=\"podcast.emission\"\n      :window-width=\"1000\"\n      :justify-center=\"false\"\n    />\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nconst ErrorMessage = defineAsyncComponent(\n  () => import(\"../../misc/ErrorMessage.vue\"),\n);\nconst PodcastPlayBar = defineAsyncComponent(\n  () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n  () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n  () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n  () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n  () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst PodcastRubriqueList = defineAsyncComponent(() => import(\"./PodcastRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n  podcast: Podcast;\n  playingPodcast?: Podcast;\n  podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n  isLiveReadyToRecord,\n  isCounter,\n  timeRemaining,\n  isPlannedInProcessor,\n  date,\n  duration,\n  durationIso,\n  isPodcastmaker,\n  editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n  let rubriques = props.podcast?.rubriqueIds ?? [];\n  if(props.podcast?.emission?.rubriqueIds){\n    rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n  }\n  return rubriques;\n});\nconst errorMessage = computed(() => {\n  if (!props.podcast?.availability.visibility) {\n    return t(\"Podcast is not visible for listeners\");\n  }\n  if (\"ERROR\" === props.podcast?.processingStatus) {\n    return t(\"Podcast in ERROR, please contact Saooti\");\n  }\n  return podcastNotValid.value ? t(\"Podcast not validated\") : \"\";\n});\nconst isLiveReady = computed(() => {\n  return (\n    undefined !== props.podcast?.conferenceId &&\n    0 !== props.podcast?.conferenceId &&\n    \"READY\" === props.podcast?.processingStatus\n  );\n});\nconst isDebriefing = computed(() => {\n  return (\n    undefined !== props.podcastConference &&\n    \"DEBRIEFING\" === props.podcastConference.status\n  );\n});\nconst isOctopusAndAnimator = computed(() => {\n  return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n  return (\n    undefined !== props.podcast?.availability &&\n    false === props.podcast?.valid\n  );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n  const tags = [];\n  if(props.podcast.tags) {\n    tags.push(...props.podcast.tags);\n  }\n  // Also display tags defined on emission\n  if(props.podcast.emission.tags) {\n    tags.push(...props.podcast.emission.tags);\n  }\n  return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n  return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n  return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n  return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n  return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n  return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n  if (credits === undefined) {\n    return '';\n  }\n  return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n  return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n  if (isLiveReadyToRecord.value) {\n    router.push(\"/main/pub/lives\");\n  } else if (window.history.length > 1) {\n    router.go(-1);\n  } else {\n    router.push(\"/\");\n  }\n}\n\nfunction resetTranscription(): void {\n  podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n  if (state.podcastPage.hideTags === true) {\n    return false;\n  }\n\n  return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n  <section v-if=\"podcast\" class=\"module-box\">\n    <slot\n      v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n      name=\"recording-item-button\"\n      :podcast=\"podcast\"\n      :live=\"true\"\n      :recording=\"podcastConference\"\n      :on-delete-item=\"removeDeleted\"\n      :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n    />\n    <slot\n      v-else-if=\"editRight && isEditBox\"\n      name=\"edit-box\"\n      :podcast=\"podcast\"\n      :display-studio-access=\"isDebriefing\"\n      :on-update-transcription=\"resetTranscription\"\n      :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n    />\n    <div class=\"mb-2 w-100\">\n      <PodcastImage\n        :class=\"[\n          isLiveReadyToRecord &&\n          podcastConference &&\n          'null' !== podcastConference &&\n          podcastConference.status\n            ? podcastConference.status.toLowerCase() + '-shadow'\n            : '',\n        ]\"\n        class=\"me-3\"\n        show-processing\n        :hide-play=\"isLiveReadyToRecord\"\n        :podcast=\"podcast\"\n        :playing-podcast=\"playingPodcast\"\n        :fetch-conference=\"podcastConference\"\n        :is-animator-live=\"isOctopusAndAnimator\"\n      />\n      <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n        <time \n          v-if=\"0 !== date.length\" :class=\"!isLiveReady ? 'me-5' : ''\"\n          :datetime=\"podcast.pubDate\">\n          {{ date }}\n        </time>\n        <div v-if=\"isLiveReady\" class=\"text-danger\">\n          {{ t(\"Episode record in live\") }}\n        </div>\n        <div class=\"d-flex flex-column align-items-end\">\n          <time :datetime=\"durationIso\">\n            {{ duration }}\n          </time>\n          <ShareAnonymous v-if=\"!editRight\" :podcast=\"podcast\" :organisation-id=\"podcast.organisation.id\"/>\n        </div>\n      </div>\n      <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n        <RightsIndicator\n          :podcast=\"podcast\"\n          action=\"edit\"\n          inline\n        />\n        {{ podcast.title }}\n      </h2>\n      <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n        {{ podcast.annotations.subtitle }}\n      </h3>\n      \n      <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n      <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n      <!-- eslint-disable vue/no-v-html -->\n      <div\n        v-if=\"showSummary\"\n        class=\"description-text html-wysiwyg-content\"\n        :class=\"{ 'mb-4': showSummary && showDescription }\"\n        v-html=\"urlify(podcast.summary)\"\n      />\n      <div\n        v-if=\"showDescription\"\n        class=\"description-text html-wysiwyg-content\"\n        v-html=\"urlify(podcast.description)\"\n      />\n      <!-- eslint-enable -->\n      <div class=\"my-3\">\n        <div class=\"mb-1\">\n          {{ t(\"Emission\") + \" : \" }}\n          <router-link\n            :to=\"{\n              name: 'emission',\n              params: { emissionId: podcast.emission.emissionId },\n            }\"\n            :title=\"t('Series name page', { name: podcast.emission.name })\"\n          >\n            {{ podcast.emission.name }}\n          </router-link>\n        </div>\n        <ParticipantDescription :participants=\"podcast.animators\" />\n        <ParticipantDescription\n          :participants=\"podcast.guests\"\n          :is-guest=\"true\"\n        />\n        <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n          {{ t(\"Producted by : \") }}\n          <router-link\n            :to=\"{\n              name: 'productor',\n              params: { productorId: podcast.organisation.id },\n            }\"\n          >\n            {{ podcast.organisation.name }}\n          </router-link>\n        </div>\n        <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n          {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n        </div>\n        <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n          {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n        </div>\n        <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n          {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n        </div>\n        <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n          {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n        </div>\n        <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n          {{ t(\"Author credits\") + \" : \" + authorCredit }}\n        </div>\n        <a\n          v-if=\"podcast.article && !authStore.isGarRole\"\n          class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n          :href=\"podcast.article\"\n          rel=\"noreferrer noopener\"\n          target=\"_blank\"\n          :title=\"t('New window', {text : t('See associated article')})\"\n        >\n          <NewspaperVariantOutlineIcon class=\"me-1\" />\n          <div>{{ t(\"See associated article\") }}</div>\n        </a>\n        <PodcastPlayBar\n          v-if=\"state.emissionsPage.progressBar\"\n          :podcast=\"podcast\"\n        />\n        <div v-if=\"editRight && !isPodcastmaker\">\n          <div\n            v-if=\"\n              podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n            \"\n            class=\"me-5 text-secondary\"\n          >\n            {{ t(\"From RSS\") }}\n          </div>\n          <ErrorMessage v-if=\"'' !== errorMessage\" :message=\"errorMessage\" />\n        </div>\n        <div class=\"d-flex align-items-center flex-wrap\">\n          <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n          <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n        </div>\n      </div>\n    </div>\n    <TagList\n      v-if=\"showTags\"\n      :tag-list=\"tags\"\n      :orga-id=\"podcast.organisation.id\"\n      :podcast-annotations=\"podcast.annotations\"\n      :max=\"state.podcastPage.maxTags\"\n    />\n    <PodcastRubriqueList\n      v-if=\"podcastRubriques?.length\"\n      :orga-id=\"podcast.organisation.id\"\n      :rubrique-ids=\"podcastRubriques\"\n    />\n    <PodcastRawTranscript\n      ref=\"podcastRawTranscript\"\n      :podcast-id=\"podcast.podcastId\"\n    />\n    <SubscribeButtons\n      v-if=\"isPodcastmaker\"\n      class=\"mt-4\"\n      :content=\"podcast.emission\"\n      :window-width=\"1000\"\n      :justify-center=\"false\"\n    />\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nconst ErrorMessage = defineAsyncComponent(\n  () => import(\"../../misc/ErrorMessage.vue\"),\n);\nconst PodcastPlayBar = defineAsyncComponent(\n  () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n  () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n  () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n  () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n  () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst PodcastRubriqueList = defineAsyncComponent(() => import(\"./PodcastRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n  podcast: Podcast;\n  playingPodcast?: Podcast;\n  podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n  isLiveReadyToRecord,\n  isCounter,\n  timeRemaining,\n  isPlannedInProcessor,\n  date,\n  duration,\n  durationIso,\n  isPodcastmaker,\n  editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n  let rubriques = props.podcast?.rubriqueIds ?? [];\n  if(props.podcast?.emission?.rubriqueIds){\n    rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n  }\n  return rubriques;\n});\nconst errorMessage = computed(() => {\n  if (!props.podcast?.availability.visibility) {\n    return t(\"Podcast is not visible for listeners\");\n  }\n  if (\"ERROR\" === props.podcast?.processingStatus) {\n    return t(\"Podcast in ERROR, please contact Saooti\");\n  }\n  return podcastNotValid.value ? t(\"Podcast not validated\") : \"\";\n});\nconst isLiveReady = computed(() => {\n  return (\n    undefined !== props.podcast?.conferenceId &&\n    0 !== props.podcast?.conferenceId &&\n    \"READY\" === props.podcast?.processingStatus\n  );\n});\nconst isDebriefing = computed(() => {\n  return (\n    undefined !== props.podcastConference &&\n    \"DEBRIEFING\" === props.podcastConference.status\n  );\n});\nconst isOctopusAndAnimator = computed(() => {\n  return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n  return (\n    undefined !== props.podcast?.availability &&\n    false === props.podcast?.valid\n  );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n  const tags = [];\n  if(props.podcast.tags) {\n    tags.push(...props.podcast.tags);\n  }\n  // Also display tags defined on emission\n  if(props.podcast.emission.tags) {\n    tags.push(...props.podcast.emission.tags);\n  }\n  return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n  return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n  return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n  return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n  return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n  return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n  if (credits === undefined) {\n    return '';\n  }\n  return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n  return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n  if (isLiveReadyToRecord.value) {\n    router.push(\"/main/pub/lives\");\n  } else if (window.history.length > 1) {\n    router.go(-1);\n  } else {\n    router.push(\"/\");\n  }\n}\n\nfunction resetTranscription(): void {\n  podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n  if (state.podcastPage.hideTags === true) {\n    return false;\n  }\n\n  return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n  <section class=\"page-box\">\n    <template v-if=\"loaded && !error && podcast\">\n      <PodcastmakerHeader\n        v-if=\"isPodcastmaker\"\n        :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n        :img-url=\"podcast.imageUrl\"\n      />\n      <div\n        class=\"d-flex flex-column page-element\"\n        :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n      >\n        <PodcastModuleBox\n          :playing-podcast=\"playingPodcast\"\n          :podcast=\"podcast\"\n          :podcast-conference=\"fetchConference\"\n          @update-podcast=\"updatePodcast\"\n        >\n          <template #recording-item-button=\"slotProps\">\n            <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n          </template>\n          <template #edit-box=\"slotProps\">\n            <slot name=\"edit-box\" v-bind=\"slotProps\" />\n          </template>\n        </PodcastModuleBox>\n        <ShareSocialsButtons\n          v-if=\"state.podcastPage.ShareButtons\"\n          :organisation-id=\"podcast.organisation.id\"\n        />\n        <SharePlayer\n          v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n          :podcast=\"podcast\"\n          :emission=\"podcast?.emission\"\n          :organisation-id=\"authOrgaId\"\n        />\n        <CommentSection :podcast=\"podcast\" />\n\n        <!-- Suggestions -->\n        <PodcastInlineList\n          :emission-id=\"podcast.emission.emissionId\"\n          :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n          :title=\"t('More episodes of this emission')\"\n          :button-text=\"t('All podcast emission button')\"\n          title-tag=\"h3\"\n        />\n        <section v-if=\"!hideSuggestions\">\n          <ClassicLazy :min-height=\"550\">\n            <PodcastInlineList\n              class=\"mt-4\"\n              title-tag=\"h3\"\n              :organisation-id=\"[podcast.organisation.id]\"\n              :podcast-id=\"podcastId\"\n              :title=\"t('Suggested listening')\"\n            />\n          </ClassicLazy>\n          <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n            <PodcastInlineList\n              class=\"mt-4\"\n              title-tag=\"h3\"\n              :iab-id=\"c.id\"\n              :href=\"'/main/pub/category/' + c.id\"\n              :title=\"t('More episodes of this category : ', { name: c.name })\"\n              :button-text=\"t('All podcast button', { name: c.name })\"\n              :organisation-id=\"[podcast.organisation.id]\"\n            />\n          </ClassicLazy>\n        </section>\n      </div>\n    </template>\n    <ClassicLoading\n      :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n      :error-text=\"\n        error\n          ? t(`This episode is not available for (re)listening`)\n          : undefined\n      \"\n    />\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n  Conference,\n  ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n  () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n  () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n  () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n  () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n  updateStatus?: string;\n  playingPodcast?: Podcast;\n  podcastId: number;\n  /** When true, display emission title in podcastmaker header */\n  useEmissionTitle?: boolean;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n  return (\n      \"true\" ===\n      (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n        | string\n        | undefined)\n    );\n});\nconst emissionMainCategory = computed(() =>{\n  if (!podcast.value) {\n    return 0;\n  }\n  if (podcast.value.emission.annotations?.mainIabId) {\n    return parseInt(\n      podcast.value.emission.annotations.mainIabId as string,\n      10,\n    );\n  } else if(podcast.value.emission.iabIds?.length) {\n    return podcast.value.emission.iabIds[0];\n  }\n  return 0;\n});\n\nconst categories = computed(() =>{\n  if (\"undefined\" === typeof podcast.value) return [];\n  return generalStore.storedCategories\n    .filter((item: Category) => {\n      return (\n        podcast.value?.emission.iabIds &&\n        -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n      );\n    })\n    .sort((a: Category, b: Category) => {\n      if (a.id === emissionMainCategory.value) return -1;\n      if (b.id === emissionMainCategory.value) return 1;\n      return 0;\n    });\n});\n\nconst editRight = computed(() =>{\n  return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n  return (\n    undefined !== podcast.value?.conferenceId &&\n    0 !== podcast.value?.conferenceId &&\n    \"READY_TO_RECORD\" === podcast.value?.processingStatus\n  );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n  return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\nconst titlePage = computed(() =>{\n  return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n  if (fetchConference.value && null !== fetchConference.value) {\n    fetchConference.value.status = props.updateStatus;\n  }\n});\nwatch(()=>props.podcastId, async () => {\n  await getPodcastDetails();\n  if (!podcast.value || error.value) {\n    return;\n  }\n  commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n  generalStore.contentToDisplayUpdate(null);\n  clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n  if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n  fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n  if (isOctopusAndAnimator.value) {\n    try {\n      fetchConference.value = await classicApi.fetchData<Conference>({\n        api: 9,\n        path: \"conference/\" + podcast.value.conferenceId,\n      });\n    } catch {\n      await fetchConferenceStatus();\n    }\n  } else {\n    await fetchConferenceStatus();\n  }\n  if (\n    fetchConference.value &&\n    -1 !== fetchConference.value.conferenceId &&\n    \"PUBLISHING\" !== fetchConference.value.status &&\n    \"DEBRIEFING\" !== fetchConference.value.status\n  ) {\n    fetchConferenceStatusLoop();\n  }\n}\n\nasync function fetchConferenceStatusLoop() {\n  if(\"PUBLISHING\" ===fetchConference.value?.status){\n    return;\n  }\n  infoReload.value = setTimeout(async () => {\n    await fetchConferenceStatus();\n    fetchConferenceStatusLoop();\n  }, 3000);\n}\nasync function fetchConferenceStatus() {\n  try {\n    const data = await classicApi.fetchData<ConferencePublicInfo>({\n      api: 9,\n      path: \"conference/info/\" + podcast.value?.conferenceId,\n    });\n    fetchConference.value = {...fetchConference.value, ...data};\n  } catch {\n    //Do nothing\n  }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n  podcast.value = podcastUpdated;\n  filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n  error.value = true;\n  loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n  loaded.value = false;\n  error.value = false;\n  try {\n    const data = await classicApi.fetchData<Podcast>({\n      api: 0,\n      path: \"podcast/\" + props.podcastId,\n    });\n    if (\n      \"PUBLIC\" !== data.organisation.privacy &&\n      filterStore.filterOrgaId !== data.organisation.id &&\n      route.query.productor !== data.organisation.id\n    ) {\n      initError();\n      return;\n    }\n    updatePodcast(data);\n    generalStore.contentToDisplayUpdate(data);\n    if (\n      (!podcast.value.availability.visibility ||\n        (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n          \"READY\" !== podcast.value.processingStatus &&\n          \"PROCESSING\" !== podcast.value.processingStatus) ||\n        false === podcast.value.valid) &&\n      !editRight.value\n    ) {\n      error.value = true;\n      loaded.value = true;\n      return;\n    }\n    podcastInProcessing();\n    updatePathParams(podcast.value.title);\n    await commentStore.getCommentsConfig(podcast.value);\n    if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n      youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n    }\n    loaded.value = true;\n  } catch (error) {\n    handle403(error as AxiosError);\n    initError();\n  }\n}\n\nfunction podcastInProcessing(){\n  if(\"PLANNED\" !== podcast.value?.processingStatus){\n    initConference();\n    return;\n  }\n  infoReload.value = setTimeout(async () => {\n    const podcast = await podcastApi.get(props.podcastId);\n    updatePodcast(podcast);\n    podcastInProcessing();\n  }, 2000);\n}\n</script>\n","<template>\n  <section class=\"page-box\">\n    <template v-if=\"loaded && !error && podcast\">\n      <PodcastmakerHeader\n        v-if=\"isPodcastmaker\"\n        :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n        :img-url=\"podcast.imageUrl\"\n      />\n      <div\n        class=\"d-flex flex-column page-element\"\n        :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n      >\n        <PodcastModuleBox\n          :playing-podcast=\"playingPodcast\"\n          :podcast=\"podcast\"\n          :podcast-conference=\"fetchConference\"\n          @update-podcast=\"updatePodcast\"\n        >\n          <template #recording-item-button=\"slotProps\">\n            <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n          </template>\n          <template #edit-box=\"slotProps\">\n            <slot name=\"edit-box\" v-bind=\"slotProps\" />\n          </template>\n        </PodcastModuleBox>\n        <ShareSocialsButtons\n          v-if=\"state.podcastPage.ShareButtons\"\n          :organisation-id=\"podcast.organisation.id\"\n        />\n        <SharePlayer\n          v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n          :podcast=\"podcast\"\n          :emission=\"podcast?.emission\"\n          :organisation-id=\"authOrgaId\"\n        />\n        <CommentSection :podcast=\"podcast\" />\n\n        <!-- Suggestions -->\n        <PodcastInlineList\n          :emission-id=\"podcast.emission.emissionId\"\n          :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n          :title=\"t('More episodes of this emission')\"\n          :button-text=\"t('All podcast emission button')\"\n          title-tag=\"h3\"\n        />\n        <section v-if=\"!hideSuggestions\">\n          <ClassicLazy :min-height=\"550\">\n            <PodcastInlineList\n              class=\"mt-4\"\n              title-tag=\"h3\"\n              :organisation-id=\"[podcast.organisation.id]\"\n              :podcast-id=\"podcastId\"\n              :title=\"t('Suggested listening')\"\n            />\n          </ClassicLazy>\n          <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n            <PodcastInlineList\n              class=\"mt-4\"\n              title-tag=\"h3\"\n              :iab-id=\"c.id\"\n              :href=\"'/main/pub/category/' + c.id\"\n              :title=\"t('More episodes of this category : ', { name: c.name })\"\n              :button-text=\"t('All podcast button', { name: c.name })\"\n              :organisation-id=\"[podcast.organisation.id]\"\n            />\n          </ClassicLazy>\n        </section>\n      </div>\n    </template>\n    <ClassicLoading\n      :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n      :error-text=\"\n        error\n          ? t(`This episode is not available for (re)listening`)\n          : undefined\n      \"\n    />\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n  Conference,\n  ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n  () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n  () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n  () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n  () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n  updateStatus?: string;\n  playingPodcast?: Podcast;\n  podcastId: number;\n  /** When true, display emission title in podcastmaker header */\n  useEmissionTitle?: boolean;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n  return (\n      \"true\" ===\n      (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n        | string\n        | undefined)\n    );\n});\nconst emissionMainCategory = computed(() =>{\n  if (!podcast.value) {\n    return 0;\n  }\n  if (podcast.value.emission.annotations?.mainIabId) {\n    return parseInt(\n      podcast.value.emission.annotations.mainIabId as string,\n      10,\n    );\n  } else if(podcast.value.emission.iabIds?.length) {\n    return podcast.value.emission.iabIds[0];\n  }\n  return 0;\n});\n\nconst categories = computed(() =>{\n  if (\"undefined\" === typeof podcast.value) return [];\n  return generalStore.storedCategories\n    .filter((item: Category) => {\n      return (\n        podcast.value?.emission.iabIds &&\n        -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n      );\n    })\n    .sort((a: Category, b: Category) => {\n      if (a.id === emissionMainCategory.value) return -1;\n      if (b.id === emissionMainCategory.value) return 1;\n      return 0;\n    });\n});\n\nconst editRight = computed(() =>{\n  return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n  return (\n    undefined !== podcast.value?.conferenceId &&\n    0 !== podcast.value?.conferenceId &&\n    \"READY_TO_RECORD\" === podcast.value?.processingStatus\n  );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n  return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\nconst titlePage = computed(() =>{\n  return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n  if (fetchConference.value && null !== fetchConference.value) {\n    fetchConference.value.status = props.updateStatus;\n  }\n});\nwatch(()=>props.podcastId, async () => {\n  await getPodcastDetails();\n  if (!podcast.value || error.value) {\n    return;\n  }\n  commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n  generalStore.contentToDisplayUpdate(null);\n  clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n  if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n  fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n  if (isOctopusAndAnimator.value) {\n    try {\n      fetchConference.value = await classicApi.fetchData<Conference>({\n        api: 9,\n        path: \"conference/\" + podcast.value.conferenceId,\n      });\n    } catch {\n      await fetchConferenceStatus();\n    }\n  } else {\n    await fetchConferenceStatus();\n  }\n  if (\n    fetchConference.value &&\n    -1 !== fetchConference.value.conferenceId &&\n    \"PUBLISHING\" !== fetchConference.value.status &&\n    \"DEBRIEFING\" !== fetchConference.value.status\n  ) {\n    fetchConferenceStatusLoop();\n  }\n}\n\nasync function fetchConferenceStatusLoop() {\n  if(\"PUBLISHING\" ===fetchConference.value?.status){\n    return;\n  }\n  infoReload.value = setTimeout(async () => {\n    await fetchConferenceStatus();\n    fetchConferenceStatusLoop();\n  }, 3000);\n}\nasync function fetchConferenceStatus() {\n  try {\n    const data = await classicApi.fetchData<ConferencePublicInfo>({\n      api: 9,\n      path: \"conference/info/\" + podcast.value?.conferenceId,\n    });\n    fetchConference.value = {...fetchConference.value, ...data};\n  } catch {\n    //Do nothing\n  }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n  podcast.value = podcastUpdated;\n  filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n  error.value = true;\n  loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n  loaded.value = false;\n  error.value = false;\n  try {\n    const data = await classicApi.fetchData<Podcast>({\n      api: 0,\n      path: \"podcast/\" + props.podcastId,\n    });\n    if (\n      \"PUBLIC\" !== data.organisation.privacy &&\n      filterStore.filterOrgaId !== data.organisation.id &&\n      route.query.productor !== data.organisation.id\n    ) {\n      initError();\n      return;\n    }\n    updatePodcast(data);\n    generalStore.contentToDisplayUpdate(data);\n    if (\n      (!podcast.value.availability.visibility ||\n        (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n          \"READY\" !== podcast.value.processingStatus &&\n          \"PROCESSING\" !== podcast.value.processingStatus) ||\n        false === podcast.value.valid) &&\n      !editRight.value\n    ) {\n      error.value = true;\n      loaded.value = true;\n      return;\n    }\n    podcastInProcessing();\n    updatePathParams(podcast.value.title);\n    await commentStore.getCommentsConfig(podcast.value);\n    if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n      youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n    }\n    loaded.value = true;\n  } catch (error) {\n    handle403(error as AxiosError);\n    initError();\n  }\n}\n\nfunction podcastInProcessing(){\n  if(\"PLANNED\" !== podcast.value?.processingStatus){\n    initConference();\n    return;\n  }\n  infoReload.value = setTimeout(async () => {\n    const podcast = await podcastApi.get(props.podcastId);\n    updatePodcast(podcast);\n    podcastInProcessing();\n  }, 2000);\n}\n</script>\n"],"mappings":"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"}