{"version":3,"file":"PodcastProgressBar-CUiofl1E.mjs","names":[],"sources":["../src/components/misc/player/progressbar/PodcastProgressBar.vue","../src/components/misc/player/progressbar/PodcastProgressBar.vue"],"sourcesContent":["<template>\n  <ProgressBar\n    v-if=\"!playerError\"\n    :main-progress=\"percentProgress\"\n    :secondary-progress=\"percentLiveProgress\"\n    :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n    :class=\"classProgress\"\n    :in-player=\"true\"\n    @mouseup=\"seekTo\"\n  />\n  <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport {  defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n  () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  classProgress: { default: \"\", type: String },\n  showComments: { default: false, type: Boolean },\n  displayAlertBar: { default: false, type: Boolean },\n  percentLiveProgress: { default: 0, type: Number },\n  durationLivePosition: { default: 0, type: Number },\n  playerError: { default: false, type: Boolean },\n  listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n  if (!playerStore.playerElapsed) {\n    return 0;\n  }\n  return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n  const audioPlayer: HTMLAudioElement | null =\n    document.querySelector(\"#audio-player\");\n  if (!audioPlayer || null === event.currentTarget) {\n    return;\n  }\n  const rect = (event.currentTarget as Element).getBoundingClientRect();\n  const barWidth = (event.currentTarget as Element).clientWidth;\n  const x = event.clientX - rect.left;\n  const percentPosition = x / barWidth;\n  if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n  const seekTime = playerStore.playerTotal * percentPosition;\n  isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n  if (playerStore.playerPodcast || playerStore.playerLive) {\n    playerStore.playerUpdateSeekTime(seekTime);\n  } else {\n    audioPlayer.currentTime = seekTime;\n  }\n}\n</script>\n","<template>\n  <ProgressBar\n    v-if=\"!playerError\"\n    :main-progress=\"percentProgress\"\n    :secondary-progress=\"percentLiveProgress\"\n    :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n    :class=\"classProgress\"\n    :in-player=\"true\"\n    @mouseup=\"seekTo\"\n  />\n  <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport {  defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n  () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n  classProgress: { default: \"\", type: String },\n  showComments: { default: false, type: Boolean },\n  displayAlertBar: { default: false, type: Boolean },\n  percentLiveProgress: { default: 0, type: Number },\n  durationLivePosition: { default: 0, type: Number },\n  playerError: { default: false, type: Boolean },\n  listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n  if (!playerStore.playerElapsed) {\n    return 0;\n  }\n  return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n  const audioPlayer: HTMLAudioElement | null =\n    document.querySelector(\"#audio-player\");\n  if (!audioPlayer || null === event.currentTarget) {\n    return;\n  }\n  const rect = (event.currentTarget as Element).getBoundingClientRect();\n  const barWidth = (event.currentTarget as Element).clientWidth;\n  const x = event.clientX - rect.left;\n  const percentPosition = x / barWidth;\n  if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n  const seekTime = playerStore.playerTotal * percentPosition;\n  isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n  if (playerStore.playerPodcast || playerStore.playerLive) {\n    playerStore.playerUpdateSeekTime(seekTime);\n  } else {\n    audioPlayer.currentTime = seekTime;\n  }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,gBAAgB,2BACd,OAAO,+BACf;EAGA,MAAM,QAAQ;EAWd,MAAM,cAAc,eAAe;EAInC,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAID,SAAS,OAAO,OAAyB;GACvC,MAAM,cACJ,SAAS,cAAc,eAAe;GACxC,IAAI,CAAC,eAAe,SAAS,MAAM,eACjC;GAEF,MAAM,OAAQ,MAAM,cAA0B,sBAAsB;GACpE,MAAM,WAAY,MAAM,cAA0B;GAElD,MAAM,mBADI,MAAM,UAAU,KAAK,QACH;GAC5B,IAAI,YAAY,cAAc,kBAAkB,OAAO,MAAM,qBAAqB;GAElF,SAAS,aADQ,YAAY,cAAc,eACb;EAChC;EACA,SAAS,SAAS,aAA+B,UAAwB;GACvE,IAAI,YAAY,iBAAiB,YAAY,YAC3C,YAAY,qBAAqB,QAAQ;QAEzC,YAAY,cAAc;EAE9B;;;;;;;;;;;;;;;;;;;;0DChEW,OAAA,eAAA,UAAA,GADT,YAQE,OAAA,gBAAA;;EANC,iBAAe,OAAA;EACf,sBAAoB,OAAA;EACpB,aAAW,OAAA,kBAAkB,OAAA,uBAAuB,KAAA;EACpD,OAAK,eAAE,OAAA,aAAa;EACpB,aAAW;EACX,WAAS,OAAA;;;;;;yCAES,OAAA,gBAAA,UAAA,GAArB,YAAqC,OAAA,kBAAA,EAAA,KAAA,EAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,EAAA"}