import React, { ReactNode, useEffect, useState, } from 'react' import styles from './styles.module.css' import PlayButton from './PlayButton' import VideoModal from './VideoModal' export interface Props { youtubeID: string onTimeChange?: (time: number) => void children?: ReactNode onOpen?: () => void onClose?: () => void } let closePreviousModal: (() => void) | undefined function VideoPlayer({ youtubeID, children, onTimeChange, onOpen, onClose, }: Props) { const [isOpen, setIsOpen] = useState(false) function openModal() { closePreviousModal?.() closePreviousModal = () => { closeModal() closePreviousModal = undefined } setIsOpen(true) onOpen?.() } function closeModal() { setIsOpen(false) onClose?.() } useEffect(function cleanup() { return () => { closePreviousModal?.() } }, []) return (
{children} {isOpen && }
) } export default VideoPlayer