import React, { useEffect } from 'react'; import cn from 'classnames'; import stl from 'Components/Session_/Player/player.module.css'; import { IPlayerContext, PlayerContext, } from 'Components/Session/playerContext'; import ClipPlayerControls from 'Components/Session/Player/ClipPlayer/ClipPlayerControls'; import { findDOMNode } from 'react-dom'; import Session from 'Types/session'; import styles from 'Components/Session_/playerBlock.module.css'; import ClipPlayerOverlay from 'Components/Session/Player/ClipPlayer/ClipPlayerOverlay'; import { observer } from 'mobx-react-lite'; import { Icon } from 'UI'; import { backgroundClip } from 'html2canvas/dist/types/css/property-descriptors/background-clip'; interface Props { session: Session; range: [number, number]; autoplay: boolean; isHighlight?: boolean; message?: string; } function ClipPlayerContent(props: Props) { const playerContext = React.useContext(PlayerContext); const screenWrapper = React.useRef(null); const { time } = playerContext.store.get(); const { range } = props; React.useEffect(() => { if (!playerContext.player) return; const parentElement = findDOMNode( screenWrapper.current ) as HTMLDivElement | null; if (parentElement && playerContext.player) { playerContext.player?.attach(parentElement); playerContext.player?.play(); } }, [playerContext.player]); React.useEffect(() => { playerContext.player.scale(); }, [playerContext.player]); useEffect(() => { if (time < range[0]) { playerContext.player?.jump(range[0]); } if (time > range[1]) { playerContext.store.update({ completed: true }); playerContext.player?.pause(); } }, [time]); if (!playerContext.player) return null; return (
{props.isHighlight && props.message ? (
{props.message}
) : null}
); } export default observer(ClipPlayerContent);