{"version":3,"file":"PlayerVideoDigiteka-De0I2ofT.mjs","names":[],"sources":["../src/api/videoApi.ts","../src/components/misc/player/video/PlayerVideoDigiteka.vue","../src/components/misc/player/video/PlayerVideoDigiteka.vue"],"sourcesContent":["import { ModuleApi } from \"./apiConnection\";\nimport classicApi from \"./classicApi\";\n\n/**\n * Request the download ID from a video\n * @param podcastId The id of the podcast to be watched\n */\nasync function watchPodcast(podcastId: number): Promise<string> {\n    return classicApi.fetchData<string>({\n        api: ModuleApi.DEFAULT,\n        path: 'video/watch/' + podcastId\n    });\n}\n\nexport const videoApi = {\n    watchPodcast\n}\n","<template>\n  <div :class=\"responsive ? 'video-responsive-wrapper' : ''\">\n    <iframe\n      v-if=\"videoId\"\n      ref=\"iframeVideo\"\n      :src=\"srcVideo\"\n      :title=\"t('Video')\"\n      width=\"500\"\n      height=\"281\"\n      style=\"z-index: 1\"\n      ebkitallowfullscreen=\"true\"\n      mozallowfullscreen=\"true\"\n      allowfullscreen=\"true\"\n      allow=\"fullscreen; autoplay\"\n      referrerpolicy=\"no-referrer-when-downgrade\"\n    ></iframe>\n    <SnackBar ref=\"snackbar\" position=\"bottom-left\" />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport SnackBar from \"../../SnackBar.vue\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\n\nimport { usePlayerLogicProgress } from \"../../../composable/player/usePlayerLogicProgress\";\nimport { videoApi } from \"../../../../api/videoApi\";\n\n//Props \nconst props = defineProps({\n  videoId: { type: String, required: true },\n  podcastId: { type: Number, required: false, default: null },\n  responsive: { default: false, type: Boolean },\n})\n\n//Data\nconst snackBarRef = useTemplateRef('snackbar');\n\n//Composables\nconst { t } = useI18n();\nconst { onTimeUpdateProgress, setDownloadId } = usePlayerLogicProgress();\n\n//Computed\nconst srcVideo = computed(() => {\n  return (\n    \"//www.ultimedia.com/deliver/generic/iframe/mdtk/01009833/zone/1/showtitle/1/src/\" +\n    props.videoId +\n    \"/sound/yes/autoplay/1\"\n  );\n});\n\nonMounted(async()=>{\n  if (undefined === props.videoId) {\n    (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t(\"Podcast play error\"));\n  }\n\n  // #14118 cf https://support.digiteka.com/fr/API/Iframe#h-3-r%C3%A9ception-des-%C3%A9v%C3%A9nements-du-player\n  window.addEventListener('message', event => {\n    if (typeof event.data !== 'string') {\n      return;\n    }\n\n    const data = Object.fromEntries(event.data.split('&').map(d => d.split('=')));\n    if (data.event === 'timeupdate') {\n      onTimeUpdateProgress(parseFloat(data.time));\n    }\n  });\n\n  if (props.podcastId !== undefined) {\n    const downloadId = await videoApi.watchPodcast(props.podcastId);\n    setDownloadId(downloadId);\n  }\n})\n</script>\n\n<style scoped lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n","<template>\n  <div :class=\"responsive ? 'video-responsive-wrapper' : ''\">\n    <iframe\n      v-if=\"videoId\"\n      ref=\"iframeVideo\"\n      :src=\"srcVideo\"\n      :title=\"t('Video')\"\n      width=\"500\"\n      height=\"281\"\n      style=\"z-index: 1\"\n      ebkitallowfullscreen=\"true\"\n      mozallowfullscreen=\"true\"\n      allowfullscreen=\"true\"\n      allow=\"fullscreen; autoplay\"\n      referrerpolicy=\"no-referrer-when-downgrade\"\n    ></iframe>\n    <SnackBar ref=\"snackbar\" position=\"bottom-left\" />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport SnackBar from \"../../SnackBar.vue\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\n\nimport { usePlayerLogicProgress } from \"../../../composable/player/usePlayerLogicProgress\";\nimport { videoApi } from \"../../../../api/videoApi\";\n\n//Props \nconst props = defineProps({\n  videoId: { type: String, required: true },\n  podcastId: { type: Number, required: false, default: null },\n  responsive: { default: false, type: Boolean },\n})\n\n//Data\nconst snackBarRef = useTemplateRef('snackbar');\n\n//Composables\nconst { t } = useI18n();\nconst { onTimeUpdateProgress, setDownloadId } = usePlayerLogicProgress();\n\n//Computed\nconst srcVideo = computed(() => {\n  return (\n    \"//www.ultimedia.com/deliver/generic/iframe/mdtk/01009833/zone/1/showtitle/1/src/\" +\n    props.videoId +\n    \"/sound/yes/autoplay/1\"\n  );\n});\n\nonMounted(async()=>{\n  if (undefined === props.videoId) {\n    (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t(\"Podcast play error\"));\n  }\n\n  // #14118 cf https://support.digiteka.com/fr/API/Iframe#h-3-r%C3%A9ception-des-%C3%A9v%C3%A9nements-du-player\n  window.addEventListener('message', event => {\n    if (typeof event.data !== 'string') {\n      return;\n    }\n\n    const data = Object.fromEntries(event.data.split('&').map(d => d.split('=')));\n    if (data.event === 'timeupdate') {\n      onTimeUpdateProgress(parseFloat(data.time));\n    }\n  });\n\n  if (props.podcastId !== undefined) {\n    const downloadId = await videoApi.watchPodcast(props.podcastId);\n    setDownloadId(downloadId);\n  }\n})\n</script>\n\n<style scoped lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n"],"mappings":";;;;;;;;;;;AAOA,eAAe,aAAa,WAAoC;CAC5D,OAAO,mBAAW,UAAkB;EAChC,KAAK,UAAU;EACf,MAAM,iBAAiB;CAC3B,CAAC;AACL;AAEA,IAAa,WAAW,EACpB,aACJ;;;;;;;;;;;;;;;;;;;;;;ECaA,MAAM,QAAQ;EAOd,MAAM,cAAc,eAAe,UAAU;EAG7C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,sBAAsB,kBAAkB,uBAAuB;EAGvE,MAAM,WAAW,eAAe;GAC9B,OACE,qFACA,MAAM,UACN;EAEJ,CAAC;EAED,UAAU,YAAS;GACjB,IAAI,KAAA,MAAc,MAAM,SACtB,CAAC,aAAa,OAAwC,KAAK,EAAE,oBAAoB,CAAC;GAIpF,OAAO,iBAAiB,YAAW,UAAS;IAC1C,IAAI,OAAO,MAAM,SAAS,UACxB;IAGF,MAAM,OAAO,OAAO,YAAY,MAAM,KAAK,MAAM,GAAG,EAAE,KAAI,MAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IAC5E,IAAI,KAAK,UAAU,cACjB,qBAAqB,WAAW,KAAK,IAAI,CAAC;GAE9C,CAAC;GAED,IAAI,MAAM,cAAc,KAAA,GAEtB,cAAc,MADW,SAAS,aAAa,MAAM,SAAS,CACtC;EAE5B,CAAC;;;;;;;;;;;;;;;;;;;;;qBCvEC,mBAgBM,OAAA,EAhBA,OAAK,eAAE,OAAA,aAAU,6BAAA,EAAA,EAAA,GAAA,CAEb,OAAA,WAAA,UAAA,GADR,mBAaU,UAAA;;EAXR,KAAI;EACH,KAAK,OAAA;EACL,OAAO,OAAA,EAAC,OAAA;EACT,OAAM;EACN,QAAO;EACP,OAAA,EAAA,WAAA,IAAA;EACA,sBAAqB;EACrB,oBAAmB;EACnB,iBAAgB;EAChB,OAAM;EACN,gBAAe;8DAEjB,YAAkD,OAAA,aAAA;EAAxC,KAAI;EAAW,UAAS"}