{"version":3,"sources":["../ui/src/components/player-core/players/nonStaticVideoTag.tsx"],"sourcesContent":["import { LiveWindow, conditions, getSubtitleLabel, videoTag } from \"helpers\";\r\nimport Hls from \"hls.js\";\r\nimport Image from \"next/image\";\r\nimport { useEffect, useState, useRef, useLayoutEffect } from 'react'\r\nimport { appendQueryParamsToChunksIOS, handleFragBuffered, handleFragChanged, handleFragLoading, handleFragParsed, handleHlsConfig, handleHlsErrors, handleIosVideoEnded, handleIosVideoPlay, handleIosVideoPlaying, handleIosVideoTimeUpdate, handleManifestLoaded, handleManifestParsed, handleMediaAttached, handleVideoCanPlay, handleVideoEnded, handleVideoError, handleVideoPause, handleVideoPlay, handleVideoPlaying, handleVideoSeeking, handleVideoTimeUpdate, handleVideoVisibilityChange, handleVideoWaiting } from \"../../../../../redux/actions\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../../../redux/hooks\";\r\nimport { setIsEnded, setIsLive } from \"../../../../../redux/slices/controllerSlice\";\r\nimport usePingPong from \"helpers/hooks/usePingPong\";\r\nimport { ConditionName, ISubtitle } from \"../../../../../interfaces\";\r\nimport { handlePageLoadTime } from \"../../../../../helpers\";\r\nimport { setAutoPlayPopover, setRecommendListPopover } from \"redux-share/slices/popoversSlice\";\r\nimport { shallowEqual } from 'react-redux'\r\nimport useBackButton from \"helpers/hooks/useBackButton\";\r\nimport useBeforeUnload from \"helpers/hooks/useBeforeUnload\";\r\nimport useRouteChange from \"helpers/hooks/useRouteChange\";\r\n\r\nconst NonStaticVideoTag = () => {\r\n    const [qualityLevel, setQualityLevel] = useState<number | undefined>(undefined);\r\n\r\n    const dispatch = useAppDispatch();\r\n    const { params, details, videoElementSizeInfo, ads } = useAppSelector(({ videoData: { params, details, videoElementSizeInfo, ads, isComplexPortrait, subtitles } }) => ({ params, details, videoElementSizeInfo, ads, isComplexPortrait, subtitles }), shallowEqual);\r\n    const { hlsLiveSyncPosition, currentTime, duration } = useAppSelector(({ controller: { hlsLiveSyncPosition, currentTime, duration, isEnded, firstPlay, showMiniPlayer } }) => ({ hlsLiveSyncPosition, currentTime, duration, isEnded, firstPlay, showMiniPlayer }), shallowEqual);\r\n    const timerRef = useRef<any>(null);\r\n    const waitingDurationRef = useRef<any>(0);\r\n    const waitingTimerRef = useRef<number>(0);\r\n    const initialWaitingDurationRef = useRef<any>(0);\r\n    const bannerLoadingDurationRef = useRef<any>(0);\r\n    const loadingDurationRef = useRef<any>(0);\r\n    const loadingCounterRef = useRef<any>(1);\r\n    const videoEntranceTimeRef = useRef<any>(videoTag() ? videoTag().currentTime : 0);\r\n    \r\n    useBackButton();\r\n    useBeforeUnload();\r\n    useRouteChange();\r\n\r\n  useEffect(() => {\r\n    if (videoEntranceTimeRef.current === 0 && conditions(ConditionName.isLiveParam) && videoTag()) videoEntranceTimeRef.current = videoTag().currentTime\r\n  }, [videoTag()])\r\n\r\n  useLayoutEffect(() => {\r\n    let hls = new Hls(handleHlsConfig())\r\n\r\n    // ---- Page Load Time ----\r\n    handlePageLoadTime(loadingDurationRef)\r\n\r\n    initialWaitingDurationRef.current = Date.now()\r\n\r\n    if (Hls.isSupported()) {\r\n      hls.attachMedia(videoTag() as HTMLMediaElement)\r\n      hls.on(Hls.Events.MEDIA_ATTACHED, () => handleMediaAttached(Hls, hls))\r\n      hls.on(Hls.Events.FRAG_BUFFERED, () => handleFragBuffered(hls))\r\n      hls.on(Hls.Events.FRAG_LOADING, () => handleFragLoading(hls))\r\n      hls.on(Hls.Events.FRAG_CHANGED, (event: any, data: any) => handleFragChanged(Hls, hls, data, setQualityLevel))\r\n      hls.on(Hls.Events.FRAG_PARSED, (event: any, data: any) => handleFragParsed(hls, data, setQualityLevel))\r\n      hls.on(Hls.Events.ERROR, (event: any, data: any) => handleHlsErrors(Hls, data))\r\n\r\n      videoTag().addEventListener('waiting', (event: any) => handleVideoWaiting(event, waitingTimerRef))\r\n      videoTag().addEventListener('seeking', (event: any) => handleVideoSeeking(event, waitingTimerRef))\r\n      videoTag().addEventListener('play', (event: any) => handleVideoPlay(event, timerRef))\r\n      videoTag().addEventListener('playing', () => handleVideoPlaying(loadingCounterRef, loadingDurationRef, initialWaitingDurationRef, bannerLoadingDurationRef, timerRef, waitingDurationRef, waitingTimerRef, videoEntranceTimeRef))\r\n      videoTag().addEventListener('pause', handleVideoPause)\r\n      videoTag().addEventListener('timeupdate', handleVideoTimeUpdate)\r\n      videoTag().addEventListener('canplay', handleVideoCanPlay)\r\n      videoTag().addEventListener('ended', handleVideoEnded)\r\n      videoTag().addEventListener('error', handleVideoError)\r\n\r\n      document.addEventListener(\"visibilitychange\", () => handleVideoVisibilityChange(hls));\r\n\r\n    } else if (videoTag().canPlayType('application/vnd.apple.mpegurl')) {\r\n      videoTag().src = conditions(ConditionName.isGeneral) ? params.src! : details.stream_link\r\n\r\n      videoTag().addEventListener('waiting', (event: any) => handleVideoWaiting(event, waitingTimerRef))\r\n      videoTag().addEventListener('play', (event: any) => handleIosVideoPlay(event, timerRef))\r\n      videoTag().addEventListener('playing', handleIosVideoPlaying)\r\n      videoTag().addEventListener('canplay', handleVideoCanPlay)\r\n      videoTag().addEventListener('timeupdate', handleIosVideoTimeUpdate)\r\n      videoTag().addEventListener('ended', handleIosVideoEnded)\r\n      videoTag().addEventListener('ended', handleVideoEnded)\r\n\r\n      // Append Query Parameter to .ts Chunks\r\n      appendQueryParamsToChunksIOS()\r\n    }\r\n\r\n    return () => {\r\n      hls.detachMedia()\r\n      hls.off(Hls.Events.MEDIA_ATTACHED, () => handleMediaAttached(Hls, hls))\r\n      hls.off(Hls.Events.FRAG_BUFFERED, () => handleFragBuffered(hls))\r\n      hls.off(Hls.Events.FRAG_LOADING, () => handleFragLoading(hls))\r\n      hls.off(Hls.Events.FRAG_CHANGED, (event: any, data: any) => handleFragChanged(Hls, hls, data, setQualityLevel))\r\n      hls.off(Hls.Events.FRAG_PARSED, (event: any, data: any) => handleFragParsed(hls, data, setQualityLevel))\r\n      hls.off(Hls.Events.ERROR, (event: any, data: any) => handleHlsErrors(Hls, data))\r\n      hls.off(Hls.Events.MANIFEST_PARSED, (event: any, data: any) => handleManifestParsed(hls, data))\r\n      hls.off(Hls.Events.MANIFEST_LOADED, () => handleManifestLoaded(hls));\r\n      document.removeEventListener(\"visibilitychange\", () => handleVideoVisibilityChange(hls));\r\n    }\r\n\r\n  }, [details.stream_link, ads.adStreamLink])\r\n  useEffect(() => {\r\n    if (conditions(ConditionName.isLiveParam) && videoTag()) {\r\n      if (videoTag().currentTime < hlsLiveSyncPosition - LiveWindow) dispatch(setIsLive(false))\r\n      else dispatch(setIsLive(true))\r\n    }\r\n  }, [hlsLiveSyncPosition])\r\n\r\n  useEffect(() => {\r\n    const tracks = videoTag().getElementsByTagName('track')\r\n    for (let i = 0; i < tracks.length; i++) {\r\n      tracks[i].addEventListener('cuechange', (event) => {\r\n        const track = (event.target! as any).track\r\n        let activeCue: any\r\n        if (track.activeCues) activeCue = track.activeCues[0]\r\n        if (activeCue) {\r\n          setTimeout(() => {\r\n            const el = document.getElementById('subtitle-id')\r\n            if (el) el.style.display = 'block'\r\n          }, 300)\r\n\r\n          activeCue.onexit = () => {\r\n            const el = document.getElementById('subtitle-id')\r\n            if (el) el.style.display = 'none'\r\n          }\r\n        }\r\n      })\r\n    }\r\n  }, [details.subtitles!])\r\n\r\n    useEffect(() => {\r\n        if (currentTime < duration && conditions(ConditionName.isEnded)) {\r\n            dispatch(setIsEnded(false));\r\n            dispatch(setAutoPlayPopover(false));\r\n            dispatch(setRecommendListPopover(false));\r\n        }\r\n    }, [currentTime])\r\n\r\n  usePingPong(qualityLevel)\r\n\r\n  return (\r\n    <>\r\n      {conditions(ConditionName.showBanner) && <Image src={details.banner} width={0} height={0} className='pl-hidden'\r\n                                                      onLoad={() => bannerLoadingDurationRef.current = Date.now()}\r\n                                                      alt={details.title ?? params.id!} />}\r\n\r\n      <video\r\n        preload='metadata'\r\n        crossOrigin='anonymous'\r\n        id={conditions(ConditionName.isPlayingAd) ? 'ad-player-tag' : 'player-tag'}\r\n        playsInline\r\n        muted={conditions(ConditionName.isRaw)}\r\n        className={`pl-items-center pl-flex-1 ${conditions(ConditionName.isPlayingAd) && 'pl-absolute z-[100000]'} ${!conditions(ConditionName.hasQuizParams) && (conditions(ConditionName.isComplexPortrait) ? 'pl-h-auto' : 'pl-h-full')}`}\r\n        style={{\r\n          width: '100%',\r\n          opacity: conditions(ConditionName.isFirstPlay) ? 0 : 1,\r\n          height: conditions(ConditionName.hasQuizParams) ? '100vh' : '100%',\r\n          maxWidth: videoElementSizeInfo.width ? videoElementSizeInfo.width : '100%',\r\n          maxHeight: videoElementSizeInfo.width ? (videoElementSizeInfo.width < videoElementSizeInfo.height ? (videoElementSizeInfo.width * 9) / 16 : (videoElementSizeInfo.width * 16) / 9) : '100%',\r\n        }}\r\n        autoPlay={conditions(ConditionName.hasAutoPlay) || conditions(ConditionName.isRaw)}\r\n      >\r\n        {conditions(ConditionName.hasSubtitles) && details.subtitles!.map((subtitle: ISubtitle) =>\r\n          <track\r\n            id={'player-tracker'}\r\n            key={subtitle.id} src={subtitle.url} label={getSubtitleLabel(subtitle.lang)} kind='subtitles'\r\n            srcLang={subtitle.lang} default={subtitle.lang === 'fa'} />)}\r\n      </video>\r\n    </>\r\n  )\r\n}\r\n\r\nexport default NonStaticVideoTag"],"mappings":"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","names":["init_esm_shims","Hls","Image","useEffect","useState","useRef","useLayoutEffect","shallowEqual","Fragment","jsx","jsxs","NonStaticVideoTag","qualityLevel","setQualityLevel","useState","dispatch","useAppDispatch","params","details","videoElementSizeInfo","ads","useAppSelector","isComplexPortrait","subtitles","shallowEqual","hlsLiveSyncPosition","currentTime","duration","isEnded","firstPlay","showMiniPlayer","timerRef","useRef","waitingDurationRef","waitingTimerRef","initialWaitingDurationRef","bannerLoadingDurationRef","loadingDurationRef","loadingCounterRef","videoEntranceTimeRef","videoTag","useBackButton_default","useBeforeUnload_default","useRouteChange_default","useEffect","conditions","useLayoutEffect","hls","Hls","handleHlsConfig","handlePageLoadTime","handleMediaAttached","handleFragBuffered","handleFragLoading","event","data","handleFragChanged","handleFragParsed","handleHlsErrors","handleVideoWaiting","handleVideoSeeking","handleVideoPlay","handleVideoPlaying","handleVideoPause","handleVideoTimeUpdate","handleVideoCanPlay","handleVideoEnded","handleVideoError","handleVideoVisibilityChange","handleIosVideoPlay","handleIosVideoPlaying","handleIosVideoTimeUpdate","handleIosVideoEnded","appendQueryParamsToChunksIOS","handleManifestParsed","handleManifestLoaded","LiveWindow","setIsLive","tracks","i","track","activeCue","el","setIsEnded","setAutoPlayPopover","setRecommendListPopover","usePingPong_default","Image","subtitle","getSubtitleLabel","nonStaticVideoTag_default"]}