import { useGoBack } from "@/hooks/useGoBack"; import { forwardRef, useContext, useEffect, useRef } from "react"; import { VideoErrorBoundary } from "./parts/VideoErrorBoundary"; import { VideoPlayerContext, VideoPlayerContextProvider } from "./VideoContext"; export interface VideoPlayerProps { autoPlay?: boolean; children?: React.ReactNode; } const VideoPlayerInternals = forwardRef< HTMLVideoElement, { autoPlay: boolean } >((props, ref) => { const video = useContext(VideoPlayerContext); const didInitialize = useRef(null); useEffect(() => { if (didInitialize.current) return; if (!video.state.hasInitialized || !video.source) return; video.state.initPlayer(video.source, video.sourceType); didInitialize.current = true; }, [didInitialize, video]); // muted attribute is required for safari, as they cant change the volume itself return (