cafe-video-player 3.0.16 → 3.0.18

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 (93) hide show
  1. package/README.md +8 -2
  2. package/index.cjs +10 -0
  3. package/index.cjs.map +1 -0
  4. package/index.js +9 -1
  5. package/index.js.map +1 -1
  6. package/package.json +13 -6
  7. package/videoPlayerStyles.css +2 -5085
  8. package/VideoHighLighter-32JJMCVS.mjs +0 -2
  9. package/VideoHighLighter-32JJMCVS.mjs.map +0 -1
  10. package/VideoHighLighter-6MYR26HW.js +0 -2
  11. package/VideoHighLighter-6MYR26HW.js.map +0 -1
  12. package/backwardForward-3X63XNNJ.mjs +0 -2
  13. package/backwardForward-3X63XNNJ.mjs.map +0 -1
  14. package/backwardForward-HTLSZBXC.js +0 -2
  15. package/backwardForward-HTLSZBXC.js.map +0 -1
  16. package/chunk-2DV7FRU5.mjs +0 -2
  17. package/chunk-2DV7FRU5.mjs.map +0 -1
  18. package/chunk-3TPEXSZV.js +0 -2
  19. package/chunk-3TPEXSZV.js.map +0 -1
  20. package/chunk-4QMWBTB5.mjs +0 -2
  21. package/chunk-4QMWBTB5.mjs.map +0 -1
  22. package/chunk-5UGSCO4K.js +0 -3
  23. package/chunk-5UGSCO4K.js.map +0 -1
  24. package/chunk-6LGS5W4B.mjs +0 -2
  25. package/chunk-6LGS5W4B.mjs.map +0 -1
  26. package/chunk-AK5TFAW3.js +0 -2
  27. package/chunk-AK5TFAW3.js.map +0 -1
  28. package/chunk-AN6JAJSI.js +0 -2
  29. package/chunk-AN6JAJSI.js.map +0 -1
  30. package/chunk-B4IVZEZN.mjs +0 -2
  31. package/chunk-B4IVZEZN.mjs.map +0 -1
  32. package/chunk-BNVNO5NH.js +0 -2
  33. package/chunk-BNVNO5NH.js.map +0 -1
  34. package/chunk-CG2KA4BX.js +0 -2
  35. package/chunk-CG2KA4BX.js.map +0 -1
  36. package/chunk-COYFW7R4.js +0 -3
  37. package/chunk-COYFW7R4.js.map +0 -1
  38. package/chunk-FXAWDALE.mjs +0 -2
  39. package/chunk-FXAWDALE.mjs.map +0 -1
  40. package/chunk-HOAJ3EFI.mjs +0 -3
  41. package/chunk-HOAJ3EFI.mjs.map +0 -1
  42. package/chunk-HZASW2B2.js +0 -2
  43. package/chunk-HZASW2B2.js.map +0 -1
  44. package/chunk-K4YPVDEE.js +0 -2
  45. package/chunk-K4YPVDEE.js.map +0 -1
  46. package/chunk-KSZ35TPK.js +0 -2
  47. package/chunk-KSZ35TPK.js.map +0 -1
  48. package/chunk-NLCBOGTI.mjs +0 -3
  49. package/chunk-NLCBOGTI.mjs.map +0 -1
  50. package/chunk-P4O3IKAQ.mjs +0 -2
  51. package/chunk-P4O3IKAQ.mjs.map +0 -1
  52. package/chunk-QFADUEGX.mjs +0 -2
  53. package/chunk-QFADUEGX.mjs.map +0 -1
  54. package/chunk-QXTVEBKD.mjs +0 -2
  55. package/chunk-QXTVEBKD.mjs.map +0 -1
  56. package/chunk-QXX6LI3R.mjs +0 -9
  57. package/chunk-QXX6LI3R.mjs.map +0 -1
  58. package/chunk-UL5LQB3G.mjs +0 -2
  59. package/chunk-UL5LQB3G.mjs.map +0 -1
  60. package/chunk-VF6ZSAIO.js +0 -9
  61. package/chunk-VF6ZSAIO.js.map +0 -1
  62. package/chunk-VUHZVVMS.js +0 -3
  63. package/chunk-VUHZVVMS.js.map +0 -1
  64. package/chunk-X7QXUGD2.js +0 -2
  65. package/chunk-X7QXUGD2.js.map +0 -1
  66. package/chunk-XKRBXZUB.mjs +0 -3
  67. package/chunk-XKRBXZUB.mjs.map +0 -1
  68. package/index.mjs +0 -2
  69. package/index.mjs.map +0 -1
  70. package/nonStaticVideoTag-5HEUBWAN.js +0 -2
  71. package/nonStaticVideoTag-5HEUBWAN.js.map +0 -1
  72. package/nonStaticVideoTag-P47FI6UV.mjs +0 -2
  73. package/nonStaticVideoTag-P47FI6UV.mjs.map +0 -1
  74. package/notActive-DRH5BEL5.js +0 -2
  75. package/notActive-DRH5BEL5.js.map +0 -1
  76. package/notActive-DSDPVSW4.mjs +0 -2
  77. package/notActive-DSDPVSW4.mjs.map +0 -1
  78. package/staticPlayer-4CLY5WJL.mjs +0 -2
  79. package/staticPlayer-4CLY5WJL.mjs.map +0 -1
  80. package/staticPlayer-7UUHF6G2.js +0 -2
  81. package/staticPlayer-7UUHF6G2.js.map +0 -1
  82. package/staticVideoTag-JOPHGL3R.mjs +0 -2
  83. package/staticVideoTag-JOPHGL3R.mjs.map +0 -1
  84. package/staticVideoTag-OZZU5MWF.js +0 -2
  85. package/staticVideoTag-OZZU5MWF.js.map +0 -1
  86. package/videoArea-PC67BM4S.js +0 -2
  87. package/videoArea-PC67BM4S.js.map +0 -1
  88. package/videoArea-W2FPLLPE.mjs +0 -2
  89. package/videoArea-W2FPLLPE.mjs.map +0 -1
  90. package/vodPlayer-7T7LLFRE.mjs +0 -2
  91. package/vodPlayer-7T7LLFRE.mjs.map +0 -1
  92. package/vodPlayer-BXPUGCRK.js +0 -2
  93. package/vodPlayer-BXPUGCRK.js.map +0 -1
package/index.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/tsup/assets/cjs_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_cjs_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.cjs","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\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-pr-1 pl-gap-1\",\r\n desktopFullScreen: \"pl-h-[36px] pl-min-w-[36px] group-hover:pl-pr-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-px-[10px] 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-flex pl-items-center pl-justify-center pl-size-4\">\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-px-[10px] 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 <div className=\"pl-flex pl-items-center pl-justify-center pl-size-5\">\r\n {!!handleTickSelectedQuality(index - 1, qualityLevel) && (\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 )}\r\n </div>\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-px-[10px] 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-size-4 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-px-[10px] 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 <div className=\"pl-size-5 pl-flex pl-items-center pl-justify-center\">\r\n {settings.speed === speed && (\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 )}\r\n </div>\r\n <p\r\n className={`pl-text-[12px] ${\r\n conditions(ConditionName.isTouchScreen) ? \"pl-text-[#212121]\" : \"pl-text-white\"\r\n } 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-px-[10px] 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-size-4 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-px-[10px] 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 <div className=\"pl-size-5 pl-flex pl-items-center pl-justify-center\">\r\n {!selectedSubtitle && (\r\n <Image src={IMAGES.tick} className={conditions(ConditionName.isTouchScreen) ? \"pl-brightness-0\" : \"\"} alt=\"\" width={20} height={20} />\r\n )}\r\n </div>\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-px-[10px] 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 <div className=\"pl-flex pl-items-center pl-justify-center pl-size-5\">\r\n {!!selectedSubtitle && selectedSubtitle.language === subtitle.language && (\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 )}\r\n </div>\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-px-[10px] 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-size-4 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-px-[10px] 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 <div className=\"pl-size-5 pl-flex pl-items-center pl-justify-center\">\r\n {selectedAudioId === index && (\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 )}\r\n </div>\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;"]}