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,
};
}