cafe-video-player 2.4.2 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/{VideoHighLighter-VEYEES5O.mjs → VideoHighLighter-AA7I6AFZ.mjs} +2 -2
  2. package/{VideoHighLighter-VEYEES5O.mjs.map → VideoHighLighter-AA7I6AFZ.mjs.map} +1 -1
  3. package/{VideoHighLighter-3U5XWMWJ.js → VideoHighLighter-EMXMJJWG.js} +2 -2
  4. package/{VideoHighLighter-3U5XWMWJ.js.map → VideoHighLighter-EMXMJJWG.js.map} +1 -1
  5. package/backwardForward-OSLVEXHW.mjs +2 -0
  6. package/{backwardForward-N75PBTWN.mjs.map → backwardForward-OSLVEXHW.mjs.map} +1 -1
  7. package/backwardForward-PEKYA7G4.js +2 -0
  8. package/{backwardForward-E2NLBMMH.js.map → backwardForward-PEKYA7G4.js.map} +1 -1
  9. package/{chunk-UBKDWPP7.mjs → chunk-2J3G4ODR.mjs} +4 -4
  10. package/{chunk-UBKDWPP7.mjs.map → chunk-2J3G4ODR.mjs.map} +1 -1
  11. package/{chunk-KIC75NSX.mjs → chunk-4TQF43YU.mjs} +2 -2
  12. package/{chunk-KIC75NSX.mjs.map → chunk-4TQF43YU.mjs.map} +1 -1
  13. package/{chunk-BOS4UPEA.js → chunk-5HFX3MP2.js} +2 -2
  14. package/{chunk-BOS4UPEA.js.map → chunk-5HFX3MP2.js.map} +1 -1
  15. package/{chunk-SUV7NR2J.mjs → chunk-6V7Y4FV6.mjs} +2 -2
  16. package/{chunk-SUV7NR2J.mjs.map → chunk-6V7Y4FV6.mjs.map} +1 -1
  17. package/{chunk-M4NZ4V5H.mjs → chunk-A2WOHDUE.mjs} +3 -3
  18. package/{chunk-M4NZ4V5H.mjs.map → chunk-A2WOHDUE.mjs.map} +1 -1
  19. package/{chunk-4I3S32RN.mjs → chunk-CSWKETJ4.mjs} +2 -2
  20. package/{chunk-4I3S32RN.mjs.map → chunk-CSWKETJ4.mjs.map} +1 -1
  21. package/chunk-D6YE37GQ.js +3 -0
  22. package/{chunk-CIBMAE3N.js.map → chunk-D6YE37GQ.js.map} +1 -1
  23. package/{chunk-YZYTKWCY.mjs → chunk-FPUBUJN6.mjs} +2 -2
  24. package/chunk-FPUBUJN6.mjs.map +1 -0
  25. package/{chunk-HME64W2O.js → chunk-HSAWK74H.js} +2 -2
  26. package/chunk-HSAWK74H.js.map +1 -0
  27. package/{chunk-K4TUYQMW.js → chunk-I5PCCWLZ.js} +5 -5
  28. package/{chunk-K4TUYQMW.js.map → chunk-I5PCCWLZ.js.map} +1 -1
  29. package/{chunk-5LJKRSJU.js → chunk-IR7FV4FQ.js} +2 -2
  30. package/{chunk-5LJKRSJU.js.map → chunk-IR7FV4FQ.js.map} +1 -1
  31. package/chunk-JGG5BV2J.js +2 -0
  32. package/{chunk-BBWNG7HP.js.map → chunk-JGG5BV2J.js.map} +1 -1
  33. package/{chunk-L2M274SY.mjs → chunk-MSI72J5J.mjs} +2 -2
  34. package/{chunk-L2M274SY.mjs.map → chunk-MSI72J5J.mjs.map} +1 -1
  35. package/chunk-QZJECTZQ.mjs +2 -0
  36. package/{chunk-ZMWH4RA6.mjs.map → chunk-QZJECTZQ.mjs.map} +1 -1
  37. package/{chunk-MZP43FH7.mjs → chunk-R4YRPVUD.mjs} +2 -2
  38. package/{chunk-MZP43FH7.mjs.map → chunk-R4YRPVUD.mjs.map} +1 -1
  39. package/chunk-VJJNBNP2.js +2 -0
  40. package/{chunk-4SNO3QVC.js.map → chunk-VJJNBNP2.js.map} +1 -1
  41. package/chunk-WMEKSWX7.js +2 -0
  42. package/{chunk-5DVPBBOD.js.map → chunk-WMEKSWX7.js.map} +1 -1
  43. package/chunk-ZXBCSP2L.js +2 -0
  44. package/{chunk-D7CTAABP.js.map → chunk-ZXBCSP2L.js.map} +1 -1
  45. package/index.js +1 -1
  46. package/index.js.map +1 -1
  47. package/index.mjs +1 -1
  48. package/index.mjs.map +1 -1
  49. package/nonStaticVideoTag-CGE5567K.js +2 -0
  50. package/{nonStaticVideoTag-T4CIWREL.js.map → nonStaticVideoTag-CGE5567K.js.map} +1 -1
  51. package/{nonStaticVideoTag-RO6C2T36.mjs → nonStaticVideoTag-LEI3OS4G.mjs} +2 -2
  52. package/{nonStaticVideoTag-RO6C2T36.mjs.map → nonStaticVideoTag-LEI3OS4G.mjs.map} +1 -1
  53. package/package.json +1 -1
  54. package/staticPlayer-KE3BXILD.mjs +2 -0
  55. package/{staticPlayer-NXOOJTWO.mjs.map → staticPlayer-KE3BXILD.mjs.map} +1 -1
  56. package/staticPlayer-XP5433B2.js +2 -0
  57. package/{staticPlayer-DMILO6PN.js.map → staticPlayer-XP5433B2.js.map} +1 -1
  58. package/{staticVideoTag-IZI7PG7M.mjs → staticVideoTag-AUESR2OF.mjs} +2 -2
  59. package/{staticVideoTag-IZI7PG7M.mjs.map → staticVideoTag-AUESR2OF.mjs.map} +1 -1
  60. package/staticVideoTag-GZN2ANRV.js +2 -0
  61. package/{staticVideoTag-KT6PBJ7V.js.map → staticVideoTag-GZN2ANRV.js.map} +1 -1
  62. package/{touchVolumeBrightness-27EBEX5W.mjs → touchVolumeBrightness-EOA2JIOJ.mjs} +3 -3
  63. package/{touchVolumeBrightness-27EBEX5W.mjs.map → touchVolumeBrightness-EOA2JIOJ.mjs.map} +1 -1
  64. package/{touchVolumeBrightness-KAAGMQWI.js → touchVolumeBrightness-I4UWCQX6.js} +3 -3
  65. package/{touchVolumeBrightness-KAAGMQWI.js.map → touchVolumeBrightness-I4UWCQX6.js.map} +1 -1
  66. package/videoArea-D4BUXRIS.mjs +2 -0
  67. package/{videoArea-D5XF44HR.mjs.map → videoArea-D4BUXRIS.mjs.map} +1 -1
  68. package/videoArea-NJQ2YNRH.js +2 -0
  69. package/{videoArea-HORYPBAZ.js.map → videoArea-NJQ2YNRH.js.map} +1 -1
  70. package/vodPlayer-HJJHRCFP.js +2 -0
  71. package/{vodPlayer-VTPZZILH.js.map → vodPlayer-HJJHRCFP.js.map} +1 -1
  72. package/{vodPlayer-7IQILQHX.mjs → vodPlayer-ZWLHRYSH.mjs} +2 -2
  73. package/{vodPlayer-7IQILQHX.mjs.map → vodPlayer-ZWLHRYSH.mjs.map} +1 -1
  74. package/backwardForward-E2NLBMMH.js +0 -2
  75. package/backwardForward-N75PBTWN.mjs +0 -2
  76. package/chunk-4SNO3QVC.js +0 -2
  77. package/chunk-5DVPBBOD.js +0 -2
  78. package/chunk-BBWNG7HP.js +0 -2
  79. package/chunk-CIBMAE3N.js +0 -3
  80. package/chunk-D7CTAABP.js +0 -2
  81. package/chunk-HME64W2O.js.map +0 -1
  82. package/chunk-YZYTKWCY.mjs.map +0 -1
  83. package/chunk-ZMWH4RA6.mjs +0 -2
  84. package/nonStaticVideoTag-T4CIWREL.js +0 -2
  85. package/staticPlayer-DMILO6PN.js +0 -2
  86. package/staticPlayer-NXOOJTWO.mjs +0 -2
  87. package/staticVideoTag-KT6PBJ7V.js +0 -2
  88. package/videoArea-D5XF44HR.mjs +0 -2
  89. package/videoArea-HORYPBAZ.js +0 -2
  90. package/vodPlayer-VTPZZILH.js +0 -2
@@ -1 +1 @@
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/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/pictureInPicture/pictureInPicture.tsx","../src/videoPlayerLibrary/components/custom-components/settings/settings.tsx","../src/videoPlayerLibrary/components/custom-components/popover/popover.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/icon-components/audioIcon.tsx","../src/videoPlayerLibrary/components/custom-components/multiAudio/MultiAudio.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/useActiveInActive.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleResize.tsx","../src/videoPlayerLibrary/helpers/hooks/useSetSubtitleFirstPlay.tsx"],"names":["init_esm_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","Main","showLoader","setShowLoader","useState","showIcons","setShowIcons","firstPlay","isLoading","useEffect","timeout","showLoaderTime","loader_default","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","PictureInPicture","showTooltip","setShowTooltip","setPlay","controllbarTooltip_default","pictureInPicture_default","Popover","forwardRef","children","status","onClose","type","classNames","parentClassNames","styles","isBlurBackground","isFullHeight","isHeader","isHasCatchUpLineOnTop","animation","scrollbar","isFocusOnInput","showPopover","setShowPopover","heightOnTouchMove","setHeightOnTouchMove","zIndexOnCatchUp","setZIndexOnCatchUp","popoverContentHeightRef","handleTouchMove","popoverContent","handleTouchEnd","content","createPortal","popover_default","QualityLevels","setSection","showQualityLevelsIcon","qualityLevels","manualQuality","autoQuality","settings","qualityLevelsPopover","handleTickSelectedQuality","index","qualityLevel","qualityLevelsRef","setQualityLevelsPopover","qualityLevelsContent","qualityChangeRequestLog","setSettingPopover","setUserSettings","qualityLevels_default","SpeedIcon","onClick","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","AudioIcon","audioIcon_default","MultiAudio","showMultiAudioIcon","multiAudioPopover","multiAudio","selectedAudioId","setMultiAudioPopover","multiAudioContent","audio","setSelectedAudioId","MultiAudio_default","Settings","section","settingsRef","handleSubtitle","settings_default","ElapsedTime","elapsedTime_default","Unlock","unlock_default","SubtitleIcon","subtitleIcon_default","MarkersListIcon","props","markersListIcon_default","MarkersList","videoCurrentTime","setVideoCurrentTime","setMarkerId","markersListPopover","markersListRef","setMarkersListPopover","handleClickMarker","handleShowMarkerListPopover","markersList_default","Controlbar","fullScreen_default","soundVolume_default","controllbar_default","DisplaySubtitle","subtitleText","spliteStringPerLine","text","cleanVTT","displaySubtitle_default","Footer","footer_default","StaticVideoTag","dynamic","NonStaticVideoTag","VideoTag","videoTag_default","useActiveInActive","isRightDoubleTouched","isLeftDoubleTouched","timeoutRef","isRightDoubleTouchedRef","isLeftDoubleTouchedRef","shouldInActiveElements","isEnded","handleTouchStart","isTouchScreen","checkParentTarget","videoArea","useActiveInActive_default","useHandleResize","handleResize","handleVideoElementSizeInfo","useHandleResize_default","useSetSubtitleFirstPlay","useSetSubtitleFirstPlay_default","TouchVolumeBrightness","BackwardForward","VideoArea","setIsRightDoubleTouched","setIsLeftDoubleTouched","canPlayVideo","useFullScreen_default","popoverElement","handleDoubleClick","videoArea_default"],"mappings":"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","file":"chunk-UBKDWPP7.mjs","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 const popoverElement = document.getElementById(\"player-popover\");\r\n if(conditions(ConditionName.isFirstPlay) || !conditions(ConditionName.isTouchScreen) && !popoverElement) 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-8 pl-pt-8 ${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 const {firstPlay} = 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, firstPlay]);\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 onClick={(event) => event.stopPropagation()}\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","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-4 table:pl-gap-6 pl-mb-4 tablet: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 }} onClick={(event) => event.stopPropagation()}>\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 const params = store.getState().videoData.params;\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(conditions(ConditionName.hasOnChangeCurrentTime)) params.onChangeCurrentTime!(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\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../../../helpers/redux/hooks\";\r\nimport { mainPlayerVideoTag, progressBar, progressBarWidth } from \"../../../../../helpers/constants\";\r\nimport { handleTimeTooltip } from \"../../../../../helpers/redux/actions/progressbar.actions\";\r\nimport { handleVideoTimeline } from \"../../../../../helpers/redux/actions/controller.actions\";\r\nimport { sendFluentLog } from \"../../../../../helpers/logs/fluentdLogger\";\r\nimport { conditions } from \"../../../../../helpers/conditions/conditions\";\r\nimport { ConditionName, zIndex } from \"../../../../../helpers/interfaces/enums\";\r\nimport useOnClickOutside from \"../../../../../helpers/hooks/useOnClickOutside\";\r\nimport { eventMarkerClickLog } from \"../../../../../helpers/logs/logs\";\r\nimport Emoji from \"../../../emoji/emoji\";\r\nimport { inViewPort } from \"../../../../../helpers/helpers\";\r\n\r\nconst Markers = () => {\r\n const dispatch = useAppDispatch();\r\n const { duration, activeElements } = useAppSelector(\r\n ({ controller: { duration, activeElements, isFullScreen } }) => ({\r\n duration,\r\n activeElements,\r\n isFullScreen\r\n }),\r\n shallowEqual\r\n );\r\n const { markers } = useAppSelector(\r\n ({ videoData: { markers, videoElementSizeInfo } }) => ({ markers, videoElementSizeInfo }),\r\n shallowEqual\r\n );\r\n // const { sharePopover } = useAppSelector(({ popovers: { sharePopover } }) => ({ sharePopover }), shallowEqual);\r\n\r\n const [markerTime, setMarkerTime] = useState<number | undefined>(undefined);\r\n const [overlapMarkers, setOverlapMarkers] = useState<any[]>([]);\r\n const [overlapMarkersPosition, setOverlapMarkersPosition] = useState<any>({});\r\n const [isOverlapMarkersInViewport, setIsOverlapMarkersInViewport] = useState<boolean>(false);\r\n\r\n const calculateMarkerPosition = (time: number) => (duration ? (progressBarWidth() * time) / duration : 0);\r\n\r\n const handleClick = (\r\n event: any,\r\n markerTime: number,\r\n markerId: number,\r\n markerTitle: String,\r\n markerDescription: String,\r\n markerSticker: String,\r\n isTimer: boolean,\r\n markers: any\r\n ) => {\r\n event.stopPropagation();\r\n const eventMarkerWidth = 24;\r\n const result = (eventMarkerWidth * markerTime) / (progressBarWidth() + 5);\r\n\r\n let overlapMarkers: any[] = [];\r\n let sumOverlapMarkersTime: number = 0;\r\n\r\n markers.map((marker: any) => {\r\n if (marker.time > markerTime - result && marker.time < markerTime + result) {\r\n overlapMarkers.push(marker);\r\n sumOverlapMarkersTime += marker.time;\r\n }\r\n });\r\n if (overlapMarkers.length > 1) setOverlapMarkers(overlapMarkers);\r\n else {\r\n overlapMarkers = [];\r\n setOverlapMarkers([]);\r\n handleJumpToMarker(event, markerTime, markerId, markerTitle, markerDescription, markerSticker, isTimer);\r\n }\r\n };\r\n\r\n const handleJumpToMarker = (\r\n event: any,\r\n markerTime: number,\r\n markerId: number,\r\n markerTitle: String,\r\n markerDescription: String,\r\n markerSticker: String,\r\n isTimer: boolean\r\n ) => {\r\n event.stopPropagation();\r\n handleTimeTooltip(event, isTimer);\r\n handleVideoTimeline(mainPlayerVideoTag().currentTime, markerTime);\r\n mainPlayerVideoTag().currentTime = markerTime;\r\n if (progressBar()) progressBar().style.width = calculateMarkerPosition(markerTime);\r\n sendFluentLog(eventMarkerClickLog(markerId, markerTime, markerTitle, markerDescription, markerSticker));\r\n };\r\n\r\n // useEffect(() => {\r\n // if (!sharePopover) setMarkerTime(undefined);\r\n // }, [sharePopover]);\r\n\r\n // useEffect(() => {\r\n // if (!!markerTime) dispatch(setSharePopover(true));\r\n // }, [markerTime]);\r\n\r\n useEffect(() => {\r\n if (!conditions(ConditionName.isActiveElements)) setOverlapMarkers([]);\r\n }, [activeElements]);\r\n\r\n const markerRef = useRef<any>(null);\r\n\r\n useOnClickOutside(markerRef, () => setOverlapMarkers([]));\r\n\r\n useEffect(() => {\r\n if (overlapMarkers.length > 0) {\r\n const isInViewPort = inViewPort(document.getElementsByClassName(\"pl-overlapMarkers\")[0]);\r\n if (isInViewPort === \"inViewport\") {\r\n setIsOverlapMarkersInViewport(true);\r\n return setOverlapMarkersPosition({ left: calculateMarkerPosition(overlapMarkers[0].time) });\r\n } else if (isInViewPort === \"OutViewPortFromLeft\") {\r\n setIsOverlapMarkersInViewport(false);\r\n return setOverlapMarkersPosition({ left: 0 });\r\n } else if (isInViewPort === \"OutViewPortFromRight\") {\r\n setIsOverlapMarkersInViewport(false);\r\n return setOverlapMarkersPosition({ right: 0 });\r\n }\r\n }\r\n }, [overlapMarkers, document.getElementsByClassName(\"pl-overlapMarkers\")[0]]);\r\n\r\n const handleContextMenu = (event: any) => {\r\n event.preventDefault();\r\n if (conditions(ConditionName.isTouchScreen)) setMarkerTime(Number((event.target as any).getAttribute(\"data-marker\")));\r\n };\r\n\r\n \r\n\r\n return (\r\n <>\r\n {markers.map((marker: any) => (\r\n <div\r\n onContextMenu={handleContextMenu}\r\n key={marker.id}\r\n data-marker={marker.time}\r\n onClick={(event) => handleClick(event, marker.time, marker.id, marker.title, marker.description, marker.sticker, true, markers)}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n >\r\n <div\r\n className={`pl-emoji-image pl-absolute pl-bottom-[200%] pl-bg-z-gray-700/[0.4] pl-rounded-[6px] pl-p-1 ${\r\n conditions(ConditionName.isTouchScreenPortrait) ? \"pl-mb-5\" : \"pl-mb-5\"\r\n } pl-ml-[-12px] pl-cursor-pointer`}\r\n style={{ left: calculateMarkerPosition(marker.time), zIndex: zIndex.markers }}\r\n data-marker={marker.time}\r\n >\r\n {marker.isPersonal !== null && marker.isPersonal !== undefined && (\r\n <div className=\"pl-absolute pl-rounded-full pl-top-[-2px] pl-right-[-1px] pl-bg-main pl-w-2 pl-h-2\" />\r\n )}\r\n <Emoji dataMarker={marker.time} name={marker.sticker} className=\"pl-w-[16px] pl-h-[16px] !pl-max-w-max\" />\r\n </div>\r\n </div>\r\n ))}\r\n {overlapMarkers.length > 0 && (\r\n <div\r\n className={`pl-overlapMarkers ${\r\n isOverlapMarkersInViewport ? \"pl-overlayMarkersInViewport\" : \"pl-overlayMarkersOutViewport\"\r\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`}\r\n ref={markerRef}\r\n style={overlapMarkersPosition}\r\n >\r\n {overlapMarkers.map((overlapMarker: any) => (\r\n <div\r\n key={overlapMarker.id}\r\n className=\"pl-emoji-image pl-rounded-[6px] pl-cursor-pointer\"\r\n data-marker={overlapMarker.time}\r\n onClick={(event: any) =>\r\n handleJumpToMarker(\r\n event,\r\n overlapMarker.time,\r\n overlapMarker.id,\r\n overlapMarker.title,\r\n overlapMarker.description,\r\n overlapMarker.sticker,\r\n true\r\n )\r\n }\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n >\r\n <Emoji dataMarker={overlapMarker.time} name={overlapMarker.sticker} className=\"pl-w-[24px] pl-h-[24px] !pl-max-w-max\" />\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n {/* {!!sharePopover && markerTime && (\r\n <ShareDialog\r\n currentTime={markerTime ? markerTime : undefined}\r\n markerId={markers.filter((item: IMarker) => item.time === markerTime)[0].id}\r\n />\r\n )} */}\r\n </>\r\n );\r\n};\r\n\r\nexport default memo(Markers);\r\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\nimport MultiAudio from \"../../multiAudio/MultiAudio\";\r\n\r\nconst Controlbar = () => {\r\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\r\n useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), shallowEqual);\r\n\r\n let styles = \"\";\r\n if (conditions(ConditionName.isTouchScreen)) {\r\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-mx-4 tablet: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 className={`pl-flex pl-items-center pl-gap-5`}>\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 {conditions(ConditionName.hasMultiAudio) && !conditions(ConditionName.isTouchScreenPortrait) && <MultiAudio showMultiAudioIcon={true} />}\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 { 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 { 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\nimport AudioIcon from \"../../icon-components/audioIcon\";\r\nimport MultiAudio from \"../multiAudio/MultiAudio\";\r\n\r\nconst Settings = () => {\r\n const dispatch = useAppDispatch();\r\n const { selectedSubtitle } = useAppSelector(\r\n ({ videoData: { params, subtitles, selectedSubtitle } }) => ({ params, subtitles, selectedSubtitle }),\r\n shallowEqual\r\n );\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 src={IMAGES.settings} alt=\"\" width={20} height={20} />\r\n {showTooltip && <ControllbarTooltip title=\"تنظیمات \" />}\r\n </div>\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-white ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"!pl-w-[230px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[285px]\"\r\n }`}\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 src={IMAGES.qualitySetting} alt=\"\" width={16} height={16} />\r\n <p className={`pl-ml-auto pl-text-[12px] pl-font-medium pl-text-black/[0.87]`}>کیفیت پخش</p>\r\n <Image src={IMAGES.chevronLeft} alt=\"\" width={16} height={16} />\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 src={IMAGES.chevronLeft} alt=\"\" width={16} height={16} />\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 src={IMAGES.subtitleOutlineGray} alt=\"subtitle-icon\" width={20} height={20} />\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 {conditions(ConditionName.hasMultiAudio) && conditions(ConditionName.isTouchScreenPortrait) && (\r\n <div className=\"pl-flex pl-items-center pl-gap-[10px] pl-cursor-pointer\" onClick={() => setSection(SettingSections.multiAudio)}>\r\n <AudioIcon 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 src={IMAGES.chevronLeft} alt=\"\" width={16} height={16} />\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 {section === SettingSections.multiAudio && <MultiAudio 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\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 }: 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 )}\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 id=\"player-popover\">{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 { 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 { IAudioIconProps } from \"../../helpers/interfaces/interfaces\";\r\n\r\nconst AudioIcon = ({ className, onClick, onMouseOver, onMouseLeave }: IAudioIconProps) => {\r\n return (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n onClick={onClick}\r\n onMouseOver={onMouseOver}\r\n onMouseLeave={onMouseLeave}\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10 2.29395C10.3314 2.29395 10.6 2.56257 10.6 2.89395V17.1052C10.6 17.4366 10.3314 17.7052 10 17.7052C9.66866 17.7052 9.40002 17.4366 9.40002 17.1052V2.89395C9.40002 2.56257 9.66866 2.29395 10 2.29395Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\" \r\n d=\"M6.41258 4.95498C6.74396 4.95498 7.01258 5.22361 7.01258 5.55498V14.5565C7.01258 14.8879 6.74396 15.1565 6.41258 15.1565C6.08121 15.1565 5.81258 14.8879 5.81258 14.5565V5.55498C5.81258 5.22361 6.08121 4.95498 6.41258 4.95498Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M13.5858 4.84247C13.9172 4.84247 14.1858 5.1111 14.1858 5.44247V14.444C14.1858 14.7754 13.9172 15.044 13.5858 15.044C13.2545 15.044 12.9858 14.7754 12.9858 14.444V5.44247C12.9858 5.1111 13.2545 4.84247 13.5858 4.84247Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M17.1735 7.60177C17.5048 7.60177 17.7735 7.8704 17.7735 8.20177V11.5709C17.7735 11.9023 17.5048 12.1709 17.1735 12.1709C16.8421 12.1709 16.5735 11.9023 16.5735 11.5709V8.20177C16.5735 7.8704 16.8421 7.60177 17.1735 7.60177Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M2.82656 7.82841C3.15794 7.82841 3.42656 8.09703 3.42656 8.42844V11.7976C3.42656 12.1289 3.15794 12.3976 2.82656 12.3976C2.49519 12.3976 2.22656 12.1289 2.22656 11.7976V8.42844C2.22656 8.09703 2.49519 7.82841 2.82656 7.82841Z\"\r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default AudioIcon;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { memo, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport Popover from \"../popover/popover\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport Image from \"next/legacy/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { setMultiAudioPopover, setSettingPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport { setSelectedAudioId } from \"../../../helpers/redux/slices/videoDataSlice\";\r\nimport AudioIcon from \"../../icon-components/audioIcon\";\r\nimport { IMultiAudioProps } from \"../../../helpers/interfaces/interfaces\";\r\n\r\nconst MultiAudio = ({ setSection, showMultiAudioIcon }: IMultiAudioProps) => {\r\n const dispatch = useAppDispatch();\r\n const { multiAudioPopover } = useAppSelector(({ popovers: { multiAudioPopover } }) => ({ multiAudioPopover }), shallowEqual);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const ref = useRef(null);\r\n\r\n const { multiAudio, selectedAudioId } = useAppSelector(\r\n ({ videoData: { multiAudio, selectedAudioId } }) => ({ multiAudio, selectedAudioId }),\r\n shallowEqual\r\n );\r\n\r\n useOnClickOutside(ref, () => dispatch(setMultiAudioPopover(false)));\r\n\r\n const multiAudioContent = (\r\n <ul className={`pl-flex pl-flex-col pl-m-0 !pl-py-2 ${conditions(ConditionName.isTouchScreen) ? \"pl-pb-4 pl-gap-2\" : \"pl-gap-1\"}`}>\r\n {conditions(ConditionName.hasMultiAudio) &&\r\n multiAudio.map((audio: any, index: number) => (\r\n <li\r\n key={audio.id}\r\n className={`pl-flex pl-items-center pl-rounded-[4px] pl-relative pl-cursor-pointer pl-leading-6 ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"pl-pr-[26px] pl-gap-[18px] pl-py-3 pl-text-[14px]\"\r\n : \"pl-pr-2 pl-gap-2 pl-py-2 pl-text-[12px] pl-font-medium\"\r\n } ${selectedAudioId === index && \"pl-bg-primary/[0.08]\"}`}\r\n onClick={() => {\r\n dispatch(setSelectedAudioId(index));\r\n dispatch(setActiveElements(false));\r\n dispatch(setSettingPopover(false));\r\n dispatch(setMultiAudioPopover(false));\r\n if (setSection) setSection(SettingSections.main);\r\n }}\r\n >\r\n <div className={`${conditions(ConditionName.isTouchScreen) ? \"pl-size-5\" : \"pl-size-3\"} pl-flex pl-items-center`}>\r\n {!conditions(ConditionName.isTouchScreen) && selectedAudioId === index && <Image src={IMAGES.tick} alt=\"\" width={12} height={9} />}\r\n {conditions(ConditionName.isTouchScreen) && (\r\n <div\r\n className={`pl-w-5 pl-h-5 pl-rounded-full pl-border pl-border-black/[0.5] pl-p-0.5 ${\r\n selectedAudioId === index && \"pl-border-primary\"\r\n }`}\r\n >\r\n {selectedAudioId === index && <div className=\"pl-w-full pl-h-full pl-rounded-full pl-bg-primary\" />}\r\n </div>\r\n )}\r\n </div>\r\n <span>زبان {audio.name}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n\r\n return (\r\n <>\r\n {showMultiAudioIcon ? (\r\n <div className=\"pl-relative pl-flex pl-items-center\" ref={ref}>\r\n <AudioIcon\r\n className=\"pl-size-5 pl-fill-white pl-cursor-pointer\"\r\n onClick={() => dispatch(setMultiAudioPopover(!multiAudioPopover))}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n\r\n {showTooltip && <ControllbarTooltip title=\"تغییر صدا\" />}\r\n <Popover\r\n classNames={`!pl-px-0 pl-overflow-hidden !pl-bg-white !pl-pb-0 ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"!pl-w-[200px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"\r\n }`}\r\n status={multiAudioPopover}\r\n onClose={() => dispatch(setMultiAudioPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreenPortrait)}\r\n ref={conditions(ConditionName.isTouchScreenPortrait) ? ref : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n >\r\n {multiAudioContent}\r\n </Popover>\r\n </div>\r\n ) : (\r\n <>{multiAudioContent}</>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default memo(MultiAudio);\r\n","import { 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\";\r\nimport Image from \"next/legacy/image\";\r\nimport Popover from \"../popover/popover\";\r\nimport Emoji from \"../emoji/emoji\";\r\nimport { IMarker } from \"../../../helpers/interfaces/interfaces\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { mainPlayerVideoTag, progressBar } from \"../../../helpers/constants\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { handleVideoTimeline } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\r\nimport { eventMarkerClickLog } from \"../../../helpers/logs/logs\";\r\nimport MarkersListIcon from \"./markersListIcon\";\r\nimport { setMarkersListPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { getMarkerPosition } from \"../../../helpers/redux/actions/progressbar.actions\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport { secondsToHMS } from \"../../../helpers/helpers\";\r\n\r\nconst MarkersList = () => {\r\n const [videoCurrentTime, setVideoCurrentTime] = useState<number>(0);\r\n const [markerId, setMarkerId] = useState<number | undefined>(undefined);\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const { markers, params } = useAppSelector(\r\n ({ videoData: { markers, params, videoElementSizeInfo } }) => ({\r\n markers,\r\n params,\r\n videoElementSizeInfo\r\n }),\r\n shallowEqual\r\n );\r\n const { markersListPopover } = useAppSelector(\r\n ({ popovers: { markersListPopover } }) => ({ markersListPopover }),\r\n shallowEqual\r\n );\r\n // useAppSelector(({ controller: { showMiniPlayer } }) => ({ showMiniPlayer }), shallowEqual);\r\n const markersListRef = useRef(null);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const handleClickShare = (event: any, markerTime: number) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // dispatch(setSharePopover(true));\r\n setVideoCurrentTime(markerTime);\r\n const result = markers.find((marker: any) => marker.time === markerTime)?.id;\r\n setMarkerId(result);\r\n };\r\n\r\n useOnClickOutside(markersListRef, () => dispatch(setMarkersListPopover(false)));\r\n\r\n const handleClickMarker = (markerTime: number, markerId: number, markerTitle: String, markerDescription: String, markerSticker: String) => {\r\n if (progressBar()) progressBar().style.width = `${getMarkerPosition(markerTime)}px`;\r\n handleVideoTimeline(mainPlayerVideoTag().currentTime, markerTime);\r\n mainPlayerVideoTag().currentTime = markerTime;\r\n dispatch(setMarkersListPopover(false));\r\n sendFluentLog(eventMarkerClickLog(markerId, markerTime, markerTitle, markerDescription, markerSticker));\r\n };\r\n\r\n const handleShowMarkerListPopover = () => {\r\n dispatch(setMarkersListPopover(!markersListPopover));\r\n };\r\n\r\n return (\r\n <div\r\n className={`pl-flex pl-items-center pl-p-1 pl-relative ${\r\n conditions(ConditionName.showMarkerListPopover) && \"pl-bg-secondary-50/[0.4] pl-rounded-[4px]\"\r\n }`}\r\n ref={markersListRef}\r\n >\r\n <MarkersListIcon\r\n className={`pl-cursor-pointer pl-fill-dark-5`}\r\n onClick={handleShowMarkerListPopover}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n {showTooltip && <ControllbarTooltip title={`لیست نشانگرها (e)`} className=\"!pl-bottom-[180%] !pl-right-[-48px]\" />}\r\n <Popover\r\n classNames={`!pl-p-0 pl-left-0 !pl-bg-white dark:!pl-bg-dark-13 !pl-rounded-[4px] pl-mb-[33px]`}\r\n status={conditions(ConditionName.showMarkerListPopover)}\r\n onClose={() => {\r\n dispatch(setMarkersListPopover(false));\r\n }}\r\n headerTitle=\"نشانگرها\"\r\n isHeader={true}\r\n type={\"popover\"}\r\n >\r\n <div className=\"pl-flex pl-flex-col pl-gap-6 pl-mx-2 pl-mt-2\">\r\n <div className=\"pl-flex pl-flex-col pl-gap-2 pl-pb-2\">\r\n {markers.map((marker: IMarker) => (\r\n <div\r\n key={marker.id}\r\n onClick={() => handleClickMarker(marker.time, marker.id, marker.title, marker.description, marker.sticker)}\r\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]\"\r\n >\r\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\">\r\n {marker.banner || !marker.sticker ? (\r\n <Image\r\n src={marker.banner ? marker.banner : \"IMAGES.defaultMarkersListItemIcon\"}\r\n width={40}\r\n height={40}\r\n alt={marker.title}\r\n />\r\n ) : (\r\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\">\r\n <Emoji name={marker.sticker} className=\"pl-w-[20px] pl-h-[20px] pl-mx-auto\" />\r\n </div>\r\n )}\r\n <div className=\"pl-text-gray-800 dark:pl-text-white\">\r\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\">\r\n <div>{marker.title}</div>\r\n </p>\r\n <p className=\"pl-text-[13px] pl-font-normal pl-w-[200px] pl-whitespace-nowrap pl-overflow-hidden pl-text-ellipsis\">\r\n {marker.description}\r\n </p>\r\n </div>\r\n <span\r\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]`}\r\n >\r\n {secondsToHMS(marker.time)}\r\n </span>\r\n {/* <ShareIcon\r\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`}\r\n onClick={(event) => handleClickShare(event, marker.time)}\r\n /> */}\r\n </div>\r\n {/* {openPersonalMarkerMenu !== undefined && openPersonalMarkerMenu === marker.time && (\r\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\">\r\n <hr className=\"pl-bg-secondary-300 pl-ml-2\" />\r\n <div className=\"pl-flex pl-items-center pl-w-full pl-pt-2\">\r\n <div\r\n className=\"pl-flex pl-gap-4 pl-items-center\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n dispatch(setSelectedPersonalMarker(marker));\r\n dispatch(setPersonalMarkersPopover(true));\r\n dispatch(setMarkersListPopover(false));\r\n }}\r\n >\r\n <div className=\"pl-p-3 pl-bg-main-light pl-rounded-[8px] pl-flex pl-items-center\">\r\n <Image\r\n className=\"pl-w-full pl-h-full\"\r\n src={IMAGES.editMarker}\r\n width={16}\r\n height={16}\r\n alt={marker.title}\r\n />\r\n </div>\r\n <span className=\"pl-text-gray-800 dark:pl-text-secondary-300 pl-text-[13px] pl-font-500\">ویرایش</span>\r\n </div>\r\n <div\r\n className=\"pl-flex pl-flex-1 pl-justify-center pl-gap-4 pl-items-center\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n setDeleteMarker(marker);\r\n dispatch(setMarkersListPopover(false));\r\n }}\r\n >\r\n <div className=\"pl-p-3 pl-bg-main-light pl-rounded-[8px] pl-flex pl-items-center\">\r\n <Image\r\n className=\"pl-w-full pl-h-full\"\r\n src={IMAGES.trashMarker}\r\n width={16}\r\n height={16}\r\n alt={marker.title}\r\n />\r\n </div>\r\n <span className=\"pl-text-gray-800 dark:pl-text-secondary-300 pl-text-[13px] pl-font-500\">حذف</span>\r\n </div>\r\n </div>\r\n </div>\r\n )} */}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </Popover>\r\n {/* <ShareDialog currentTime={videoCurrentTime} markerId={markerId} />\r\n <ConfirmationModal\r\n onClose={() => setDeleteMarker(undefined)}\r\n modalType={\"DELETE\"}\r\n status={!!deleteMarker}\r\n text={\"آیا از حذف نشانگر مطمئن هستید؟\"}\r\n cancelButtonText={\"انصراف\"}\r\n submitButtonText={\"حذف\"}\r\n onSubmit={() => handleDeleteMarker(deleteMarker!)}\r\n >\r\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\">\r\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]\">\r\n <span className=\"pl-emoji-mart-emoji pl-flex pl-flex-col pl-items-center pl-gap-[11px] pl-justify-center pl-h-full\">\r\n <Emoji name={deleteMarker?.sticker} className=\"pl-w-[56px] pl-h-[56px] pl-mx-auto\" />\r\n </span>\r\n </div>\r\n <div>{deleteMarker?.title}</div>\r\n </div>\r\n </ConfirmationModal> */}\r\n </div>\r\n );\r\n};\r\n\r\nexport default MarkersList;\r\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-4\";\r\n else if (conditions(ConditionName.isActiveElements)) {\r\n if (conditions(ConditionName.isTouchScreenPortrait)) styles = \"pl-bottom-4 tablet:pl-bottom-[65px]\";\r\n else if(conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[104px] tablet:pl-bottom-[137px] desktop:pl-bottom-[146px]\";\r\n else styles = \"pl-bottom-[120px]\";\r\n }\r\n else if (!conditions(ConditionName.isActiveElements)) styles = \"pl-bottom-4\"; \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-z-0 pl-absolute pl-w-full pl-text-center pl-text-[18px] pl-px-4 pl-text-white pl-font-medium ${subtitlePosition()}`}\r\n >\r\n {spliteStringPerLine(subtitleText!).map((text, index) => (\r\n <p\r\n key={index} \r\n className={`pl-mx-auto pl-bg-Common-black-overlay-2 ${(conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isActiveElements)) && \"pl-opacity-50 tablet:pl-opacity-100\"} pl-text-wrap pl-max-w-full pl-w-max pl-px-1`}\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, 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(\r\n event.target.id\r\n )\r\n )\r\n shouldInActiveElements = true;\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\r\n const { play } = store.getState().controller;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover && play && shouldInActiveElements)\r\n 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, multiAudioPopover } = store.getState().popovers;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover) dispatch(setActiveElements(false));\r\n }, activeElementsTime);\r\n } else {\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover) 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;"]}
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/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/pictureInPicture/pictureInPicture.tsx","../src/videoPlayerLibrary/components/custom-components/settings/settings.tsx","../src/videoPlayerLibrary/components/custom-components/popover/popover.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/icon-components/audioIcon.tsx","../src/videoPlayerLibrary/components/custom-components/multiAudio/MultiAudio.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/useActiveInActive.tsx","../src/videoPlayerLibrary/helpers/hooks/useHandleResize.tsx","../src/videoPlayerLibrary/helpers/hooks/useSetSubtitleFirstPlay.tsx"],"names":["init_esm_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","Main","showLoader","setShowLoader","useState","showIcons","setShowIcons","firstPlay","isLoading","useEffect","timeout","showLoaderTime","loader_default","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","PictureInPicture","showTooltip","setShowTooltip","setPlay","controllbarTooltip_default","pictureInPicture_default","Popover","forwardRef","children","status","onClose","type","classNames","parentClassNames","styles","isBlurBackground","isFullHeight","isHeader","isHasCatchUpLineOnTop","animation","scrollbar","isFocusOnInput","showPopover","setShowPopover","heightOnTouchMove","setHeightOnTouchMove","zIndexOnCatchUp","setZIndexOnCatchUp","popoverContentHeightRef","handleTouchMove","popoverContent","handleTouchEnd","content","createPortal","popover_default","QualityLevels","setSection","showQualityLevelsIcon","qualityLevels","manualQuality","autoQuality","settings","qualityLevelsPopover","handleTickSelectedQuality","index","qualityLevel","qualityLevelsRef","setQualityLevelsPopover","qualityLevelsContent","qualityChangeRequestLog","setSettingPopover","setUserSettings","qualityLevels_default","SpeedIcon","onClick","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","AudioIcon","audioIcon_default","MultiAudio","showMultiAudioIcon","multiAudioPopover","multiAudio","selectedAudioId","setMultiAudioPopover","multiAudioContent","audio","setSelectedAudioId","MultiAudio_default","Settings","section","settingsRef","handleSubtitle","settings_default","ElapsedTime","elapsedTime_default","Unlock","unlock_default","SubtitleIcon","subtitleIcon_default","MarkersListIcon","props","markersListIcon_default","MarkersList","videoCurrentTime","setVideoCurrentTime","setMarkerId","markersListPopover","markersListRef","setMarkersListPopover","handleClickMarker","handleShowMarkerListPopover","markersList_default","Controlbar","fullScreen_default","soundVolume_default","controllbar_default","DisplaySubtitle","subtitleText","spliteStringPerLine","text","cleanVTT","displaySubtitle_default","Footer","footer_default","StaticVideoTag","dynamic","NonStaticVideoTag","VideoTag","videoTag_default","useActiveInActive","isRightDoubleTouched","isLeftDoubleTouched","timeoutRef","isRightDoubleTouchedRef","isLeftDoubleTouchedRef","shouldInActiveElements","isEnded","handleTouchStart","isTouchScreen","checkParentTarget","videoArea","useActiveInActive_default","useHandleResize","handleResize","handleVideoElementSizeInfo","useHandleResize_default","useSetSubtitleFirstPlay","useSetSubtitleFirstPlay_default","TouchVolumeBrightness","BackwardForward","VideoArea","setIsRightDoubleTouched","setIsLeftDoubleTouched","canPlayVideo","useFullScreen_default","popoverElement","handleDoubleClick","videoArea_default"],"mappings":"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","file":"chunk-2J3G4ODR.mjs","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 const popoverElement = document.getElementById(\"player-popover\");\r\n if(conditions(ConditionName.isFirstPlay) || !conditions(ConditionName.isTouchScreen) && !popoverElement) 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-8 pl-pt-8 ${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 const {firstPlay} = 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, firstPlay]);\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 onClick={(event) => event.stopPropagation()}\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","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-4 table:pl-gap-6 pl-mb-4 tablet: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 }} onClick={(event) => event.stopPropagation()}>\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 const params = store.getState().videoData.params;\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(conditions(ConditionName.hasOnChangeCurrentTime)) params.onChangeCurrentTime!(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\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../../../helpers/redux/hooks\";\r\nimport { mainPlayerVideoTag, progressBar, progressBarWidth } from \"../../../../../helpers/constants\";\r\nimport { handleTimeTooltip } from \"../../../../../helpers/redux/actions/progressbar.actions\";\r\nimport { handleVideoTimeline } from \"../../../../../helpers/redux/actions/controller.actions\";\r\nimport { sendFluentLog } from \"../../../../../helpers/logs/fluentdLogger\";\r\nimport { conditions } from \"../../../../../helpers/conditions/conditions\";\r\nimport { ConditionName, zIndex } from \"../../../../../helpers/interfaces/enums\";\r\nimport useOnClickOutside from \"../../../../../helpers/hooks/useOnClickOutside\";\r\nimport { eventMarkerClickLog } from \"../../../../../helpers/logs/logs\";\r\nimport Emoji from \"../../../emoji/emoji\";\r\nimport { inViewPort } from \"../../../../../helpers/helpers\";\r\n\r\nconst Markers = () => {\r\n const dispatch = useAppDispatch();\r\n const { duration, activeElements } = useAppSelector(\r\n ({ controller: { duration, activeElements, isFullScreen } }) => ({\r\n duration,\r\n activeElements,\r\n isFullScreen\r\n }),\r\n shallowEqual\r\n );\r\n const { markers } = useAppSelector(\r\n ({ videoData: { markers, videoElementSizeInfo } }) => ({ markers, videoElementSizeInfo }),\r\n shallowEqual\r\n );\r\n // const { sharePopover } = useAppSelector(({ popovers: { sharePopover } }) => ({ sharePopover }), shallowEqual);\r\n\r\n const [markerTime, setMarkerTime] = useState<number | undefined>(undefined);\r\n const [overlapMarkers, setOverlapMarkers] = useState<any[]>([]);\r\n const [overlapMarkersPosition, setOverlapMarkersPosition] = useState<any>({});\r\n const [isOverlapMarkersInViewport, setIsOverlapMarkersInViewport] = useState<boolean>(false);\r\n\r\n const calculateMarkerPosition = (time: number) => (duration ? (progressBarWidth() * time) / duration : 0);\r\n\r\n const handleClick = (\r\n event: any,\r\n markerTime: number,\r\n markerId: number,\r\n markerTitle: String,\r\n markerDescription: String,\r\n markerSticker: String,\r\n isTimer: boolean,\r\n markers: any\r\n ) => {\r\n event.stopPropagation();\r\n const eventMarkerWidth = 24;\r\n const result = (eventMarkerWidth * markerTime) / (progressBarWidth() + 5);\r\n\r\n let overlapMarkers: any[] = [];\r\n let sumOverlapMarkersTime: number = 0;\r\n\r\n markers.map((marker: any) => {\r\n if (marker.time > markerTime - result && marker.time < markerTime + result) {\r\n overlapMarkers.push(marker);\r\n sumOverlapMarkersTime += marker.time;\r\n }\r\n });\r\n if (overlapMarkers.length > 1) setOverlapMarkers(overlapMarkers);\r\n else {\r\n overlapMarkers = [];\r\n setOverlapMarkers([]);\r\n handleJumpToMarker(event, markerTime, markerId, markerTitle, markerDescription, markerSticker, isTimer);\r\n }\r\n };\r\n\r\n const handleJumpToMarker = (\r\n event: any,\r\n markerTime: number,\r\n markerId: number,\r\n markerTitle: String,\r\n markerDescription: String,\r\n markerSticker: String,\r\n isTimer: boolean\r\n ) => {\r\n event.stopPropagation();\r\n handleTimeTooltip(event, isTimer);\r\n handleVideoTimeline(mainPlayerVideoTag().currentTime, markerTime);\r\n mainPlayerVideoTag().currentTime = markerTime;\r\n if (progressBar()) progressBar().style.width = calculateMarkerPosition(markerTime);\r\n sendFluentLog(eventMarkerClickLog(markerId, markerTime, markerTitle, markerDescription, markerSticker));\r\n };\r\n\r\n // useEffect(() => {\r\n // if (!sharePopover) setMarkerTime(undefined);\r\n // }, [sharePopover]);\r\n\r\n // useEffect(() => {\r\n // if (!!markerTime) dispatch(setSharePopover(true));\r\n // }, [markerTime]);\r\n\r\n useEffect(() => {\r\n if (!conditions(ConditionName.isActiveElements)) setOverlapMarkers([]);\r\n }, [activeElements]);\r\n\r\n const markerRef = useRef<any>(null);\r\n\r\n useOnClickOutside(markerRef, () => setOverlapMarkers([]));\r\n\r\n useEffect(() => {\r\n if (overlapMarkers.length > 0) {\r\n const isInViewPort = inViewPort(document.getElementsByClassName(\"pl-overlapMarkers\")[0]);\r\n if (isInViewPort === \"inViewport\") {\r\n setIsOverlapMarkersInViewport(true);\r\n return setOverlapMarkersPosition({ left: calculateMarkerPosition(overlapMarkers[0].time) });\r\n } else if (isInViewPort === \"OutViewPortFromLeft\") {\r\n setIsOverlapMarkersInViewport(false);\r\n return setOverlapMarkersPosition({ left: 0 });\r\n } else if (isInViewPort === \"OutViewPortFromRight\") {\r\n setIsOverlapMarkersInViewport(false);\r\n return setOverlapMarkersPosition({ right: 0 });\r\n }\r\n }\r\n }, [overlapMarkers, document.getElementsByClassName(\"pl-overlapMarkers\")[0]]);\r\n\r\n const handleContextMenu = (event: any) => {\r\n event.preventDefault();\r\n if (conditions(ConditionName.isTouchScreen)) setMarkerTime(Number((event.target as any).getAttribute(\"data-marker\")));\r\n };\r\n\r\n \r\n\r\n return (\r\n <>\r\n {markers.map((marker: any) => (\r\n <div\r\n onContextMenu={handleContextMenu}\r\n key={marker.id}\r\n data-marker={marker.time}\r\n onClick={(event) => handleClick(event, marker.time, marker.id, marker.title, marker.description, marker.sticker, true, markers)}\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n >\r\n <div\r\n className={`pl-emoji-image pl-absolute pl-bottom-[200%] pl-bg-z-gray-700/[0.4] pl-rounded-[6px] pl-p-1 ${\r\n conditions(ConditionName.isTouchScreenPortrait) ? \"pl-mb-5\" : \"pl-mb-5\"\r\n } pl-ml-[-12px] pl-cursor-pointer`}\r\n style={{ left: calculateMarkerPosition(marker.time), zIndex: zIndex.markers }}\r\n data-marker={marker.time}\r\n >\r\n {marker.isPersonal !== null && marker.isPersonal !== undefined && (\r\n <div className=\"pl-absolute pl-rounded-full pl-top-[-2px] pl-right-[-1px] pl-bg-main pl-w-2 pl-h-2\" />\r\n )}\r\n <Emoji dataMarker={marker.time} name={marker.sticker} className=\"pl-w-[16px] pl-h-[16px] !pl-max-w-max\" />\r\n </div>\r\n </div>\r\n ))}\r\n {overlapMarkers.length > 0 && (\r\n <div\r\n className={`pl-overlapMarkers ${\r\n isOverlapMarkersInViewport ? \"pl-overlayMarkersInViewport\" : \"pl-overlayMarkersOutViewport\"\r\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`}\r\n ref={markerRef}\r\n style={overlapMarkersPosition}\r\n >\r\n {overlapMarkers.map((overlapMarker: any) => (\r\n <div\r\n key={overlapMarker.id}\r\n className=\"pl-emoji-image pl-rounded-[6px] pl-cursor-pointer\"\r\n data-marker={overlapMarker.time}\r\n onClick={(event: any) =>\r\n handleJumpToMarker(\r\n event,\r\n overlapMarker.time,\r\n overlapMarker.id,\r\n overlapMarker.title,\r\n overlapMarker.description,\r\n overlapMarker.sticker,\r\n true\r\n )\r\n }\r\n onDoubleClick={(event: any) => event.stopPropagation()}\r\n >\r\n <Emoji dataMarker={overlapMarker.time} name={overlapMarker.sticker} className=\"pl-w-[24px] pl-h-[24px] !pl-max-w-max\" />\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n {/* {!!sharePopover && markerTime && (\r\n <ShareDialog\r\n currentTime={markerTime ? markerTime : undefined}\r\n markerId={markers.filter((item: IMarker) => item.time === markerTime)[0].id}\r\n />\r\n )} */}\r\n </>\r\n );\r\n};\r\n\r\nexport default memo(Markers);\r\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\nimport MultiAudio from \"../../multiAudio/MultiAudio\";\r\n\r\nconst Controlbar = () => {\r\n useAppSelector(({ controller: { isFullScreen } }) => ({ isFullScreen }), shallowEqual);\r\n useAppSelector(({ videoData: { videoElementSizeInfo, params } }) => ({ videoElementSizeInfo, params }), shallowEqual);\r\n\r\n let styles = \"\";\r\n if (conditions(ConditionName.isTouchScreen)) {\r\n if (conditions(ConditionName.isFullScreen)) styles = \"pl-mx-4 tablet: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 className={`pl-flex pl-items-center pl-gap-5`}>\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 {conditions(ConditionName.hasMultiAudio) && !conditions(ConditionName.isTouchScreenPortrait) && <MultiAudio showMultiAudioIcon={true} />}\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 { 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 { 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\nimport AudioIcon from \"../../icon-components/audioIcon\";\r\nimport MultiAudio from \"../multiAudio/MultiAudio\";\r\n\r\nconst Settings = () => {\r\n const dispatch = useAppDispatch();\r\n const { selectedSubtitle } = useAppSelector(\r\n ({ videoData: { params, subtitles, selectedSubtitle } }) => ({ params, subtitles, selectedSubtitle }),\r\n shallowEqual\r\n );\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 src={IMAGES.settings} alt=\"\" width={20} height={20} />\r\n {showTooltip && <ControllbarTooltip title=\"تنظیمات \" />}\r\n </div>\r\n <Popover\r\n classNames={`!pl-p-0 pl-overflow-hidden !pl-bg-white ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"!pl-w-[230px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[285px]\"\r\n }`}\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 src={IMAGES.qualitySetting} alt=\"\" width={16} height={16} />\r\n <p className={`pl-ml-auto pl-text-[12px] pl-font-medium pl-text-black/[0.87]`}>کیفیت پخش</p>\r\n <Image src={IMAGES.chevronLeft} alt=\"\" width={16} height={16} />\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 src={IMAGES.chevronLeft} alt=\"\" width={16} height={16} />\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 src={IMAGES.subtitleOutlineGray} alt=\"subtitle-icon\" width={20} height={20} />\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 {conditions(ConditionName.hasMultiAudio) && conditions(ConditionName.isTouchScreenPortrait) && (\r\n <div className=\"pl-flex pl-items-center pl-gap-[10px] pl-cursor-pointer\" onClick={() => setSection(SettingSections.multiAudio)}>\r\n <AudioIcon 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 src={IMAGES.chevronLeft} alt=\"\" width={16} height={16} />\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 {section === SettingSections.multiAudio && <MultiAudio 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\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 }: 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 )}\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 id=\"player-popover\">{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 { 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 { IAudioIconProps } from \"../../helpers/interfaces/interfaces\";\r\n\r\nconst AudioIcon = ({ className, onClick, onMouseOver, onMouseLeave }: IAudioIconProps) => {\r\n return (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n onClick={onClick}\r\n onMouseOver={onMouseOver}\r\n onMouseLeave={onMouseLeave}\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10 2.29395C10.3314 2.29395 10.6 2.56257 10.6 2.89395V17.1052C10.6 17.4366 10.3314 17.7052 10 17.7052C9.66866 17.7052 9.40002 17.4366 9.40002 17.1052V2.89395C9.40002 2.56257 9.66866 2.29395 10 2.29395Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\" \r\n d=\"M6.41258 4.95498C6.74396 4.95498 7.01258 5.22361 7.01258 5.55498V14.5565C7.01258 14.8879 6.74396 15.1565 6.41258 15.1565C6.08121 15.1565 5.81258 14.8879 5.81258 14.5565V5.55498C5.81258 5.22361 6.08121 4.95498 6.41258 4.95498Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M13.5858 4.84247C13.9172 4.84247 14.1858 5.1111 14.1858 5.44247V14.444C14.1858 14.7754 13.9172 15.044 13.5858 15.044C13.2545 15.044 12.9858 14.7754 12.9858 14.444V5.44247C12.9858 5.1111 13.2545 4.84247 13.5858 4.84247Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M17.1735 7.60177C17.5048 7.60177 17.7735 7.8704 17.7735 8.20177V11.5709C17.7735 11.9023 17.5048 12.1709 17.1735 12.1709C16.8421 12.1709 16.5735 11.9023 16.5735 11.5709V8.20177C16.5735 7.8704 16.8421 7.60177 17.1735 7.60177Z\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M2.82656 7.82841C3.15794 7.82841 3.42656 8.09703 3.42656 8.42844V11.7976C3.42656 12.1289 3.15794 12.3976 2.82656 12.3976C2.49519 12.3976 2.22656 12.1289 2.22656 11.7976V8.42844C2.22656 8.09703 2.49519 7.82841 2.82656 7.82841Z\"\r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default AudioIcon;\r\n","import { shallowEqual } from \"react-redux\";\r\nimport { memo, useRef, useState } from \"react\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport Popover from \"../popover/popover\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName, SettingSections } from \"../../../helpers/interfaces/enums\";\r\nimport Image from \"next/legacy/image\";\r\nimport IMAGES from \"../../../images/importImages\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { setMultiAudioPopover, setSettingPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { setActiveElements } from \"../../../helpers/redux/slices/controllerSlice\";\r\nimport { setSelectedAudioId } from \"../../../helpers/redux/slices/videoDataSlice\";\r\nimport AudioIcon from \"../../icon-components/audioIcon\";\r\nimport { IMultiAudioProps } from \"../../../helpers/interfaces/interfaces\";\r\n\r\nconst MultiAudio = ({ setSection, showMultiAudioIcon }: IMultiAudioProps) => {\r\n const dispatch = useAppDispatch();\r\n const { multiAudioPopover } = useAppSelector(({ popovers: { multiAudioPopover } }) => ({ multiAudioPopover }), shallowEqual);\r\n\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const ref = useRef(null);\r\n\r\n const { multiAudio, selectedAudioId } = useAppSelector(\r\n ({ videoData: { multiAudio, selectedAudioId } }) => ({ multiAudio, selectedAudioId }),\r\n shallowEqual\r\n );\r\n\r\n useOnClickOutside(ref, () => dispatch(setMultiAudioPopover(false)));\r\n\r\n const multiAudioContent = (\r\n <ul className={`pl-flex pl-flex-col pl-m-0 !pl-py-2 ${conditions(ConditionName.isTouchScreen) ? \"pl-pb-4 pl-gap-2\" : \"pl-gap-1\"}`}>\r\n {conditions(ConditionName.hasMultiAudio) &&\r\n multiAudio.map((audio: any, index: number) => (\r\n <li\r\n key={audio.id}\r\n className={`pl-flex pl-items-center pl-rounded-[4px] pl-relative pl-cursor-pointer pl-leading-6 ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"pl-pr-[26px] pl-gap-[18px] pl-py-3 pl-text-[14px]\"\r\n : \"pl-pr-2 pl-gap-2 pl-py-2 pl-text-[12px] pl-font-medium\"\r\n } ${selectedAudioId === index && \"pl-bg-primary/[0.08]\"}`}\r\n onClick={() => {\r\n dispatch(setSelectedAudioId(index));\r\n dispatch(setActiveElements(false));\r\n dispatch(setSettingPopover(false));\r\n dispatch(setMultiAudioPopover(false));\r\n if (setSection) setSection(SettingSections.main);\r\n }}\r\n >\r\n <div className={`${conditions(ConditionName.isTouchScreen) ? \"pl-size-5\" : \"pl-size-3\"} pl-flex pl-items-center`}>\r\n {!conditions(ConditionName.isTouchScreen) && selectedAudioId === index && <Image src={IMAGES.tick} alt=\"\" width={12} height={9} />}\r\n {conditions(ConditionName.isTouchScreen) && (\r\n <div\r\n className={`pl-w-5 pl-h-5 pl-rounded-full pl-border pl-border-black/[0.5] pl-p-0.5 ${\r\n selectedAudioId === index && \"pl-border-primary\"\r\n }`}\r\n >\r\n {selectedAudioId === index && <div className=\"pl-w-full pl-h-full pl-rounded-full pl-bg-primary\" />}\r\n </div>\r\n )}\r\n </div>\r\n <span>زبان {audio.name}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n\r\n return (\r\n <>\r\n {showMultiAudioIcon ? (\r\n <div className=\"pl-relative pl-flex pl-items-center\" ref={ref}>\r\n <AudioIcon\r\n className=\"pl-size-5 pl-fill-white pl-cursor-pointer\"\r\n onClick={() => dispatch(setMultiAudioPopover(!multiAudioPopover))}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n\r\n {showTooltip && <ControllbarTooltip title=\"تغییر صدا\" />}\r\n <Popover\r\n classNames={`!pl-px-0 pl-overflow-hidden !pl-bg-white !pl-pb-0 ${\r\n conditions(ConditionName.isTouchScreen)\r\n ? \"!pl-fixed !pl-bottom-0 !pl-rounded-t-[20px] pl-rounded-b-none\"\r\n : \"!pl-w-[200px] pl-right-0 pl-mb-[33px] !pl-rounded-[12px]\"\r\n } ${conditions(ConditionName.isTouchScreenPortrait) && \"!pl-w-screen tablet:!pl-max-w-[440px] tablet:!pl-mx-auto\"} ${\r\n conditions(ConditionName.isTouchScreenLandscape) && \"pl-w-full pl-max-w-[440px]\"\r\n }`}\r\n status={multiAudioPopover}\r\n onClose={() => dispatch(setMultiAudioPopover(false))}\r\n type={conditions(ConditionName.isTouchScreen) ? \"modal\" : \"popover\"}\r\n isBlurBackground={conditions(ConditionName.isTouchScreenPortrait)}\r\n ref={conditions(ConditionName.isTouchScreenPortrait) ? ref : undefined}\r\n isHeader={conditions(ConditionName.isTouchScreen)}\r\n isHasCatchUpLineOnTop={conditions(ConditionName.isTouchScreen)}\r\n >\r\n {multiAudioContent}\r\n </Popover>\r\n </div>\r\n ) : (\r\n <>{multiAudioContent}</>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default memo(MultiAudio);\r\n","import { 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\";\r\nimport Image from \"next/legacy/image\";\r\nimport Popover from \"../popover/popover\";\r\nimport Emoji from \"../emoji/emoji\";\r\nimport { IMarker } from \"../../../helpers/interfaces/interfaces\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../helpers/redux/hooks\";\r\nimport { shallowEqual } from \"react-redux\";\r\nimport useOnClickOutside from \"../../../helpers/hooks/useOnClickOutside\";\r\nimport { mainPlayerVideoTag, progressBar } from \"../../../helpers/constants\";\r\nimport { conditions } from \"../../../helpers/conditions/conditions\";\r\nimport { ConditionName } from \"../../../helpers/interfaces/enums\";\r\nimport { handleVideoTimeline } from \"../../../helpers/redux/actions/controller.actions\";\r\nimport { sendFluentLog } from \"../../../helpers/logs/fluentdLogger\";\r\nimport { eventMarkerClickLog } from \"../../../helpers/logs/logs\";\r\nimport MarkersListIcon from \"./markersListIcon\";\r\nimport { setMarkersListPopover } from \"../../../helpers/redux/slices/popoversSlice\";\r\nimport { getMarkerPosition } from \"../../../helpers/redux/actions/progressbar.actions\";\r\nimport ControllbarTooltip from \"../footer/controllbar/controllbarTooltip\";\r\nimport { secondsToHMS } from \"../../../helpers/helpers\";\r\n\r\nconst MarkersList = () => {\r\n const [videoCurrentTime, setVideoCurrentTime] = useState<number>(0);\r\n const [markerId, setMarkerId] = useState<number | undefined>(undefined);\r\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\r\n\r\n const { markers, params } = useAppSelector(\r\n ({ videoData: { markers, params, videoElementSizeInfo } }) => ({\r\n markers,\r\n params,\r\n videoElementSizeInfo\r\n }),\r\n shallowEqual\r\n );\r\n const { markersListPopover } = useAppSelector(\r\n ({ popovers: { markersListPopover } }) => ({ markersListPopover }),\r\n shallowEqual\r\n );\r\n // useAppSelector(({ controller: { showMiniPlayer } }) => ({ showMiniPlayer }), shallowEqual);\r\n const markersListRef = useRef(null);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const handleClickShare = (event: any, markerTime: number) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // dispatch(setSharePopover(true));\r\n setVideoCurrentTime(markerTime);\r\n const result = markers.find((marker: any) => marker.time === markerTime)?.id;\r\n setMarkerId(result);\r\n };\r\n\r\n useOnClickOutside(markersListRef, () => dispatch(setMarkersListPopover(false)));\r\n\r\n const handleClickMarker = (markerTime: number, markerId: number, markerTitle: String, markerDescription: String, markerSticker: String) => {\r\n if (progressBar()) progressBar().style.width = `${getMarkerPosition(markerTime)}px`;\r\n handleVideoTimeline(mainPlayerVideoTag().currentTime, markerTime);\r\n mainPlayerVideoTag().currentTime = markerTime;\r\n dispatch(setMarkersListPopover(false));\r\n sendFluentLog(eventMarkerClickLog(markerId, markerTime, markerTitle, markerDescription, markerSticker));\r\n };\r\n\r\n const handleShowMarkerListPopover = () => {\r\n dispatch(setMarkersListPopover(!markersListPopover));\r\n };\r\n\r\n return (\r\n <div\r\n className={`pl-flex pl-items-center pl-p-1 pl-relative ${\r\n conditions(ConditionName.showMarkerListPopover) && \"pl-bg-secondary-50/[0.4] pl-rounded-[4px]\"\r\n }`}\r\n ref={markersListRef}\r\n >\r\n <MarkersListIcon\r\n className={`pl-cursor-pointer pl-fill-dark-5`}\r\n onClick={handleShowMarkerListPopover}\r\n onMouseOver={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(true)}\r\n onMouseLeave={() => !conditions(ConditionName.isTouchScreen) && setShowTooltip(false)}\r\n />\r\n {showTooltip && <ControllbarTooltip title={`لیست نشانگرها (e)`} className=\"!pl-bottom-[180%] !pl-right-[-48px]\" />}\r\n <Popover\r\n classNames={`!pl-p-0 pl-left-0 !pl-bg-white dark:!pl-bg-dark-13 !pl-rounded-[4px] pl-mb-[33px]`}\r\n status={conditions(ConditionName.showMarkerListPopover)}\r\n onClose={() => {\r\n dispatch(setMarkersListPopover(false));\r\n }}\r\n headerTitle=\"نشانگرها\"\r\n isHeader={true}\r\n type={\"popover\"}\r\n >\r\n <div className=\"pl-flex pl-flex-col pl-gap-6 pl-mx-2 pl-mt-2\">\r\n <div className=\"pl-flex pl-flex-col pl-gap-2 pl-pb-2\">\r\n {markers.map((marker: IMarker) => (\r\n <div\r\n key={marker.id}\r\n onClick={() => handleClickMarker(marker.time, marker.id, marker.title, marker.description, marker.sticker)}\r\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]\"\r\n >\r\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\">\r\n {marker.banner || !marker.sticker ? (\r\n <Image\r\n src={marker.banner ? marker.banner : \"IMAGES.defaultMarkersListItemIcon\"}\r\n width={40}\r\n height={40}\r\n alt={marker.title}\r\n />\r\n ) : (\r\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\">\r\n <Emoji name={marker.sticker} className=\"pl-w-[20px] pl-h-[20px] pl-mx-auto\" />\r\n </div>\r\n )}\r\n <div className=\"pl-text-gray-800 dark:pl-text-white\">\r\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\">\r\n <div>{marker.title}</div>\r\n </p>\r\n <p className=\"pl-text-[13px] pl-font-normal pl-w-[200px] pl-whitespace-nowrap pl-overflow-hidden pl-text-ellipsis\">\r\n {marker.description}\r\n </p>\r\n </div>\r\n <span\r\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]`}\r\n >\r\n {secondsToHMS(marker.time)}\r\n </span>\r\n {/* <ShareIcon\r\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`}\r\n onClick={(event) => handleClickShare(event, marker.time)}\r\n /> */}\r\n </div>\r\n {/* {openPersonalMarkerMenu !== undefined && openPersonalMarkerMenu === marker.time && (\r\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\">\r\n <hr className=\"pl-bg-secondary-300 pl-ml-2\" />\r\n <div className=\"pl-flex pl-items-center pl-w-full pl-pt-2\">\r\n <div\r\n className=\"pl-flex pl-gap-4 pl-items-center\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n dispatch(setSelectedPersonalMarker(marker));\r\n dispatch(setPersonalMarkersPopover(true));\r\n dispatch(setMarkersListPopover(false));\r\n }}\r\n >\r\n <div className=\"pl-p-3 pl-bg-main-light pl-rounded-[8px] pl-flex pl-items-center\">\r\n <Image\r\n className=\"pl-w-full pl-h-full\"\r\n src={IMAGES.editMarker}\r\n width={16}\r\n height={16}\r\n alt={marker.title}\r\n />\r\n </div>\r\n <span className=\"pl-text-gray-800 dark:pl-text-secondary-300 pl-text-[13px] pl-font-500\">ویرایش</span>\r\n </div>\r\n <div\r\n className=\"pl-flex pl-flex-1 pl-justify-center pl-gap-4 pl-items-center\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n setDeleteMarker(marker);\r\n dispatch(setMarkersListPopover(false));\r\n }}\r\n >\r\n <div className=\"pl-p-3 pl-bg-main-light pl-rounded-[8px] pl-flex pl-items-center\">\r\n <Image\r\n className=\"pl-w-full pl-h-full\"\r\n src={IMAGES.trashMarker}\r\n width={16}\r\n height={16}\r\n alt={marker.title}\r\n />\r\n </div>\r\n <span className=\"pl-text-gray-800 dark:pl-text-secondary-300 pl-text-[13px] pl-font-500\">حذف</span>\r\n </div>\r\n </div>\r\n </div>\r\n )} */}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </Popover>\r\n {/* <ShareDialog currentTime={videoCurrentTime} markerId={markerId} />\r\n <ConfirmationModal\r\n onClose={() => setDeleteMarker(undefined)}\r\n modalType={\"DELETE\"}\r\n status={!!deleteMarker}\r\n text={\"آیا از حذف نشانگر مطمئن هستید؟\"}\r\n cancelButtonText={\"انصراف\"}\r\n submitButtonText={\"حذف\"}\r\n onSubmit={() => handleDeleteMarker(deleteMarker!)}\r\n >\r\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\">\r\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]\">\r\n <span className=\"pl-emoji-mart-emoji pl-flex pl-flex-col pl-items-center pl-gap-[11px] pl-justify-center pl-h-full\">\r\n <Emoji name={deleteMarker?.sticker} className=\"pl-w-[56px] pl-h-[56px] pl-mx-auto\" />\r\n </span>\r\n </div>\r\n <div>{deleteMarker?.title}</div>\r\n </div>\r\n </ConfirmationModal> */}\r\n </div>\r\n );\r\n};\r\n\r\nexport default MarkersList;\r\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-4\";\r\n else if (conditions(ConditionName.isActiveElements)) {\r\n if (conditions(ConditionName.isTouchScreenPortrait)) styles = \"pl-bottom-4 tablet:pl-bottom-[65px]\";\r\n else if(conditions(ConditionName.isFullScreen)) styles = \"pl-bottom-[104px] tablet:pl-bottom-[137px] desktop:pl-bottom-[146px]\";\r\n else styles = \"pl-bottom-[120px]\";\r\n }\r\n else if (!conditions(ConditionName.isActiveElements)) styles = \"pl-bottom-4\"; \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-z-0 pl-absolute pl-w-full pl-text-center pl-text-[18px] pl-px-4 pl-text-white pl-font-medium ${subtitlePosition()}`}\r\n >\r\n {spliteStringPerLine(subtitleText!).map((text, index) => (\r\n <p\r\n key={index} \r\n className={`pl-mx-auto pl-bg-Common-black-overlay-2 ${(conditions(ConditionName.isTouchScreen) && conditions(ConditionName.isActiveElements)) && \"pl-opacity-50 tablet:pl-opacity-100\"} pl-text-wrap pl-max-w-full pl-w-max pl-px-1`}\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, 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(\r\n event.target.id\r\n )\r\n )\r\n shouldInActiveElements = true;\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\r\n const { play } = store.getState().controller;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover && play && shouldInActiveElements)\r\n 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, multiAudioPopover } = store.getState().popovers;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover) dispatch(setActiveElements(false));\r\n }, activeElementsTime);\r\n } else {\r\n timeoutRef.current = setTimeout(() => {\r\n const { settingPopover, speedPopover, qualityLevelsPopover, multiAudioPopover } = store.getState().popovers;\r\n if (!settingPopover && !speedPopover && !qualityLevelsPopover && !multiAudioPopover) 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;"]}