import { IThumbnail } from '@src/types'; import { Sprite } from '@src/ui/components/Sprite'; import { seekbarRef, seekbarThumbnailRef, seekbarTooltipRef, } from '@src/ui/State'; import { IInfo } from '@src/ui/types'; import { useSlider } from '@src/ui/utils/useSlider'; import { withState } from '@src/ui/withState'; import cx from 'classnames'; import React, { useEffect } from 'react'; interface SeekbarProps { isActive: boolean; adBreakData: any; seekbarThumbnailPercentage: number; activeThumbnail?: IThumbnail; seekbarTooltipPercentage: number; seekbarTooltipText: string; progressPercentage: number; bufferedPercentage: number; seekbarPercentage: number; showSeekAhead: boolean; showCuepoints: boolean; cuePoints: number[]; setSeekbarState(state: any); } export const Seekbar = withState((props: SeekbarProps) => { useSlider(seekbarRef.current as HTMLElement, props.setSeekbarState); return (
{!!props.activeThumbnail && ( )}
{props.seekbarTooltipText}
{props.showSeekAhead && (
)} {props.showCuepoints && (
{props.cuePoints.map(cuePoint => (
))}
)}
); }, mapProps); function mapProps(info: IInfo): SeekbarProps { return { setSeekbarState: info.actions.setSeekbarState, isActive: info.data.isSeekbarHover || info.data.isSeekbarSeeking, adBreakData: info.data.adBreakData, seekbarThumbnailPercentage: info.data.seekbarThumbnailPercentage, seekbarTooltipPercentage: info.data.seekbarTooltipPercentage, seekbarTooltipText: info.data.seekbarTooltipText, progressPercentage: info.data.progressPercentage, activeThumbnail: info.data.activeThumbnail, bufferedPercentage: info.data.bufferedPercentage, seekbarPercentage: info.data.seekbarPercentage, showSeekAhead: info.data.isSeekbarHover && !info.data.isSeekbarSeeking, showCuepoints: !info.data.adBreakData && !!info.data.cuePoints.length, cuePoints: info.data.cuePoints, }; }