cafe-video-player 2.0.21 → 2.0.22
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.
- package/{chunk-UTQQHPIT.mjs → chunk-DJJDQIWK.mjs} +5 -5
- package/chunk-DJJDQIWK.mjs.map +1 -0
- package/{chunk-Y3GDFXWU.js → chunk-TOLFOV7Z.js} +5 -5
- package/chunk-TOLFOV7Z.js.map +1 -0
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +1 -1
- package/{staticPlayer-4IVOGXWC.mjs → staticPlayer-RFUJNR5C.mjs} +2 -2
- package/{staticPlayer-4IVOGXWC.mjs.map → staticPlayer-RFUJNR5C.mjs.map} +1 -1
- package/{staticPlayer-L6ZHTYIE.js → staticPlayer-TLZMTTVV.js} +2 -2
- package/{staticPlayer-L6ZHTYIE.js.map → staticPlayer-TLZMTTVV.js.map} +1 -1
- package/videoArea-F2H74LD6.js +2 -0
- package/{videoArea-AXJIXBW5.js.map → videoArea-F2H74LD6.js.map} +1 -1
- package/{videoArea-E7A4UFKZ.mjs → videoArea-M2EQDHM2.mjs} +2 -2
- package/{videoArea-E7A4UFKZ.mjs.map → videoArea-M2EQDHM2.mjs.map} +1 -1
- package/{vodPlayer-YZ7XNHKT.js → vodPlayer-FK2KWGRR.js} +2 -2
- package/{vodPlayer-YZ7XNHKT.js.map → vodPlayer-FK2KWGRR.js.map} +1 -1
- package/{vodPlayer-LEY3FMUD.mjs → vodPlayer-UJEWVDLB.mjs} +2 -2
- package/{vodPlayer-LEY3FMUD.mjs.map → vodPlayer-UJEWVDLB.mjs.map} +1 -1
- package/chunk-UTQQHPIT.mjs.map +0 -1
- package/chunk-Y3GDFXWU.js.map +0 -1
- package/videoArea-AXJIXBW5.js +0 -2
package/chunk-Y3GDFXWU.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/videoPlayerLibrary/components/custom-components/videoArea/videoArea.tsx","../src/videoPlayerLibrary/components/custom-components/header/header.tsx","../src/videoPlayerLibrary/components/custom-components/title/title.tsx","../src/videoPlayerLibrary/components/custom-components/lockUnlock/lock.tsx","../src/videoPlayerLibrary/components/custom-components/main/main.tsx","../src/videoPlayerLibrary/components/custom-components/playPause/playPause.tsx","../src/videoPlayerLibrary/components/custom-components/loader/loader.tsx","../src/videoPlayerLibrary/components/custom-components/footer/footer.tsx","../src/videoPlayerLibrary/components/custom-components/footer/progressbar/progressbar.tsx","../src/videoPlayerLibrary/components/custom-components/tooltip/tooltip.tsx","../src/videoPlayerLibrary/helpers/redux/actions/progressbar.actions.ts","../src/videoPlayerLibrary/components/custom-components/footer/progressbar/markers/markers.tsx","../src/videoPlayerLibrary/helpers/hooks/useOnClickOutside.tsx","../src/videoPlayerLibrary/components/custom-components/emoji/emoji.tsx","../src/videoPlayerLibrary/components/custom-components/footer/controllbar/controllbar.tsx","../src/videoPlayerLibrary/components/custom-components/fullScreen/fullScreen.tsx","../src/videoPlayerLibrary/components/custom-components/footer/controllbar/controllbarTooltip.tsx","../src/videoPlayerLibrary/components/custom-components/pictureInPicture/pictureInPicture.tsx","../src/videoPlayerLibrary/components/custom-components/soundVolume/soundVolume.tsx","../src/videoPlayerLibrary/components/custom-components/settings/settings.tsx","../src/videoPlayerLibrary/components/custom-components/popover/popover.tsx","../src/videoPlayerLibrary/components/icon-components/closeIcon.tsx","../src/videoPlayerLibrary/components/custom-components/qualityLevels/qualityLevels.tsx","../src/videoPlayerLibrary/components/custom-components/speed/speed.tsx","../src/videoPlayerLibrary/components/icon-components/speed.tsx","../src/videoPlayerLibrary/components/custom-components/toggle/toggle.tsx","../src/videoPlayerLibrary/components/custom-components/subtitles/subtitleSettingMenu.tsx","../src/videoPlayerLibrary/components/custom-components/elapsedTime/elapsedTime.tsx","../src/videoPlayerLibrary/components/custom-components/lockUnlock/unlock.tsx","../src/videoPlayerLibrary/components/custom-components/subtitles/subtitleIcon.tsx","../src/videoPlayerLibrary/components/custom-components/markersList/markersList.tsx","../src/videoPlayerLibrary/components/custom-components/markersList/markersListIcon.tsx","../src/videoPlayerLibrary/components/custom-components/subtitles/displaySubtitle.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/helpers/hooks/useSetSubtitleFirstPlay.tsx"],"names":["init_cjs_shims","Title","details","params","useAppSelector","shallowEqual","jsx","conditions","title_default","Lock","jsxs","Image","importImages_default","handleLock","lock_default","Header","lock","activeElements","header_default","PlayPause","play","videoElementSizeInfo","event","handlePlayPause","playPause_default","Loader","loader_default","Main","showLoader","setShowLoader","useState","showIcons","setShowIcons","firstPlay","isLoading","useEffect","timeout","showLoaderTime","Fragment","backwardForward_default","main_default","getPointerTime","store_default","duration","clientX","getPointerPosition","getMarkerPosition","markerTime","progressBarWidth","hideProgressTooltip","progressTooltip","generalStyleTooltipHandler","vttTooltipStyleHandler","element","parentPlayer","mainPlayerVideoTag","showProgressTooltip","progressBarTooltip","setTooltipTime","secondsToHMS","handleTimeTooltip","isTimer","handleProgressTime","progressBar","handlePointerDown","timeoutIds","setIsPointerDown","dispatch","setActivePointerProgressBar","setDelayTurnOffControlbar","id","handlePointerMove","activePointerProgressBar","left","handlePointerUp","setTimeoutIds","right","currentTime","handleVideoTimeline","handleTimeout","ids","timeoutIdTemp","settingPopover","delayTurnOffControlbar","setActiveElements","activeElementsTime","handleCatchUpLoadingLog","timer","sendFluentLog","catchUpLoadingLog","handleMouseMove","handleMouseOut","deconstructTimestamp","timestamp","splitStampMilliseconds","timePartsSplit","getSecondsFromTimestamp","timestampParts","getPropsFromDef","def","imageDefSplit","imageUrl","splitCoords","getFullyQualifiedUrl","path","base","getVttCss","vttImageDef","vttUrl","cssObj","baseSplit","imageProps","fetchFile","url","setVttPool","response","setInfo","data","processedVtts","vttDef","vttDefSplit","vttTimingSplit","vttTimeStart","vttTimeEnd","vttCssDef","error","getStyleForTime","time","vttPool","cache","item","objectVtt","Tooltip","tooltipTime","isFullScreen","setVttUrl","tooltip_default","memo","useOnClickOutside","ref","handler","listener","useOnClickOutside_default","Emoji","name","className","dataMarker","getEmojiUrl","emoji_default","Markers","useAppDispatch","markers","setMarkerTime","overlapMarkers","setOverlapMarkers","overlapMarkersPosition","setOverlapMarkersPosition","isOverlapMarkersInViewport","setIsOverlapMarkersInViewport","calculateMarkerPosition","handleClick","markerId","markerTitle","markerDescription","markerSticker","result","sumOverlapMarkersTime","marker","handleJumpToMarker","eventMarkerClickLog","markerRef","useRef","isInViewPort","inViewPort","handleContextMenu","overlapMarker","markers_default","ProgressBar","isPointerDown","bufferedTimeWidth","progressbar_default","ControllbarTooltip","title","controllbarTooltip_default","FullScreen","showTooltip","setShowTooltip","handleFullScreen","handleLockOrientation","fullScreen_default","PictureInPicture","setPlay","pictureInPicture_default","SoundVolume","settings","primaryVolumeRef","handleMouseUp","volumeLog","setUserSettings","handleMute","type","handleChangeSoundVolume","soundVolume_default","CloseIcon","onClick","closeIcon_default","Popover","forwardRef","children","status","onClose","classNames","parentClassNames","styles","isBlurBackground","isFullHeight","isHeader","isHasCatchUpLineOnTop","animation","scrollbar","isFocusOnInput","headerTitle","customHeader","headerClassName","showCloseIcon","showPopover","setShowPopover","heightOnTouchMove","setHeightOnTouchMove","zIndexOnCatchUp","setZIndexOnCatchUp","popoverContentHeightRef","handleTouchMove","popoverContent","handleTouchEnd","content","createPortal","popover_default","QualityLevels","setSection","showQualityLevelsIcon","qualityLevels","manualQuality","autoQuality","qualityLevelsPopover","handleTickSelectedQuality","index","qualityLevel","qualityLevelsRef","setQualityLevelsPopover","qualityLevelsContent","qualityChangeRequestLog","setSettingPopover","qualityLevels_default","SpeedIcon","onMouseOver","onMouseLeave","speed_default","speeds","Speed","showSpeedIcon","speedPopover","speedRef","setSpeedPopover","speedContent","speed","speedChangeLog","Toggle","enabled","setEnabled","toggle_default","SubtitlesMenu","subtitles","selectedSubtitle","setSelectedSubtitle","textTrack","setSubtitleText","subtitleLog","subtitle","subtitleSettingMenu_default","Settings","section","settingsRef","handleSubtitle","settings_default","ElapsedTime","elapsedTime_default","Unlock","unlock_default","SubtitleIcon","subtitleIcon_default","MarkersListIcon","props","markersListIcon_default","MarkersList","markersListPopover","markersListRef","setMarkersListPopover","handleClickMarker","handleShowMarkerListPopover","markersList_default","Controlbar","controllbar_default","DisplaySubtitle","subtitleText","subtitlePosition","spliteStringPerLine","text","cleanVTT","displaySubtitle_default","Footer","footer_default","StaticVideoTag","dynamic","NonStaticVideoTag","VideoTag","videoTag_default","useFullScreen","handleChangeFullScreen","setIsFullScreen","handleVideoElementSizeInfo","fullscreenLog","useFullScreen_default","useActiveInActive","isRightDoubleTouched","isLeftDoubleTouched","timeoutRef","isRightDoubleTouchedRef","isLeftDoubleTouchedRef","shouldInActiveElements","isEnded","handleTouchStart","isTouchScreen","checkParentTarget","videoArea","useActiveInActive_default","useHandleResize","handleResize","useHandleResize_default","useSetSubtitleFirstPlay","useSetSubtitleFirstPlay_default","TouchVolumeBrightness","BackwardForward","VideoArea","setIsRightDoubleTouched","setIsLeftDoubleTouched","canPlayVideo","handleDoubleClick","videoArea_default"],"mappings":"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","file":"chunk-Y3GDFXWU.js","sourcesContent":["\"use client\";\r\n\r\nimport { MouseEvent, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport Header from \"../header/header\";\r\nimport Main from \"../main/main\";\r\nimport Footer from \"../footer/footer\";\r\nimport VideoTag from \"../videoTag/videoTag\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, zIndex } from \"../../../helpers/interfaces/enums\";\r\nimport {\r\n handleDoubleClick,\r\n handlePlayPause,\r\n} from \"../../../helpers/redux/actions/controller.actions\";\r\nimport useFullScreen from \"../../../helpers/hooks/useFullScreen\";\r\nimport useActiveInActive from \"../../../helpers/hooks/useActiveInActive\";\r\nimport dynamic from \"next/dynamic\";\r\nimport useHandleResize from \"../../../helpers/hooks/useHandleResize\";\r\nimport useSetSubtitleFirstPlay from \"../../../helpers/hooks/useSetSubtitleFirstPlay\";\r\n\r\nconst TouchVolumeBrightness = dynamic(\r\n () => import(\"../touchVolumeBrightness/touchVolumeBrightness\")\r\n);\r\nconst BackwardForward = dynamic(\r\n () => import(\"../backwardForward/backwardForward\")\r\n);\r\n\r\nconst VideoArea = () => {\r\n const [isRightDoubleTouched, setIsRightDoubleTouched] =\r\n useState<boolean>(false);\r\n const [isLeftDoubleTouched, setIsLeftDoubleTouched] =\r\n useState<boolean>(false);\r\n\r\n useAppSelector(\r\n ({ videoData: { details, params, videoElementSizeInfo } }) => ({\r\n details,\r\n params,\r\n videoElementSizeInfo,\r\n }),\r\n shallowEqual\r\n );\r\n\r\n useAppSelector(\r\n ({ controller: { firstPlay, isFullScreen, isLoading, canPlayVideo } }) => ({\r\n firstPlay,\r\n isFullScreen,\r\n isLoading,\r\n canPlayVideo,\r\n }),\r\n shallowEqual\r\n );\r\n\r\n useFullScreen();\r\n useHandleResize();\r\n useActiveInActive(isRightDoubleTouched, isLeftDoubleTouched);\r\n useSetSubtitleFirstPlay();\r\n\r\n\r\n return (\r\n <>\r\n <div\r\n id=\"video-area\"\r\n style={{\r\n zIndex: conditions(ConditionName.isFullScreen)\r\n ? zIndex.videoPlayerInFullScreen\r\n : \"unset\",\r\n }}\r\n onClick={(event) =>\r\n conditions(ConditionName.isFirstPlay) && handlePlayPause(event)\r\n }\r\n onDoubleClick={(event: MouseEvent<HTMLDivElement>) =>\r\n handleDoubleClick(event)\r\n }\r\n className={`!pl-bg-contain !pl-bg-center !pl-bg-no-repeat pl-h-full pl-bg-black pl-max-h-screen pl-aspect-video pl-flex pl-items-center ${\r\n !conditions(ConditionName.isTouchScreen) &&\r\n !conditions(ConditionName.isFullScreen) &&\r\n \"!pl-rounded-[12px]\"\r\n } ${\r\n conditions(ConditionName.isFullScreen) && \"!pl-fixed !pl-w-screen dvh\"\r\n } pl-w-full pl-relative ${\r\n !conditions(ConditionName.isActiveElements) && \"pl-cursor-none\"\r\n }`}\r\n >\r\n <div\r\n id=\"video-opacity\"\r\n className={`pl-absolute pl-w-full pl-aspect-video pl-transition-all pl-duration-500 pl-bg-black ${\r\n !conditions(ConditionName.isTouchScreen) &&\r\n !conditions(ConditionName.isFullScreen) &&\r\n \"!pl-rounded-[12px]\"\r\n } ${\r\n conditions(ConditionName.isActiveElements)\r\n ? \"pl-bg-opacity-50\"\r\n : \"pl-bg-opacity-0\"\r\n }`}\r\n />\r\n {conditions(ConditionName.showTouchVolumeBrightness) && (\r\n <TouchVolumeBrightness />\r\n )}\r\n {conditions(ConditionName.showBackwardForward) && (\r\n <div\r\n className={`pl-absolute pl-top-0 pl-right-0 pl-w-full pl-h-full pl-overflow-hidden pl-flex pl-items-center`}\r\n style={{\r\n zIndex:\r\n isLeftDoubleTouched || isRightDoubleTouched\r\n ? zIndex.backwardForwardActive\r\n : zIndex.backwardForwardInActive,\r\n }}\r\n >\r\n <BackwardForward\r\n type=\"touchForward\"\r\n isRightDoubleTouched={isRightDoubleTouched}\r\n setIsRightDoubleTouched={setIsRightDoubleTouched}\r\n />\r\n <BackwardForward\r\n type=\"touchBackward\"\r\n isLeftDoubleTouched={isLeftDoubleTouched}\r\n setIsLeftDoubleTouched={setIsLeftDoubleTouched}\r\n />\r\n </div>\r\n )}\r\n <VideoTag />\r\n <div\r\n id=\"playerElements\"\r\n className={`pl-absolute pl-top-0 pl-right-0 pl-w-full pl-h-full`}\r\n >\r\n <div\r\n className={`pl-flex pl-flex-col pl-justify-between pl-w-full pl-h-full`}\r\n >\r\n {conditions(ConditionName.showHeader) && <Header />}\r\n {conditions(ConditionName.showMain) && <Main />}\r\n {conditions(ConditionName.showFooter) && <Footer />}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default VideoArea;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport Title from \"../title/title\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport Lock from \"../lockUnlock/lock\";\r\n\r\nconst Header = () => {\r\n useAppSelector(({ controller: { lock, activeElements } }) => ({ lock, activeElements }), shallowEqual);\r\n\r\n return (\r\n <div className={`pl-flex pl-items-start pl-justify-end pl-mx-4 pl-mt-5 ${conditions(ConditionName.isTouchScreenPortrait) ? \"pl-h-[16px]\" : \"pl-h-[60px]\"}`}>\r\n {conditions(ConditionName.showTitle) && <Title />}\r\n {conditions(ConditionName.isLock) && <Lock />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\n\r\nconst Title = () => {\r\n const { details, params } = useAppSelector(({ videoData: { details, params } }) => ({ details, params }), shallowEqual);\r\n\r\n return (\r\n <div\r\n className={`pl-w-full pl-max-w-[80%] pl-truncate pl-text-left pl-ml-4 pl-text-[16px] pl-font-normal pl-text-white pl-break-words pl-self-start animate__animated animate__faster ${\r\n conditions(ConditionName.isActiveElements) ? \"animate__fadeIn pl-opacity-100\" : \"pl-opacity-0 animate__fadeOut\"\r\n }`}\r\n >\r\n {conditions(ConditionName.hasTitle) ? details.title : params.id}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Title;\r\n","import Image from \"next/legacy/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 { useEffect, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport BackwardForward from \"../backwardForward/backwardForward\";\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\n\r\nconst Main = () => {\r\n const [showLoader, setShowLoader] = useState<boolean>(false);\r\n const [showIcons, setShowIcons] = useState<boolean>(false);\r\n\r\n useAppSelector(({ controller: { lock, firstPlay } }) => ({ lock, firstPlay }), shallowEqual);\r\n const { activeElements, isLoading } = useAppSelector(({ controller: { activeElements, isLoading } }) => ({ activeElements, isLoading }),shallowEqual);\r\n\r\n useEffect(() => {\r\n let timeout: any = null;\r\n if (conditions(ConditionName.isFirstPlay) || conditions(ConditionName.isActiveElements)) timeout = setTimeout(() => setShowIcons(true), 100);\r\n else setShowIcons(false);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [activeElements]);\r\n\r\n useEffect(() => {\r\n let timeout: any;\r\n if (conditions(ConditionName.isLoading)) timeout = setTimeout(() => setShowLoader(true), conditions(ConditionName.isFirstPlay) ? 0 : showLoaderTime);\r\n else setShowLoader(false);\r\n return () => {\r\n clearTimeout(timeout);\r\n setShowLoader(false);\r\n };\r\n }, [isLoading]);\r\n\r\n return (\r\n <main className=\"pl-flex-1 pl-mt-1\">\r\n {showLoader ? (\r\n <Loader />\r\n ) : (\r\n <>\r\n {showIcons && !conditions(ConditionName.isLock) && (\r\n <div\r\n id=\"main-content\"\r\n className={`pl-h-full pl-flex pl-justify-center pl-items-center pl-text-center pl-relative ${conditions(ConditionName.isActiveElements) ? \"pl-pointer-events-auto\" : \"pl-pointer-events-none\"\r\n }`}\r\n >\r\n <div\r\n className=\"pl-flex pl-justify-center pl-gap-8 pl-items-center pl-w-max\"\r\n style={{ zIndex: zIndex.mainIcons }}\r\n >\r\n {!conditions(ConditionName.isFirstPlay) && <BackwardForward type=\"forward\" />}\r\n <PlayPause />\r\n {!conditions(ConditionName.isFirstPlay) && <BackwardForward type=\"backward\" />}\r\n </div>\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 { 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 { handlePlayPause } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport Image from \"next/legacy/image\";\r\n\r\nconst PlayPause = () => {\r\n useAppSelector(({ controller: { play } }) => ({ play }), shallowEqual);\r\n useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), 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.isPlay) ? IMAGES.bigPause : IMAGES.bigPlay}\r\n width={40}\r\n height={40}\r\n onClick={(event: any) => handlePlayPause(event)}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n className={`${conditions(ConditionName.isPlay) ? \"pl-big-play-icon\" : \"pl-big-pause-icon\"}`}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlayPause;\r\n","const Loader = () => {\r\n return (\r\n <div className={`loader-spinner pl-absolute pl-top-[50%] pl-left-[50%] pl-mt-[-50px] pl-ml-[-42px] pl-w-screen pl-h-full pl-overflow-hidden`}>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n <div className=\"pl-bg-white\"></div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport ProgressBar from \"./progressbar/progressbar\";\r\nimport Controllbar from \"./controllbar/controllbar\";\r\nimport ElapsedTime from \"../elapsedTime/elapsedTime\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, zIndex } from \"../../../helpers/interfaces/enums\";\r\nimport DisplaySubtitle from \"../subtitles/displaySubtitle\";\r\n\r\nconst Footer = () => {\r\n\r\n useAppSelector(({ controller: { lock, isFullScreen, isLoading, activeElements } }) => ({ lock, isFullScreen, isLoading, activeElements }), shallowEqual);\r\n useAppSelector(({ videoData: { subtitles, selectedSubtitle } }) => ({ subtitles, selectedSubtitle }), shallowEqual);\r\n\r\n let styles = \"\";\r\n if(conditions(ConditionName.isTouchScreen)) {\r\n if(conditions(ConditionName.isFullScreen)) styles = \"pl-gap-6 pl-mb-6\"\r\n else styles = \"pl-gap-6 pl-mb-0\"\r\n } else {\r\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-gap-6 pl-mb-8\"\r\n else styles = \"pl-gap-4 pl-mb-3\"\r\n }\r\n\r\n return (\r\n <div id=\"footer\" className=\"pl-relative\" style={{ zIndex: zIndex.footer }}>\r\n <>\r\n {conditions(ConditionName.showSubtitle) && <DisplaySubtitle />}\r\n {!conditions(ConditionName.isLock) && (\r\n <>\r\n <div\r\n className={`pl-flex pl-flex-col pl-w-full pl-mx-auto animate__animated animate__faster ${styles} ${conditions(ConditionName.isActiveElements) && !conditions(ConditionName.isLoading)\r\n ? \"animate__fadeIn pl-pointer-events-auto\"\r\n : \"animate__fadeOut pl-pointer-events-none\"\r\n }`}\r\n >\r\n {!conditions(ConditionName.isTouchScreenPortrait) && <ElapsedTime />} \r\n {conditions(ConditionName.showProgressbar) && <ProgressBar />}\r\n <Controllbar />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import { useEffect, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport Tooltip from \"../../tooltip/tooltip\";\r\nimport { handleCatchUpLoadingLog, handleMouseMove, handleMouseOut, handlePointerDown, handlePointerMove, handlePointerUp, hideProgressTooltip } from \"../../../../helpers/redux/actions/progressbar.actions\";\r\nimport { useAppSelector } from \"../../../../helpers/redux/hooks\";\r\nimport { progressBarWidth } from \"../../../../helpers/constants\";\r\nimport { ConditionName } from \"../../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../../helpers/conditions/conditions\";\r\nimport Markers from \"./markers/markers\";\r\n\r\nconst ProgressBar = () => {\r\n const [isPointerDown, setIsPointerDown] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n hideProgressTooltip(document.querySelector(\".progressTooltip\"));\r\n }, []);\r\n\r\n const { duration, currentTime, bufferedTimeWidth } = useAppSelector(\r\n ({ controller: { duration, currentTime, bufferedTimeWidth } }) => ({\r\n duration,\r\n currentTime,\r\n bufferedTimeWidth,\r\n }),\r\n shallowEqual\r\n );\r\n useAppSelector(\r\n ({ videoData: { params, videoElementSizeInfo } }) => ({\r\n params,\r\n videoElementSizeInfo,\r\n }),\r\n shallowEqual\r\n );\r\n const [timeoutIds, setTimeoutIds] = useState<any[]>([]);\r\n\r\n return (\r\n <div className={`${conditions(ConditionName.isTouchScreenPortrait) ? \"pl-order-1\" : \"pl-order-none\"} pl-relative`}>\r\n <div className=\"pl-relative\">\r\n <Tooltip />\r\n <Markers />\r\n </div>\r\n <div\r\n className={`pl-w-full pl-flex pl-items-end`}\r\n onPointerDown={(event: any) => handlePointerDown(event, timeoutIds, setIsPointerDown)}\r\n onPointerMove={handlePointerMove}\r\n onPointerUp={(event: any) => handlePointerUp(event, setTimeoutIds, timeoutIds, setIsPointerDown)}\r\n onMouseMove={handleMouseMove}\r\n onMouseOut={handleMouseOut}\r\n onClick={handleCatchUpLoadingLog}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n >\r\n <div id=\"progress-area\" className=\"pl-w-full pl-absolute\">\r\n <div className=\"pl-w-full pl-h-[40px]\"/>\r\n <div\r\n id=\"time-progress-area\"\r\n className={`!pl-w-full !pl-h-[5px] pl-transition-transform pl-duration-300 pl-m-auto pl-cursor-pointer !pl-bg-gray-highLight pl-rounded`}\r\n style={{ transform: isPointerDown ? \"scaleY(1.8)\" : \"unset\" }}\r\n >\r\n <div\r\n id=\"time-progress-buffer\"\r\n className={`pl-absolute pl-h-[5px] pl-bg-z-gray-400/[0.7] pl-rounded`}\r\n style={{ width: `${bufferedTimeWidth}%` }}\r\n />\r\n <div\r\n id=\"time-progress-bar\"\r\n className={`pl-h-[5px] pl-rounded pl-relative pl-cursor-pointer pl-bg-primary before:pl-bg-primary before:pl-inline-block before:pl-w-4 before:pl-h-4 ${\r\n isPointerDown && \"before:pl-w-7 before:pl-h-3\"\r\n }`}\r\n style={{ width: `${(currentTime / duration) * progressBarWidth()}px` }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ProgressBar;\r\n","import { useEffect, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { memo } from \"react\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { fetchFile, getStyleForTime } from \"../../../helpers/redux/actions/progressbar.actions\";\r\n\r\nconst Tooltip = () => {\r\n const { details } = useAppSelector(({ videoData: { details } }) => ({ details }), shallowEqual);\r\n const { tooltipTime } = useAppSelector(({ controller: { tooltipTime, activeElements, isFullScreen } }) => ({ tooltipTime, activeElements, isFullScreen }), shallowEqual);\r\n\r\n const cache: any = {};\r\n const [vttPool, setVttPool] = useState<any>(undefined);\r\n const [vttUrl, setVttUrl] = useState<string | undefined>(conditions(ConditionName.isTouchScreen) ? details.vtt_mobile : details.vtt);\r\n\r\n useEffect(() => {\r\n setVttUrl(details.vtt_mobile);\r\n }, [details.vtt_mobile]);\r\n\r\n useEffect(() => {\r\n if (!!vttUrl) fetchFile(details.vtt_mobile!, setVttPool);\r\n }, [vttUrl]);\r\n\r\n return conditions(ConditionName.isActiveElements) ? (\r\n <div\r\n className={`pl-flex pl-flex-col pl-progressTooltip pl-absolute pl-bottom-[calc(100%+10px)] pl-px-[10px] pl-pt-[5px] pl-mr-[-25px] pl-text-white pl-text-[14px] ${\r\n vttUrl && !!vttPool ? \"\" : \"pl-bg-z-gray-700\"\r\n } pl-rounded-[6px] pl-opacity-0`}\r\n >\r\n {vttUrl && !!vttPool && (\r\n <div className=\"pl-flex-1 pl-border pl-border-white pl-rounded-[8px] pl-mb-2\">\r\n <div className=\"pl-rounded-[8px]\" style={getStyleForTime(tooltipTime, vttPool, cache)} />\r\n </div>\r\n )}\r\n <div className=\"pl-flex pl-items-center pl-justify-center pl-progressTimeTooltip pl-text-white !pl-opacity-100\" />\r\n </div>\r\n ) : (\r\n <></>\r\n );\r\n};\r\n\r\nexport default memo(Tooltip);\r\n","import store from \"../../redux/store\";\r\nimport { catchUpLoadingLog } from \"../../logs/logs\";\r\nimport { ConditionName, zIndex } from \"../../interfaces/enums\";\r\nimport { setActiveElements, setActivePointerProgressBar, setDelayTurnOffControlbar, setTooltipTime } from \"../slices/controllerSlice\";\r\nimport { handleVideoTimeline } from \"./controller.actions\";\r\nimport { setInfo } from \"../slices/videoDataSlice\";\r\nimport { sendFluentLog } from \"../../logs/fluentdLogger\";\r\nimport { conditions } from \"../../conditions/conditions\";\r\nimport { activeElementsTime } from \"../../environment\";\r\nimport { mainPlayerVideoTag, progressBar, progressBarWidth } from \"../../constants\";\r\nimport { secondsToHMS } from \"../../helpers\";\r\n\r\nexport const getPointerTime = (event: any) => {\r\n const { videoElementSizeInfo } = store.getState().videoData;\r\n const { duration } = store.getState().controller;\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n if (clientX <= videoElementSizeInfo.right && clientX > 0) {\r\n let positionX = clientX - videoElementSizeInfo.left;\r\n let timePositionX = (positionX / videoElementSizeInfo.width) * duration;\r\n return timePositionX;\r\n }\r\n};\r\n\r\nexport const getPointerPosition = (event: any) => {\r\n const { videoElementSizeInfo } = store.getState().videoData;\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n if (clientX <= videoElementSizeInfo.right && clientX > 0) {\r\n return clientX - videoElementSizeInfo.left;\r\n }\r\n};\r\n\r\nexport const getMarkerPosition = (markerTime: number) => {\r\n const { duration } = store.getState().controller;\r\n return (markerTime * progressBarWidth()) / duration;\r\n};\r\n\r\nexport const hideProgressTooltip = (progressTooltip: any) => {\r\n if (progressTooltip) {\r\n progressTooltip.style.opacity = \"0.0\";\r\n progressTooltip.style.pointerEvents = \"none\";\r\n progressTooltip.style.zIndex = zIndex.vttDisable;\r\n }\r\n};\r\n\r\nconst generalStyleTooltipHandler = (progressTooltip: any) => {\r\n progressTooltip.style.display = \"block\";\r\n progressTooltip.style.zIndex = zIndex.vtt;\r\n progressTooltip.style.opacity = !!store.getState().videoData.details.vtt ? \"1.0\" : \"0.6\";\r\n progressTooltip.style.pointerEvents = \"auto\";\r\n progressTooltip.style.transition = \"opacity 1s ease-out\";\r\n};\r\n\r\nconst vttTooltipStyleHandler = (event: any, progressTooltip: any) => {\r\n const { videoElementSizeInfo } = store.getState().videoData;\r\n const element: any = document.getElementsByClassName(\"pl-progressTooltip\")[0];\r\n const parentPlayer: any = document.getElementById(\"parent-player\");\r\n if (element && parentPlayer) {\r\n if ((getPointerPosition(event)! > element.getBoundingClientRect().width / 2) && (getPointerPosition(event)! < videoElementSizeInfo.right - videoElementSizeInfo.left - element.getBoundingClientRect().width / 2)) {\r\n progressTooltip.style.left = `${getPointerPosition(event)! - element.offsetWidth / 2}px`;\r\n } else if (getPointerPosition(event)! < (parentPlayer.offsetLeft === 0 ? element.offsetWidth : parentPlayer.offsetLeft)) {\r\n progressTooltip.style.left = `${0}px`;\r\n } else if (mainPlayerVideoTag().offsetLeft + mainPlayerVideoTag().offsetWidth < getPointerPosition(event)! + element.offsetWidth) {\r\n progressTooltip.style.left = `${mainPlayerVideoTag().offsetWidth - element.offsetWidth}px`;\r\n }\r\n }\r\n};\r\n\r\nexport const showProgressTooltip = (event: any, progressTooltip: any, progressBarTooltip: any) => {\r\n if (progressTooltip) generalStyleTooltipHandler(progressTooltip);\r\n if (store.getState().videoData.details.vtt) vttTooltipStyleHandler(event, progressTooltip); // have vtt\r\n else progressTooltip.style.left = `${getPointerPosition(event)! - 30}px`; // not vtt\r\n store.dispatch(setTooltipTime(Number(getPointerTime(event)!)));\r\n progressBarTooltip.textContent = `${secondsToHMS(getPointerTime(event)!)}`\r\n};\r\n\r\nexport const handleTimeTooltip = (event: any, isTimer: boolean = false) => {\r\n const { videoElementSizeInfo } = store.getState().videoData;\r\n const progressTooltip: any = document.querySelector(\".pl-progressTooltip\");\r\n const progressBarTooltip: any = document.querySelector(\".pl-progressTimeTooltip\");\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n if (progressTooltip && progressBarTooltip && clientX <= videoElementSizeInfo.right && clientX > videoElementSizeInfo.left) {\r\n showProgressTooltip(event, progressTooltip, progressBarTooltip);\r\n if (isTimer) setTimeout(() => hideProgressTooltip(progressTooltip), 2000);\r\n } else hideProgressTooltip(progressTooltip);\r\n};\r\n\r\nexport const handleProgressTime = (event: any) => {\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n if (progressBar()) {\r\n if (clientX <= event.view.innerWidth && clientX > 0)\r\n progressBar().style.width = `${getPointerPosition(event)}px`;\r\n else if (clientX <= event.view.innerWidth) progressBar().style.width = 0;\r\n else if (clientX > 0) progressBar().style.width = `100%`;\r\n }\r\n};\r\n\r\nexport const handlePointerDown = (event: any, timeoutIds: any, setIsPointerDown: (value: boolean) => void) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n setIsPointerDown(true);\r\n const dispatch = store.dispatch;\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n if (clientX <= event.view.innerWidth && clientX > 0) {\r\n dispatch(setActivePointerProgressBar(true));\r\n dispatch(setDelayTurnOffControlbar(true));\r\n sessionStorage.setItem(\"previousVideoTime\", String(mainPlayerVideoTag().currentTime));\r\n event.target.setPointerCapture(event.pointerId);\r\n if (timeoutIds.length > 0) timeoutIds.map((id: any) => clearTimeout(id));\r\n }\r\n};\r\n\r\nexport const handlePointerMove = (event: any) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const dispatch = store.dispatch;\r\n const { activePointerProgressBar } = store.getState().controller;\r\n const { left } = store.getState().videoData.videoElementSizeInfo;\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n const progressTooltip: any = document.querySelector(\".pl-progressTooltip\");\r\n if (clientX > left) {\r\n if (progressTooltip) {\r\n progressTooltip.style.display = \"block !important\";\r\n progressTooltip.style.pointerEvents = \"auto\";\r\n }\r\n if (activePointerProgressBar) {\r\n dispatch(setDelayTurnOffControlbar(true));\r\n handleTimeTooltip(event);\r\n handleProgressTime(event);\r\n mainPlayerVideoTag().pause();\r\n }\r\n } else if (progressTooltip) {\r\n progressTooltip.style.display = \"none !important\";\r\n progressTooltip.style.pointerEvents = \"none\";\r\n }\r\n};\r\n\r\nexport const handlePointerUp = (\r\n event: any,\r\n setTimeoutIds: (timeoutIds: any[]) => void,\r\n timeoutIds: any,\r\n setIsPointerDown: (value: boolean) => void\r\n) => {\r\n setIsPointerDown(false);\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const dispatch = store.dispatch;\r\n const { duration } = store.getState().controller;\r\n const { left, right } = store.getState().videoData.videoElementSizeInfo;\r\n event.target.removeEventListener(\"pointermove\", handlePointerMove);\r\n const clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\r\n let currentTime = 0;\r\n if (clientX > left && clientX < right) currentTime = getPointerTime(event)!;\r\n else if (clientX < left) currentTime = 0;\r\n else if (clientX > 0) currentTime = duration;\r\n if (!conditions(ConditionName.isStaticFormat)) handleVideoTimeline(mainPlayerVideoTag().currentTime, currentTime);\r\n mainPlayerVideoTag().currentTime = currentTime;\r\n if (store.getState().controller.activePointerProgressBar) {\r\n dispatch(setActivePointerProgressBar(false));\r\n dispatch(setDelayTurnOffControlbar(false));\r\n mainPlayerVideoTag().play();\r\n handleTimeTooltip(event, true);\r\n sessionStorage.setItem(\"current-time\", String(currentTime));\r\n handleProgressTime(event);\r\n handleTimeout(event, dispatch, setTimeoutIds, timeoutIds);\r\n }\r\n};\r\n\r\nconst handleTimeout = (event: any, dispatch: any, setTimeoutIds: (timeoutIds: any[]) => void, timeoutIds: any) => {\r\n const ids = timeoutIds;\r\n let timeoutIdTemp = setTimeout(() => {\r\n const { settingPopover } = store.getState().popovers;\r\n const { delayTurnOffControlbar } = store.getState().controller;\r\n if (event.pointerType === \"touch\" && !settingPopover && delayTurnOffControlbar) dispatch(setActiveElements(false));\r\n }, activeElementsTime);\r\n ids.push(timeoutIdTemp);\r\n setTimeoutIds(ids);\r\n};\r\n\r\nexport const handleCatchUpLoadingLog = () => {\r\n const timer = Date.now();\r\n mainPlayerVideoTag()\r\n .play()\r\n .then(() => sendFluentLog(catchUpLoadingLog(Date.now() - timer)));\r\n};\r\n\r\nexport const handleMouseMove = (event: any) => handleTimeTooltip(event);\r\n\r\nexport const handleMouseOut = () => {\r\n const progressBarTooltip: any = document.querySelector(\".pl-progressTooltip\");\r\n hideProgressTooltip(progressBarTooltip);\r\n};\r\n\r\n/////// vtt tooltip\r\nconst deconstructTimestamp = (timestamp: string) => {\r\n const splitStampMilliseconds = timestamp.split(\".\");\r\n const timeParts = splitStampMilliseconds[0];\r\n const timePartsSplit = timeParts.split(\":\");\r\n\r\n return {\r\n milliseconds: parseInt(splitStampMilliseconds[1], 10) || 0,\r\n seconds: parseInt(timePartsSplit.pop()!, 10) || 0,\r\n minutes: parseInt(timePartsSplit.pop()!, 10) || 0,\r\n hours: parseInt(timePartsSplit.pop()!, 10) || 0\r\n };\r\n};\r\n\r\nconst getSecondsFromTimestamp = (timestamp: string) => {\r\n const timestampParts: any = deconstructTimestamp(timestamp);\r\n\r\n return parseInt(timestampParts.hours * (60 * 60) + timestampParts.minutes * 60 + timestampParts.seconds + timestampParts.milliseconds / 1000, 10);\r\n};\r\n\r\nconst getPropsFromDef = (def: string) => {\r\n const imageDefSplit = def.split(/#xywh=/i);\r\n const imageUrl = imageDefSplit[0];\r\n const imageCoords = imageDefSplit[1];\r\n const splitCoords: any = imageCoords.match(/[0-9]+/gi);\r\n\r\n return {\r\n x: splitCoords[0],\r\n y: splitCoords[1],\r\n w: splitCoords[2],\r\n h: splitCoords[3],\r\n image: imageUrl\r\n };\r\n};\r\n\r\nconst getFullyQualifiedUrl = (path: string, base: string) => {\r\n if (path.indexOf(\"//\") >= 0) {\r\n // We have a fully qualified path.\r\n return path;\r\n }\r\n\r\n if (base.indexOf(\"//\") === 0) {\r\n // We don't have a fully qualified path, but need to\r\n // be careful with trimming.\r\n return [base.replace(/\\/$/gi, \"\"), path.trim()].join(\"/\");\r\n }\r\n\r\n if (base.indexOf(\"//\") > 0) {\r\n // We don't have a fully qualified path, and should\r\n // trim both sides of base and path.\r\n return [base.trim(), path.trim()].join(\"/\");\r\n }\r\n\r\n // If all else fails.\r\n return path;\r\n};\r\n\r\nconst getVttCss = (vttImageDef: string, vttUrl: string) => {\r\n const cssObj: any = {};\r\n // If there isn't a protocol, use the VTT source URL.\r\n let baseSplit: string = vttUrl!.split(/\\/\\w+\\.vtt\\s?/)[0];\r\n\r\n /// offset : (vttUrl)!.split(/\\/\\w+\\.vtt\\s?/)[1]\r\n\r\n vttImageDef = getFullyQualifiedUrl(vttImageDef, baseSplit);\r\n\r\n if (!vttImageDef.match(/#xywh=/i)) {\r\n cssObj.background = 'url(\"' + vttImageDef + vttUrl!.split(/\\/\\w+\\.vtt\\s?/)[1] + '\")';\r\n return cssObj;\r\n }\r\n\r\n const imageProps = getPropsFromDef(vttImageDef);\r\n\r\n cssObj.background =\r\n 'url(\"' + imageProps.image + vttUrl!.split(/\\/\\w+\\.vtt\\s?/)[1] + '\") no-repeat -' + imageProps.x + \"px -\" + imageProps.y + \"px\";\r\n cssObj.width = imageProps.w + \"px\";\r\n cssObj.height = imageProps.h + \"px\";\r\n cssObj.url = imageProps.image;\r\n\r\n return cssObj;\r\n};\r\n\r\nexport const fetchFile = (url: string, setVttPool: any) => {\r\n fetch(url)\r\n .then((response) => {\r\n if (!response.ok) {\r\n store.dispatch(\r\n setInfo({\r\n ...store.getState().videoData.details,\r\n vtt: undefined,\r\n vtt_mobile: undefined\r\n })\r\n );\r\n throw new Error(\"Network response was not ok\");\r\n }\r\n return response.text();\r\n })\r\n .then((data) => {\r\n const processedVtts: any[] = [];\r\n const vttDefinitions = data.split(/[\\r\\n][\\r\\n]/i);\r\n vttDefinitions.forEach((vttDef) => {\r\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)) {\r\n const vttDefSplit = vttDef.split(/[\\r\\n]/i);\r\n const vttTiming = vttDefSplit[0];\r\n const vttTimingSplit = vttTiming.split(/ ?--> ?/i);\r\n const vttTimeStart = vttTimingSplit[0];\r\n const vttTimeEnd = vttTimingSplit[1];\r\n const vttImageDef = vttDefSplit[1];\r\n const vttCssDef = getVttCss(vttImageDef, url);\r\n\r\n processedVtts.push({\r\n start: getSecondsFromTimestamp(vttTimeStart),\r\n end: getSecondsFromTimestamp(vttTimeEnd),\r\n css: vttCssDef\r\n });\r\n }\r\n });\r\n setVttPool(processedVtts);\r\n })\r\n .catch((error) => {\r\n console.error(\"Error fetching file:\", error);\r\n });\r\n};\r\n\r\nexport const getStyleForTime = (time: number, vttPool: any, cache: any) => {\r\n for (let i = 0; i < vttPool.length; ++i) {\r\n const item = vttPool[i];\r\n if (time >= item.start && time < item.end) {\r\n // Cache miss\r\n if (item.css.url && !cache[item.css.url]) {\r\n const objectVtt: any = {\r\n background: item.css.background,\r\n width: item.css.width,\r\n height: item.css.height\r\n };\r\n cache[item.css.url] = objectVtt;\r\n return objectVtt;\r\n } else if (item.css.url) return cache[item.css.url];\r\n }\r\n }\r\n};\r\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 }, [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 { ChangeEvent, RefObject, useEffect } from \"react\";\r\n\r\nconst useOnClickOutside = (ref: RefObject<HTMLInputElement>, handler: (event: ChangeEvent<HTMLInputElement>) => void) => {\r\n useEffect(() => {\r\n const listener = (event: any) => {\r\n // Do nothing if clicking ref's element or descendent elements\r\n if (!ref.current || ref.current.contains(event.target)) return;\r\n handler(event);\r\n };\r\n document.addEventListener(\"mousedown\", listener);\r\n document.addEventListener(\"touchstart\", listener);\r\n return () => {\r\n document.removeEventListener(\"mousedown\", listener);\r\n document.removeEventListener(\"touchstart\", listener);\r\n };\r\n }, [ref, handler]);\r\n};\r\n\r\nexport default useOnClickOutside;\r\n","import { IEmojiProps } from \"../../../helpers/interfaces/interfaces\";\r\nimport { getEmojiUrl } from \"../../../helpers/services/baseUrl\";\r\n\r\nconst Emoji = ({ name, className, dataMarker }: IEmojiProps) => {\r\n return <img data-marker={dataMarker} src={`${getEmojiUrl()}/${name}.png`} alt={name} className={className} />;\r\n};\r\n\r\nexport default Emoji;\r\n","import { memo } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport FullScreen from \"../../fullScreen/fullScreen\";\r\nimport PictureInPicture from \"../../pictureInPicture/pictureInPicture\";\r\nimport SoundVolume from \"../../soundVolume/soundVolume\";\r\nimport Settings from \"../../settings/settings\";\r\nimport { useAppSelector } from \"../../../../helpers/redux/hooks\";\r\nimport { ConditionName } from \"../../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../../helpers/conditions/conditions\";\r\nimport Speed from \"../../speed/speed\";\r\nimport QualityLevels from \"../../qualityLevels/qualityLevels\";\r\nimport ElapsedTime from \"../../elapsedTime/elapsedTime\";\r\nimport Unlock from \"../../lockUnlock/unlock\";\r\nimport SubtitleIcon from \"../../subtitles/subtitleIcon\";\r\nimport MarkersList from \"../../markersList/markersList\";\r\n\r\nconst Controlbar = () => {\r\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\r\n useAppSelector(\r\n ({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }),\r\n shallowEqual\r\n );\r\n\r\n let styles = \"\";\r\n if (conditions(ConditionName.isTouchScreen)) {\r\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-mx-6\"\r\n else styles = \"pl-mx-4\"\r\n } else {\r\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-mx-8\"\r\n else styles = \"pl-mx-4\"\r\n }\r\n\r\n return (\r\n <div id=\"player-controllbar\" className={`pl-flex pl-justify-between pl-items-center ${styles}`}>\r\n <div\r\n className={`pl-flex pl-items-center pl-gap-5`}\r\n >\r\n <FullScreen />\r\n {conditions(ConditionName.isTouchScreenLandscape) && <Unlock />}\r\n {conditions(ConditionName.showPictureInPicture) && <PictureInPicture />}\r\n {conditions(ConditionName.showSettingIcon) && <Settings />}\r\n {conditions(ConditionName.isFullScreen) && !conditions(ConditionName.isStaticFormat) && <QualityLevels showQualityLevelsIcon={true} />}\r\n {(conditions(ConditionName.isFullScreen) || conditions(ConditionName.isStaticFormat)) && <Speed showSpeedIcon={true} />}\r\n {conditions(ConditionName.hasSubtitles) && !conditions(ConditionName.isTouchScreenPortrait) && <SubtitleIcon />}\r\n </div>\r\n <div className={`pl-flex pl-items-center pl-gap-5`}>\r\n {conditions(ConditionName.isTouchScreenPortrait) && <ElapsedTime />}\r\n {!conditions(ConditionName.isIOS) && <SoundVolume />}\r\n {conditions(ConditionName.hasMarkers) && <MarkersList />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(Controlbar);\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 { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport { handleFullScreen, handleLockOrientation } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport Image from \"next/legacy/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\n\r\nconst FullScreen = () => {\r\n const { isFullScreen } = useAppSelector(({ controller: { firstPlay, isFullScreen } }) => ({ firstPlay, isFullScreen }), shallowEqual);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const dispatch = useAppDispatch();\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 className=\"pl-relative pl-flex pl-items-center\">\r\n <Image\r\n src={conditions(ConditionName.isFullScreen) ? IMAGES.nonFullScreen : IMAGES.fullScreen}\r\n alt=\"fullScreen-icon\"\r\n className={`pl-cursor-pointer`}\r\n width={20}\r\n height={20}\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 />\r\n {showTooltip && (\r\n <ControllbarTooltip\r\n title={`${conditions(ConditionName.isFullScreen) ? \"خروج از\" : \"\"} تمام صفحه`}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FullScreen;\r\n","import { conditions } from \"../../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../../helpers/interfaces/enums\";\r\nimport { IControllbarTooltipProps } from \"../../../../helpers/interfaces/interfaces\";\r\n\r\nconst ControllbarTooltip = ({ title, className }: IControllbarTooltipProps) => (\r\n <span\r\n className={`pl-absolute pl-w-max pl-bg-paper pl-text-white/[0.9] ${conditions(ConditionName.isFullScreen) ? \"pl-bottom-[300%]\" : \"pl-bottom-[270%]\"} pl-rounded-[8px] pl-text-[10px] pl-px-4 pl-py-[13px] pl-font-normal ${className}`}\r\n >\r\n {title}\r\n </span>\r\n);\r\n\r\nexport default ControllbarTooltip;\r\n","import { 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 { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport Image from \"next/legacy/image\";\r\nimport { mainPlayerVideoTag } from \"../../../helpers/constants\";\r\nimport { setPlay } from \"../../../helpers/redux/slices/controllerSlice\";\r\n\r\nconst PictureInPicture = () => {\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const dispatch = useAppDispatch();\r\n const { params, details } = useAppSelector(({ videoData: { params, details } }) => ({ params, details }), shallowEqual);\r\n return (\r\n <div className=\"pl-relative pl-flex pl-items-center\">\r\n <Image\r\n alt=\"\"\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n src={IMAGES.pictureInPicture}\r\n width={20}\r\n height={20}\r\n className=\"pl-flex pl-cursor-pointer\"\r\n onClick={() => {\r\n if (params.onClickMiniPlayerIcon) {\r\n localStorage.removeItem(\"close-miniPlayer\");\r\n mainPlayerVideoTag().pause();\r\n dispatch(setPlay(false));\r\n params.onClickMiniPlayerIcon({ video: details ? details : undefined, id: params.type === \"vod\" ? params.id : window.btoa(params.id!), type: params.type, currentTime: mainPlayerVideoTag().currentTime })\r\n }\r\n }}\r\n />\r\n {showTooltip && <ControllbarTooltip title=\"تصویر در تصویر\" />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PictureInPicture;\r\n","import { useRef, useState } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport Image from \"next/legacy/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\n\r\nconst SoundVolume = () => {\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 className={`pl-relative pl-inline-flex pl-items-center pl-gap-2 pl-sound-icon`}>\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 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 className=\"pl-relative pl-flex pl-items-center\">\r\n <Image\r\n src={conditions(ConditionName.hasSound) ? IMAGES.unMute : 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={20}\r\n height={20}\r\n onClick={() => (conditions(ConditionName.hasSound) ? handleMute(\"mute\") : handleMute(\"unmute\"))}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n {showTooltip && (\r\n <ControllbarTooltip\r\n className=\"pl-left-0\"\r\n title={`صدا`}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SoundVolume;\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/legacy/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 Toggle from \"../toggle/toggle\";\r\nimport { handleSubtitle } from \"../../../helpers/redux/actions/videoData.actions\";\r\nimport SpeedIcon from \"../../icon-components/speed\";\r\nimport SubtitleSettingMenu from \"../subtitles/subtitleSettingMenu\";\r\n\r\nconst Settings = () => {\r\n const dispatch = useAppDispatch();\r\n const {selectedSubtitle} = useAppSelector(({ videoData: { params, subtitles, selectedSubtitle } }) => ({ params, subtitles, selectedSubtitle }), shallowEqual);\r\n const { settingPopover } = useAppSelector(({ popovers: { settingPopover } }) => ({ settingPopover }), shallowEqual);\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(() => setSection(SettingSections.main), 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={`pl-flex pl-items-center pl-relative pl-cursor-pointer`}\r\n onClick={() => dispatch(setSettingPopover(!settingPopover))}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.showSettingPopover) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n >\r\n <Image\r\n src={IMAGES.settings}\r\n alt=\"\"\r\n width={20}\r\n height={20}\r\n />\r\n {showTooltip && <ControllbarTooltip title=\"تنظیمات\" />}\r\n </div>\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-white ${conditions(ConditionName.isTouchScreen) ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\" : \"!pl-w-[230px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"} ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[285px] tablet:!pl-mx-auto\"} ${conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[285px]\"}`}\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.isTouchScreenPortrait)}\r\n ref={conditions(ConditionName.isTouchScreenPortrait) ? settingsRef : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n customHeader={<></>}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n >\r\n <>\r\n {section === SettingSections.main && (\r\n <div id={SettingSections.main} className=\"pl-p-4 pl-rounded-[10px] pl-flex pl-flex-col pl-gap-5 animate__animated animate__fadeIn\">\r\n {!conditions(ConditionName.isStaticFormat) && (\r\n <>\r\n <div className=\"pl-flex pl-items-center pl-gap-[10px] pl-cursor-pointer\" onClick={() => setSection(SettingSections.qualityLevels)}>\r\n <Image \r\n src={IMAGES.qualitySetting}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n <p className={`pl-ml-auto pl-text-[12px] pl-font-medium pl-text-black/[0.87]`}>کیفیت پخش</p>\r\n <Image\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 )}\r\n {/* {conditions(ConditionName.hasSubtitles) && (\r\n <div className=\"pl-flex pl-items-center pl-gap-[10px] pl-cursor-pointer\" onClick={() => setSection(SettingSections.subtitles)}>\r\n <SpeedIcon className=\"size-5 pl-fill-black/[0.5]\"/>\r\n <p className={`pl-ml-auto pl-text-[12px] pl-font-medium pl-text-black/[0.87]`}>تنظیمات زیرنویس</p>\r\n <Image\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 <div className=\"pl-flex pl-items-center pl-gap-[10px] pl-cursor-pointer\" onClick={() => setSection(SettingSections.speed)}>\r\n <SpeedIcon className=\"size-5 pl-fill-black/[0.5]\"/>\r\n <p className={`pl-ml-auto pl-text-[12px] pl-font-medium pl-text-black/[0.87]`}>سرعت</p>\r\n <Image\r\n src={IMAGES.chevronLeft}\r\n alt=\"\"\r\n width={16}\r\n height={16}\r\n />\r\n </div>\r\n {conditions(ConditionName.hasSubtitles) && conditions(ConditionName.isTouchScreenPortrait) && (\r\n <div className=\"pl-flex pl-items-center pl-gap-[10px] pl-cursor-pointer\">\r\n <Image\r\n src={IMAGES.subtitleOutlineGray}\r\n alt=\"subtitle-icon\"\r\n width={20}\r\n height={20}\r\n />\r\n <p className={`pl-ml-auto pl-text-[12px] pl-font-medium pl-text-black/[0.87]`}>زیرنویس</p>\r\n <Toggle enabled={!!selectedSubtitle} setEnabled={handleSubtitle} />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {section === SettingSections.qualityLevels && <QualityLevels setSection={setSection} />}\r\n {section === SettingSections.speed && <Speed setSection={setSection} />}\r\n {section === SettingSections.subtitles && <SubtitleSettingMenu setSection={setSection} />}\r\n </>\r\n </Popover>\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(Settings);\r\n","import { TouchEvent, forwardRef, useEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { IPopoverProps } from \"../../../helpers/interfaces/interfaces\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, zIndex } from \"../../../helpers/interfaces/enums\";\r\nimport CloseIcon from \"../../icon-components/closeIcon\";\r\n\r\nconst Popover = forwardRef(\r\n (\r\n {\r\n children,\r\n status,\r\n onClose,\r\n type,\r\n classNames,\r\n parentClassNames,\r\n styles,\r\n isBlurBackground,\r\n isFullHeight = false,\r\n isHeader,\r\n isHasCatchUpLineOnTop = false,\r\n animation,\r\n scrollbar = false,\r\n isFocusOnInput = false,\r\n headerTitle = \"\",\r\n customHeader,\r\n headerClassName,\r\n showCloseIcon = true,\r\n }: IPopoverProps,\r\n ref: any\r\n ) => {\r\n const [showPopover, setShowPopover] = useState<boolean>(status!);\r\n\r\n const [heightOnTouchMove, setHeightOnTouchMove] = useState<number>(0);\r\n const [zIndexOnCatchUp, setZIndexOnCatchUp] = useState<number>(0);\r\n\r\n const { videoElementSizeInfo } = useAppSelector(({ videoData: { videoElementSizeInfo } }) => ({ videoElementSizeInfo }), shallowEqual);\r\n\r\n const popoverContentHeightRef = useRef<number>(0);\r\n\r\n useEffect(() => {\r\n let timeout: any = undefined;\r\n\r\n if (status) {\r\n setShowPopover(true);\r\n } else {\r\n timeout = setTimeout(() => {\r\n onClose(false);\r\n setHeightOnTouchMove(0);\r\n setShowPopover(false);\r\n }, 500);\r\n }\r\n\r\n return () => clearTimeout(timeout);\r\n }, [status]);\r\n\r\n const handleTouchMove = (event: any) => {\r\n const popoverContent = document.getElementById(\"popover-content\");\r\n if (!popoverContentHeightRef.current) popoverContentHeightRef.current = window.innerHeight - videoElementSizeInfo.top - popoverContent?.getBoundingClientRect().top!\r\n event.stopPropagation();\r\n if (window.innerHeight - videoElementSizeInfo.top - event.touches[0].clientY < popoverContentHeightRef.current) setHeightOnTouchMove(window.innerHeight - event.touches[0].clientY);\r\n setZIndexOnCatchUp(zIndex.maxPopover);\r\n };\r\n\r\n const handleTouchEnd = () => {\r\n onClose();\r\n };\r\n\r\n const content = (\r\n <>\r\n {isBlurBackground && (\r\n <div\r\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 ${status ? \"animate__fadeIn\" : \"animate__fadeOut\"\r\n }`}\r\n style={{ zIndex: zIndex.popoverBlurBackground }}\r\n />\r\n )}\r\n <div\r\n className={`${type === \"modal\" &&\r\n \"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\"\r\n } ${parentClassNames}`}\r\n style={{ zIndex: isFullHeight && !isFocusOnInput ? zIndexOnCatchUp : zIndex.popoverContent }}\r\n >\r\n <div\r\n className={`pl-flex pl-flex-col pl-rounded-[8px] animate__animated animate__faster pl-bg-white/[0.9]\r\n ${isFullHeight && \"pl-h-full\"}\r\n ${animation\r\n ? animation\r\n : window.innerWidth > 768 && type === \"modal\"\r\n ? status\r\n ? \"animate__fadeIn\"\r\n : \"animate__fadeOut\"\r\n : status\r\n ? \"animate__fadeInUp\"\r\n : \"animate__fadeOutDown\"\r\n }\r\n ${conditions(ConditionName.isTouchScreenPortrait)\r\n ? `!pl-fixed !pl-right-0 !pl-left-0 !pl-bottom-0 !pl-w-full !pl-mb-0 pl-rounded-[12px] !pl-rounded-b-none !pl-bg-white`\r\n : \"before:pl-hidden\"\r\n } \r\n ${type !== \"modal\" && \"pl-absolute pl-bottom-[130%] pl-overflow-auto no-scrollbar\"}\r\n ${classNames}\r\n `}\r\n style={{\r\n height: heightOnTouchMove ? heightOnTouchMove : \"max-content\",\r\n maxHeight: \"80vh\",\r\n zIndex: zIndex.popoverContent,\r\n ...styles,\r\n }}\r\n ref={ref}\r\n id=\"popover-content\"\r\n >\r\n <>\r\n {isHeader && (\r\n <div\r\n onTouchMove={isHasCatchUpLineOnTop ? handleTouchMove : () => { }}\r\n onTouchEndCapture={isHasCatchUpLineOnTop ? handleTouchEnd : () => { }}\r\n className=\"pl-py-4\"\r\n >\r\n {isHasCatchUpLineOnTop && (\r\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\" />\r\n )}\r\n <div\r\n className={`pl-mb-4 pl-border-b pl-border-secondary-300 dark:pl-border-secondary-400 pl-mx-4 ${headerClassName}`}\r\n >\r\n {customHeader ? (\r\n customHeader\r\n ) : (\r\n <div className=\"pl-flex pl-items-center pl-justify-between pl-py-[19px]\">\r\n <p className=\"pl-text-[18px] pl-text-black dark:pl-text-white pl-font-bold\">{headerTitle}</p>\r\n {showCloseIcon && (\r\n <CloseIcon\r\n className={`pl-cursor-pointer pl-stroke-secondary-400 dark:pl-stroke-dark-5`}\r\n onClick={onClose}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={`pl-overflow-y-auto pl-h-full pl-w-full ${!scrollbar && \"no-scrollbar\"}`}\r\n onTouchMove={(event: TouchEvent<HTMLDivElement>) => event.stopPropagation()}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n\r\n return (\r\n <>\r\n {showPopover && (\r\n <>\r\n {type === \"modal\" ? (\r\n createPortal(<>{content}</>, document.getElementById(\"dialog-react-root-videoPlayer\")!)\r\n ) : (\r\n <div>{content}</div>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n }\r\n);\r\n\r\nPopover.displayName = \"popover\";\r\n\r\nexport default Popover;\r\n","import { ICloseIconProps } from \"../../helpers/interfaces/interfaces\";\r\n\r\nconst CloseIcon = ({ className, onClick }: ICloseIconProps) => {\r\n return (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} onClick={onClick}>\r\n <path d=\"M6 6L18.7742 18.7742\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n <path d=\"M6 18.7744L18.7742 6.00022\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default CloseIcon;\r\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/legacy/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 useAppSelector(({ videoData: { params, videoElementSizeInfo } }) => ({ params, videoElementSizeInfo }), shallowEqual);\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 id={SettingSections.qualityLevels} className=\"animate__animated animate__fadeIn pl-py-2\">\r\n <ul className=\"pl-flex pl-flex-col pl-gap-2\">\r\n {qualityLevels.map((qualityLevel: number, index: number) => (\r\n <li\r\n key={index}\r\n className={`pl-flex pl-items-center pl-ps-[24.2px] pl-text-[14px] pl-font-medium pl-rounded-[4px] pl-relative pl-cursor-pointer ${handleTickSelectedQuality(index - 1, qualityLevel) && \"pl-bg-primary/[0.12] !pl-cursor-default\"\r\n } ${conditions(ConditionName.isTouchScreen) ? \"pl-py-[13.5px]\" : \"pl-py-[9.5px]\"}`}\r\n onClick={handleTickSelectedQuality(index - 1, qualityLevel) ? () => { } : () => {\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 {!conditions(ConditionName.isTouchScreen) && handleTickSelectedQuality(index - 1, qualityLevel) && (\r\n <div className=\"pl-absolute pl-right-[11.8px]\">\r\n <Image\r\n src={IMAGES.tick}\r\n alt=\"\"\r\n width={12}\r\n height={9}\r\n />\r\n </div>\r\n )}\r\n {conditions(ConditionName.isTouchScreen) && (\r\n <div className={`pl-w-5 pl-h-5 pl-rounded-full pl-border pl-border-black/[0.5] pl-p-0.5 ${handleTickSelectedQuality(index - 1, qualityLevel) && \"pl-border-primary\"}`}>\r\n {handleTickSelectedQuality(index - 1, qualityLevel) && <div className=\"pl-w-full pl-h-full pl-rounded-full pl-bg-primary\"/>}\r\n </div>\r\n )}\r\n <span className={`pl-w-full pl-text-[14px] pl-text-black/[0.87] ${conditions(ConditionName.isTouchScreen) ? \"pl-pr-[21px]\" : \"pl-pr-[10px]\"}`}>\r\n {qualityLevel === -1 ? (\r\n <span>\r\n <span>خودکار </span>\r\n <span className=\"pl-text-[10px] pl-font-normal pl-text-black/[0.5]\">(بر اساس سرعت اینترنت شما)</span>\r\n </span>\r\n ) : `${qualityLevel}p`}\r\n </span>\r\n </li>\r\n ))}\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.qualitySetting1}\r\n alt=\"speed-icon\"\r\n width={20}\r\n height={20}\r\n onClick={() => dispatch(setQualityLevelsPopover(!qualityLevelsPopover))}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && !conditions(ConditionName.showQualityLevelsPopover) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n className=\"pl-cursor-pointer\"\r\n />\r\n {showTooltip && (\r\n <ControllbarTooltip\r\n title=\"کیفیت\"\r\n />\r\n )}\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-white ${conditions(ConditionName.isTouchScreen) ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\" : \"pl-right-0 pl-mb-[33px] !pl-rounded-[12px] pl-w-[230px]\"} ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:pl-max-w-[440px]\"} ${conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"}`}\r\n status={qualityLevelsPopover}\r\n onClose={() => dispatch(setQualityLevelsPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreenPortrait)}\r\n ref={conditions(ConditionName.isTouchScreenPortrait) ? qualityLevelsRef : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n customHeader={<></>}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\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\n\r\nexport default memo(QualityLevels);\r\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/legacy/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\nconst 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 useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), shallowEqual);\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 useEffect(() => {\r\n if (mainPlayerVideoTag()) mainPlayerVideoTag().playbackRate = settings.speed;\r\n }, []);\r\n\r\n const speedContent = (\r\n <div id={SettingSections.speed} className=\"animate__animated animate__fadeIn pl-py-2\">\r\n <ul className=\"pl-flex pl-flex-col pl-gap-2\">\r\n {speeds.map((speed: number, index: number) => (\r\n <li\r\n key={index}\r\n className={`pl-flex pl-items-center pl-ps-[24.2px] pl-text-[14px] pl-font-medium pl-rounded-[4px] pl-relative pl-cursor-pointer ${settings.speed === speed && \"pl-bg-primary/[0.12] !pl-cursor-default\"} ${conditions(ConditionName.isTouchScreen) ? \"pl-py-[13.5px]\" : \"pl-py-[9.5px]\"}`}\r\n onClick={settings.speed === speed ? () => { } : () => {\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 }}\r\n >\r\n {!conditions(ConditionName.isTouchScreen) && settings.speed === speed && (\r\n <div className=\"pl-absolute pl-right-[11.8px]\">\r\n <Image\r\n src={IMAGES.tick}\r\n alt=\"\"\r\n width={12}\r\n height={9}\r\n />\r\n </div>\r\n )}\r\n {conditions(ConditionName.isTouchScreen) && (\r\n <div className={`pl-w-5 pl-h-5 pl-rounded-full pl-border pl-border-black/[0.5] pl-p-0.5 ${settings.speed === speed && \"pl-border-primary\"}`}>\r\n {settings.speed === speed && <div className=\"pl-w-full pl-h-full pl-rounded-full pl-bg-primary\" />}\r\n </div>\r\n )}\r\n <p className={`pl-w-full pl-flex pl-items-center pl-gap-2 pl-text-black/[0.87] ${conditions(ConditionName.isTouchScreen) ? \"pl-pr-[21px]\" : \"pl-pr-[10px]\"}`}>{speed}</p>\r\n </li>\r\n ))}\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 className=\"pl-size-5 pl-cursor-pointer size-5 pl-fill-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 && (\r\n <ControllbarTooltip\r\n title=\"سرعت\"\r\n />\r\n )}\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-white ${conditions(ConditionName.isTouchScreen) ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\" : \"!pl-w-[230px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"} ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"}`}\r\n status={speedPopover}\r\n onClose={() => dispatch(setSpeedPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreenPortrait)}\r\n ref={conditions(ConditionName.isTouchScreenPortrait) ? speedRef : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n customHeader={<></>}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\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\n\r\nexport default Speed;\r\n","import { ISpeedProps } from \"../../helpers/interfaces/interfaces\";\r\n\r\nconst SpeedIcon = ({ className, onClick, onMouseOver, onMouseLeave }: ISpeedProps) => {\r\n return (\r\n <svg width=\"18\" height=\"15\" viewBox=\"0 0 18 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} onClick={onClick} onMouseOver={onMouseOver} onMouseLeave={onMouseLeave}>\r\n <path d=\"M10.5488 1.53559C8.20532 1.02852 5.66339 1.68608 3.84359 3.50588C1.15649 6.19298 1.00481 10.4572 3.39041 13.3215C3.55135 13.5148 3.8176 13.6347 4.13036 13.6347H13.8687C14.1816 13.6347 14.4476 13.5149 14.6085 13.3217C16.0815 11.5533 16.5884 9.25027 16.1258 7.11249C16.0528 6.77512 16.2671 6.44245 16.6045 6.36945C16.9418 6.29645 17.2745 6.51077 17.3475 6.84814C17.8886 9.34866 17.2968 12.0474 15.569 14.1217C15.1326 14.6455 14.489 14.8847 13.8687 14.8847H4.13036C3.50995 14.8847 2.86616 14.6453 2.42991 14.1215C-0.36559 10.765 -0.188583 5.77029 2.95971 2.622C5.09241 0.489299 8.07189 -0.279272 10.8132 0.31386C11.1505 0.386857 11.3648 0.719527 11.2918 1.0569C11.2188 1.39427 10.8862 1.60859 10.5488 1.53559Z\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.9976 2.66523C15.2417 2.9093 15.2417 3.30503 14.9976 3.54911L10.7129 7.83399C10.8469 8.09798 10.9225 8.39667 10.9225 8.713C10.9225 9.78688 10.0519 10.6574 8.97805 10.6574C7.90417 10.6574 7.03362 9.78688 7.03362 8.713C7.03362 7.63912 7.90417 6.76856 8.97805 6.76856C9.27953 6.76856 9.56498 6.83718 9.81965 6.95963C9.82222 6.95697 9.82483 6.95432 9.82746 6.95168L14.1137 2.66525C14.3578 2.42116 14.7535 2.42115 14.9976 2.66523ZM9.67249 8.713C9.67249 9.09652 9.36158 9.40743 8.97805 9.40743C8.59453 9.40743 8.28362 9.09652 8.28362 8.713C8.28362 8.32947 8.59453 8.01856 8.97805 8.01856C9.36158 8.01856 9.67249 8.32947 9.67249 8.713Z\" />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default SpeedIcon;\r\n","import { IToggleProps } from \"../../../helpers/interfaces/interfaces\";\r\n\r\nconst Toggle = ({ enabled, setEnabled }: IToggleProps) => {\r\n return (\r\n <div\r\n className={`pl-relative pl-h-[22px] pl-w-[37px] pl-cursor-pointer pl-rounded-[15px] pl-transition-colors pl-duration-150 pl-ease-linear ${enabled ? \"pl-bg-primary pl-border pl-border-transparent\" : \"pl-bg-secondary-200 pl-border pl-border-gray-highLight\"}`}\r\n onClick={setEnabled}\r\n >\r\n <div className={`pl-absolute pl-left-1 pl-top-[2px] pl-w-[16px] pl-h-[16px] pl-rounded-full pl-transition-transform pl-duration-150 pl-ease-linear ${enabled ? \"pl-bg-white pl-translate-x-[13px]\" : \"pl-bg-black/[0.16] -pl-translate-x-0.5\"}`} />\r\n </div>\r\n );\r\n};\r\n\r\nexport default Toggle;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { memo } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport { setSettingPopover } from \"../../../helpers/redux/slices/popoversSlice\";\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\n\r\nconst SubtitlesMenu = ({ setSection }: any) => {\r\n const dispatch = useAppDispatch();\r\n const { subtitles, selectedSubtitle } = useAppSelector(\r\n ({ videoData: { subtitles, selectedSubtitle } }) => ({ subtitles, selectedSubtitle }),\r\n shallowEqual\r\n );\r\n\r\n return (\r\n <div id={SettingSections.subtitles} className=\"animate__animated animate__fadeIn pl-p-[14px]\">\r\n <ul className=\"pl-flex pl-flex-col pl-p-0 pl-m-0\">\r\n <li\r\n className={`pl-flex pl-items-center pl-text-[14px] pl-rounded-[4px] pl-relative pl-cursor-pointer pl-leading-6 hover:pl-bg-main/[0.1] hover:dark:pl-bg-white/[0.25] pl-p-1 pl-pr-2 ${\r\n !selectedSubtitle && \"pl-bg-main-light hover:!pl-bg-main-light pl-text-dark-5\"\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 بدون زیرنویس\r\n </li>\r\n {subtitles.map((subtitle: any, index: number) => (\r\n <li\r\n key={index}\r\n className={`pl-flex pl-items-center pl-text-[14px] pl-rounded-[4px] pl-relative pl-cursor-pointer pl-leading-6 hover:pl-bg-main/[0.1] hover:dark:pl-bg-white/[0.25] pl-p-1 pl-pr-2 ${\r\n selectedSubtitle &&\r\n selectedSubtitle.language === subtitle.language &&\r\n \"pl-bg-main-light hover:!pl-bg-main-light pl-text-dark-5\"\r\n }`}\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 <span>{subtitle.label}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(SubtitlesMenu);\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { secondsToHMS } from \"../../../helpers/helpers\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\n\r\nconst ElapsedTime = () => {\r\n const { duration, currentTime } = useAppSelector(\r\n ({ controller: { duration, currentTime } }) => ({ duration, currentTime }),\r\n shallowEqual\r\n );\r\n useAppSelector(\r\n ({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }),\r\n shallowEqual\r\n );\r\n\r\n return (\r\n <>\r\n <div\r\n className={`pl-mr-auto !pl-text-white pl-w-full pl-max-w-max pl-text-[12px] pl-font-bold ${conditions(ConditionName.isFullScreen) ? \"pl-ml-8\" : \"pl-ml-4\"} ${conditions(ConditionName.isTouchScreenPortrait) ? \"!pl-ml-0\" : \"pl-absolute pl-left-0 pl-bottom-full pl-mb-[33px]\"}`}\r\n >\r\n <span>{secondsToHMS(duration)}</span>\r\n <span> / </span>\r\n <span>{secondsToHMS(currentTime)}</span>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ElapsedTime;\r\n","import Image from \"next/legacy/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport { handleLock } from \"../../../helpers/redux/actions/controller.actions\";\r\n\r\nconst Unlock = () => {\r\n\r\n return (\r\n <Image \r\n src={IMAGES.unlock} \r\n alt=\"unlock-icon\" \r\n width={20} \r\n height={20}\r\n onClick={() => handleLock(\"lock\")}\r\n />\r\n );\r\n};\r\n\r\nexport default Unlock;\r\n","import { useState } from \"react\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport Image from \"next/legacy/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\n\r\nconst SubtitleIcon = () => {\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n useAppSelector(({ videoData: { selectedSubtitle, videoElementSizeInfo, params } }) => ({ selectedSubtitle, videoElementSizeInfo, params }),shallowEqual);\r\n\r\n return (\r\n <div className=\"pl-relative pl-flex pl-items-center\">\r\n <Image\r\n alt=\"subtitle-icon\"\r\n src={conditions(ConditionName.isSelectedSubtitle) ? IMAGES.subtitleFill : IMAGES.subtitleOutline}\r\n className=\"pl-cursor-pointer\"\r\n width={20}\r\n height={20}\r\n onClick={handleSubtitle}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n {showTooltip && <ControllbarTooltip title=\"زیرنویس\" />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default SubtitleIcon;\r\n","import { useRef, useState } from \"react\";\nimport Image from \"next/legacy/image\";\nimport Popover from \"../popover/popover\";\nimport Emoji from \"../emoji/emoji\";\nimport { IMarker } from \"../../../helpers/interfaces/interfaces\";\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\nimport { shallowEqual } from \"react-redux\";\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\nimport { mainPlayerVideoTag, progressBar } from \"../../../helpers/constants\";\nimport { conditions } from \"../../../helpers/conditions/conditions\";\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\nimport { handleVideoTimeline } from \"../../../helpers/redux/actions/controller.actions\";\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\nimport { eventMarkerClickLog } from \"../../../helpers/logs/logs\";\nimport MarkersListIcon from \"./markersListIcon\";\nimport { setMarkersListPopover } from \"../../../helpers/redux/slices/popoversSlice\";\nimport { getMarkerPosition } from \"../../../helpers/redux/actions/progressbar.actions\";\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\nimport { secondsToHMS } from \"../../../helpers/helpers\";\n\nconst MarkersList = () => {\n const [videoCurrentTime, setVideoCurrentTime] = useState<number>(0);\n const [markerId, setMarkerId] = useState<number | undefined>(undefined);\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\n\n const { markers, params } = useAppSelector(\n ({ videoData: { markers, params, videoElementSizeInfo } }) => ({\n markers,\n params,\n videoElementSizeInfo\n }),\n shallowEqual\n );\n const { markersListPopover } = useAppSelector(\n ({ popovers: { markersListPopover } }) => ({ markersListPopover }),\n shallowEqual\n );\n // useAppSelector(({ controller: { showMiniPlayer } }) => ({ showMiniPlayer }), shallowEqual);\n const markersListRef = useRef(null);\n\n const dispatch = useAppDispatch();\n\n const handleClickShare = (event: any, markerTime: number) => {\n event.preventDefault();\n event.stopPropagation();\n // dispatch(setSharePopover(true));\n setVideoCurrentTime(markerTime);\n const result = markers.find((marker: any) => marker.time === markerTime)?.id;\n setMarkerId(result);\n };\n\n useOnClickOutside(markersListRef, () => dispatch(setMarkersListPopover(false)));\n\n const handleClickMarker = (markerTime: number, markerId: number, markerTitle: String, markerDescription: String, markerSticker: String) => {\n if (progressBar()) progressBar().style.width = `${getMarkerPosition(markerTime)}px`;\n handleVideoTimeline(mainPlayerVideoTag().currentTime, markerTime);\n mainPlayerVideoTag().currentTime = markerTime;\n dispatch(setMarkersListPopover(false));\n sendFluentLog(eventMarkerClickLog(markerId, markerTime, markerTitle, markerDescription, markerSticker));\n };\n\n const handleShowMarkerListPopover = () => {\n dispatch(setMarkersListPopover(!markersListPopover));\n };\n\n return (\n <div\n className={`pl-flex pl-items-center pl-p-1 pl-relative ${\n conditions(ConditionName.showMarkerListPopover) && \"pl-bg-secondary-50/[0.4] pl-rounded-[4px]\"\n }`}\n ref={markersListRef}\n >\n <MarkersListIcon\n className={`pl-cursor-pointer pl-fill-dark-5`}\n onClick={handleShowMarkerListPopover}\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\n />\n {showTooltip && <ControllbarTooltip title={`لیست نشانگرها (e)`} className=\"!pl-bottom-[180%] !pl-right-[-48px]\" />}\n <Popover\n classNames={`!pl-p-0 pl-left-0 !pl-bg-white dark:!pl-bg-dark-13 !pl-rounded-[4px] pl-mb-[33px]`}\n status={conditions(ConditionName.showMarkerListPopover)}\n onClose={() => {\n dispatch(setMarkersListPopover(false));\n }}\n headerTitle=\"نشانگرها\"\n isHeader={true}\n type={\"popover\"}\n >\n <div className=\"pl-flex pl-flex-col pl-gap-6 pl-mx-2 pl-mt-2\">\n <div className=\"pl-flex pl-flex-col pl-gap-2 pl-pb-2\">\n {markers.map((marker: IMarker) => (\n <div\n key={marker.id}\n onClick={() => handleClickMarker(marker.time, marker.id, marker.title, marker.description, marker.sticker)}\n className=\"odd:dark:pl-bg-dark-1 odd:pl-bg-main/[0.1] hover:pl-bg-main/[0.1] hover:dark:bg-white/[0.25] pl-rounded-[8px]\"\n >\n <div className=\"pl-flex pl-item-center pl-gap-2 pl-cursor-pointer pl-rounded-[4px] pl-relative pl-p-2 pl-mx-2\">\n {marker.banner || !marker.sticker ? (\n <Image\n src={marker.banner ? marker.banner : \"IMAGES.defaultMarkersListItemIcon\"}\n width={40}\n height={40}\n alt={marker.title}\n />\n ) : (\n <div className=\"pl-w-[40px] pl-h-[40px] pl-bg-secondary dark:pl-bg-secondary-50 pl-rounded-[6px] pl-flex pl-items-center\">\n <Emoji name={marker.sticker} className=\"pl-w-[20px] pl-h-[20px] pl-mx-auto\" />\n </div>\n )}\n <div className=\"pl-text-gray-800 dark:pl-text-white\">\n <p className=\"pl-flex pl-items-center pl-mb-1 pl-text-[14px] pl-font-bold pl-w-[130px] pl-whitespace-nowrap pl-overflow-hidden pl-text-ellipsis\">\n <div>{marker.title}</div>\n </p>\n <p className=\"pl-text-[13px] pl-font-normal pl-w-[200px] pl-whitespace-nowrap pl-overflow-hidden pl-text-ellipsis\">\n {marker.description}\n </p>\n </div>\n <span\n className={`pl-absolute pl-left-9 pl-top-2 pl-text-[12px] pl-font-bold pl-bg-secondary/[0.3] dark:pl-bg-secondary/[0.6] pl-text-gray-800 dark:pl-text-white pl-rounded-[4px] pl-p-[3px]`}\n >\n {secondsToHMS(marker.time)}\n </span>\n {/* <ShareIcon\n className={`pl-flex pl-absolute pl-left-1 pl-top-3 pl-items-center pl-w-15 pl-h-15 pl-fill-gray-800 dark:pl-fill-white`}\n onClick={(event) => handleClickShare(event, marker.time)}\n /> */}\n </div>\n {/* {openPersonalMarkerMenu !== undefined && openPersonalMarkerMenu === marker.time && (\n <div className=\"pl-flex pl-item-center pl-cursor-pointer pl-rounded-[4px] pl-relative pl-p-2 pl-mx-2 pl-flex-col pl-w-full\">\n <hr className=\"pl-bg-secondary-300 pl-ml-2\" />\n <div className=\"pl-flex pl-items-center pl-w-full pl-pt-2\">\n <div\n className=\"pl-flex pl-gap-4 pl-items-center\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n dispatch(setSelectedPersonalMarker(marker));\n dispatch(setPersonalMarkersPopover(true));\n dispatch(setMarkersListPopover(false));\n }}\n >\n <div className=\"pl-p-3 pl-bg-main-light pl-rounded-[8px] pl-flex pl-items-center\">\n <Image\n className=\"pl-w-full pl-h-full\"\n src={IMAGES.editMarker}\n width={16}\n height={16}\n alt={marker.title}\n />\n </div>\n <span className=\"pl-text-gray-800 dark:pl-text-secondary-300 pl-text-[13px] pl-font-500\">ویرایش</span>\n </div>\n <div\n className=\"pl-flex pl-flex-1 pl-justify-center pl-gap-4 pl-items-center\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setDeleteMarker(marker);\n dispatch(setMarkersListPopover(false));\n }}\n >\n <div className=\"pl-p-3 pl-bg-main-light pl-rounded-[8px] pl-flex pl-items-center\">\n <Image\n className=\"pl-w-full pl-h-full\"\n src={IMAGES.trashMarker}\n width={16}\n height={16}\n alt={marker.title}\n />\n </div>\n <span className=\"pl-text-gray-800 dark:pl-text-secondary-300 pl-text-[13px] pl-font-500\">حذف</span>\n </div>\n </div>\n </div>\n )} */}\n </div>\n ))}\n </div>\n </div>\n </Popover>\n {/* <ShareDialog currentTime={videoCurrentTime} markerId={markerId} />\n <ConfirmationModal\n onClose={() => setDeleteMarker(undefined)}\n modalType={\"DELETE\"}\n status={!!deleteMarker}\n text={\"آیا از حذف نشانگر مطمئن هستید؟\"}\n cancelButtonText={\"انصراف\"}\n submitButtonText={\"حذف\"}\n onSubmit={() => handleDeleteMarker(deleteMarker!)}\n >\n <div className=\"pl-flex pl-flex-col pl-gap-1 pl-text-[16px] pl-font-medium pl-items-center pl-justify-between dark:pl-text-white pl-text-secondary-800 pl-my-4\">\n <div className=\"pl-relative pl-flex pl-flex-col pl-justify-center pl-items-center pl-self-center pl-shrink-0 pl-border pl-border-[1.5px] pl-rounded-[12px] pl-bg-main/[0.1] pl-w-[126px] pl-h-[110px]\">\n <span className=\"pl-emoji-mart-emoji pl-flex pl-flex-col pl-items-center pl-gap-[11px] pl-justify-center pl-h-full\">\n <Emoji name={deleteMarker?.sticker} className=\"pl-w-[56px] pl-h-[56px] pl-mx-auto\" />\n </span>\n </div>\n <div>{deleteMarker?.title}</div>\n </div>\n </ConfirmationModal> */}\n </div>\n );\n};\n\nexport default MarkersList;\n","import { shallowEqual } from \"react-redux\";\r\nimport { useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { IMarkerListIconProps } from \"../../../helpers/interfaces/interfaces\";\r\n\r\nconst MarkersListIcon = (props: IMarkerListIconProps) => {\r\n useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), shallowEqual);\r\n\r\n return <svg\r\n width={20}\r\n height={20}\r\n viewBox=\"0 0 22 22\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n>\r\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1.5\" />\r\n <rect x=\"3\" y=\"9\" width=\"4\" height=\"4\" rx=\"1.5\" />\r\n <rect x=\"3\" y=\"15\" width=\"4\" height=\"4\" rx=\"1.5\" />\r\n <rect x=\"8\" y=\"16\" width=\"11\" height=\"2\" rx=\"1\" />\r\n <rect x=\"8\" y=\"10\" width=\"11\" height=\"2\" rx=\"1\" />\r\n <rect x=\"8\" y=\"4\" width=\"11\" height=\"2\" rx=\"1\" />\r\n</svg>;\r\n};\r\n\r\nexport default MarkersListIcon;\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 { cleanVTT, spliteStringPerLine } from \"../../../helpers/helpers\";\r\n\r\nconst DisplaySubtitle = () => {\r\n const { subtitleText } = useAppSelector(({ videoData: { subtitleText, selectedSubtitle } }) => ({ subtitleText, selectedSubtitle }), shallowEqual);\r\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\r\n\r\n const subtitlePosition = () => {\r\n let styles = \"\";\r\n if (conditions(ConditionName.isLock)) styles = \"pl-bottom-3\";\r\n else if (conditions(ConditionName.isActiveElements)) {\r\n if (conditions(ConditionName.isTouchScreenPortrait)) styles = \"pl-bottom-[45px]\";\r\n else if(conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[120px]\";\r\n else styles = \"pl-bottom-[85px]\";\r\n }\r\n else if (!conditions(ConditionName.isActiveElements)) styles = \"pl-bottom-3\";\r\n\r\n return styles;\r\n };\r\n\r\n return (\r\n <div\r\n id={\"subtitle-id\"}\r\n style={{direction: \"ltr\"}}\r\n className={`pl-absolute pl-w-full pl-px-6 pl-text-center pl-text-[14px] ${conditions(ConditionName.isFullScreen) && \"pl-text-[16px]\"} pl-text-white pl-font-normal ${subtitlePosition()}`}\r\n >\r\n {spliteStringPerLine(subtitleText!).map((text, index) => (\r\n <p\r\n key={index}\r\n className={`pl-mx-auto`}\r\n style={{ textShadow: \"0 0 4px #000000\"}}\r\n >\r\n {cleanVTT(text)}\r\n </p>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DisplaySubtitle;\r\n","import dynamic from \"next/dynamic\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\n\r\nconst StaticVideoTag = dynamic(() => import(\"./staticVideoTag\"));\r\nconst NonStaticVideoTag = dynamic(() => import(\"./nonStaticVideoTag\"));\r\n\r\nconst VideoTag = () => {\r\n return <>{conditions(ConditionName.isStaticFormat) ? <StaticVideoTag /> : <NonStaticVideoTag /> }</>;\r\n};\r\n\r\nexport default VideoTag;\r\n","import { useEffect } from \"react\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../redux/hooks\";\r\nimport { setIsFullScreen } from \"../redux/slices/controllerSlice\";\r\nimport { handleVideoElementSizeInfo } from \"../redux/actions/controller.actions\";\r\nimport { fullscreenLog } from \"../logs/logs\";\r\nimport { sendFluentLog } from \"../logs/fluentdLogger\";\r\n\r\nconst useFullScreen = () => {\r\n const dispatch = useAppDispatch();\r\n useAppSelector(({ videoData: { params } }) => ({ params }), shallowEqual);\r\n\r\n useEffect(() => {\r\n const handleChangeFullScreen = () => {\r\n const isFullScreen = document.fullscreenElement;\r\n\r\n if (isFullScreen) dispatch(setIsFullScreen(true));\r\n else {\r\n dispatch(setIsFullScreen(false));\r\n handleVideoElementSizeInfo();\r\n sendFluentLog(fullscreenLog(\"exitFullScreen\"));\r\n }\r\n };\r\n\r\n if (document.addEventListener) {\r\n document.addEventListener(\"webkitfullscreenchange\", handleChangeFullScreen, false);\r\n document.addEventListener(\"mozfullscreenchange\", handleChangeFullScreen, false);\r\n document.addEventListener(\"fullscreenchange\", handleChangeFullScreen, false);\r\n document.addEventListener(\"MSFullscreenChange\", handleChangeFullScreen, false);\r\n }\r\n\r\n () => {\r\n document.removeEventListener(\"webkitfullscreenchange\", handleChangeFullScreen, false);\r\n document.removeEventListener(\"mozfullscreenchange\", handleChangeFullScreen, false);\r\n document.removeEventListener(\"fullscreenchange\", handleChangeFullScreen, false);\r\n document.removeEventListener(\"MSFullscreenChange\", handleChangeFullScreen, false);\r\n };\r\n }, []);\r\n};\r\n\r\nexport default useFullScreen;\r\n","import { useEffect, useRef } from \"react\";\r\nimport { checkParentTarget, isTouchScreen } from \"../helpers\";\r\nimport { activeElementsTime } from \"../environment\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../redux/hooks\";\r\nimport { setActiveElements } from \"../redux/slices/controllerSlice\";\r\nimport store from \"../redux/store\";\r\n\r\nconst useActiveInActive = (isRightDoubleTouched: boolean, isLeftDoubleTouched: boolean) => {\r\n const dispatch = useAppDispatch();\r\n const { activeElements } = useAppSelector(({ controller: { activeElements } }) => ({ activeElements }), shallowEqual);\r\n\r\n const timeoutRef = useRef<any>(null);\r\n const isRightDoubleTouchedRef = useRef<boolean>(isRightDoubleTouched);\r\n const isLeftDoubleTouchedRef = useRef<boolean>(isLeftDoubleTouched);\r\n\r\n useEffect(() => {\r\n isRightDoubleTouchedRef.current = isRightDoubleTouched;\r\n }, [isRightDoubleTouched]);\r\n\r\n useEffect(() => {\r\n isLeftDoubleTouchedRef.current = isLeftDoubleTouched;\r\n }, [isLeftDoubleTouched]);\r\n\r\n useEffect(() => {\r\n let shouldInActiveElements = false;\r\n\r\n const handlePointerMove = (event: any) => {\r\n const { activeElements, isEnded } = store.getState().controller;\r\n if (isEnded) dispatch(setActiveElements(true));\r\n else if (event.pointerType === \"mouse\") {\r\n clearTimeout(timeoutRef.current);\r\n if (!activeElements) dispatch(setActiveElements(true));\r\n else if (\r\n [\"player-tag\", \"main-content\", \"player-controllbar\", \"video-opacity\", \"playerElements\", \"touchBackward\", \"touchForward\"].includes(event.target.id)\r\n )\r\n shouldInActiveElements = true;\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover } = store.getState().popovers;\r\n const { play } = store.getState().controller;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && play && shouldInActiveElements) dispatch(setActiveElements(false));\r\n }, activeElementsTime);\r\n }\r\n };\r\n\r\n const handleTouchStart = (event: any) => {\r\n setTimeout(() => {\r\n const { activeElements, isEnded, firstPlay } = store.getState().controller;\r\n clearTimeout(timeoutRef.current);\r\n if (isEnded) return dispatch(setActiveElements(true));\r\n if (isTouchScreen() && !firstPlay && !isRightDoubleTouchedRef.current && !isLeftDoubleTouchedRef.current) {\r\n if (\r\n [\"player-tag\", \"main-content\", \"video-opacity\", \"touchBackward\", \"touchForward\"].includes(event.target.id) ||\r\n checkParentTarget(event, \"playerElements\")\r\n ) {\r\n dispatch(setActiveElements(!activeElements));\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover } = store.getState().popovers;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover) dispatch(setActiveElements(false));\r\n }, activeElementsTime);\r\n } else {\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover } = store.getState().popovers;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover) dispatch(setActiveElements(false));\r\n }, activeElementsTime);\r\n }\r\n }\r\n }, 200);\r\n };\r\n\r\n const handleTouchMove = () => {\r\n clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => {\r\n const { activeElements, isEnded } = store.getState().controller;\r\n const { settingPopover, speedPopover, qualityLevelsPopover } = store.getState().popovers;\r\n if (isEnded) dispatch(setActiveElements(true));\r\n else if (!settingPopover && !speedPopover && !qualityLevelsPopover && activeElements && !isEnded)\r\n dispatch(setActiveElements(!activeElements));\r\n }, activeElementsTime);\r\n };\r\n\r\n document.getElementById(\"video-area\")!.addEventListener(\"touchstart\", handleTouchStart);\r\n document.getElementById(\"video-area\")!.addEventListener(\"touchmove\", handleTouchMove);\r\n document.getElementById(\"video-area\")!.addEventListener(\"pointermove\", handlePointerMove);\r\n\r\n return () => {\r\n const videoArea = document.getElementById(\"video-area\")!;\r\n if (videoArea) {\r\n videoArea.removeEventListener(\"touchstart\", handleTouchStart);\r\n videoArea.removeEventListener(\"touchmove\", handleTouchMove);\r\n videoArea.removeEventListener(\"pointermove\", handlePointerMove);\r\n }\r\n };\r\n }, [activeElements, isRightDoubleTouched, isLeftDoubleTouched]);\r\n};\r\n\r\nexport default useActiveInActive;\r\n","import { useEffect } from \"react\";\r\nimport { handleVideoElementSizeInfo } from \"../redux/actions/controller.actions\";\r\nimport { useAppSelector } from \"../redux/hooks\";\r\nimport { isTouchScreen } from \"../helpers\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { mainPlayerVideoTag } from \"../constants\";\r\n\r\nconst useHandleResize = () => {\r\n\r\n const { firstPlay, isFullScreen } = useAppSelector(({ controller: { firstPlay, isFullScreen } }) => ({firstPlay,isFullScreen,}),shallowEqual);\r\n\r\n useEffect(() => {\r\n if (mainPlayerVideoTag()) {\r\n let timeout: any;\r\n const handleResize = () => {\r\n timeout = setTimeout(\r\n () => {\r\n handleVideoElementSizeInfo();\r\n },\r\n isTouchScreen() ? 0 : 300\r\n );\r\n };\r\n handleResize();\r\n window.addEventListener(\"resize\", handleResize);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n clearTimeout(timeout);\r\n };\r\n }\r\n }, [firstPlay, isFullScreen, mainPlayerVideoTag()]);\r\n}\r\n\r\nexport default useHandleResize;","import { useEffect } from \"react\";\r\nimport { useAppSelector } from \"../redux/hooks\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { handleSubtitle } from \"../redux/actions/videoData.actions\";\r\nimport { conditions } from \"../conditions/conditions\";\r\nimport { ConditionName } from \"../interfaces/enums\";\r\n\r\nconst useSetSubtitleFirstPlay = () => {\r\n\r\n const { firstPlay } = useAppSelector(({ controller: { firstPlay } }) => ({ firstPlay }), shallowEqual);\r\n useAppSelector(({ videoData: { details } }) => ({ details }), shallowEqual);\r\n\r\n useEffect(() => {\r\n if (conditions(ConditionName.setSubtitleFirstPlay)) handleSubtitle();\r\n }, [firstPlay]);\r\n}\r\n\r\nexport default useSetSubtitleFirstPlay;"]}
|
package/videoArea-AXJIXBW5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkY3GDFXWU_js=require('./chunk-Y3GDFXWU.js');require('./chunk-S3ULKQPB.js'),require('./chunk-LAFBWF7M.js'),require('./chunk-QHZJEU27.js'),require('./chunk-4AXKM55A.js'),require('./chunk-KODWZOFT.js'),require('./chunk-DQNYU4AM.js'),require('./chunk-WO4IQUGO.js');module.exports=chunkY3GDFXWU_js.a;//# sourceMappingURL=videoArea-AXJIXBW5.js.map
|
|
2
|
-
//# sourceMappingURL=videoArea-AXJIXBW5.js.map
|