cafe-video-player 3.0.16 → 3.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/index.cjs +10 -0
  2. package/index.cjs.map +1 -0
  3. package/index.js +9 -1
  4. package/index.js.map +1 -1
  5. package/package.json +11 -5
  6. package/VideoHighLighter-32JJMCVS.mjs +0 -2
  7. package/VideoHighLighter-32JJMCVS.mjs.map +0 -1
  8. package/VideoHighLighter-6MYR26HW.js +0 -2
  9. package/VideoHighLighter-6MYR26HW.js.map +0 -1
  10. package/backwardForward-3X63XNNJ.mjs +0 -2
  11. package/backwardForward-3X63XNNJ.mjs.map +0 -1
  12. package/backwardForward-HTLSZBXC.js +0 -2
  13. package/backwardForward-HTLSZBXC.js.map +0 -1
  14. package/chunk-2DV7FRU5.mjs +0 -2
  15. package/chunk-2DV7FRU5.mjs.map +0 -1
  16. package/chunk-3TPEXSZV.js +0 -2
  17. package/chunk-3TPEXSZV.js.map +0 -1
  18. package/chunk-4QMWBTB5.mjs +0 -2
  19. package/chunk-4QMWBTB5.mjs.map +0 -1
  20. package/chunk-5UGSCO4K.js +0 -3
  21. package/chunk-5UGSCO4K.js.map +0 -1
  22. package/chunk-6LGS5W4B.mjs +0 -2
  23. package/chunk-6LGS5W4B.mjs.map +0 -1
  24. package/chunk-AK5TFAW3.js +0 -2
  25. package/chunk-AK5TFAW3.js.map +0 -1
  26. package/chunk-AN6JAJSI.js +0 -2
  27. package/chunk-AN6JAJSI.js.map +0 -1
  28. package/chunk-B4IVZEZN.mjs +0 -2
  29. package/chunk-B4IVZEZN.mjs.map +0 -1
  30. package/chunk-BNVNO5NH.js +0 -2
  31. package/chunk-BNVNO5NH.js.map +0 -1
  32. package/chunk-CG2KA4BX.js +0 -2
  33. package/chunk-CG2KA4BX.js.map +0 -1
  34. package/chunk-COYFW7R4.js +0 -3
  35. package/chunk-COYFW7R4.js.map +0 -1
  36. package/chunk-FXAWDALE.mjs +0 -2
  37. package/chunk-FXAWDALE.mjs.map +0 -1
  38. package/chunk-HOAJ3EFI.mjs +0 -3
  39. package/chunk-HOAJ3EFI.mjs.map +0 -1
  40. package/chunk-HZASW2B2.js +0 -2
  41. package/chunk-HZASW2B2.js.map +0 -1
  42. package/chunk-K4YPVDEE.js +0 -2
  43. package/chunk-K4YPVDEE.js.map +0 -1
  44. package/chunk-KSZ35TPK.js +0 -2
  45. package/chunk-KSZ35TPK.js.map +0 -1
  46. package/chunk-NLCBOGTI.mjs +0 -3
  47. package/chunk-NLCBOGTI.mjs.map +0 -1
  48. package/chunk-P4O3IKAQ.mjs +0 -2
  49. package/chunk-P4O3IKAQ.mjs.map +0 -1
  50. package/chunk-QFADUEGX.mjs +0 -2
  51. package/chunk-QFADUEGX.mjs.map +0 -1
  52. package/chunk-QXTVEBKD.mjs +0 -2
  53. package/chunk-QXTVEBKD.mjs.map +0 -1
  54. package/chunk-QXX6LI3R.mjs +0 -9
  55. package/chunk-QXX6LI3R.mjs.map +0 -1
  56. package/chunk-UL5LQB3G.mjs +0 -2
  57. package/chunk-UL5LQB3G.mjs.map +0 -1
  58. package/chunk-VF6ZSAIO.js +0 -9
  59. package/chunk-VF6ZSAIO.js.map +0 -1
  60. package/chunk-VUHZVVMS.js +0 -3
  61. package/chunk-VUHZVVMS.js.map +0 -1
  62. package/chunk-X7QXUGD2.js +0 -2
  63. package/chunk-X7QXUGD2.js.map +0 -1
  64. package/chunk-XKRBXZUB.mjs +0 -3
  65. package/chunk-XKRBXZUB.mjs.map +0 -1
  66. package/index.mjs +0 -2
  67. package/index.mjs.map +0 -1
  68. package/nonStaticVideoTag-5HEUBWAN.js +0 -2
  69. package/nonStaticVideoTag-5HEUBWAN.js.map +0 -1
  70. package/nonStaticVideoTag-P47FI6UV.mjs +0 -2
  71. package/nonStaticVideoTag-P47FI6UV.mjs.map +0 -1
  72. package/notActive-DRH5BEL5.js +0 -2
  73. package/notActive-DRH5BEL5.js.map +0 -1
  74. package/notActive-DSDPVSW4.mjs +0 -2
  75. package/notActive-DSDPVSW4.mjs.map +0 -1
  76. package/staticPlayer-4CLY5WJL.mjs +0 -2
  77. package/staticPlayer-4CLY5WJL.mjs.map +0 -1
  78. package/staticPlayer-7UUHF6G2.js +0 -2
  79. package/staticPlayer-7UUHF6G2.js.map +0 -1
  80. package/staticVideoTag-JOPHGL3R.mjs +0 -2
  81. package/staticVideoTag-JOPHGL3R.mjs.map +0 -1
  82. package/staticVideoTag-OZZU5MWF.js +0 -2
  83. package/staticVideoTag-OZZU5MWF.js.map +0 -1
  84. package/videoArea-PC67BM4S.js +0 -2
  85. package/videoArea-PC67BM4S.js.map +0 -1
  86. package/videoArea-W2FPLLPE.mjs +0 -2
  87. package/videoArea-W2FPLLPE.mjs.map +0 -1
  88. package/vodPlayer-7T7LLFRE.mjs +0 -2
  89. package/vodPlayer-7T7LLFRE.mjs.map +0 -1
  90. package/vodPlayer-BXPUGCRK.js +0 -2
  91. package/vodPlayer-BXPUGCRK.js.map +0 -1
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/videoPlayerLibrary/index.ts","../src/videoPlayerLibrary/videoPlayerLibrary.tsx","../src/videoPlayerLibrary/components/videoPlayer/videoPlayer.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleParams.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleKeyPress.tsx","../src/videoPlayerLibrary/components/custom-components/advertisement/Advertisement.tsx","../src/videoPlayerLibrary/helpers/errorBoundary/errorBoundary.tsx","../src/videoPlayerLibrary/miniPlayerLibrary.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/miniPlayer.tsx","../src/videoPlayerLibrary/components/custom-components/playPause/miniPlayerPlayPause.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/videoTag/videoTag.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/videoTag/miniPlayerNonStaticVideoTag.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/videoTag/miniPlayerStaticVideoTag.tsx"],"names":["init_cjs_shims","useHandleParams","query","dispatch","useAppDispatch","queryParams","handleSetParamsInRedux","setPlayerParams","setIsReady","handleAddUUID","handleVodParams","handleStaticParams","getUUID","handleSubtitles","validSubtitles","filterValidSubtitles","setRawSubtitles","handleParams","useEffect","useHandleParams_default","useHandleKeyPress","useKeyPress_default","event","conditions","handlePlayPause","handleFullScreen","settings","store_default","handleChangeSoundVolume","useHandleKeyPress_default","Advertisement","src","onEndAd","onSkipAd","skipDelay","adText","onClickAd","containerRef","useRef","videoRef","firstMute","useAppSelector","shallowEqual","progress","setProgress","useState","buffered","setBuffered","hasSkip","skipCounter","setSkipCounter","isCounting","setIsCounting","currentTime","setCurrentTime","duration","setDuration","showControls","setShowControls","hideControlsTimeout","isPaused","setIsPaused","reveresElapsedTime","setReveresElapsedTime","resetHideControlsTimer","delay","videoContainer","mouseMoveHandler","touchStartHandler","interval","prev","video","handlePlay","handlePlaying","handlePause","handleWaiting","handleError","handleLoadedMetadata","setupAutoplayBehavior","handleTimeUpdate","handleProgress","handleClick","e","firstUnMuteHandler","setPlay","handleAdClick","formatTime","time","minutes","seconds","jsxs","handleLockOrientation","tw","jsx","Image","importImages_default","SoundVolumeAlert_default","ProgressBar","fullScreen_default","Fragment","soundVolume_default","playPause_default","styleMerge","Advertisement_default","StaticPlayer","dynamic","VodPlayer","VideoHighLighter","VideoPlayer","props","params","isLoading","firstPlay","isReady","hiddenAd","clearRedux","isFullScreen","setHiddenAd","element","isShowLoader","loader_default","videoPlayer_default","ErrorBoundary","React","error","errorInfo","errorLogProvider","errorBoundary_default","VideoPlayerLibrary","isClient","setIsClient","Provider","MiniPlayerPlayPause","play","handlePlayerPauseMiniPlayer","miniPlayerPlayPause_default","MiniPlayerNonStaticVideoTag","details","state","hls","Hls","handleMiniPlayerHlsConfig","handleMiniPlayerMediaAttached","mainPlayerVideoTag","appendQueryParamsToChunksIOS","setClearMiniPlayerSlice","setPlayMiniPlayer","miniPlayerVideoTag","handleVideoError","miniPlayerNonStaticVideoTag_default","MiniPlayerStaticVideoTag","miniPlayerStaticVideoTag_default","VideoTag","type","videoTag_default","MiniPlayer","miniPlayerParams","mainPlayerParams","setMiniPlayerInfo","handleGetDetail","getVodDetails","MiniPlayerLibrary"],"mappings":"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","file":"index.js","sourcesContent":["export { VideoPlayerLibrary } from \"./videoPlayerLibrary\";\nexport { MiniPlayerLibrary } from \"./miniPlayerLibrary\";\n","\"use client\";\n\nimport { Provider } from \"react-redux\";\nimport { IParams } from \"./helpers/interfaces/interfaces\";\nimport store from \"./helpers/redux/store\";\nimport VideoPlayer from \"./components/videoPlayer/videoPlayer\";\nimport ErrorBoundary from \"./helpers/errorBoundary/errorBoundary\";\nimport { conditions } from \"./helpers/conditions/conditions\";\nimport { ConditionName } from \"./helpers/interfaces/enums\";\nimport { useEffect, useState } from \"react\";\n\nexport const VideoPlayerLibrary = ({ params }: { params: IParams }) => {\n const [isClient, setIsClient] = useState(false);\n\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n if (!isClient) return null;\n\n return (\n <Provider store={store}>\n <ErrorBoundary>\n <div id=\"video-player-container\" className={`${!conditions(ConditionName.isTouchScreen) && \"pl-overflow-hidden\"}`}>\n <VideoPlayer params={params} />\n </div>\n </ErrorBoundary>\n </Provider>\n );\n};\n","\"use client\";\n\nimport { conditions } from \"../../helpers/conditions/conditions\";\nimport useHandleParams from \"../../helpers/hooks/useHandleParams\";\nimport { ConditionName, zIndex } from \"../../helpers/interfaces/enums\";\nimport { IParams } from \"../../helpers/interfaces/interfaces\";\nimport { useAppDispatch, useAppSelector } from \"../../helpers/redux/hooks\";\nimport { shallowEqual } from \"react-redux\";\nimport dynamic from \"next/dynamic\";\nimport useHandleKeyPress from \"../../helpers/hooks/useHandleKeyPress\";\nimport { useEffect } from \"react\";\nimport { clearRedux, tw } from \"../../helpers/helpers\";\nimport Loader from \"../custom-components/loader/loader\";\nimport { setHiddenAd } from \"../../helpers/redux/slices/videoDataSlice\";\nimport Advertisement from \"../custom-components/advertisement/Advertisement\";\n\nconst StaticPlayer = dynamic(() => import(\"./staticPlayer/staticPlayer\"));\nconst VodPlayer = dynamic(() => import(\"./vodPlayer/vodPlayer\"));\nconst VideoHighLighter = dynamic(() => import(\"./videoHighLighter/VideoHighLighter\"));\n\ninterface IProps {\n params: IParams;\n}\n\nconst VideoPlayer = (props: IProps) => {\n const dispatch = useAppDispatch();\n const { params, isLoading, firstPlay } = useAppSelector(\n ({ videoData: { isReady, params, hiddenAd }, controller: { isLoading, firstPlay } }) => ({ isReady, params, hiddenAd, isLoading, firstPlay }),\n shallowEqual,\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (params.id && props.params.id !== params.id) {\n // if (params.type === PlayerTypes.static) {\n // mainPlayerVideoTag()?.pause();\n // mainPlayerVideoTag().removeAttribute(\"src\");\n // mainPlayerVideoTag().load();\n // }\n clearRedux();\n }\n return () => {\n clearRedux();\n };\n }, [props.params.id]);\n\n useHandleParams(props.params);\n useHandleKeyPress();\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\n\n if (props.params.vhl_status) return <VideoHighLighter />;\n if (conditions(ConditionName.hasAdvertisement))\n return (\n <Advertisement\n src={params.advertisement?.videoUrl!}\n onSkipAd={(currentTime) => {\n dispatch(setHiddenAd(true));\n if (params.advertisement?.onSkipAd) params.advertisement.onSkipAd(currentTime);\n }}\n onEndAd={(currentTime) => {\n dispatch(setHiddenAd(true));\n if (params.advertisement?.onEndAd) params.advertisement.onEndAd(currentTime);\n }}\n skipDelay={params.advertisement?.skipDelay}\n adText={params.advertisement?.adText}\n onClickAd={params.advertisement?.onClickAd}\n />\n );\n\n let element = <></>;\n if (conditions(ConditionName.isReady)) {\n element = (\n <div className={tw(\"\", { desktop: \"pl-rounded-[12px]\" })} style={{ touchAction: \"pan-y\", userSelect: \"none\" }}>\n {conditions(ConditionName.isStaticFormat) ? <StaticPlayer /> : <VodPlayer />}\n </div>\n );\n }\n\n const isShowLoader = firstPlay && isLoading;\n\n return (\n <div\n dir=\"rtl\"\n style={{ zIndex: zIndex.videoPlayerInFullScreen }}\n id=\"parent-player\"\n className={tw(`pl-relative pl-bg-black pl-w-full pl-h-full pl-aspect-video`, {\n desktop: \"pl-rounded-[12px]\",\n touch: \"\",\n desktopFullScreen: \"pl-overflow-hidden pl-fixed pl-top-0 pl-right-0 pl-w-screen pl-h-screen pl-rounded-none\",\n touchFullScreen: \"pl-overflow-hidden pl-fixed pl-top-0 pl-right-0 pl-w-screen pl-h-screen\",\n })}\n >\n {isShowLoader && (\n <div className={tw(\"pl-absolute pl-w-full pl-h-full pl-aspect-video\", { desktop: \"pl-rounded-[12px]\" })}>\n <Loader />\n </div>\n )}\n {element}\n </div>\n );\n};\n\nexport default VideoPlayer;\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { getUUID } from \"../helpers\";\nimport { useAppDispatch } from \"../redux/hooks\";\nimport { IParams } from \"../interfaces/interfaces\";\nimport {\n setIsReady,\n setPlayerParams,\n setRawSubtitles,\n} from \"../redux/slices/videoDataSlice\";\nimport { PlayerTypes } from \"../interfaces/enums\";\nimport { filterValidSubtitles } from \"../redux/actions/videoData.actions\";\n\nconst useHandleParams = (query: any) => {\n const dispatch = useAppDispatch();\n\n let queryParams: IParams = {};\n\n const handleSetParamsInRedux = () => {\n dispatch(setPlayerParams(queryParams));\n dispatch(setIsReady(true));\n };\n\n const handleAddUUID = () => {\n if (!!query.uuid) {\n localStorage.setItem(\"hamrahiUUID\", query.uuid!);\n queryParams.uuid = query.uuid;\n }\n };\n\n const handleVodParams = () => {\n queryParams = {\n provider: \"cafevdo\",\n ...query,\n subtitles: undefined,\n };\n };\n\n const handleStaticParams = async () => {\n queryParams = {\n uuid: getUUID(),\n provider: \"cafevdo\",\n ...query,\n subtitles: undefined,\n id: query.id ? window.atob(query.id) : undefined,\n banner:\n query.banner && query.banner !== \"undefined\" ? query.banner : undefined,\n };\n };\n\n const handleSubtitles = async () => {\n const validSubtitles = await filterValidSubtitles(query.subtitles);\n dispatch(setRawSubtitles(validSubtitles));\n };\n\n const handleParams = async () => {\n queryParams = {};\n if (Object.keys(query).includes(\"type\")) {\n if (String(query.type) === PlayerTypes.vod) handleVodParams();\n else if (String(query.type) === PlayerTypes.static) handleStaticParams();\n if (query.subtitles && query.subtitles.length) handleSubtitles();\n handleAddUUID();\n handleSetParamsInRedux();\n }\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n handleParams();\n }, [query]);\n};\n\nexport default useHandleParams;\n","import { conditions } from \"../conditions/conditions\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport { handleBackwardForward, handleChangeSoundVolume, handleFullScreen, handlePlayPause } from \"../redux/actions/controller.actions\";\nimport store from \"../redux/store\";\nimport useKeyPress from \"./useKeyPress\";\n\nconst useHandleKeyPress = () => {\n useKeyPress(\"Space\", (event: any) => {\n if (conditions(ConditionName.isPressKeySpace) && !conditions(ConditionName.isFirstMutePlay)) handlePlayPause(event);\n });\n useKeyPress(\"KeyK\", (event: any) => {\n if (conditions(ConditionName.isPressKeySpace) && !conditions(ConditionName.isFirstMutePlay)) handlePlayPause(event);\n });\n // useKeyPress(\"ArrowRight\", (event: any) => {\n // if (conditions(ConditionName.isPressKeyArrowRight)) handleBackwardForward(\"forward\", 15, event);\n // });\n // useKeyPress(\"ArrowLeft\", (event: any) => {\n // if (conditions(ConditionName.isPressKeyArrowLeft)) handleBackwardForward(\"backward\", 15, event);\n // });\n // useKeyPress(\"KeyI\", () => {\n // if (conditions(ConditionName.isPressKeyI)) mainPlayerVideoTag().requestPictureInPicture();\n // });\n useKeyPress(\"KeyF\", () => {\n if (conditions(ConditionName.isPressKeyF)) handleFullScreen();\n });\n useKeyPress(\"KeyM\", () => {\n if (conditions(ConditionName.isPressKeyM)) {\n const { settings } = store.getState().user;\n handleChangeSoundVolume(settings.volume ? 0 : 50);\n }\n });\n // useKeyPress(\"KeyC\", () => {\n // if (conditions(ConditionName.isPressKeyC)) handleSubtitle();\n // });\n};\n\nexport default useHandleKeyPress;\n","\"use client\";\r\n\r\nimport { useRef, useState, useEffect } from \"react\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport SoundVolume from \"../soundVolume/soundVolume\";\r\nimport FullScreen from \"../fullScreen/fullScreen\";\r\nimport PlayPause from \"../playPause/playPause\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport {\r\n firstUnMuteHandler,\r\n handleChangeSoundVolume,\r\n handleFullScreen,\r\n handleLockOrientation,\r\n} from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { setPlay } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport useKeyPress from \"../../../helpers/hooks/useKeyPress\";\r\nimport store from \"../../../helpers/redux/store\";\r\nimport SoundVolumeAlert from \"../soundVolumeAlert/SoundVolumeAlert\";\r\nimport { setupAutoplayBehavior, styleMerge, tw } from \"../../../helpers/helpers\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport Image from \"next/image\";\r\n\r\ninterface AdvertisementProps {\r\n src: string;\r\n onEndAd?: (currentTime: number) => void;\r\n onSkipAd?: (currentTime: number) => void;\r\n skipDelay?: number;\r\n adText?: string;\r\n onClickAd?: (currentTime: number) => void;\r\n}\r\n\r\nconst Advertisement: React.FC<AdvertisementProps> = ({ src, onEndAd, onSkipAd, skipDelay, adText = \"اطلاعات بیشتر\", onClickAd }) => {\r\n const dispatch = useAppDispatch();\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const videoRef = useRef<HTMLVideoElement | null>(null);\r\n\r\n const { firstMute } = useAppSelector(({ controller: { firstMute } }) => ({ firstMute }), shallowEqual);\r\n\r\n const [progress, setProgress] = useState(0);\r\n const [buffered, setBuffered] = useState(0);\r\n\r\n const hasSkip = skipDelay !== undefined && skipDelay > 0;\r\n const [skipCounter, setSkipCounter] = useState<number | null>(hasSkip ? skipDelay! : null);\r\n const [isCounting, setIsCounting] = useState(false);\r\n\r\n const [currentTime, setCurrentTime] = useState(0);\r\n const [duration, setDuration] = useState(0);\r\n\r\n const [showControls, setShowControls] = useState(true);\r\n const hideControlsTimeout = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const [isPaused, setIsPaused] = useState(false);\r\n const [reveresElapsedTime, setReveresElapsedTime] = useState(false);\r\n\r\n const resetHideControlsTimer = (delay = 3000) => {\r\n if (isPaused) {\r\n setShowControls(true);\r\n return;\r\n }\r\n\r\n setShowControls(true);\r\n if (hideControlsTimeout.current) clearTimeout(hideControlsTimeout.current);\r\n hideControlsTimeout.current = setTimeout(() => {\r\n setShowControls(false);\r\n }, delay);\r\n };\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n const videoContainer = containerRef.current;\r\n if (!videoContainer) return;\r\n\r\n const mouseMoveHandler = () => resetHideControlsTimer();\r\n const touchStartHandler = () => resetHideControlsTimer();\r\n\r\n videoContainer.addEventListener(\"mousemove\", mouseMoveHandler);\r\n videoContainer.addEventListener(\"touchstart\", touchStartHandler);\r\n\r\n resetHideControlsTimer();\r\n\r\n return () => {\r\n videoContainer.removeEventListener(\"mousemove\", mouseMoveHandler);\r\n videoContainer.removeEventListener(\"touchstart\", touchStartHandler);\r\n if (hideControlsTimeout.current) clearTimeout(hideControlsTimeout.current);\r\n };\r\n }, [isPaused]);\r\n\r\n useEffect(() => {\r\n if (!hasSkip || !isCounting) return;\r\n\r\n const interval = setInterval(() => {\r\n setSkipCounter((prev) => {\r\n if (prev === null) return prev;\r\n if (prev <= 1) {\r\n clearInterval(interval);\r\n return 0;\r\n }\r\n return prev - 1;\r\n });\r\n }, 1000);\r\n\r\n return () => clearInterval(interval);\r\n }, [isCounting, hasSkip]);\r\n\r\n useEffect(() => {\r\n const video = videoRef.current;\r\n if (!video) return;\r\n\r\n const handlePlay = () => {\r\n setIsCounting(true);\r\n setIsPaused(false);\r\n resetHideControlsTimer(1000);\r\n };\r\n\r\n const handlePlaying = () => {\r\n setIsCounting(true);\r\n setIsPaused(false);\r\n };\r\n\r\n const handlePause = () => {\r\n setIsCounting(false);\r\n setIsPaused(true);\r\n setShowControls(true);\r\n if (hideControlsTimeout.current) clearTimeout(hideControlsTimeout.current);\r\n };\r\n\r\n const handleWaiting = () => setIsCounting(false);\r\n const handleError = () => setIsCounting(false);\r\n const handleLoadedMetadata = () => setDuration(video.duration);\r\n\r\n video.addEventListener(\"play\", handlePlay);\r\n video.addEventListener(\"playing\", handlePlaying);\r\n video.addEventListener(\"pause\", handlePause);\r\n video.addEventListener(\"waiting\", handleWaiting);\r\n video.addEventListener(\"error\", handleError);\r\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\r\n\r\n setupAutoplayBehavior(video);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n return () => {\r\n video.removeEventListener(\"play\", handlePlay);\r\n video.removeEventListener(\"playing\", handlePlaying);\r\n video.removeEventListener(\"pause\", handlePause);\r\n video.removeEventListener(\"waiting\", handleWaiting);\r\n video.removeEventListener(\"error\", handleError);\r\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\r\n };\r\n }, [src]);\r\n\r\n const handleTimeUpdate = () => {\r\n const video = videoRef.current;\r\n if (video?.duration) {\r\n setProgress((video.currentTime / video.duration) * 100);\r\n setCurrentTime(video.currentTime);\r\n }\r\n };\r\n\r\n const handleProgress = () => {\r\n const video = videoRef.current;\r\n if (video?.duration && video.buffered.length > 0) {\r\n setBuffered((video.buffered.end(video.buffered.length - 1) / video.duration) * 100);\r\n }\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const video = videoRef.current;\r\n if (!video) return;\r\n\r\n if (conditions(ConditionName.isTouchScreen)) {\r\n if (e.target === containerRef.current || e.target === video) {\r\n if (firstMute) {\r\n handleChangeSoundVolume(50,video);\r\n firstUnMuteHandler();\r\n return;\r\n }\r\n }\r\n resetHideControlsTimer();\r\n return;\r\n }\r\n\r\n if (e.target === containerRef.current || e.target === video) {\r\n if (firstMute) {\r\n handleChangeSoundVolume(50,video);\r\n firstUnMuteHandler();\r\n return;\r\n }\r\n\r\n if (video.paused) {\r\n video.play();\r\n dispatch(setPlay(true));\r\n } else {\r\n video.pause();\r\n dispatch(setPlay(false));\r\n }\r\n }\r\n };\r\n\r\n const handleAdClick = () => {\r\n if (onClickAd) {\r\n onClickAd(currentTime);\r\n }\r\n };\r\n\r\n const formatTime = (time: number) => {\r\n const minutes = Math.floor(time / 60)\r\n .toString()\r\n .padStart(2, \"0\");\r\n const seconds = Math.floor(time % 60)\r\n .toString()\r\n .padStart(2, \"0\");\r\n return `${minutes}:${seconds}`;\r\n };\r\n\r\n // useHandleKeyPress\r\n useKeyPress(\"Space\", () => {\r\n setIsPaused((prev) => !prev);\r\n });\r\n useKeyPress(\"KeyK\", () => {\r\n setIsPaused((prev) => !prev);\r\n });\r\n useKeyPress(\"KeyF\", () => {\r\n handleFullScreen();\r\n });\r\n useKeyPress(\"KeyM\", () => {\r\n const { settings } = store.getState().user;\r\n handleChangeSoundVolume(settings.volume ? 0 : 50,videoRef.current || undefined);\r\n });\r\n\r\n return (\r\n <div\r\n id=\"video-area\"\r\n ref={containerRef}\r\n onClick={handleClick}\r\n onDoubleClick={() => {\r\n handleFullScreen();\r\n handleLockOrientation();\r\n }}\r\n className={tw(\r\n \"pl-relative pl-bg-black pl-overflow-hidden pl-w-full pl-h-full pl-max-h-screen pl-aspect-video pl-flex pl-flex-col pl-justify-end\",\r\n { desktop: \"pl-rounded-[12px]\", desktopFullScreen: \"pl-fixed pl-w-screen pl-h-screen pl-top-0 pl-right-0 pl-rounded-none\" },\r\n )}\r\n style={{\r\n width: conditions(ConditionName.isFullScreen) ? \"100vw\" : \"auto\",\r\n zIndex: conditions(ConditionName.isFullScreen) ? 100000 : \"unset\",\r\n height: conditions(ConditionName.isFullScreen) ? \"100vh\" : \"auto\",\r\n }}\r\n >\r\n <div\r\n className=\"pl-absolute pl-top-0 pl-z-10 pl-h-[46px] pl-w-full pl-px-4 pl-flex pl-items-center pl-justify-between\"\r\n style={{ backgroundImage: \"linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0) 100%)\" }}\r\n >\r\n {onClickAd && conditions(ConditionName.isTouchScreen) && (\r\n <button\r\n onClick={handleAdClick}\r\n className={tw(\"pl-flex pl-items-center pl-justify-center pl-gap-[5px]\", {\r\n touch: \"h-[50px]\",\r\n touchFullScreen: \"\",\r\n })}\r\n >\r\n <Image src={IMAGES.export} alt=\"export button\" width={16} height={16} />\r\n <span\r\n className={tw(\"\", {\r\n touch: \"pl-text-white pl-text-[11px] pl-font-medium\",\r\n touchFullScreen: \"\",\r\n })}\r\n >\r\n {adText}\r\n </span>\r\n </button>\r\n )}\r\n\r\n {conditions(ConditionName.showSoundVolumeAlert) && <SoundVolumeAlert />}\r\n </div>\r\n\r\n <video\r\n src={src}\r\n autoPlay\r\n playsInline\r\n className=\"pl-absolute pl-size-full\"\r\n onEnded={() => onEndAd && onEndAd(currentTime)}\r\n onTimeUpdate={handleTimeUpdate}\r\n onProgress={handleProgress}\r\n id=\"player-tag\"\r\n />\r\n\r\n <div\r\n style={{\r\n backgroundBlendMode: \"multiply\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n }}\r\n className={`pl-relative pl-rounded-b-[12px] pl-z-10 pl-flex pl-flex-col ${\r\n conditions(ConditionName.isTouchScreenPortrait) && \"pl-flex-col-reverse\"\r\n } ${conditions(ConditionName.isFullScreen) ? \"pl-gap-3\" : \"pl-gap-1.5\"} pl-transition-opacity pl-duration-500 pl-ease-in-out ${\r\n showControls ? \"pl-opacity-100\" : \"pl-opacity-0 pl-pointer-events-none\"\r\n }`}\r\n >\r\n {conditions(ConditionName.isTouchScreen) && (\r\n <div className=\"pl-absolute pl-font-bold pl-text-[12px] pl-h-[14px] pl-gap-1.5 pl-left-[14px] pl-bottom-[14px] pl-flex pl-items-center pl-justify-center pl-w-fit pl-text-white\">\r\n <p className=\"pl-leading-[100%]\">{formatTime(currentTime)}</p>\r\n <Image src={IMAGES.info} alt=\"\" width={12} height={12} />\r\n <p className=\"pl-leading-[100%]\">تبلیغات</p>\r\n </div>\r\n )}\r\n\r\n <ProgressBar progress={progress} buffered={buffered} />\r\n\r\n {!conditions(ConditionName.isTouchScreen) && (\r\n <div\r\n className={`pl-flex pl-justify-between pl-items-center pl-gap-3 pl-px-4 ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-pb-3\" : \"pl-pb-1.5\"\r\n }`}\r\n >\r\n <div\r\n className={tw(`pl-rounded-full pl-flex pl-items-center pl-justify-center pl-bg-black/75`, {\r\n desktop: \"pl-p-1\",\r\n desktopFullScreen: \"pl-p-1.5\",\r\n })}\r\n >\r\n <FullScreen width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\r\n </div>\r\n\r\n <div className=\"pl-flex pl-items-center pl-gap-4\">\r\n <div\r\n onClick={() => setReveresElapsedTime((prev) => !prev)}\r\n className={tw(\r\n `pl-cursor-pointer pl-rounded-full pl-inline-flex pl-items-center pl-py-1 pl-px-1.5 pl-justify-center pl-group pl-bg-black/75`,\r\n { desktop: \"pl-min-w-[34px] pl-h-[34px]\", desktopFullScreen: \"pl-min-w-[48px] pl-h-[48px]\" },\r\n )}\r\n >\r\n <div\r\n className={tw(\r\n \" pl-flex pl-gap-0.5 pl-items-center pl-justify-center pl-rounded-full group-hover:pl-bg-[#5E5E5E] pl-transition-all\",\r\n { desktop: \"pl-h-[26px] pl-min-w-[26px] pl-px-1.5\", desktopFullScreen: \"pl-h-[36px] pl-min-w-[36px] pl-px-3\" },\r\n )}\r\n >\r\n <p\r\n className={`pl-text-white pl-flex pl-items-center pl-justify-center pl-gap-0.5 ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-text-base\" : \"pl-text-[12px] pl-leading-5\"\r\n } pl-font-bold`}\r\n >\r\n <span>{formatTime(duration)}</span>\r\n <span>/</span>\r\n {reveresElapsedTime ? (\r\n <>\r\n <span>{formatTime(duration - currentTime)}</span>\r\n <span className=\"pl-mt-0.5\">-</span>\r\n </>\r\n ) : (\r\n <span>{formatTime(currentTime)}</span>\r\n )}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <SoundVolume width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\r\n <PlayPause width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {onClickAd && !conditions(ConditionName.isTouchScreen) && (\r\n <button\r\n onClick={handleAdClick}\r\n className={tw(\"pl-left-[24px] pl-flex pl-items-center pl-rounded-[28px] pl-transition-colors pl-bg-[#212121]/[0.6] pl-absolute\", {\r\n desktopFullScreen: \"pl-bottom-[131px] pl-h-[56px] pl-px-5 pl-gap-2.5\",\r\n desktop: \"pl-bottom-[76px] pl-h-10 pl-px-3 pl-gap-1\",\r\n })}\r\n >\r\n <Image\r\n src={IMAGES.export}\r\n alt=\"export button\"\r\n width={styleMerge({ desktop: 16, desktopFullScreen: 32, touch: 20, touchFullScreen: 24 })}\r\n height={styleMerge({ desktop: 16, desktopFullScreen: 32, touch: 20, touchFullScreen: 24 })}\r\n />\r\n <span\r\n className={tw(\"pl-font-medium pl-text-white pl-leading-4\", {\r\n desktopFullScreen: \"pl-text-base\",\r\n desktop: \"pl-text-[13px]\",\r\n })}\r\n >\r\n {adText}\r\n </span>\r\n </button>\r\n )}\r\n\r\n {hasSkip && (\r\n <>\r\n {!conditions(ConditionName.isTouchScreen) ? (\r\n <button\r\n onClick={() => onSkipAd && onSkipAd(currentTime)}\r\n disabled={!!skipCounter && skipCounter > 0}\r\n className={tw(\"pl-right-[24px] pl-flex pl-items-center pl-rounded-[28px] pl-transition-colors pl-bg-[#212121]/[0.6] pl-absolute\", {\r\n desktopFullScreen: \"pl-bottom-[131px] pl-h-[56px] pl-px-5 pl-gap-2.5\",\r\n desktop: \"pl-bottom-[76px] pl-h-10 pl-px-3 pl-gap-1\",\r\n })}\r\n >\r\n <Image\r\n src={IMAGES.next}\r\n alt=\"next button\"\r\n width={styleMerge({ desktop: 16, desktopFullScreen: 32 })}\r\n height={styleMerge({ desktop: 16, desktopFullScreen: 32 })}\r\n />\r\n\r\n <span\r\n className={tw(\"pl-font-medium pl-text-white pl-leading-4\", {\r\n desktopFullScreen: \"pl-text-base\",\r\n desktop: \"pl-text-[13px]\",\r\n })}\r\n >\r\n {skipCounter && skipCounter > 0 ? `رد کردن (${skipCounter})` : \"رد کردن\"}\r\n </span>\r\n </button>\r\n ) : (\r\n <button\r\n onClick={() => onSkipAd && onSkipAd(currentTime)}\r\n disabled={!!skipCounter && skipCounter > 0}\r\n className={tw(\r\n `pl-absolute pl-px-2 pl-rounded-[28px] pl-bg-black/60 pl-bottom-8 pl-right-4 pl-flex pl-items-center pl-justify-center pl-h-8 pl-gap-1 ${\r\n !!skipCounter && skipCounter > 0 ? \"pl-invisible\" : \"\"\r\n }`,\r\n {\r\n touchFullScreen: \"\",\r\n touch: \"\",\r\n },\r\n )}\r\n >\r\n <Image\r\n src={IMAGES.next}\r\n alt=\"next button\"\r\n width={styleMerge({ touch: 20, touchFullScreen: 20 })}\r\n height={styleMerge({ touch: 20, touchFullScreen: 20 })}\r\n />\r\n\r\n <span\r\n className={tw(\"pl-text-[11px] pl-font-medium pl-text-white\", {\r\n touchFullScreen: \"\",\r\n touch: \"\",\r\n })}\r\n >\r\n رد کردن\r\n </span>\r\n </button>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Advertisement;\r\n\r\ntype ProgressBarProps = { progress: number; buffered: number };\r\n\r\nconst ProgressBar: React.FC<ProgressBarProps> = ({ progress, buffered }) => (\r\n <div className={tw(\"pl-w-full\", { desktop: \"pl-px-4\" })}>\r\n <div\r\n className={tw(\"pl-relative pl-overflow-hidden pl-w-full pl-bg-[#4A4A4A]\", {\r\n touch: \"pl-h-[3px]\",\r\n desktop: \"pl-h-[3px] pl-rounded-[8px]\",\r\n desktopFullScreen: \"pl-h-[6px]\",\r\n touchFullScreen: \"pl-h-[8px]\",\r\n })}\r\n >\r\n <div className=\"pl-absolute pl-top-0 pl-left-0 pl-h-full pl-bg-[#C7C7C7]\" style={{ width: `${buffered}%` }} />\r\n <div\r\n className=\"pl-absolute pl-top-0 pl-left-0 pl-h-full pl-bg-[#FFCC00] pl-transition-all pl-duration-150 pl-ease-linear\"\r\n style={{ width: `${progress}%` }}\r\n />\r\n </div>\r\n </div>\r\n);\r\n","import React from \"react\";\nimport { errorLogProvider } from \"./errorBoundaryFunctions\";\n\nclass ErrorBoundary extends React.Component {\n state = { hasError: false, error: null, errorInfo: null };\n\n static getDerivedStateFromError(error: any) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n // You can also log the error to an error reporting service\n this.setState({ error: error, errorInfo: errorInfo });\n errorLogProvider({ type: \"OTHER_ERROR\", message: error.message });\n }\n\n render() {\n if (this.state.hasError) {\n return <></>;\n }\n\n return (this.props as any).children;\n }\n}\n\nexport default ErrorBoundary;\n","\"use client\";\n\nimport { Provider } from \"react-redux\";\nimport { IMiniPlayerParams } from \"./helpers/interfaces/interfaces\";\nimport store from \"./helpers/redux/store\";\nimport { MiniPlayer } from \"./components/custom-components/miniPlayer/miniPlayer\";\nimport ErrorBoundary from \"./helpers/errorBoundary/errorBoundary\";\nimport { useEffect, useState } from \"react\";\n\nexport const MiniPlayerLibrary = ({ params }: { params: IMiniPlayerParams }) => {\n const [isClient, setIsClient] = useState(false);\n\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n if (!isClient) return null;\n\n return (\n <Provider store={store}>\n <ErrorBoundary>\n <MiniPlayer params={params} />\n </ErrorBoundary>\n </Provider>\n );\n};\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { zIndex } from \"../../../helpers/interfaces/enums\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { useEffect } from \"react\";\r\nimport { IMiniPlayerParams } from \"../../../helpers/interfaces/interfaces\";\r\nimport { setMiniPlayerInfo } from \"../../../helpers/redux/slices/miniPlayerSlice\";\r\nimport MiniPlayerPlayPause from \"../playPause/miniPlayerPlayPause\";\r\nimport VideoTag from \"./videoTag/videoTag\";\r\nimport { getVodDetails } from \"../../../helpers/redux/actions/videoData.actions\";\r\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../../helpers/constants\";\r\nimport { setCurrentTime } from \"../../../helpers/redux/slices/controllerSlice\";\r\n\r\nexport const MiniPlayer = ({ params }: { params: IMiniPlayerParams }) => {\r\n const dispatch = useAppDispatch();\r\n const details = useAppSelector((state) => state.miniPlayer.details);\r\n const miniPlayerParams = useAppSelector((state) => state.miniPlayer.params);\r\n useAppSelector((state) => state.miniPlayer.play);\r\n const mainPlayerParams = useAppSelector((state) => state.videoData.params);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n dispatch(setMiniPlayerInfo(params));\r\n }, []);\r\n\r\n const handleGetDetail = async () => await getVodDetails(params.id);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (params.id && params.type === \"vod\") handleGetDetail();\r\n }, [params.id]);\r\n\r\n return (\r\n <>\r\n {details.stream_link || (miniPlayerParams.type === \"static\" && !!miniPlayerParams.id) ? (\r\n <div style={{ zIndex: zIndex.miniPlayer }} className=\"pl-relative pl-w-full pl-h-full\">\r\n <div\r\n className={`pl-absolute pl-z-[1000] pl-top-3 pl-right-3 pl-cursor-pointer`}\r\n onClick={() => {\r\n if (mainPlayerParams.id === miniPlayerParams.id) {\r\n mainPlayerVideoTag().currentTime = miniPlayerVideoTag().currentTime;\r\n dispatch(setCurrentTime(miniPlayerVideoTag().currentTime));\r\n }\r\n localStorage.setItem(\"close-miniPlayer\", \"true\");\r\n params.onClose();\r\n }}\r\n >\r\n <Image className=\"pl-cursor-pointer\" src={IMAGES.closeSquare} alt=\"close-square\" width={16} height={16} />\r\n </div>\r\n <div className={`pl-w-full pl-absolute pl-bottom-0 pl-z-[1000000]`}>\r\n <div className=\"pl-w-full pl-flex pl-justify-center\">\r\n <MiniPlayerPlayPause />\r\n </div>\r\n </div>\r\n <VideoTag />\r\n </div>\r\n ) : (\r\n <div className=\"pl-w-full pl-h-full pl-bg-white\" />\r\n )}\r\n </>\r\n );\r\n};\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { handlePlayerPauseMiniPlayer } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport Image from \"next/image\";\r\n\r\nconst MiniPlayerPlayPause = () => {\r\n useAppSelector(({ miniPlayer: { play } }) => ({ play }), shallowEqual);\r\n\r\n return (\r\n <div\r\n className={`${!conditions(ConditionName.isTouchScreen) && \"hover:pl-scale-125\"} pl-transition-transform pl-ease-in-out pl-cursor-pointer`}\r\n onContextMenu={(event) => event.preventDefault()}\r\n >\r\n <Image\r\n alt=\"\"\r\n src={conditions(ConditionName.isPlayMiniPlayer) ? IMAGES.bigPause : IMAGES.bigPlay}\r\n width={20}\r\n height={20}\r\n onClick={(event: any) => handlePlayerPauseMiniPlayer(event)}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n className={`${conditions(ConditionName.isPlayMiniPlayer) ? \"pl-big-play-icon\" : \"pl-big-pause-icon\"}`}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default MiniPlayerPlayPause;\r\n","import { PlayerTypes } from \"../../../../helpers/interfaces/enums\";\nimport { useAppSelector } from \"../../../../helpers/redux/hooks\";\nimport MiniPlayerNonStaticVideoTag from \"./miniPlayerNonStaticVideoTag\";\nimport MiniPlayerStaticVideoTag from \"./miniPlayerStaticVideoTag\";\n\nconst VideoTag = () => {\n \n const type = useAppSelector(state => state.miniPlayer.params.type);\n return (\n <>{type === PlayerTypes.static ? <MiniPlayerStaticVideoTag /> : <MiniPlayerNonStaticVideoTag />}</>\n )\n}\n\nexport default VideoTag;","import Hls from \"hls.js\";\nimport { useEffect } from \"react\";\nimport {\n appendQueryParamsToChunksIOS,\n handleMiniPlayerHlsConfig,\n handleMiniPlayerMediaAttached,\n handleVideoError,\n} from \"../../../../helpers/redux/actions/playerCore.actions\";\nimport {\n useAppDispatch,\n useAppSelector,\n} from \"../../../../helpers/redux/hooks\";\nimport {\n mainPlayerVideoTag,\n miniPlayerVideoTag,\n} from \"../../../../helpers/constants\";\nimport {\n setClearMiniPlayerSlice,\n setPlayMiniPlayer,\n} from \"../../../../helpers/redux/slices/miniPlayerSlice\";\nimport { setPlay } from \"../../../../helpers/redux/slices/controllerSlice\";\n\nconst MiniPlayerNonStaticVideoTag = () => {\n const dispatch = useAppDispatch();\n const details = useAppSelector((state) => state.miniPlayer.details);\n const params = useAppSelector((state) => state.miniPlayer.params);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n let hls = new Hls(handleMiniPlayerHlsConfig());\n if (Hls.isSupported()) {\n hls.attachMedia(\n document.getElementById(`mini-player-video-tag`) as HTMLMediaElement\n );\n hls.on(Hls.Events.MEDIA_ATTACHED, () =>\n handleMiniPlayerMediaAttached(hls)\n );\n } else if (\n mainPlayerVideoTag().canPlayType(\"application/vnd.apple.mpegurl\")\n ) {\n mainPlayerVideoTag().src = details.stream_link!;\n\n // Append Query Parameter to .ts Chunks\n appendQueryParamsToChunksIOS();\n }\n return () => {\n dispatch(setClearMiniPlayerSlice());\n hls.detachMedia();\n hls.off(Hls.Events.MEDIA_ATTACHED, () =>\n handleMiniPlayerMediaAttached(hls)\n );\n };\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (params.currentTime) {\n dispatch(setPlayMiniPlayer(true));\n miniPlayerVideoTag().currentTime = params.currentTime;\n dispatch(setPlay(false));\n mainPlayerVideoTag()?.pause();\n }\n }, [params.currentTime]);\n\n return (\n <>\n <video\n onPlay={() => dispatch(setPlayMiniPlayer(true))}\n onEnded={() => dispatch(setPlayMiniPlayer(false))}\n onError={handleVideoError}\n poster={params.banner ? params.banner : details.banner}\n id={`mini-player-video-tag`}\n className=\"pl-absolute pl-bg-black pl-w-full pl-h-full\"\n autoPlay={true}\n muted={true}\n />\n </>\n );\n};\n\nexport default MiniPlayerNonStaticVideoTag;\n","import { useEffect } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"../../../../helpers/redux/hooks\";\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../../../helpers/constants\";\nimport { setPlayMiniPlayer } from \"../../../../helpers/redux/slices/miniPlayerSlice\";\nimport { setPlay } from \"../../../../helpers/redux/slices/controllerSlice\";\nimport { handleVideoError } from \"../../../../helpers/redux/actions/playerCore.actions\";\n\nconst MiniPlayerStaticVideoTag = () => {\n\n const dispatch = useAppDispatch();\n const params = useAppSelector(state => state.miniPlayer.params);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if(params.currentTime) {\n dispatch(setPlayMiniPlayer(true));\n miniPlayerVideoTag().currentTime = params.currentTime;\n dispatch(setPlay(false));\n mainPlayerVideoTag()?.pause();\n }\n },[params.currentTime])\n\n return (\n <video \n poster={params.banner} \n onPlay={() => dispatch(setPlayMiniPlayer(true))}\n onEnded={() => dispatch(setPlayMiniPlayer(false))}\n onError={handleVideoError}\n src={params.id} \n id={`mini-player-video-tag`} \n className=\"pl-absolute pl-bg-black pl-w-full pl-h-full\"\n autoPlay\n />\n )\n}\n\nexport default MiniPlayerStaticVideoTag;"]}
1
+ {"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/videoPlayerLibrary/helpers/redux/slices/controllerSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/videoDataSlice.ts","../src/videoPlayerLibrary/helpers/redux/slices/popoversSlice.ts","../src/videoPlayerLibrary/helpers/interfaces/enums.ts","../src/videoPlayerLibrary/helpers/conditions/conditions.ts","../src/videoPlayerLibrary/helpers/configs/nextConfigs/next.config.js","../src/videoPlayerLibrary/helpers/configs/npmPackage/npmPackage.ts","../src/videoPlayerLibrary/helpers/services/baseUrl.ts","../src/videoPlayerLibrary/helpers/services/services.ts","../src/videoPlayerLibrary/helpers/logs/fluentdLogger.ts","../src/videoPlayerLibrary/helpers/constants.ts","../src/videoPlayerLibrary/helpers/logs/logs.ts","../src/videoPlayerLibrary/helpers/errorBoundary/errorBoundaryFunctions.ts","../src/videoPlayerLibrary/helpers/services/apiCaller.ts","../src/videoPlayerLibrary/helpers/redux/slices/miniPlayerSlice.ts","../src/videoPlayerLibrary/helpers/redux/actions/controller.actions.ts","../src/videoPlayerLibrary/helpers/helpers.ts","../src/videoPlayerLibrary/helpers/redux/slices/userSlice.ts","../src/videoPlayerLibrary/helpers/redux/store.ts","../src/videoPlayerLibrary/helpers/redux/hooks.ts","../src/videoPlayerLibrary/helpers/getDetailsConfigs.ts","../src/videoPlayerLibrary/helpers/redux/actions/videoData.actions.ts","../src/videoPlayerLibrary/helpers/hooks/useKeyPress.tsx","../src/videoPlayerLibrary/components/custom-components/loader/loader.tsx","../src/videoPlayerLibrary/components/custom-components/footer/controllbar/controllbarTooltip.tsx","../src/videoPlayerLibrary/images/importImages.ts","../src/videoPlayerLibrary/components/custom-components/soundVolume/soundVolume.tsx","../src/videoPlayerLibrary/components/custom-components/fullScreen/fullScreen.tsx","../src/videoPlayerLibrary/components/custom-components/playPause/playPause.tsx","../src/videoPlayerLibrary/components/custom-components/soundVolumeAlert/SoundVolumeAlert.tsx","../src/videoPlayerLibrary/components/custom-components/lockUnlock/lock.tsx","../src/videoPlayerLibrary/components/custom-components/header/header.tsx","../src/videoPlayerLibrary/helpers/environment.ts","../src/videoPlayerLibrary/components/custom-components/main/main.tsx","../src/videoPlayerLibrary/helpers/redux/actions/progressbar.actions.ts","../src/videoPlayerLibrary/components/custom-components/tooltip/tooltip.tsx","../src/videoPlayerLibrary/helpers/hooks/useOnClickOutside.tsx","../src/videoPlayerLibrary/components/custom-components/emoji/emoji.tsx","../src/videoPlayerLibrary/components/custom-components/footer/progressbar/markers/markers.tsx","../src/videoPlayerLibrary/components/custom-components/footer/progressbar/progressbar.tsx","../src/videoPlayerLibrary/components/custom-components/popover/popover.tsx","../src/videoPlayerLibrary/components/custom-components/qualityLevels/qualityLevels.tsx","../src/videoPlayerLibrary/components/icon-components/speed.tsx","../src/videoPlayerLibrary/components/custom-components/speed/speed.tsx","../src/videoPlayerLibrary/components/custom-components/subtitles/subtitleSettingMenu.tsx","../src/videoPlayerLibrary/components/icon-components/audioIcon.tsx","../src/videoPlayerLibrary/components/custom-components/multiAudio/MultiAudio.tsx","../src/videoPlayerLibrary/components/custom-components/subtitles/subtitleIcon.tsx","../src/videoPlayerLibrary/components/custom-components/settings/settings.tsx","../src/videoPlayerLibrary/components/custom-components/elapsedTime/elapsedTime.tsx","../src/videoPlayerLibrary/components/custom-components/footer/controllbar/controllbar.tsx","../src/videoPlayerLibrary/components/custom-components/subtitles/displaySubtitle.tsx","../src/videoPlayerLibrary/components/custom-components/footer/footer.tsx","../src/videoPlayerLibrary/helpers/redux/actions/playerCore.actions.ts","../src/videoPlayerLibrary/helpers/hooks/useJumpToCurrentTime.tsx","../src/videoPlayerLibrary/helpers/hooks/useHideSubtitle.tsx","../src/videoPlayerLibrary/helpers/hooks/useAppendSubtitle.tsx","../src/videoPlayerLibrary/helpers/hooks/useActiveSubtitleAutomatic.tsx","../src/videoPlayerLibrary/components/custom-components/videoTag/staticVideoTag.tsx","../src/videoPlayerLibrary/helpers/redux/actions/user.actions.ts","../src/videoPlayerLibrary/helpers/hooks/useContinuousPlaybackInterval.tsx","../src/videoPlayerLibrary/helpers/hooks/usePingPong.tsx","../src/videoPlayerLibrary/helpers/hooks/useBeforeUnload.tsx","../src/videoPlayerLibrary/components/custom-components/videoTag/nonStaticVideoTag.tsx","../src/videoPlayerLibrary/components/custom-components/videoTag/videoTag.tsx","../src/videoPlayerLibrary/helpers/hooks/useFullScreen.tsx","../src/videoPlayerLibrary/helpers/hooks/useActiveInActive.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleResize.tsx","../src/videoPlayerLibrary/components/icon-components/closeIcon.tsx","../src/videoPlayerLibrary/components/custom-components/backwardForward/backwardForward.tsx","../src/videoPlayerLibrary/components/custom-components/videoArea/videoArea.tsx","../src/videoPlayerLibrary/components/videoPlayer/staticPlayer/staticPlayer.tsx","../src/videoPlayerLibrary/helpers/hooks/useGetData/useGetDetails.tsx","../src/videoPlayerLibrary/helpers/hooks/useGetData/useGetData.tsx","../src/videoPlayerLibrary/components/custom-components/notActive/notActive.tsx","../src/videoPlayerLibrary/components/videoPlayer/vodPlayer/vodPlayer.tsx","../src/videoPlayerLibrary/components/custom-components/skeleton/Skeleton.tsx","../src/videoPlayerLibrary/components/videoPlayer/videoHighLighter/VideoHighLighter.tsx","../src/videoPlayerLibrary/index.ts","../src/videoPlayerLibrary/videoPlayerLibrary.tsx","../src/videoPlayerLibrary/components/videoPlayer/videoPlayer.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleParams.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleKeyPress.tsx","../src/videoPlayerLibrary/components/custom-components/advertisement/Advertisement.tsx","../src/videoPlayerLibrary/helpers/errorBoundary/errorBoundary.tsx","../src/videoPlayerLibrary/miniPlayerLibrary.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/miniPlayer.tsx","../src/videoPlayerLibrary/components/custom-components/playPause/miniPlayerPlayPause.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/videoTag/videoTag.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/videoTag/miniPlayerNonStaticVideoTag.tsx","../src/videoPlayerLibrary/components/custom-components/miniPlayer/videoTag/miniPlayerStaticVideoTag.tsx"],"names":["init_esm_shims","__esmMin","ControllerSliceState","controllerSlice","setPlay","setIsAutoPlay","setDuration","setCurrentTime","setQualityLevels","setAutoQuality","setActiveElements","setIsLoading","setIsFullScreen","setBufferedTimeWidth","setFirstPlay","setActivePointerProgressBar","setDelayTurnOffControlbar","setManualQuality","setCanPlayVideo","setLock","setIsEnded","setTooltipTime","setClearControllerSlice","setFirstMute","controllerSlice_default","init_controllerSlice","createSlice","state","action","VideoDataSliceState","videoDataSlice","setInfo","setPlayerParams","setVideoElementSizeInfo","setMarkers","setIsFetchDetails","setIsValidAddress","setVideoTimelines","setIsReady","setRawSubtitles","setSubtitles","setSubtitleText","setSelectedSubtitle","setMultiAudio","setSelectedAudioId","setHiddenAd","setClearVideoDataSlice","videoDataSlice_default","init_videoDataSlice","PopOversSliceState","popoversSlice","setSettingPopover","setSpeedPopover","setQualityLevelsPopover","setMarkersListPopover","setMultiAudioPopover","setClearPopoversSlice","popoversSlice_default","init_popoversSlice","init_enums","conditions","init_conditions","init_helpers","init_store","type","params","details","isValidAddress","isFetchDetails","isReady","rawSubtitles","subtitles","selectedSubtitle","markers","multiAudio","hiddenAd","store_default","firstPlay","lock","canPlayVideo","manualQuality","activeElements","isLoading","isEnded","isAutoPlay","play","isFullScreen","firstMute","settingPopover","speedPopover","qualityLevelsPopover","markersListPopover","settings","miniPlayer","isTouchScreen","isTouchScreenLandscape","isIOS","isTouchScreenPortrait","require_next_config","__commonJSMin","exports","module","npmPackage_exports","__export","isNpmPackage","init_npmPackage","envs","getRestApiLiveUrl","getFluentdUrl","getEmojiUrl","init_baseUrl","API","init_services","videoId","sendFluentLog","init_fluentdLogger","init_apiCaller","data","_data","getUUID","apiCaller","mainPlayerVideoTag","miniPlayerVideoTag","progressBar","progressArea","progressBarWidth","progressTrack","init_constants","speedChangeLog","qualityChangeRequestLog","catchUpLoadingLog","backwardForwardLog","fullscreenLog","volumeLog","lockLog","ExceptionsLog","videoTimelineLog","autoQualityChangeLog","pingpongLog","pausePlayLog","initLog","loadingLog","subtitleLog","eventMarkerClickLog","init_logs","selectedSpeed","selectedQuality","qualityLevels","autoQuality","duration","category","source","target","message","statusCode","url","start","end","sourceQuality","targetQuality","diffQuality","startTimer","qualityHistory","isPlay","loadingTime","waitingTime","bannerLoadingTime","firstChunkPlayingTime","timerRef","totalTime","memory","timing","flattenObject","waitingDuration","qualityLevel","loadingCounterRef","videoEntranceTime","previousLoaderDiff","language","markerId","markerTime","markerTitle","markerDescription","markerSticker","errorLogProvider","init_errorBoundaryFunctions","method","headers","retryCount","maxRetryCount","errorMessage","retryPolicy","errorCallback","timeoutCount","axiosConfig","axios","error","AxiosError","newRetryDelay","newMaxRetryCount","i","wait","MiniPlayerSliceState","userSlice","setMiniPlayerInfo","setDetailsMiniPlayer","setPlayMiniPlayer","setClearMiniPlayerSlice","miniPlayerSlice_default","init_miniPlayerSlice","handlePlayPause","handlePlayerPauseMiniPlayer","firstUnMuteHandler","handleChangeSoundVolume","handleBackwardForward","handleFullScreen","handleLockOrientation","handleLock","handleVideoTimeline","handleVideoElementSizeInfo","handleDoubleClick","init_controller_actions","init_userSlice","event","dispatch","volume","videoTag","video","setUserSettings","forwardBackwardCount","currentTime","currentTimeValue","movedTimeValue","videoTimelines","movedTime","element","PREFIX","twMerge","tw","styleMerge","uuidGenerator","addZeroBefore","secondsToHMS","addUuidToSrc","checkParentTarget","splitQueryParamsFromStreamLink","handleRippleCircle","responseValidator","clearRedux","weighted_random","handlePageLoadTime","highestResolutionSupported","sortLanguages","getSubtitleLabel","spliteStringPerLine","inViewPort","cleanVTT","isDev","setupAutoplayBehavior","classLists","input","classes","hadPrefix","cls","withoutPrefix","tailwindMerge","classname","options","config","isTouch","result","s","resolve","uuid","char","val","n","seconds","h","m","src","urlObject","urlSrc","playerType","streamLink","queryParams","id","circle","ripple","status","setClearUserSlice","weights","random","loadingDurationRef","pageLoadTime","resolutions","width","height","w","filteredResolutions","resolution","keyName","key","newKey","array","priority","a","b","prioA","prioB","subtitleLanguage","label","str","positionLeft","positionRight","vttText","playPromise","UserSliceState","setVideoSettings","userSlice_default","store","configureStore","getDefaultMiddleware","useAppDispatch","useAppSelector","init_hooks","useDispatch","useSelector","detailAPI","detailsConfig","vodDetailsConfig","handleDetailsConfig","init_getDetailsConfigs","getVodDetails","detailSetter","handleRawSubtitles","handleSubtitle","filterValidSubtitles","init_videoData_actions","d","info","validSubtitles","activeSubtitle","disableCurrentSubtitle","activeTrack","track","notifyStatusChange","lang","enabled","sub","showSubtitle","targetLang","subtitleToShow","checks","subtitle","err","useKeyPress","useKeyPress_default","init_useKeyPress","cb","callbackRef","useRef","useEffect","handleKeyPress","Loader","loader_default","init_loader","jsx","ControllbarTooltip","controllbarTooltip_default","init_controllbarTooltip","title","className","IMAGES","importImages_default","init_importImages","SoundVolume","soundVolume_default","init_soundVolume","showTooltip","setShowTooltip","useState","shallowEqual","primaryVolumeRef","handleMouseUp","handleMute","jsxs","Image","FullScreen","fullScreen_default","init_fullScreen","e","PlayPause","playPause_default","init_playPause","disableTooltip","disableScale","inverse","normalStyle","videoElementSizeInfo","inverseRef","SoundVolumeAlert","SoundVolumeAlert_default","init_SoundVolumeAlert","Lock","lock_default","init_lock","Header","header_default","init_header","activeElementsTime","showLoaderTime","continuousePlaybackIntervalTime","init_environment","Main","main_default","init_main","autoplay","showLoader","setShowLoader","showPlayPause","setShowPlayPause","timeout","Fragment","getPointerPosition","hideProgressTooltip","generalStyleTooltipHandler","showProgressTooltip","handleTimeTooltip","getTimeFromPointer","handleProgressTime","handlePointerDown","handlerShowOrHiddenControllbarInTouch","handlePointerMove","handlePointerUp","handleTimeout","handleCatchUpLoadingLog","handleMouseMove","handleMouseOut","deconstructTimestamp","getSecondsFromTimestamp","getPropsFromDef","getFullyQualifiedUrl","getVttCss","fetchFile","getStyleForTime","init_progressbar_actions","clientX","progressTooltip","progressBarTooltip","offset","SAFE_OFFSET","pointerX","tooltipWidth","barWidth","left","isTimer","rect","bar","timeoutIds","setIsPointerDown","show","activePointerProgressBar","setTimeoutIds","right","ids","timeoutIdTemp","delayTurnOffControlbar","timer","timestamp","splitStampMilliseconds","timePartsSplit","timestampParts","def","imageDefSplit","imageUrl","splitCoords","path","base","vttImageDef","vttUrl","cssObj","baseSplit","imageProps","setVttPool","response","processedVtts","vttDef","vttDefSplit","vttTimingSplit","vttTimeStart","vttTimeEnd","vttCssDef","time","vttPool","cache","item","objectVtt","Tooltip","tooltip_default","init_tooltip","tooltipTime","setVttUrl","memo","useOnClickOutside","useOnClickOutside_default","init_useOnClickOutside","ref","handler","listener","Emoji","emoji_default","init_emoji","name","dataMarker","Markers","markers_default","init_markers","setMarkerTime","overlapMarkers","setOverlapMarkers","overlapMarkersPosition","setOverlapMarkersPosition","isOverlapMarkersInViewport","setIsOverlapMarkersInViewport","calculateMarkerPosition","handleClick","sumOverlapMarkersTime","marker","handleJumpToMarker","markerRef","isInViewPort","handleContextMenu","overlapMarker","ProgressBar","progressbar_default","init_progressbar","isPointerDown","bufferedTimeWidth","Popover","popover_default","init_popover","forwardRef","children","onClose","classNames","parentClassNames","styles","isBlurBackground","isFullHeight","isHeader","isHasCatchUpLineOnTop","animation","scrollbar","isFocusOnInput","showPopover","setShowPopover","maxHeight","setMaxHeight","maxHeightOnTouchMove","setMaxHeightOnTouchMove","zIndexOnCatchUp","setZIndexOnCatchUp","handleTouchMove","handleTouchEnd","content","createPortal","QualityLevels","qualityLevels_default","init_qualityLevels","setSection","showQualityLevelsIcon","handleTickSelectedQuality","index","qualityLevelsRef","qualityLevelsContent","SpeedIcon","speed_default","init_speed","onClick","onMouseOver","onMouseLeave","speeds","Speed","showSpeedIcon","speedRef","speedContent","speed","SubtitleSettingMenu","subtitleSettingMenu_default","init_subtitleSettingMenu","textTrack","AudioIcon","audioIcon_default","init_audioIcon","MultiAudio","MultiAudio_default","init_MultiAudio","showMultiAudioIcon","multiAudioPopover","selectedAudioId","multiAudioContent","audio","SubtitleIcon","subtitleIcon_default","init_subtitleIcon","Settings","settings_default","init_settings","section","settingsRef","_","ElapsedTime","elapsedTime_default","init_elapsedTime","reveresElapsedTime","setReveresElapsedTime","prev","Controlbar","controllbar_default","init_controllbar","DisplaySubtitle","displaySubtitle_default","init_displaySubtitle","subtitleText","text","value","Footer","footer_default","init_footer","handleVideoError","handleAutoFullScreen","appendQueryParamsToChunksIOS","handleBufferedTime","handleHlsConfig","handleMiniPlayerHlsConfig","handleManifestParsed","handleLevels","handleFragBuffered","handleFragChanged","handleFragParsed","handleHlsErrors","handleVideoWaiting","handleVideoSeeking","handleVideoPlay","handleVideoPlaying","handleVideoPause","handleVideoTimeUpdate","handleVideoCanPlay","handleVideoEnded","handleIosVideoPlay","handleIosVideoPlaying","handleIosVideoTimeUpdate","handleIosVideoEnded","handleStaticVideoPause","handleStaticVideoPlay","handleStaticVideoPlaying","handleStaticVideoTimeUpdate","handleStaticVideoCanPlay","handleStaticVideoLoadedData","handleStaticVideoEnded","handleMiniPlayerMediaAttached","handleVideoVisibilityChange","init_playerCore_actions","launchFullScreen","fragmentExtension","originalOpen","intervalRef","streamLinkParams","xhr","hls","level","eventType","sortedAudioTracks","setQualityLevel","waitingTimerRef","videoSettings","initialWaitingDurationRef","bannerLoadingDurationRef","waitingDurationRef","videoEntranceTimeRef","onChangeCurrentTime","stream_link","useJumpToCurrentTime","useJumpToCurrentTime_default","init_useJumpToCurrentTime","useHideSubtitle","useHideSubtitle_default","init_useHideSubtitle","tracks","activeCue","el","useAppendSubtitle","useAppendSubtitle_default","init_useAppendSubtitle","videoEl","newSubtitles","existingTracks","existingMap","t","existing","trackEl","newTrack","timeoutId","useActiveSubtitleAutomatic","useActiveSubtitleAutomatic_default","init_useActiveSubtitleAutomatic","videoData","staticVideoTag_exports","staticVideoTag_default","StaticVideoTag","init_staticVideoTag","initialWaitingRef","videoRef","onLoadedData","onCanPlay","handleResize","handleCanPlay","handleContinuousPlayback","handleApplyContinuousPlayback","init_user_actions","viewedVideo","viewedVideosInLocalStorage","viewedVideos","useContinuousPlaybackInterval","useContinuousPlaybackInterval_default","init_useContinuousPlaybackInterval","interval","usePingPong","usePingPong_default","init_usePingPong","setQualityHistory","setStartTimer","newQualityArray","useBeforeUnload","useBeforeUnload_default","init_useBeforeUnload","handleBeforeUnload","nonStaticVideoTag_exports","nonStaticVideoTag_default","NonStaticVideoTag","init_nonStaticVideoTag","streamUrl","Hls","onMediaAttached","onManifestParsed","onFragBuffered","onFragChanged","onFragParsed","onError","onWaiting","onSeeking","onPlay","onIosPlay","onPause","onTimeUpdate","onEnded","onVideoError","onVisibilitychange","onPlaying","VideoTag","videoTag_default","init_videoTag","dynamic","useFullScreen","useFullScreen_default","init_useFullScreen","handleChangeFullScreen","useActiveInActive","useActiveInActive_default","init_useActiveInActive","isRightDoubleTouched","isLeftDoubleTouched","timeoutRef","isRightDoubleTouchedRef","isLeftDoubleTouchedRef","shouldInActiveElements","handleTouchStart","videoArea","useHandleResize","useHandleResize_default","init_useHandleResize","CloseIcon","closeIcon_default","init_closeIcon","backwardForward_exports","backwardForward_default","hideTime","jump","initialJump","BackwardForward","init_backwardForward","isRightForward","isLeftBackward","setIsRightForward","setIsLeftBackward","backwardForwardCount","setBackwardForwardCount","hide","setHide","backwardForwardCountRef","isLeft","doubleTouch","useDoubleTap","videoArea_exports","videoArea_default","VideoArea","init_videoArea","staticPlayer_exports","staticPlayer_default","StaticPlayer","init_staticPlayer","useGetDetails","useGetDetails_default","init_useGetDetails","useGetData","useGetData_default","init_useGetData","notActive_exports","notActive_default","NotActive","init_notActive","vodPlayer_exports","vodPlayer_default","VodPlayer","init_vodPlayer","Skeleton","Skeleton_default","init_Skeleton","VideoHighLighter_exports","VideoHighLighter_default","VideoHighLighter","init_VideoHighLighter","CircularProgressbarWithChildren","buildStyles","useHandleParams","query","handleSetParamsInRedux","handleAddUUID","handleVodParams","handleStaticParams","handleSubtitles","handleParams","useHandleParams_default","useHandleKeyPress","useHandleKeyPress_default","Advertisement","onEndAd","onSkipAd","skipDelay","adText","onClickAd","containerRef","progress","setProgress","buffered","setBuffered","hasSkip","skipCounter","setSkipCounter","isCounting","setIsCounting","showControls","setShowControls","hideControlsTimeout","isPaused","setIsPaused","resetHideControlsTimer","delay","videoContainer","mouseMoveHandler","touchStartHandler","handlePlay","handlePlaying","handlePause","handleWaiting","handleError","handleLoadedMetadata","handleTimeUpdate","handleProgress","handleAdClick","formatTime","minutes","Advertisement_default","VideoPlayer","props","isShowLoader","videoPlayer_default","ErrorBoundary","React","errorInfo","errorBoundary_default","VideoPlayerLibrary","isClient","setIsClient","Provider","MiniPlayerPlayPause","miniPlayerPlayPause_default","MiniPlayerNonStaticVideoTag","miniPlayerNonStaticVideoTag_default","MiniPlayerStaticVideoTag","miniPlayerStaticVideoTag_default","MiniPlayer","miniPlayerParams","mainPlayerParams","handleGetDetail","MiniPlayerLibrary"],"mappings":"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","file":"index.js","sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { IControllerSlice } from \"../../interfaces/interfaces\";\n\nconst ControllerSliceState: IControllerSlice = {\n play: false,\n isAutoPlay: true,\n duration: 0,\n currentTime: 0,\n qualityLevels: [],\n manualQuality: undefined,\n autoQuality: undefined,\n activeElements: true,\n isLoading: true,\n isFullScreen: false,\n bufferedTimeWidth: 0,\n firstPlay: true,\n activePointerProgressBar: false,\n delayTurnOffControlbar: false,\n canPlayVideo: false,\n lock: false,\n isEnded: false,\n tooltipTime: 0,\n firstMute: false,\n};\n\nexport const controllerSlice = createSlice({\n name: \"controller\",\n initialState: ControllerSliceState,\n reducers: {\n setPlay: (state, action: PayloadAction<boolean>) => {\n state.play = action.payload;\n },\n setIsAutoPlay: (state, action: PayloadAction<boolean>) => {\n state.isAutoPlay = action.payload;\n },\n setDuration: (state, action: PayloadAction<number>) => {\n state.duration = action.payload;\n },\n setCurrentTime: (state, action: PayloadAction<number>) => {\n state.currentTime = action.payload;\n },\n setManualQuality: (state, action: PayloadAction<number | undefined>) => {\n state.manualQuality = action.payload;\n },\n setAutoQuality: (state, action: PayloadAction<number | undefined>) => {\n state.autoQuality = action.payload;\n },\n setQualityLevels: (state, action: PayloadAction<any[]>) => {\n state.qualityLevels = action.payload;\n },\n setActiveElements: (state, action: PayloadAction<boolean>) => {\n state.activeElements = action.payload;\n },\n setIsLoading: (state, action: PayloadAction<boolean>) => {\n state.isLoading = action.payload;\n },\n setIsFullScreen: (state, action: PayloadAction<boolean>) => {\n state.isFullScreen = action.payload;\n },\n setBufferedTimeWidth: (state, action: PayloadAction<number>) => {\n state.bufferedTimeWidth = action.payload;\n },\n setFirstPlay: (state, action: PayloadAction<boolean>) => {\n state.firstPlay = action.payload;\n },\n setActivePointerProgressBar: (state, action: PayloadAction<boolean>) => {\n state.activePointerProgressBar = action.payload;\n },\n setDelayTurnOffControlbar: (state, action: PayloadAction<boolean>) => {\n state.delayTurnOffControlbar = action.payload;\n },\n setCanPlayVideo: (state, action: PayloadAction<boolean>) => {\n state.canPlayVideo = action.payload;\n },\n setLock: (state, action: PayloadAction<boolean>) => {\n state.lock = action.payload;\n },\n setIsEnded: (state, action: PayloadAction<boolean>) => {\n state.isEnded = action.payload;\n },\n setTooltipTime: (state, action: PayloadAction<number>) => {\n state.tooltipTime = action.payload;\n },\n setFirstMute: (state, action: PayloadAction<boolean>) => {\n state.firstMute = action.payload;\n },\n setClearControllerSlice: () => {\n return ControllerSliceState;\n },\n },\n});\n\nexport const {\n setPlay,\n setIsAutoPlay,\n setDuration,\n setCurrentTime,\n setQualityLevels,\n setAutoQuality,\n setActiveElements,\n setIsLoading,\n setIsFullScreen,\n setBufferedTimeWidth,\n setFirstPlay,\n setActivePointerProgressBar,\n setDelayTurnOffControlbar,\n setManualQuality,\n setCanPlayVideo,\n setLock,\n setIsEnded,\n setTooltipTime,\n setClearControllerSlice,\n setFirstMute,\n} = controllerSlice.actions;\nexport default controllerSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n IVideoElementSizeInfo,\n IDetails,\n IVideoDataSlice,\n IParams,\n IMarker,\n ISubtitle,\n} from \"../../interfaces/interfaces\";\n\nexport const VideoDataSliceState: IVideoDataSlice = {\n details: {\n stream_link: \"\",\n type: \"\",\n banner: \"\",\n id: undefined,\n title: undefined,\n vtt: undefined,\n vtt_mobile: undefined,\n user_id: null,\n content_id: undefined,\n content_type: null,\n duration: 0,\n subtitles: undefined,\n },\n params: {\n type: \"\",\n id: \"\",\n bannerAlt: \"\",\n fullscreen: \"\",\n autoplay: \"\",\n banner: \"\",\n provider: \"cafevdo\",\n onFinished: undefined,\n onPlay: undefined,\n onPause: undefined,\n playStatus: undefined,\n currentTime: undefined,\n daaniHashCode: undefined,\n advertisement: undefined,\n activeSubtitle: \"fa\",\n vhl_progress: 0,\n },\n markers: [],\n videoElementSizeInfo: {\n bottom: 0,\n top: 0,\n right: 0,\n left: 0,\n width: 0,\n height: 0,\n },\n isFetchDetails: false,\n isValidAddress: false,\n videoTimelines: [],\n isReady: false,\n rawSubtitles: undefined,\n subtitles: [],\n selectedSubtitle: undefined,\n subtitleText: undefined,\n multiAudio: [],\n selectedAudioId: 0,\n hiddenAd: false,\n};\n\nexport const videoDataSlice = createSlice({\n name: \"videoData\",\n initialState: VideoDataSliceState,\n reducers: {\n setInfo: (state, action: PayloadAction<IDetails>) => {\n state.details = action.payload;\n },\n setPlayerParams: (state, action: PayloadAction<IParams>) => {\n state.params = action.payload;\n },\n setMarkers: (state, action: PayloadAction<IMarker[]>) => {\n state.markers = action.payload;\n },\n setVideoElementSizeInfo: (\n state,\n action: PayloadAction<IVideoElementSizeInfo>\n ) => {\n state.videoElementSizeInfo = action.payload;\n },\n setIsFetchDetails: (state, action: PayloadAction<boolean>) => {\n state.isFetchDetails = action.payload;\n },\n setIsValidAddress: (state, action: PayloadAction<boolean>) => {\n state.isValidAddress = action.payload;\n },\n setVideoTimelines: (state, action: PayloadAction<number[]>) => {\n state.videoTimelines = action.payload;\n },\n setIsReady: (state, action: PayloadAction<boolean>) => {\n state.isReady = action.payload;\n },\n setRawSubtitles: (\n state,\n action: PayloadAction<ISubtitle[] | null | undefined>\n ) => {\n state.rawSubtitles = action.payload;\n },\n setSubtitles: (state, action: PayloadAction<TextTrack[]>) => {\n state.subtitles = action.payload;\n },\n setSelectedSubtitle: (state, action: PayloadAction<any>) => {\n state.selectedSubtitle = action.payload;\n },\n setSubtitleText: (state, action: PayloadAction<string>) => {\n state.subtitleText = action.payload;\n },\n setMultiAudio: (state, action: PayloadAction<any>) => {\n state.multiAudio = JSON.parse(JSON.stringify(action.payload));\n },\n setSelectedAudioId: (state, action: PayloadAction<number>) => {\n state.selectedAudioId = action.payload;\n },\n setHiddenAd: (state, action: PayloadAction<boolean>) => {\n state.hiddenAd = action.payload;\n },\n setClearVideoDataSlice: (state) => {\n return (state = VideoDataSliceState);\n },\n },\n});\n\nexport const {\n setInfo,\n setPlayerParams,\n setVideoElementSizeInfo,\n setMarkers,\n setIsFetchDetails,\n setIsValidAddress,\n setVideoTimelines,\n setIsReady,\n setRawSubtitles,\n setSubtitles,\n setSubtitleText,\n setSelectedSubtitle,\n setMultiAudio,\n setSelectedAudioId,\n setHiddenAd,\n setClearVideoDataSlice,\n} = videoDataSlice.actions;\nexport default videoDataSlice.reducer;\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { IPopoversSlice } from \"../../interfaces/interfaces\";\n\nconst PopOversSliceState: IPopoversSlice = {\n settingPopover: false,\n speedPopover: false,\n qualityLevelsPopover: false,\n markersListPopover: false,\n multiAudioPopover: false,\n};\nexport const popoversSlice = createSlice({\n name: \"popover\",\n initialState: PopOversSliceState,\n reducers: {\n setSettingPopover: (state, action: PayloadAction<boolean>) => {\n state.settingPopover = action.payload;\n },\n setSpeedPopover: (state, action: PayloadAction<boolean>) => {\n state.speedPopover = action.payload;\n },\n setQualityLevelsPopover: (state, action: PayloadAction<boolean>) => {\n state.qualityLevelsPopover = action.payload;\n },\n setMarkersListPopover: (state, action: PayloadAction<boolean>) => {\n state.markersListPopover = action.payload;\n },\n setMultiAudioPopover: (state, action: PayloadAction<boolean>) => {\n state.multiAudioPopover = action.payload;\n },\n setClearPopoversSlice: (state) => {\n state.settingPopover = false;\n state.speedPopover = false;\n state.qualityLevelsPopover = false;\n state.markersListPopover = false;\n state.multiAudioPopover = false;\n },\n },\n});\n\nexport const { setSettingPopover, setSpeedPopover, setQualityLevelsPopover, setMarkersListPopover, setMultiAudioPopover, setClearPopoversSlice } = popoversSlice.actions;\n\nexport default popoversSlice.reducer;\n","export const enum zIndex {\n vttDisable = -2,\n videoPlayer,\n videoOpacity,\n backwardForwardInActive,\n mainIcons,\n footer,\n vtt,\n markers,\n videoPlayerInFullScreen = 1000,\n popoverBlurBackground,\n backwardForwardActive,\n miniPlayer,\n popoverContent,\n maxPopover,\n videoPlayerInPictureInPicture,\n}\n\nexport const enum SettingSections {\n main = \"main\",\n qualityLevels = \"qualityLevels\",\n speed = \"speed\",\n subtitles = \"subtitles\",\n multiAudio = \"multiAudio\",\n}\n\nexport const enum PlayerTypes {\n static = \"static\",\n vod = \"vod\",\n}\n\nexport const enum ConditionName {\n showHeader = \"showHeader\",\n showMain = \"showMain\",\n showFooter = \"showFooter\",\n showTouchVolumeBrightness = \"showTouchVolumeBrightness\",\n showBackwardForward = \"showBackwardForward\",\n showTitle = \"showTitle\",\n showSettingPopover = \"showSettingPopover\",\n showSpeedPopover = \"showSpeedPopover\",\n showQualityLevelsPopover = \"showQualityLevelsPopover\",\n showSettingIcon = \"showSettingIcon\",\n showBanner = \"showBanner\",\n showProgressbar = \"showProgressbar\",\n showPictureInPicture = \"showPictureInPicture\",\n showSubtitle = \"showSubtitle\",\n showMarkerListPopover = \"showMarkerListPopover\",\n hidePopovers = \"hidePopovers\",\n isLandscape = \"isLandscape\",\n isTouchScreen = \"isTouchScreen\",\n isTouchScreenPortrait = \"isTouchScreenPortrait\",\n isTouchScreenLandscape = \"isTouchScreenLandscape\",\n isActiveElements = \"isActiveElements\",\n isPlay = \"isPlay\",\n isPlayMiniPlayer = \"isPlayMiniPlayer\",\n isFirstPlay = \"isFirstPlay\",\n isFirstMutePlay = \"isFirstMutePlay\",\n isLock = \"isLock\",\n isIOS = \"isIOS\",\n isLoading = \"isLoading\",\n isStaticFormat = \"isStaticFormat\",\n isEnded = \"isEnded\",\n isAutoPlay = \"isAutoPlay\",\n isFullScreen = \"isFullScreen\",\n isValidAddress = \"isValidAddress\",\n isFetchDetails = \"isFetchDetails\",\n isAutoQuality = \"isAutoQuality\",\n isPressKeySpace = \"isPressKeySpace\",\n isPressKeyI = \"isPressKeyI\",\n isPressKeyF = \"isPressKeyF\",\n isPressKeyS = \"isPressKeyS\",\n isPressKeyArrowRight = \"isPressKeyArrowRight\",\n isPressKeyArrowLeft = \"isPressKeyArrowLeft\",\n isPressKeyM = \"isPressKeyM\",\n isPressKeyC = \"isPressKeyC\",\n isSendTimelineLog = \"isSendTimelineLog\",\n isReady = \"isReady\",\n isSelectedSubtitle = \"isSelectedSubtitle\",\n isMiniPlayerAndMainPlayerSame = \"isMiniPlayerAndMainPlayerSame\",\n isVideoHighLighter = \"isVideoHighLighter\",\n hasTitle = \"hasTitle\",\n hasBanner = \"hasBanner\",\n streamLink = \"streamLink\",\n hasManualQuality = \"hasManualQuality\",\n hasSound = \"hasSound\",\n hasAutoPlay = \"hasAutoPlay\",\n hasFullScreenParams = \"hasFullScreenParams\",\n hasOnFinishedParams = \"hasOnFinishedParams\",\n hasSubtitles = \"hasSubtitles\",\n hasMultipleSubtitles = \"hasMultipleSubtitles\",\n hasSubtitlesInDetails = \"hasSubtitlesInDetails\",\n hasActiveCue = \"hasActiveCue\",\n hasOnPlayParams = \"hasOnPlayParams\",\n hasOnPauseParams = \"hasOnPauseParams\",\n hasMiniPlayer = \"hasMiniPlayer\",\n hasCurrentTimeParams = \"hasCurrentTimeParams\",\n hasMarkers = \"hasMarkers\",\n hasSubtitlesInParams = \"hasSubtitlesInParams\",\n hasOnChangeCurrentTime = \"hasOnChangeCurrentTime\",\n hasMultiAudio = \"hasMultiAudio\",\n hasAdvertisement = \"hasAdvertisement\",\n hasActiveSubtitleInParams = \"hasActiveSubtitleInParams\",\n hasRawSubtitles = \"hasRawSubtitles\",\n skeletonStatusInVhl = \"skeletonStatusInVhl\",\n getDetails = \"getDetails\",\n getMarkers = \"getMarkers\",\n canPlayVideo = \"canPlayVideo\",\n setSubtitleFirstPlay = \"setSubtitleFirstPlay\",\n showSoundVolumeAlert = \"showSoundVolumeAlert\",\n}\n","import { isIOS, isTouchScreen, isTouchScreenLandscape, isTouchScreenPortrait } from \"../helpers\";\nimport { ConditionName, PlayerTypes } from \"../interfaces/enums\";\nimport store from \"../redux/store\";\n\nexport const conditions = (type: string) => {\n const { params, details, isValidAddress, isFetchDetails, isReady, rawSubtitles, subtitles, selectedSubtitle, markers, multiAudio, hiddenAd } =\n store.getState().videoData;\n const { firstPlay, lock, canPlayVideo, manualQuality, activeElements, isLoading, isEnded, isAutoPlay, play, isFullScreen, firstMute } =\n store.getState().controller;\n const { settingPopover, speedPopover, qualityLevelsPopover, markersListPopover } = store.getState().popovers;\n const { settings } = store.getState().user;\n const miniPlayer = store.getState().miniPlayer;\n\n switch (type) {\n case ConditionName.showHeader:\n return canPlayVideo;\n case ConditionName.showMain:\n return !lock || firstPlay;\n case ConditionName.showFooter:\n return isTouchScreen() ? canPlayVideo && !firstPlay : canPlayVideo;\n case ConditionName.showTouchVolumeBrightness:\n return !firstPlay && isTouchScreenLandscape() && !lock && !isEnded;\n case ConditionName.showBackwardForward:\n return !firstPlay && !lock;\n case ConditionName.showTitle:\n return params.type !== \"static\" && isFullScreen && !lock;\n case ConditionName.showSettingPopover:\n return settingPopover;\n case ConditionName.showSpeedPopover:\n return speedPopover;\n case ConditionName.showQualityLevelsPopover:\n return qualityLevelsPopover;\n case ConditionName.showSettingIcon:\n return !isIOS();\n case ConditionName.showBanner:\n return firstPlay && (details.banner || params.banner);\n case ConditionName.showProgressbar:\n return true;\n case ConditionName.showPictureInPicture:\n return !isIOS() && !isTouchScreen();\n case ConditionName.showSubtitle:\n return !!selectedSubtitle;\n case ConditionName.showMarkerListPopover:\n return markersListPopover;\n case ConditionName.hidePopovers:\n return !settingPopover;\n case ConditionName.isLandscape:\n return window.innerHeight <= window.innerWidth;\n case ConditionName.isTouchScreen:\n return isTouchScreen();\n case ConditionName.isTouchScreenPortrait:\n return isTouchScreenPortrait();\n case ConditionName.isTouchScreenLandscape:\n return isTouchScreenLandscape();\n case ConditionName.isActiveElements:\n return activeElements;\n case ConditionName.isPlay:\n return play;\n case ConditionName.isPlayMiniPlayer:\n return miniPlayer.play;\n case ConditionName.isFirstPlay:\n return firstPlay;\n case ConditionName.isLock:\n return lock;\n case ConditionName.isFirstMutePlay:\n return firstMute;\n case ConditionName.isIOS:\n return isIOS();\n case ConditionName.isLoading:\n return isLoading;\n case ConditionName.isStaticFormat:\n return params.type === PlayerTypes.static;\n case ConditionName.isEnded:\n return isEnded;\n case ConditionName.isAutoPlay:\n return isAutoPlay;\n case ConditionName.isFullScreen:\n return isFullScreen;\n case ConditionName.isValidAddress:\n return params.id ? isValidAddress : !!params.stream_link;\n case ConditionName.isFetchDetails:\n return params.id ? isFetchDetails : !!params.stream_link;\n case ConditionName.isAutoQuality:\n return settings.quality === -1;\n case ConditionName.isPressKeySpace:\n return !lock;\n case ConditionName.isPressKeyI:\n return !lock && !firstPlay;\n case ConditionName.isPressKeyF:\n return (!lock && !firstPlay) || !!params.vhl_status;\n case ConditionName.isPressKeyS:\n return !lock && !firstPlay;\n case ConditionName.isPressKeyArrowRight:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyArrowLeft:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyM:\n return !firstPlay && !lock;\n case ConditionName.isPressKeyC:\n return !lock && !firstPlay && !!subtitles && subtitles.length > 0;\n case ConditionName.isSendTimelineLog:\n return params.type !== \"static\";\n case ConditionName.isReady:\n return isReady;\n case ConditionName.isSelectedSubtitle:\n return !!subtitles && subtitles.length > 0 && selectedSubtitle;\n case ConditionName.isMiniPlayerAndMainPlayerSame:\n return params.id === miniPlayer.params.id;\n case ConditionName.isVideoHighLighter:\n return !!params.vhl_status;\n case ConditionName.hasTitle:\n return details.title;\n case ConditionName.hasBanner:\n return details.banner;\n case ConditionName.streamLink:\n return details.stream_link || params.stream_link;\n case ConditionName.hasManualQuality:\n return manualQuality !== undefined && manualQuality !== null;\n case ConditionName.hasSound:\n return !!settings.volume;\n case ConditionName.hasAutoPlay:\n return params.autoplay === \"true\";\n case ConditionName.hasFullScreenParams:\n return params.fullscreen === \"true\";\n case ConditionName.hasOnFinishedParams:\n return !!params.onFinished;\n case ConditionName.hasSubtitles:\n return !!subtitles && subtitles.length > 0;\n case ConditionName.hasMultipleSubtitles:\n return !!subtitles && subtitles.length > 1;\n case ConditionName.hasActiveCue:\n return selectedSubtitle && selectedSubtitle.activeCues && selectedSubtitle.activeCues.length > 0;\n case ConditionName.hasOnPlayParams:\n return !!params.onPlay;\n case ConditionName.hasOnPauseParams:\n return !!params.onPause;\n case ConditionName.hasMiniPlayer:\n return miniPlayer.params.id;\n case ConditionName.hasCurrentTimeParams:\n return params.currentTime !== undefined;\n case ConditionName.hasMarkers:\n return markers.length !== 0;\n case ConditionName.hasSubtitlesInParams:\n return params.subtitles && params.subtitles.length;\n case ConditionName.hasOnChangeCurrentTime:\n return !!params.onChangeCurrentTime;\n case ConditionName.hasMultiAudio:\n return multiAudio && !!multiAudio.length;\n case ConditionName.hasAdvertisement:\n return !!params.advertisement && !!params.advertisement.videoUrl && !hiddenAd;\n case ConditionName.hasActiveSubtitleInParams:\n return !!params.activeSubtitle;\n case ConditionName.hasRawSubtitles:\n return !!rawSubtitles && !!rawSubtitles.length;\n case ConditionName.skeletonStatusInVhl:\n return params.vhl_status === \"skeleton\";\n case ConditionName.getDetails:\n return !!params.type && params.id;\n case ConditionName.getMarkers:\n return String(params.type) === \"vod\" && params.id && isFetchDetails;\n case ConditionName.canPlayVideo:\n return canPlayVideo;\n case ConditionName.showSoundVolumeAlert:\n return firstMute;\n case ConditionName.setSubtitleFirstPlay:\n return (\n ((params.type === PlayerTypes.vod && details.subtitles && details.subtitles.length > 0) ||\n (params.type === PlayerTypes.static && params.subtitles && params.subtitles.length)) &&\n !firstPlay\n );\n default:\n break;\n }\n};\n","module.exports = {\n baseUrl: \"https://hamrahi.cloud\",\n fluentdUrl: \"https://hamrahi.cloud\",\n};\n","export const isNpmPackage = false;\n","const envs = require(\"../configs/nextConfigs/next.config.js\");\nconst isNpmPackage = require(\"../configs/npmPackage/npmPackage\");\n\nexport const getRestApiLiveUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/live/api\";\nexport const getFluentdUrl = () => (isNpmPackage ? envs.fluentdUrl : (process.env.fluentdUrl as string));\nexport const getEmojiUrl = () => (isNpmPackage ? envs.baseUrl : (process.env.baseUrl as string)) + \"/emoji\";\n\n","import {\n getFluentdUrl,\n getRestApiLiveUrl,\n} from \"./baseUrl\";\n\nexport const API = () => {\n return {\n vod: {\n getVodUrl: `${getRestApiLiveUrl()}/v1/live/details/vod/`,\n getMarkerUrl: (videoId:number) => `${getRestApiLiveUrl()}/v1/live/list-event/vod/${videoId}/`\n },\n videoTimelineLog: `${getFluentdUrl()}/video-timeline.log`,\n logs: `${getFluentdUrl()}/cafevideo-endpoint.log`,\n };\n};","import store from \"../redux/store\";\nimport { apiCaller } from \"../services/apiCaller\";\nimport { API } from \"../services/services\";\nimport { getUUID } from \"../helpers\";\n\nexport const sendFluentLog = (data: any) => {\n const { details, params } = store.getState().videoData;\n let _data = {\n ...data,\n timestamp: Date.now(),\n clientUUID: getUUID(),\n uuid: getUUID(),\n link: window.location.href,\n user_id: details.user_id,\n live_id: null,\n format: undefined,\n content_type: details.content_type,\n content_id: details.content_id,\n daaniHashCode: params.daaniHashCode,\n };\n apiCaller({ url: API().logs, method: \"post\", data: _data });\n};\n","import store from \"./redux/store\";\n\nexport const mainPlayerVideoTag = () => document.getElementById(\"player-tag\") as HTMLVideoElement;\nexport const miniPlayerVideoTag = () => document.getElementById(\"mini-player-video-tag\") as HTMLVideoElement;\n\nexport const playerControllbar = () => document.getElementById(\"player-controllbar\") as any;\n\nexport const progressBar = () => document.getElementById(\"time-progress-bar\") as any;\nexport const progressArea = () => document.getElementById(\"progress-area\") as any;\nexport const progressContainer = () => document.getElementById(\"time-progress-container\") as any;\n\nexport const progressBarWidth = () => store.getState().videoData.videoElementSizeInfo.width;\n\nexport const progressTrack = () => document.getElementById(\"time-progress-area\") as any;\n","import { conditions } from \"../conditions/conditions\";\nimport { mainPlayerVideoTag } from \"../constants\";\nimport { flattenObject, getUUID } from \"../helpers\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport store from \"../redux/store\";\n\nexport const speedChangeLog = (selectedSpeed: Number) => {\n const { params, details } = store.getState().videoData;\n const { settings } = store.getState().user;\n return {\n category: \"speedChange\",\n previousSelectedSpeed: settings.speed,\n selectedSpeed: selectedSpeed,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const qualityChangeRequestLog = (selectedQuality: String) => {\n const { params, details } = store.getState().videoData;\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\n return {\n category: \"qualityChangeRequest\",\n currentPlayingQuality: `${qualityLevels[conditions(ConditionName.isAutoQuality) ? (autoQuality ?? manualQuality!) : manualQuality!]}P`,\n previousSelectedQuality: conditions(ConditionName.isAutoQuality) ? \"auto\" : `${qualityLevels[manualQuality!]}P`,\n selectedQuality: selectedQuality,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const catchUpLoadingLog = (duration: number) => {\n const { params, details } = store.getState().videoData;\n const { qualityLevels, autoQuality } = store.getState().controller;\n const { settings } = store.getState().user;\n\n return {\n category: \"catchUpLoading\",\n previousVideoTime: Number(sessionStorage.getItem(\"previousVideoTime\")),\n currentVideoTime: mainPlayerVideoTag().currentTime,\n duration: duration,\n quality: `${conditions(ConditionName.isAutoQuality) ? qualityLevels[autoQuality!] : qualityLevels[settings.quality]}P`,\n isAutoQuality: conditions(ConditionName.isAutoQuality),\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const backwardForwardLog = (type: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: type === \"backward\" ? \"backward\" : \"forward\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const fullscreenLog = (category: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: category,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const brightnessLog = (source: number, target: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"brightnessChange\",\n source: source,\n target: target,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const volumeLog = (source: number, target: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"volumeChange\",\n source: source,\n target: target,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const lockLog = (category: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: category,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const ExceptionsLog = (type: string, message: string, statusCode?: number, url?: string) => {\n return {\n category: \"player-error\",\n type,\n message,\n statusCode,\n url,\n };\n};\n\nexport const videoTimelineLog = (start: number, end: number) => {\n const { params, details } = store.getState().videoData;\n const { duration } = store.getState().controller;\n return {\n category: \"video-timeline\",\n video_id: +params.id!,\n video_type: params.type,\n start: start,\n end: end,\n watchedDuration: end - start,\n video_duration: Math.floor(duration),\n clientUUID: getUUID(),\n user_id: details.user_id,\n content_type: details.content_type,\n content_id: details.content_id,\n };\n};\n\nexport const autoQualityChangeLog = (sourceQuality: String, targetQuality: String, diffQuality: number) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"autoQualityChange\",\n sourceQuality: sourceQuality,\n targetQuality: targetQuality,\n diffQuality: diffQuality,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const pingpongLog = (startTimer: number, qualityHistory: number[]) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"pingpong\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n PingPongDuration: Number((new Date().getTime() - startTimer).toFixed(2)),\n PingPongSourceQuality: `${qualityHistory[0]}P`, // A A->B && B->A\n PingPongTargetQuality: `${qualityHistory[1]}P`, // B,\n provider: params.provider,\n };\n};\n\nexport const pausePlayLog = (isPlay: boolean) => {\n const { params, details } = store.getState().videoData;\n return {\n category: isPlay ? \"playVideo\" : \"pauseVideo\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n\nexport const initLog = (loadingTime: number, waitingTime: number, bannerLoadingTime: number, firstChunkPlayingTime: number, timerRef: any) => {\n const { params, details } = store.getState().videoData;\n const totalTime = Date.now() - timerRef.current + loadingTime + waitingTime;\n const memory = (window.performance as any).memory;\n const timing = JSON.parse(JSON.stringify((window.performance as any).timing));\n return {\n category: \"initLog\",\n id: Number(params.id),\n type: params.type,\n origin: new URL(conditions(ConditionName.streamLink) || params.id!).origin,\n src: conditions(ConditionName.streamLink) || params.id,\n loading: loadingTime,\n bannerLoading: !conditions(ConditionName.hasBanner) || bannerLoadingTime < 0 ? 0 : bannerLoadingTime,\n waiting: waitingTime,\n firstChunkPlaying: firstChunkPlayingTime < 0 ? 0 : firstChunkPlayingTime,\n totalTime: totalTime,\n provider: params.provider,\n performance: flattenObject({ memory, timing }, \"performance\"),\n userAgent: window.navigator.userAgent,\n };\n};\n\nexport const loadingLog = (waitingDuration: number, qualityLevel: number, timerRef: any, loadingCounterRef: any, videoEntranceTime: number) => {\n const { params, details } = store.getState().videoData;\n const { settings } = store.getState().user;\n const previousLoaderDiff = Date.now() - timerRef.current;\n return {\n category: \"loading\",\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n duration: waitingDuration,\n quality: `${qualityLevel}P`,\n isAutoQuality: conditions(ConditionName.isAutoQuality),\n previousLoaderDiff: previousLoaderDiff,\n counter: loadingCounterRef.current,\n loadingPercentile: Number((waitingDuration / previousLoaderDiff).toFixed(2)),\n videoTime: mainPlayerVideoTag().currentTime,\n videoEntranceTime: videoEntranceTime,\n speed: settings.speed,\n provider: params.provider,\n };\n};\n\nexport const subtitleLog = (language: string) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"subtitle\",\n language: language,\n id: Number(params.id),\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n };\n};\n\nexport const eventMarkerClickLog = (markerId: Number, markerTime: Number, markerTitle: String, markerDescription: String, markerSticker: String) => {\n const { params, details } = store.getState().videoData;\n return {\n category: \"eventMarkerClick\",\n video_id: Number(params.id),\n markerId: markerId,\n markerTime: markerTime,\n markerTitle: markerTitle,\n markerDescription: markerDescription,\n markerSticker: markerSticker,\n type: params.type,\n src: conditions(ConditionName.streamLink) || params.id,\n provider: params.provider,\n };\n};\n","import { sendFluentLog } from \"../logs/fluentdLogger\";\nimport { ExceptionsLog } from \"../logs/logs\";\n\nexport const errorLogProvider = (data?: {type:string, message:string, statusCode?:number, url?:string}) => {\n if(data) sendFluentLog(ExceptionsLog(data.type, data.message, data.statusCode, data.url));\n}\n","import axios, { AxiosError } from \"axios\";\nimport { IApiCaller, IAxiosConfig, IRetryPolicy } from \"../interfaces/interfaces\";\nimport store from \"../redux/store\";\nimport { wait } from \"../helpers\";\nimport { errorLogProvider } from \"../errorBoundary/errorBoundaryFunctions\";\n\nexport const apiCaller: any = async ({\n url,\n method = \"GET\",\n data,\n headers,\n retryCount = 1,\n maxRetryCount = 0,\n errorMessage,\n retryPolicy,\n errorCallback,\n timeoutCount,\n}: IApiCaller) => {\n let axiosConfig: IAxiosConfig = {\n url: url,\n method: method,\n headers: {\n ...headers,\n \"Content-Type\": \"application/json\",\n },\n timeout: timeoutCount ? timeoutCount * 1000 : undefined,\n };\n if (data) {\n if (method === \"GET\")\n axiosConfig = {\n ...axiosConfig,\n params: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n ...data,\n },\n };\n else\n axiosConfig = {\n ...axiosConfig,\n data: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n ...data,\n },\n };\n } else {\n if (method === \"GET\")\n axiosConfig = {\n ...axiosConfig,\n params: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n },\n };\n else\n axiosConfig = {\n ...axiosConfig,\n data: {\n uuid: store.getState().videoData.params.uuid,\n provider: store.getState().videoData.params.provider === \"unknown\" ? undefined : store.getState().videoData.params.provider,\n },\n };\n }\n try {\n return await axios(axiosConfig);\n } catch (error: any) {\n if (error instanceof AxiosError && error.code !== \"ERR_NETWORK\") {\n errorLogProvider({\n type: \"API-ERROR\",\n message: error.message ? error.message : \"\",\n statusCode: error.response && error.response.status ? error.response.status : undefined,\n url,\n });\n }\n\n if (error && error.response && error.response.status === 401) {\n //\n } else {\n if (errorCallback) errorCallback(error.response.status, error.response.message);\n let newRetryDelay = 0,\n newMaxRetryCount = 0;\n if (retryPolicy !== undefined) {\n for (let i = 0; i < retryPolicy.length; i++) {\n if (\n (((retryPolicy[i].codeAbove && error.response.status >= retryPolicy[i].codeAbove!) ||\n (retryPolicy[i].codeBelow && error.response.status <= retryPolicy[i].codeBelow!)) &&\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.response.status))) ||\n retryPolicy[i].includeCodes.length === 0 ||\n retryPolicy[i].includeCodes.includes(error.response.status)\n ) {\n newMaxRetryCount = retryPolicy[i].count;\n newRetryDelay = retryPolicy[i].delay;\n break;\n }\n }\n } else {\n newMaxRetryCount = maxRetryCount;\n newRetryDelay = retryCount + 1;\n }\n if (retryCount < newMaxRetryCount) {\n await wait(newRetryDelay);\n return apiCaller({\n url,\n method,\n data,\n headers,\n retryCount: retryCount + 1,\n newMaxRetryCount,\n errorMessage,\n retryPolicy,\n errorCallback,\n });\n } else if (error.response)\n return {\n data: error.response.data ? error.response.data : { detail: \"عملیات با خطا مواجه شده است.\" },\n status: error.response.status,\n };\n }\n }\n};\n\nexport function getAll(path: string, retryPolicy?: IRetryPolicy[], params?: any, retryCount: number = 1, maxRetryCount: number = 0) {\n return new Promise(async (resolve, reject) => {\n // Added reject to the Promise executor function.\n try {\n const url = new URL(path);\n const limit = 1000;\n if (params) {\n Object.keys(params).forEach((key) => {\n if (params[key]) {\n url.searchParams.set(key, params[key]);\n }\n });\n }\n url.searchParams.set(\"limit\", limit.toString());\n const response = await fetch(url.href);\n if (!response.ok) {\n // Check if the response was not ok (status not in the range 200-299).\n throw response;\n }\n const data = await response.json();\n const count = data.count;\n const requestCount = Math.ceil(count / limit) - 1;\n const promises: Array<Promise<any>> = [];\n for (let i = 0; i < requestCount; i++) {\n const offset = i * limit; // Fixed the offset calculation.\n url.searchParams.set(\"offset\", offset.toString());\n const promise: Promise<any> = fetch(url.href).then((res) => {\n if (res.ok) {\n return res.json();\n }\n return res.json().then((err) => Promise.reject(err));\n });\n promises.push(promise);\n }\n Promise.all(promises)\n .then((res) => {\n const results = res.flatMap((item) => item.results);\n resolve([...data.results, ...results]);\n })\n .catch(reject); // Added catch to handle any errors in the Promise.all.\n } catch (error: any) {\n let newRetryDelay = 0,\n newMaxRetryCount = 0;\n if (retryPolicy !== undefined) {\n for (let i = 0; i < retryPolicy.length; i++) {\n if (\n ((retryPolicy[i].codeAbove && error.status >= retryPolicy[i].codeAbove!) ||\n (retryPolicy[i].codeBelow && error.status <= retryPolicy[i].codeBelow!)) &&\n (retryPolicy[i].excludeCodes.length === 0 || !retryPolicy[i].excludeCodes.includes(error.status)) &&\n (retryPolicy[i].includeCodes.length === 0 || retryPolicy[i].includeCodes.includes(error.status))\n ) {\n newMaxRetryCount = retryPolicy[i].count;\n newRetryDelay = retryPolicy[i].delay;\n break;\n }\n }\n if (retryCount < newMaxRetryCount) {\n await wait(newRetryDelay);\n getAll(path, retryPolicy, params, retryCount + 1, newMaxRetryCount);\n }\n }\n }\n });\n}\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport {\n IDetails,\n IMiniPlayerParams,\n IMiniPlayerSlice,\n} from \"../../interfaces/interfaces\";\nimport { PlayerTypes } from \"../../interfaces/enums\";\n\nconst MiniPlayerSliceState: IMiniPlayerSlice = {\n params: {\n id: \"0\",\n type: \"\",\n currentTime: 0,\n autoPlay: false,\n onClose: () => {},\n },\n details: {},\n play: false,\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState: MiniPlayerSliceState,\n reducers: {\n setMiniPlayerInfo: (state, action: PayloadAction<IMiniPlayerParams>) => {\n state.params = {\n ...action.payload,\n id:\n action.payload.type === PlayerTypes.static\n ? window.atob(action.payload.id)\n : action.payload.id,\n banner: action.payload.banner ? action.payload.banner : undefined,\n };\n },\n setDetailsMiniPlayer: (state, action: PayloadAction<IDetails>) => {\n state.details = action.payload;\n },\n setPlayMiniPlayer: (state, action: PayloadAction<boolean>) => {\n state.play = action.payload;\n },\n setClearMiniPlayerSlice: (state) => {\n return (state = MiniPlayerSliceState);\n },\n },\n});\n\nexport const {\n setMiniPlayerInfo,\n setDetailsMiniPlayer,\n setPlayMiniPlayer,\n setClearMiniPlayerSlice,\n} = userSlice.actions;\n\nexport default userSlice.reducer;\n","import { setFirstMute, setIsFullScreen, setLock, setPlay } from \"../slices/controllerSlice\";\nimport store from \"../store\";\nimport { setVideoElementSizeInfo, setVideoTimelines } from \"../slices/videoDataSlice\";\nimport { ConditionName } from \"../../interfaces/enums\";\nimport { apiCaller } from \"../../services/apiCaller\";\nimport { API } from \"../../services/services\";\nimport { setUserSettings } from \"../slices/userSlice\";\nimport { setClearPopoversSlice } from \"../slices/popoversSlice\";\nimport { conditions } from \"../../conditions/conditions\";\nimport { backwardForwardLog, fullscreenLog, lockLog, videoTimelineLog } from \"../../logs/logs\";\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../constants\";\nimport { setPlayMiniPlayer } from \"../slices/miniPlayerSlice\";\n\nexport const handlePlayPause = (event: any) => {\n if (event === null || event.target.nodeName !== \"INPUT\") {\n const dispatch = store.dispatch;\n if (event !== null) {\n event.stopPropagation();\n event.preventDefault();\n }\n mainPlayerVideoTag()?.paused ? mainPlayerVideoTag().play() : mainPlayerVideoTag()?.pause();\n dispatch(setPlay(!mainPlayerVideoTag()?.paused));\n if (miniPlayerVideoTag() && miniPlayerVideoTag().played) {\n miniPlayerVideoTag()?.pause();\n dispatch(setPlayMiniPlayer(false));\n }\n }\n};\n\nexport const handlePlayerPauseMiniPlayer = (event: any) => {\n if (event === null || event.target.nodeName !== \"INPUT\") {\n const dispatch = store.dispatch;\n miniPlayerVideoTag().paused ? miniPlayerVideoTag().play() : miniPlayerVideoTag()?.pause();\n dispatch(setPlayMiniPlayer(!miniPlayerVideoTag().paused));\n if (mainPlayerVideoTag() && mainPlayerVideoTag().played) {\n mainPlayerVideoTag()?.pause();\n dispatch(setPlay(false));\n }\n }\n};\n\nexport const firstUnMuteHandler = () => {\n const dispatch = store.dispatch;\n dispatch(setFirstMute(false));\n if (conditions(ConditionName.isIOS)) mainPlayerVideoTag().currentTime = mainPlayerVideoTag().currentTime - 0.001;\n};\n\nexport const handleChangeSoundVolume = (volume: number, videoTag?: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { settings } = store.getState().user;\n const { firstMute } = store.getState().controller;\n\n const video = videoTag || mainPlayerVideoTag();\n\n dispatch(setUserSettings({ ...settings, volume }));\n\n if (!video) return;\n\n if (firstMute && volume) firstUnMuteHandler();\n if (conditions(ConditionName.isIOS)) video.muted = !volume;\n else video.volume = volume / 100;\n};\n\nexport const handleBackwardForward = (type: string, forwardBackwardCount: number = 15, event?: any) => {\n if (type === \"touchBackward\") type = \"backward\";\n else if (type === \"touchForward\") type = \"forward\";\n if (\n (event && event.target.nodeName === \"INPUT\") ||\n (type === \"backward\" && mainPlayerVideoTag().currentTime < 15) ||\n (type === \"forward\" && mainPlayerVideoTag().duration - mainPlayerVideoTag().currentTime < 15)\n )\n return;\n sendFluentLog(backwardForwardLog(type));\n let currentTime = 0;\n if (type === \"backward\") {\n if (forwardBackwardCount === 0) currentTime = 0;\n else currentTime = mainPlayerVideoTag().currentTime - forwardBackwardCount;\n } else if (type === \"forward\") {\n if (forwardBackwardCount === mainPlayerVideoTag().duration) currentTime = forwardBackwardCount;\n else currentTime = mainPlayerVideoTag().currentTime + forwardBackwardCount;\n }\n mainPlayerVideoTag().currentTime = currentTime;\n};\n\nexport const handleFullScreen = () => {\n const dispatch = store.dispatch;\n\n const isFullScreen = document.fullscreenElement;\n if (conditions(ConditionName.isIOS)) {\n if ((mainPlayerVideoTag() as any).webkitEnterFullScreen) {\n dispatch(setPlay(false));\n // Toggle fullscreen in Safari for iPad\n (mainPlayerVideoTag() as any).webkitEnterFullScreen();\n } else {\n dispatch(setClearPopoversSlice());\n sendFluentLog(fullscreenLog(\"fullScreen\"));\n }\n } else {\n if (isFullScreen) {\n dispatch(setIsFullScreen(false));\n document.exitFullscreen().then(() => (document.body.style.overflow = \"auto\"));\n } else {\n dispatch(setClearPopoversSlice());\n document.documentElement.requestFullscreen().then(() => (document.body.style.overflow = \"hidden\"));\n dispatch(setIsFullScreen(true));\n sendFluentLog(fullscreenLog(\"fullScreen\"));\n }\n }\n};\n\nexport const handleLockOrientation = () => {\n if (conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isIOS)) {\n if (conditions(ConditionName.isLandscape) && !conditions(ConditionName.isFullScreen)) (window.screen.orientation as any).lock(\"portrait\");\n else (window.screen.orientation as any).lock(\"landscape\");\n }\n};\n\nexport const handleLock = (type: string) => {\n const dispatch = store.dispatch;\n dispatch(setLock(type === \"lock\"));\n sendFluentLog(lockLog(type));\n if (type === \"unlock\") localStorage.setItem(\"unlock-click\", \"true\");\n};\n\nexport const handleVideoTimeline = (currentTimeValue: number, movedTimeValue?: number) => {\n if (conditions(ConditionName.isSendTimelineLog)) {\n const dispatch = store.dispatch;\n const { videoTimelines } = store.getState().videoData;\n let currentTime = Math.floor(currentTimeValue);\n let movedTime = Math.floor(movedTimeValue!);\n if (videoTimelines.length === 0) {\n dispatch(setVideoTimelines([currentTime >= mainPlayerVideoTag()?.duration ? movedTime! : currentTime]));\n } else {\n if (videoTimelines[0] < currentTime)\n apiCaller({\n url: API().videoTimelineLog,\n method: \"post\",\n data: videoTimelineLog(videoTimelines[0], currentTime),\n });\n if (movedTime && movedTime >= mainPlayerVideoTag()?.duration) dispatch(setVideoTimelines([]));\n else dispatch(setVideoTimelines([movedTime!]));\n }\n }\n};\n\nexport const handleVideoElementSizeInfo = () => {\n const dispatch = store.dispatch;\n const element: any = document.getElementById(\"video-area\")?.getBoundingClientRect();\n element.height = (element.width * 9) / 16;\n if (element) dispatch(setVideoElementSizeInfo(element));\n};\n\nexport const handleDoubleClick = (event: any) => {\n if (!conditions(ConditionName.isTouchScreen) && event.target.nodeName !== \"INPUT\") handleFullScreen();\n};\n","import { conditions } from \"./conditions/conditions\";\nimport { ConditionName } from \"./interfaces/enums\";\nimport store from \"./redux/store\";\nimport { setClearVideoDataSlice } from \"./redux/slices/videoDataSlice\";\nimport { setClearControllerSlice, setFirstMute, setPlay } from \"./redux/slices/controllerSlice\";\nimport { setClearUserSlice } from \"./redux/slices/userSlice\";\nimport { setClearPopoversSlice } from \"./redux/slices/popoversSlice\";\nimport { handleChangeSoundVolume } from \"./redux/actions/controller.actions\";\nimport { ClassNameValue } from \"tailwind-merge\";\nimport { twMerge as tailwindMerge } from \"tailwind-merge\";\n\nconst PREFIX = \"pl-\";\n\nconst twMerge = (...classLists: ClassNameValue[]) => {\n const input = classLists.flat(1).filter(Boolean).join(\" \").trim();\n if (!input) return \"\";\n const classes = input?.split(/\\s+/);\n const hadPrefix = new Set(classes.filter((cls) => cls.startsWith(PREFIX)).map((cls) => cls.slice(PREFIX.length)));\n const withoutPrefix = classes.map((cls) => (cls.startsWith(PREFIX) ? cls.slice(PREFIX.length) : cls));\n const merged = tailwindMerge(withoutPrefix.join(\" \"))?.split(\" \");\n const finalClasses = merged.map((cls) => (hadPrefix.has(cls) ? PREFIX + cls : cls));\n return finalClasses.join(\" \").trim();\n};\n\nexport const tw = (classname: string, options?: { touchFullScreen?: string; touch?: string; desktopFullScreen?: string; desktop?: string }) => {\n const config = options || {};\n const isTouch = conditions(ConditionName.isTouchScreen);\n const isFullScreen = conditions(ConditionName.isFullScreen);\n\n if (isTouch) return twMerge(classname, config.touch, isFullScreen ? config.touchFullScreen : undefined);\n else return twMerge(classname, config.desktop, isFullScreen ? config.desktopFullScreen : undefined);\n};\n\nexport const styleMerge = <T extends number | string>(options: { touchFullScreen?: T; touch?: T; desktopFullScreen?: T; desktop?: T }) => {\n const isTouch = conditions(ConditionName.isTouchScreen);\n const isFullScreen = conditions(ConditionName.isFullScreen);\n\n let result: T | undefined;\n\n if (isTouch) result = isFullScreen ? (options.touchFullScreen ?? options.touch) : options.touch;\n else result = isFullScreen ? (options.desktopFullScreen ?? options.desktop) : options.desktop;\n\n return result as T;\n};\n\nexport const wait = (s: number) => new Promise((resolve) => setTimeout(resolve, s * 1000));\n\nexport const getUUID = () => {\n let uuid = localStorage.getItem(\"hamrahiUUID\");\n if (!uuid) {\n uuid = uuidGenerator();\n localStorage.setItem(\"hamrahiUUID\", uuid);\n }\n return uuid.toString();\n};\n\nexport const uuidGenerator = () => {\n let uuid = \"xxxxxxxx-xxxx-Mxxx-Nxxx-x\".replace(/[xMN]/g, (char) => {\n let val: number;\n if (char === \"M\") val = Math.floor(1 + Math.random() * 5);\n else if (char === \"N\") val = Math.floor(8 + Math.random() * 4);\n else val = Math.floor(Math.random() * 16);\n return val.toString(16);\n });\n uuid += Date.now().toString(16);\n return uuid;\n};\n\nexport const isTouchScreen = () =>\n typeof window !== \"undefined\" &&\n (\"ontouchstart\" in window || ((window as any)[\"DocumentTouch\"] && document instanceof (window as any)[\"DocumentTouch\"]));\n\nexport const isTouchScreenLandscape = () => {\n const { isFullScreen } = store.getState().controller;\n return isTouchScreen() && isFullScreen;\n};\nexport const isTouchScreenPortrait = () => {\n const { isFullScreen } = store.getState().controller;\n return isTouchScreen() && !isFullScreen;\n};\n\nexport const isIOS = () => {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n};\n\nexport const addZeroBefore = (n: number) => {\n return (n < 10 ? \"0\" : \"\") + n;\n};\n\nexport const secondsToHMS = (seconds: number) => {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.floor((seconds % 3600) % 60);\n return h < 1 ? `${addZeroBefore(m)}:${addZeroBefore(s)}` : `${addZeroBefore(h)}:${addZeroBefore(m)}:${addZeroBefore(s)}`;\n};\n\nexport const addUuidToSrc = (src: string) => {\n const urlObject = new URL(src);\n let urlSrc = src;\n if (urlObject.search.length) return (urlSrc += `&uuid=${getUUID()}`);\n else return (urlSrc += `?uuid=${getUUID()}`);\n};\n\nexport const checkParentTarget = (event: any, target: string) => {\n try {\n return [\n event.target.id,\n event.target.parentNode.id,\n event.target.parentNode.parentNode.id,\n event.target.parentNode.parentNode.parentNode.id,\n event.target.parentNode.parentNode.parentNode.parentNode.id,\n ].includes(target);\n } catch (error) {\n return false;\n }\n};\n\nexport const splitQueryParamsFromStreamLink = (playerType: \"mainPlayer\" | \"miniPlayer\") => {\n const { params } = store.getState().videoData;\n\n let streamLink = \"\";\n if (!params.id && params.stream_link) streamLink = params.stream_link;\n else {\n if (playerType === \"mainPlayer\") streamLink = store.getState().videoData.details.stream_link!;\n else streamLink = store.getState().miniPlayer.details.stream_link!;\n }\n\n let queryParams: string = \"\";\n if (streamLink) queryParams = streamLink?.split(\"m3u8\")[1];\n if (queryParams) queryParams = `${queryParams}&uuid=${getUUID()}`;\n else queryParams = `?uuid=${getUUID()}`;\n return queryParams;\n};\n\nexport const handleRippleCircle = (event: any, id: string) => {\n const element: any = document.getElementById(id);\n const circle = document.createElement(\"span\");\n circle.style.width = circle.style.height = `50px`;\n circle.style.left = `${event.touches[0].clientX - element.offsetLeft - 25}px`;\n circle.style.top = `${event.touches[0].clientY - element.offsetTop - 25}px`;\n circle.classList.add(\"pl-ripple\");\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\n if (ripple) ripple.remove();\n element.appendChild(circle);\n};\n\nexport const handleRipple = (event: any, id: string, size: number = 50) => {\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n const clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n const element: any = document.getElementById(id);\n const circle = document.createElement(\"span\");\n circle.style.width = circle.style.height = `${size}px`;\n circle.style.left = `${clientX - size / 2}px`;\n circle.style.top = `${clientY - element.getBoundingClientRect().top - size / 2}px`;\n circle.classList.add(\"pl-ripple\");\n const ripple = element.getElementsByClassName(\"pl-ripple\")[0];\n if (ripple) ripple.remove();\n element.appendChild(circle);\n};\n\nexport const responseValidator = (status: number): boolean => status >= 200 && status < 300;\n\nexport const clearRedux = () => {\n const dispatch = store.dispatch;\n dispatch(setClearVideoDataSlice());\n dispatch(setClearControllerSlice());\n dispatch(setClearUserSlice());\n dispatch(setClearPopoversSlice());\n};\n\nexport const weighted_random = (options: any) => {\n let i;\n\n let weights: any[] = [];\n\n for (i = 0; i < options.length; i++) weights[i] = options[i].weight + (weights[i - 1] || 0);\n\n let random = Math.random() * weights[weights.length - 1];\n\n for (i = 0; i < weights.length; i++) if (weights[i] > random) break;\n\n return options[i].domain;\n};\n\n// ***** Player Core *****\n\nexport const handlePageLoadTime = (loadingDurationRef: any) => {\n let pageLoadTime = 0;\n if (performance && performance.getEntriesByType(\"navigation\")) pageLoadTime = performance.getEntriesByType(\"navigation\")[0].duration;\n loadingDurationRef.current = pageLoadTime;\n};\n\nexport const highestResolutionSupported = (resolutions: string[], width: number, height: number) => {\n const w = width * window.devicePixelRatio;\n const h = height * window.devicePixelRatio;\n let filteredResolutions: string[] = [];\n if (conditions(ConditionName.isTouchScreenPortrait))\n filteredResolutions = resolutions.filter((resolution: string) => Number(resolution?.split(\"x\")[0].trim()) <= w);\n else\n filteredResolutions = resolutions.filter(\n (resolution: string) => Number(resolution?.split(\"x\")[0].trim()) <= h || Number(resolution?.split(\"x\")[1].trim()) <= w,\n );\n return filteredResolutions.indexOf(filteredResolutions[filteredResolutions.length - 1]);\n};\n\nexport const flattenObject = (input: any, keyName?: string) => {\n let result: any = {};\n for (const key in input) {\n const newKey = keyName ? `${keyName}_${key}` : key;\n if (typeof input[key] === \"object\" && !Array.isArray(input[key])) result = { ...result, ...flattenObject(input[key], newKey) };\n else result[newKey] = input[key];\n }\n return result;\n};\n\nexport const sortLanguages = (array: any) => {\n const priority: any = { fa: 1, en: 2 };\n\n return array.slice().sort((a: any, b: any) => {\n const prioA = priority[a.lang] || 999;\n const prioB = priority[b.lang] || 999;\n\n return prioA - prioB;\n });\n};\n\nexport const getSubtitleLabel = (subtitleLanguage: string) => {\n let label;\n switch (subtitleLanguage) {\n case \"fa\":\n label = \"فارسی\";\n break;\n case \"en\":\n label = \"انگلیسی\";\n break;\n case \"ar\":\n label = \"عربی\";\n break;\n case \"tr\":\n label = \"ترکی\";\n break;\n default:\n break;\n }\n return label;\n};\n\nexport const spliteStringPerLine = (str: string) => str?.split(/\\r?\\n|\\r|\\n/g);\n\nexport const inViewPort = (element: any) => {\n if (element) {\n const positionLeft = element.offsetLeft - element.offsetWidth / 2;\n const positionRight = window.innerWidth - (element.offsetLeft + element.offsetWidth);\n if (positionLeft >= 0 && positionRight >= 0) return \"inViewport\";\n else if (positionLeft < 0) return \"OutViewPortFromLeft\";\n else if (positionRight < 0) return \"OutViewPortFromRight\";\n }\n};\n\nexport const compare = (a: any, b: any) => {\n if (a.time < b.time) return -1;\n if (a.time > b.time) return 1;\n return 0;\n};\n\nexport const cleanVTT = (vttText: string) => {\n // Remove all timestamps and alignment/position data\n vttText = vttText.replace(/\\d{2}:\\d{2}:\\d{2}\\.\\d{3} --> \\d{2}:\\d{2}:\\d{2}\\.\\d{3}.*\\n/g, \"\");\n\n // Remove all HTML tags like <c> and </c>\n vttText = vttText.replace(/<[^>]+>/g, \"\");\n\n // Remove extra blank lines\n vttText = vttText.replace(/\\n+/g, \"\\n\");\n\n // Trim leading and trailing whitespace\n vttText = vttText.trim();\n\n return vttText;\n};\n\nexport const isDev = process.env.NODE_ENV === \"development\";\n\nexport const setupAutoplayBehavior = (video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n if (params.autoplay === \"true\" || params.advertisement) {\n const playPromise = video.play();\n\n dispatch(setPlay(true));\n handleChangeSoundVolume(100, video);\n\n if (playPromise !== undefined)\n playPromise\n .then(() => {\n handleChangeSoundVolume(100, video);\n })\n .catch(() => {\n handleChangeSoundVolume(0, video);\n dispatch(setFirstMute(true));\n if (ConditionName.isIOS) video.play();\n });\n }\n};\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { IUserSettings, IUserSlice, IVideoSettings } from \"../../interfaces/interfaces\";\nimport { isDev } from \"../../helpers\";\n\nconst UserSliceState: IUserSlice = {\n settings: { quality: isDev ? 0 : -1, brightness: 100, volume: 100, speed: 1 },\n videoSettings: { time: 0 },\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState: UserSliceState,\n reducers: {\n setUserSettings: (state, action: PayloadAction<IUserSettings>) => {\n state.settings = action.payload;\n },\n setVideoSettings: (state, action: PayloadAction<IVideoSettings>) => {\n state.videoSettings = action.payload;\n },\n setClearUserSlice: () => {\n return UserSliceState;\n },\n },\n});\n\nexport const { setUserSettings, setVideoSettings, setClearUserSlice } = userSlice.actions;\n\nexport default userSlice.reducer;\n","import controllerReducer from \"./slices/controllerSlice\";\r\nimport videoDataReducer from \"./slices/videoDataSlice\";\r\nimport popoversReducer from \"./slices/popoversSlice\";\r\nimport userReducer from \"./slices/userSlice\";\r\nimport miniPlayerReducer from \"./slices/miniPlayerSlice\";\r\n\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nconst store = configureStore({\r\n reducer: {\r\n controller: controllerReducer,\r\n videoData: videoDataReducer,\r\n popovers: popoversReducer,\r\n user: userReducer,\r\n miniPlayer: miniPlayerReducer,\r\n },\r\n devTools: true,\r\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false })\r\n});\r\n\r\nexport type RootState = ReturnType<typeof store.getState>;\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport default store;\r\n","import { AppDispatch, RootState } from \"./store\";\nimport { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\n\nexport const useAppDispatch: any = () => useDispatch<AppDispatch>();\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\n","import { IDetailsConfig } from \"./interfaces/interfaces\";\nimport store from \"./redux/store\";\nimport { API } from \"./services/services\";\n\nexport const detailAPI = (id?: string) => {\n const { params } = store.getState().videoData;\n return API().vod.getVodUrl + (id ? id : params.id);\n};\n\nconst detailsConfig: IDetailsConfig = {\n url: \"\",\n maxRetryCount: 0,\n headers: {},\n retryPolicy: [],\n errorCallback: undefined\n};\n\nconst vodDetailsConfig = (videoId?:string) => {\n detailsConfig.url = detailAPI(videoId);\n detailsConfig.maxRetryCount = 3;\n detailsConfig.retryPolicy = [\n {\n codeAbove: 500,\n codeBelow: null,\n excludeCodes: [],\n includeCodes: [409],\n delay: 1,\n count: 3\n },\n {\n codeAbove: null,\n codeBelow: 404,\n excludeCodes: [403, 402, 401, 400],\n includeCodes: [],\n delay: 10,\n count: 6\n }\n ];\n return detailsConfig;\n};\n\n\nexport const handleDetailsConfig = (videoId?: string) => {\n vodDetailsConfig(videoId);\n return detailsConfig;\n};\n","import { apiCaller, getAll } from \"../../services/apiCaller\";\nimport { setInfo, setIsFetchDetails, setIsValidAddress, setRawSubtitles, setSelectedSubtitle } from \"../slices/videoDataSlice\";\nimport store from \"../store\";\nimport { addUuidToSrc, responseValidator, weighted_random } from \"../../helpers\";\nimport axios from \"axios\";\nimport { handleDetailsConfig } from \"../../getDetailsConfigs\";\nimport { subtitleLog } from \"../../logs/logs\";\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\nimport { mainPlayerVideoTag } from \"../../constants\";\nimport { setDetailsMiniPlayer } from \"../slices/miniPlayerSlice\";\nimport { conditions } from \"../../conditions/conditions\";\nimport { ConditionName } from \"../../interfaces/enums\";\nimport { ISubtitle } from \"../../interfaces/interfaces\";\n\nexport const getVodDetails = async (videoId?: string) => {\n const dispatch = store.dispatch;\n\n try {\n const d = await apiCaller({ ...handleDetailsConfig(videoId) });\n if (responseValidator(d.status)) {\n await axios.head(\"https://\" + weighted_random(d.data.hls_links) + d.data.path);\n if (videoId) return dispatch(setDetailsMiniPlayer(d.data));\n detailSetter(d.data);\n if (!conditions(ConditionName.hasRawSubtitles) && d?.data?.subtitles) handleRawSubtitles(d.data.subtitles);\n } else throw new Error(JSON.stringify({ status: d.status, message: d.data }));\n } catch (error: any) {\n dispatch(setIsFetchDetails(true));\n dispatch(setIsValidAddress(false));\n }\n};\n\nexport const detailSetter = async (data: any) => {\n const dispatch = store.dispatch;\n let info = {\n ...data,\n subtitles: undefined,\n stream_link: !!data.stream_link && addUuidToSrc(\"https://\" + weighted_random(data.hls_links) + data.path),\n };\n\n dispatch(setInfo(info));\n dispatch(setIsFetchDetails(true));\n dispatch(setIsValidAddress(true));\n};\n\nconst handleRawSubtitles = async (subtitles: ISubtitle[]) => {\n const dispatch = store.dispatch;\n const validSubtitles = await filterValidSubtitles(subtitles);\n dispatch(setRawSubtitles(validSubtitles));\n};\n\nexport const handleSubtitle = (activeSubtitle?: string) => {\n const dispatch = store.dispatch;\n const { subtitles, selectedSubtitle, params } = store.getState().videoData;\n const videoTag = mainPlayerVideoTag();\n\n if (!videoTag) return null;\n\n const disableCurrentSubtitle = () => {\n const activeTrack = Array.from(videoTag.textTracks).find((track) => track.mode === \"showing\");\n if (activeTrack) activeTrack.mode = \"disabled\";\n };\n\n const notifyStatusChange = (lang: string | null, enabled: boolean) => {\n const subtitles = store.getState().videoData.rawSubtitles;\n params.onSubtitleStatusChange?.(lang ? (subtitles?.find((sub) => sub.lang === lang) ?? null) : null, enabled);\n };\n\n const showSubtitle = (track: TextTrack | undefined) => {\n if (!track) return;\n track.mode = \"showing\";\n dispatch(setSelectedSubtitle(track));\n sendFluentLog(subtitleLog(track.language));\n notifyStatusChange(track.language, true);\n };\n if (selectedSubtitle && !activeSubtitle) {\n disableCurrentSubtitle();\n dispatch(setSelectedSubtitle(undefined));\n sendFluentLog(subtitleLog(\"empty\"));\n notifyStatusChange(null, false);\n return;\n }\n\n const targetLang = activeSubtitle ?? \"fa\";\n const foundSubtitle = subtitles.find((s) => s.language === targetLang);\n const subtitleToShow = foundSubtitle ?? (videoTag?.textTracks?.[0] as TextTrack | undefined);\n\n showSubtitle(subtitleToShow);\n};\n\nexport const filterValidSubtitles = async (subtitles: ISubtitle[]): Promise<ISubtitle[] | null> => {\n const checks = subtitles.map(async (subtitle) => {\n try {\n const response = await fetch(subtitle.url, { method: \"HEAD\" });\n if (response.ok) return subtitle;\n else return null;\n } catch (err) {\n console.error(`Error fetching subtitle:`, subtitle.url, err);\n return null;\n }\n });\n\n const results = await Promise.all(checks);\n const validSubtitles = results.filter((s): s is ISubtitle => s !== null);\n return validSubtitles.length ? validSubtitles : null;\n};\n\nexport const getAllGeneralMarker = async (url: string) => {\n const response: any = await getAll(url, [\n {\n codeAbove: 400,\n codeBelow: null,\n excludeCodes: [],\n includeCodes: [],\n delay: 2,\n count: 3,\n },\n ]);\n return response;\n};\n","import { useEffect, useRef } from \"react\";\n\nconst useKeyPress = (key: string, cb: any) => {\n const callbackRef = useRef(cb);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n callbackRef.current = cb;\n }, []);\n\n useEffect(() => {\n const handleKeyPress = (event: any) => {\n if (event.code === key && ![\"INPUT\", \"TEXTAREA\"].includes(event.target.nodeName) && !event.target.isContentEditable) callbackRef.current(event);\n };\n\n document.addEventListener(\"keydown\", handleKeyPress);\n\n return () => document.removeEventListener(\"keydown\", handleKeyPress);\n }, [key]);\n};\nexport default useKeyPress;\n","import { tw } from \"../../../helpers/helpers\";\n\nconst Loader = () => {\n return (\n <div className={`pl-absolute pl-inset-0 pl-rounded-[12px] pl-flex pl-items-center pl-justify-center pl-size-full pl-overflow-hidden`}>\n <div\n className={tw(\"loader-spinner\", {\n desktop: \"loader-spinner-desktop\",\n desktopFullScreen: \"loader-spinner-fullscreen\",\n touch: \"loader-spinner-touch\",\n touchFullScreen: \"loader-spinner-touchFullscreen\",\n })}\n ></div>\n </div>\n );\n};\n\nexport default Loader;\n","import { conditions } from \"../../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../../helpers/interfaces/enums\";\nimport { IControllbarTooltipProps } from \"../../../../helpers/interfaces/interfaces\";\n\nconst ControllbarTooltip = ({ title, className }: IControllbarTooltipProps) => (\n <span\n className={`pl-absolute pl-w-max pl-bg-black/75 pl-text-white pl-rounded-[8px] pl-leading-[18px] pl-flex pl-items-center pl-justify-center pl-font-normal ${\n conditions(ConditionName.isFullScreen)\n ? \"pl-bottom-[150%] pl-h-[34px] pl-px-[9.5px] pl-text-[15px]\"\n : \"pl-h-6 pl-bottom-[130%] pl-px-[9px] pl-text-[12px]\"\n } ${className}`}\n >\n {title}\n </span>\n);\n\nexport default ControllbarTooltip;\n","const IMAGES: any = {\n fullScreen: require(\"./svg/FullScreen.svg\"),\n nonFullScreen: require(\"./svg/NonFullScreen.svg\"),\n fullScreen2: require(\"./svg/FullScreen-2.svg\"),\n nonFullScreen2: require(\"./svg/NonFullScreen-2.svg\"),\n settings: require(\"./svg/Settings.svg\"),\n settings2: require(\"./svg/Settings-2.svg\"),\n bigPlay: require(\"./svg/BigPlay.svg\"),\n bigPause: require(\"./svg/BigPause.svg\"),\n mute: require(\"./svg/Mute.svg\"),\n mute2: require(\"./svg/Mute2.svg\"),\n unMute: require(\"./svg/UnMute.svg\"),\n backward15: require(\"./svg/Backward15.svg\"),\n forward15: require(\"./svg/Forward15.svg\"),\n chevronLeft: require(\"./svg/ChevronLeft.svg\"),\n chevronRight: require(\"./svg/ChevronRight.svg\"),\n pictureInPicture: require(\"./svg/PictureInPicture.svg\"),\n lock: require(\"./svg/Lock.svg\"),\n unlock: require(\"./svg/Unlock.svg\"),\n arrowLeft: require(\"./svg/ArrowLeft.svg\"),\n tick: require(\"./svg/Tick.svg\"),\n qualitySetting: require(\"./svg/QualitySetting.svg\"),\n notFound: require(\"./svg/NotFound.svg\"),\n closeSquare: require(\"./svg/CloseSquare.svg\"),\n sun: require(\"./svg/Sun.svg\"),\n subtitleFill: require(\"./svg/SubtitleFill.svg\"),\n subtitleDisable: require(\"./svg/SubtitleDisable.svg\"),\n subtitleOutline: require(\"./svg/SubtitleOutline.svg\"),\n infoCircle: require(\"./svg/InfoCircle.svg\"),\n rotateRed: require(\"./svg/RotateRed.svg\"),\n next: require(\"./svg/next.svg\"),\n forward: require(\"./svg/forward.svg\"),\n forward2: require(\"./svg/forward-2.svg\"),\n backward: require(\"./svg/backward.svg\"),\n backward2: require(\"./svg/backward-2.svg\"),\n export: require(\"./svg/export.svg\"),\n subtitle: require(\"./svg/subtitle.svg\"),\n lowSound: require(\"./svg/low-sound.svg\"),\n info: require(\"./svg/info.svg\"),\n};\n\nexport default IMAGES;\n","import { useRef, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport Image from \"next/image\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport store from \"../../../helpers/redux/store\";\r\nimport { volumeLog } from \"../../../helpers/logs/logs\";\r\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\r\nimport { setUserSettings } from \"../../../helpers/redux/slices/userSlice\";\r\nimport { handleChangeSoundVolume } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { tw } from \"../../../helpers/helpers\";\r\n\r\nconst SoundVolume = ({ width, height }: { width?: number; height?: number }) => {\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const dispatch = useAppDispatch();\r\n const { settings } = useAppSelector(({ user: { settings } }) => ({ settings }), shallowEqual);\r\n\r\n const primaryVolumeRef = useRef<number>(settings.volume);\r\n\r\n const handleMouseUp = () => {\r\n if (primaryVolumeRef.current !== settings.volume) {\r\n const { settings } = store.getState().user;\r\n sendFluentLog(volumeLog(primaryVolumeRef.current, settings.volume));\r\n primaryVolumeRef.current = settings.volume;\r\n // createSettings({ ...settings, volume: settings.volume });\r\n dispatch(setUserSettings({ ...settings, volume: settings.volume }));\r\n }\r\n };\r\n\r\n const handleMute = (type: string) => {\r\n const { settings } = store.getState().user;\r\n if (type === \"mute\") {\r\n handleChangeSoundVolume(0);\r\n sendFluentLog(volumeLog(settings.volume, 0));\r\n // createSettings({ ...settings, volume: 0 });\r\n } else {\r\n sendFluentLog(volumeLog(settings.volume, 100));\r\n handleChangeSoundVolume(100);\r\n // createSettings({ ...settings, volume: 100 });\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n id={conditions(ConditionName.hasSound) ? \"mute\" : \"unmute\"}\r\n className={tw(`pl-relative pl-rounded-full pl-inline-flex pl-items-center pl-justify-center pl-group pl-bg-black/75 pl-sound-icon`, {\r\n desktop: \"pl-min-w-[34px] pl-h-[34px] pl-p-1\",\r\n desktopFullScreen: \"pl-min-w-[48px] pl-h-[48px] pl-p-0 pl-px-1.5\",\r\n })}\r\n >\r\n <div\r\n className={tw(\"pl-flex pl-items-center pl-justify-center pl-rounded-full group-hover:pl-bg-[#5E5E5E] pl-transition-all\", {\r\n desktop: \"pl-h-[26px] pl-min-w-[26px] group-hover:!pl-ps-1 pl-gap-1\",\r\n desktopFullScreen: \"pl-h-[36px] pl-min-w-[36px] group-hover:!pl-ps-1.5 pl-gap-1.5\",\r\n })}\r\n >\r\n {!conditions(ConditionName.isTouchScreen) && (\r\n <input\r\n onMouseUp={handleMouseUp}\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"100\"\r\n value={settings.volume}\r\n onChange={(event) => handleChangeSoundVolume(+event.target.value)}\r\n className={`pl-soundVolume ${conditions(ConditionName.isFullScreen) && \"pl-soundVolume-fullscreen\"} pl-cursor-pointer rounded-full`}\r\n style={{ background: `linear-gradient(to right, white ${settings.volume}%, rgba(255,255,255,0.3) 0)` }}\r\n />\r\n )}\r\n <div\r\n onClick={() => (conditions(ConditionName.hasSound) ? handleMute(\"mute\") : handleMute(\"unmute\"))}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n style={{ paddingInlineEnd: 5 }}\r\n className={tw(\"pl-relative pl-flex pl-items-center pl-shrink-0\", { desktop: \"\", desktopFullScreen: \"\" })}\r\n >\r\n <Image\r\n src={conditions(ConditionName.hasSound) ? (settings.volume >= 50 ? IMAGES.unMute : IMAGES.lowSound) : IMAGES.mute}\r\n alt={conditions(ConditionName.hasSound) ? \"unmute-icon\" : \"mute-icon\"}\r\n className={`pl-flex pl-items-center pl-cursor-pointer`}\r\n width={width}\r\n height={height}\r\n />\r\n </div>\r\n </div>\r\n {showTooltip && <ControllbarTooltip className=\"pl-left-0\" title={conditions(ConditionName.hasSound) ? \"صدا (M)\" : \"بی‌صدا (M)\"} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default SoundVolume;\r\n","import { useEffect, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { handleFullScreen, handleLockOrientation } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { tw } from \"../../../helpers/helpers\";\r\n\r\nconst FullScreen = ({ width, height, className }: { width?: number; height?: number; className?: string }) => {\r\n useAppSelector(({ controller: { firstPlay, isFullScreen } }) => ({ firstPlay, isFullScreen }), shallowEqual);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n // useEffect(() => {\r\n // if (!conditions(ConditionName.isFirstPlay)) dispatch(setActiveElements(false));\r\n // }, [isFullScreen]);\r\n\r\n return (\r\n <div\r\n onDoubleClick={(e) => e.preventDefault()}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n onClick={() => {\r\n handleFullScreen();\r\n handleLockOrientation();\r\n }}\r\n id={conditions(ConditionName.isFullScreen) ? \"exit-full-s\" : \"full-s\"}\r\n className={tw(`pl-relative pl-cursor-pointer pl-flex pl-items-center pl-justify-center pl-rounded-full pl-transition-all ${className}`, {\r\n desktop: \"pl-w-[40px] pl-h-[25px] hover:pl-bg-[#5E5E5E]\",\r\n desktopFullScreen: \"pl-w-[56px] pl-h-[36px]\",\r\n touch: \"pl-w-[32px] pl-h-[22px]\",\r\n touchFullScreen: \"pl-w-[48px] pl-h-[32px]\",\r\n })}\r\n >\r\n <Image\r\n src={conditions(ConditionName.isFullScreen) ? IMAGES.nonFullScreen : IMAGES.fullScreen}\r\n alt=\"fullScreen-icon\"\r\n width={width}\r\n height={height}\r\n />\r\n\r\n {showTooltip && (\r\n <ControllbarTooltip className=\"pl-right-5\" title={`${conditions(ConditionName.isFullScreen) ? \"خروج از\" : \"\"} تمام صفحه (F)`} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FullScreen;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { firstUnMuteHandler, handleChangeSoundVolume, handlePlayPause } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport Image from \"next/image\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport { useRef, useState } from \"react\";\r\nimport { tw } from \"../../../helpers/helpers\";\r\n\r\ninterface PlayPauseProps {\r\n width?: number;\r\n height?: number;\r\n disableTooltip?: boolean;\r\n disableScale?: boolean;\r\n className?: string;\r\n normalStyle?: boolean;\r\n inverse?: boolean;\r\n}\r\n\r\nconst PlayPause: React.FC<PlayPauseProps> = ({ width, height, disableTooltip, disableScale, className, inverse, normalStyle }) => {\r\n const { firstMute } = useAppSelector(({ controller: { play, firstMute } }) => ({ play, firstMute }), shallowEqual);\r\n useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), shallowEqual);\r\n\r\n const inverseRef = useRef(inverse);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const isPlay = inverseRef.current ? !conditions(ConditionName.isPlay) : conditions(ConditionName.isPlay);\r\n\r\n return (\r\n <div\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n // if (firstMute) {\r\n // handleChangeSoundVolume(50);\r\n // firstUnMuteHandler();\r\n // } else\r\n handlePlayPause(event);\r\n }}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n onMouseOver={disableTooltip ? undefined : () => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={disableTooltip ? undefined : () => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n onContextMenu={(event) => event.preventDefault()}\r\n className={tw(\r\n `pl-relative pl-flex pl-items-center pl-justify-center pl-cursor-pointer ${\r\n normalStyle ? \"\" : \"pl-bg-black/75 pl-rounded-full pl-group\"\r\n } ${className}`,\r\n normalStyle ? undefined : { desktop: \"pl-size-[34px]\", desktopFullScreen: \"pl-size-[48px]\" },\r\n )}\r\n >\r\n <div\r\n className={tw(\r\n `pl-flex pl-items-center pl-justify-center pl-transition-all ${normalStyle ? \"\" : \"pl-rounded-full group-hover:pl-bg-[#5E5E5E]\"}`,\r\n normalStyle\r\n ? undefined\r\n : {\r\n desktop: \"pl-size-[26px]\",\r\n desktopFullScreen: \"pl-size-[36px]\",\r\n },\r\n )}\r\n >\r\n <Image\r\n alt=\"\"\r\n src={isPlay ? IMAGES.bigPause : IMAGES.bigPlay}\r\n width={width}\r\n height={height}\r\n className={`pl-transition-transform pl-ease-in-out ${isPlay ? \"pl-big-play-icon\" : \"pl-big-pause-icon\"} ${\r\n !conditions(ConditionName.isTouchScreen) && !disableScale && \"hover:pl-\"\r\n }`}\r\n />\r\n </div>\r\n\r\n {showTooltip && !disableTooltip && <ControllbarTooltip className=\"pl-left-0\" title={isPlay ? \"پخش (K)\" : \"توقف (K)\"} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlayPause;\r\n","import Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { styleMerge, tw } from \"../../../helpers/helpers\";\r\n\r\nconst SoundVolumeAlert = ({ className }: { className?: string }) => {\r\n return (\r\n <div\r\n className={tw(`pl-cursor-default pl-flex pl-items-center pl-bg-white pl-rounded-[4px] ${className}`, {\r\n desktop: \"pl-gap-2 pl-absolute pl-z-10 pl-h-9 pl-px-2 pl-top-[28px] pl-right-[18px] \",\r\n desktopFullScreen: \"pl-h-12 pl-px-3 pl-top-[46px] pl-right-[29px]\",\r\n touch: \"pl-gap-1.5 pl-h-6 pl-px-2\",\r\n touchFullScreen: \"pl-gap-2 pl-h-[36px] pl-px-2\",\r\n })}\r\n >\r\n <Image\r\n alt=\"mute\"\r\n width={styleMerge({ desktop: 24, desktopFullScreen: 32, touch: 16, touchFullScreen: 24 })}\r\n height={styleMerge({ desktop: 24, desktopFullScreen: 32, touch: 16, touchFullScreen: 24 })}\r\n src={IMAGES.mute2}\r\n className={\"pl-cursor-pointer\"}\r\n />\r\n <p\r\n className={tw(\"pl-font-medium pl-whitespace-nowrap pl-text-black\", {\r\n desktopFullScreen: \"pl-text-[14px]\",\r\n desktop: \"pl-text-[12px]\",\r\n touch: \"pl-text-[10px]\",\r\n touchFullScreen: \"pl-text-[12px]\",\r\n })}\r\n >\r\n برای پخش صدا روی ویدیو بزنید\r\n </p>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SoundVolumeAlert;\r\n","import Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { handleLock } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\n\r\nconst Lock = () => {\r\n\r\n return (\r\n <div className={`pl-relative animate__animated animate__faster ${conditions(ConditionName.isActiveElements) ? \"animate__fadeIn pl-pointer-events-auto\" : \"animate__fadeOut pl-pointer-events-none\"}`}>\r\n <Image\r\n src={IMAGES.lock}\r\n alt=\"lock-icon\"\r\n width={20}\r\n height={20}\r\n onClick={() => handleLock(\"unlock\")}\r\n />\r\n {!localStorage.getItem(\"unlock-click\") && <p className=\"pl-text-[10px] pl-text-black/[0.87] pl-bg-[#F7F7F7] pl-absolute pl-left-0 pl-px-4 pl-py-3 pl-rounded-[8px] pl-w-max\">برای باز کردن قفل، کلیک کنید</p>}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Lock;\r\n","import { shallowEqual } from \"react-redux\";\nimport Title from \"../title/title\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport Lock from \"../lockUnlock/lock\";\nimport { tw } from \"../../../helpers/helpers\";\n\nconst Header = () => {\n const { firstPlay } = useAppSelector(({ controller: { lock, activeElements, firstPlay } }) => ({ lock, activeElements, firstPlay }), shallowEqual);\n\n return (\n <div\n // style={{ backgroundImage: \"linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0) 100%)\" }}\n className={tw(`pl-duration-300 pl-transition-[opacity] ${firstPlay ? \"pl-opacity-0\" : \"pl-opacity-100\"}`, {\n desktop: \"pl-rounded-t-[12px] pl-pt-8 pl-h-[45.5px]\",\n touch: \"pl-h-[16px]\",\n })}\n >\n <div className=\" pl-mx-8 pl-flex pl-items-start pl-justify-end pl-h-full\">\n {/* {conditions(ConditionName.showTitle) && <Title />} */}\n {conditions(ConditionName.isLock) && <Lock />}\n </div>\n </div>\n );\n};\n\nexport default Header;\n","import { IEnvironment } from \"./interfaces/interfaces\";\n\nexport const ENVIRONMENT: IEnvironment = {\n reduxDevTool: true\n};\n\nexport const activeElementsTime = 1000;\n\nexport const showLoaderTime = 3000;\n\nexport const continuousePlaybackIntervalTime = 60000;\n","import { useEffect, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport PlayPause from \"../playPause/playPause\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, zIndex } from \"../../../helpers/interfaces/enums\";\r\nimport Loader from \"../loader/loader\";\r\nimport { showLoaderTime } from \"../../../helpers/environment\";\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { handleBackwardForward } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { isTouchScreen } from \"../../../helpers/helpers\";\r\n\r\nconst Main = () => {\r\n const { firstPlay, autoplay, play, isLoading } = useAppSelector(\r\n ({\r\n controller: { lock, firstPlay, play, activeElements, isLoading },\r\n videoData: {\r\n params: { autoplay },\r\n },\r\n }) => ({ lock, firstPlay, autoplay, play, activeElements, isLoading }),\r\n shallowEqual,\r\n );\r\n\r\n const [showLoader, setShowLoader] = useState<boolean>(true);\r\n const [showPlayPause, setShowPlayPause] = useState<boolean>(!autoplay);\r\n\r\n useEffect(() => {\r\n if (firstPlay || conditions(ConditionName.isTouchScreen)) return;\r\n\r\n let timeout: any = null;\r\n setShowPlayPause(true);\r\n timeout = setTimeout(() => setShowPlayPause(false), 1000);\r\n return () => {\r\n if (timeout) clearTimeout(timeout);\r\n };\r\n }, [play, firstPlay]);\r\n\r\n useEffect(() => {\r\n let timeout: any;\r\n if (isLoading) timeout = setTimeout(() => setShowLoader(true), showLoaderTime);\r\n else setShowLoader(false);\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n }, [isLoading, firstPlay]);\r\n\r\n return (\r\n <main className={`pl-flex-1 pl-flex pl-flex-col ${isTouchScreen() ? \"pl-absolute pl-inset-0\" : \"\"}`}>\r\n {showLoader ? (\r\n <Loader />\r\n ) : (\r\n <>\r\n {!conditions(ConditionName.isLock) && (\r\n <div\r\n id=\"main-content\"\r\n className={`pl-h-full pl-flex-1 pl-flex pl-justify-center pl-items-center pl-text-center ${\r\n conditions(ConditionName.isActiveElements) ? \"pl-pointer-events-auto\" : \"pl-pointer-events-none\"\r\n }`}\r\n >\r\n {!conditions(ConditionName.isTouchScreen) ? (\r\n <div className=\"pl-flex pl-justify-center pl-gap-8 pl-items-center pl-w-max\" style={{ zIndex: zIndex.mainIcons }}>\r\n <PlayPause\r\n normalStyle\r\n disableScale\r\n disableTooltip\r\n inverse={!firstPlay}\r\n width={conditions(ConditionName.isFullScreen) ? 81 : 48}\r\n height={conditions(ConditionName.isFullScreen) ? 81 : 48}\r\n className={`pl-flex pl-transition-all pl-duration-300 pl-ease-in-out pl-items-center pl-justify-center pl-rounded-full ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-size-[122px]\" : \"pl-size-[72px]\"\r\n } pl-bg-black/75 ${showPlayPause ? \"pl-opacity-100\" : \"pl-opacity-0 pl-scale-0\"} ${\r\n firstPlay ? \"!pl-cursor-pointer\" : \"!pl-cursor-default\"\r\n }`}\r\n />\r\n </div>\r\n ) : (\r\n <div className=\"pl-flex pl-justify-center pl-gap-8 pl-items-center pl-w-max\" style={{ zIndex: zIndex.mainIcons }}>\r\n {!firstPlay && (\r\n <div\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleBackwardForward(\"touchForward\", 10, e);\r\n }}\r\n className={`pl-flex pl-transition-all pl-duration-300 pl-ease-in-out pl-items-center pl-justify-center pl-rounded-full ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-size-[56px]\" : \"pl-size-[40px]\"\r\n } pl-bg-black/75 ${conditions(ConditionName.isActiveElements) ? \"pl-opacity-100\" : \"pl-opacity-0\"}`}\r\n >\r\n <Image\r\n src={IMAGES.forward2}\r\n alt=\"\"\r\n className={\"!pl-cursor-pointer\"}\r\n width={conditions(ConditionName.isFullScreen) ? 28 : 16}\r\n height={conditions(ConditionName.isFullScreen) ? 28 : 16}\r\n />\r\n </div>\r\n )}\r\n\r\n <PlayPause\r\n normalStyle\r\n disableScale\r\n disableTooltip\r\n className={`pl-flex pl-transition-all pl-duration-300 pl-ease-in-out pl-items-center pl-justify-center pl-rounded-full ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-size-[68px]\" : \"pl-size-[48px]\"\r\n } pl-bg-black/75 ${conditions(ConditionName.isActiveElements) ? \"pl-opacity-100\" : \"pl-opacity-0\"}`}\r\n width={conditions(ConditionName.isFullScreen) ? 36 : 24}\r\n height={conditions(ConditionName.isFullScreen) ? 36 : 24}\r\n />\r\n\r\n {!firstPlay && (\r\n <div\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleBackwardForward(\"touchBackward\", 10, e);\r\n }}\r\n className={`pl-flex pl-transition-all pl-duration-300 pl-ease-in-out pl-items-center pl-justify-center pl-rounded-full ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-size-[56px]\" : \"pl-size-[40px]\"\r\n } pl-bg-black/75 ${conditions(ConditionName.isActiveElements) ? \"pl-opacity-100\" : \"pl-opacity-0\"}`}\r\n >\r\n <Image\r\n src={IMAGES.backward2}\r\n alt=\"\"\r\n className={\"!pl-cursor-pointer\"}\r\n width={conditions(ConditionName.isFullScreen) ? 28 : 16}\r\n height={conditions(ConditionName.isFullScreen) ? 28 : 16}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </main>\r\n );\r\n};\r\n\r\nexport default Main;\r\n","import store from \"../../redux/store\";\nimport { catchUpLoadingLog } from \"../../logs/logs\";\nimport { ConditionName, zIndex } from \"../../interfaces/enums\";\nimport { setActiveElements, setActivePointerProgressBar, setDelayTurnOffControlbar, setTooltipTime } from \"../slices/controllerSlice\";\nimport { handleVideoTimeline } from \"./controller.actions\";\nimport { setInfo } from \"../slices/videoDataSlice\";\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\nimport { conditions } from \"../../conditions/conditions\";\nimport { activeElementsTime } from \"../../environment\";\nimport {\n mainPlayerVideoTag,\n playerControllbar,\n progressArea,\n progressBar,\n progressBarWidth,\n progressContainer,\n progressTrack,\n} from \"../../constants\";\nimport { secondsToHMS } from \"../../helpers\";\nimport { CSSProperties } from \"react\";\n\nexport const getPointerPosition = (event: any) => {\n const { videoElementSizeInfo } = store.getState().videoData;\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n if (clientX <= videoElementSizeInfo.right && clientX > 0) {\n return clientX - videoElementSizeInfo.left;\n }\n};\n\nexport const getMarkerPosition = (markerTime: number) => {\n const { duration } = store.getState().controller;\n return (markerTime * progressBarWidth()) / duration;\n};\n\nexport const hideProgressTooltip = (progressTooltip: any) => {\n if (progressTooltip) {\n progressTooltip.style.opacity = \"0.0\";\n progressTooltip.style.pointerEvents = \"none\";\n progressTooltip.style.zIndex = zIndex.vttDisable;\n handlerShowOrHiddenControllbarInTouch(true);\n }\n};\n\nconst generalStyleTooltipHandler = (progressTooltip: any) => {\n progressTooltip.style.display = \"block\";\n progressTooltip.style.zIndex = zIndex.vtt;\n progressTooltip.style.opacity = !!store.getState().videoData.details.vtt ? \"1.0\" : \"0.6\";\n progressTooltip.style.pointerEvents = \"auto\";\n progressTooltip.style.transition = \"opacity 1s ease-out\";\n handlerShowOrHiddenControllbarInTouch(false);\n};\n\nexport const showProgressTooltip = (event: any, progressTooltip: any, progressBarTooltip: any) => {\n if (progressTooltip) generalStyleTooltipHandler(progressTooltip);\n\n const offset = progressArea()?.offsetLeft || 0;\n const SAFE_OFFSET = offset ? 0 : 16;\n const pointerX = getPointerPosition(event)! - offset;\n const tooltipWidth = progressTooltip.offsetWidth;\n const barWidth = progressTooltip.parentElement.offsetWidth;\n const left = Math.min(Math.max(pointerX - tooltipWidth / 2, 0 + SAFE_OFFSET), barWidth - tooltipWidth - SAFE_OFFSET);\n progressTooltip.style.left = `${left}px`;\n\n store.dispatch(setTooltipTime(Number(getTimeFromPointer(event)!)));\n progressBarTooltip.textContent = `${secondsToHMS(getTimeFromPointer(event)!)}`;\n};\n\nexport const handleTimeTooltip = (event: any, isTimer: boolean = false) => {\n const { videoElementSizeInfo } = store.getState().videoData;\n const progressTooltip: any = document.querySelector(\".pl-progressTooltip\");\n const progressBarTooltip: any = document.querySelector(\".pl-progressTimeTooltip\");\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n if (progressTooltip && progressBarTooltip && clientX <= videoElementSizeInfo.right && clientX > videoElementSizeInfo.left) {\n showProgressTooltip(event, progressTooltip, progressBarTooltip);\n if (isTimer) setTimeout(() => hideProgressTooltip(progressTooltip), 2000);\n } else hideProgressTooltip(progressTooltip);\n};\n\nexport const getTimeFromPointer = (event: any) => {\n const track = progressTrack();\n const { duration } = store.getState().controller;\n if (!track || !duration) return 0;\n\n const clientX = event.clientX !== undefined ? event.clientX : event.touches?.[0]?.clientX;\n\n const rect = track.getBoundingClientRect();\n const offsetX = Math.max(0, Math.min(clientX - rect.left, rect.width));\n\n return (offsetX / rect.width) * duration;\n};\n\nexport const handleProgressTime = (event: any) => {\n const { duration } = store.getState().controller;\n const bar = progressBar();\n const currentTime = getTimeFromPointer(event);\n bar.style.width = `${(currentTime / duration) * 100}%`;\n};\n\nexport const handlePointerDown = (event: any, timeoutIds: any, setIsPointerDown: (value: boolean) => void) => {\n event.preventDefault();\n event.stopPropagation();\n setIsPointerDown(true);\n const dispatch = store.dispatch;\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n if (clientX <= event.view.innerWidth && clientX > 0) {\n dispatch(setActivePointerProgressBar(true));\n dispatch(setDelayTurnOffControlbar(true));\n\n const currentTime = getTimeFromPointer(event);\n sessionStorage.setItem(\"previousVideoTime\", String(currentTime));\n progressTrack()?.setPointerCapture(event.pointerId);\n if (timeoutIds.length > 0) timeoutIds.map((id: any) => clearTimeout(id));\n }\n};\n\nconst handlerShowOrHiddenControllbarInTouch = (show: boolean) => {\n // if (conditions(ConditionName.isTouchScreen)) {\n // const controllbar = playerControllbar();\n // controllbar.style.opacity = show ? \"1\" : \"0\";\n // }\n};\n\nexport const handlePointerMove = (event: any) => {\n event.preventDefault();\n event.stopPropagation();\n const dispatch = store.dispatch;\n\n const { activePointerProgressBar } = store.getState().controller;\n const { left } = store.getState().videoData.videoElementSizeInfo;\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n const progressTooltip: any = document.querySelector(\".pl-progressTooltip\");\n if (clientX > left) {\n if (progressTooltip) {\n handlerShowOrHiddenControllbarInTouch(false);\n progressTooltip.style.display = \"block !important\";\n progressTooltip.style.pointerEvents = \"auto\";\n }\n if (activePointerProgressBar) {\n dispatch(setDelayTurnOffControlbar(true));\n handleTimeTooltip(event);\n handleProgressTime(event);\n mainPlayerVideoTag()?.pause();\n }\n } else if (progressTooltip) {\n handlerShowOrHiddenControllbarInTouch(true);\n progressTooltip.style.display = \"none !important\";\n progressTooltip.style.pointerEvents = \"none\";\n }\n};\n\nexport const handlePointerUp = (\n event: any,\n setTimeoutIds: (timeoutIds: any[]) => void,\n timeoutIds: any,\n setIsPointerDown: (value: boolean) => void,\n) => {\n setIsPointerDown(false);\n event.preventDefault();\n event.stopPropagation();\n const dispatch = store.dispatch;\n const { duration } = store.getState().controller;\n\n const { left, right } = store.getState().videoData.videoElementSizeInfo;\n const params = store.getState().videoData.params;\n event.target.removeEventListener(\"pointermove\", handlePointerMove);\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n let currentTime = 0;\n if (clientX > left && clientX < right) currentTime = getTimeFromPointer(event)!;\n else if (clientX < left) currentTime = 0;\n else if (clientX > 0) currentTime = duration;\n if (!conditions(ConditionName.isStaticFormat)) handleVideoTimeline(mainPlayerVideoTag().currentTime, currentTime);\n mainPlayerVideoTag().currentTime = currentTime;\n if (conditions(ConditionName.hasOnChangeCurrentTime)) params.onChangeCurrentTime!(currentTime);\n if (store.getState().controller.activePointerProgressBar) {\n dispatch(setActivePointerProgressBar(false));\n dispatch(setDelayTurnOffControlbar(false));\n mainPlayerVideoTag().play();\n handleTimeTooltip(event, true);\n sessionStorage.setItem(\"current-time\", String(currentTime));\n handleProgressTime(event);\n handleTimeout(event, dispatch, setTimeoutIds, timeoutIds);\n }\n};\n\nconst handleTimeout = (event: any, dispatch: any, setTimeoutIds: (timeoutIds: any[]) => void, timeoutIds: any) => {\n const ids = timeoutIds;\n let timeoutIdTemp = setTimeout(() => {\n const { settingPopover } = store.getState().popovers;\n const { delayTurnOffControlbar } = store.getState().controller;\n if (event.pointerType === \"touch\" && !settingPopover && delayTurnOffControlbar) dispatch(setActiveElements(false));\n }, activeElementsTime);\n ids.push(timeoutIdTemp);\n setTimeoutIds(ids);\n};\n\nexport const handleCatchUpLoadingLog = () => {\n const timer = Date.now();\n mainPlayerVideoTag()\n .play()\n .then(() => sendFluentLog(catchUpLoadingLog(Date.now() - timer)));\n};\n\nexport const handleMouseMove = (event: any) => handleTimeTooltip(event);\n\nexport const handleMouseOut = () => {\n const progressBarTooltip: any = document.querySelector(\".pl-progressTooltip\");\n hideProgressTooltip(progressBarTooltip);\n};\n\n/////// vtt tooltip\nconst deconstructTimestamp = (timestamp: string) => {\n const splitStampMilliseconds = timestamp?.split(\".\");\n const timeParts = splitStampMilliseconds[0];\n const timePartsSplit = timeParts?.split(\":\");\n\n return {\n milliseconds: parseInt(splitStampMilliseconds[1], 10) || 0,\n seconds: parseInt(timePartsSplit.pop()!, 10) || 0,\n minutes: parseInt(timePartsSplit.pop()!, 10) || 0,\n hours: parseInt(timePartsSplit.pop()!, 10) || 0,\n };\n};\n\nconst getSecondsFromTimestamp = (timestamp: string) => {\n const timestampParts: any = deconstructTimestamp(timestamp);\n\n return parseInt(timestampParts.hours * (60 * 60) + timestampParts.minutes * 60 + timestampParts.seconds + timestampParts.milliseconds / 1000, 10);\n};\n\nconst getPropsFromDef = (def: string) => {\n const imageDefSplit = def?.split(/#xywh=/i);\n const imageUrl = imageDefSplit[0];\n const imageCoords = imageDefSplit[1];\n const splitCoords: any = imageCoords.match(/[0-9]+/gi);\n\n return {\n x: splitCoords[0],\n y: splitCoords[1],\n w: splitCoords[2],\n h: splitCoords[3],\n image: imageUrl,\n };\n};\n\nconst getFullyQualifiedUrl = (path: string, base: string) => {\n if (path.indexOf(\"//\") >= 0) {\n // We have a fully qualified path.\n return path;\n }\n\n if (base.indexOf(\"//\") === 0) {\n // We don't have a fully qualified path, but need to\n // be careful with trimming.\n return [base.replace(/\\/$/gi, \"\"), path.trim()].join(\"/\");\n }\n\n if (base.indexOf(\"//\") > 0) {\n // We don't have a fully qualified path, and should\n // trim both sides of base and path.\n return [base.trim(), path.trim()].join(\"/\");\n }\n\n // If all else fails.\n return path;\n};\n\nconst getVttCss = (vttImageDef: string, vttUrl: string) => {\n const cssObj: any = {};\n // If there isn't a protocol, use the VTT source URL.\n let baseSplit: string = vttUrl?.split(/\\/\\w+\\.vtt\\s?/)[0];\n\n /// offset : (vttUrl)?.split(/\\/\\w+\\.vtt\\s?/)[1]\n\n vttImageDef = getFullyQualifiedUrl(vttImageDef, baseSplit);\n\n if (!vttImageDef.match(/#xywh=/i)) {\n cssObj.background = 'url(\"' + vttImageDef + vttUrl?.split(/\\/\\w+\\.vtt\\s?/)[1] + '\")';\n return cssObj;\n }\n\n const imageProps = getPropsFromDef(vttImageDef);\n\n cssObj.background = 'url(\"' + imageProps.image + vttUrl?.split(/\\/\\w+\\.vtt\\s?/)[1] + '\") no-repeat -' + imageProps.x + \"px -\" + imageProps.y + \"px\";\n cssObj.width = imageProps.w + \"px\";\n cssObj.height = imageProps.h + \"px\";\n cssObj.url = imageProps.image;\n\n return cssObj;\n};\n\nexport const fetchFile = (url: string, setVttPool: any) => {\n fetch(url)\n .then((response) => {\n if (!response.ok) {\n store.dispatch(\n setInfo({\n ...store.getState().videoData.details,\n vtt: undefined,\n vtt_mobile: undefined,\n }),\n );\n throw new Error(\"Network response was not ok\");\n }\n return response.text();\n })\n .then((data) => {\n const processedVtts: any[] = [];\n const vttDefinitions = data?.split(/[\\r\\n][\\r\\n]/i);\n vttDefinitions.forEach((vttDef) => {\n if (vttDef.match(/([0-9]{2}:)?([0-9]{2}:)?[0-9]{2}(.[0-9]{3})?( ?--> ?)([0-9]{2}:)?([0-9]{2}:)?[0-9]{2}(.[0-9]{3}).*/gi)) {\n const vttDefSplit = vttDef?.split(/[\\r\\n]/i);\n const vttTiming = vttDefSplit[0];\n const vttTimingSplit = vttTiming?.split(/ ?--> ?/i);\n const vttTimeStart = vttTimingSplit[0];\n const vttTimeEnd = vttTimingSplit[1];\n const vttImageDef = vttDefSplit[1];\n const vttCssDef = getVttCss(vttImageDef, url);\n\n processedVtts.push({\n start: getSecondsFromTimestamp(vttTimeStart),\n end: getSecondsFromTimestamp(vttTimeEnd),\n css: vttCssDef,\n });\n }\n });\n setVttPool(processedVtts);\n })\n .catch((error) => {\n console.error(\"Error fetching file:\", error);\n });\n};\n\nexport const getStyleForTime = (time: number, vttPool: any, cache: any) => {\n for (let i = 0; i < vttPool.length; ++i) {\n const item = vttPool[i];\n if (time >= item.start && time < item.end) {\n // Cache miss\n if (item.css.url && !cache[item.css.url]) {\n const objectVtt: CSSProperties = {\n background: item.css.background,\n width: item.css.width,\n height: item.css.height,\n };\n cache[item.css.url] = objectVtt;\n return objectVtt;\n } else if (item.css.url) return cache[item.css.url];\n }\n }\n};\n","import { useEffect, useState } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport { memo } from \"react\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport { fetchFile, getStyleForTime } from \"../../../helpers/redux/actions/progressbar.actions\";\nimport { tw } from \"../../../helpers/helpers\";\n\nconst Tooltip = () => {\n const { details } = useAppSelector(({ videoData: { details } }) => ({ details }), shallowEqual);\n const { tooltipTime } = useAppSelector(\n ({ controller: { tooltipTime, activeElements, isFullScreen } }) => ({ tooltipTime, activeElements, isFullScreen }),\n shallowEqual,\n );\n\n const cache: any = {};\n const [vttPool, setVttPool] = useState<any>(undefined);\n const [vttUrl, setVttUrl] = useState<string | undefined>(conditions(ConditionName.isTouchScreen) ? details.vtt_mobile : details.vtt);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n setVttUrl(details.vtt_mobile);\n }, [details.vtt_mobile]);\n\n useEffect(() => {\n if (!!vttUrl) fetchFile(details.vtt_mobile!, setVttPool);\n }, [vttUrl]);\n\n if (conditions(ConditionName.isActiveElements))\n return (\n <div\n className={`pl-flex pl-flex-col pl-items-center pl-justify-center pl-progressTooltip pl-absolute pl-bottom-[calc(100%+10px)] pl-text-white pl-text-[14px] ${\n vttUrl && !!vttPool ? \"\" : \"\"\n } pl-rounded-[6px] pl-opacity-0`}\n >\n {vttUrl && !!vttPool && (\n <div\n className={tw(`pl-flex-1 pl-border-[1.5px] pl-border-white pl-overflow-hidden pl-relative pl-rounded-[12px]`, {\n desktopFullScreen: \"pl-h-[164px] pl-w-[291px] pl-mb-1.5\",\n desktop: \"pl-h-[93px] pl-w-[165px] pl-mb-1\",\n touch: \"pl-h-[70px] pl-w-[135px] pl-mb-1\",\n touchFullScreen: \"pl-h-[137px] pl-w-[244px]\",\n })}\n >\n <div\n style={getStyleForTime(tooltipTime, vttPool, cache)}\n className={tw(`pl-absolute pl-inset-0 pl-top-1/2 pl-left-1/2 -pl-translate-x-1/2 -pl-translate-y-1/2 `, {\n desktop: \"pl-scale-[170%]\",\n touch: \"pl-scale-[130%]\",\n desktopFullScreen: \"pl-scale-[290%]\",\n touchFullScreen: \"pl-scale-[250%]\",\n })}\n />\n </div>\n )}\n\n <div\n className={tw(\n `pl-flex pl-items-center pl-mx-auto pl-w-fit pl-bg-black/75 pl-rounded-[24px] pl-justify-center pl-progressTimeTooltip pl-text-white !pl-opacity-100 `,\n {\n desktop: \"pl-text-[12px] pl-py-1 pl-px-2 pl-font-bold\",\n desktopFullScreen: \"pl-text-base pl-py-1.5 pl-px-3\",\n touchFullScreen: \"pl-text-base pl-py-1.5 pl-px-3\",\n touch: \"pl-text-[12px] pl-py-1 pl-px-2\",\n },\n )}\n />\n </div>\n );\n};\n\nexport default memo(Tooltip);\n","import { ChangeEvent, RefObject, useEffect } from \"react\";\n\nconst useOnClickOutside = (ref: RefObject<any>, handler: (event: ChangeEvent<HTMLInputElement>) => void) => {\n useEffect(() => {\n const listener = (event: any) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) return;\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n }, [ref, handler]);\n};\n\nexport default useOnClickOutside;\n","import { IEmojiProps } from \"../../../helpers/interfaces/interfaces\";\nimport { getEmojiUrl } from \"../../../helpers/services/baseUrl\";\n\nconst Emoji = ({ name, className, dataMarker }: IEmojiProps) => {\n // eslint-disable-next-line @next/next/no-img-element\n return <img data-marker={dataMarker} src={`${getEmojiUrl()}/${name}.png`} alt={name} className={className} />;\n};\n\nexport default Emoji;\n","import { useEffect, useRef, useState, memo } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport { useAppDispatch, useAppSelector } from \"../../../../../helpers/redux/hooks\";\nimport { mainPlayerVideoTag, progressBar, progressBarWidth } from \"../../../../../helpers/constants\";\nimport { handleTimeTooltip } from \"../../../../../helpers/redux/actions/progressbar.actions\";\nimport { handleVideoTimeline } from \"../../../../../helpers/redux/actions/controller.actions\";\nimport { sendFluentLog } from \"../../../../../helpers/logs/fluentdLogger\";\nimport { conditions } from \"../../../../../helpers/conditions/conditions\";\nimport { ConditionName, zIndex } from \"../../../../../helpers/interfaces/enums\";\nimport useOnClickOutside from \"../../../../../helpers/hooks/useOnClickOutside\";\nimport { eventMarkerClickLog } from \"../../../../../helpers/logs/logs\";\nimport Emoji from \"../../../emoji/emoji\";\nimport { inViewPort } from \"../../../../../helpers/helpers\";\n\nconst Markers = () => {\n const dispatch = useAppDispatch();\n const { duration, activeElements } = useAppSelector(\n ({ controller: { duration, activeElements, isFullScreen } }) => ({\n duration,\n activeElements,\n isFullScreen\n }),\n shallowEqual\n );\n const { markers } = useAppSelector(\n ({ videoData: { markers, videoElementSizeInfo } }) => ({ markers, videoElementSizeInfo }),\n shallowEqual\n );\n // const { sharePopover } = useAppSelector(({ popovers: { sharePopover } }) => ({ sharePopover }), shallowEqual);\n\n const [markerTime, setMarkerTime] = useState<number | undefined>(undefined);\n const [overlapMarkers, setOverlapMarkers] = useState<any[]>([]);\n const [overlapMarkersPosition, setOverlapMarkersPosition] = useState<any>({});\n const [isOverlapMarkersInViewport, setIsOverlapMarkersInViewport] = useState<boolean>(false);\n\n const calculateMarkerPosition = (time: number) => (duration ? (progressBarWidth() * time) / duration : 0);\n\n const handleClick = (\n event: any,\n markerTime: number,\n markerId: number,\n markerTitle: String,\n markerDescription: String,\n markerSticker: String,\n isTimer: boolean,\n markers: any\n ) => {\n event.stopPropagation();\n const eventMarkerWidth = 24;\n const result = (eventMarkerWidth * markerTime) / (progressBarWidth() + 5);\n\n let overlapMarkers: any[] = [];\n let sumOverlapMarkersTime: number = 0;\n\n markers.map((marker: any) => {\n if (marker.time > markerTime - result && marker.time < markerTime + result) {\n overlapMarkers.push(marker);\n sumOverlapMarkersTime += marker.time;\n }\n });\n if (overlapMarkers.length > 1) setOverlapMarkers(overlapMarkers);\n else {\n overlapMarkers = [];\n setOverlapMarkers([]);\n handleJumpToMarker(event, markerTime, markerId, markerTitle, markerDescription, markerSticker, isTimer);\n }\n };\n\n const handleJumpToMarker = (\n event: any,\n markerTime: number,\n markerId: number,\n markerTitle: String,\n markerDescription: String,\n markerSticker: String,\n isTimer: boolean\n ) => {\n event.stopPropagation();\n handleTimeTooltip(event, isTimer);\n handleVideoTimeline(mainPlayerVideoTag().currentTime, markerTime);\n mainPlayerVideoTag().currentTime = markerTime;\n if (progressBar()) progressBar().style.width = calculateMarkerPosition(markerTime);\n sendFluentLog(eventMarkerClickLog(markerId, markerTime, markerTitle, markerDescription, markerSticker));\n };\n\n // useEffect(() => {\n // if (!sharePopover) setMarkerTime(undefined);\n // }, [sharePopover]);\n\n // useEffect(() => {\n // if (!!markerTime) dispatch(setSharePopover(true));\n // }, [markerTime]);\n\n useEffect(() => {\n if (!conditions(ConditionName.isActiveElements)) setOverlapMarkers([]);\n }, [activeElements]);\n\n const markerRef = useRef<any>(null);\n\n useOnClickOutside(markerRef, () => setOverlapMarkers([]));\n\n useEffect(() => {\n if (overlapMarkers.length > 0) {\n const isInViewPort = inViewPort(document.getElementsByClassName(\"pl-overlapMarkers\")[0]);\n if (isInViewPort === \"inViewport\") {\n setIsOverlapMarkersInViewport(true);\n return setOverlapMarkersPosition({ left: calculateMarkerPosition(overlapMarkers[0].time) });\n } else if (isInViewPort === \"OutViewPortFromLeft\") {\n setIsOverlapMarkersInViewport(false);\n return setOverlapMarkersPosition({ left: 0 });\n } else if (isInViewPort === \"OutViewPortFromRight\") {\n setIsOverlapMarkersInViewport(false);\n return setOverlapMarkersPosition({ right: 0 });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [overlapMarkers, document.getElementsByClassName(\"pl-overlapMarkers\")[0]]);\n\n const handleContextMenu = (event: any) => {\n event.preventDefault();\n if (conditions(ConditionName.isTouchScreen)) setMarkerTime(Number((event.target as any).getAttribute(\"data-marker\")));\n };\n\n \n\n return (\n <>\n {markers.map((marker: any) => (\n <div\n onContextMenu={handleContextMenu}\n key={marker.id}\n data-marker={marker.time}\n onClick={(event) => handleClick(event, marker.time, marker.id, marker.title, marker.description, marker.sticker, true, markers)}\n onDoubleClick={(event: any) => event.stopPropagation()}\n >\n <div\n className={`pl-emoji-image pl-absolute pl-bottom-[200%] pl-bg-z-gray-700/[0.4] pl-rounded-[6px] pl-p-1 ${\n conditions(ConditionName.isTouchScreenPortrait) ? \"pl-mb-5\" : \"pl-mb-5\"\n } pl-ml-[-12px] pl-cursor-pointer`}\n style={{ left: calculateMarkerPosition(marker.time), zIndex: zIndex.markers }}\n data-marker={marker.time}\n >\n {marker.isPersonal !== null && marker.isPersonal !== undefined && (\n <div className=\"pl-absolute pl-rounded-full pl-top-[-2px] pl-right-[-1px] pl-bg-main pl-w-2 pl-h-2\" />\n )}\n <Emoji dataMarker={marker.time} name={marker.sticker} className=\"pl-w-[16px] pl-h-[16px] !pl-max-w-max\" />\n </div>\n </div>\n ))}\n {overlapMarkers.length > 0 && (\n <div\n className={`pl-overlapMarkers ${\n isOverlapMarkersInViewport ? \"pl-overlayMarkersInViewport\" : \"pl-overlayMarkersOutViewport\"\n } pl-absolute pl-bottom-[45px] pl-px-1 pl-py-2 pl-flex pl-gap-3 pl-flex-row-reverse pl-justify-end pl-bg-z-gray-700/[0.4] pl-rounded-[6px] pl-ml-[-10px] animate__animated animate__fadeInUp pl-opacity-100`}\n ref={markerRef}\n style={overlapMarkersPosition}\n >\n {overlapMarkers.map((overlapMarker: any) => (\n <div\n key={overlapMarker.id}\n className=\"pl-emoji-image pl-rounded-[6px] pl-cursor-pointer\"\n data-marker={overlapMarker.time}\n onClick={(event: any) =>\n handleJumpToMarker(\n event,\n overlapMarker.time,\n overlapMarker.id,\n overlapMarker.title,\n overlapMarker.description,\n overlapMarker.sticker,\n true\n )\n }\n onDoubleClick={(event: any) => event.stopPropagation()}\n >\n <Emoji dataMarker={overlapMarker.time} name={overlapMarker.sticker} className=\"pl-w-[24px] pl-h-[24px] !pl-max-w-max\" />\n </div>\n ))}\n </div>\n )}\n {/* {!!sharePopover && markerTime && (\n <ShareDialog\n currentTime={markerTime ? markerTime : undefined}\n markerId={markers.filter((item: IMarker) => item.time === markerTime)[0].id}\n />\n )} */}\n </>\n );\n};\n\nexport default memo(Markers);\n","import { useEffect, useState } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport Tooltip from \"../../tooltip/tooltip\";\nimport {\n handleCatchUpLoadingLog,\n handleMouseMove,\n handleMouseOut,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n hideProgressTooltip,\n} from \"../../../../helpers/redux/actions/progressbar.actions\";\nimport { useAppSelector } from \"../../../../helpers/redux/hooks\";\nimport { ConditionName } from \"../../../../helpers/interfaces/enums\";\nimport { conditions } from \"../../../../helpers/conditions/conditions\";\nimport Markers from \"./markers/markers\";\nimport { tw } from \"../../../../helpers/helpers\";\n\nconst ProgressBar = () => {\n const [isPointerDown, setIsPointerDown] = useState<boolean>(false);\n const [timeoutIds, setTimeoutIds] = useState<any[]>([]);\n\n useEffect(() => {\n hideProgressTooltip(document.querySelector(\".progressTooltip\"));\n }, []);\n\n const { duration, currentTime, bufferedTimeWidth } = useAppSelector(\n ({ controller: { duration, currentTime, bufferedTimeWidth, isFullScreen } }) => ({\n duration,\n currentTime,\n bufferedTimeWidth,\n isFullScreen,\n }),\n shallowEqual,\n );\n useAppSelector(\n ({ videoData: { params, videoElementSizeInfo } }) => ({\n params,\n videoElementSizeInfo,\n }),\n shallowEqual,\n );\n\n return (\n <div\n id=\"time-progress-container\"\n className={tw(`pl-relative ${conditions(ConditionName.isTouchScreenPortrait) ? \"pl-order-1\" : \"pl-order-none\"}`, { desktop: \"pl-px-4\" })}\n >\n <div className=\"pl-relative\">\n <Tooltip />\n <Markers />\n </div>\n\n <div\n className={`pl-flex pl-items-end`}\n onPointerDown={(event: any) => handlePointerDown(event, timeoutIds, setIsPointerDown)}\n onPointerMove={handlePointerMove}\n onPointerUp={(event: any) => handlePointerUp(event, setTimeoutIds, timeoutIds, setIsPointerDown)}\n onMouseMove={handleMouseMove}\n onMouseOut={handleMouseOut}\n onClick={handleCatchUpLoadingLog}\n >\n <div id=\"progress-area\" className={tw(\"pl-w-full\")}>\n <div\n id=\"time-progress-area\"\n className={tw(\"!pl-w-full pl-relative pl-transition-transform pl-duration-300 pl-m-auto pl-cursor-pointer !pl-bg-[#4A4A4A] \", {\n desktop: \"pl-h-[3px] pl-rounded-[8px]\",\n desktopFullScreen: \"!pl-h-[6px]\",\n touch: \"pl-h-[3px]\",\n touchFullScreen: \"\",\n })}\n >\n <div\n style={{ width: `${bufferedTimeWidth}%` }}\n id=\"time-progress-buffer\"\n className={tw(`pl-absolute pl-bg-[#C7C7C7] `, {\n desktop: \"pl-h-[3px] pl-rounded-[8px]\",\n desktopFullScreen: \"!pl-h-[6px]\",\n touch: \"pl-h-[3px]\",\n touchFullScreen: \"\",\n })}\n />\n <div\n style={{ width: currentTime === duration ? \"0%\" : `${(currentTime / duration) * 100}%` }}\n id=\"time-progress-bar\"\n className={tw(`pl-relative pl-cursor-pointer pl-bg-[#FF0033] before:pl-bg-[#FF0033] before:pl-inline-block`, {\n desktop: `pl-h-[3px] before:pl-size-[9px] pl-rounded-[8px] ${isPointerDown && \"before:pl-size-[11px]\"}`,\n desktopFullScreen: `!pl-h-[6px] before:!pl-size-[20px] ${isPointerDown && \"before:!pl-size-[22px]\"}`,\n touch: `pl-h-[3px] before:pl-size-[8px]`,\n touchFullScreen: `before:!pl-size-[9px]`,\n })}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ProgressBar;\n","import { TouchEvent, forwardRef, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { shallowEqual } from \"react-redux\";\nimport { IPopoverProps } from \"../../../helpers/interfaces/interfaces\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { zIndex } from \"../../../helpers/interfaces/enums\";\nimport { tw } from \"../../../helpers/helpers\";\n\nconst Popover = forwardRef(\n (\n {\n children,\n status,\n onClose,\n type,\n classNames,\n parentClassNames,\n styles,\n isBlurBackground,\n isFullHeight = false,\n isFullScreen,\n isHeader,\n isHasCatchUpLineOnTop = false,\n animation,\n scrollbar = false,\n isFocusOnInput = false,\n }: IPopoverProps,\n ref: any\n ) => {\n const [showPopover, setShowPopover] = useState<boolean>(status!);\n\n const [maxHeight, setMaxHeight] = useState<number>(0);\n const [maxHeightOnTouchMove, setMaxHeightOnTouchMove] = useState<number>(0);\n const [zIndexOnCatchUp, setZIndexOnCatchUp] = useState<number>(0);\n\n const { videoElementSizeInfo } = useAppSelector(({ videoData: { videoElementSizeInfo } }) => ({ videoElementSizeInfo }), shallowEqual);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n let timeout: any = undefined;\n\n if (status) {\n setShowPopover(true);\n } else {\n timeout = setTimeout(() => {\n onClose(false);\n setMaxHeightOnTouchMove(0);\n setShowPopover(false);\n }, 500);\n }\n\n return () => clearTimeout(timeout);\n }, [status]);\n\n const handleTouchMove = (event: any) => {\n if (event.touches[0].clientY >= videoElementSizeInfo.top) setMaxHeightOnTouchMove(window.innerHeight - event.touches[0].clientY);\n else setMaxHeightOnTouchMove(window.innerHeight - videoElementSizeInfo.top);\n setZIndexOnCatchUp(zIndex.maxPopover);\n };\n\n const handleTouchEnd = () => {\n if (maxHeightOnTouchMove !== 0) {\n if (maxHeightOnTouchMove > maxHeight) {\n if (maxHeightOnTouchMove - maxHeight > (window.innerHeight - videoElementSizeInfo.top - maxHeight) / 2) {\n setMaxHeightOnTouchMove(window.innerHeight - videoElementSizeInfo.top);\n setZIndexOnCatchUp(zIndex.maxPopover);\n } else {\n setMaxHeightOnTouchMove(0);\n setTimeout(() => setZIndexOnCatchUp(0), 500);\n }\n } else {\n if (maxHeightOnTouchMove > maxHeight / 2) setMaxHeightOnTouchMove(maxHeight);\n else {\n setMaxHeightOnTouchMove(0);\n setMaxHeight(0);\n onClose();\n }\n setZIndexOnCatchUp(0);\n }\n }\n };\n\n const content = (\n <>\n {isBlurBackground && (\n <div\n className={`pl-bg-black/[0.5] pl-w-screen pl-h-screen pl-fixed pl-top-0 pl-right-0 animate__animated animate__faster ${\n status ? \"animate__fadeIn\" : \"animate__fadeOut\"\n }`}\n style={{\n zIndex: zIndex.popoverBlurBackground,\n backdropFilter: \"blur(4px)\",\n }}\n />\n )}\n <div\n className={`${\n type === \"modal\" && \"pl-fixed pl-top-0 pl-left-0 pl-flex pl-w-full pl-h-full pl-justify-center pl-items-end sm:pl-items-center\"\n } ${parentClassNames}`}\n style={{\n zIndex: isFullHeight && !isFocusOnInput ? zIndexOnCatchUp : zIndex.popoverContent,\n }}\n >\n <div\n className={`pl-flex pl-flex-col pl-rounded-[8px] animate__animated animate__faster pl-bg-white/[0.9] dark:pl-bg-black/[0.7]\n ${isFullHeight && \"pl-h-full\"}\n ${\n animation\n ? animation\n : window.innerWidth > 768 && type === \"modal\"\n ? status\n ? \"animate__fadeIn\"\n : \"animate__fadeOut\"\n : status\n ? \"animate__fadeInUp\"\n : \"animate__fadeOutDown\"\n }\n before:pl-hidden\n ${\n type !== \"modal\" &&\n `pl-absolute ${tw(\"\", {\n desktop: \"pl-bottom-[20px]\",\n desktopFullScreen: \"pl-bottom-[60px]\",\n })} pl-overflow-auto no-scrollbar`\n }\n ${classNames}\n `}\n style={{\n maxHeight: isFullScreen ? \"unset\" : maxHeightOnTouchMove ? maxHeightOnTouchMove : maxHeight ? maxHeight : \"\",\n zIndex: zIndex.popoverContent,\n ...styles,\n }}\n ref={ref}\n id=\"popover-content\"\n >\n <>\n {isHeader && (\n <div\n onTouchMove={isHasCatchUpLineOnTop ? handleTouchMove : () => {}}\n onTouchEndCapture={isHasCatchUpLineOnTop ? handleTouchEnd : () => {}}\n className=\"pl-py-4\"\n >\n {isHasCatchUpLineOnTop && (\n <div className=\"pl-absolute pl-top-[10px] pl-right-[50%] pl-mr-[-25px] pl-text-center pl-w-8 pl-h-1 pl-rounded-[20px] pl-bg-gray-highLight\" />\n )}\n </div>\n )}\n <div\n id=\"popover-content\"\n className={`pl-overflow-y-auto pl-h-full pl-w-full ${!scrollbar && \"no-scrollbar\"}`}\n onTouchMove={(event: TouchEvent<HTMLDivElement>) => event.stopPropagation()}\n >\n {children}\n </div>\n </>\n </div>\n </div>\n </>\n );\n\n return (\n <>\n {showPopover && (\n <>\n {type === \"modal\" ? (\n createPortal(\n <div style={{ fontFamily: \"IRANSansXFaNum\", direction: \"rtl\", overflowX: \"hidden\" }}>{content}</div>,\n document.getElementById(\"dialog-react-root-videoPlayer\")!\n )\n ) : (\n <div id=\"player-popover\">{content}</div>\n )}\n </>\n )}\n </>\n );\n }\n);\n\nPopover.displayName = \"popover\";\n\nexport default Popover;\n","import { shallowEqual } from \"react-redux\";\r\nimport { memo, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\r\nimport { qualityChangeRequestLog } from \"../../../helpers/logs/logs\";\r\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport { setQualityLevelsPopover, setSettingPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { setUserSettings } from \"../../../helpers/redux/slices/userSlice\";\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { IQualityLevel } from \"../../../helpers/interfaces/interfaces\";\r\nimport Popover from \"../popover/popover\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\n\r\nconst QualityLevels = ({ setSection, showQualityLevelsIcon }: IQualityLevel) => {\r\n const dispatch = useAppDispatch();\r\n let { qualityLevels } = useAppSelector(\r\n ({ controller: { qualityLevels, manualQuality, autoQuality } }) => ({\r\n qualityLevels,\r\n manualQuality,\r\n autoQuality,\r\n }),\r\n shallowEqual\r\n );\r\n const { settings } = useAppSelector(({ user: { settings } }) => ({ settings }), shallowEqual);\r\n const { qualityLevelsPopover } = useAppSelector(({ popovers: { qualityLevelsPopover } }) => ({ qualityLevelsPopover }), shallowEqual);\r\n const { videoElementSizeInfo } = useAppSelector(\r\n ({ videoData: { params, videoElementSizeInfo } }) => ({ params, videoElementSizeInfo }),\r\n shallowEqual\r\n );\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n qualityLevels = [-1, ...qualityLevels];\r\n\r\n const handleTickSelectedQuality = (index: number, qualityLevel: number) => {\r\n if (conditions(ConditionName.isAutoQuality) && qualityLevel === -1) return true;\r\n else return !conditions(ConditionName.isAutoQuality) && settings.quality === index;\r\n };\r\n\r\n const qualityLevelsRef = useRef<any>(null);\r\n\r\n useOnClickOutside(qualityLevelsRef, () => dispatch(setQualityLevelsPopover(false)));\r\n\r\n const qualityLevelsContent = (\r\n <div\r\n id={SettingSections.qualityLevels}\r\n className={`animate__animated animate__fadeIn ${conditions(ConditionName.isTouchScreen) ? \"pl-pb-2\" : \"pl-py-2\"}`}\r\n >\r\n <ul className=\"pl-flex pl-flex-col pl-gap-1\">\r\n <li\r\n className={`pl-flex pl-items-center pl-border-b ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-border-b-[#D9D9D9]\" : \"pl-border-b-[#4A4A4A]\"\r\n } pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-h-10`}\r\n onClick={() => setSection && setSection(SettingSections.main)}\r\n >\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.chevronRight}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n کیفیت پخش\r\n </span>\r\n </li>\r\n\r\n <div\r\n className=\"pl-overflow-y-auto no-scrollbar\"\r\n style={{ maxHeight: conditions(ConditionName.isTouchScreenPortrait) ? undefined : videoElementSizeInfo.height - 200 - 70 }}\r\n >\r\n {qualityLevels.map((qualityLevel: number, index: number) => (\r\n <li\r\n key={index}\r\n className={`pl-flex pl-items-center pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-h-10 pl-transition-all ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } ${handleTickSelectedQuality(index - 1, qualityLevel) && `!pl-cursor-default`}`}\r\n onClick={() => {\r\n if (handleTickSelectedQuality(index - 1, qualityLevel)) return;\r\n sendFluentLog(qualityChangeRequestLog(qualityLevel === -1 ? \"auto\" : `${qualityLevel}P`));\r\n // dispatch(setActiveElements(false));\r\n // dispatch(setSettingPopover(false));\r\n // dispatch(setQualityLevelsPopover(false));\r\n dispatch(setUserSettings({ ...settings, quality: qualityLevel === -1 ? -1 : index - 1 }));\r\n if (setSection) setSection(SettingSections.main);\r\n }}\r\n >\r\n {!!handleTickSelectedQuality(index - 1, qualityLevel) && (\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.tick}\r\n alt=\"\"\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n width={20}\r\n height={20}\r\n />\r\n </div>\r\n )}\r\n\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n {qualityLevel === -1 ? (\r\n <span>\r\n <span>خودکار </span>\r\n <span\r\n className={`pl-text-[10px] pl-font-normal ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#737373]\" : \"pl-text-[#C7C7C7]\"\r\n }`}\r\n >\r\n (بر اساس سرعت اینترنت شما)\r\n </span>\r\n </span>\r\n ) : (\r\n `${qualityLevel}p`\r\n )}\r\n </span>\r\n </li>\r\n ))}\r\n </div>\r\n </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n {showQualityLevelsIcon ? (\r\n <div className=\"pl-relative pl-flex pl-items-center\" ref={qualityLevelsRef}>\r\n <Image\r\n src={IMAGES.qualitySetting}\r\n alt=\"speed-icon\"\r\n width={20}\r\n height={20}\r\n onClick={() => dispatch(setQualityLevelsPopover(!qualityLevelsPopover))}\r\n onMouseOver={() =>\r\n !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.showQualityLevelsPopover) && setShowTooltip(true)\r\n }\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n className=\"pl-cursor-pointer\"\r\n />\r\n {showTooltip && <ControllbarTooltip title=\"کیفیت\" />}\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-black/[75%] ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"pl-right-0 pl-mb-[33px] !pl-rounded-[12px] pl-w-[230px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:pl-max-w-[440px]\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"\r\n }`}\r\n status={qualityLevelsPopover}\r\n onClose={() => dispatch(setQualityLevelsPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreen)}\r\n ref={conditions(ConditionName.isTouchScreen) ? qualityLevelsRef : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n customHeader={<></>}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n styles={{\r\n maxHeight:\r\n !conditions(ConditionName.isTouchScreenPortrait) &&\r\n videoElementSizeInfo.height - (conditions(ConditionName.isTouchScreenLandscape) ? 120 : 75),\r\n }}\r\n >\r\n {qualityLevelsContent}\r\n </Popover>\r\n </div>\r\n ) : (\r\n <>{qualityLevelsContent}</>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default memo(QualityLevels);\r\n","import { ISpeedProps } from \"../../helpers/interfaces/interfaces\";\n\nconst SpeedIcon = ({ className, onClick, onMouseOver, onMouseLeave, width, height }: ISpeedProps) => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n onClick={onClick}\n viewBox=\"0 0 20 20\"\n className={className}\n onMouseOver={onMouseOver}\n style={{ width, height }}\n onMouseLeave={onMouseLeave}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.83613 12.7885C9.13211 13.0844 9.51329 13.2249 9.97967 13.21C10.4459 13.195 10.7881 13.0267 11.0061 12.7052L15.5284 6.15396L8.96113 10.6602C8.63433 10.8783 8.4578 11.2135 8.43155 11.6658C8.40544 12.1183 8.5403 12.4926 8.83613 12.7885ZM9.99967 3.75C10.7925 3.75 11.5352 3.85389 12.228 4.06167C12.9209 4.26944 13.59 4.58382 14.2353 5.00479L13.0605 5.76438C12.5862 5.51229 12.0945 5.32188 11.5855 5.19313C11.0763 5.06438 10.5477 5 9.99967 5C8.15245 5 6.57954 5.64931 5.28092 6.94792C3.98231 8.24653 3.33301 9.81944 3.33301 11.6667C3.33301 12.25 3.41287 12.8264 3.57259 13.3958C3.73231 13.9653 3.95801 14.5 4.24967 15H15.7497C16.0691 14.4722 16.3018 13.9236 16.4476 13.3542C16.5934 12.7847 16.6663 12.1944 16.6663 11.5833C16.6663 11.0833 16.6047 10.5772 16.4813 10.065C16.3579 9.55264 16.1674 9.06625 15.9099 8.60583L16.6695 7.43104C17.0809 8.10521 17.3894 8.77965 17.5951 9.45438C17.8006 10.1291 17.9077 10.8302 17.9163 11.5577C17.9248 12.312 17.8399 13.0249 17.6616 13.6963C17.4831 14.3678 17.2144 15.0246 16.8555 15.6667C16.7454 15.8472 16.5904 15.9896 16.3907 16.0938C16.1909 16.1979 15.9772 16.25 15.7497 16.25H4.24967C4.02745 16.25 3.8178 16.1966 3.62072 16.0898C3.42363 15.9828 3.26467 15.8311 3.14384 15.6346C2.82551 15.079 2.56912 14.4733 2.37467 13.8173C2.18023 13.1613 2.08301 12.4444 2.08301 11.6667C2.08301 10.5781 2.28954 9.55465 2.70259 8.59646C3.11565 7.63826 3.67947 6.79903 4.39405 6.07875C5.10877 5.35847 5.94898 4.79028 6.91467 4.37417C7.88051 3.95806 8.90884 3.75 9.99967 3.75Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport default SpeedIcon;\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { setSettingPopover, setSpeedPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport { setUserSettings } from \"../../../helpers/redux/slices/userSlice\";\r\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\r\nimport { speedChangeLog } from \"../../../helpers/logs/logs\";\r\nimport { ISpeed } from \"../../../helpers/interfaces/interfaces\";\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport Popover from \"../popover/popover\";\r\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport SpeedIcon from \"../../icon-components/speed\";\r\nimport { mainPlayerVideoTag } from \"../../../helpers/constants\";\r\n\r\nexport const speeds = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];\r\n\r\nconst Speed = ({ setSection, showSpeedIcon }: ISpeed) => {\r\n const dispatch = useAppDispatch();\r\n const { videoElementSizeInfo, params } = useAppSelector(\r\n ({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }),\r\n shallowEqual\r\n );\r\n const { speedPopover } = useAppSelector(({ popovers: { speedPopover } }) => ({ speedPopover }), shallowEqual);\r\n const { settings } = useAppSelector(({ user: { settings } }) => ({ settings }), shallowEqual);\r\n\r\n const speedRef = useRef<any>(null);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n useOnClickOutside(speedRef, () => dispatch(setSpeedPopover(false)));\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (mainPlayerVideoTag()) mainPlayerVideoTag().playbackRate = settings.speed;\r\n }, []);\r\n\r\n const speedContent = (\r\n <div\r\n id={SettingSections.speed}\r\n className={`animate__animated animate__fadeIn ${conditions(ConditionName.isTouchScreen) ? \"pl-pb-2\" : \"pl-py-2\"}`}\r\n >\r\n <ul className=\"pl-flex pl-flex-col pl-gap-1\">\r\n <li\r\n className={`pl-flex pl-items-center pl-border-b ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-border-b-[#D9D9D9]\" : \"pl-border-b-[#4A4A4A]\"\r\n } pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-h-10`}\r\n onClick={() => setSection && setSection(SettingSections.main)}\r\n >\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.chevronRight}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n سرعت\r\n </span>\r\n </li>\r\n\r\n <div\r\n className=\"pl-overflow-y-auto no-scrollbar\"\r\n style={{ maxHeight: conditions(ConditionName.isTouchScreenPortrait) ? undefined : videoElementSizeInfo.height - 200 - 70 }}\r\n >\r\n {speeds.map((speed: number, index: number) => (\r\n <li\r\n key={index}\r\n className={`pl-flex pl-items-center pl-h-10 pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-transition-all ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } ${settings.speed === speed && ` !pl-cursor-default`}`}\r\n onClick={\r\n settings.speed === speed\r\n ? () => {}\r\n : () => {\r\n if (!conditions(ConditionName.isStaticFormat)) sendFluentLog(speedChangeLog(speed));\r\n // dispatch(setActiveElements(false));\r\n // dispatch(setSettingPopover(false));\r\n // dispatch(setSpeedPopover(false));\r\n dispatch(setUserSettings({ ...settings, speed }));\r\n mainPlayerVideoTag().playbackRate = speed;\r\n if (setSection) setSection(SettingSections.main);\r\n if (params.onSpeedChange) params.onSpeedChange(settings.speed, speed);\r\n }\r\n }\r\n >\r\n {settings.speed === speed && (\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.tick}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={20}\r\n height={20}\r\n />\r\n </div>\r\n )}\r\n <p\r\n className={`pl-text-[12px] ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n } pl-pr-[10px] pl-w-10 pl-text-center`}\r\n >\r\n {speed}\r\n </p>\r\n </li>\r\n ))}\r\n </div>\r\n </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n {showSpeedIcon ? (\r\n <div className=\"pl-relative pl-flex pl-items-center\" ref={speedRef}>\r\n <SpeedIcon\r\n width={20}\r\n height={20}\r\n className={`pl-cursor-pointer size-5 ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#4A4A4A]\" : \"pl-text-white\"}`}\r\n onClick={() => dispatch(setSpeedPopover(!speedPopover))}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.showSpeedPopover) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n {showTooltip && <ControllbarTooltip title=\"سرعت\" />}\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-white ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"!pl-w-[230px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"\r\n } !pl-z-[100000]`}\r\n status={speedPopover}\r\n onClose={() => dispatch(setSpeedPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreen)}\r\n ref={conditions(ConditionName.isTouchScreen) ? speedRef : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n customHeader={<></>}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n styles={{\r\n maxHeight:\r\n !conditions(ConditionName.isTouchScreenPortrait) &&\r\n videoElementSizeInfo.height - (conditions(ConditionName.isTouchScreenLandscape) ? 120 : 75),\r\n }}\r\n >\r\n {speedContent}\r\n </Popover>\r\n </div>\r\n ) : (\r\n <>{speedContent}</>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default Speed;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { memo } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport { setSelectedSubtitle, setSubtitleText } from \"../../../helpers/redux/slices/videoDataSlice\";\r\nimport { mainPlayerVideoTag } from \"../../../helpers/constants\";\r\nimport { subtitleLog } from \"../../../helpers/logs/logs\";\r\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport Image from \"next/image\";\r\n\r\nconst SubtitleSettingMenu = ({ setSection }: any) => {\r\n const dispatch = useAppDispatch();\r\n const { subtitles, selectedSubtitle, videoElementSizeInfo } = useAppSelector(\r\n ({ videoData: { subtitles, selectedSubtitle, videoElementSizeInfo } }) => ({ subtitles, selectedSubtitle, videoElementSizeInfo }),\r\n shallowEqual,\r\n );\r\n\r\n return (\r\n <div\r\n id={SettingSections.subtitles}\r\n className={`animate__animated animate__fadeIn ${conditions(ConditionName.isTouchScreen) ? \"pl-pb-2\" : \"pl-py-2\"}`}\r\n >\r\n <ul className=\"pl-flex pl-flex-col pl-gap-1\">\r\n <li\r\n className={`pl-flex pl-items-center pl-border-b ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-border-b-[#D9D9D9]\" : \"pl-border-b-[#4A4A4A]\"\r\n } pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-h-10`}\r\n onClick={() => setSection && setSection(SettingSections.main)}\r\n >\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.chevronRight}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n زیر نویس\r\n </span>\r\n </li>\r\n\r\n <div\r\n className=\"pl-overflow-y-auto no-scrollbar\"\r\n style={{ maxHeight: conditions(ConditionName.isTouchScreenPortrait) ? undefined : videoElementSizeInfo.height - 200 - 70 }}\r\n >\r\n <li\r\n className={`pl-flex pl-items-center pl-h-10 pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer ${\r\n !selectedSubtitle && `${conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"} !pl-cursor-default`\r\n }`}\r\n onClick={() => {\r\n // dispatch(setActiveElements(false));\r\n // dispatch(setSettingPopover(false));\r\n dispatch(setSelectedSubtitle(undefined));\r\n setSection(SettingSections.main);\r\n const result: any = Object.values(mainPlayerVideoTag().textTracks).find((textTrack: any) => textTrack.mode === \"showing\");\r\n if (result) result.mode = \"disabled\";\r\n dispatch(setSubtitleText(\"\"));\r\n sendFluentLog(subtitleLog(\"empty\"));\r\n }}\r\n >\r\n {!selectedSubtitle && (\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image src={IMAGES.tick} className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"} alt=\"\" width={20} height={20} />\r\n </div>\r\n )}\r\n\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n بدون زیرنویس\r\n </span>\r\n </li>\r\n\r\n {subtitles.map((subtitle: any, index: number) => (\r\n <li\r\n key={index}\r\n className={`pl-flex pl-items-center pl-h-10 pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-transition-all ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } ${selectedSubtitle && selectedSubtitle.language === subtitle.language && ` !pl-cursor-default`}`}\r\n onClick={() => {\r\n // dispatch(setActiveElements(false));\r\n // dispatch(setSettingPopover(false));\r\n dispatch(setSelectedSubtitle(subtitle));\r\n mainPlayerVideoTag().textTracks[index].mode = \"showing\";\r\n setSection(SettingSections.main);\r\n sendFluentLog(subtitleLog(subtitle.language));\r\n }}\r\n >\r\n {!!selectedSubtitle && selectedSubtitle.language === subtitle.language && (\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.tick}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={20}\r\n height={20}\r\n />\r\n </div>\r\n )}\r\n\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n {subtitle.label}\r\n </span>\r\n </li>\r\n ))}\r\n </div>\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(SubtitleSettingMenu);\r\n","import { IAudioIconProps } from \"../../helpers/interfaces/interfaces\";\n\nconst AudioIcon = ({ className, onClick, onMouseOver, onMouseLeave }: IAudioIconProps) => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n onClick={onClick}\n onMouseOver={onMouseOver}\n onMouseLeave={onMouseLeave}\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M10 2.29395C10.3314 2.29395 10.6 2.56257 10.6 2.89395V17.1052C10.6 17.4366 10.3314 17.7052 10 17.7052C9.66866 17.7052 9.40002 17.4366 9.40002 17.1052V2.89395C9.40002 2.56257 9.66866 2.29395 10 2.29395Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M6.41258 4.95498C6.74396 4.95498 7.01258 5.22361 7.01258 5.55498V14.5565C7.01258 14.8879 6.74396 15.1565 6.41258 15.1565C6.08121 15.1565 5.81258 14.8879 5.81258 14.5565V5.55498C5.81258 5.22361 6.08121 4.95498 6.41258 4.95498Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M13.5858 4.84247C13.9172 4.84247 14.1858 5.1111 14.1858 5.44247V14.444C14.1858 14.7754 13.9172 15.044 13.5858 15.044C13.2545 15.044 12.9858 14.7754 12.9858 14.444V5.44247C12.9858 5.1111 13.2545 4.84247 13.5858 4.84247Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M17.1735 7.60177C17.5048 7.60177 17.7735 7.8704 17.7735 8.20177V11.5709C17.7735 11.9023 17.5048 12.1709 17.1735 12.1709C16.8421 12.1709 16.5735 11.9023 16.5735 11.5709V8.20177C16.5735 7.8704 16.8421 7.60177 17.1735 7.60177Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n fill=\"currentColor\"\n d=\"M2.82656 7.82841C3.15794 7.82841 3.42656 8.09703 3.42656 8.42844V11.7976C3.42656 12.1289 3.15794 12.3976 2.82656 12.3976C2.49519 12.3976 2.22656 12.1289 2.22656 11.7976V8.42844C2.22656 8.09703 2.49519 7.82841 2.82656 7.82841Z\"\n />\n </svg>\n );\n};\n\nexport default AudioIcon;\n","import { shallowEqual } from \"react-redux\";\r\nimport { memo, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport Popover from \"../popover/popover\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { setMultiAudioPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { setSelectedAudioId } from \"../../../helpers/redux/slices/videoDataSlice\";\r\nimport AudioIcon from \"../../icon-components/audioIcon\";\r\nimport { IMultiAudioProps } from \"../../../helpers/interfaces/interfaces\";\r\n\r\nconst MultiAudio = ({ setSection, showMultiAudioIcon }: IMultiAudioProps) => {\r\n const dispatch = useAppDispatch();\r\n const { multiAudioPopover } = useAppSelector(({ popovers: { multiAudioPopover } }) => ({ multiAudioPopover }), shallowEqual);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const ref = useRef(null);\r\n\r\n const { multiAudio, selectedAudioId, videoElementSizeInfo } = useAppSelector(\r\n ({ videoData: { multiAudio, selectedAudioId, videoElementSizeInfo } }) => ({ multiAudio, selectedAudioId, videoElementSizeInfo }),\r\n shallowEqual\r\n );\r\n\r\n useOnClickOutside(ref, () => dispatch(setMultiAudioPopover(false)));\r\n\r\n const multiAudioContent = (\r\n <div className={`${conditions(ConditionName.isTouchScreen) ? \"pl-pb-2\" : \"pl-py-2\"}`}>\r\n <ul className=\"pl-flex pl-flex-col pl-gap-1\">\r\n <li\r\n className={`pl-flex pl-items-center pl-border-b ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-border-b-[#D9D9D9]\" : \"pl-border-b-[#4A4A4A]\"\r\n } pl-h-10 pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer`}\r\n onClick={() => setSection && setSection(SettingSections.main)}\r\n >\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.chevronRight}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"} pl-pr-[10px]`}\r\n >\r\n تغییر صدا\r\n </span>\r\n </li>\r\n\r\n <div\r\n className=\"pl-overflow-y-auto no-scrollbar\"\r\n style={{ maxHeight: conditions(ConditionName.isTouchScreenPortrait) ? undefined : videoElementSizeInfo.height - 200 - 70 }}\r\n >\r\n {conditions(ConditionName.hasMultiAudio) &&\r\n multiAudio.map((audio: any, index: number) => (\r\n <li\r\n key={audio.id}\r\n className={`pl-flex pl-items-center pl-h-10 pl-ps-[24.2px] pl-leading-[28px] pl-text-[12px] pl-font-medium pl-relative pl-cursor-pointer pl-transition-all ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } ${selectedAudioId === index && ` !pl-cursor-default`}`}\r\n onClick={() => {\r\n dispatch(setSelectedAudioId(index));\r\n // dispatch(setActiveElements(false));\r\n // dispatch(setSettingPopover(false));\r\n // dispatch(setMultiAudioPopover(false));\r\n if (setSection) setSection(SettingSections.main);\r\n }}\r\n >\r\n {selectedAudioId === index && (\r\n <div className=\"pl-absolute pl-right-[10px] pl-top-1/2 -pl-translate-y-1/2 pl-flex pl-items-center pl-justify-center\">\r\n <Image\r\n src={IMAGES.tick}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"}\r\n alt=\"\"\r\n width={20}\r\n height={20}\r\n />\r\n </div>\r\n )}\r\n\r\n <span\r\n className={`pl-w-full pl-text-[12px] ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n } pl-pr-[10px]`}\r\n >\r\n زبان {audio.name}\r\n </span>\r\n </li>\r\n ))}\r\n </div>\r\n </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n {showMultiAudioIcon ? (\r\n <div className=\"pl-relative pl-flex pl-items-center\" ref={ref}>\r\n <AudioIcon\r\n className={`pl-size-5 pl-fill-white pl-cursor-pointer ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#4A4A4A]\" : \"pl-text-white\"}`}\r\n onClick={() => dispatch(setMultiAudioPopover(!multiAudioPopover))}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n\r\n {showTooltip && <ControllbarTooltip title=\"تغییر صدا\" />}\r\n <Popover\r\n classNames={`!pl-px-0 pl-overflow-hidden !pl-bg-black/[75%] !pl-pb-0 ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"!pl-w-[200px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"\r\n }`}\r\n status={multiAudioPopover}\r\n onClose={() => dispatch(setMultiAudioPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreen)}\r\n ref={conditions(ConditionName.isTouchScreen) ? ref : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n styles={{\r\n maxHeight:\r\n !conditions(ConditionName.isTouchScreenPortrait) &&\r\n videoElementSizeInfo.height - (conditions(ConditionName.isTouchScreenLandscape) ? 120 : 75),\r\n }}\r\n >\r\n {multiAudioContent}\r\n </Popover>\r\n </div>\r\n ) : (\r\n <>{multiAudioContent}</>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default memo(MultiAudio);\r\n","import { useState } from \"react\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport Image from \"next/image\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { handleSubtitle } from \"../../../helpers/redux/actions/videoData.actions\";\r\nimport { tw } from \"../../../helpers/helpers\";\r\n\r\nconst SubtitleIcon = ({\r\n className,\r\n disableTooltip,\r\n height,\r\n width,\r\n normalStyle,\r\n}: {\r\n className?: string;\r\n disableTooltip?: boolean;\r\n width?: number;\r\n height?: number;\r\n normalStyle?: boolean;\r\n}) => {\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n useAppSelector(\r\n ({ videoData: { selectedSubtitle, videoElementSizeInfo, params } }) => ({ selectedSubtitle, videoElementSizeInfo, params }),\r\n shallowEqual\r\n );\r\n\r\n return (\r\n <div\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleSubtitle();\r\n }}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n onMouseOver={disableTooltip ? undefined : () => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={disableTooltip ? undefined : () => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n className={tw(\r\n `pl-relative ${\r\n normalStyle ? \"\" : \"pl-rounded-full hover:pl-bg-[#5E5E5E]\"\r\n } pl-cursor-pointer pl-flex pl-items-center pl-justify-center pl-transition-all ${className} ${\r\n conditions(ConditionName.hasSubtitles) ? \"\" : \"pl-pointer-events-none\"\r\n }`,\r\n { desktop: normalStyle ? undefined : \"pl-w-[40px] pl-h-[25px]\", desktopFullScreen: normalStyle ? undefined : \"pl-w-[56px] pl-h-[36px]\" }\r\n )}\r\n >\r\n <Image\r\n alt=\"subtitle-icon\"\r\n src={\r\n !conditions(ConditionName.hasSubtitles)\r\n ? IMAGES.subtitleDisable\r\n : conditions(ConditionName.isSelectedSubtitle)\r\n ? IMAGES.subtitleFill\r\n : IMAGES.subtitleOutline\r\n }\r\n width={width}\r\n height={height}\r\n />\r\n {showTooltip && !disableTooltip && <ControllbarTooltip title=\"زیرنویس\" />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default SubtitleIcon;\r\n","import { memo, useRef, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport Popover from \"../popover/popover\";\r\nimport Image from \"next/image\";\r\nimport QualityLevels from \"../qualityLevels/qualityLevels\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { setSettingPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport Speed from \"../speed/speed\";\r\nimport SpeedIcon from \"../../icon-components/speed\";\r\nimport SubtitleSettingMenu from \"../subtitles/subtitleSettingMenu\";\r\nimport AudioIcon from \"../../icon-components/audioIcon\";\r\nimport MultiAudio from \"../multiAudio/MultiAudio\";\r\nimport SubtitleIcon from \"../subtitles/subtitleIcon\";\r\nimport { tw } from \"../../../helpers/helpers\";\r\n\r\nconst Settings = ({ width, height, normalStyle }: { width?: number; height?: number; normalStyle?: boolean }) => {\r\n const dispatch = useAppDispatch();\r\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\r\n\r\n const { selectedSubtitle, multiAudio, selectedAudioId, subtitles, settingPopover, settings, qualityLevels } = useAppSelector(\r\n ({\r\n user: { settings },\r\n popovers: { settingPopover },\r\n controller: { qualityLevels },\r\n videoData: { params, subtitles, multiAudio, selectedSubtitle, selectedAudioId },\r\n }) => ({\r\n params,\r\n settings,\r\n subtitles,\r\n multiAudio,\r\n qualityLevels,\r\n settingPopover,\r\n selectedAudioId,\r\n selectedSubtitle,\r\n }),\r\n shallowEqual\r\n );\r\n\r\n const [section, setSection] = useState<string>(SettingSections.main);\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const settingsRef = useRef(null);\r\n\r\n useOnClickOutside(settingsRef, () => {\r\n dispatch(setSettingPopover(false));\r\n setTimeout(() => {\r\n setSection(SettingSections.main);\r\n }, 500);\r\n });\r\n\r\n return (\r\n <div className={`pl-inline-flex ${conditions(ConditionName.isLandscape) && \"pl-relative\"}`} ref={settingsRef}>\r\n <div\r\n className={tw(\r\n `pl-relative pl-cursor-pointer pl-flex pl-items-center pl-justify-center pl-rounded-full ${\r\n normalStyle ? \"\" : \"hover:pl-bg-[#5E5E5E] pl-transition-all\"\r\n }`,\r\n normalStyle\r\n ? undefined\r\n : {\r\n desktop: \"pl-w-[40px] pl-h-[25px]\",\r\n desktopFullScreen: \"pl-w-[56px] pl-h-[36px]\",\r\n }\r\n )}\r\n onDoubleClick={(e) => e.preventDefault()}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n dispatch(setSettingPopover(!settingPopover));\r\n }}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.showSettingPopover) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n >\r\n <Image src={IMAGES.settings} alt=\"\" width={width} height={height} />\r\n {showTooltip && <ControllbarTooltip title=\"تنظیمات \" />}\r\n </div>\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none !pl-bg-white\"\r\n : \"!pl-w-[272px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px] !pl-bg-black/[75%]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[285px]\"\r\n } !overflow-auto`}\r\n status={settingPopover}\r\n onClose={() => {\r\n dispatch(setSettingPopover(false));\r\n setTimeout(() => setSection(SettingSections.main), 500);\r\n }}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreen)}\r\n ref={conditions(ConditionName.isTouchScreen) ? settingsRef : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n customHeader={<></>}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n >\r\n <div>\r\n {section === SettingSections.main && (\r\n <div id={SettingSections.main} className=\"pl-py-2 pl-rounded-[10px] pl-flex pl-flex-col animate__animated animate__fadeIn\">\r\n {!conditions(ConditionName.isStaticFormat) && (\r\n <div\r\n className={`pl-flex pl-items-center pl-gap-2 pl-cursor-pointer pl-h-10 pl-px-2 ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } pl-transition-all`}\r\n onClick={() => setSection(SettingSections.qualityLevels)}\r\n >\r\n <Image\r\n width={20}\r\n height={20}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-[0.3]\" : \"\"}\r\n src={IMAGES.qualitySetting}\r\n alt=\"\"\r\n />\r\n <p\r\n className={`pl-ml-auto pl-text-[12px] pl-font-medium ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n }`}\r\n >\r\n کیفیت پخش\r\n </p>\r\n <span\r\n className={`pl-ml-1 pl-leading-6 pl-font-normal ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121] pl-text-[11px]\" : \"pl-text-white pl-text-[12px]\"\r\n }`}\r\n >\r\n {settings.quality === -1 ? \"خودکار\" : `${qualityLevels.find((_, index) => index === settings.quality)}p`}\r\n </span>\r\n <Image\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-50\" : \"\"}\r\n src={IMAGES.chevronLeft}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n )}\r\n {conditions(ConditionName.hasSubtitles) && (\r\n <div\r\n className={`pl-flex pl-items-center pl-gap-2 pl-cursor-pointer pl-h-10 pl-px-2 ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } pl-transition-all`}\r\n onClick={() => setSection(SettingSections.subtitles)}\r\n >\r\n <SubtitleIcon\r\n className={`${conditions(ConditionName.isTouchScreen) ? \"pl-brightness-[0.3]\" : \"\"}`}\r\n normalStyle\r\n width={20}\r\n height={20}\r\n disableTooltip\r\n />\r\n <p\r\n className={`pl-ml-auto pl-text-[12px] pl-font-medium ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n }`}\r\n >\r\n زیرنویس\r\n </p>\r\n <span\r\n className={`pl-ml-1 pl-leading-6 pl-font-normal ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121] pl-text-[11px]\" : \"pl-text-white pl-text-[12px]\"\r\n }`}\r\n >\r\n {selectedSubtitle ? !!subtitles && subtitles.find((item) => item.language === selectedSubtitle.language)?.label : \"خاموش\"}\r\n </span>\r\n <Image\r\n src={IMAGES.chevronLeft}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-50\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={`pl-flex pl-items-center pl-gap-2 pl-cursor-pointer pl-h-10 pl-px-2 ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } pl-transition-all`}\r\n onClick={() => setSection(SettingSections.speed)}\r\n >\r\n <SpeedIcon className={`${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#4A4A4A]\" : \"pl-text-white\"}`} width={20} height={20} />\r\n <p\r\n className={`pl-ml-auto pl-text-[12px] pl-font-medium ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n }`}\r\n >\r\n سرعت\r\n </p>\r\n <span\r\n className={`pl-ml-1 pl-leading-6 pl-font-normal ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121] pl-text-[11px]\" : \"pl-text-white pl-text-[12px]\"\r\n }`}\r\n >\r\n {settings?.speed ? (settings.speed === 1 ? \"معمولی\" : `${settings.speed}`) : \"معمولی\"}\r\n </span>\r\n <Image\r\n src={IMAGES.chevronLeft}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-50\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n {conditions(ConditionName.hasMultiAudio) && (\r\n <div\r\n className={`pl-flex pl-items-center pl-gap-2 pl-cursor-pointer pl-h-10 pl-px-2 ${\r\n conditions(ConditionName.isTouchScreen) ? \"\" : \"hover:pl-bg-[#4A4A4A]\"\r\n } pl-transition-all`}\r\n onClick={() => setSection(SettingSections.multiAudio)}\r\n >\r\n <AudioIcon className={`pl-size-5 ${conditions(ConditionName.isTouchScreen) ? \"pl-text-[#4A4A4A]\" : \"pl-text-white\"}`} />\r\n <p\r\n className={`pl-ml-auto pl-text-[12px] pl-font-medium ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n }`}\r\n >\r\n تغییر صدا\r\n </p>\r\n <span\r\n className={`pl-ml-1 pl-leading-6 pl-font-normal ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121] pl-text-[11px]\" : \"pl-text-white pl-text-[12px]\"\r\n }`}\r\n >\r\n {multiAudio?.find((_: any, index: number) => index === selectedAudioId)?.name}\r\n </span>\r\n <Image\r\n src={IMAGES.chevronLeft}\r\n className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-50\" : \"\"}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {section === SettingSections.qualityLevels && <QualityLevels setSection={setSection} />}\r\n {section === SettingSections.subtitles && <SubtitleSettingMenu setSection={setSection} />}\r\n {section === SettingSections.speed && <Speed setSection={setSection} />}\r\n {section === SettingSections.multiAudio && <MultiAudio setSection={setSection} />}\r\n </div>\r\n </Popover>\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(Settings);\r\n","import { shallowEqual } from \"react-redux\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { secondsToHMS, tw } from \"../../../helpers/helpers\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { useState } from \"react\";\n\nconst ElapsedTime = ({ className = \"\" }) => {\n const { duration, currentTime } = useAppSelector(({ controller: { duration, currentTime } }) => ({ duration, currentTime }), shallowEqual);\n useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), shallowEqual);\n const [reveresElapsedTime, setReveresElapsedTime] = useState(false);\n\n return (\n <div\n onDoubleClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setReveresElapsedTime((prev) => !prev);\n }}\n className={tw(`pl-cursor-pointer pl-rounded-full pl-inline-flex pl-items-center pl-justify-center pl-group ${className}`, {\n desktop: \"pl-min-w-[34px] pl-h-[34px] pl-p-1 pl-bg-black/75\",\n desktopFullScreen: \"pl-min-w-[48px] pl-h-[48px] pl-px-1.5\",\n touch: \"pl-min-w-[78px] pl-h-[22px] pl-py-1 pl-px-1.5 pl-bg-[#282828]\",\n touchFullScreen: \"pl-min-w-[103px] pl-h-[32px] pl-px-2\",\n })}\n >\n <div\n className={tw(\"pl-flex pl-gap-0.5 pl-items-center pl-justify-center pl-rounded-full pl-transition-all\", {\n desktop: \"pl-h-[26px] pl-min-w-[26px] pl-p-1.5 group-hover:pl-bg-[#5E5E5E]\",\n desktopFullScreen: \"pl-h-[36px] pl-min-w-[36px] pl-px-3\",\n })}\n >\n <p\n className={tw(`pl-text-white pl-flex pl-items-center pl-justify-center pl-gap-0.5 `, {\n desktop: \"pl-text-[12px] pl-leading-5 pl-font-bold\",\n desktopFullScreen: \"pl-text-base\",\n touch: \"pl-font-medium pl-text-[12px] pl-pt-0.5\",\n touchFullScreen: \"pl-text-[16px] pl-font-normal pl-pt-1\",\n })}\n >\n <span className={tw(\"\", { touch: \"pl-text-[#C4C4C4]\" })}>{secondsToHMS(duration ? duration : 0)}</span>\n <span>/</span>\n {reveresElapsedTime ? (\n <>\n <span>{secondsToHMS((duration || 0) - (currentTime || 0))}</span>\n <span className=\"pl-mt-0.5\">-</span>\n </>\n ) : (\n <span>{secondsToHMS(currentTime ? currentTime : 0)}</span>\n )}\n </p>\n </div>\n </div>\n );\n};\n\nexport default ElapsedTime;\n","import { memo } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport FullScreen from \"../../fullScreen/fullScreen\";\nimport PictureInPicture from \"../../pictureInPicture/pictureInPicture\";\nimport SoundVolume from \"../../soundVolume/soundVolume\";\nimport Settings from \"../../settings/settings\";\nimport { useAppSelector } from \"../../../../helpers/redux/hooks\";\nimport { ConditionName } from \"../../../../helpers/interfaces/enums\";\nimport { conditions } from \"../../../../helpers/conditions/conditions\";\nimport Speed from \"../../speed/speed\";\nimport QualityLevels from \"../../qualityLevels/qualityLevels\";\nimport ElapsedTime from \"../../elapsedTime/elapsedTime\";\nimport Unlock from \"../../lockUnlock/unlock\";\nimport SubtitleIcon from \"../../subtitles/subtitleIcon\";\nimport MarkersList from \"../../markersList/markersList\";\nimport MultiAudio from \"../../multiAudio/MultiAudio\";\nimport PlayPause from \"../../playPause/playPause\";\nimport { styleMerge, tw } from \"../../../../helpers/helpers\";\n\nconst Controlbar = () => {\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\n useAppSelector(({ videoData: { videoElementSizeInfo, params, subtitles } }) => ({ videoElementSizeInfo, params, subtitles }), shallowEqual);\n\n return (\n <div\n id=\"player-controllbar\"\n className={tw(\"pl-flex pl-justify-between pl-items-center\", {\n desktop: \"pl-px-4\",\n desktopFullScreen: \"pl-px-6\",\n touch: \"pl-px-4 \",\n touchFullScreen: \"pl-px-6 pl-absolute pl-w-full pl-bottom-[51px]\",\n })}\n >\n <div\n className={tw(`pl-rounded-full pl-flex pl-items-center pl-justify-center `, {\n desktop: \"pl-p-1 pl-bg-black/75\",\n desktopFullScreen: \"pl-p-1.5\",\n touch: \"pl-bg-[#282828]\",\n })}\n >\n <FullScreen\n width={styleMerge({ desktop: 16, desktopFullScreen: 24, touch: 16, touchFullScreen: 24 })}\n height={styleMerge({ desktop: 16, desktopFullScreen: 24, touch: 16, touchFullScreen: 24 })}\n />\n {/* {conditions(ConditionName.isTouchScreenLandscape) && (\n <Unlock width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\n )} */}\n {/* {conditions(ConditionName.showPictureInPicture) && (\n <PictureInPicture width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\n )} */}\n {conditions(ConditionName.showSettingIcon) && !conditions(ConditionName.isTouchScreen) && (\n <Settings width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\n )}\n {/* {conditions(ConditionName.isFullScreen) && !conditions(ConditionName.isStaticFormat) && <QualityLevels showQualityLevelsIcon={true} />} */}\n {/* {(conditions(ConditionName.isFullScreen) || conditions(ConditionName.isStaticFormat)) && <Speed showSpeedIcon={true} />} */}\n {!conditions(ConditionName.isTouchScreen) && (\n <SubtitleIcon width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\n )}\n {/* {conditions(ConditionName.hasMultiAudio) && !conditions(ConditionName.isTouchScreenPortrait) && <MultiAudio showMultiAudioIcon={true} />} */}\n </div>\n <div className={`pl-flex pl-items-center pl-gap-4`}>\n <ElapsedTime className=\"pl-relative z-10\" />\n\n {!conditions(ConditionName.isTouchScreen) && (\n <>\n {!conditions(ConditionName.isIOS) && (\n <SoundVolume width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\n )}\n <PlayPause width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\n </>\n )}\n\n {/* {conditions(ConditionName.hasMarkers) && <MarkersList />} */}\n </div>\n </div>\n );\n};\n\nexport default memo(Controlbar);\n","import { shallowEqual } from \"react-redux\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport { cleanVTT, spliteStringPerLine, tw } from \"../../../helpers/helpers\";\n\nconst DisplaySubtitle = () => {\n const { subtitleText } = useAppSelector(({ videoData: { subtitleText, selectedSubtitle } }) => ({ subtitleText, selectedSubtitle }), shallowEqual);\n useAppSelector(({ controller: { isFullScreen, activeElements } }) => ({ isFullScreen, activeElements }), shallowEqual);\n\n const subtitlePosition = () => {\n let styles = \"\";\n\n if (conditions(ConditionName.isLock)) styles = \"pl-bottom-[50px]\";\n else if (conditions(ConditionName.isActiveElements)) {\n if (conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[64px]\";\n else if (conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[130px]\";\n else if (conditions(ConditionName.isTouchScreen)) styles = \"pl-bottom-[30px]\";\n else styles = \"pl-bottom-[60px]\";\n } else if (!conditions(ConditionName.isActiveElements)) {\n if (conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[20px]\";\n else if (conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[130px]\";\n else if (conditions(ConditionName.isTouchScreen)) styles = \"pl-bottom-[16px]\";\n else styles = \"pl-bottom-[60px]\";\n }\n\n return styles;\n };\n\n return (\n <div\n id={\"subtitle-id\"}\n style={{ direction: \"ltr\" }}\n className={tw(`pl-z-0 pl-absolute pl-w-full pl-text-center pl-text-white pl-font-semibold ${subtitlePosition()}`, {\n desktop: \"pl-text-[14px] pl-leading-6\",\n desktopFullScreen: \"pl-text-base\",\n touch: \"pl-text-[10px] pl-leading-4\",\n })}\n >\n {spliteStringPerLine(subtitleText!)?.map((text, index) => {\n const value = cleanVTT(text);\n if (value)\n return (\n <p\n key={index}\n className={tw(\n `pl-mx-auto pl-bg-[#000000]/[70%] ${\n conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isActiveElements) && \"pl-opacity-50\"\n } pl-text-wrap pl-max-w-full pl-w-max `,\n { desktop: \"pl-px-2 pl-py-1.5\", desktopFullScreen: \"\", touch: \"pl-p-1\", touchFullScreen: \"\" },\n )}\n >\n {value}\n </p>\n );\n })}\n </div>\n );\n};\n\nexport default DisplaySubtitle;\n","import { shallowEqual } from \"react-redux\";\nimport ProgressBar from \"./progressbar/progressbar\";\nimport Controllbar from \"./controllbar/controllbar\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName, zIndex } from \"../../../helpers/interfaces/enums\";\nimport DisplaySubtitle from \"../subtitles/displaySubtitle\";\nimport { tw } from \"../../../helpers/helpers\";\n\nconst Footer = () => {\n const { firstPlay } = useAppSelector(\n ({ controller: { lock, isFullScreen, isLoading, activeElements, firstPlay } }) => ({ lock, isFullScreen, isLoading, activeElements, firstPlay }),\n shallowEqual,\n );\n useAppSelector(({ videoData: { subtitles, selectedSubtitle } }) => ({ subtitles, selectedSubtitle }), shallowEqual);\n\n let styles = \"\";\n\n if (conditions(ConditionName.isTouchScreen)) {\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-gap-2.5 pl-mb-8\";\n else styles = \"pl-gap-3\";\n } else {\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-gap-3 pl-mb-3\";\n else styles = \"pl-gap-1.5 pl-mb-1.5\";\n }\n\n return (\n <div\n id=\"footer\"\n className={tw(`pl-relative pl-rounded-b-[12px] pl-duration-300`)}\n onDoubleClick={(event) => conditions(ConditionName.isActiveElements) && event.stopPropagation()}\n onClick={(event) => conditions(ConditionName.isActiveElements) && event.stopPropagation()}\n style={{\n zIndex: zIndex.footer,\n // backgroundImage: \"linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 100%)\",\n backgroundBlendMode: \"multiply\",\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n }}\n >\n <>\n {conditions(ConditionName.showSubtitle) && <DisplaySubtitle />}\n {!conditions(ConditionName.isLock) && (\n <>\n <div\n className={`pl-flex pl-flex-col pl-w-full pl-mx-auto animate__animated animate__faster ${styles} ${\n conditions(ConditionName.isActiveElements) && !conditions(ConditionName.isLoading)\n ? \"animate__fadeIn pl-pointer-events-auto\"\n : \"animate__fadeOut pl-pointer-events-none\"\n }`}\n >\n {conditions(ConditionName.showProgressbar) && <ProgressBar />}\n <Controllbar />\n </div>\n </>\n )}\n </>\n </div>\n );\n};\n\nexport default Footer;\n","import { conditions } from \"../../conditions/conditions\";\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../constants\";\nimport { errorLogProvider } from \"../../errorBoundary/errorBoundaryFunctions\";\nimport { getUUID, highestResolutionSupported, splitQueryParamsFromStreamLink } from \"../../helpers\";\nimport { ConditionName } from \"../../interfaces/enums\";\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\nimport { initLog, loadingLog, pausePlayLog } from \"../../logs/logs\";\nimport {\n setActiveElements,\n setAutoQuality,\n setBufferedTimeWidth,\n setCanPlayVideo,\n setCurrentTime,\n setDuration,\n setFirstPlay,\n setIsEnded,\n setIsFullScreen,\n setIsLoading,\n setManualQuality,\n setPlay,\n setQualityLevels,\n} from \"../slices/controllerSlice\";\nimport { setClearPopoversSlice } from \"../slices/popoversSlice\";\nimport { setUserSettings } from \"../slices/userSlice\";\nimport { setMultiAudio, setSubtitleText, setVideoTimelines } from \"../slices/videoDataSlice\";\nimport store from \"../store\";\nimport { handleLockOrientation, handleVideoTimeline } from \"./controller.actions\";\nimport { handleSubtitle } from \"./videoData.actions\";\n\nexport const handleVideoError = (event: any) => {\n event.preventDefault();\n // Access the error property from the video element\n let error = (mainPlayerVideoTag() || miniPlayerVideoTag()).error;\n if (error) {\n switch (error.code) {\n case error.MEDIA_ERR_ABORTED:\n errorLogProvider({\n type: \"videoTagError\",\n message: \"You aborted the video playback.\",\n });\n break;\n case error.MEDIA_ERR_NETWORK:\n errorLogProvider({\n type: \"videoTagError\",\n message: \"A network error caused the video download to fail part-way.\",\n });\n break;\n case error.MEDIA_ERR_DECODE:\n errorLogProvider({\n type: \"videoTagError\",\n message: \"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.\",\n });\n break;\n case error.MEDIA_ERR_SRC_NOT_SUPPORTED:\n errorLogProvider({\n type: \"videoTagError\",\n message: \"The video could not be loaded, either because the server or network failed or because the format is not supported.\",\n });\n break;\n default:\n errorLogProvider({\n type: \"videoTagError\",\n message: \"An unknown error occurred.\",\n });\n break;\n }\n } else {\n errorLogProvider({\n type: \"videoTagError\",\n message: \"An error occurred, but the error object is not available.\",\n });\n }\n};\n\nexport const handleAutoFullScreen = () => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n const launchFullScreen = (element: any) => {\n if (element.requestFullScreen) element.requestFullScreen();\n else if (element.mozRequestFullScreen) element.mozRequestFullScreen();\n else if (element.webkitRequestFullScreen) element.webkitRequestFullScreen();\n };\n dispatch(setClearPopoversSlice());\n launchFullScreen(document.documentElement);\n dispatch(setIsFullScreen(params.fullscreen === \"true\"));\n};\n\nexport const appendQueryParamsToChunksIOS = () => {\n let fragmentExtension = \".ts\";\n let originalOpen = XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function () {\n if (arguments[1].endsWith(fragmentExtension)) arguments[1] = arguments[1] + \"?uuid=\" + getUUID!();\n originalOpen.apply(this, arguments as any);\n };\n};\n\nexport const handleBufferedTime = (video: any, intervalRef: any) => {\n const dispatch = store.dispatch;\n\n intervalRef.current = setInterval(() => {\n // چک کردن طول buffered قبل از دسترسی\n if (video.buffered.length > 0 && video.duration > 0) {\n const bufferedTime = video.buffered.end(video.buffered.length - 1); // استفاده از آخرین index برای ایمنی\n const bufferedTimeWidth = (bufferedTime / video.duration) * 100;\n dispatch(setBufferedTimeWidth(bufferedTimeWidth));\n } else {\n dispatch(setBufferedTimeWidth(0));\n }\n }, 500);\n};\n\n// ************* Hls Config Handlers ************* //\nexport const handleHlsConfig = () => {\n const streamLinkParams = splitQueryParamsFromStreamLink(\"mainPlayer\");\n\n return {\n xhrSetup: (xhr: any, url: any) => {\n if (!url?.split(\"m3u8\")[1]) url = `${url}${streamLinkParams}`;\n xhr.open(\"GET\", url, true);\n },\n startLevel: -1,\n debug: false,\n enableWorker: true,\n abrBandWidthUpFactor: 0.7,\n abrBandWidthFactor: 0.95,\n backBufferLength: Infinity,\n maxBufferLength: 30,\n maxMaxBufferLength: 60,\n manifestLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: Infinity,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 10,\n retryDelayMs: 5000,\n maxRetryDelayMs: 10000,\n },\n errorRetry: {\n maxNumRetry: 10,\n retryDelayMs: 5000,\n maxRetryDelayMs: 10000,\n },\n },\n },\n fragLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 120000,\n timeoutRetry: {\n maxNumRetry: 10,\n retryDelayMs: 5000,\n maxRetryDelayMs: 10000,\n },\n errorRetry: {\n maxNumRetry: 10,\n retryDelayMs: 5000,\n maxRetryDelayMs: 10000,\n },\n },\n },\n playlistLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 10,\n retryDelayMs: 5000,\n maxRetryDelayMs: 10000,\n },\n errorRetry: {\n maxNumRetry: 10,\n retryDelayMs: 5000,\n maxRetryDelayMs: 10000,\n },\n },\n },\n };\n};\n\nexport const handleMiniPlayerHlsConfig = () => {\n const streamLinkParams = splitQueryParamsFromStreamLink(\"miniPlayer\");\n return {\n xhrSetup: (xhr: any, url: any) => {\n url = `${url}${streamLinkParams}`;\n xhr.open(\"GET\", url, true);\n },\n startLevel: 1,\n debug: false,\n maxMaxBufferLength: 60,\n playlistLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 1000,\n retryDelayMs: 0,\n maxRetryDelayMs: 0,\n },\n errorRetry: {\n maxNumRetry: 1000,\n retryDelayMs: 1000,\n maxRetryDelayMs: 1000,\n },\n },\n },\n };\n};\n\n// ************* Manifest Handlers ************* //\n\nexport const handleManifestParsed = (hls: any, data: any) => {\n const dispatch = store.dispatch;\n let qualityLevels: any[] = [];\n let resolutions: any[] = [];\n hls.levels.map((level: any) => {\n qualityLevels.push(level.attrs.RESOLUTION?.split(\"x\")[1].trim());\n resolutions.push(level.attrs.RESOLUTION!);\n });\n hls.autoLevelCapping = highestResolutionSupported(resolutions, window.innerWidth, window.innerHeight);\n dispatch(setQualityLevels(qualityLevels));\n [\"fullscreenchange\", \"webkitfullscreenchange\", \"mozfullscreenchange\", \"msfullscreenchange\"].forEach((eventType) =>\n document.addEventListener(\n eventType,\n () => {\n if (conditions(ConditionName.isAutoQuality)) {\n hls.autoLevelCapping = highestResolutionSupported(resolutions, window.innerWidth, window.innerHeight);\n hls.nextLevel = -1;\n }\n },\n false,\n ),\n );\n if (data.audioTracks.length > 0) {\n const sortedAudioTracks = data.audioTracks.sort((a: any) => (a.default === true ? -1 : 1));\n dispatch(setMultiAudio(sortedAudioTracks));\n }\n};\n\n// ************* Level Handlers ************* //\n\nexport const handleLevels = (hls: any, data: any, setQualityLevel: any) => {\n if (data.frag.type !== \"audio\") {\n const dispatch = store.dispatch;\n const { settings } = store.getState().user;\n const { qualityLevels, manualQuality, autoQuality } = store.getState().controller;\n if (!conditions(ConditionName.isAutoQuality)) {\n if (data.frag.level !== manualQuality) hls.nextLevel = qualityLevels[settings.quality!] ? settings.quality : -1;\n if (qualityLevels[settings.quality!]) {\n dispatch(setManualQuality(settings.quality!));\n dispatch(setAutoQuality(undefined));\n } else {\n setQualityLevel(qualityLevels[data.frag.level]);\n dispatch(setAutoQuality(data.frag.level));\n dispatch(setUserSettings({ ...settings, quality: -1 }));\n }\n } else if (conditions(ConditionName.isAutoQuality) && autoQuality === undefined) {\n hls.nextLevel = -1;\n setQualityLevel(qualityLevels[data.frag.level]);\n dispatch(setAutoQuality(data.frag.level));\n } else if (conditions(ConditionName.isAutoQuality)) {\n setQualityLevel(qualityLevels[data.frag.level]);\n if (autoQuality !== data.frag.level) dispatch(setAutoQuality(data.frag.level));\n }\n }\n};\n\n// ************* Fragment Handlers ************* //\n\nexport const handleFragBuffered = (hls: any, video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const bufferedTime = hls.mainForwardBufferInfo?.end;\n const bufferedTimeWidth = (bufferedTime! / video.duration) * 100;\n dispatch(setBufferedTimeWidth(bufferedTimeWidth));\n};\n\nexport const handleFragChanged = (hls: any, data: any, setQualityLevel: any) => {\n const { params, multiAudio, selectedAudioId } = store.getState().videoData;\n\n if (multiAudio && selectedAudioId !== undefined && selectedAudioId !== hls.audioTrack) hls.audioTrack = selectedAudioId;\n if (params.type) handleLevels(hls, data, setQualityLevel);\n};\n\nexport const handleFragParsed = (hls: any, data: any, setQualityLevel: any) => {\n const { type } = store.getState().videoData.params;\n if (type) handleLevels(hls, data, setQualityLevel);\n};\n\n// ************* HLS Error Handlers ************* //\n\nexport const handleHlsErrors = (data: any) => {\n if (data.event !== \"hlsAudioTrackLoading\") return { type: \"HLS_\" + data.type, message: data.error.message };\n return undefined;\n};\n\n// ************* Video Tag Handlers ************* //\n\nexport const handleVideoWaiting = (event: any, waitingTimerRef: any) => {\n const dispatch = store.dispatch;\n event.preventDefault();\n waitingTimerRef.current = Date.now();\n dispatch(setIsLoading(true));\n};\n\nexport const handleVideoSeeking = (event: any, waitingTimerRef: any) => {\n if (conditions(ConditionName.isIOS) && conditions(ConditionName.isFirstPlay)) return;\n const dispatch = store.dispatch;\n event.preventDefault();\n waitingTimerRef.current = 0;\n dispatch(setIsLoading(true));\n};\n\nexport const handleVideoPlay = (event: any, timerRef: any, video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { videoSettings } = store.getState().user;\n const { params } = store.getState().videoData;\n const { currentTime } = store.getState().controller;\n event.preventDefault();\n timerRef.current = Date.now();\n dispatch(setPlay(true));\n if (conditions(ConditionName.hasOnPlayParams)) params.onPlay!(currentTime);\n if (conditions(ConditionName.isFirstPlay)) {\n if (!conditions(ConditionName.hasCurrentTimeParams)) {\n video.currentTime = videoSettings.time;\n dispatch(setCurrentTime(videoSettings.time));\n }\n if (conditions(ConditionName.hasFullScreenParams)) handleAutoFullScreen();\n if (conditions(ConditionName.isFullScreen)) handleLockOrientation();\n dispatch(setVideoTimelines([Math.floor(video.currentTime)]));\n if (conditions(ConditionName.hasRawSubtitles)) handleSubtitle();\n }\n sendFluentLog(pausePlayLog(true));\n dispatch(setSubtitleText(\"\"));\n};\n\nexport const handleVideoPlaying = (\n loadingCounterRef: any,\n loadingDurationRef: any,\n initialWaitingDurationRef: any,\n bannerLoadingDurationRef: any,\n timerRef: any,\n waitingDurationRef: any,\n waitingTimerRef: any,\n videoEntranceTimeRef: any,\n video: HTMLVideoElement,\n) => {\n const dispatch = store.dispatch;\n const { autoQuality, canPlayVideo, firstPlay, qualityLevels } = store.getState().controller;\n const { settings } = store.getState().user;\n const qualityLevel = settings.quality === -1 && autoQuality ? qualityLevels[autoQuality] : qualityLevels[settings.quality!];\n let waitingDuration = 0;\n if (!!waitingTimerRef.current) waitingDuration = Date.now() - waitingTimerRef.current;\n if (firstPlay && !!video.played) {\n sendFluentLog(\n initLog(\n loadingDurationRef.current,\n Date.now() - initialWaitingDurationRef.current,\n bannerLoadingDurationRef.current - initialWaitingDurationRef.current,\n Date.now() - timerRef.current,\n timerRef,\n ),\n );\n }\n dispatch(setFirstPlay(false));\n\n if (canPlayVideo && waitingDuration > 0 && qualityLevel !== undefined) {\n waitingDurationRef.current = waitingDuration;\n waitingTimerRef.current = 0;\n sendFluentLog(loadingLog(waitingDuration, qualityLevel, timerRef, loadingCounterRef, videoEntranceTimeRef.current));\n loadingCounterRef.current = loadingCounterRef.current + 1;\n timerRef.current = Date.now();\n }\n};\n\nexport const handleVideoPause = (event: any) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n event.preventDefault();\n sendFluentLog(pausePlayLog(false));\n dispatch(setPlay(false));\n if (conditions(ConditionName.hasOnPauseParams)) params.onPause!();\n};\n\nexport const handleVideoTimeUpdate = (event: any) => {\n const dispatch = store.dispatch;\n const { onChangeCurrentTime } = store.getState().videoData.params;\n const { selectedSubtitle } = store.getState().videoData;\n event.preventDefault();\n dispatch(setCurrentTime(event.target.currentTime));\n if (conditions(ConditionName.hasOnChangeCurrentTime)) onChangeCurrentTime!(event.target.currentTime);\n if (conditions(ConditionName.hasActiveCue)) dispatch(setSubtitleText((selectedSubtitle!.activeCues![0] as any).text));\n};\n\nexport const handleVideoCanPlay = (video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { settings } = store.getState().user;\n dispatch(setIsLoading(false));\n dispatch(setCanPlayVideo(true));\n video.volume = settings.volume / 100;\n dispatch(setDuration(video.duration));\n};\n\nexport const handleVideoEnded = (event: any, video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n event.preventDefault();\n dispatch(setIsEnded(true));\n dispatch(setActiveElements(true));\n handleVideoTimeline(video.duration);\n if (conditions(ConditionName.hasOnFinishedParams)) params.onFinished!();\n};\n\n// ************* IOS Video Tag Handlers ************* //\n\nexport const handleIosVideoPlay = (event: any, timerRef: any) => {\n event.preventDefault();\n timerRef.current = Date.now();\n};\n\nexport const handleIosVideoPlaying = () => {\n const dispatch = store.dispatch;\n dispatch(setIsLoading(false));\n dispatch(setFirstPlay(false));\n};\n\nexport const handleIosVideoTimeUpdate = (event: any) => {\n const { onChangeCurrentTime } = store.getState().videoData.params;\n const dispatch = store.dispatch;\n event.preventDefault();\n if (conditions(ConditionName.hasOnChangeCurrentTime)) onChangeCurrentTime!(event.target.currentTime);\n dispatch(setCurrentTime(event.target.currentTime));\n};\n\nexport const handleIosVideoEnded = () => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n dispatch(setIsEnded(true));\n dispatch(setActiveElements(true));\n if (conditions(ConditionName.hasOnFinishedParams)) params.onFinished!();\n};\n\n// ************* Static Video Tag Handlers ************* //\n\nexport const handleStaticVideoPause = (event: any) => {\n const dispatch = store.dispatch;\n event.preventDefault();\n dispatch(setPlay(false));\n};\n\nexport const handleStaticVideoPlay = (event: any, timerRef: any) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n const { currentTime } = store.getState().controller;\n event.preventDefault();\n dispatch(setPlay(true));\n timerRef.current = Date.now();\n dispatch(setSubtitleText(\"\"));\n if (conditions(ConditionName.hasOnPlayParams)) params.onPlay!(currentTime);\n\n if (conditions(ConditionName.isFirstPlay)) {\n if (conditions(ConditionName.hasRawSubtitles)) handleSubtitle();\n if (conditions(ConditionName.hasFullScreenParams)) {\n handleAutoFullScreen();\n if (conditions(ConditionName.isFullScreen)) handleLockOrientation();\n }\n }\n};\n\nexport const handleStaticVideoPlaying = (loadingDurationRef: any, initialWaitingDurationRef: any, timerRef: any, video: HTMLVideoElement) => {\n const dispatch = store.dispatch;\n const { firstPlay } = store.getState().controller;\n dispatch(setIsLoading(false));\n if (firstPlay && !!video.played) {\n sendFluentLog(\n initLog(Math.round(loadingDurationRef.current), Date.now() - initialWaitingDurationRef.current, 0, Date.now() - timerRef.current, timerRef),\n );\n }\n dispatch(setFirstPlay(false));\n};\n\nexport const handleStaticVideoTimeUpdate = (event: any) => {\n const { onChangeCurrentTime } = store.getState().videoData.params;\n const dispatch = store.dispatch;\n const { selectedSubtitle } = store.getState().videoData;\n event.preventDefault();\n dispatch(setCurrentTime(event.target.currentTime));\n dispatch(setDuration(event.target.duration));\n if (conditions(ConditionName.hasOnChangeCurrentTime)) onChangeCurrentTime!(event.target.currentTime);\n if (conditions(ConditionName.hasActiveCue)) dispatch(setSubtitleText((selectedSubtitle!.activeCues![0] as any).text));\n};\n\nexport const handleStaticVideoCanPlay = () => {\n const dispatch = store.dispatch;\n dispatch(setIsLoading(false));\n dispatch(setCanPlayVideo(true));\n};\n\nexport const handleStaticVideoLoadedData = (intervalRef: any, video: HTMLVideoElement) => handleBufferedTime(video, intervalRef);\n\nexport const handleStaticVideoEnded = (event: any) => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n dispatch(setIsEnded(true));\n dispatch(setActiveElements(true));\n if (conditions(ConditionName.hasOnFinishedParams)) params.onFinished!();\n event.preventDefault();\n};\n\nexport const handleMiniPlayerMediaAttached = async (hls: any) => {\n const { stream_link } = store.getState().miniPlayer.details;\n hls.loadSource(stream_link);\n};\n\nexport const handleVideoVisibilityChange = (video: HTMLVideoElement) => handleVideoTimeline(video.currentTime);\n","import { useEffect } from \"react\";\nimport { conditions } from \"../conditions/conditions\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport { mainPlayerVideoTag } from \"../constants\";\nimport { useAppDispatch, useAppSelector } from \"../redux/hooks\";\nimport { setCurrentTime } from \"../redux/slices/controllerSlice\";\nimport { shallowEqual } from \"react-redux\";\n\nconst useJumpToCurrentTime = () => {\n const dispatch = useAppDispatch();\n const { params } = useAppSelector(({ videoData: { params } }) => ({ params }), shallowEqual);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (conditions(ConditionName.hasCurrentTimeParams)) {\n mainPlayerVideoTag().currentTime = params.currentTime!;\n dispatch(setCurrentTime(params.currentTime!));\n }\n }, [params.currentTime]);\n}\n\nexport default useJumpToCurrentTime;","import { useEffect } from \"react\";\nimport { useAppSelector } from \"../redux/hooks\";\nimport { shallowEqual } from \"react-redux\";\nimport { mainPlayerVideoTag } from \"../constants\";\n\nconst useHideSubtitle = () => {\n const { rawSubtitles } = useAppSelector(\n ({ videoData: { rawSubtitles } }) => ({ rawSubtitles }),\n shallowEqual\n );\n\n useEffect(() => {\n const tracks = mainPlayerVideoTag().getElementsByTagName(\"track\");\n for (let i = 0; i < tracks.length; i++) {\n tracks[i].addEventListener(\"cuechange\", (event) => {\n const track = (event.target! as any).track;\n let activeCue: any;\n if (track.activeCues) activeCue = track.activeCues[0];\n if (activeCue) {\n setTimeout(() => {\n const el = document.getElementById(\"subtitle-id\");\n if (el) el.style.display = \"block\";\n }, 300);\n\n activeCue.onexit = () => {\n const el = document.getElementById(\"subtitle-id\");\n if (el) el.style.display = \"none\";\n };\n }\n });\n }\n }, [rawSubtitles]);\n};\n\nexport default useHideSubtitle;\n","import { useEffect } from \"react\";\nimport { mainPlayerVideoTag } from \"../constants\";\nimport { useAppDispatch, useAppSelector } from \"../redux/hooks\";\nimport { shallowEqual } from \"react-redux\";\nimport { getSubtitleLabel, sortLanguages } from \"../helpers\";\nimport { setSubtitles } from \"../redux/slices/videoDataSlice\";\n\nconst useAppendSubtitle = () => {\n const dispatch = useAppDispatch();\n const { rawSubtitles } = useAppSelector(({ videoData: { rawSubtitles } }) => ({ rawSubtitles }), shallowEqual);\n\n useEffect(() => {\n const videoEl = mainPlayerVideoTag();\n if (!videoEl) return;\n\n const newSubtitles = sortLanguages(rawSubtitles || []);\n const existingTracks = Array.from(videoEl.querySelectorAll(\"track\"));\n const existingMap = new Map(existingTracks.map((t) => [t.srclang, t]));\n existingTracks.forEach((track) => {\n const stillExists = newSubtitles.some((s: any) => s.lang === track.srclang);\n if (!stillExists && track.isConnected) track.remove();\n });\n\n newSubtitles.forEach((subtitle: any) => {\n const existing = existingMap.get(subtitle.lang);\n\n if (!existing) {\n const trackEl = document.createElement(\"track\");\n trackEl.kind = \"subtitles\";\n trackEl.src = subtitle.url;\n trackEl.srclang = subtitle.lang;\n trackEl.label = subtitle.title || (getSubtitleLabel(subtitle.lang) as any);\n trackEl.default = !!subtitle.is_default;\n videoEl.appendChild(trackEl);\n return;\n }\n\n if (existing.src !== subtitle.url) {\n const newTrack = document.createElement(\"track\");\n newTrack.kind = \"subtitles\";\n newTrack.src = subtitle.url;\n newTrack.srclang = subtitle.lang;\n\n newTrack.label = subtitle.title || (getSubtitleLabel(subtitle.lang) as any);\n newTrack.default = !!subtitle.is_default;\n\n existing.replaceWith(newTrack);\n }\n });\n\n const timeoutId = setTimeout(() => {\n const tracks = Array.from(videoEl.textTracks);\n dispatch(setSubtitles(tracks));\n }, 200);\n\n return () => clearTimeout(timeoutId);\n }, [rawSubtitles, dispatch]);\n};\n\nexport default useAppendSubtitle;\n","import { useEffect } from \"react\";\nimport { useAppSelector } from \"../redux/hooks\";\nimport { shallowEqual } from \"react-redux\";\nimport { handleSubtitle } from \"../redux/actions/videoData.actions\";\nimport { conditions } from \"../conditions/conditions\";\nimport { ConditionName } from \"../interfaces/enums\";\n\nconst useActiveSubtitleAutomatic = () => {\n const { activeSubtitle } = useAppSelector(\n ({ videoData }) => ({\n activeSubtitle: videoData.params?.activeSubtitle,\n }),\n shallowEqual\n );\n\n useEffect(() => {\n if (conditions(ConditionName.hasActiveSubtitleInParams))\n setTimeout(() => handleSubtitle(activeSubtitle), 500);\n }, [activeSubtitle]);\n};\n\nexport default useActiveSubtitleAutomatic;\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { handlePageLoadTime, setupAutoplayBehavior } from \"../../../helpers/helpers\";\r\nimport { mainPlayerVideoTag } from \"../../../helpers/constants\";\r\nimport { setPlayerParams, setVideoElementSizeInfo } from \"../../../helpers/redux/slices/videoDataSlice\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport {\r\n handleStaticVideoCanPlay,\r\n handleStaticVideoEnded,\r\n handleStaticVideoLoadedData,\r\n handleStaticVideoPause,\r\n handleStaticVideoPlay,\r\n handleStaticVideoPlaying,\r\n handleStaticVideoTimeUpdate,\r\n handleVideoError,\r\n} from \"../../../helpers/redux/actions/playerCore.actions\";\r\nimport useJumpToCurrentTime from \"../../../helpers/hooks/useJumpToCurrentTime\";\r\nimport useHideSubtitle from \"../../../helpers/hooks/useHideSubtitle\";\r\nimport Image from \"next/image\";\r\nimport useAppendSubtitle from \"../../../helpers/hooks/useAppendSubtitle\";\r\nimport useActiveSubtitleAutomatic from \"../../../helpers/hooks/useActiveSubtitleAutomatic\";\r\n\r\nconst StaticVideoTag = () => {\r\n const dispatch = useAppDispatch();\r\n const { params } = useAppSelector(({ videoData: { params } }) => ({ params }), shallowEqual);\r\n useAppSelector(({ controller: { firstPlay } }) => ({ firstPlay }), shallowEqual);\r\n\r\n const loadingDurationRef = useRef<any>(0);\r\n const initialWaitingRef = useRef<any>(0);\r\n const timerRef = useRef<any>(null);\r\n const intervalRef = useRef<any>(null);\r\n const videoRef = useRef<HTMLVideoElement | null>(null);\r\n\r\n useEffect(() => {\r\n const video = videoRef.current;\r\n if (!video) return;\r\n\r\n const onLoadedData = () => handleStaticVideoLoadedData(intervalRef, video);\r\n const onCanPlay = () => handleStaticVideoCanPlay();\r\n\r\n video.addEventListener(\"loadeddata\", onLoadedData);\r\n video.addEventListener(\"canplay\", onCanPlay);\r\n\r\n if (video.readyState >= 2) onLoadedData();\r\n if (video.readyState >= 3) onCanPlay();\r\n\r\n return () => {\r\n video.removeEventListener(\"loadeddata\", onLoadedData);\r\n video.removeEventListener(\"canplay\", onCanPlay);\r\n };\r\n }, []);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n handlePageLoadTime(loadingDurationRef);\r\n initialWaitingRef.current = Date.now();\r\n }, []);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n const handleResize = () => {\r\n const element: any = videoRef.current?.getBoundingClientRect();\r\n if (element) dispatch(setVideoElementSizeInfo(element));\r\n };\r\n\r\n if (conditions(ConditionName.isFirstPlay)) handleResize();\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [params.id]);\r\n\r\n useJumpToCurrentTime();\r\n\r\n useEffect(() => {\r\n const video = videoRef.current;\r\n\r\n if (!params.vhl_mainVideoSrc || !video) return;\r\n\r\n dispatch(setPlayerParams({ ...params, id: params.vhl_mainVideoSrc }));\r\n const currentTime = video.currentTime;\r\n\r\n const handleCanPlay = () => {\r\n video.currentTime = currentTime;\r\n video.play().catch(() => {\r\n video.muted = true;\r\n video.play();\r\n });\r\n video.removeEventListener(\"canplay\", handleCanPlay);\r\n };\r\n\r\n video.addEventListener(\"canplay\", handleCanPlay);\r\n\r\n video.src = params.vhl_mainVideoSrc + `?date=${Date.now()}`;\r\n video.load();\r\n\r\n setupAutoplayBehavior(video);\r\n\r\n return () => {\r\n video.removeEventListener(\"canplay\", handleCanPlay);\r\n };\r\n }, [params.vhl_mainVideoSrc]);\r\n\r\n useAppendSubtitle();\r\n useHideSubtitle();\r\n useActiveSubtitleAutomatic();\r\n\r\n return (\r\n <div style={{ position: \"relative\", width: \"100%\", height: \"100%\" }}>\r\n {params.banner && (\r\n <Image fill src={params.banner} alt={params.bannerAlt ?? \"بنر ویدیو پلیر\"} style={{ objectFit: \"cover\", pointerEvents: \"none\" }} />\r\n )}\r\n\r\n <video\r\n playsInline\r\n ref={videoRef}\r\n id=\"player-tag\"\r\n preload=\"metadata\"\r\n crossOrigin=\"anonymous\"\r\n poster={params.banner ?? undefined}\r\n style={{ width: \"100%\", height: \"100%\" }}\r\n autoPlay={!!conditions(ConditionName.hasAutoPlay) || !!params.advertisement}\r\n className={`pl-w-full pl-h-full pl-items-center pl-flex-1 ${\r\n !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isFullScreen) && \"!pl-rounded-[12px]\"\r\n }`}\r\n onError={handleVideoError}\r\n onPause={handleStaticVideoPause}\r\n onEnded={handleStaticVideoEnded}\r\n onTimeUpdate={handleStaticVideoTimeUpdate}\r\n onPlay={(e) => handleStaticVideoPlay(e, timerRef)}\r\n onPlaying={(e) => handleStaticVideoPlaying(loadingDurationRef, initialWaitingRef, timerRef, e.currentTarget)}\r\n >\r\n <source src={params.id + `?date=${Date.now()}`} />\r\n </video>\r\n </div>\r\n );\r\n};\r\n\r\nexport default StaticVideoTag;\r\n","import { IViewedVideo } from \"../../interfaces/interfaces\";\nimport store from \"../store\";\nimport { setVideoSettings } from \"../slices/userSlice\";\nimport { mainPlayerVideoTag } from \"../../constants\";\n\nexport const handleContinuousPlayback = () => {\n const { params } = store.getState().videoData;\n const currentTime = mainPlayerVideoTag().currentTime;\n if (currentTime !== 0) {\n const duration = mainPlayerVideoTag().duration;\n const viewedVideo: IViewedVideo = {\n video_id: +params.id!,\n video_type: 2,\n time: currentTime === duration ? 0 : Math.floor(mainPlayerVideoTag().currentTime),\n };\n let viewedVideosInLocalStorage = localStorage.getItem(\"viewedVideos\");\n if (viewedVideosInLocalStorage) {\n let viewedVideos: IViewedVideo[] = JSON.parse(viewedVideosInLocalStorage);\n viewedVideos = viewedVideos.filter(\n (video: IViewedVideo) => video.video_id !== viewedVideo.video_id || video.video_type !== viewedVideo.video_type\n );\n if (viewedVideos.length < 10) viewedVideos.push(viewedVideo);\n else {\n viewedVideos.shift();\n viewedVideos.push(viewedVideo);\n }\n localStorage.setItem(\"viewedVideos\", JSON.stringify(viewedVideos));\n } else localStorage.setItem(\"viewedVideos\", JSON.stringify([viewedVideo]));\n }\n};\n\nexport const handleApplyContinuousPlayback = () => {\n const dispatch = store.dispatch;\n const { params } = store.getState().videoData;\n let viewedVideosInLocalStorage = localStorage.getItem(\"viewedVideos\");\n if (viewedVideosInLocalStorage) {\n const viewedVideos: IViewedVideo[] = JSON.parse(viewedVideosInLocalStorage);\n const viewedVideo = viewedVideos.find(\n (video: IViewedVideo) => video.video_id === Number(params.id) && video.video_type === 2\n );\n\n if (viewedVideo) dispatch(setVideoSettings({ time: viewedVideo.time }));\n }\n};\n\n","import { useEffect } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport { useAppSelector } from \"../redux/hooks\";\nimport { continuousePlaybackIntervalTime } from \"../environment\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport { conditions } from \"../conditions/conditions\";\nimport { handleContinuousPlayback } from \"../redux/actions/user.actions\";\n\nconst useContinuousPlaybackInterval = () => {\n let interval: any = null;\n\n const { isEnded } = useAppSelector(({ controller: { isEnded } }) => ({ isEnded }), shallowEqual);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n interval = setInterval(() => handleContinuousPlayback(), continuousePlaybackIntervalTime);\n return () => clearInterval(interval);\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (conditions(ConditionName.isEnded)) clearInterval(interval);\n }, [isEnded]);\n};\n\nexport default useContinuousPlaybackInterval;\n","import { useEffect, useState } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport { useAppSelector } from \"../redux/hooks\";\nimport { sendFluentLog } from \"../logs/fluentdLogger\";\nimport { autoQualityChangeLog, pingpongLog } from \"../logs/logs\";\n\nconst usePingPong = (qualityLevel?: number) => {\n const [qualityHistory, setQualityHistory] = useState<number[]>([]);\n const [startTimer, setStartTimer] = useState<number>(0);\n\n const { qualityLevels } = useAppSelector(({ controller: { qualityLevels } }) => ({ qualityLevels }), shallowEqual);\n\n useEffect(() => {\n if (qualityLevel) {\n let newQualityArray: number[] = [];\n switch (qualityHistory.length) {\n case 0:\n newQualityArray = [qualityLevel];\n break;\n case 1:\n newQualityArray = [qualityLevel, ...qualityHistory];\n break;\n case 2:\n newQualityArray = [qualityLevel, ...qualityHistory];\n sendFluentLog(\n autoQualityChangeLog(\n `${newQualityArray[0]}P`,\n `${newQualityArray[1]}P`,\n qualityLevels.indexOf(newQualityArray[0]) - qualityLevels.indexOf(newQualityArray[1])\n )\n );\n break;\n default:\n newQualityArray = [qualityLevel, qualityHistory[0], qualityHistory[1]];\n if (newQualityArray[1] !== newQualityArray[2])\n sendFluentLog(\n autoQualityChangeLog(\n `${newQualityArray[1]}P`,\n `${newQualityArray[2]}P`,\n qualityLevels.indexOf(newQualityArray[1]) - qualityLevels.indexOf(newQualityArray[2])\n )\n );\n break;\n }\n setQualityHistory(newQualityArray);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [qualityLevel]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (qualityHistory.length === 3 && qualityHistory[0] === qualityHistory[2]) {\n sendFluentLog(pingpongLog(startTimer, qualityHistory));\n setQualityHistory([]);\n setStartTimer(0);\n } else {\n setStartTimer(new Date().getTime());\n }\n }, [qualityHistory]);\n};\nexport default usePingPong;\n","import { useEffect } from \"react\";\nimport { handleContinuousPlayback } from \"../redux/actions/user.actions\";\n\nconst useBeforeUnload = () => {\n useEffect(() => {\n const handleBeforeUnload = () => {\n handleContinuousPlayback();\n };\n\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n return () => window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n }, []);\n};\n\nexport default useBeforeUnload;\n","\"use client\";\r\n\r\nimport Hls, { ErrorData } from \"hls.js\";\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport useContinuousPlaybackInterval from \"../../../helpers/hooks/useContinuousPlaybackInterval\";\r\nimport { handlePageLoadTime, setupAutoplayBehavior } from \"../../../helpers/helpers\";\r\nimport {\r\n appendQueryParamsToChunksIOS,\r\n handleFragBuffered,\r\n handleFragChanged,\r\n handleFragParsed,\r\n handleHlsConfig,\r\n handleHlsErrors,\r\n handleIosVideoEnded,\r\n handleIosVideoPlay,\r\n handleIosVideoPlaying,\r\n handleIosVideoTimeUpdate,\r\n handleManifestParsed,\r\n handleVideoCanPlay,\r\n handleVideoEnded,\r\n handleVideoError,\r\n handleVideoPause,\r\n handleVideoPlay,\r\n handleVideoPlaying,\r\n handleVideoSeeking,\r\n handleVideoTimeUpdate,\r\n handleVideoVisibilityChange,\r\n handleVideoWaiting,\r\n} from \"../../../helpers/redux/actions/playerCore.actions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { setIsEnded } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport usePingPong from \"../../../helpers/hooks/usePingPong\";\r\nimport useBeforeUnload from \"../../../helpers/hooks/useBeforeUnload\";\r\nimport useHideSubtitle from \"../../../helpers/hooks/useHideSubtitle\";\r\nimport useJumpToCurrentTime from \"../../../helpers/hooks/useJumpToCurrentTime\";\r\nimport useAppendSubtitle from \"../../../helpers/hooks/useAppendSubtitle\";\r\nimport useActiveSubtitleAutomatic from \"../../../helpers/hooks/useActiveSubtitleAutomatic\";\r\nimport Image from \"next/image\";\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 } = useAppSelector(\r\n ({ videoData: { params, details, videoElementSizeInfo } }) => ({\r\n params,\r\n details,\r\n videoElementSizeInfo,\r\n }),\r\n shallowEqual,\r\n );\r\n const { currentTime, duration } = useAppSelector(\r\n ({ controller: { currentTime, duration, isEnded, firstPlay } }) => ({\r\n currentTime,\r\n duration,\r\n isEnded,\r\n firstPlay,\r\n }),\r\n shallowEqual,\r\n );\r\n\r\n const videoRef = useRef<HTMLVideoElement | null>(null);\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>(videoRef.current?.currentTime || 0);\r\n\r\n useContinuousPlaybackInterval();\r\n useBeforeUnload();\r\n\r\n const streamUrl = details.stream_link || params.stream_link;\r\n\r\n useEffect(() => {\r\n const video = videoRef.current;\r\n\r\n if (!video || !streamUrl) return;\r\n\r\n // ---- Page Load Time ----\r\n handlePageLoadTime(loadingDurationRef);\r\n initialWaitingDurationRef.current = Date.now();\r\n setupAutoplayBehavior(video);\r\n\r\n const hls = new Hls(handleHlsConfig());\r\n // ---------------- HLS EVENTS ----------------\r\n const onMediaAttached = () => hls.loadSource(streamUrl);\r\n const onManifestParsed = (e: any, data: any) => handleManifestParsed(hls, data);\r\n const onFragBuffered = () => handleFragBuffered(hls, video);\r\n const onFragChanged = (e: any, data: any) => handleFragChanged(hls, data, setQualityLevel);\r\n const onFragParsed = (e: any, data: any) => handleFragParsed(hls, data, setQualityLevel);\r\n const onError = (e: any, data: ErrorData) => handleHlsErrors(data);\r\n\r\n // ---------------- VIDEO EVENTS ----------------\r\n const onWaiting = (e: any) => handleVideoWaiting(e, waitingTimerRef);\r\n const onSeeking = (e: any) => handleVideoSeeking(e, waitingTimerRef);\r\n const onPlay = (e: any) => handleVideoPlay(e, timerRef, video);\r\n const onIosPlay = (e: any) => handleIosVideoPlay(e, timerRef);\r\n const onPause = (e: any) => handleVideoPause(e);\r\n const onTimeUpdate = (e: any) => handleVideoTimeUpdate(e);\r\n const onCanPlay = () => handleVideoCanPlay(video);\r\n const onEnded = (e: any) => handleVideoEnded(e, video);\r\n const onVideoError = (e: any) => handleVideoError(e);\r\n const onVisibilitychange = () => handleVideoVisibilityChange(video);\r\n const onPlaying = () =>\r\n handleVideoPlaying(\r\n loadingCounterRef,\r\n loadingDurationRef,\r\n initialWaitingDurationRef,\r\n bannerLoadingDurationRef,\r\n timerRef,\r\n waitingDurationRef,\r\n waitingTimerRef,\r\n videoEntranceTimeRef,\r\n video,\r\n );\r\n\r\n // ---------------- INIT ----------------\r\n if (Hls.isSupported()) {\r\n hls.on(Hls.Events.MEDIA_ATTACHED, onMediaAttached);\r\n hls.on(Hls.Events.MANIFEST_PARSED, onManifestParsed);\r\n hls.on(Hls.Events.FRAG_BUFFERED, onFragBuffered);\r\n hls.on(Hls.Events.FRAG_CHANGED, onFragChanged);\r\n hls.on(Hls.Events.FRAG_PARSED, onFragParsed);\r\n hls.on(Hls.Events.ERROR, onError);\r\n\r\n hls.attachMedia(video);\r\n } else if (video.canPlayType(\"application/vnd.apple.mpegurl\")) {\r\n video.src = streamUrl;\r\n appendQueryParamsToChunksIOS();\r\n\r\n video.addEventListener(\"play\", onIosPlay);\r\n video.addEventListener(\"playing\", handleIosVideoPlaying);\r\n video.addEventListener(\"timeupdate\", handleIosVideoTimeUpdate);\r\n video.addEventListener(\"ended\", handleIosVideoEnded);\r\n }\r\n\r\n video.addEventListener(\"waiting\", onWaiting);\r\n video.addEventListener(\"seeking\", onSeeking);\r\n video.addEventListener(\"play\", onPlay);\r\n video.addEventListener(\"playing\", onPlaying);\r\n video.addEventListener(\"pause\", onPause);\r\n video.addEventListener(\"timeupdate\", onTimeUpdate);\r\n video.addEventListener(\"canplay\", onCanPlay);\r\n video.addEventListener(\"ended\", onEnded);\r\n video.addEventListener(\"error\", onVideoError);\r\n\r\n document.addEventListener(\"visibilitychange\", onVisibilitychange);\r\n\r\n // ---------------- CLEANUP ----------------\r\n return () => {\r\n hls.destroy();\r\n\r\n video.removeEventListener(\"waiting\", onWaiting);\r\n video.removeEventListener(\"seeking\", onSeeking);\r\n video.removeEventListener(\"play\", onPlay);\r\n video.removeEventListener(\"playing\", onPlaying);\r\n video.removeEventListener(\"pause\", onPause);\r\n video.removeEventListener(\"timeupdate\", onTimeUpdate);\r\n video.removeEventListener(\"canplay\", onCanPlay);\r\n video.removeEventListener(\"ended\", onEnded);\r\n video.removeEventListener(\"error\", onVideoError);\r\n\r\n document.removeEventListener(\"visibilitychange\", onVisibilitychange);\r\n };\r\n }, [streamUrl]);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (currentTime < duration && conditions(ConditionName.isEnded)) dispatch(setIsEnded(false));\r\n }, [currentTime]);\r\n\r\n usePingPong(qualityLevel);\r\n\r\n useJumpToCurrentTime();\r\n useAppendSubtitle();\r\n useHideSubtitle();\r\n useActiveSubtitleAutomatic();\r\n\r\n return (\r\n <>\r\n <video\r\n ref={videoRef}\r\n playsInline\r\n id=\"player-tag\"\r\n preload=\"metadata\"\r\n crossOrigin=\"anonymous\"\r\n poster={params.banner ? params.banner : details.banner}\r\n autoPlay={!!conditions(ConditionName.hasAutoPlay) || !!params.advertisement}\r\n className={`pl-items-center pl-flex-1 pl-h-full ${\r\n !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isFullScreen) && \"!pl-rounded-[12px]\"\r\n }`}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n maxWidth: videoElementSizeInfo.width ? videoElementSizeInfo.width : \"100%\",\r\n maxHeight: videoElementSizeInfo.width\r\n ? videoElementSizeInfo.width < videoElementSizeInfo.height\r\n ? (videoElementSizeInfo.width * 9) / 16\r\n : (videoElementSizeInfo.width * 16) / 9\r\n : \"100%\",\r\n }}\r\n >\r\n <Image\r\n fill\r\n style={{ objectFit: \"cover\" }}\r\n src={params.banner ? params.banner : details.banner}\r\n onLoad={() => (bannerLoadingDurationRef.current = Date.now())}\r\n alt={params.bannerAlt ? params.bannerAlt : conditions(ConditionName.isStaticFormat) ? \"بنر ویدیو پلیر کافه ویدیو\" : (details.title ?? \"\")}\r\n />\r\n </video>\r\n </>\r\n );\r\n};\r\n\r\nexport default NonStaticVideoTag;\r\n","import dynamic from \"next/dynamic\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\n\nconst StaticVideoTag = dynamic(() => import(\"./staticVideoTag\"));\nconst NonStaticVideoTag = dynamic(() => import(\"./nonStaticVideoTag\"));\n\nconst VideoTag = () => {\n return <>{conditions(ConditionName.isStaticFormat) ? <StaticVideoTag /> : <NonStaticVideoTag />}</>;\n};\n\nexport default VideoTag;\n","import { useEffect } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport { useAppDispatch, useAppSelector } from \"../redux/hooks\";\nimport { setIsFullScreen } from \"../redux/slices/controllerSlice\";\nimport { handleVideoElementSizeInfo } from \"../redux/actions/controller.actions\";\nimport { fullscreenLog } from \"../logs/logs\";\nimport { sendFluentLog } from \"../logs/fluentdLogger\";\nimport store from \"../redux/store\";\n\nconst useFullScreen = () => {\n const dispatch = useAppDispatch();\n useAppSelector(({ videoData: { params } }) => ({ params }), shallowEqual);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n const handleChangeFullScreen = () => {\n const isFullScreen = document.fullscreenElement;\n const { params } = store.getState().videoData;\n params.onFullscreenChange?.(!!isFullScreen);\n\n if (isFullScreen) dispatch(setIsFullScreen(true));\n else {\n dispatch(setIsFullScreen(false));\n handleVideoElementSizeInfo();\n sendFluentLog(fullscreenLog(\"exitFullScreen\"));\n document.body.style.overflow = \"auto\";\n }\n };\n\n if (document.addEventListener) {\n document.addEventListener(\"webkitfullscreenchange\", handleChangeFullScreen, false);\n document.addEventListener(\"mozfullscreenchange\", handleChangeFullScreen, false);\n document.addEventListener(\"fullscreenchange\", handleChangeFullScreen, false);\n document.addEventListener(\"MSFullscreenChange\", handleChangeFullScreen, false);\n }\n\n () => {\n document.removeEventListener(\"webkitfullscreenchange\", handleChangeFullScreen, false);\n document.removeEventListener(\"mozfullscreenchange\", handleChangeFullScreen, false);\n document.removeEventListener(\"fullscreenchange\", handleChangeFullScreen, false);\n document.removeEventListener(\"MSFullscreenChange\", handleChangeFullScreen, false);\n };\n }, []);\n};\n\nexport default useFullScreen;\n","import { useEffect, useRef } from \"react\";\nimport { checkParentTarget, isTouchScreen } from \"../helpers\";\nimport { activeElementsTime } from \"../environment\";\nimport { shallowEqual } from \"react-redux\";\nimport { useAppDispatch, useAppSelector } from \"../redux/hooks\";\nimport { setActiveElements } from \"../redux/slices/controllerSlice\";\nimport store from \"../redux/store\";\n\nconst useActiveInActive = (isRightDoubleTouched: boolean, isLeftDoubleTouched: boolean) => {\n const dispatch = useAppDispatch();\n const { activeElements, play } = useAppSelector(({ controller: { activeElements, play } }) => ({ activeElements, play }), shallowEqual);\n\n const timeoutRef = useRef<any>(null);\n const isRightDoubleTouchedRef = useRef<boolean>(isRightDoubleTouched);\n const isLeftDoubleTouchedRef = useRef<boolean>(isLeftDoubleTouched);\n\n useEffect(() => {\n isRightDoubleTouchedRef.current = isRightDoubleTouched;\n }, [isRightDoubleTouched]);\n\n useEffect(() => {\n isLeftDoubleTouchedRef.current = isLeftDoubleTouched;\n }, [isLeftDoubleTouched]);\n\n useEffect(() => {\n let shouldInActiveElements = false;\n\n const handlePointerMove = (event: any) => {\n const { activeElements, isEnded } = store.getState().controller;\n if (isEnded) dispatch(setActiveElements(true));\n else if (event.pointerType === \"mouse\") {\n clearTimeout(timeoutRef.current);\n if (!activeElements) dispatch(setActiveElements(true));\n else if (\n [\n \"player-tag\",\n \"main-content\",\n \"player-controllbar\",\n \"video-opacity\",\n \"playerElements\",\n \"touchBackward\",\n \"touchForward\",\n \"backward\",\n \"forward\",\n ].includes(event.target.id)\n )\n shouldInActiveElements = true;\n timeoutRef.current = setTimeout(() => {\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\n const { play } = store.getState().controller;\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover && play && shouldInActiveElements)\n dispatch(setActiveElements(false));\n }, activeElementsTime);\n }\n };\n\n const handleTouchStart = (event: any) => {\n setTimeout(() => {\n const { activeElements, isEnded, firstPlay } = store.getState().controller;\n clearTimeout(timeoutRef.current);\n if (isEnded) return dispatch(setActiveElements(true));\n if (isTouchScreen() && !firstPlay && !isRightDoubleTouchedRef.current && !isLeftDoubleTouchedRef.current) {\n if (\n [\"player-tag\", \"main-content\", \"video-opacity\", \"touchBackward\", \"touchForward\", \"backward\", \"forward\"].includes(event.target.id) ||\n checkParentTarget(event, \"playerElements\")\n ) {\n // dispatch(setActiveElements(!activeElements));\n timeoutRef.current = setTimeout(() => {\n const { play } = store.getState().controller;\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover && play) dispatch(setActiveElements(false));\n }, activeElementsTime);\n } else {\n timeoutRef.current = setTimeout(() => {\n const { play } = store.getState().controller;\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover && play) dispatch(setActiveElements(false));\n }, activeElementsTime);\n }\n }\n }, 200);\n };\n\n const handleTouchMove = () => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n const { activeElements, isEnded, play } = store.getState().controller;\n const { settingPopover, speedPopover, qualityLevelsPopover } = store.getState().popovers;\n if (isEnded) dispatch(setActiveElements(true));\n else if (!settingPopover && !speedPopover && !qualityLevelsPopover && activeElements && !isEnded && play) dispatch(setActiveElements(false));\n }, activeElementsTime);\n };\n\n document.getElementById(\"video-area\")!.addEventListener(\"touchstart\", handleTouchStart);\n document.getElementById(\"video-area\")!.addEventListener(\"touchmove\", handleTouchMove);\n document.getElementById(\"video-area\")!.addEventListener(\"pointermove\", handlePointerMove);\n\n return () => {\n const videoArea = document.getElementById(\"video-area\")!;\n if (videoArea) {\n videoArea.removeEventListener(\"touchstart\", handleTouchStart);\n videoArea.removeEventListener(\"touchmove\", handleTouchMove);\n videoArea.removeEventListener(\"pointermove\", handlePointerMove);\n }\n };\n }, [activeElements, isRightDoubleTouched, isLeftDoubleTouched]);\n\n useEffect(() => {\n let timeout: any;\n if (!play) dispatch(setActiveElements(true));\n else timeout = setTimeout(() => dispatch(setActiveElements(false)), activeElementsTime);\n return () => {\n if (timeout) clearTimeout(timeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [play]);\n};\n\nexport default useActiveInActive;\n","import { useEffect } from \"react\";\nimport { handleVideoElementSizeInfo } from \"../redux/actions/controller.actions\";\nimport { useAppSelector } from \"../redux/hooks\";\nimport { isTouchScreen } from \"../helpers\";\nimport { shallowEqual } from \"react-redux\";\nimport { mainPlayerVideoTag } from \"../constants\";\n\nconst useHandleResize = () => {\n\n const { firstPlay, isFullScreen } = useAppSelector(({ controller: { firstPlay, isFullScreen } }) => ({firstPlay,isFullScreen,}),shallowEqual);\n\n useEffect(() => {\n if (mainPlayerVideoTag()) {\n let timeout: any;\n const handleResize = () => {\n timeout = setTimeout(\n () => {\n handleVideoElementSizeInfo();\n },\n isTouchScreen() ? 0 : 300\n );\n };\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n clearTimeout(timeout);\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [firstPlay, isFullScreen, mainPlayerVideoTag()]);\n}\n\nexport default useHandleResize;","import { ICloseIconProps } from \"../../helpers/interfaces/interfaces\";\n\nconst CloseIcon = ({ className, onClick }: ICloseIconProps) => {\n return (\n <svg\n className={className}\n onClick={(e) => {\n e.stopPropagation();\n onClick?.();\n }}\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_372_39317)\">\n <path\n d=\"M10.649 9.01462L17.658 2.00555C18.1141 1.54963 18.1141 0.812452 17.658 0.356588C17.2021 -0.0993313 16.4649 -0.0993313 16.009 0.356588L8.99992 7.3656L1.99107 0.356588C1.53493 -0.0993313 0.798022 -0.0993313 0.342103 0.356588C-0.114034 0.812507 -0.114034 1.54963 0.342103 2.00555L7.3509 9.01462L0.342158 16.0236C-0.11398 16.4796 -0.11398 17.2167 0.342158 17.6726C0.450304 17.7811 0.578815 17.8671 0.720306 17.9257C0.861797 17.9843 1.01348 18.0144 1.16664 18.0143C1.46512 18.0143 1.76371 17.9 1.99112 17.6726L8.99992 10.6636L16.009 17.6726C16.1172 17.781 16.2457 17.867 16.3872 17.9257C16.5287 17.9843 16.6804 18.0144 16.8335 18.0143C17.132 18.0143 17.4306 17.9 17.658 17.6726C18.1141 17.2167 18.1141 16.4796 17.658 16.0236L10.649 9.01462Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_372_39317\">\n <rect width=\"18\" height=\"18\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport default CloseIcon;\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useDoubleTap } from \"use-double-tap\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { IBackwardForwardProps } from \"../../../helpers/interfaces/interfaces\";\r\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport { handleBackwardForward } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { handleRippleCircle, styleMerge, tw } from \"../../../helpers/helpers\";\r\nimport { mainPlayerVideoTag } from \"../../../helpers/constants\";\r\nimport useKeyPress from \"../../../helpers/hooks/useKeyPress\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport Image from \"next/image\";\r\n\r\nconst hideTime = 1000;\r\nconst jump = 10;\r\nconst initialJump = conditions(ConditionName.isTouchScreen) ? jump : 0;\r\n\r\nconst BackwardForward = ({ type, isRightForward, isLeftBackward, setIsRightForward, setIsLeftBackward }: IBackwardForwardProps) => {\r\n const [backwardForwardCount, setBackwardForwardCount] = useState<number>(initialJump);\r\n const [hide, setHide] = useState<boolean>(false);\r\n\r\n const backwardForwardCountRef = useRef<number>(backwardForwardCount);\r\n const timeoutRef = useRef<any>(null);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n useAppSelector(({ controller: { currentTime, duration } }) => ({ currentTime, duration }), shallowEqual);\r\n\r\n const { videoElementSizeInfo } = useAppSelector(\r\n ({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }),\r\n shallowEqual\r\n );\r\n\r\n const isRight = [\"touchForward\", \"forward\"];\r\n const isLeft = [\"touchBackward\", \"backward\"];\r\n\r\n useEffect(() => {\r\n backwardForwardCountRef.current = backwardForwardCount;\r\n }, [backwardForwardCount]);\r\n\r\n let doubleTouch: any = undefined;\r\n\r\n doubleTouch = useDoubleTap((event) => {\r\n if ([\"touchBackward\", \"touchForward\"].includes(type)) {\r\n event.stopPropagation();\r\n if (type === \"touchBackward\" && setIsLeftBackward) {\r\n setIsLeftBackward(true);\r\n dispatch(setActiveElements(false));\r\n } else if (type === \"touchForward\" && setIsRightForward) {\r\n setIsRightForward(true);\r\n dispatch(setActiveElements(false));\r\n }\r\n clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => setHide(true), hideTime);\r\n }\r\n }, 200);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (hide) {\r\n setHide(false);\r\n if (isRightForward && setIsRightForward) {\r\n setIsRightForward(false);\r\n if (mainPlayerVideoTag().duration - mainPlayerVideoTag().currentTime <= backwardForwardCountRef.current)\r\n handleBackwardForward(type, mainPlayerVideoTag().duration);\r\n else handleBackwardForward(type, backwardForwardCountRef.current);\r\n setBackwardForwardCount(initialJump);\r\n } else if (isLeftBackward && setIsLeftBackward) {\r\n setIsLeftBackward(false);\r\n if (mainPlayerVideoTag().currentTime <= backwardForwardCountRef.current) handleBackwardForward(type, 0);\r\n else handleBackwardForward(type, backwardForwardCountRef.current);\r\n setBackwardForwardCount(initialJump);\r\n }\r\n }\r\n }, [hide, type]);\r\n\r\n const handleTouchStart = (event: any) => {\r\n setBackwardForwardCount((prev) => prev + jump);\r\n if (conditions(ConditionName.isTouchScreenLandscape)) handleRippleCircle(event, type);\r\n clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => setHide(true), hideTime);\r\n };\r\n\r\n useKeyPress(\"ArrowRight\", (event: any) => {\r\n if (conditions(ConditionName.isPressKeyArrowRight) && type === \"forward\") {\r\n event.stopPropagation();\r\n setBackwardForwardCount((prev) => prev + jump);\r\n dispatch(setActiveElements(true));\r\n if (setIsRightForward) setIsRightForward(true);\r\n\r\n clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => setHide(true), hideTime);\r\n }\r\n });\r\n\r\n useKeyPress(\"ArrowLeft\", (event: any) => {\r\n if (conditions(ConditionName.isPressKeyArrowLeft) && type === \"backward\") {\r\n event.stopPropagation();\r\n setBackwardForwardCount((prev) => prev + jump);\r\n dispatch(setActiveElements(true));\r\n if (setIsLeftBackward) setIsLeftBackward(true);\r\n\r\n clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => setHide(true), hideTime);\r\n }\r\n });\r\n\r\n if (type)\r\n return (\r\n <div\r\n id={type}\r\n className={`pl-relative pl-flex pl-flex-col pl-justify-center ${conditions(ConditionName.isTouchScreen) ? \"pl-px-[24px]\" : \"pl-px-[48px]\"} ${\r\n isLeft.includes(type) ? \"pl-items-end\" : \"pl-items-start\"\r\n } pl-gap-2 pl-overflow-hidden`}\r\n style={{ width: videoElementSizeInfo.width, height: videoElementSizeInfo.width }}\r\n {...doubleTouch}\r\n >\r\n {(isRightForward || isLeftBackward) && (\r\n <div\r\n className={tw(`pl-rounded-full pl-flex pl-justify-center pl-items-center ${isLeft.includes(type) ? \"\" : \"pl-flex-row-reverse\"}`, {\r\n desktop: \"pl-gap-2\",\r\n desktopFullScreen: \"pl-gap-1\",\r\n touch: \"pl-gap-1\",\r\n touchFullScreen: \"pl-gap-1.5\",\r\n })}\r\n onTouchStart={conditions(ConditionName.isTouchScreen) ? handleTouchStart : undefined}\r\n >\r\n <p\r\n className={tw(`pl-text-center pl-text-white `, {\r\n desktop: \"pl-text-[16px] pl-font-extrabold pl-mt-0.5\",\r\n desktopFullScreen: \"pl-text-[32px] pl-font-bold\",\r\n touch: \"pl-text-base pl-font-extrabold pl-mt-0.5\",\r\n touchFullScreen: \"pl-text-[20px] pl-font-bold\",\r\n })}\r\n >\r\n {backwardForwardCount}\r\n {isLeft.includes(type) ? \" - \" : \" + \"}\r\n </p>\r\n <div className={`pl-flex pl-justify-center pl-items-center`}>\r\n <Image\r\n src={IMAGES.chevronLeft}\r\n width={styleMerge({ desktop: 20, desktopFullScreen: 40, touch: 16, touchFullScreen: 20 })}\r\n height={styleMerge({ desktop: 20, desktopFullScreen: 40, touch: 16, touchFullScreen: 20 })}\r\n alt=\"\"\r\n className={` pl-object-cover ${isLeft.includes(type) ? \"\" : \"pl-rotate-180\"}`}\r\n />\r\n\r\n {/* <Image\r\n alt=\"arrow-icon\"\r\n src={IMAGES.arrowLeft}\r\n className={`pl-shrink-0 ${isLeft.includes(type) && \"pl-rotate-180\"}`}\r\n width={conditions(ConditionName.isFullScreen) ? 22 : 12}\r\n height={conditions(ConditionName.isFullScreen) ? 22 : 12}\r\n />\r\n <Image\r\n alt=\"arrow-icon\"\r\n src={IMAGES.arrowLeft}\r\n className={`pl-shrink-0 ${isLeft.includes(type) && \"pl-rotate-180\"}`}\r\n width={conditions(ConditionName.isFullScreen) ? 22 : 12}\r\n height={conditions(ConditionName.isFullScreen) ? 22 : 12}\r\n />\r\n <Image\r\n alt=\"arrow-icon\"\r\n src={IMAGES.arrowLeft}\r\n className={`pl-shrink-0 ${isLeft.includes(type) && \"pl-rotate-180\"}`}\r\n width={conditions(ConditionName.isFullScreen) ? 22 : 12}\r\n height={conditions(ConditionName.isFullScreen) ? 22 : 12}\r\n /> */}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BackwardForward;\r\n","\"use client\";\n\nimport { MouseEvent, useState } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport Header from \"../header/header\";\nimport Main from \"../main/main\";\nimport Footer from \"../footer/footer\";\nimport VideoTag from \"../videoTag/videoTag\";\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName, zIndex } from \"../../../helpers/interfaces/enums\";\nimport {\n firstUnMuteHandler,\n handleChangeSoundVolume,\n handleDoubleClick,\n handleFullScreen,\n handlePlayPause,\n} from \"../../../helpers/redux/actions/controller.actions\";\nimport useFullScreen from \"../../../helpers/hooks/useFullScreen\";\nimport useActiveInActive from \"../../../helpers/hooks/useActiveInActive\";\nimport dynamic from \"next/dynamic\";\nimport useHandleResize from \"../../../helpers/hooks/useHandleResize\";\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\nimport { styleMerge, tw } from \"../../../helpers/helpers\";\nimport SoundVolumeAlert from \"../soundVolumeAlert/SoundVolumeAlert\";\nimport CloseIcon from \"../../icon-components/closeIcon\";\nimport Settings from \"../settings/settings\";\nimport SubtitleIcon from \"../subtitles/subtitleIcon\";\n\n// const TouchVolumeBrightness = dynamic(() => import(\"../touchVolumeBrightness/touchVolumeBrightness\"));\nconst BackwardForward = dynamic(() => import(\"../backwardForward/backwardForward\"));\n\nconst VideoArea = () => {\n const [isRightForward, setIsRightForward] = useState<boolean>(false);\n const [isLeftBackward, setIsLeftBackward] = useState<boolean>(false);\n\n const dispatch = useAppDispatch();\n\n useAppSelector(\n ({ videoData: { details, params, videoElementSizeInfo } }) => ({\n details,\n params,\n videoElementSizeInfo,\n }),\n shallowEqual,\n );\n\n const { firstMute, firstPlay, activeElements } = useAppSelector(\n ({ controller: { firstPlay, isFullScreen, isLoading, canPlayVideo, firstMute, activeElements } }) => ({\n firstPlay,\n isFullScreen,\n isLoading,\n canPlayVideo,\n firstMute,\n activeElements,\n }),\n shallowEqual,\n );\n\n useFullScreen();\n useHandleResize();\n useActiveInActive(isRightForward, isLeftBackward);\n\n return (\n <div\n id=\"video-area\"\n style={{ zIndex: conditions(ConditionName.isFullScreen) ? zIndex.videoPlayerInFullScreen : \"unset\" }}\n onClick={(event) => {\n if (isRightForward || isLeftBackward) return;\n\n const popoverElement = document.getElementById(\"popover-content\");\n if (popoverElement) return;\n\n if (firstMute) {\n handleChangeSoundVolume(50);\n firstUnMuteHandler();\n return;\n }\n\n if (conditions(ConditionName.isTouchScreen)) firstPlay ? handlePlayPause(event) : dispatch(setActiveElements(!activeElements));\n else handlePlayPause(event);\n }}\n onDoubleClick={(event: MouseEvent<HTMLDivElement>) => handleDoubleClick(event)}\n className={tw(\n `pl-bg-contain pl-bg-center pl-w-full pl-relative pl-bg-no-repeat pl-h-full pl-max-h-screen pl-aspect-video pl-flex pl-items-center ${\n !conditions(ConditionName.isActiveElements) && \"pl-cursor-none\"\n }`,\n {\n desktop: \"pl-rounded-[12px] pl-overflow-hidden\",\n touchFullScreen: \"pl-fixed pl-w-screen dvh\",\n desktopFullScreen: \"pl-fixed pl-w-screen dvh\",\n },\n )}\n >\n {conditions(ConditionName.isTouchScreen) && (\n <div\n id=\"video-opacity\"\n style={{ zIndex: zIndex.videoOpacity }}\n className={`pl-absolute pl-bg-black/20 pl-size-full pl-aspect-video pl-transition-all pl-duration-500 ${\n conditions(ConditionName.isActiveElements) ? \"pl-opacity-100 pl-visible\" : \"pl-opacity-0 pl-invisible\"\n } `}\n />\n )}\n\n {conditions(ConditionName.showSoundVolumeAlert) && (\n <SoundVolumeAlert\n className={tw(\"\", { touch: \"pl-absolute pl-z-10 pl-top-[12px] pl-left-[16px]\", touchFullScreen: \"pl-top-[16px] pl-left-[24px]\" })}\n />\n )}\n\n {!firstPlay && conditions(ConditionName.isActiveElements) && (\n <div\n className={tw(\"pl-absolute pl-z-10 pl-flex pl-items-center pl-justify-center pl-gap-4\", {\n touch: \"pl-top-3 pl-right-4\",\n touchFullScreen: \"pl-top-5 pl-right-6\",\n })}\n >\n {conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isFullScreen) && (\n <CloseIcon onClick={handleFullScreen} className=\"pl-text-white pl-size-[18px]\" />\n )}\n\n {conditions(ConditionName.showSettingIcon) && conditions(ConditionName.isTouchScreen) && (\n <Settings\n normalStyle\n width={styleMerge({ desktop: 16, desktopFullScreen: 24, touch: 20, touchFullScreen: 24 })}\n height={styleMerge({ desktop: 16, desktopFullScreen: 24, touch: 20, touchFullScreen: 24 })}\n />\n )}\n\n {conditions(ConditionName.isTouchScreen) && (\n <SubtitleIcon\n normalStyle\n width={styleMerge({ desktop: 16, desktopFullScreen: 24, touch: 20, touchFullScreen: 24 })}\n height={styleMerge({ desktop: 16, desktopFullScreen: 24, touch: 20, touchFullScreen: 24 })}\n />\n )}\n </div>\n )}\n\n {/* {conditions(ConditionName.showTouchVolumeBrightness) && <TouchVolumeBrightness />} */}\n {conditions(ConditionName.showBackwardForward) && (\n <div\n className={`pl-absolute pl-top-0 pl-right-0 pl-w-full pl-h-full pl-overflow-hidden pl-flex pl-items-center`}\n style={{\n zIndex: isLeftBackward || isRightForward ? zIndex.backwardForwardActive : zIndex.backwardForwardInActive,\n }}\n >\n <BackwardForward\n type={conditions(ConditionName.isTouchScreen) ? \"touchForward\" : \"forward\"}\n isRightForward={isRightForward}\n setIsRightForward={setIsRightForward}\n />\n\n <BackwardForward\n type={conditions(ConditionName.isTouchScreen) ? \"touchBackward\" : \"backward\"}\n isLeftBackward={isLeftBackward}\n setIsLeftBackward={setIsLeftBackward}\n />\n </div>\n )}\n <VideoTag />\n <div id=\"playerElements\" className={`pl-absolute pl-top-0 pl-right-0 pl-w-full pl-h-full`}>\n <div className={`pl-flex pl-flex-col pl-justify-between pl-w-full pl-h-full`}>\n {conditions(ConditionName.showHeader) && <Header />}\n {conditions(ConditionName.showMain) && <Main />}\n {conditions(ConditionName.showFooter) && <Footer />}\n </div>\n </div>\n </div>\n );\n};\n\nexport default VideoArea;\n","\"use client\";\n\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport VideoArea from \"../../custom-components/videoArea/videoArea\";\n\nconst StaticPlayer = () => {\n return (\n <div\n className={`pl-w-full pl-aspect-video ${\n !conditions(ConditionName.isTouchScreen) &&\n !conditions(ConditionName.isFullScreen) &&\n \"!pl-rounded-[12px]\"\n }`}\n >\n <VideoArea />\n </div>\n );\n};\n\nexport default StaticPlayer;\n","import { useEffect } from \"react\";\nimport { conditions } from \"../../conditions/conditions\";\nimport { shallowEqual } from \"react-redux\";\nimport { useAppSelector } from \"../../redux/hooks\";\nimport { ConditionName } from \"../../interfaces/enums\";\nimport { getVodDetails } from \"../../redux/actions/videoData.actions\";\n\nconst useGetDetails = () => {\n const { params } = useAppSelector(({ videoData: { params } }) => ({ params }), shallowEqual);\n useAppSelector(({ controller: { isEnded } }) => ({ isEnded }), shallowEqual);\n\n useEffect(() => {\n if (conditions(ConditionName.getDetails)) getVodDetails();\n }, [params.id, params.type]);\n};\n\nexport default useGetDetails;\n","import useGetDetails from \"./useGetDetails\";\nimport useGetMarkers from \"./useGetMarkers\";\n\nconst useGetData = () => {\n useGetDetails();\n // useGetMarkers();\n};\n\nexport default useGetData;\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { useEffect } from \"react\";\r\nimport { useAppDispatch } from \"../../../helpers/redux/hooks\";\r\nimport { setIsLoading } from \"../../../helpers/redux/slices/controllerSlice\";\r\n\r\nconst NotActive = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(setIsLoading(false));\r\n }, [dispatch]);\r\n\r\n return (\r\n <div className={`pl-w-full pl-h-full pl-rounded-2xl pl-flex pl-flex-col pl-justify-center pl-select-none pl-pointer-events-none pl-items-center`}>\r\n <div className=\"pl-flex pl-justify-center\">\r\n <Image src={IMAGES.notFound} alt=\"\" width={120} height={70} />\r\n </div>\r\n <h1 className=\"pl-text-[12px] pl-font-medium pl-text-white pl-mt-4 pl-mb-2\">ویدیویی برای نمایش وجود نداره</h1>\r\n <p className=\"pl-text-[12px] pl-font-medium pl-text-white\">می‌تونید ویدیوهای مشابه با اون رو مشاهده کنید.</p>\r\n </div>\r\n );\r\n};\r\n\r\nexport default NotActive;\r\n","\"use client\";\n\nimport { shallowEqual } from \"react-redux\";\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\nimport useGetData from \"../../../helpers/hooks/useGetData/useGetData\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport { handleApplyContinuousPlayback } from \"../../../helpers/redux/actions/user.actions\";\nimport dynamic from \"next/dynamic\";\nimport { useEffect } from \"react\";\n\nconst VideoArea = dynamic(() => import(\"../../custom-components/videoArea/videoArea\"));\nconst NotActive = dynamic(() => import(\"../../custom-components/notActive/notActive\"));\n\nconst VodPlayer = () => {\n useAppSelector(\n ({ videoData: { params, details, isFetchDetails, isValidAddress } }) => ({ params, details, isFetchDetails, isValidAddress }),\n shallowEqual,\n );\n\n useGetData();\n\n useEffect(() => {\n handleApplyContinuousPlayback();\n }, []);\n\n if (conditions(ConditionName.isFetchDetails))\n return (\n <>\n {conditions(ConditionName.isValidAddress) ? (\n <div\n className={`pl-max-h-[100dvh] pl-bg-dark-1 ${\n !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.isFullScreen) && \"!pl-rounded-[12px]\"\n }`}\n >\n <VideoArea />\n </div>\n ) : (\n <div className={`pl-w-full pl-aspect-video`}>\n <NotActive />\n </div>\n )}\n </>\n );\n};\n\nexport default VodPlayer;\n","import { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\n\nconst Skeleton = () => {\n return (\n <div\n role=\"status\"\n className={`pl-size-full pl-flex pl-items-center pl-justify-center pl-bg-gray-300 ${\n !conditions(ConditionName.isTouchScreen) && \"pl-rounded-lg\"\n } pl-animate-pulse dark:pl-bg-gray-700`}\n >\n <span className=\"pl-sr-only\">Loading...</span>\n </div>\n );\n};\n\nexport default Skeleton;\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport Skeleton from \"../../custom-components/skeleton/Skeleton\";\r\nimport FullScreen from \"../../custom-components/fullScreen/fullScreen\";\r\nimport SoundVolume from \"../../custom-components/soundVolume/soundVolume\";\r\nimport { secondsToHMS } from \"../../../helpers/helpers\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { buildStyles, CircularProgressbarWithChildren } from \"react-circular-progressbar\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport Image from \"next/image\";\r\nimport useFullScreen from \"../../../helpers/hooks/useFullScreen\";\r\n\r\nconst VideoHighLighter = () => {\r\n const { params } = useAppSelector(({ videoData: { params } }) => ({ params }), shallowEqual);\r\n useFullScreen();\r\n\r\n return (\r\n <div\r\n id=\"video-area\"\r\n className={`pl-relative pl-rounded-[12px] pl-w-full pl-h-full pl-aspect-video !pl-overflow-hidden ${\r\n conditions(ConditionName.isTouchScreen) && \"!pl-rounded-none\"\r\n } ${conditions(ConditionName.isFullScreen) && \"!pl-overflow-hidden pl-fixed pl-top-0 pl-right-0 !pl-w-screen !pl-h-screen !pl-rounded-none\"}`}\r\n >\r\n {params.vhl_status && params.vhl_status !== \"skeleton\" && (\r\n <div className=\"pl-flex pl-flex-col pl-justify-between pl-gap-2 pl-size-full\">\r\n {params.banner && (\r\n <div className=\"pl-w-full pl-aspect-video pl-absolute\">\r\n <Image src={params.banner} alt=\"banner\" fill style={{ objectFit: \"cover\" }} className=\"pl-w-full pl-aspect-video\" />\r\n <div className=\"pl-absolute pl-inset-0 pl-bg-black/50\" />\r\n </div>\r\n )}\r\n <div />\r\n {params.vhl_status === \"download_start\" && (\r\n <>\r\n <div className=\"pl-relative pl-z-[1000000] pl-bg-Common-white-overlay-1 pl-w-full pl-max-w-[198px] tablet:!pl-max-w-[305px] desktop:!pl-max-w-[198px] pl-mx-auto pl-py-2 tablet:pl-py-[12.32px] desktop:pl-py-2 pl-rounded-[8px] pl-flex pl-flex-col pl-items-center pl-gap-2 tablet:pl-gap-[12.32px] desktop:pl-gap-2\">\r\n <svg style={{ height: 0, position: \"absolute\" }}>\r\n <defs>\r\n <linearGradient id=\"gradientColor\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\r\n <stop offset=\"0%\" stopColor=\"#FF649D\" />\r\n <stop offset=\"100%\" stopColor=\"#A50C4B\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n <CircularProgressbarWithChildren\r\n value={params.vhl_progress!}\r\n className=\"pl-size-[50px]\"\r\n styles={buildStyles({\r\n trailColor: \"rgba(0, 0, 0, 0.1)\",\r\n pathColor: \"url(#gradientColor)\",\r\n })}\r\n >\r\n <p className=\"pl-text-text-primary pl-text-[14px] pl-font-medium\">%{params.vhl_progress}</p>\r\n </CircularProgressbarWithChildren>\r\n <p className=\"pl-text-text-primary pl-text-[10px] pl-font-normal\">{params.vhl_statusText}</p>\r\n </div>\r\n </>\r\n )}\r\n {params.vhl_status === \"download_error\" && (\r\n <div className=\"pl-relative pl-z-[1000000] pl-bg-Common-white-overlay-1 pl-w-full pl-max-w-[198px] pl-mx-auto pl-py-2 pl-rounded-[8px] pl-flex pl-flex-col pl-items-center pl-gap-2\">\r\n <Image alt=\"info-circle-icon\" src={IMAGES.infoCircle} width={32} height={32} />\r\n <p className=\"pl-text-[10px] pl-font-normal pl-text-text-primary\">{params.vhl_statusText}</p>\r\n <button className=\"pl-flex pl-items-center pl-gap-2\" onClick={() => params.vhl_onRetry!()}>\r\n <Image alt=\"rotate-red-icon\" src={IMAGES.rotateRed} width={14} height={14} />\r\n <span className=\"pl-text-primary pl-text-[10px] pl-font-normal\">تلاش دوباره</span>\r\n </button>\r\n </div>\r\n )}\r\n <div\r\n className={`pl-flex ${\r\n !conditions(ConditionName.isTouchScreenPortrait)\r\n ? `pl-flex-col-reverse pl-mb-3 ${conditions(ConditionName.isFullScreen) && \"pl-mb-8\"}`\r\n : \"pl-flex-col\"\r\n } pl-gap-[14.58px]`}\r\n >\r\n <div className={`pl-flex pl-items-center pl-justify-between ${conditions(ConditionName.isFullScreen) ? \"pl-mx-8\" : \"pl-mx-[14.58px]\"}`}>\r\n <FullScreen width={20} height={20} />\r\n <div className={`pl-flex pl-items-center pl-gap-[14.58px]`}>\r\n {params.vhl_duration && (\r\n <div className=\"pl-text-Common-white pl-text-[10.93px] pl-font-normal pl-relative\">\r\n <span>{secondsToHMS(0)}</span>\r\n <span>/</span>\r\n <span>{secondsToHMS(params.vhl_duration)}</span>\r\n </div>\r\n )}\r\n <SoundVolume width={20} height={20} />\r\n </div>\r\n </div>\r\n <div className=\"pl-w-full pl-h-[3.64px] pl-bg-gray-highLight pl-animate-pulse\" />\r\n </div>\r\n </div>\r\n )}\r\n {params.vhl_status === \"skeleton\" && <Skeleton />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default VideoHighLighter;\r\n","export { VideoPlayerLibrary } from \"./videoPlayerLibrary\";\nexport { MiniPlayerLibrary } from \"./miniPlayerLibrary\";\n","\"use client\";\n\nimport { Provider } from \"react-redux\";\nimport { IParams } from \"./helpers/interfaces/interfaces\";\nimport store from \"./helpers/redux/store\";\nimport VideoPlayer from \"./components/videoPlayer/videoPlayer\";\nimport ErrorBoundary from \"./helpers/errorBoundary/errorBoundary\";\nimport { conditions } from \"./helpers/conditions/conditions\";\nimport { ConditionName } from \"./helpers/interfaces/enums\";\nimport { useEffect, useState } from \"react\";\n\nexport const VideoPlayerLibrary = ({ params }: { params: IParams }) => {\n const [isClient, setIsClient] = useState(false);\n\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n if (!isClient) return null;\n\n return (\n <Provider store={store}>\n <ErrorBoundary>\n <div id=\"video-player-container\" className={`${!conditions(ConditionName.isTouchScreen) && \"pl-overflow-hidden\"}`}>\n <VideoPlayer params={params} />\n </div>\n </ErrorBoundary>\n </Provider>\n );\n};\n","\"use client\";\n\nimport { conditions } from \"../../helpers/conditions/conditions\";\nimport useHandleParams from \"../../helpers/hooks/useHandleParams\";\nimport { ConditionName, zIndex } from \"../../helpers/interfaces/enums\";\nimport { IParams } from \"../../helpers/interfaces/interfaces\";\nimport { useAppDispatch, useAppSelector } from \"../../helpers/redux/hooks\";\nimport { shallowEqual } from \"react-redux\";\nimport dynamic from \"next/dynamic\";\nimport useHandleKeyPress from \"../../helpers/hooks/useHandleKeyPress\";\nimport { useEffect } from \"react\";\nimport { clearRedux, tw } from \"../../helpers/helpers\";\nimport Loader from \"../custom-components/loader/loader\";\nimport { setHiddenAd } from \"../../helpers/redux/slices/videoDataSlice\";\nimport Advertisement from \"../custom-components/advertisement/Advertisement\";\n\nconst StaticPlayer = dynamic(() => import(\"./staticPlayer/staticPlayer\"));\nconst VodPlayer = dynamic(() => import(\"./vodPlayer/vodPlayer\"));\nconst VideoHighLighter = dynamic(() => import(\"./videoHighLighter/VideoHighLighter\"));\n\ninterface IProps {\n params: IParams;\n}\n\nconst VideoPlayer = (props: IProps) => {\n const dispatch = useAppDispatch();\n const { params, isLoading, firstPlay } = useAppSelector(\n ({ videoData: { isReady, params, hiddenAd }, controller: { isLoading, firstPlay } }) => ({ isReady, params, hiddenAd, isLoading, firstPlay }),\n shallowEqual,\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (params.id && props.params.id !== params.id) {\n // if (params.type === PlayerTypes.static) {\n // mainPlayerVideoTag()?.pause();\n // mainPlayerVideoTag().removeAttribute(\"src\");\n // mainPlayerVideoTag().load();\n // }\n clearRedux();\n }\n return () => {\n clearRedux();\n };\n }, [props.params.id]);\n\n useHandleParams(props.params);\n useHandleKeyPress();\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\n\n if (props.params.vhl_status) return <VideoHighLighter />;\n if (conditions(ConditionName.hasAdvertisement))\n return (\n <Advertisement\n src={params.advertisement?.videoUrl!}\n onSkipAd={(currentTime) => {\n dispatch(setHiddenAd(true));\n if (params.advertisement?.onSkipAd) params.advertisement.onSkipAd(currentTime);\n }}\n onEndAd={(currentTime) => {\n dispatch(setHiddenAd(true));\n if (params.advertisement?.onEndAd) params.advertisement.onEndAd(currentTime);\n }}\n skipDelay={params.advertisement?.skipDelay}\n adText={params.advertisement?.adText}\n onClickAd={params.advertisement?.onClickAd}\n />\n );\n\n let element = <></>;\n if (conditions(ConditionName.isReady)) {\n element = (\n <div className={tw(\"\", { desktop: \"pl-rounded-[12px]\" })} style={{ touchAction: \"pan-y\", userSelect: \"none\" }}>\n {conditions(ConditionName.isStaticFormat) ? <StaticPlayer /> : <VodPlayer />}\n </div>\n );\n }\n\n const isShowLoader = firstPlay && isLoading;\n\n return (\n <div\n dir=\"rtl\"\n style={{ zIndex: zIndex.videoPlayerInFullScreen }}\n id=\"parent-player\"\n className={tw(`pl-relative pl-bg-black pl-w-full pl-h-full pl-aspect-video`, {\n desktop: \"pl-rounded-[12px]\",\n touch: \"\",\n desktopFullScreen: \"pl-overflow-hidden pl-fixed pl-top-0 pl-right-0 pl-w-screen pl-h-screen pl-rounded-none\",\n touchFullScreen: \"pl-overflow-hidden pl-fixed pl-top-0 pl-right-0 pl-w-screen pl-h-screen\",\n })}\n >\n {isShowLoader && (\n <div className={tw(\"pl-absolute pl-w-full pl-h-full pl-aspect-video\", { desktop: \"pl-rounded-[12px]\" })}>\n <Loader />\n </div>\n )}\n {element}\n </div>\n );\n};\n\nexport default VideoPlayer;\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { getUUID } from \"../helpers\";\nimport { useAppDispatch } from \"../redux/hooks\";\nimport { IParams } from \"../interfaces/interfaces\";\nimport {\n setIsReady,\n setPlayerParams,\n setRawSubtitles,\n} from \"../redux/slices/videoDataSlice\";\nimport { PlayerTypes } from \"../interfaces/enums\";\nimport { filterValidSubtitles } from \"../redux/actions/videoData.actions\";\n\nconst useHandleParams = (query: any) => {\n const dispatch = useAppDispatch();\n\n let queryParams: IParams = {};\n\n const handleSetParamsInRedux = () => {\n dispatch(setPlayerParams(queryParams));\n dispatch(setIsReady(true));\n };\n\n const handleAddUUID = () => {\n if (!!query.uuid) {\n localStorage.setItem(\"hamrahiUUID\", query.uuid!);\n queryParams.uuid = query.uuid;\n }\n };\n\n const handleVodParams = () => {\n queryParams = {\n provider: \"cafevdo\",\n ...query,\n subtitles: undefined,\n };\n };\n\n const handleStaticParams = async () => {\n queryParams = {\n uuid: getUUID(),\n provider: \"cafevdo\",\n ...query,\n subtitles: undefined,\n id: query.id ? window.atob(query.id) : undefined,\n banner:\n query.banner && query.banner !== \"undefined\" ? query.banner : undefined,\n };\n };\n\n const handleSubtitles = async () => {\n const validSubtitles = await filterValidSubtitles(query.subtitles);\n dispatch(setRawSubtitles(validSubtitles));\n };\n\n const handleParams = async () => {\n queryParams = {};\n if (Object.keys(query).includes(\"type\")) {\n if (String(query.type) === PlayerTypes.vod) handleVodParams();\n else if (String(query.type) === PlayerTypes.static) handleStaticParams();\n if (query.subtitles && query.subtitles.length) handleSubtitles();\n handleAddUUID();\n handleSetParamsInRedux();\n }\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n handleParams();\n }, [query]);\n};\n\nexport default useHandleParams;\n","import { conditions } from \"../conditions/conditions\";\nimport { ConditionName } from \"../interfaces/enums\";\nimport { handleBackwardForward, handleChangeSoundVolume, handleFullScreen, handlePlayPause } from \"../redux/actions/controller.actions\";\nimport store from \"../redux/store\";\nimport useKeyPress from \"./useKeyPress\";\n\nconst useHandleKeyPress = () => {\n useKeyPress(\"Space\", (event: any) => {\n if (conditions(ConditionName.isPressKeySpace) && !conditions(ConditionName.isFirstMutePlay)) handlePlayPause(event);\n });\n useKeyPress(\"KeyK\", (event: any) => {\n if (conditions(ConditionName.isPressKeySpace) && !conditions(ConditionName.isFirstMutePlay)) handlePlayPause(event);\n });\n // useKeyPress(\"ArrowRight\", (event: any) => {\n // if (conditions(ConditionName.isPressKeyArrowRight)) handleBackwardForward(\"forward\", 15, event);\n // });\n // useKeyPress(\"ArrowLeft\", (event: any) => {\n // if (conditions(ConditionName.isPressKeyArrowLeft)) handleBackwardForward(\"backward\", 15, event);\n // });\n // useKeyPress(\"KeyI\", () => {\n // if (conditions(ConditionName.isPressKeyI)) mainPlayerVideoTag().requestPictureInPicture();\n // });\n useKeyPress(\"KeyF\", () => {\n if (conditions(ConditionName.isPressKeyF)) handleFullScreen();\n });\n useKeyPress(\"KeyM\", () => {\n if (conditions(ConditionName.isPressKeyM)) {\n const { settings } = store.getState().user;\n handleChangeSoundVolume(settings.volume ? 0 : 50);\n }\n });\n // useKeyPress(\"KeyC\", () => {\n // if (conditions(ConditionName.isPressKeyC)) handleSubtitle();\n // });\n};\n\nexport default useHandleKeyPress;\n","\"use client\";\r\n\r\nimport { useRef, useState, useEffect } from \"react\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport SoundVolume from \"../soundVolume/soundVolume\";\r\nimport FullScreen from \"../fullScreen/fullScreen\";\r\nimport PlayPause from \"../playPause/playPause\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport {\r\n firstUnMuteHandler,\r\n handleChangeSoundVolume,\r\n handleFullScreen,\r\n handleLockOrientation,\r\n} from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { setPlay } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport useKeyPress from \"../../../helpers/hooks/useKeyPress\";\r\nimport store from \"../../../helpers/redux/store\";\r\nimport SoundVolumeAlert from \"../soundVolumeAlert/SoundVolumeAlert\";\r\nimport { setupAutoplayBehavior, styleMerge, tw } from \"../../../helpers/helpers\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport Image from \"next/image\";\r\n\r\ninterface AdvertisementProps {\r\n src: string;\r\n onEndAd?: (currentTime: number) => void;\r\n onSkipAd?: (currentTime: number) => void;\r\n skipDelay?: number;\r\n adText?: string;\r\n onClickAd?: (currentTime: number) => void;\r\n}\r\n\r\nconst Advertisement: React.FC<AdvertisementProps> = ({ src, onEndAd, onSkipAd, skipDelay, adText = \"اطلاعات بیشتر\", onClickAd }) => {\r\n const dispatch = useAppDispatch();\r\n const containerRef = useRef<HTMLDivElement | null>(null);\r\n const videoRef = useRef<HTMLVideoElement | null>(null);\r\n\r\n const { firstMute } = useAppSelector(({ controller: { firstMute } }) => ({ firstMute }), shallowEqual);\r\n\r\n const [progress, setProgress] = useState(0);\r\n const [buffered, setBuffered] = useState(0);\r\n\r\n const hasSkip = skipDelay !== undefined && skipDelay > 0;\r\n const [skipCounter, setSkipCounter] = useState<number | null>(hasSkip ? skipDelay! : null);\r\n const [isCounting, setIsCounting] = useState(false);\r\n\r\n const [currentTime, setCurrentTime] = useState(0);\r\n const [duration, setDuration] = useState(0);\r\n\r\n const [showControls, setShowControls] = useState(true);\r\n const hideControlsTimeout = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const [isPaused, setIsPaused] = useState(false);\r\n const [reveresElapsedTime, setReveresElapsedTime] = useState(false);\r\n\r\n const resetHideControlsTimer = (delay = 3000) => {\r\n if (isPaused) {\r\n setShowControls(true);\r\n return;\r\n }\r\n\r\n setShowControls(true);\r\n if (hideControlsTimeout.current) clearTimeout(hideControlsTimeout.current);\r\n hideControlsTimeout.current = setTimeout(() => {\r\n setShowControls(false);\r\n }, delay);\r\n };\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n const videoContainer = containerRef.current;\r\n if (!videoContainer) return;\r\n\r\n const mouseMoveHandler = () => resetHideControlsTimer();\r\n const touchStartHandler = () => resetHideControlsTimer();\r\n\r\n videoContainer.addEventListener(\"mousemove\", mouseMoveHandler);\r\n videoContainer.addEventListener(\"touchstart\", touchStartHandler);\r\n\r\n resetHideControlsTimer();\r\n\r\n return () => {\r\n videoContainer.removeEventListener(\"mousemove\", mouseMoveHandler);\r\n videoContainer.removeEventListener(\"touchstart\", touchStartHandler);\r\n if (hideControlsTimeout.current) clearTimeout(hideControlsTimeout.current);\r\n };\r\n }, [isPaused]);\r\n\r\n useEffect(() => {\r\n if (!hasSkip || !isCounting) return;\r\n\r\n const interval = setInterval(() => {\r\n setSkipCounter((prev) => {\r\n if (prev === null) return prev;\r\n if (prev <= 1) {\r\n clearInterval(interval);\r\n return 0;\r\n }\r\n return prev - 1;\r\n });\r\n }, 1000);\r\n\r\n return () => clearInterval(interval);\r\n }, [isCounting, hasSkip]);\r\n\r\n useEffect(() => {\r\n const video = videoRef.current;\r\n if (!video) return;\r\n\r\n const handlePlay = () => {\r\n setIsCounting(true);\r\n setIsPaused(false);\r\n resetHideControlsTimer(1000);\r\n };\r\n\r\n const handlePlaying = () => {\r\n setIsCounting(true);\r\n setIsPaused(false);\r\n };\r\n\r\n const handlePause = () => {\r\n setIsCounting(false);\r\n setIsPaused(true);\r\n setShowControls(true);\r\n if (hideControlsTimeout.current) clearTimeout(hideControlsTimeout.current);\r\n };\r\n\r\n const handleWaiting = () => setIsCounting(false);\r\n const handleError = () => setIsCounting(false);\r\n const handleLoadedMetadata = () => setDuration(video.duration);\r\n\r\n video.addEventListener(\"play\", handlePlay);\r\n video.addEventListener(\"playing\", handlePlaying);\r\n video.addEventListener(\"pause\", handlePause);\r\n video.addEventListener(\"waiting\", handleWaiting);\r\n video.addEventListener(\"error\", handleError);\r\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\r\n\r\n setupAutoplayBehavior(video);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n return () => {\r\n video.removeEventListener(\"play\", handlePlay);\r\n video.removeEventListener(\"playing\", handlePlaying);\r\n video.removeEventListener(\"pause\", handlePause);\r\n video.removeEventListener(\"waiting\", handleWaiting);\r\n video.removeEventListener(\"error\", handleError);\r\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\r\n };\r\n }, [src]);\r\n\r\n const handleTimeUpdate = () => {\r\n const video = videoRef.current;\r\n if (video?.duration) {\r\n setProgress((video.currentTime / video.duration) * 100);\r\n setCurrentTime(video.currentTime);\r\n }\r\n };\r\n\r\n const handleProgress = () => {\r\n const video = videoRef.current;\r\n if (video?.duration && video.buffered.length > 0) {\r\n setBuffered((video.buffered.end(video.buffered.length - 1) / video.duration) * 100);\r\n }\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const video = videoRef.current;\r\n if (!video) return;\r\n\r\n if (conditions(ConditionName.isTouchScreen)) {\r\n if (e.target === containerRef.current || e.target === video) {\r\n if (firstMute) {\r\n handleChangeSoundVolume(50,video);\r\n firstUnMuteHandler();\r\n return;\r\n }\r\n }\r\n resetHideControlsTimer();\r\n return;\r\n }\r\n\r\n if (e.target === containerRef.current || e.target === video) {\r\n if (firstMute) {\r\n handleChangeSoundVolume(50,video);\r\n firstUnMuteHandler();\r\n return;\r\n }\r\n\r\n if (video.paused) {\r\n video.play();\r\n dispatch(setPlay(true));\r\n } else {\r\n video.pause();\r\n dispatch(setPlay(false));\r\n }\r\n }\r\n };\r\n\r\n const handleAdClick = () => {\r\n if (onClickAd) {\r\n onClickAd(currentTime);\r\n }\r\n };\r\n\r\n const formatTime = (time: number) => {\r\n const minutes = Math.floor(time / 60)\r\n .toString()\r\n .padStart(2, \"0\");\r\n const seconds = Math.floor(time % 60)\r\n .toString()\r\n .padStart(2, \"0\");\r\n return `${minutes}:${seconds}`;\r\n };\r\n\r\n // useHandleKeyPress\r\n useKeyPress(\"Space\", () => {\r\n setIsPaused((prev) => !prev);\r\n });\r\n useKeyPress(\"KeyK\", () => {\r\n setIsPaused((prev) => !prev);\r\n });\r\n useKeyPress(\"KeyF\", () => {\r\n handleFullScreen();\r\n });\r\n useKeyPress(\"KeyM\", () => {\r\n const { settings } = store.getState().user;\r\n handleChangeSoundVolume(settings.volume ? 0 : 50,videoRef.current || undefined);\r\n });\r\n\r\n return (\r\n <div\r\n id=\"video-area\"\r\n ref={containerRef}\r\n onClick={handleClick}\r\n onDoubleClick={() => {\r\n handleFullScreen();\r\n handleLockOrientation();\r\n }}\r\n className={tw(\r\n \"pl-relative pl-bg-black pl-overflow-hidden pl-w-full pl-h-full pl-max-h-screen pl-aspect-video pl-flex pl-flex-col pl-justify-end\",\r\n { desktop: \"pl-rounded-[12px]\", desktopFullScreen: \"pl-fixed pl-w-screen pl-h-screen pl-top-0 pl-right-0 pl-rounded-none\" },\r\n )}\r\n style={{\r\n width: conditions(ConditionName.isFullScreen) ? \"100vw\" : \"auto\",\r\n zIndex: conditions(ConditionName.isFullScreen) ? 100000 : \"unset\",\r\n height: conditions(ConditionName.isFullScreen) ? \"100vh\" : \"auto\",\r\n }}\r\n >\r\n <div\r\n className=\"pl-absolute pl-top-0 pl-z-10 pl-h-[46px] pl-w-full pl-px-4 pl-flex pl-items-center pl-justify-between\"\r\n style={{ backgroundImage: \"linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0) 100%)\" }}\r\n >\r\n {onClickAd && conditions(ConditionName.isTouchScreen) && (\r\n <button\r\n onClick={handleAdClick}\r\n className={tw(\"pl-flex pl-items-center pl-justify-center pl-gap-[5px]\", {\r\n touch: \"h-[50px]\",\r\n touchFullScreen: \"\",\r\n })}\r\n >\r\n <Image src={IMAGES.export} alt=\"export button\" width={16} height={16} />\r\n <span\r\n className={tw(\"\", {\r\n touch: \"pl-text-white pl-text-[11px] pl-font-medium\",\r\n touchFullScreen: \"\",\r\n })}\r\n >\r\n {adText}\r\n </span>\r\n </button>\r\n )}\r\n\r\n {conditions(ConditionName.showSoundVolumeAlert) && <SoundVolumeAlert />}\r\n </div>\r\n\r\n <video\r\n src={src}\r\n autoPlay\r\n playsInline\r\n className=\"pl-absolute pl-size-full\"\r\n onEnded={() => onEndAd && onEndAd(currentTime)}\r\n onTimeUpdate={handleTimeUpdate}\r\n onProgress={handleProgress}\r\n id=\"player-tag\"\r\n />\r\n\r\n <div\r\n style={{\r\n backgroundBlendMode: \"multiply\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n }}\r\n className={`pl-relative pl-rounded-b-[12px] pl-z-10 pl-flex pl-flex-col ${\r\n conditions(ConditionName.isTouchScreenPortrait) && \"pl-flex-col-reverse\"\r\n } ${conditions(ConditionName.isFullScreen) ? \"pl-gap-3\" : \"pl-gap-1.5\"} pl-transition-opacity pl-duration-500 pl-ease-in-out ${\r\n showControls ? \"pl-opacity-100\" : \"pl-opacity-0 pl-pointer-events-none\"\r\n }`}\r\n >\r\n {conditions(ConditionName.isTouchScreen) && (\r\n <div className=\"pl-absolute pl-font-bold pl-text-[12px] pl-h-[14px] pl-gap-1.5 pl-left-[14px] pl-bottom-[14px] pl-flex pl-items-center pl-justify-center pl-w-fit pl-text-white\">\r\n <p className=\"pl-leading-[100%]\">{formatTime(currentTime)}</p>\r\n <Image src={IMAGES.info} alt=\"\" width={12} height={12} />\r\n <p className=\"pl-leading-[100%]\">تبلیغات</p>\r\n </div>\r\n )}\r\n\r\n <ProgressBar progress={progress} buffered={buffered} />\r\n\r\n {!conditions(ConditionName.isTouchScreen) && (\r\n <div\r\n className={`pl-flex pl-justify-between pl-items-center pl-gap-3 pl-px-4 ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-pb-3\" : \"pl-pb-1.5\"\r\n }`}\r\n >\r\n <div\r\n className={tw(`pl-rounded-full pl-flex pl-items-center pl-justify-center pl-bg-black/75`, {\r\n desktop: \"pl-p-1\",\r\n desktopFullScreen: \"pl-p-1.5\",\r\n })}\r\n >\r\n <FullScreen width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\r\n </div>\r\n\r\n <div className=\"pl-flex pl-items-center pl-gap-4\">\r\n <div\r\n onClick={() => setReveresElapsedTime((prev) => !prev)}\r\n className={tw(\r\n `pl-cursor-pointer pl-rounded-full pl-inline-flex pl-items-center pl-py-1 pl-px-1.5 pl-justify-center pl-group pl-bg-black/75`,\r\n { desktop: \"pl-min-w-[34px] pl-h-[34px]\", desktopFullScreen: \"pl-min-w-[48px] pl-h-[48px]\" },\r\n )}\r\n >\r\n <div\r\n className={tw(\r\n \" pl-flex pl-gap-0.5 pl-items-center pl-justify-center pl-rounded-full group-hover:pl-bg-[#5E5E5E] pl-transition-all\",\r\n { desktop: \"pl-h-[26px] pl-min-w-[26px] pl-px-1.5\", desktopFullScreen: \"pl-h-[36px] pl-min-w-[36px] pl-px-3\" },\r\n )}\r\n >\r\n <p\r\n className={`pl-text-white pl-flex pl-items-center pl-justify-center pl-gap-0.5 ${\r\n conditions(ConditionName.isFullScreen) ? \"pl-text-base\" : \"pl-text-[12px] pl-leading-5\"\r\n } pl-font-bold`}\r\n >\r\n <span>{formatTime(duration)}</span>\r\n <span>/</span>\r\n {reveresElapsedTime ? (\r\n <>\r\n <span>{formatTime(duration - currentTime)}</span>\r\n <span className=\"pl-mt-0.5\">-</span>\r\n </>\r\n ) : (\r\n <span>{formatTime(currentTime)}</span>\r\n )}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <SoundVolume width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\r\n <PlayPause width={conditions(ConditionName.isFullScreen) ? 24 : 16} height={conditions(ConditionName.isFullScreen) ? 24 : 16} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {onClickAd && !conditions(ConditionName.isTouchScreen) && (\r\n <button\r\n onClick={handleAdClick}\r\n className={tw(\"pl-left-[24px] pl-flex pl-items-center pl-rounded-[28px] pl-transition-colors pl-bg-[#212121]/[0.6] pl-absolute\", {\r\n desktopFullScreen: \"pl-bottom-[131px] pl-h-[56px] pl-px-5 pl-gap-2.5\",\r\n desktop: \"pl-bottom-[76px] pl-h-10 pl-px-3 pl-gap-1\",\r\n })}\r\n >\r\n <Image\r\n src={IMAGES.export}\r\n alt=\"export button\"\r\n width={styleMerge({ desktop: 16, desktopFullScreen: 32, touch: 20, touchFullScreen: 24 })}\r\n height={styleMerge({ desktop: 16, desktopFullScreen: 32, touch: 20, touchFullScreen: 24 })}\r\n />\r\n <span\r\n className={tw(\"pl-font-medium pl-text-white pl-leading-4\", {\r\n desktopFullScreen: \"pl-text-base\",\r\n desktop: \"pl-text-[13px]\",\r\n })}\r\n >\r\n {adText}\r\n </span>\r\n </button>\r\n )}\r\n\r\n {hasSkip && (\r\n <>\r\n {!conditions(ConditionName.isTouchScreen) ? (\r\n <button\r\n onClick={() => onSkipAd && onSkipAd(currentTime)}\r\n disabled={!!skipCounter && skipCounter > 0}\r\n className={tw(\"pl-right-[24px] pl-flex pl-items-center pl-rounded-[28px] pl-transition-colors pl-bg-[#212121]/[0.6] pl-absolute\", {\r\n desktopFullScreen: \"pl-bottom-[131px] pl-h-[56px] pl-px-5 pl-gap-2.5\",\r\n desktop: \"pl-bottom-[76px] pl-h-10 pl-px-3 pl-gap-1\",\r\n })}\r\n >\r\n <Image\r\n src={IMAGES.next}\r\n alt=\"next button\"\r\n width={styleMerge({ desktop: 16, desktopFullScreen: 32 })}\r\n height={styleMerge({ desktop: 16, desktopFullScreen: 32 })}\r\n />\r\n\r\n <span\r\n className={tw(\"pl-font-medium pl-text-white pl-leading-4\", {\r\n desktopFullScreen: \"pl-text-base\",\r\n desktop: \"pl-text-[13px]\",\r\n })}\r\n >\r\n {skipCounter && skipCounter > 0 ? `رد کردن (${skipCounter})` : \"رد کردن\"}\r\n </span>\r\n </button>\r\n ) : (\r\n <button\r\n onClick={() => onSkipAd && onSkipAd(currentTime)}\r\n disabled={!!skipCounter && skipCounter > 0}\r\n className={tw(\r\n `pl-absolute pl-px-2 pl-rounded-[28px] pl-bg-black/60 pl-bottom-8 pl-right-4 pl-flex pl-items-center pl-justify-center pl-h-8 pl-gap-1 ${\r\n !!skipCounter && skipCounter > 0 ? \"pl-invisible\" : \"\"\r\n }`,\r\n {\r\n touchFullScreen: \"\",\r\n touch: \"\",\r\n },\r\n )}\r\n >\r\n <Image\r\n src={IMAGES.next}\r\n alt=\"next button\"\r\n width={styleMerge({ touch: 20, touchFullScreen: 20 })}\r\n height={styleMerge({ touch: 20, touchFullScreen: 20 })}\r\n />\r\n\r\n <span\r\n className={tw(\"pl-text-[11px] pl-font-medium pl-text-white\", {\r\n touchFullScreen: \"\",\r\n touch: \"\",\r\n })}\r\n >\r\n رد کردن\r\n </span>\r\n </button>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Advertisement;\r\n\r\ntype ProgressBarProps = { progress: number; buffered: number };\r\n\r\nconst ProgressBar: React.FC<ProgressBarProps> = ({ progress, buffered }) => (\r\n <div className={tw(\"pl-w-full\", { desktop: \"pl-px-4\" })}>\r\n <div\r\n className={tw(\"pl-relative pl-overflow-hidden pl-w-full pl-bg-[#4A4A4A]\", {\r\n touch: \"pl-h-[3px]\",\r\n desktop: \"pl-h-[3px] pl-rounded-[8px]\",\r\n desktopFullScreen: \"pl-h-[6px]\",\r\n touchFullScreen: \"pl-h-[8px]\",\r\n })}\r\n >\r\n <div className=\"pl-absolute pl-top-0 pl-left-0 pl-h-full pl-bg-[#C7C7C7]\" style={{ width: `${buffered}%` }} />\r\n <div\r\n className=\"pl-absolute pl-top-0 pl-left-0 pl-h-full pl-bg-[#FFCC00] pl-transition-all pl-duration-150 pl-ease-linear\"\r\n style={{ width: `${progress}%` }}\r\n />\r\n </div>\r\n </div>\r\n);\r\n","import React from \"react\";\nimport { errorLogProvider } from \"./errorBoundaryFunctions\";\n\nclass ErrorBoundary extends React.Component {\n state = { hasError: false, error: null, errorInfo: null };\n\n static getDerivedStateFromError(error: any) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n // You can also log the error to an error reporting service\n this.setState({ error: error, errorInfo: errorInfo });\n errorLogProvider({ type: \"OTHER_ERROR\", message: error.message });\n }\n\n render() {\n if (this.state.hasError) {\n return <></>;\n }\n\n return (this.props as any).children;\n }\n}\n\nexport default ErrorBoundary;\n","\"use client\";\n\nimport { Provider } from \"react-redux\";\nimport { IMiniPlayerParams } from \"./helpers/interfaces/interfaces\";\nimport store from \"./helpers/redux/store\";\nimport { MiniPlayer } from \"./components/custom-components/miniPlayer/miniPlayer\";\nimport ErrorBoundary from \"./helpers/errorBoundary/errorBoundary\";\nimport { useEffect, useState } from \"react\";\n\nexport const MiniPlayerLibrary = ({ params }: { params: IMiniPlayerParams }) => {\n const [isClient, setIsClient] = useState(false);\n\n useEffect(() => {\n setIsClient(true);\n }, []);\n\n if (!isClient) return null;\n\n return (\n <Provider store={store}>\n <ErrorBoundary>\n <MiniPlayer params={params} />\n </ErrorBoundary>\n </Provider>\n );\n};\n","\"use client\";\r\n\r\nimport Image from \"next/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { zIndex } from \"../../../helpers/interfaces/enums\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { useEffect } from \"react\";\r\nimport { IMiniPlayerParams } from \"../../../helpers/interfaces/interfaces\";\r\nimport { setMiniPlayerInfo } from \"../../../helpers/redux/slices/miniPlayerSlice\";\r\nimport MiniPlayerPlayPause from \"../playPause/miniPlayerPlayPause\";\r\nimport VideoTag from \"./videoTag/videoTag\";\r\nimport { getVodDetails } from \"../../../helpers/redux/actions/videoData.actions\";\r\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../../helpers/constants\";\r\nimport { setCurrentTime } from \"../../../helpers/redux/slices/controllerSlice\";\r\n\r\nexport const MiniPlayer = ({ params }: { params: IMiniPlayerParams }) => {\r\n const dispatch = useAppDispatch();\r\n const details = useAppSelector((state) => state.miniPlayer.details);\r\n const miniPlayerParams = useAppSelector((state) => state.miniPlayer.params);\r\n useAppSelector((state) => state.miniPlayer.play);\r\n const mainPlayerParams = useAppSelector((state) => state.videoData.params);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n dispatch(setMiniPlayerInfo(params));\r\n }, []);\r\n\r\n const handleGetDetail = async () => await getVodDetails(params.id);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (params.id && params.type === \"vod\") handleGetDetail();\r\n }, [params.id]);\r\n\r\n return (\r\n <>\r\n {details.stream_link || (miniPlayerParams.type === \"static\" && !!miniPlayerParams.id) ? (\r\n <div style={{ zIndex: zIndex.miniPlayer }} className=\"pl-relative pl-w-full pl-h-full\">\r\n <div\r\n className={`pl-absolute pl-z-[1000] pl-top-3 pl-right-3 pl-cursor-pointer`}\r\n onClick={() => {\r\n if (mainPlayerParams.id === miniPlayerParams.id) {\r\n mainPlayerVideoTag().currentTime = miniPlayerVideoTag().currentTime;\r\n dispatch(setCurrentTime(miniPlayerVideoTag().currentTime));\r\n }\r\n localStorage.setItem(\"close-miniPlayer\", \"true\");\r\n params.onClose();\r\n }}\r\n >\r\n <Image className=\"pl-cursor-pointer\" src={IMAGES.closeSquare} alt=\"close-square\" width={16} height={16} />\r\n </div>\r\n <div className={`pl-w-full pl-absolute pl-bottom-0 pl-z-[1000000]`}>\r\n <div className=\"pl-w-full pl-flex pl-justify-center\">\r\n <MiniPlayerPlayPause />\r\n </div>\r\n </div>\r\n <VideoTag />\r\n </div>\r\n ) : (\r\n <div className=\"pl-w-full pl-h-full pl-bg-white\" />\r\n )}\r\n </>\r\n );\r\n};\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { handlePlayerPauseMiniPlayer } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport Image from \"next/image\";\r\n\r\nconst MiniPlayerPlayPause = () => {\r\n useAppSelector(({ miniPlayer: { play } }) => ({ play }), shallowEqual);\r\n\r\n return (\r\n <div\r\n className={`${!conditions(ConditionName.isTouchScreen) && \"hover:pl-scale-125\"} pl-transition-transform pl-ease-in-out pl-cursor-pointer`}\r\n onContextMenu={(event) => event.preventDefault()}\r\n >\r\n <Image\r\n alt=\"\"\r\n src={conditions(ConditionName.isPlayMiniPlayer) ? IMAGES.bigPause : IMAGES.bigPlay}\r\n width={20}\r\n height={20}\r\n onClick={(event: any) => handlePlayerPauseMiniPlayer(event)}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n className={`${conditions(ConditionName.isPlayMiniPlayer) ? \"pl-big-play-icon\" : \"pl-big-pause-icon\"}`}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default MiniPlayerPlayPause;\r\n","import { PlayerTypes } from \"../../../../helpers/interfaces/enums\";\nimport { useAppSelector } from \"../../../../helpers/redux/hooks\";\nimport MiniPlayerNonStaticVideoTag from \"./miniPlayerNonStaticVideoTag\";\nimport MiniPlayerStaticVideoTag from \"./miniPlayerStaticVideoTag\";\n\nconst VideoTag = () => {\n \n const type = useAppSelector(state => state.miniPlayer.params.type);\n return (\n <>{type === PlayerTypes.static ? <MiniPlayerStaticVideoTag /> : <MiniPlayerNonStaticVideoTag />}</>\n )\n}\n\nexport default VideoTag;","import Hls from \"hls.js\";\nimport { useEffect } from \"react\";\nimport {\n appendQueryParamsToChunksIOS,\n handleMiniPlayerHlsConfig,\n handleMiniPlayerMediaAttached,\n handleVideoError,\n} from \"../../../../helpers/redux/actions/playerCore.actions\";\nimport {\n useAppDispatch,\n useAppSelector,\n} from \"../../../../helpers/redux/hooks\";\nimport {\n mainPlayerVideoTag,\n miniPlayerVideoTag,\n} from \"../../../../helpers/constants\";\nimport {\n setClearMiniPlayerSlice,\n setPlayMiniPlayer,\n} from \"../../../../helpers/redux/slices/miniPlayerSlice\";\nimport { setPlay } from \"../../../../helpers/redux/slices/controllerSlice\";\n\nconst MiniPlayerNonStaticVideoTag = () => {\n const dispatch = useAppDispatch();\n const details = useAppSelector((state) => state.miniPlayer.details);\n const params = useAppSelector((state) => state.miniPlayer.params);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n let hls = new Hls(handleMiniPlayerHlsConfig());\n if (Hls.isSupported()) {\n hls.attachMedia(\n document.getElementById(`mini-player-video-tag`) as HTMLMediaElement\n );\n hls.on(Hls.Events.MEDIA_ATTACHED, () =>\n handleMiniPlayerMediaAttached(hls)\n );\n } else if (\n mainPlayerVideoTag().canPlayType(\"application/vnd.apple.mpegurl\")\n ) {\n mainPlayerVideoTag().src = details.stream_link!;\n\n // Append Query Parameter to .ts Chunks\n appendQueryParamsToChunksIOS();\n }\n return () => {\n dispatch(setClearMiniPlayerSlice());\n hls.detachMedia();\n hls.off(Hls.Events.MEDIA_ATTACHED, () =>\n handleMiniPlayerMediaAttached(hls)\n );\n };\n }, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (params.currentTime) {\n dispatch(setPlayMiniPlayer(true));\n miniPlayerVideoTag().currentTime = params.currentTime;\n dispatch(setPlay(false));\n mainPlayerVideoTag()?.pause();\n }\n }, [params.currentTime]);\n\n return (\n <>\n <video\n onPlay={() => dispatch(setPlayMiniPlayer(true))}\n onEnded={() => dispatch(setPlayMiniPlayer(false))}\n onError={handleVideoError}\n poster={params.banner ? params.banner : details.banner}\n id={`mini-player-video-tag`}\n className=\"pl-absolute pl-bg-black pl-w-full pl-h-full\"\n autoPlay={true}\n muted={true}\n />\n </>\n );\n};\n\nexport default MiniPlayerNonStaticVideoTag;\n","import { useEffect } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"../../../../helpers/redux/hooks\";\nimport { mainPlayerVideoTag, miniPlayerVideoTag } from \"../../../../helpers/constants\";\nimport { setPlayMiniPlayer } from \"../../../../helpers/redux/slices/miniPlayerSlice\";\nimport { setPlay } from \"../../../../helpers/redux/slices/controllerSlice\";\nimport { handleVideoError } from \"../../../../helpers/redux/actions/playerCore.actions\";\n\nconst MiniPlayerStaticVideoTag = () => {\n\n const dispatch = useAppDispatch();\n const params = useAppSelector(state => state.miniPlayer.params);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if(params.currentTime) {\n dispatch(setPlayMiniPlayer(true));\n miniPlayerVideoTag().currentTime = params.currentTime;\n dispatch(setPlay(false));\n mainPlayerVideoTag()?.pause();\n }\n },[params.currentTime])\n\n return (\n <video \n poster={params.banner} \n onPlay={() => dispatch(setPlayMiniPlayer(true))}\n onEnded={() => dispatch(setPlayMiniPlayer(false))}\n onError={handleVideoError}\n src={params.id} \n id={`mini-player-video-tag`} \n className=\"pl-absolute pl-bg-black pl-w-full pl-h-full\"\n autoPlay\n />\n )\n}\n\nexport default MiniPlayerStaticVideoTag;"]}