{"version":3,"file":"FooterSection-BAJcoVwL.mjs","names":[],"sources":["../src/components/misc/AcpmImage.vue","../../../../../img/ACPM.webp","../src/components/misc/AcpmImage.vue","../src/components/misc/FooterSection.vue","../src/components/misc/FooterSection.vue"],"sourcesContent":["<template>\n  <img\n    width=\"44\"\n    height=\"44\"\n    class=\"acpm-image\"\n    src=\"/img/ACPM.webp\"\n    :title=\"t('Octopus is ACPM Podcast accredited')\"\n    :alt=\"t('Octopus is ACPM Podcast accredited')\"\n  />\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\n//Composables\nconst { t } = useI18n();\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n  .acpm-image {\n    width: 44px;\n    height: 44px;\n  }\n}\n</style>\n","export default \"__VITE_PUBLIC_ASSET__df107582__\"","<template>\n  <img\n    width=\"44\"\n    height=\"44\"\n    class=\"acpm-image\"\n    src=\"/img/ACPM.webp\"\n    :title=\"t('Octopus is ACPM Podcast accredited')\"\n    :alt=\"t('Octopus is ACPM Podcast accredited')\"\n  />\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\n//Composables\nconst { t } = useI18n();\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n  .acpm-image {\n    width: 44px;\n    height: 44px;\n  }\n}\n</style>\n","<template>\n  <footer\n    id=\"footer\"\n    ref=\"footer\"\n    role=\"contentinfo\"\n    class=\"d-flex align-items-center justify-content-between border-top mt-auto\"\n  >\n    <div\n      v-if=\"!state.generalParameters.podcastmaker\"\n      class=\"d-flex flex-column px-1\"\n    >\n      <div class=\"text-dark my-1 special-select-align-magic-trick\">\n        &copy; Saooti {{ dayjs().year() }}\n      </div>\n      <FooterGarSection\n        v-if=\"authStore.isGarRole\"\n        :auth-orga-id=\"authStore.authOrgaId\"\n      />\n      <nav :aria-label=\"t('Site menu')\">\n        <ul class=\"p-0 m-0\">\n          <li \n            v-for=\"link in routerLinkSecondArray\"\n            :key=\"link.routeName\"\n            class=\"li-style-none my-1\"\n          >\n            <router-link\n              class=\"link-hover special-select-align-magic-trick\"\n              :to=\"link.routeName\"\n            >\n              {{ link.title }}\n            </router-link>\n          </li>\n        </ul>\n      </nav>\n      <ClassicSelect\n        v-model:text-init=\"language\"\n        :display-label=\"false\"\n        id-select=\"language-chooser-select\"\n        :label=\"t('Change locale')\"\n        :transparent=\"true\"\n        :options=\"[\n          { title: 'Deutsch', value: 'de' },\n          { title: 'English', value: 'en' },\n          { title: 'Español', value: 'es' },\n          { title: 'Français', value: 'fr' },\n          { title: 'Italiano', value: 'it' },\n          { title: 'Slovenščina', value: 'sl' },\n        ]\"\n        class=\"my-1\"\n      />\n      <OrganisationChooserLight\n        v-if=\"!state.generalParameters.podcastmaker && authenticated\"\n        page=\"footer\"\n        width=\"auto\"\n        class=\"my-1\"\n        :defaultanswer=\"t('No organisation filter')\"\n        @selected=\"onOrganisationSelected\"\n      />\n    </div>\n    <div class=\"d-flex align-items-center\">\n      <div class=\"hosted-by\">\n        {{ t(\"Hosted by\") }}<span class=\"ms-1 me-1 text-primary\">Saooti</span>\n      </div>\n\n      <AcpmImage v-if=\"authStore.isGarRole\" />\n      <a\n        v-else\n        href=\"https://www.acpm.fr/L-ACPM/Certifications-et-Labels/Les-Podcasts\"\n        rel=\"noreferrer noopener\"\n        target=\"_blank\"\n        :title=\"t('New window', {text: t('Octopus is ACPM Podcast accredited')})\"\n      >\n        <AcpmImage />\n      </a>\n    </div>\n  </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport cookiesHelper from \"../../helper/cookiesHelper\";\nimport ClassicSelect from \"../form/ClassicSelect.vue\";\nimport AcpmImage from \"./AcpmImage.vue\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { loadLocaleMessages as loadSdkLocaleMessages } from \"../../i18n\";\nimport { LOAD_LOCALE_MESSAGES_KEY } from \"../composable/keys\";\nimport classicApi from \"../../api/classicApi\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { computed, defineAsyncComponent, inject, ref, watch } from \"vue\";\nimport { Organisation } from \"../../stores/class/general/organisation\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useDayjs } from \"../composable/useDayjs\";\nconst OrganisationChooserLight = defineAsyncComponent(\n  () => import(\"../display/organisation/OrganisationChooserLight.vue\"),\n);\nconst FooterGarSection = defineAsyncComponent(\n  () => import(\"./FooterGarSection.vue\"),\n);\nconst i18n = useI18n();\nconst { t, locale } = useI18n();\n\n//Data \nconst language = ref(locale);\n\n//Composables\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst route = useRoute();\nconst { dayjs } = useDayjs();\n// loadLocaleMessages is resolved at runtime from the consuming app's\n// globally provided implementation (app.provide()), e.g. to merge in its\n// own locale bundles; defaults to the SDK's own base-translations loader.\nconst loadLocaleMessages = inject(LOAD_LOCALE_MESSAGES_KEY, loadSdkLocaleMessages);\n\n\n//Computed\nconst authenticated = computed(() => undefined !== authStore.authOrgaId);\nconst routerLinkSecondArray = computed(() => {\n  const links = [];\n  if (!authStore.isGarRole) {\n    links.push(\n      { title: t(\"Contact\"), routeName: \"/main/pub/contact\" },\n      { title:t(\"Used libraries\"), routeName: \"/main/pub/libraries\"},\n      { title: t(\"Term of use\"), routeName: \"/main/pub/cgu\" },\n    );\n  }\n  links.push({ title: t(\"Site map\"), routeName: \"/main/pub/map\" });\n  return links;\n});\n\n\n//Watch\nwatch(language, () => changeLanguage());\n\n//Methods\nfunction changeLanguage(): void {\n  cookiesHelper.setCookie(\"octopus-language\", language.value);\n  loadLocaleMessages(\n    i18n,\n    language.value,\n    authenticated.value,\n    generalStore.platformEducation,\n  );\n  classicApi\n  .fetchData<Array<Category>>({\n    api: 0,\n    path: `iab/list${authStore.authOrgaId ? \"/\" + authStore.authOrgaId : \"\"}`,\n    parameters: { lang: language.value },\n  })\n  .then((data: Array<Category>) => {\n    generalStore.storedUpdateCategories(data);\n    if (filterStore.filterIab) {\n      const category = generalStore.storedCategories.filter((c: Category) => {\n        return c.id === filterStore.filterIab?.id;\n      });\n      if (category.length) {\n        filterStore.filterUpdateIab(category[0]);\n      }\n    }\n  });\n}\n\n/**\n * Select another organisation\n * @param organisation The new organisation to focus on, or undefined to remove focus\n */\nasync function onOrganisationSelected( organisation: Organisation | undefined): Promise<void> {\n  if (organisation?.id) {\n    router.push({\n      query: { ...route.query, ...{ productor: organisation.id, o:undefined, viewall: \"false\" } },\n    });\n  }else{\n    router.push({\n      query: { ...route.query, ...{ productor: undefined, viewall: \"true\" } },\n    });\n  }\n}\n</script>\n\n<style scoped lang=\"scss\">\n#footer {\n  font-size: max(0.6rem, 12px);\n  bottom: 0;\n  z-index: 10;\n  background: white;\n  padding: 0 2rem;\n\n  a,\n  .link-hover.btn-transparent {\n    font-weight: 500;\n    color: var(--octopus-gray-text) !important;\n  }\n\n  .special-select-align-magic-trick {\n    margin-left: 0.16rem;\n  }\n}\n</style>\n","<template>\n  <footer\n    id=\"footer\"\n    ref=\"footer\"\n    role=\"contentinfo\"\n    class=\"d-flex align-items-center justify-content-between border-top mt-auto\"\n  >\n    <div\n      v-if=\"!state.generalParameters.podcastmaker\"\n      class=\"d-flex flex-column px-1\"\n    >\n      <div class=\"text-dark my-1 special-select-align-magic-trick\">\n        &copy; Saooti {{ dayjs().year() }}\n      </div>\n      <FooterGarSection\n        v-if=\"authStore.isGarRole\"\n        :auth-orga-id=\"authStore.authOrgaId\"\n      />\n      <nav :aria-label=\"t('Site menu')\">\n        <ul class=\"p-0 m-0\">\n          <li \n            v-for=\"link in routerLinkSecondArray\"\n            :key=\"link.routeName\"\n            class=\"li-style-none my-1\"\n          >\n            <router-link\n              class=\"link-hover special-select-align-magic-trick\"\n              :to=\"link.routeName\"\n            >\n              {{ link.title }}\n            </router-link>\n          </li>\n        </ul>\n      </nav>\n      <ClassicSelect\n        v-model:text-init=\"language\"\n        :display-label=\"false\"\n        id-select=\"language-chooser-select\"\n        :label=\"t('Change locale')\"\n        :transparent=\"true\"\n        :options=\"[\n          { title: 'Deutsch', value: 'de' },\n          { title: 'English', value: 'en' },\n          { title: 'Español', value: 'es' },\n          { title: 'Français', value: 'fr' },\n          { title: 'Italiano', value: 'it' },\n          { title: 'Slovenščina', value: 'sl' },\n        ]\"\n        class=\"my-1\"\n      />\n      <OrganisationChooserLight\n        v-if=\"!state.generalParameters.podcastmaker && authenticated\"\n        page=\"footer\"\n        width=\"auto\"\n        class=\"my-1\"\n        :defaultanswer=\"t('No organisation filter')\"\n        @selected=\"onOrganisationSelected\"\n      />\n    </div>\n    <div class=\"d-flex align-items-center\">\n      <div class=\"hosted-by\">\n        {{ t(\"Hosted by\") }}<span class=\"ms-1 me-1 text-primary\">Saooti</span>\n      </div>\n\n      <AcpmImage v-if=\"authStore.isGarRole\" />\n      <a\n        v-else\n        href=\"https://www.acpm.fr/L-ACPM/Certifications-et-Labels/Les-Podcasts\"\n        rel=\"noreferrer noopener\"\n        target=\"_blank\"\n        :title=\"t('New window', {text: t('Octopus is ACPM Podcast accredited')})\"\n      >\n        <AcpmImage />\n      </a>\n    </div>\n  </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport cookiesHelper from \"../../helper/cookiesHelper\";\nimport ClassicSelect from \"../form/ClassicSelect.vue\";\nimport AcpmImage from \"./AcpmImage.vue\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { loadLocaleMessages as loadSdkLocaleMessages } from \"../../i18n\";\nimport { LOAD_LOCALE_MESSAGES_KEY } from \"../composable/keys\";\nimport classicApi from \"../../api/classicApi\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { computed, defineAsyncComponent, inject, ref, watch } from \"vue\";\nimport { Organisation } from \"../../stores/class/general/organisation\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { useDayjs } from \"../composable/useDayjs\";\nconst OrganisationChooserLight = defineAsyncComponent(\n  () => import(\"../display/organisation/OrganisationChooserLight.vue\"),\n);\nconst FooterGarSection = defineAsyncComponent(\n  () => import(\"./FooterGarSection.vue\"),\n);\nconst i18n = useI18n();\nconst { t, locale } = useI18n();\n\n//Data \nconst language = ref(locale);\n\n//Composables\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst route = useRoute();\nconst { dayjs } = useDayjs();\n// loadLocaleMessages is resolved at runtime from the consuming app's\n// globally provided implementation (app.provide()), e.g. to merge in its\n// own locale bundles; defaults to the SDK's own base-translations loader.\nconst loadLocaleMessages = inject(LOAD_LOCALE_MESSAGES_KEY, loadSdkLocaleMessages);\n\n\n//Computed\nconst authenticated = computed(() => undefined !== authStore.authOrgaId);\nconst routerLinkSecondArray = computed(() => {\n  const links = [];\n  if (!authStore.isGarRole) {\n    links.push(\n      { title: t(\"Contact\"), routeName: \"/main/pub/contact\" },\n      { title:t(\"Used libraries\"), routeName: \"/main/pub/libraries\"},\n      { title: t(\"Term of use\"), routeName: \"/main/pub/cgu\" },\n    );\n  }\n  links.push({ title: t(\"Site map\"), routeName: \"/main/pub/map\" });\n  return links;\n});\n\n\n//Watch\nwatch(language, () => changeLanguage());\n\n//Methods\nfunction changeLanguage(): void {\n  cookiesHelper.setCookie(\"octopus-language\", language.value);\n  loadLocaleMessages(\n    i18n,\n    language.value,\n    authenticated.value,\n    generalStore.platformEducation,\n  );\n  classicApi\n  .fetchData<Array<Category>>({\n    api: 0,\n    path: `iab/list${authStore.authOrgaId ? \"/\" + authStore.authOrgaId : \"\"}`,\n    parameters: { lang: language.value },\n  })\n  .then((data: Array<Category>) => {\n    generalStore.storedUpdateCategories(data);\n    if (filterStore.filterIab) {\n      const category = generalStore.storedCategories.filter((c: Category) => {\n        return c.id === filterStore.filterIab?.id;\n      });\n      if (category.length) {\n        filterStore.filterUpdateIab(category[0]);\n      }\n    }\n  });\n}\n\n/**\n * Select another organisation\n * @param organisation The new organisation to focus on, or undefined to remove focus\n */\nasync function onOrganisationSelected( organisation: Organisation | undefined): Promise<void> {\n  if (organisation?.id) {\n    router.push({\n      query: { ...route.query, ...{ productor: organisation.id, o:undefined, viewall: \"false\" } },\n    });\n  }else{\n    router.push({\n      query: { ...route.query, ...{ productor: undefined, viewall: \"true\" } },\n    });\n  }\n}\n</script>\n\n<style scoped lang=\"scss\">\n#footer {\n  font-size: max(0.6rem, 12px);\n  bottom: 0;\n  z-index: 10;\n  background: white;\n  padding: 0 2rem;\n\n  a,\n  .link-hover.btn-transparent {\n    font-weight: 500;\n    color: var(--octopus-gray-text) !important;\n  }\n\n  .special-select-align-magic-trick {\n    margin-left: 0.16rem;\n  }\n}\n</style>\n"],"mappings":"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"}