{"version":3,"sources":["components/VideoBroadcastApp/Video/Video.module.scss","components/VideoBroadcastApp/VideoPlayer/ui/VideoPlayerUI.module.scss","components/VideoBroadcastApp/VideoPlayer/ui/controls/timeline/VideoPlayerTimeline.module.scss","components/VideoBroadcastApp/VideoPlayer/ui/controls/volume/VideoPlayerVolume.module.scss","components/SponsorVideoLogo/SponsorVideoLogo.module.scss","components/VideoBroadcastApp/VideoPlayer/ui/controls/quality/VideoPlayerQuality.module.scss","styles/styles.module.scss","components/VideoBroadcastApp/components/LiveIndicator/LiveIndicator.module.scss","components/VideoBroadcastApp/components/VideoPlayerStub/VideoPlayerStub.module.scss","components/VideoBroadcastApp/components/VideoPlayerNoHlsStub/VideoPlayerNoHlsStub.module.scss","components/Header/Header.module.scss","components/Events/Events.module.scss","components/VideoBroadcastApp/VideoPlayer/ui/controls/buttons/VideoControlButton.module.scss","components/VideoBroadcastApp/components/VideoSpinner/VideoSpinner.module.scss","components/VideoBroadcastApp/components/BigStateVideoAnimateIcon/BigStateVideoAnimateIcon.module.scss","components/icons/VolumeVideoPlayerIcon.tsx","components/icons/VolumeOffVideoPlayerIcon.tsx","components/VideoBroadcastApp/VideoPlayer/ui/controls/buttons/VideoControlButton.tsx","components/VideoBroadcastApp/VideoPlayer/ui/controls/volume/VideoPlayerVolume.tsx","lib/timers/callback-timer.ts","components/VideoBroadcastApp/VideoPlayer/ui/controls/quality/VideoPlayerQuality.tsx","lib/numbers/format/addLeftPad0.ts","lib/time/format/formatMsToHmss.ts","lib/time/time.consts.ts","components/VideoBroadcastApp/VideoPlayer/ui/controls/timeline/VideoPlayerTimeline.tsx","components/VideoBroadcastApp/VideoPlayer/ViewModel/VideoPlayerErrorCode.ts","components/icons/PlayVideoPlayerIcon.tsx","components/icons/PauseVideoPlayerIcon.tsx","components/VideoBroadcastApp/components/VideoSpinner/VideoSpinner.tsx","components/VideoBroadcastApp/VideoPlayer/ui/VideoPlayerUI.tsx","components/VideoBroadcastApp/VideoPlayer/ViewModel/VideoPlayerVideoUIStateImpl.ts","components/VideoBroadcastApp/VideoPlayer/ViewModel/VideoPlayerUIStateImpl.ts","lib/logging/NamespacedLogger.ts","lib/time/transformSecondsToMs.ts","lib/time/transformMsToSeconds.ts","components/VideoBroadcastApp/VideoPlayer/ViewModel/VideoPlayerViewModel.ts","components/VideoBroadcastApp/components/BigStateVideoAnimateIcon/BigStateVideoAnimateIcon.tsx","components/VideoBroadcastApp/VideoPlayer/VideoPlayer.tsx","components/VideoBroadcastApp/components/LiveIndicator/LiveIndicator.tsx","components/icons/ToMiniVideoPlayerIcon.tsx","components/icons/RestoreFromMiniVideoPlayerIcon.tsx","components/icons/FullScreenVideoPlayerIcon.tsx","components/icons/RestoreScreenVideoPlayerIcon.tsx","components/icons/CloseMiniVideoPlayerIcon.tsx","components/icons/PlayIcon.tsx","components/icons/PauseIcon.tsx","components/VideoBroadcastApp/components/VideoPlayerStub/VideoPlayerStub.tsx","components/VideoBroadcastApp/components/VideoPlayerNoHlsStub/VideoPlayerNoHlsStub.tsx","components/SponsorVideoLogo/SponsorVideoLogo.tsx","components/SponsorVideoLogo/SponsorVideoLogoGroup.tsx","components/VideoBroadcastApp/Video/Video.tsx","config/getAppConfig.ts","components/VideoBroadcastApp/Video/video.functions.ts","lib/fullScreen.ts","AppContent.tsx","components/Header/Header.tsx","components/DebugPage.tsx","lib/ga-calls.ts","lib/scroll.ts","AppMore.tsx","components/Events/Events.tsx","AppRouter.tsx","events.tsx","index.tsx"],"names":["module","exports","VolumeVideoPlayerIcon","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","VolumeOffVideoPlayerIcon","VideoControlButton","children","className","title","onClick","onMouseMove","onMouseLeave","classNames","styles","videoControlButton","calcAndNotifyNewVolume","line","event","setVolume","setMuted","lineDOMRect","getBoundingClientRect","resultVolume","clientX","left","convertVolumeToPixels","volume","pixels","offsetWidth","VideoPlayerVolume","observer","props","useState","showTrack","setShowTrack","iconButtonHover","useCallback","iconButtonLeave","mouseState","isPressed","mute","unmute","isMuted","lineBarRef","useRef","useMemo","onLineMouseDown","current","onLineMouseUp","onLineMoseMove","onLineBarClick","volumePanel","full","short","ref","onMouseDown","onMouseUp","volumeSlider","showBar","style","volumeSliderHandle","CallbackTimer","callback","seconds","timerId","this","setTimeout","stop","clearTimeout","levelXYToP","VideoPlayerQuality","levels","currentLevel","showList","setShowList","qualitySelectedViewLeave","toggleQualitySelectedView","tryHidePopup","quality","qualitySelectedView","display","qualityList","map","level","disabled","isLevelFetching","levelIndex","key","levelButton","__currentLevel","chooseHlsLevel","addLeftPad0","number","condition","toString","formatMsToHmss","ms","allSeconds","Math","floor","allMinutes","SECONDS_IN_MINUTE","allHours","MINUTES_IN_HOUR","resultMinutes","resultSeconds","hasHours","resultAsArray","push","join","calcAndNotifyNewTimelinePercent","root","onMove","rootDOMRect","timelinePercent","VideoPlayerErrorCode","VideoPlayerTimeline","procents","lineHover","setLineHover","procentsByMouse","setProcentsByMouse","lineRef","onLineClick","onLineMouseMove","convertPixelsToProcents","timeLine","__hover","onMouseOver","fillLine","isLivePlaying","currentTime","duration","studButton","timeInfo","PlayVideoPlayerIcon","PauseVideoPlayerIcon","x","VideoSpinner","ldsSpinner","VideoPlayerUI","customControls","controls","videoPlayerState","videoState","video","target","classList","contains","timeLineStyles","onVideoClick","onDoubleClick","onVideoDoubleClick","isFetching","__isFetching","__isLevelFetching","isWaitingData","__isVideoWaitingData","videoWrapper","fullScreen","undefined","videoRef","crossOrigin","autoPlay","loader","centerIndicator","inCenterIndicatorRenderer","liveIndicatorRenderer","isLive","nowWatchingIndicatorRenderer","timeline","currentTimeInMs","durationInMs","moveTimeline","stopPropagation","controlsButtons","controlsLeftPanel","isShowPauseControl","play","pause","time","onLiveRestored","liveBtn","controlsRightPanel","length","extControlsRenderer","VideoPlayerVideoUIStateImpl","action","bound","totalDurationInMs","observable","VideoPlayerUIStateImpl","isReady","hasFailure","errors","markAsReadyToPlayAfterSourceWasFetched","setIsWaitingData","NamespacedLogger","namespace","decoratedNamespace","data","console","debug","log","info","error","transformSecondsToMs","transformMsToSeconds","BigStateVideoAnimateIconType","hlsLogger","videoLogger","VideoPlayerViewModel","uiState","source","withCredentials","videoElement","onSeeked","onSeeking","onCurrentTimeUpdated","actualLive","wasSeeked","hls","handleHlsMediaAttached","handleHlsManifestParsed","processHlsLevels","handleHlsLevelSwitched","currentLevelIndex","setCurrentLevel","setIsLive","details","live","setIsLivePlaying","updateVideoTimeline","updateVideoVolume","handleHlsError","handleAnyVideoEvent","type","handleVideoTimeUpdate","setCurrentTimeInMs","handleVideoCanPlay","markAsReadyToPlay","handleVideoWaiting","handleVideoPause","setIsShowPauseControl","handleVideoPlay","handleVideoSeeking","handleVideoSeeked","handleVideoVolumeChange","percent","newCurrentTimeInSeconds","muted","setIsLevelFetching","hidePauseControl","restartLive","attachMedia","loadSource","settingUpVideoTag","configureVideoElement","seekInMs","Hls","isSupported","markAsFetchingSourceStarted","configureHls","configureVideoTag","setErrors","HLS_DOES_NOT_SUPPORT","destroy","resetLevels","enableWorker","liveBackBufferLength","Infinity","liveMaxLatencyDurationCount","liveSyncDurationCount","manifestLoadingMaxRetry","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","maxBufferHole","xhrSetup","xhr","on","Events","ERROR","MEDIA_ATTACHED","MANIFEST_PARSED","LEVEL_SWITCHED","setTimes","setVolumeData","i","setLevels","addEventListener","VideoPlayer","viewModel","isPlaying","setIsPlaying","useHotkeys","useKeysEvents","preventDefault","onKeySpacePressed","seekMs","playerRewindSecs","setSeekInMs","useEffect","setActualLive","setSource","createRef","currentVideo","setVideoElement","setOnSeeked","setOnSeeking","setOnCurrentTimeUpdated","onPlay","onPause","renderUI","uiRenderer","uiProps","noHlsRenderer","playOrPauseAtClick","LiveIndicator","active","liveIndicator","__active","livePoint","cx","cy","r","liveText","ToMiniVideoPlayerIcon","version","RestoreFromMiniVideoPlayerIcon","stroke","strokeWidth","transform","FullScreenVideoPlayerIcon","RestoreScreenVideoPlayerIcon","CloseMiniVideoPlayerIcon","PlayIcon","id","PauseIcon","BigStateVideoAnimateIcon","bigStateVideoAnimateIcon","PLAY","marginLeft","PAUSE","VideoPlayerStub","videoPlayerStub","defaultBound","VideoPlayerNoHlsStub","videoPlayerNoHlsStub","SponsorVideoLogo","sponsor","url","scale","monochrome","sponsorLogoContainer","href","sponsorLogoImage","src","alt","data-testid","defaultProps","SponsorVideoLogoGroup","sponsors","sponsorLogoGroupContainer","name","webpage","SAVE_VIDEO_SEEK_SECS","telegramSupportBot","hideControlsAfterHoverSecs","saveVideoSeekSecs","miniPlayer","widthByScreenFactor","heightByWidthFactor","minWidth","maxWidth","minHeight","maxHeight","MINI_PLAYER_DIMENSIONS","ws","ping","i_m_watching","PLAYER_REWIND_SECS","Video","isFloatDefault","useScrollMinimizer","showAdvancedControls","onFloatChange","isFloat","setIsFloat","isFullScreen","setIsFullScreen","showCustomControls","setShowCustomControls","stateForBigIcon","setStateForBigIcon","hideControlsAfterHoverTimer","setHideControlsAfterHover","seek","videoToLocalSaveTimer","setVideoToLocalSaveTimer","videoContainerHeight","setVideoContainerHeight","videoMiniContainerWidth","setVideoMiniContainerWidth","videoMiniContainerHeight","setVideoMiniContainerHeight","miniClosed","setMiniClosed","videoContainerEndRef","minimizeAndRestoreByScroll","offsetTop","window","scrollY","scrollIntoView","restoreScreen","document","fullscreenElement","resizeMiniPlayer","innerWidth","handler","removeEventListener","removeWindowScrollListener","removeWindowResizeScrollListener","removeDocumentFullscreenListener","changeFloatMode","newIsFloat","oldIsFloat","scrollTo","top","changeFullScreen","newIsFullScreen","element","doc","documentElement","body","add","fullscreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","openFullscreen","advancedControlsHeight","advancedControlsContainerRef","offsetHeight","newVideoHeight","screen","onExited","remove","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","closeFullscreen","mainVideoContainerRef","parentElement","closeMini","clientY","canMouseEvents","timer","hideControlsAfterHover","videoContainer","__fullScreen","__float","__hide","saver","togglePlayPause","__right","__left","__showWithControls","__stubFloat","videoRestoreFromMiniControlButton","videoCloseMiniControlButton","videoAdvancedControls","extControls","AppContent","hlsPlaylistLink","youtubeLink","allow","allowFullScreen","rel","telegramLink","role","aria-label","replace","surveyMonkey","date","timeStart","timeEnd","complexityEmoji","complexityTag","langTag","tags","description","p","qaIframeLink","showNotes","speakers","speaker","photoLink","affiliation","twitterAccount","Header","header__logo","nav__links","React","Component","DebugPage","hasPassed","updatePageAndSend","newPath","ga","scrollToTop","AppMore","events","filter","to","reverse","subtitle","AppRouter","exact","path","fuckupUrl","from","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.160b743e.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoContainer\":\"Video_videoContainer__NnFqA\",\"__float\":\"Video___float__3T6uC\",\"__hide\":\"Video___hide__2CLjw\",\"__stubFloat\":\"Video___stubFloat__r2ZF7\",\"videoControlButton\":\"Video_videoControlButton__wDcFZ\",\"videoRestoreFromMiniControlButton\":\"Video_videoRestoreFromMiniControlButton__32eQ6\",\"videoCloseMiniControlButton\":\"Video_videoCloseMiniControlButton__1R9RO\",\"__left\":\"Video___left__1BMFA\",\"__right\":\"Video___right__20IGq\",\"videoAdvancedControls\":\"Video_videoAdvancedControls__b_HqG\",\"liveIndicator\":\"Video_liveIndicator__3ikpp\",\"controls-showing\":\"Video_controls-showing__C94bB\",\"__showWithControls\":\"Video___showWithControls__1ZT7W\",\"nowWatchingIndicator\":\"Video_nowWatchingIndicator__MBbIs\",\"__showWithLive\":\"Video___showWithLive__2XlKh\",\"videoBroadcastTimeLine\":\"Video_videoBroadcastTimeLine__zQnZD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"VideoPlayerUI_root__2zG1z\",\"videoWrapper\":\"VideoPlayerUI_videoWrapper__2ruop\",\"__isFetching\":\"VideoPlayerUI___isFetching__2mwiv\",\"video\":\"VideoPlayerUI_video__DZUG2\",\"centerIndicator\":\"VideoPlayerUI_centerIndicator__3dFgo\",\"loader\":\"VideoPlayerUI_loader__2ltPA\",\"__isLevelFetching\":\"VideoPlayerUI___isLevelFetching__3YOnQ\",\"__isVideoWaitingData\":\"VideoPlayerUI___isVideoWaitingData__3NYtj\",\"loadingOpacity\":\"VideoPlayerUI_loadingOpacity__aks9p\",\"controls\":\"VideoPlayerUI_controls__11KFh\",\"controls-showing\":\"VideoPlayerUI_controls-showing__3EyQt\",\"controlsButtons\":\"VideoPlayerUI_controlsButtons__29Y9V\",\"controlsLeftPanel\":\"VideoPlayerUI_controlsLeftPanel__SKT0O\",\"controlsRightPanel\":\"VideoPlayerUI_controlsRightPanel__30BcG\",\"videoControlButton\":\"VideoPlayerUI_videoControlButton__3w-Wu\",\"time\":\"VideoPlayerUI_time__33YxA\",\"liveBtn\":\"VideoPlayerUI_liveBtn__3g9hY\",\"volume\":\"VideoPlayerUI_volume__2A2af\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timeLine\":\"VideoPlayerTimeline_timeLine__2-znq\",\"line\":\"VideoPlayerTimeline_line__WGTcD\",\"__hover\":\"VideoPlayerTimeline___hover__NeOsl\",\"fillLine\":\"VideoPlayerTimeline_fillLine__3hXoF\",\"studButton\":\"VideoPlayerTimeline_studButton__18HQw\",\"controls-showing\":\"VideoPlayerTimeline_controls-showing__2lrjq\",\"timeInfo\":\"VideoPlayerTimeline_timeInfo__3xXeX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"volume\":\"VideoPlayerVolume_volume__2rNDb\",\"volumePanel\":\"VideoPlayerVolume_volumePanel__3Y8TD\",\"volumeSlider\":\"VideoPlayerVolume_volumeSlider__2YRoq\",\"volumeSliderHandle\":\"VideoPlayerVolume_volumeSliderHandle__cEJN9\",\"short\":\"VideoPlayerVolume_short__3ILrJ\",\"full\":\"VideoPlayerVolume_full__2Ko16\",\"showBar\":\"VideoPlayerVolume_showBar__VFcDd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sponsorLogoContainer\":\"SponsorVideoLogo_sponsorLogoContainer__Pj_9e\",\"sponsorLogoImage\":\"SponsorVideoLogo_sponsorLogoImage__2rxJw\",\"monochrome\":\"SponsorVideoLogo_monochrome__1kaUo\",\"sponsorLogoGroupContainer\":\"SponsorVideoLogo_sponsorLogoGroupContainer__2L2CG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"quality\":\"VideoPlayerQuality_quality__2EsGS\",\"qualityList\":\"VideoPlayerQuality_qualityList__6G2uO\",\"qualitySelectedView\":\"VideoPlayerQuality_qualitySelectedView__25Kei\",\"levelButton\":\"VideoPlayerQuality_levelButton__1t398\",\"__currentLevel\":\"VideoPlayerQuality___currentLevel__3jDE1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navBar\":\"styles_navBar__131W3\",\"footer\":\"styles_footer__3o_o0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"liveIndicator\":\"LiveIndicator_liveIndicator__9aTL8\",\"__active\":\"LiveIndicator___active__3zFq8\",\"livePoint\":\"LiveIndicator_livePoint__3KIzr\",\"liveText\":\"LiveIndicator_liveText__23qzG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoPlayerStub\":\"VideoPlayerStub_videoPlayerStub__1U_5e\",\"defaultBound\":\"VideoPlayerStub_defaultBound__nxNCe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoPlayerNoHlsStub\":\"VideoPlayerNoHlsStub_videoPlayerNoHlsStub__1APVd\",\"defaultBound\":\"VideoPlayerNoHlsStub_defaultBound__3Q-0P\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"logo\":\"Header_logo__3T0lc\",\"nav__links\":\"Header_nav__links__2wRhx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"Events_title__2jiLQ\",\"subtitle\":\"Events_subtitle__3L7pV\",\"button__container\":\"Events_button__container__29hOC\",\"button\":\"Events_button__2fRQs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoControlButton\":\"VideoControlButton_videoControlButton__1HRhU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ldsSpinner\":\"VideoSpinner_ldsSpinner__2Gh5f\",\"lds-spinner\":\"VideoSpinner_lds-spinner__2xjja\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bigStateVideoAnimateIcon\":\"BigStateVideoAnimateIcon_bigStateVideoAnimateIcon__9DqlL\",\"grow\":\"BigStateVideoAnimateIcon_grow__2RNKm\",\"hiding\":\"BigStateVideoAnimateIcon_hiding__282UK\",\"hidingHeight\":\"BigStateVideoAnimateIcon_hidingHeight__1G4Sh\"};","import React, { FC } from \"react\";\n\nexport const VolumeVideoPlayerIcon: FC = () => {\n return (\n \n \n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\nexport const VolumeOffVideoPlayerIcon: FC = () => {\n return (\n \n \n \n \n );\n}\n","import React, { FC, ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport styles from './VideoControlButton.module.scss';\n\n\nexport interface VideoControlButtonProps {\n children?: ReactNode;\n className?: string;\n title?: string;\n onClick?: () => void;\n onMouseMove?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport const VideoControlButton: FC = ({\n children,\n className,\n title,\n onClick,\n onMouseMove,\n onMouseLeave\n }) => {\n return (\n onClick ? onClick() : null}\n onMouseMove={() => onMouseMove ? onMouseMove() : null}\n onMouseLeave={() => onMouseLeave ? onMouseLeave() : null}\n />\n );\n}\n","import React, { FC, MouseEvent, MouseEventHandler, useCallback, useMemo, useRef, useState } from 'react';\nimport styles from './VideoPlayerVolume.module.scss';\nimport classNames from 'classnames';\n\nimport { observer } from 'mobx-react';\n\nimport { VideoPlayerVolumeProps } from './VideoPlayerVolumeProps';\n\nimport { VolumeVideoPlayerIcon } from \"../../../../../icons/VolumeVideoPlayerIcon\";\nimport { VolumeOffVideoPlayerIcon } from \"../../../../../icons/VolumeOffVideoPlayerIcon\";\n\nimport { VideoControlButton } from \"../buttons/VideoControlButton\";\n\nfunction calcAndNotifyNewVolume(\n line: HTMLDivElement | null,\n event: MouseEvent,\n setVolume: ((volume: number) => void) | undefined,\n setMuted: ((isMuted: boolean) => void) | undefined,\n) {\n if (line) {\n const lineDOMRect = line.getBoundingClientRect();\n const pixelsFromLeft = event.clientX - lineDOMRect.left;\n const resultVolume = pixelsFromLeft / lineDOMRect.width;\n\n setMuted?.(false);\n\n if (resultVolume <= 0) {\n setMuted?.(true);\n setVolume?.(0);\n } else {\n setVolume?.(resultVolume);\n }\n }\n}\n\nconst convertVolumeToPixels = (volume: number, line: HTMLDivElement | null): number => {\n if (line) {\n const lineWidth = line.offsetWidth;\n const pixels = lineWidth * volume;\n\n return pixels > 52 ? 52 : pixels;\n }\n\n return 0;\n}\n\nexport const VideoPlayerVolume: FC = observer(props => {\n const [ showTrack, setShowTrack ] = useState(false);\n\n const iconButtonHover = useCallback(\n () => {\n setShowTrack(true);\n },\n []\n );\n\n const iconButtonLeave = useCallback(\n () => {\n setShowTrack(false);\n mouseState.isPressed = false;\n },\n []\n );\n\n const mute = useCallback(\n () => {\n props.setMuted?.(true);\n },\n [],\n );\n\n const unmute = useCallback(\n () => {\n props.setMuted?.(false);\n },\n [],\n );\n\n const isMuted = props.isMuted;\n\n const lineBarRef = useRef(null);\n\n const mouseState = useMemo(\n () => ({\n isPressed: false,\n }),\n [],\n );\n\n const onLineMouseDown = useCallback>(\n event => {\n mouseState.isPressed = true;\n calcAndNotifyNewVolume(\n lineBarRef.current,\n event,\n props.setVolume,\n props.setMuted,\n );\n },\n [],\n );\n\n const onLineMouseUp = useCallback(\n () => {\n mouseState.isPressed = false;\n },\n [],\n );\n\n const onLineMoseMove = useCallback>(\n event => {\n if (mouseState.isPressed) {\n calcAndNotifyNewVolume(\n lineBarRef.current,\n event,\n props.setVolume,\n props.setMuted,\n );\n }\n },\n [],\n );\n\n const onLineBarClick = useCallback>(\n event => {\n calcAndNotifyNewVolume(\n lineBarRef.current,\n event,\n props.setVolume,\n props.setMuted,\n );\n },\n [],\n );\n\n return (\n \n { !isMuted && \n \n }\n\n { isMuted && \n \n }\n\n \n \n \n \n \n \n \n );\n});\n","export class CallbackTimer {\n public readonly timerId: number;\n\n constructor(callback: Function, seconds: number) {\n const timerHandler: Function = () => {\n callback();\n\n this.stop();\n };\n\n this.timerId = setTimeout(timerHandler, seconds * 1000);\n }\n\n public stop(): void {\n clearTimeout(this.timerId);\n }\n}\n","import React, { FC, useCallback, useState } from 'react';\nimport styles from './VideoPlayerQuality.module.scss';\nimport classNames from 'classnames';\n\nimport { observer } from 'mobx-react';\n\nimport { VideoPlayerQualityProps } from './VideoPlayerQualityProps';\n\nimport { VideoControlButton } from \"../buttons/VideoControlButton\";\n\nimport { CallbackTimer } from \"../../../../../../lib/timers/callback-timer\";\n\n\nconst levelXYToP = {\n [0]: '',\n [320]: '240p',\n [480]: '360p',\n [512]: '360p',\n [640]: '360p',\n [854]: '480p',\n [1280]: '720p',\n [1920]: '1080p',\n [2560]: '1440p',\n [3840]: '4K',\n}\n\nexport const VideoPlayerQuality: FC = observer(props => {\n const levels = props.levels;\n const currentLevel = props.currentLevel;\n\n const [ showList, setShowList ] = useState(false);\n\n const qualitySelectedViewHover = useCallback(\n () => {\n setShowList(true);\n },\n []\n );\n\n const qualitySelectedViewLeave = useCallback(\n () => {\n setShowList(false);\n },\n []\n );\n\n const toggleQualitySelectedView = useCallback(\n () => {\n setShowList(!showList);\n },\n [showList]\n );\n\n const tryHidePopup = useCallback(() => {\n new CallbackTimer(() => {\n qualitySelectedViewLeave();\n }, 2);\n }, []);\n\n return (\n \n \n {(levelXYToP as any)[currentLevel?.width ?? 0]}\n \n\n \n { levels.map(level =>\n props.chooseHlsLevel?.(level.levelIndex) }\n >\n {(levelXYToP as any)[level.width]}\n \n ) }\n \n \n );\n});\n","\nexport function addLeftPad0(\n number: number,\n condition: (number: number) => boolean = number => number < 10\n): string {\n return (condition(number) ? '0' : '') + number.toString(10);\n}\n","import { MINUTES_IN_HOUR, MS_IN_HOUR, MS_IN_MINUTE, MS_IN_SECOND, SECONDS_IN_MINUTE } from '../time.consts';\nimport { addLeftPad0 } from '../../numbers/format/addLeftPad0';\n\nexport function formatMsToHmss(ms: number): string {\n const allSeconds = Math.floor(ms / MS_IN_SECOND);\n const allMinutes = Math.floor(ms / MS_IN_MINUTE);\n const allHours = Math.floor(ms / MS_IN_HOUR);\n\n const resultMinutes = allMinutes - allHours * MINUTES_IN_HOUR;\n const resultSeconds = allSeconds - allMinutes * SECONDS_IN_MINUTE;\n\n const hasHours = allHours > 0;\n const resultAsArray: string[] = [];\n\n if (hasHours) {\n resultAsArray.push(\n allHours.toString(10)\n );\n }\n\n resultAsArray.push(\n addLeftPad0(\n resultMinutes,\n () => hasHours && resultMinutes < 10,\n ),\n );\n\n resultAsArray.push(\n addLeftPad0(resultSeconds),\n );\n\n return resultAsArray.join(':');\n}\n","\nexport const MINUTES_IN_HOUR = 60;\nexport const SECONDS_IN_MINUTE = 60;\n\nexport const MS_IN_SECOND = 1000;\nexport const MS_IN_MINUTE = SECONDS_IN_MINUTE * MS_IN_SECOND;\nexport const MS_IN_HOUR = MINUTES_IN_HOUR * SECONDS_IN_MINUTE * MS_IN_SECOND;\n","import React, { FC, MouseEvent, MouseEventHandler, useCallback, useMemo, useRef, useState } from 'react';\nimport { observer } from 'mobx-react';\nimport styles from './VideoPlayerTimeline.module.scss';\nimport classNames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\nimport { VideoPlayerTimelineProps } from './VideoPlayerTimelineProps';\nimport { formatMsToHmss } from \"../../../../../../lib/time/format/formatMsToHmss\";\n\nfunction calcAndNotifyNewTimelinePercent(\n root: HTMLDivElement|null,\n event: MouseEvent,\n onMove: ((percent: number) => void)|undefined,\n) {\n if (root) {\n const rootDOMRect = root.getBoundingClientRect();\n const pixelsFromLeft = event.clientX - rootDOMRect.left;\n const timelinePercent = pixelsFromLeft / (rootDOMRect.width / 100);\n onMove?.(timelinePercent);\n }\n}\n\nconst convertPixelsToProcents = (line: HTMLDivElement | null, event: MouseEvent): number => {\n if (line) {\n const rootDOMRect = line.getBoundingClientRect();\n const pixelsFromLeft = event.clientX - rootDOMRect.left;\n return pixelsFromLeft / (rootDOMRect.width / 100);\n }\n\n return 0;\n}\n\nconst convertProcentsToTime = (procents: number, duration: number): number => {\n const ms = duration / 100 * procents;\n\n return ms;\n}\n\nexport const VideoPlayerTimeline: FC = observer(props => {\n\n const [ lineHover, setLineHover ] = useState(false);\n const [ procentsByMouse, setProcentsByMouse ] = useState(0);\n\n const lineRef = useRef(null);\n\n const onLineClick = useCallback>(\n event => calcAndNotifyNewTimelinePercent(\n lineRef.current,\n event,\n props.onMove,\n ),\n [],\n );\n\n const mouseState = useMemo(\n () => ({\n isPressed: false,\n }),\n [],\n );\n\n const onLineMouseDown = useCallback>(\n event => {\n mouseState.isPressed = true;\n\n calcAndNotifyNewTimelinePercent(\n lineRef.current,\n event,\n props.onMove,\n );\n },\n [],\n );\n const onLineMouseUp = useCallback(\n () => {\n mouseState.isPressed = false;\n },\n [],\n );\n\n const onLineMouseMove = useCallback>(\n event => {\n if (mouseState.isPressed) {\n calcAndNotifyNewTimelinePercent(\n lineRef.current,\n event,\n props.onMove,\n );\n }\n\n setProcentsByMouse(convertPixelsToProcents(lineRef.current, event));\n },\n [],\n );\n\n\n\n return (\n \n setLineHover(true)}\n onMouseLeave={() => setLineHover(mouseState.isPressed)}\n >\n \n\n {\n lineHover &&\n <>\n {\n !props.isLivePlaying &&\n \n }\n \n {\n formatMsToHmss(convertProcentsToTime(procentsByMouse, props.duration))\n }\n \n \n }\n \n \n )\n});\n","\nexport enum VideoPlayerErrorCode {\n HLS_DOES_NOT_SUPPORT = 'HLS_DOES_NOT_SUPPORT',\n}\n","import React, { FC } from \"react\";\n\nexport const PlayVideoPlayerIcon: FC = () => {\n return (\n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\nexport const PauseVideoPlayerIcon: FC = () => {\n return (\n \n \n \n \n );\n}\n","import React, { FC } from \"react\";\nimport styles from './VideoSpinner.module.scss';\nimport classNames from \"classnames\";\n\nexport interface VideoSpinnerProps {\n className?: string;\n}\n\nexport const VideoSpinner: FC = ({ className }) => {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n )\n}\n","import React, { FC } from 'react';\nimport styles from './VideoPlayerUI.module.scss';\nimport timeLineStyles from './controls/timeline/VideoPlayerTimeline.module.scss';\nimport classNames from 'classnames';\n\nimport { observer } from 'mobx-react';\n\nimport { VideoPlayerUIProps } from './VideoPlayerUIProps';\n\nimport { VideoPlayerVolume } from './controls/volume/VideoPlayerVolume';\nimport { VideoPlayerQuality } from \"./controls/quality/VideoPlayerQuality\";\nimport { VideoPlayerTimeline } from \"./controls/timeline/VideoPlayerTimeline\";\n\nimport { formatMsToHmss } from '../../../../lib/time/format/formatMsToHmss';\n\nimport { PlayVideoPlayerIcon } from \"../../../icons/PlayVideoPlayerIcon\";\nimport { PauseVideoPlayerIcon } from \"../../../icons/PauseVideoPlayerIcon\";\n\nimport { VideoControlButton } from \"./controls/buttons/VideoControlButton\";\nimport { VideoSpinner } from \"../../components/VideoSpinner/VideoSpinner\";\n\nexport const VideoPlayerUI: FC = observer(\n props => {\n const customControls = props.customControls != null\n ? props.customControls\n : false;\n const controls = !customControls && props.controls != null\n ? props.controls\n : false;\n\n const videoPlayerState = props.videoPlayerState;\n const levels = props.videoPlayerState.levels;\n const currentLevel = videoPlayerState.currentLevel;\n const videoState = videoPlayerState.video;\n\n return (\n {\n if ((event.target as Element).classList.contains(timeLineStyles.line)) {\n return;\n }\n\n props.onVideoClick && props.onVideoClick();\n }}\n onDoubleClick={() => {\n props.onVideoDoubleClick && props.onVideoDoubleClick();\n }}\n className={\n classNames(\n styles.root,\n props.className,\n videoPlayerState.isFetching && styles.__isFetching,\n videoPlayerState.isLevelFetching && styles.__isLevelFetching,\n videoState.isWaitingData && styles.__isVideoWaitingData,\n )\n }\n >\n
\n \n
\n\n
\n \n
\n\n
\n {\n props.inCenterIndicatorRenderer\n ? props.inCenterIndicatorRenderer()\n : null\n }\n
\n\n {\n props.liveIndicatorRenderer\n ? props.liveIndicatorRenderer(videoState.isLive, videoState.isLivePlaying)\n : null\n }\n\n {\n props.nowWatchingIndicatorRenderer\n ? props.nowWatchingIndicatorRenderer(videoState.isLive)\n : null\n }\n\n { customControls && (\n
\n \n\n { event.stopPropagation() }}\n className={styles.controlsButtons}>\n
\n { !videoState.isShowPauseControl && (\n \n \n \n ) }\n { videoState.isShowPauseControl && (\n \n \n \n ) }\n\n \n\n
\n {\n videoState.currentTimeInMs ?\n videoState.isLive\n ? formatMsToHmss(videoState.currentTimeInMs)\n : `${formatMsToHmss(videoState.currentTimeInMs)} / ${formatMsToHmss(videoState.durationInMs)}`\n : null\n }\n {\n videoState.isLive &&\n !videoState.isLivePlaying &&\n {\n props.onLiveRestored && props.onLiveRestored();\n }}\n className={styles.liveBtn}\n >\n
live
\n \n }\n
\n
\n
\n { levels.length !== 0 && (\n \n ) }\n\n {\n props.customControls && props.extControlsRenderer\n ? props.extControlsRenderer()\n : null\n }\n
\n
\n \n )}\n \n );\n },\n);\n","import { VideoPlayerVideoUIState } from '../ui/state/VideoPlayerVideoUIState';\nimport { action, observable } from 'mobx';\n\nexport class VideoPlayerVideoUIStateImpl implements VideoPlayerVideoUIState {\n\n @observable\n isLive = false;\n\n @action.bound\n setIsLive(isLive: boolean) {\n this.isLive = isLive;\n }\n\n @observable\n isLivePlaying = false;\n\n @action.bound\n setIsLivePlaying(isLivePlaying: boolean) {\n this.isLivePlaying = isLivePlaying;\n }\n\n @observable\n isShowPauseControl = false;\n\n @action.bound\n setIsShowPauseControl(isShowPauseControl: boolean) {\n this.isShowPauseControl = isShowPauseControl;\n }\n\n @observable\n isWaitingData = false;\n\n @action.bound\n setIsWaitingData(isWaitingData: boolean) {\n this.isWaitingData = isWaitingData;\n }\n\n @observable\n currentTimeInMs: number = 0;\n\n @action.bound\n setCurrentTimeInMs(currentTimeInMs: number) {\n this.currentTimeInMs = currentTimeInMs;\n }\n\n @observable\n durationInMs: number = 0;\n\n @action.bound\n setTotalDurationInMs(totalDurationInMs: number) {\n this.durationInMs = totalDurationInMs;\n }\n\n @action.bound\n setTimes(\n currentTimeInMs: number,\n totalDurationInMs: number,\n ) {\n this.currentTimeInMs = currentTimeInMs;\n this.durationInMs = totalDurationInMs;\n }\n\n @observable\n volume: number = 0;\n\n @observable\n isMuted: boolean = false;\n\n @action.bound\n setVolumeData(\n volume: number,\n isMuted?: boolean\n ) {\n this.volume = volume;\n if (isMuted != null) {\n this.isMuted = isMuted;\n }\n }\n\n}\n","import { action, observable } from 'mobx';\nimport { CurrentVideoPlayerHlsLevel, VideoPlayerHlsLevel } from './VideoPlayerHlsLevel';\nimport { VideoPlayerErrorCode } from './VideoPlayerErrorCode';\nimport { VideoPlayerUIState } from '../ui/state/VideoPlayerUIState';\nimport { VideoPlayerVideoUIStateImpl } from './VideoPlayerVideoUIStateImpl';\n\nexport class VideoPlayerUIStateImpl implements VideoPlayerUIState {\n\n @observable\n isReady = false;\n\n @observable\n isFetching = false;\n\n @action.bound\n markAsFetchingSourceStarted() {\n this.isFetching = true;\n }\n\n @action.bound\n markAsReadyToPlayAfterSourceWasFetched() {\n this.isFetching = false;\n this.isReady = true;\n }\n\n @observable\n hasFailure = false;\n\n @observable.ref\n errors: VideoPlayerErrorCode[] = [];\n\n @action.bound\n setErrors(\n hasFailure: boolean,\n ...errors:VideoPlayerErrorCode[]\n ) {\n this.hasFailure = hasFailure;\n this.errors = errors || [];\n };\n\n @observable\n isLevelFetching = true;\n\n @action.bound\n setIsLevelFetching(isLevelFetching: boolean) {\n this.isLevelFetching = isLevelFetching;\n }\n\n @observable.ref\n levels: VideoPlayerHlsLevel[] = [];\n\n @action.bound\n setLevels(\n levels: VideoPlayerHlsLevel[],\n ) {\n this.levels = levels\n }\n\n @observable.ref\n currentLevel: CurrentVideoPlayerHlsLevel|null = null;\n\n @action.bound\n setCurrentLevel(\n currentLevel: CurrentVideoPlayerHlsLevel|null,\n isLevelFetching?: boolean,\n ) {\n this.currentLevel = currentLevel;\n\n if (isLevelFetching != null) {\n this.isLevelFetching = isLevelFetching;\n }\n }\n\n @action.bound\n resetLevels() {\n this.levels = [];\n this.currentLevel = null;\n }\n\n @action.bound\n markAsReadyToPlay() {\n if (this.isFetching) {\n this.markAsReadyToPlayAfterSourceWasFetched();\n }\n this.video.setIsWaitingData(false);\n }\n\n video = new VideoPlayerVideoUIStateImpl();\n}\n","\nexport class NamespacedLogger {\n private decoratedNamespace: string;\n\n constructor(\n namespace: string,\n ) {\n this.decoratedNamespace = `[${namespace}]:`;\n }\n\n debug(...data: any) {\n console.debug(this.decoratedNamespace, ...data);\n }\n\n log(...data: any) {\n console.log(this.decoratedNamespace, ...data);\n };\n\n info(...data: any) {\n console.info(this.decoratedNamespace, ...data);\n }\n\n error(...data: any) {\n console.error(this.decoratedNamespace, ...data);\n }\n}\n","\nexport function transformSecondsToMs(seconds: number): number {\n const ms = seconds * 1000;\n return Math.floor(ms);\n}\n","\nexport function transformMsToSeconds(ms: number): number {\n return ms / 1000;\n}\n","import Hls from 'hls.js';\nimport { VideoPlayerHlsLevel } from './VideoPlayerHlsLevel';\nimport { VideoPlayerErrorCode } from './VideoPlayerErrorCode';\nimport { VideoPlayerUIStateImpl } from './VideoPlayerUIStateImpl';\nimport { NamespacedLogger } from '../../../../lib/logging/NamespacedLogger';\nimport { transformSecondsToMs } from '../../../../lib/time/transformSecondsToMs';\nimport { transformMsToSeconds } from '../../../../lib/time/transformMsToSeconds';\n\nconst hlsLogger = new NamespacedLogger('Hls.js:VideoPlayerVM');\nconst videoLogger = new NamespacedLogger('Video:VideoPlayerVM');\n\nexport class VideoPlayerViewModel {\n\n uiState = new VideoPlayerUIStateImpl();\n\n private source: string|undefined;\n private withCredentials: boolean = false;\n\n setSource(\n source: string,\n withCredentials: boolean,\n ) {\n this.source = source;\n this.withCredentials = withCredentials;\n this.settingUpVideoTag();\n }\n\n private videoElement: HTMLVideoElement|undefined;\n\n setVideoElement(videoElement: HTMLVideoElement) {\n this.videoElement = videoElement;\n this.settingUpVideoTag();\n }\n\n private settingUpVideoTag() {\n const videoElement = this.videoElement;\n const source = this.source;\n\n if (\n videoElement != null\n && source != null\n ) {\n this.configureVideoElement(videoElement, source);\n }\n }\n\n private onSeeked: ((seekInMs: number) => void)|undefined;\n\n setOnSeeked(\n onSeeked: ((seekInMs: number) => void)|undefined,\n ) {\n this.onSeeked = onSeeked;\n }\n\n private onSeeking: ((seekInMs: number) => void)|undefined;\n\n setOnSeeking(\n onSeeking: ((seekInMs: number) => void)|undefined,\n ) {\n this.onSeeking = onSeeking;\n }\n\n setSeekInMs(seekInMs: number) {\n if (this.videoElement) {\n this.videoElement.currentTime = transformMsToSeconds(seekInMs);\n }\n }\n\n private onCurrentTimeUpdated: ((seekInMs: number) => void) | undefined;\n\n setOnCurrentTimeUpdated(onCurrentTimeUpdated: ((seekInMs: number) => void) | undefined) {\n this.onCurrentTimeUpdated = onCurrentTimeUpdated;\n }\n\n private actualLive: boolean = false;\n private wasSeeked = false;\n\n setActualLive(\n actualLive: boolean = false,\n ) {\n this.actualLive = actualLive;\n const videoElement = this.videoElement;\n\n if (actualLive && videoElement != null) {\n videoElement.currentTime = videoElement.duration;\n }\n }\n\n private hls: Hls|undefined;\n\n private configureVideoElement(\n videoElement: HTMLVideoElement,\n source: string,\n ) {\n //\n if (!Hls.isSupported()) {\n // TODO [dmitry.makhnev]: implement no HLS way\n this.uiState.setErrors(\n true,\n VideoPlayerErrorCode.HLS_DOES_NOT_SUPPORT,\n );\n return;\n }\n\n this.wasSeeked = false;\n this.uiState.markAsFetchingSourceStarted();\n\n this.configureHls(\n videoElement,\n source,\n this.withCredentials,\n );\n\n this.configureVideoTag(\n videoElement,\n );\n }\n\n private configureHls(\n videoElement: HTMLVideoElement,\n source: string,\n withCredentials: boolean,\n ) {\n\n if (this.hls) {\n this.hls.destroy();\n this.uiState.resetLevels();\n }\n\n const hls = new Hls({\n // TODO [dmitry.makhnev]: resolve settings\n // https://github.com/video-dev/hls.js/blob/master/docs/API.md#fine-tuning\n debug: false,\n enableWorker: true,\n\n liveBackBufferLength: Infinity,\n liveMaxLatencyDurationCount: Infinity,\n liveSyncDurationCount: 2,\n\n manifestLoadingMaxRetry: 10,\n manifestLoadingRetryDelay: 5000,\n manifestLoadingMaxRetryTimeout : 50000,\n\n maxBufferHole: 0.2,\n xhrSetup: xhr => {\n xhr.withCredentials = withCredentials;\n },\n });\n\n this.hls = hls;\n\n hls.on(Hls.Events.ERROR, this.handleHlsError);\n hls.on(Hls.Events.MEDIA_ATTACHED, this.handleHlsMediaAttached);\n hls.on(Hls.Events.MANIFEST_PARSED, this.handleHlsManifestParsed);\n hls.on(Hls.Events.LEVEL_SWITCHED, this.handleHlsLevelSwitched);\n hls.attachMedia(videoElement);\n hls.loadSource(source)\n }\n\n private handleHlsMediaAttached = () => {\n hlsLogger.info('media attached');\n };\n\n private handleHlsManifestParsed = () => {\n hlsLogger.info('manifest parsed');\n this.processHlsLevels();\n };\n\n private handleHlsLevelSwitched = () => {\n hlsLogger.info('level switched');\n let hls = this.hls;\n if (hls) {\n const currentLevelIndex = hls.currentLevel;\n const currentLevel = hls.levels[currentLevelIndex];\n\n this.uiState.setCurrentLevel(\n {\n width: currentLevel.width,\n height: currentLevel.height,\n levelIndex: currentLevelIndex,\n },\n false,\n );\n\n this.uiState.video.setIsLive(\n currentLevel.details?.live || false\n );\n\n this.uiState.video.setIsLivePlaying(\n currentLevel.details?.live || false\n );\n\n this.updateVideoTimeline();\n this.updateVideoVolume();\n }\n };\n\n private updateVideoTimeline() {\n const videoElement = this.videoElement;\n if (videoElement) {\n const currentTimeInMs = transformSecondsToMs(videoElement.currentTime);\n const durationInMs = transformSecondsToMs(videoElement.duration);\n this.uiState.video.setTimes(\n currentTimeInMs,\n durationInMs,\n );\n }\n }\n private updateVideoVolume() {\n const videoElement = this.videoElement;\n if (videoElement) {\n this.uiState.video.setVolumeData(\n videoElement.volume,\n videoElement.muted,\n );\n }\n }\n\n private handleHlsError = (\n event: 'hlsError',\n data: Hls.errorData,\n ) => {\n hlsLogger.error(data);\n };\n\n private processHlsLevels() {\n if (this.hls) {\n const levels: VideoPlayerHlsLevel[] = this.hls.levels.map((level, i) => ({\n width: level.width,\n height: level.height,\n levelIndex: i,\n }));\n this.uiState.setLevels(levels);\n }\n }\n\n private configureVideoTag(\n videoElement: HTMLVideoElement,\n ) {\n videoElement.addEventListener('canplay', this.handleVideoCanPlay);\n videoElement.addEventListener('waiting', this.handleVideoWaiting);\n\n videoElement.addEventListener('play', this.handleVideoPlay);\n videoElement.addEventListener('pause', this.handleVideoPause);\n\n videoElement.addEventListener('timeupdate', this.handleVideoTimeUpdate);\n videoElement.addEventListener('volumechange', this.handleVideoVolumeChange);\n\n videoElement.addEventListener('seeking', this.handleVideoSeeking);\n videoElement.addEventListener('seeked', this.handleVideoSeeked);\n }\n\n private handleAnyVideoEvent = (event: Event) => {\n videoLogger.debug(event.type);\n };\n\n private handleVideoTimeUpdate = () => {\n videoLogger.debug('time update');\n\n const currentTime = this.videoElement?.currentTime || 0;\n const currentTimeInMs = transformSecondsToMs(currentTime);\n\n this.uiState.video.setCurrentTimeInMs(currentTimeInMs);\n\n this.onCurrentTimeUpdated && this.onCurrentTimeUpdated(currentTimeInMs);\n };\n\n private handleVideoCanPlay = () => {\n videoLogger.debug('canplay');\n this.uiState.markAsReadyToPlay();\n };\n\n private handleVideoWaiting = () => {\n videoLogger.debug('waiting');\n this.uiState.video.setIsWaitingData(true);\n };\n\n private handleVideoPause = () => {\n videoLogger.debug('pause');\n this.uiState.video.setIsShowPauseControl(false);\n\n if (this.uiState.video.isLive) {\n this.uiState.video.setIsLivePlaying(false);\n }\n };\n private handleVideoPlay = () => {\n videoLogger.debug('play');\n this.uiState.video.setIsShowPauseControl(true);\n };\n\n private handleVideoSeeking = () => {\n videoLogger.debug('seeking');\n\n this.wasSeeked = true;\n\n const videoElement = this.videoElement;\n if (videoElement) {\n const currentTimeInMs = transformSecondsToMs(videoElement.currentTime);\n this.uiState.video.setCurrentTimeInMs(currentTimeInMs);\n this.onSeeking?.(currentTimeInMs);\n }\n };\n\n private handleVideoSeeked = () => {\n videoLogger.debug('seeked');\n\n const videoElement = this.videoElement;\n if (videoElement) {\n const currentTimeInMs = transformSecondsToMs(videoElement.currentTime);\n this.onSeeked?.(currentTimeInMs);\n }\n };\n\n private handleVideoVolumeChange = () => {\n videoLogger.debug('volume change');\n\n this.updateVideoVolume();\n };\n\n moveTimeline = (percent: number) => {\n const videoElement = this.videoElement;\n if (videoElement) {\n const durationPercentInMs = this.uiState.video.durationInMs / 100;\n const newCurrentTimeInMs = percent * durationPercentInMs;\n const newCurrentTimeInSeconds = transformMsToSeconds(newCurrentTimeInMs);\n videoElement.currentTime = newCurrentTimeInSeconds;\n\n this.uiState.video.setIsLivePlaying(false);\n }\n };\n\n setVolume = (volume: number) => {\n const videoElement = this.videoElement;\n if (videoElement) {\n videoElement.volume = volume;\n }\n };\n\n setMuted = (isMuted: boolean) =>{\n const videoElement = this.videoElement;\n if (videoElement) {\n videoElement.muted = isMuted;\n }\n };\n\n chooseHlsLevel = (levelIndex: number) => {\n if (this.hls) {\n this.hls.currentLevel = levelIndex;\n this.uiState.setIsLevelFetching(true);\n }\n };\n\n hidePauseControl = () => {\n if (this.hls) {\n this.uiState.video.setIsShowPauseControl(false);\n }\n };\n\n play = () => {\n if (this.videoElement) {\n this.videoElement.play();\n }\n };\n\n pause = () => {\n if (this.videoElement) {\n this.videoElement.pause();\n }\n };\n\n restartLive = () => {\n if (this.hls) {\n if (this.source && this.videoElement) {\n this.hls.attachMedia(this.videoElement);\n this.hls.loadSource(this.source);\n }\n }\n }\n}\n","import React, { CSSProperties, FC } from \"react\";\nimport styles from './BigStateVideoAnimateIcon.module.scss';\nimport classNames from \"classnames\";\n\nimport { PlayIcon } from \"../../../icons/PlayIcon\";\nimport { PauseIcon } from \"../../../icons/PauseIcon\";\n\n\nexport enum BigStateVideoAnimateIconType {\n PAUSE = 'PAUSE',\n PLAY = 'PLAY',\n};\n\n\nexport interface BigStateVideoAnimateIconProps {\n type: BigStateVideoAnimateIconType;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const BigStateVideoAnimateIcon: FC = ({\n type,\n className,\n style\n }) => {\n return (\n \n {\n type === BigStateVideoAnimateIconType.PLAY\n ? \n :\n type === BigStateVideoAnimateIconType.PAUSE\n ? \n : null\n }\n \n )\n}\n","import React, { createRef, FC, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { VideoPlayerUI } from './ui/VideoPlayerUI';\nimport { VideoPlayerViewModel } from './ViewModel/VideoPlayerViewModel';\nimport { VideoPlayerUIProps } from './ui/VideoPlayerUIProps';\nimport { VideoPlayerProps } from './VideoPlayerProps';\n\nimport { useHotkeys } from 'react-hotkeys-hook';\n\n\n// ЭТО ТАКОЙ КОМПОНЕНТ - КОТОРЫЙ МОЖНО ВЫНЕСТИ В ЛИБУ!\nexport const VideoPlayer: FC = props => {\n const [ viewModel ] = useState(() => new VideoPlayerViewModel());\n\n const [ isPlaying, setIsPlaying ] = useState(false);\n\n // resolving props\n const withCredentials = props.withCredentials != undefined\n ? props.withCredentials\n : false;\n const source = props.source;\n const actualLive = props.actualLive;\n\n useHotkeys('space', (event) => {\n if (!props.useKeysEvents) {\n return;\n }\n\n event.preventDefault();\n\n props.onKeySpacePressed\n && props.onKeySpacePressed(() => {\n if (isPlaying) {\n pause();\n } else {\n play();\n }\n });\n\n }, {}, [props.useKeysEvents, isPlaying]);\n\n useHotkeys('right', (event) => {\n if (!props.useKeysEvents) {\n return;\n }\n\n event.preventDefault();\n\n const seekMs = (props.playerRewindSecs ?? 10) * 1000;\n const currentTimeInMs = viewModel.uiState.video.currentTimeInMs;\n\n viewModel.setSeekInMs(currentTimeInMs + seekMs);\n }, {}, [props.useKeysEvents]);\n\n useHotkeys('left', (event) => {\n if (!props.useKeysEvents) {\n return;\n }\n\n event.preventDefault();\n\n const seekMs = (props.playerRewindSecs ?? 10) * 1000;\n const currentTimeInMs = viewModel.uiState.video.currentTimeInMs;\n\n viewModel.setSeekInMs(currentTimeInMs - seekMs);\n\n viewModel.uiState.video.setIsLivePlaying(false);\n }, {}, [props.useKeysEvents]);\n\n // connect with props\n useEffect(\n () => {\n viewModel.setActualLive(actualLive || false);\n },\n [source, actualLive],\n );\n\n useEffect(\n () => {\n viewModel.setSource(source, withCredentials);\n },\n [source, withCredentials],\n );\n\n // connect with video tag\n const videoRef = createRef();\n useEffect(\n () => {\n const currentVideo = videoRef.current;\n if (currentVideo) {\n viewModel.setVideoElement(currentVideo);\n }\n },\n [videoRef.current],\n );\n\n // outside api integrations\n // seek\n useEffect(\n () => {\n viewModel.setOnSeeked(props.onSeeked);\n },\n [props.onSeeked],\n );\n useEffect(\n () => {\n viewModel.setOnSeeking(props.onSeeking);\n },\n [props.onSeeking],\n );\n useEffect(\n () => {\n if (props.seekInMs != null) {\n viewModel.setSeekInMs(props.seekInMs);\n }\n },\n [props.seekInMs],\n );\n\n useEffect(\n () => {\n viewModel.setOnCurrentTimeUpdated(props.onCurrentTimeUpdated);\n },\n [props.onCurrentTimeUpdated],\n );\n\n useEffect(() => {\n if (!props.autoPlay) {\n viewModel.hidePauseControl();\n }\n });\n\n useEffect(() => {\n if (props.autoPlay) {\n setIsPlaying(true);\n }\n }, []);\n\n const play = useCallback(\n () => {\n viewModel.play();\n setIsPlaying(true);\n props.onPlay && props.onPlay();\n },\n [isPlaying]\n )\n\n const pause = useCallback(\n () => {\n viewModel.pause();\n setIsPlaying(false);\n viewModel.uiState.video.setIsLivePlaying(false);\n props.onPause && props.onPause();\n },\n [isPlaying]\n );\n\n const renderUI = useMemo(\n () => props.uiRenderer\n ? props.uiRenderer\n : (uiProps: VideoPlayerUIProps) => ,\n [props.uiRenderer],\n );\n\n if (viewModel.uiState.errors && viewModel.uiState.errors.length > 0) {\n return props.noHlsRenderer\n ? props.noHlsRenderer()\n :
\n {\n viewModel.uiState.errors.map(error =>
{error}
)\n }\n
\n }\n\n return (\n renderUI({\n videoRef,\n videoPlayerState: viewModel.uiState,\n crossOrigin: withCredentials ? 'use-credentials' : undefined,\n autoPlay: props.autoPlay,\n customControls: props.customControls,\n controls: props.controls,\n play,\n pause,\n chooseHlsLevel: viewModel.chooseHlsLevel,\n moveTimeline: viewModel.moveTimeline,\n setVolume: viewModel.setVolume,\n setMuted: viewModel.setMuted,\n fullScreen: props.fullScreen,\n extControlsRenderer: props.extControlsRenderer,\n liveIndicatorRenderer: props.liveIndicatorRenderer,\n nowWatchingIndicatorRenderer: props.nowWatchingIndicatorRenderer,\n inCenterIndicatorRenderer: props.inCenterIndicatorRenderer,\n onVideoClick: () => {\n if (props.playOrPauseAtClick) {\n if (isPlaying) {\n pause();\n } else {\n play();\n }\n }\n },\n onLiveRestored: () => {\n viewModel.uiState.markAsFetchingSourceStarted();\n viewModel.restartLive();\n play();\n viewModel.uiState.video.setIsLivePlaying(true);\n },\n onVideoDoubleClick: props.onVideoDoubleClick\n })\n );\n};\n","import React, { FC } from \"react\";\nimport styles from './LiveIndicator.module.scss';\nimport classNames from \"classnames\";\n\nexport interface LiveIndicatorProps {\n className?: string;\n active?: boolean;\n}\n\nexport const LiveIndicator: FC = ({\n className,\n active\n}) => {\n return (\n \n \n \n \n\n
\n live\n
\n \n )\n}\n","import React, { FC } from \"react\";\n\nexport const ToMiniVideoPlayerIcon: FC = () => {\n return (\n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\nexport const RestoreFromMiniVideoPlayerIcon: FC = () => {\n return (\n \n \n \n \n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\nexport const FullScreenVideoPlayerIcon: FC = () => {\n return (\n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\nexport const RestoreScreenVideoPlayerIcon: FC = () => {\n return (\n \n \n \n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\nexport const CloseMiniVideoPlayerIcon: FC = () => {\n return (\n \n \n \n );\n}\n","import React, { CSSProperties, FC } from \"react\";\n\n\nexport interface PlayIconProps {\n style?: CSSProperties;\n}\n\nexport const PlayIcon: FC = ({ style }) => {\n return (\n \n \n \n );\n}\n","import React, { FC } from \"react\";\n\n\nexport const PauseIcon: FC = () => {\n return (\n \n \n \n );\n}\n","import React, { FC } from \"react\";\nimport styles from './VideoPlayerStub.module.scss';\nimport classNames from \"classnames\";\n\n\nexport interface VideoPlayerStubProps {\n className?: string\n}\n\nexport const VideoPlayerStub: FC = ({ className }) => {\n return (\n \n Здесь скоро начнется видосик...\n \n )\n}\n","import React, { FC } from \"react\";\nimport styles from './VideoPlayerNoHlsStub.module.scss';\nimport classNames from \"classnames\";\n\n\nexport interface VideoPlayerNoHlsStubProps {\n className?: string;\n}\n\nexport const VideoPlayerNoHlsStub: FC = ({className}) => {\n return (\n <>\n
\n На данный момент ваше устройство не поддерживается.\n
\n \n )\n}\n","import * as React from 'react'\nimport styles from './SponsorVideoLogo.module.scss'\nimport {url} from \"inspector\";\n\ntype Props = {\n sponsor: string;\n url: string;\n scale?: number;\n monochrome?: boolean;\n}\n\n/**\n * Add images to public/img/sponsors with -bw postfix for monochrome and without postifix for general logo\n * For example: sponsor code - alm_works. Save two images img/sponsors/alm_works.png and img/sponsors/alm_works-bw.png\n * @param sponsor\n * @param url\n * @param scale\n * @param monochrome\n * @constructor\n */\nconst SponsorVideoLogo: React.FunctionComponent = ({\n sponsor,\n url,\n scale,\n monochrome\n }) => {\n\n return (\n \n \n \n );\n}\n\nSponsorVideoLogo.defaultProps = {\n monochrome: false\n}\n\nexport default SponsorVideoLogo\n","import * as React from 'react'\nimport SponsorVideoLogo from \"./SponsorVideoLogo\";\nimport styles from './SponsorVideoLogo.module.scss'\nimport {Sponsor} from \"../../events\";\n\ntype Props = {\n sponsors: Sponsor[];\n monochrome?: boolean;\n}\n\nconst SponsorVideoLogoGroup: React.FunctionComponent = ({sponsors, monochrome}) => {\n return
\n {\n sponsors.map(sponsor => )\n }\n
\n}\n\nexport default SponsorVideoLogoGroup","import React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport styles from './Video.module.scss';\nimport classNames from \"classnames\";\n\nimport { observer } from \"mobx-react\";\n\nimport { VideoPlayer } from '../VideoPlayer/VideoPlayer';\nimport { VideoControlButton } from \"../VideoPlayer/ui/controls/buttons/VideoControlButton\";\nimport { LiveIndicator } from \"../components/LiveIndicator/LiveIndicator\";\n\nimport { ToMiniVideoPlayerIcon } from \"../../icons/ToMiniVideoPlayerIcon\";\nimport { RestoreFromMiniVideoPlayerIcon } from \"../../icons/RestoreFromMiniVideoPlayerIcon\";\nimport { FullScreenVideoPlayerIcon } from \"../../icons/FullScreenVideoPlayerIcon\";\nimport { RestoreScreenVideoPlayerIcon } from \"../../icons/RestoreScreenVideoPlayerIcon\";\nimport { CloseMiniVideoPlayerIcon } from \"../../icons/CloseMiniVideoPlayerIcon\";\n\nimport { closeFullscreen, openFullscreen } from \"../../../lib/fullScreen\";\n\nimport { NowWatchingIndicator } from \"../components/NowWatchingIndicator/NowWatchingIndicator\";\nimport {\n BigStateVideoAnimateIcon,\n BigStateVideoAnimateIconType\n} from \"../components/BigStateVideoAnimateIcon/BigStateVideoAnimateIcon\";\nimport { CallbackTimer } from \"../../../lib/timers/callback-timer\";\n\nimport { VideoPlayerStub } from \"../components/VideoPlayerStub/VideoPlayerStub\";\n// import { VideoBroadcastTimeLine } from \"../components/VideoBroadcastTimeLine/VideoBroadcastTimeLine\";\n\nimport { FormattedMessage } from \"react-intl\";\n\nimport {\n addDocumentFullscreenListener, addWindowResizeListener,\n addWindowScrollListener, getFullScreenElement, getNavBarHeight,\n removeDocumentFullscreenListener, removeWindowResizeScrollListener,\n removeWindowScrollListener,\n} from \"./video.functions\";\n\nimport { getAppConfig } from \"../../../config/getAppConfig\";\n\n\nimport { CallbackRepeater } from \"../../../lib/timers/callback-repeater\";\n\nimport { VideoPlayerNoHlsStub } from \"../components/VideoPlayerNoHlsStub/VideoPlayerNoHlsStub\";\nimport {Sponsor} from \"../../../events\";\nimport SponsorVideoLogoGroup from \"../../SponsorVideoLogo/SponsorVideoLogoGroup\";\n\n\n\nconst NAVIGATION_HEIGHT = 1;\nconst SAVE_VIDEO_SEEK_SECS = getAppConfig()?.saveVideoSeekSecs ?? 5;\nconst PING_I_M_WATCHING = getAppConfig()?.ws?.ping?.i_m_watching ?? 5;\nconst MINI_PLAYER_DIMENSIONS = getAppConfig()?.miniPlayer;\nconst PLAYER_REWIND_SECS = getAppConfig()?.playerRewindSecs ?? 10;\n\nexport interface VideoProps {\n className?: string;\n isFloatDefault?: boolean;\n useScrollMinimizer?: boolean;\n showAdvancedControls?: boolean;\n useKeysEvents?: boolean,\n onMouseMove?: () => void;\n onMouseLeave?: () => void;\n onFloatChange?: (isFloat: boolean) => void;\n url?: string;\n sponsors: Sponsor[];\n}\n\nexport const Video: FC = observer((\n {\n className,\n isFloatDefault,\n useScrollMinimizer,\n showAdvancedControls,\n useKeysEvents,\n onMouseMove,\n onMouseLeave,\n onFloatChange,\n url,\n sponsors\n }) => {\n const [ isFloat, setIsFloat ] = useState(false);\n const [ isFullScreen, setIsFullScreen ] = useState(false);\n const [ showCustomControls, setShowCustomControls ] = useState(false);\n\n const [ iMWatchingRepeater, setIMWatchingRepeater ] = useState();\n\n const [ stateForBigIcon, setStateForBigIcon ] = useState();\n\n const [ hideControlsAfterHoverTimer, setHideControlsAfterHover ] = useState();\n\n const [ currentVideo, setSource ] = useState({\n url: '',\n withCredentials: true,\n });\n\n const [ seek, setSeek ] = useState(undefined);\n\n const [ videoToLocalSaveTimer, setVideoToLocalSaveTimer ] = useState();\n\n const [ videoContainerHeight, setVideoContainerHeight ] = useState();\n\n const [ videoMiniContainerWidth, setVideoMiniContainerWidth ] = useState(480);\n const [ videoMiniContainerHeight, setVideoMiniContainerHeight ] = useState(320);\n\n const [ miniClosed, setMiniClosed ] = useState(false);\n\n const videoContainerEndRef = useRef(null);\n\n const hideControlsAfterHoverSecs = getAppConfig().hideControlsAfterHoverSecs;\n\n const minimizeAndRestoreByScroll = () => {\n const height = videoContainerEndRef.current?.offsetTop ?? Infinity;\n\n if (!isFloat && window.scrollY > height) {\n setIsFloat(true);\n onFloatChange && onFloatChange(true);\n\n videoContainerEndRef.current?.scrollIntoView();\n }\n\n if (isFloat && window.scrollY < NAVIGATION_HEIGHT) {\n setIsFloat(false);\n onFloatChange && onFloatChange(false);\n\n videoContainerEndRef.current?.scrollIntoView();\n }\n }\n\n const restoreScreen = () => {\n if (getFullScreenElement()) {\n } else {\n onMouseLeave && onMouseLeave();\n setIsFullScreen(false);\n setVideoContainerHeight(undefined);\n }\n }\n\n const resizeMiniPlayer = () => {\n const windowWidth = window.innerWidth;\n\n let width = windowWidth / MINI_PLAYER_DIMENSIONS?.widthByScreenFactor ?? 4;\n let height = width * MINI_PLAYER_DIMENSIONS?.heightByWidthFactor ?? .6;\n\n const minWidth = MINI_PLAYER_DIMENSIONS?.minWidth ?? 300;\n const maxWidth = MINI_PLAYER_DIMENSIONS?.maxWidth ?? 600;\n const minHeight = MINI_PLAYER_DIMENSIONS?.minHeight ?? 180;\n const maxHeight = MINI_PLAYER_DIMENSIONS?.maxHeight ?? 360;\n\n width = width < minWidth ? minWidth : width > maxWidth ? maxWidth : width;\n height = height < minHeight ? minHeight : height > maxHeight ? maxHeight : height;\n\n setVideoMiniContainerWidth(width);\n setVideoMiniContainerHeight(height);\n }\n\n const sendIMWatchingMessage = (\n eventId: number,\n speechId: number,\n dayId: number,\n trackId: number,\n slotId: number,\n ) => {\n const message = {\n createdAt: new Date(),\n\n eventId,\n dayId,\n trackId,\n slotId,\n talkId: speechId,\n\n lkUserId: -1,\n jugCrmId: eventId\n }\n\n }\n\n useEffect(() => {\n setIsFloat(isFloatDefault ?? false);\n }, [isFloatDefault]);\n\n useEffect(() => {\n if (!useScrollMinimizer) {\n return;\n }\n\n addWindowScrollListener(minimizeAndRestoreByScroll);\n\n return () => {\n removeWindowScrollListener(minimizeAndRestoreByScroll);\n }\n });\n\n useEffect(() => {\n resizeMiniPlayer();\n\n addWindowResizeListener(resizeMiniPlayer);\n\n return () => {\n removeWindowResizeScrollListener(resizeMiniPlayer);\n }\n });\n\n // useEffect(() => {\n // setSeek(LocalStorageStateService.getVideoSeek(broadcastState?.selectedSpeech?.jEventSpeechId ?? 0, 0));\n // }, [ broadcastState?.selectedSpeech?.jEventSpeechId ]);\n\n useEffect(() => {\n addDocumentFullscreenListener(restoreScreen);\n\n return () => {\n removeDocumentFullscreenListener(restoreScreen);\n }\n }, [isFullScreen]);\n\n // useEffect(() => {\n // if (broadcastState?.selectedSpeech) {\n // selectSpeech(broadcastState?.selectedSpeech.jEventSpeechId);\n //\n // const _repeater = new CallbackRepeater(() => {\n // const places = broadcastService?.getSpeechPlacesBySpeechId(broadcastState?.selectedSpeech?.jEventSpeechId)\n //\n // sendIMWatchingMessage(\n // broadcastState?.selectedEvent?.jugCrmEventId ?? 0,\n // broadcastState?.selectedSpeech?.jEventSpeechId ?? 0,\n // places?.dayId ?? -1,\n // places?.trackId ?? -1,\n // places?.slotId ?? -1,\n // );\n // }, PING_I_M_WATCHING);\n //\n // setIMWatchingRepeater(_repeater);\n // }\n //\n // new CallbackTimer(() => {\n // const places = broadcastService?.getSpeechPlacesBySpeechId(broadcastState?.selectedSpeech?.jEventSpeechId)\n //\n // nowWatchingService?.subscribe({\n // talkId: broadcastState?.selectedSpeech?.jEventSpeechId,\n // slotId: places?.slotId ?? -1,\n // trackId: places?.trackId ?? -1,\n // dayId: places?.dayId ?? -1,\n // eventId: broadcastState?.selectedEvent?.jugCrmEventId\n // });\n // }, 1);\n //\n // return () => {\n // if (broadcastState?.previousSelectedSpeechId) {\n // const places = broadcastService?.getSpeechPlacesBySpeechId(broadcastState?.previousSelectedSpeechId)\n //\n // nowWatchingService?.unsubscribe({\n // talkId: broadcastState?.previousSelectedSpeechId,\n // slotId: places?.slotId ?? -1,\n // trackId: places?.trackId ?? -1,\n // dayId: places?.dayId ?? -1,\n // eventId: broadcastState?.selectedEvent?.jugCrmEventId\n // });\n //\n // iMWatchingRepeater?.finish();\n // }\n // }\n // }, [broadcastState?.selectedSpeech]);\n\n const onSeeked = useCallback(\n (seekInMs: number) => {\n console.log(`onSeeked ${seekInMs}`);\n },\n [],\n );\n\n const onSeeking = useCallback(\n (seekInMs: number) => {\n console.log(`onSeeking ${seekInMs}`);\n },\n [],\n );\n\n const changeFloatMode = useCallback(\n () => {\n const newIsFloat = !isFloat;\n const oldIsFloat = isFloat;\n\n setIsFloat(newIsFloat);\n setShowCustomControls(oldIsFloat);\n\n if (onFloatChange) {\n onFloatChange(newIsFloat);\n }\n\n if (oldIsFloat) {\n setShowCustomControls(false);\n\n setTimeout(() => {\n window.scrollTo({ top: 0 });\n });\n } else {\n setMiniClosed(false);\n\n onMouseLeave && onMouseLeave();\n }\n },\n [isFloat]\n );\n\n const changeFullScreen = useCallback(\n () => {\n const newIsFullScreen = !isFullScreen;\n\n if (newIsFullScreen) {\n openFullscreen();\n setShowCustomControls(false);\n\n setTimeout(() => {\n const advancedControlsHeight = advancedControlsContainerRef.current?.offsetHeight ?? 0;\n const newVideoHeight = window.screen.height - advancedControlsHeight;\n\n setVideoContainerHeight(newVideoHeight);\n }, 100);\n } else {\n closeFullscreen(mainVideoContainerRef.current?.parentElement, () => setVideoContainerHeight(undefined));\n }\n\n onMouseLeave && onMouseLeave();\n\n setIsFullScreen(newIsFullScreen);\n },\n [isFullScreen]\n );\n\n const closeMini = useCallback(() => {\n setMiniClosed(true);\n\n if (!isFloatDefault) {\n changeFloatMode();\n }\n }, [isFloatDefault]);\n\n const showBigStatePlayIcon = () => {\n setStateForBigIcon(BigStateVideoAnimateIconType.PLAY);\n }\n\n const showBigStatePauseIcon = () => {\n setStateForBigIcon(BigStateVideoAnimateIconType.PAUSE);\n }\n\n const hideControlsAfterHover = () => {\n if (hideControlsAfterHoverTimer) {\n hideControlsAfterHoverTimer.stop();\n }\n\n const timer = new CallbackTimer(() => {\n setShowCustomControls(false);\n onMouseLeave && onMouseLeave();\n }, hideControlsAfterHoverSecs);\n\n setHideControlsAfterHover(timer);\n }\n\n const canMouseEvents = (event: any): boolean => {\n return ((videoContainerEndRef.current?.offsetTop ?? 0) - window.scrollY) > NAVIGATION_HEIGHT\n && event.clientY > NAVIGATION_HEIGHT;\n }\n\n const selectSpeech = (speechId: number) => {\n // broadcastService?.selectSpeech(speechId);\n\n // const scheduleActivityWithTrackPlayList = broadcastState?.activitiesMap.get(speechId);\n\n // if (scheduleActivityWithTrackPlayList) {\n // смотрим есть ли персональный плейлист,\n // смотри есть ли смещения\n\n // setSource({\n // url: scheduleActivityWithTrackPlayList?.trackPlaylistUri ?? '',\n // withCredentials: scheduleActivityWithTrackPlayList.trackPlaylistUri !== 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8'\n // });\n // }\n }\n //\n // const goToSpeech = (speechId: number) => {\n // const id = SimpleEncodingForUrl.numbersEncode(broadcastState?.selectedSpeech?.jugCrmEventId ?? 0, speechId);\n // router.push(NAVIGATION_ROUTES.onlineV.route, NAVIGATION_ROUTES.onlineV.createUrl(id));\n // }\n\n const mainVideoContainerRef = useRef(null);\n const advancedControlsContainerRef = useRef(null);\n\n return (\n <>\n {\n if (canMouseEvents(event)) {\n onMouseMove && onMouseMove();\n\n hideControlsAfterHover();\n\n if (!isFloat) {\n setShowCustomControls(true);\n }\n }\n }}\n onMouseLeave={(event) => {\n onMouseLeave && onMouseLeave();\n\n if (hideControlsAfterHoverTimer) {\n hideControlsAfterHoverTimer.stop();\n }\n\n setHideControlsAfterHover(undefined);\n\n setShowCustomControls(false);\n }}\n className={classNames(\n styles.videoContainer,\n isFullScreen ? styles.__fullScreen : null,\n className,\n isFloat ? styles.__float : null,\n // (isFloat && !broadcastState?.selectedSpeech) ? styles.__hide : null,\n (isFloatDefault && miniClosed) ? styles.__hide : null\n )}>\n\n {\n currentVideo && url\n ?\n {\n if (videoToLocalSaveTimer) {\n return;\n }\n\n const saver = new CallbackTimer(() => {\n saver?.stop();\n setVideoToLocalSaveTimer(undefined);\n\n // LocalStorageStateService.setVideoSeek(broadcastState?.selectedSpeech?.jEventSpeechId ?? 0, seek);\n }, SAVE_VIDEO_SEEK_SECS);\n\n setVideoToLocalSaveTimer(saver);\n }}\n onVideoDoubleClick={() => {\n if (!isFloat) {\n changeFullScreen();\n } else {\n changeFloatMode();\n }\n }}\n onKeySpacePressed={(togglePlayPause) => {\n togglePlayPause();\n }}\n noHlsRenderer={() => }\n extControlsRenderer={() => {\n return (\n <>\n {\n !isFloat && !isFullScreen\n ? \n \n \n : null\n }\n {\n isFullScreen\n ? \n \n \n : \n \n \n }\n \n )\n }}\n liveIndicatorRenderer={(isLive, isLivePlaying) => (\n <>\n {\n isLive &&\n \n }\n \n )}\n nowWatchingIndicatorRenderer={(isLive) => (\n <>\n {/*{*/}\n {/* !isFloat &&*/}\n {/* // nowWatchingModel?.nowWatchingNumber != undefined &&*/}\n {/* // nowWatchingModel?.nowWatchingNumber > -1 &&*/}\n {/* */}\n {/*}*/}\n \n )}\n inCenterIndicatorRenderer={() => (\n <>\n {\n stateForBigIcon === 'PLAY' &&\n
\n \n
\n }\n\n {\n stateForBigIcon === 'PAUSE' &&\n
\n \n
\n }\n \n )}\n />\n :\n \n }\n\n {\n isFloat\n ? <>\n \n \n \n \n \n \n \n : null\n }\n \n
\n {\n showAdvancedControls &&\n \n
\n
\n \n
\n\n {/*{ videosMock.map(video => (*/}\n {/* */}\n {/*)) }*/}\n {/*
*/}\n {/**/}\n {/**/}\n {/**/}\n
\n
\n }\n \n );\n});\n\n","\nimport { AppConfigInterface } from \"./config\";\n\n\nexport const getAppConfig = (): AppConfigInterface => {\n return {\n telegramSupportBot: 'tg://resolve?domain=@JUGConfSupport_bot',\n hideControlsAfterHoverSecs: 4,\n saveVideoSeekSecs: 5,\n miniPlayer: {\n widthByScreenFactor: 4,\n heightByWidthFactor: 0.6,\n minWidth: 300,\n maxWidth: 600,\n minHeight: 180,\n maxHeight: 360,\n },\n playerRewindSecs: 10,\n } as AppConfigInterface;\n};\n","import globalStyles from '../../../styles/styles.module.scss';\n\nimport { SimpleEncodingForUrl } from \"../../../lib/encoding/simpleEncodingForUrl\";\nimport { isClientSide } from \"../../../lib/getSafeBrowserObject\";\n\n\nexport const addWindowScrollListener = (handler: () => void) => {\n window.addEventListener('scroll', handler);\n}\n\nexport const removeWindowScrollListener = (handler: () => void) => {\n window.removeEventListener('scroll', handler);\n}\n\nexport const addWindowResizeListener = (handler: () => void) => {\n window.addEventListener('resize', handler);\n}\n\nexport const removeWindowResizeScrollListener = (handler: () => void) => {\n window.removeEventListener('resize', handler);\n}\n\nexport const addDocumentFullscreenListener = (handler: () => void) => {\n document.addEventListener(\"fullscreenchange\", handler);\n}\n\nexport const removeDocumentFullscreenListener = (handler: () => void) => {\n document.removeEventListener(\"fullscreenchange\", handler);\n}\n\nexport const getFullScreenElement = (): Element | null => {\n return document.fullscreenElement;\n}\n\nexport const getNavBarHeight = (): number => {\n const defaultHeight = 56;\n\n if (!isClientSide) {\n return defaultHeight;\n }\n\n const navBar = document.getElementsByClassName(globalStyles.navBar)[0] as HTMLDivElement;\n\n let height = navBar?.offsetHeight ?? defaultHeight;\n\n return height === 0 ? defaultHeight : height;\n}\n","import styles from '../styles/styles.module.scss';\n\n\nexport const openFullscreen = (element?: HTMLElement | null) => {\n const doc = element ? element : document.documentElement as any;\n\n document.body.classList.add(styles.fullscreen);\n\n if (doc.requestFullscreen) {\n doc.requestFullscreen();\n } else if (doc.mozRequestFullScreen) { /* Firefox */\n doc.mozRequestFullScreen();\n } else if (doc.webkitRequestFullscreen) { /* Chrome, Safari and Opera */\n doc.webkitRequestFullscreen();\n } else if (doc.msRequestFullscreen) { /* IE/Edge */\n doc.msRequestFullscreen();\n }\n}\n\nexport const closeFullscreen = (element?: HTMLElement | null, onExited?: () => void) => {\n const doc = document as any;\n\n document.body.classList.remove(styles.fullscreen);\n \n if (doc.exitFullscreen) {\n setTimeout(() => {\n doc.exitFullscreen();\n\n if (onExited) {\n onExited();\n }\n }, 300);\n\n } else if (doc.mozCancelFullScreen) { /* Firefox */\n doc.mozCancelFullScreen();\n\n if (onExited) {\n onExited();\n }\n } else if (doc.webkitExitFullscreen) { /* Chrome, Safari and Opera */\n doc.webkitExitFullscreen();\n\n if (onExited) {\n onExited();\n }\n } else if (doc.msExitFullscreen) { /* IE/Edge */\n doc.msExitFullscreen();\n\n if (onExited) {\n onExited();\n }\n }\n}\n","import React, {FunctionComponent, useEffect} from 'react';\nimport './AppContent.css';\nimport events, {Sponsor, Event} from './events';\nimport {Video} from \"./components/VideoBroadcastApp/Video/Video\";\nimport SponsorVideoLogoGroup from \"./components/SponsorVideoLogo/SponsorVideoLogoGroup\";\n\nexport interface AppProps {\n event: Event;\n}\n\nconst AppContent: FunctionComponent = ({event}) => {\n return (\n <>\n {event.hlsPlaylistLink && (\n
\n \n
\n )}\n {\n event.youtubeLink &&\n
\n