{"version":3,"file":"EmissionPage-HGPCRuZD.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                        <InlineRubriqueList\n                            v-if=\"emission.rubriqueIds?.length\"\n                            :orga-id=\"emission.orga.id\"\n                            :rubrique-ids=\"emission.rubriqueIds\"\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\"; \nimport InlineRubriqueList from \"../display/rubriques/InlineRubriqueList.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//Props \nconst props = withDefaults(defineProps<{\n    emissionId: number;\n    pr?: number;\n    ps?: number;\n    routeQuery?: string;\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 display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n    return state.emissionPage?.displayEmissionTitleInHeader === true;\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                        <InlineRubriqueList\n                            v-if=\"emission.rubriqueIds?.length\"\n                            :orga-id=\"emission.orga.id\"\n                            :rubrique-ids=\"emission.rubriqueIds\"\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\"; \nimport InlineRubriqueList from \"../display/rubriques/InlineRubriqueList.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//Props \nconst props = withDefaults(defineProps<{\n    emissionId: number;\n    pr?: number;\n    ps?: number;\n    routeQuery?: string;\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 display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n    return state.emissionPage?.displayEmissionTitleInHeader === true;\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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"}