{"version":3,"file":"ShareAnonymous-DTGhRC7F.mjs","names":[],"sources":["../src/components/display/sharing/ShareAnonymous.vue","../src/components/display/sharing/ShareAnonymous.vue"],"sourcesContent":["<template>\n  <div v-if=\"!isLoading && !noSharing\">\n    <button\n      id=\"anonymous-share-button\"\n      :class=\"btnClass\"\n      :title=\"t('Share')\"\n    >\n      <DotsHorizontalIcon />\n    </button>\n    <ClassicPopover\n      target=\"anonymous-share-button\"\n      :relative-class=\"relativeClass\"\n      :is-fixed=\"true\"\n      :left-pos=\"true\"\n      :only-click=\"true\"\n    >\n      <div  \n        v-for=\"button in dropdownButtons\"\n        :key=\"button.icon\"\n        class=\"d-flex flex-column\"\n      >\n        <button\n          v-if=\"button.condition\"\n          :key=\"button.title\"\n          class=\"btn-transparent d-flex flex-nowrap justify-content-start align-items-center octopus-dropdown-item py-2\"\n          :title=\"button.title\"\n          @mousedown=\"clickButton(button.emitName)\"\n          @keydown.enter=\"clickButton(button.emitName)\"\n        >\n          <component :is=\"button.icon\" />\n          <span class=\"ms-1\">{{ button.title }}</span>\n        </button>\n      </div>\n    </ClassicPopover>\n    <QrCodeModal\n      v-if=\"isQrCodeModal\"\n      :url-page=\"urlPage\"\n      :orga-for-color=\"organisationId\"\n      @close=\"isQrCodeModal = false\"\n    />\n    <PlayerAnonymousModal\n      v-if=\"isPlayerModal\"\n      :podcast=\"podcast\"\n      :emission=\"emission ?? podcast?.emission\"\n      :exclusive=\"!playerCanBeSharedOthers\"\n      :not-exclusive=\"playerCanBeSharedAnonymous\"\n      @close=\"isPlayerModal = false\"\n    />\n    <NewsletterModal\n      v-if=\"isNewsletterModal\"\n      :closable=\"true\"\n      :podcast=\"podcast\"\n      :emission=\"emission\"\n      :playlist=\"playlist\"\n      @close=\"isNewsletterModal = false\"\n    />\n    <ClipboardModal\n      v-if=\"isRssModal\"\n      :link=\"rssUrl\"\n      @close=\"isRssModal = false\"\n    />\n    <SnackBar\n      v-if=\"lazyLoadingSnackbar\"\n      ref=\"snackbar\"\n      position=\"bottom-left\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport QrcodeIcon from \"vue-material-design-icons/Qrcode.vue\";\nimport LinkVariantIcon from \"vue-material-design-icons/LinkVariant.vue\";\nimport LinkVariantPlusIcon from \"vue-material-design-icons/LinkVariantPlus.vue\";\nimport DotsHorizontalIcon from \"vue-material-design-icons/DotsHorizontal.vue\";\nimport ClassicPopover from \"../../misc/ClassicPopover.vue\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, defineAsyncComponent, onBeforeMount, ref, useTemplateRef } from \"vue\";\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport classicApi from \"../../../api/classicApi\";\nimport { useI18n } from \"vue-i18n\";\nimport { useSharePath } from \"@/components/composable/share/useSharePath\";\nconst SnackBar = defineAsyncComponent(() => import(\"../../misc/SnackBar.vue\"));\nconst NewsletterModal = defineAsyncComponent(\n  () => import(\"../../misc/modal/NewsletterModal.vue\"),\n);\nconst QrCodeModal = defineAsyncComponent(\n  () => import(\"../../misc/modal/QrCodeModal.vue\"),\n);\nconst ClipboardModal = defineAsyncComponent(\n  () => import(\"../../misc/modal/ClipboardModal.vue\"),\n);\nconst PlayerAnonymousModal = defineAsyncComponent(\n  () => import(\"../sharing/PlayerAnonymousModal.vue\"),\n);\nconst CodeTagsIcon = defineAsyncComponent(\n  () => import(\"vue-material-design-icons/CodeTags.vue\"),\n);\nconst EmailNewsletterIcon = defineAsyncComponent(\n  () => import(\"vue-material-design-icons/EmailNewsletter.vue\"),\n);\nconst RssIcon = defineAsyncComponent(\n  () => import(\"vue-material-design-icons/Rss.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  podcast: { default: undefined, type: Object as () => Podcast },\n  emission: { default: undefined, type: Object as () => Emission },\n  playlist: { default: undefined, type: Object as () => Playlist },\n  participantId: { default: undefined, type: Number },\n  organisationId: { default: undefined, type: String },\n  relativeClass: { default: \"page-element\", type: String },\n  btnClass: { default: \"btn btn-transparent\", type: String },\n})\n\n//Data \nconst lazyLoadingSnackbar = ref(false);\nconst isNewsletterModal = ref(false);\nconst isQrCodeModal = ref(false);\nconst displayRss = ref(false);\nconst noSharing = ref(true);\nconst playerCanBeSharedAnonymous = ref(false);\nconst playerCanBeSharedOthers = ref(false);\nconst isLoading = ref(true);\nconst isRssModal = ref(false);\nconst isPlayerModal = ref(false);\nconst snackBarRef = useTemplateRef('snackbar');\n\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst saveFetchStore = useSaveFetchStore();\nconst { getSmartLink } = useSharePath();\n\n//Computed\nconst urlPage = computed(() => window.location.href);\nconst isPodcastmaker = computed(() => state.generalParameters.podcastmaker);\nconst rssUrl = computed(() => {\n  const api = apiStore.apiUrl + \"rss/\";\n  if (\n    (!isPodcastmaker.value && props.playlist) ||\n    props.podcast ||\n    props.emission\n  ) {\n    return \"\";\n  }\n  if (props.participantId) {\n    return api + \"participant/\" + props.participantId + \".rss\";\n  }\n  if (props.playlist) {\n    return api + \"playlist/\" + props.playlist.playlistId + \".rss\";\n  }\n  if (props.organisationId) {\n    return api + \"productor/\" + props.organisationId + \".rss\";\n  }\n  return \"\";\n});\nconst titleRssButton = computed(() => {\n  if (props.participantId) {\n    return t(\"Subscribe to this participant\");\n  }\n  if (props.emission) {\n    return t(\"Subscribe to this emission\");\n  }\n  return t(\"Subscribe to this RSS feed\");\n});\n\nconst dropdownButtons = computed(() => {\n  return [\n    {\n      title: t(\"Copy this page URL\"),\n      icon: LinkVariantIcon,\n      condition:true,\n      emitName: \"link\",\n    },\n    {\n      title: t(\"SmartLink - Share link\"),\n      icon: LinkVariantPlusIcon,\n      condition: isPodcastmaker.value && (props.emission || props.playlist),\n      emitName: \"smartlink\",\n    },\n    {\n      title: t(\"Share the player\"),\n      icon: CodeTagsIcon,\n      condition: !isPodcastmaker.value && (playerCanBeSharedAnonymous.value || (playerCanBeSharedOthers.value && authStore.authOrgaId)),\n      emitName: \"player\",\n    },\n    {\n      title: t(\"Share newsletter\"),\n      icon: EmailNewsletterIcon,\n      condition: props.podcast || props.emission || props.playlist,\n      emitName: \"newsletter\",\n    },\n    {\n      title: t(\"Share QR Code\"),\n      icon: QrcodeIcon,\n      condition: true,\n      emitName: \"qrcode\",\n    },\n    {\n      title: titleRssButton.value,\n      icon: RssIcon,\n      condition: '' !== rssUrl.value && displayRss.value && !authStore.isGarRole,\n      emitName: \"rss\",\n    },\n  ];\n});\n\n\nonBeforeMount(()=>initShareButtons())\n\n\n//Methods\nasync function initShareButtons() {\n  if (undefined !== props.participantId) {\n    displayRss.value = await classicApi.fetchData<boolean>({\n      api: 0,\n      path: `rss/participants/allowed/${props.organisationId}`,\n      isNotAuth: true,\n    });\n  } else {\n    displayRss.value = true;\n  }\n  determinePlayerCanBeShared();\n  if (!props.organisationId) {\n    return;\n  }\n  const attributes = await saveFetchStore.getOrgaAttributes(props.organisationId);\n  noSharing.value = \"true\" === attributes.noSharing;\n  isLoading.value = false;\n}\nfunction determinePlayerCanBeShared() {\n  const emissionAnnot = props.podcast?.emission.annotations ?? props.emission?.annotations;\n  if (!emissionAnnot) { return }\n  if (emissionAnnot.exclusive) {\n    playerCanBeSharedOthers.value = \"true\" !== emissionAnnot.exclusive;\n  }\n  if (emissionAnnot.notExclusive) {\n    playerCanBeSharedAnonymous.value = \"true\" === emissionAnnot.notExclusive;\n  }\n}\n\nfunction clickButton(name: string) {\n  switch (name) {\n    case \"link\":\n      displayHelper.onCopyCode(urlPage.value, afterCopy);\n      break;\n    case \"smartlink\":\n      this.openSmartLink();\n      break;\n    case \"newsletter\":\n      isNewsletterModal.value = true;\n      break;\n    case \"qrcode\":\n      isQrCodeModal.value = true;\n      break;\n    case \"rss\":\n      isRssModal.value = true;\n      break;\n    case \"player\": \n      isPlayerModal.value = true;\n      break;\n    default:\n      break;\n  }\n}\n\nfunction openSmartLink(): void {\n  const pmUrl = new URL(window.location.href);\n  const podcastmakerUrl = `${pmUrl.origin}/`;\n  let url: string;\n\n  if (props.emission) {\n    url = getSmartLink({\n      title: props.emission.name,\n      emissionId: props.emission?.emissionId,\n    }, {\n      podcastmakerUrl\n    });\n  } else if (props.playlist) {\n    url = getSmartLink({\n      title: props.playlist.title,\n      playlistId: props.playlist?.playlistId,\n    }, {\n      podcastmakerUrl\n    });\n  }\n  window.open(url, '_blank').focus();\n}\n\nfunction afterCopy(): void {\n  if (!lazyLoadingSnackbar.value) {\n    lazyLoadingSnackbar.value = true;\n    setTimeout(() => {\n      afterCopy();\n    }, 500);\n  } else {\n    (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t(\"Link in clipboard\"));\n  }\n}\n</script>\n","<template>\n  <div v-if=\"!isLoading && !noSharing\">\n    <button\n      id=\"anonymous-share-button\"\n      :class=\"btnClass\"\n      :title=\"t('Share')\"\n    >\n      <DotsHorizontalIcon />\n    </button>\n    <ClassicPopover\n      target=\"anonymous-share-button\"\n      :relative-class=\"relativeClass\"\n      :is-fixed=\"true\"\n      :left-pos=\"true\"\n      :only-click=\"true\"\n    >\n      <div  \n        v-for=\"button in dropdownButtons\"\n        :key=\"button.icon\"\n        class=\"d-flex flex-column\"\n      >\n        <button\n          v-if=\"button.condition\"\n          :key=\"button.title\"\n          class=\"btn-transparent d-flex flex-nowrap justify-content-start align-items-center octopus-dropdown-item py-2\"\n          :title=\"button.title\"\n          @mousedown=\"clickButton(button.emitName)\"\n          @keydown.enter=\"clickButton(button.emitName)\"\n        >\n          <component :is=\"button.icon\" />\n          <span class=\"ms-1\">{{ button.title }}</span>\n        </button>\n      </div>\n    </ClassicPopover>\n    <QrCodeModal\n      v-if=\"isQrCodeModal\"\n      :url-page=\"urlPage\"\n      :orga-for-color=\"organisationId\"\n      @close=\"isQrCodeModal = false\"\n    />\n    <PlayerAnonymousModal\n      v-if=\"isPlayerModal\"\n      :podcast=\"podcast\"\n      :emission=\"emission ?? podcast?.emission\"\n      :exclusive=\"!playerCanBeSharedOthers\"\n      :not-exclusive=\"playerCanBeSharedAnonymous\"\n      @close=\"isPlayerModal = false\"\n    />\n    <NewsletterModal\n      v-if=\"isNewsletterModal\"\n      :closable=\"true\"\n      :podcast=\"podcast\"\n      :emission=\"emission\"\n      :playlist=\"playlist\"\n      @close=\"isNewsletterModal = false\"\n    />\n    <ClipboardModal\n      v-if=\"isRssModal\"\n      :link=\"rssUrl\"\n      @close=\"isRssModal = false\"\n    />\n    <SnackBar\n      v-if=\"lazyLoadingSnackbar\"\n      ref=\"snackbar\"\n      position=\"bottom-left\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport QrcodeIcon from \"vue-material-design-icons/Qrcode.vue\";\nimport LinkVariantIcon from \"vue-material-design-icons/LinkVariant.vue\";\nimport LinkVariantPlusIcon from \"vue-material-design-icons/LinkVariantPlus.vue\";\nimport DotsHorizontalIcon from \"vue-material-design-icons/DotsHorizontal.vue\";\nimport ClassicPopover from \"../../misc/ClassicPopover.vue\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, defineAsyncComponent, onBeforeMount, ref, useTemplateRef } from \"vue\";\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport classicApi from \"../../../api/classicApi\";\nimport { useI18n } from \"vue-i18n\";\nimport { useSharePath } from \"@/components/composable/share/useSharePath\";\nconst SnackBar = defineAsyncComponent(() => import(\"../../misc/SnackBar.vue\"));\nconst NewsletterModal = defineAsyncComponent(\n  () => import(\"../../misc/modal/NewsletterModal.vue\"),\n);\nconst QrCodeModal = defineAsyncComponent(\n  () => import(\"../../misc/modal/QrCodeModal.vue\"),\n);\nconst ClipboardModal = defineAsyncComponent(\n  () => import(\"../../misc/modal/ClipboardModal.vue\"),\n);\nconst PlayerAnonymousModal = defineAsyncComponent(\n  () => import(\"../sharing/PlayerAnonymousModal.vue\"),\n);\nconst CodeTagsIcon = defineAsyncComponent(\n  () => import(\"vue-material-design-icons/CodeTags.vue\"),\n);\nconst EmailNewsletterIcon = defineAsyncComponent(\n  () => import(\"vue-material-design-icons/EmailNewsletter.vue\"),\n);\nconst RssIcon = defineAsyncComponent(\n  () => import(\"vue-material-design-icons/Rss.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  podcast: { default: undefined, type: Object as () => Podcast },\n  emission: { default: undefined, type: Object as () => Emission },\n  playlist: { default: undefined, type: Object as () => Playlist },\n  participantId: { default: undefined, type: Number },\n  organisationId: { default: undefined, type: String },\n  relativeClass: { default: \"page-element\", type: String },\n  btnClass: { default: \"btn btn-transparent\", type: String },\n})\n\n//Data \nconst lazyLoadingSnackbar = ref(false);\nconst isNewsletterModal = ref(false);\nconst isQrCodeModal = ref(false);\nconst displayRss = ref(false);\nconst noSharing = ref(true);\nconst playerCanBeSharedAnonymous = ref(false);\nconst playerCanBeSharedOthers = ref(false);\nconst isLoading = ref(true);\nconst isRssModal = ref(false);\nconst isPlayerModal = ref(false);\nconst snackBarRef = useTemplateRef('snackbar');\n\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst saveFetchStore = useSaveFetchStore();\nconst { getSmartLink } = useSharePath();\n\n//Computed\nconst urlPage = computed(() => window.location.href);\nconst isPodcastmaker = computed(() => state.generalParameters.podcastmaker);\nconst rssUrl = computed(() => {\n  const api = apiStore.apiUrl + \"rss/\";\n  if (\n    (!isPodcastmaker.value && props.playlist) ||\n    props.podcast ||\n    props.emission\n  ) {\n    return \"\";\n  }\n  if (props.participantId) {\n    return api + \"participant/\" + props.participantId + \".rss\";\n  }\n  if (props.playlist) {\n    return api + \"playlist/\" + props.playlist.playlistId + \".rss\";\n  }\n  if (props.organisationId) {\n    return api + \"productor/\" + props.organisationId + \".rss\";\n  }\n  return \"\";\n});\nconst titleRssButton = computed(() => {\n  if (props.participantId) {\n    return t(\"Subscribe to this participant\");\n  }\n  if (props.emission) {\n    return t(\"Subscribe to this emission\");\n  }\n  return t(\"Subscribe to this RSS feed\");\n});\n\nconst dropdownButtons = computed(() => {\n  return [\n    {\n      title: t(\"Copy this page URL\"),\n      icon: LinkVariantIcon,\n      condition:true,\n      emitName: \"link\",\n    },\n    {\n      title: t(\"SmartLink - Share link\"),\n      icon: LinkVariantPlusIcon,\n      condition: isPodcastmaker.value && (props.emission || props.playlist),\n      emitName: \"smartlink\",\n    },\n    {\n      title: t(\"Share the player\"),\n      icon: CodeTagsIcon,\n      condition: !isPodcastmaker.value && (playerCanBeSharedAnonymous.value || (playerCanBeSharedOthers.value && authStore.authOrgaId)),\n      emitName: \"player\",\n    },\n    {\n      title: t(\"Share newsletter\"),\n      icon: EmailNewsletterIcon,\n      condition: props.podcast || props.emission || props.playlist,\n      emitName: \"newsletter\",\n    },\n    {\n      title: t(\"Share QR Code\"),\n      icon: QrcodeIcon,\n      condition: true,\n      emitName: \"qrcode\",\n    },\n    {\n      title: titleRssButton.value,\n      icon: RssIcon,\n      condition: '' !== rssUrl.value && displayRss.value && !authStore.isGarRole,\n      emitName: \"rss\",\n    },\n  ];\n});\n\n\nonBeforeMount(()=>initShareButtons())\n\n\n//Methods\nasync function initShareButtons() {\n  if (undefined !== props.participantId) {\n    displayRss.value = await classicApi.fetchData<boolean>({\n      api: 0,\n      path: `rss/participants/allowed/${props.organisationId}`,\n      isNotAuth: true,\n    });\n  } else {\n    displayRss.value = true;\n  }\n  determinePlayerCanBeShared();\n  if (!props.organisationId) {\n    return;\n  }\n  const attributes = await saveFetchStore.getOrgaAttributes(props.organisationId);\n  noSharing.value = \"true\" === attributes.noSharing;\n  isLoading.value = false;\n}\nfunction determinePlayerCanBeShared() {\n  const emissionAnnot = props.podcast?.emission.annotations ?? props.emission?.annotations;\n  if (!emissionAnnot) { return }\n  if (emissionAnnot.exclusive) {\n    playerCanBeSharedOthers.value = \"true\" !== emissionAnnot.exclusive;\n  }\n  if (emissionAnnot.notExclusive) {\n    playerCanBeSharedAnonymous.value = \"true\" === emissionAnnot.notExclusive;\n  }\n}\n\nfunction clickButton(name: string) {\n  switch (name) {\n    case \"link\":\n      displayHelper.onCopyCode(urlPage.value, afterCopy);\n      break;\n    case \"smartlink\":\n      this.openSmartLink();\n      break;\n    case \"newsletter\":\n      isNewsletterModal.value = true;\n      break;\n    case \"qrcode\":\n      isQrCodeModal.value = true;\n      break;\n    case \"rss\":\n      isRssModal.value = true;\n      break;\n    case \"player\": \n      isPlayerModal.value = true;\n      break;\n    default:\n      break;\n  }\n}\n\nfunction openSmartLink(): void {\n  const pmUrl = new URL(window.location.href);\n  const podcastmakerUrl = `${pmUrl.origin}/`;\n  let url: string;\n\n  if (props.emission) {\n    url = getSmartLink({\n      title: props.emission.name,\n      emissionId: props.emission?.emissionId,\n    }, {\n      podcastmakerUrl\n    });\n  } else if (props.playlist) {\n    url = getSmartLink({\n      title: props.playlist.title,\n      playlistId: props.playlist?.playlistId,\n    }, {\n      podcastmakerUrl\n    });\n  }\n  window.open(url, '_blank').focus();\n}\n\nfunction afterCopy(): void {\n  if (!lazyLoadingSnackbar.value) {\n    lazyLoadingSnackbar.value = true;\n    setTimeout(() => {\n      afterCopy();\n    }, 500);\n  } else {\n    (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t(\"Link in clipboard\"));\n  }\n}\n</script>\n"],"mappings":"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"}