{"version":3,"file":"tv-cloudflare.e10c52ff.js","sources":["../../src/components/tv-cloudflare.ts"],"sourcesContent":["import { defineComponent } from \"vue\";\r\nimport common from \"../core/core\";\r\nimport { Swiper, SwiperSlide } from \"swiper/vue\";\r\nimport { Swiper as SwiperCreator } from \"swiper\";\r\n\r\nimport \"@/assets/scss/poda-tv-cloudflare.scss\";\r\n\r\nconst timeToString = (time: number) => {\r\n time = Math.round(time);\r\n const m = Math.floor(time / 60);\r\n const s = time % 60;\r\n return `${m > 9 ? m.toString() : \"0\" + m}:${s > 9 ? s.toString() : \"0\" + s}`;\r\n};\r\n\r\nconst INIT_CF_PLAYER_STATE = {\r\n currentTime: \"00:00\",\r\n duration: \"00:00\",\r\n loadedPercent: 0,\r\n progressPercent: 0,\r\n paused: true,\r\n};\r\n\r\n/**\r\n * This component relies heavily on cloudflare-player-sdk.js being called BEFORE this code is executed.\r\n */\r\nexport default defineComponent({\r\n components: {\r\n Swiper,\r\n SwiperSlide,\r\n },\r\n props: [\"cloudflareCustomerId\"],\r\n data() {\r\n return {\r\n tvTabSwiper: null,\r\n tvTabIndex: 0,\r\n src: \"\",\r\n poster: \"\",\r\n step: 1,\r\n cloudflarePlayer: null,\r\n cloudflarePlayerState: { ...INIT_CF_PLAYER_STATE },\r\n };\r\n },\r\n mounted() {\r\n this.changeTvTab(0);\r\n this.tvTabSwiper = new SwiperCreator(\".poda-tv-cloudflare-tab-content .swiper-container\", {\r\n slidesPerView: 1,\r\n allowTouchMove: false,\r\n });\r\n this.createVideoPlayer();\r\n },\r\n computed: {\r\n videoIsArchive() {\r\n return this.step === 3;\r\n },\r\n videoIsRecord() {\r\n return this.step === 4;\r\n },\r\n isMainVideo() {\r\n return this.step === 1 || this.step === 2;\r\n },\r\n },\r\n methods: {\r\n changeTvTab(index: number) {\r\n const tabs: any = document.querySelectorAll(\".poda-tv-cloudflare .poda-tv-cloudflare-tab-item\");\r\n if (tabs[index]) {\r\n this.tvTabIndex = index;\r\n const line: any = document.querySelector(\".poda-tv-cloudflare-tabs__line-progress\");\r\n line.style.width = tabs[index].offsetWidth + \"px\";\r\n line.style.left = tabs[index].offsetLeft + \"px\";\r\n }\r\n this.tvTabSwiper?.slideTo(index);\r\n },\r\n setVideoSrc(src: string, poster: string) {\r\n this.destructVideoPlayer();\r\n (\r\n document.getElementById(\"tv-cloudflare-player\") as HTMLIFrameElement\r\n ).src = `https://customer-${this.cloudflareCustomerId}.cloudflarestream.com/${src}/iframe?preload=auto`;\r\n this.createVideoPlayer();\r\n this.playerSelectStep(1);\r\n },\r\n createVideoPlayer() {\r\n // Initialize cloudflare player\r\n\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n if (Stream) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n this.cloudflarePlayer = Stream(document.getElementById(\"tv-cloudflare-player\"));\r\n this.cloudflarePlayer.controls = false;\r\n this.cloudflarePlayer.addEventListener(\"durationchange\", (e: unknown) => {\r\n this.cloudflarePlayerState.duration = timeToString(this.cloudflarePlayer?.duration ?? 0);\r\n });\r\n this.cloudflarePlayer.addEventListener(\"timeupdate\", (e: unknown) => {\r\n this.cloudflarePlayerState.currentTime = timeToString(this.cloudflarePlayer?.currentTime ?? 0);\r\n this.cloudflarePlayerState.progressPercent = Math.floor(\r\n ((this.cloudflarePlayer?.currentTime ?? 0) / (this.cloudflarePlayer?.duration ?? Infinity)) * 100\r\n );\r\n });\r\n this.cloudflarePlayer.addEventListener(\"progress\", (e: unknown) => {\r\n const loadedSeconds = this.cloudflarePlayer?.buffered.ranges.find(\r\n (elem: { start: number; end: number }) => elem.start === 0\r\n )?.end;\r\n this.cloudflarePlayerState.loadedPercent = Math.floor(\r\n (loadedSeconds / (this.cloudflarePlayer?.duration ?? Infinity)) * 100\r\n );\r\n });\r\n this.cloudflarePlayer.addEventListener(\"play\", (e: unknown) => {\r\n this.cloudflarePlayerState.paused = false;\r\n });\r\n this.cloudflarePlayer.addEventListener(\"pause\", (e: unknown) => {\r\n this.cloudflarePlayerState.paused = true;\r\n });\r\n } else {\r\n console.error(\"Cloudflare stream player: Initialization attempted without initialized SDK\");\r\n }\r\n },\r\n destructVideoPlayer() {\r\n delete this.cloudflarePlayer;\r\n this.cloudflarePlayer = null;\r\n this.cloudflarePlayerState = { ...INIT_CF_PLAYER_STATE };\r\n },\r\n playerTogglePlay() {\r\n if (this.cloudflarePlayer === null) {\r\n console.warn(\"Attempt to play video before player initialized\");\r\n return;\r\n }\r\n if (this.cloudflarePlayer.paused) {\r\n this.cloudflarePlayer.play();\r\n } else {\r\n this.cloudflarePlayer.pause();\r\n }\r\n },\r\n playerPause() {\r\n this.cloudflarePlayer?.pause();\r\n },\r\n playerSetCurrentTime(e: any) {\r\n const progress = e.offsetX / e.target.closest(\".poda-tv-cloudflare__progress-lines\").offsetWidth;\r\n this.cloudflarePlayer.currentTime = progress * (this.cloudflarePlayer?.duration ?? 0);\r\n },\r\n playerSelectStep(step: number) {\r\n this.step = step;\r\n switch (step) {\r\n case 1:\r\n case 3:\r\n case 4:\r\n this.playerPause();\r\n break;\r\n case 2:\r\n this.cloudflarePlayer.currentTime = 0;\r\n break;\r\n }\r\n },\r\n getTime() {\r\n return (\r\n (this.cloudflarePlayerState.currentTime.toString() ?? \"0:00\") +\r\n \" / \" +\r\n (this.cloudflarePlayerState.duration.toString() ?? \"0:00\")\r\n );\r\n },\r\n },\r\n mixins: [common],\r\n});\r\n"],"names":["timeToString","time","m","s","INIT_CF_PLAYER_STATE","tvCloudflare","defineComponent","Swiper","SwiperSlide","SwiperCreator","index","tabs","line","_a","src","poster","_b","_d","_c","_f","_e","loadedSeconds","elem","progress","step","common"],"mappings":"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"}