Live video on the AT Protocol
at eli/github-skip-darwin 33 lines 764 B view raw
1import { createContext, ReactNode, useContext } from "react"; 2 3interface VideoElementContextType { 4 videoElement: HTMLVideoElement | null; 5} 6 7const VideoElementContext = createContext<VideoElementContextType | undefined>( 8 undefined, 9); 10 11export function VideoElementProvider({ 12 children, 13 videoElement, 14}: { 15 children: ReactNode; 16 videoElement: HTMLVideoElement | null; 17}) { 18 return ( 19 <VideoElementContext.Provider value={{ videoElement }}> 20 {children} 21 </VideoElementContext.Provider> 22 ); 23} 24 25export function useVideoElement() { 26 const context = useContext(VideoElementContext); 27 if (context === undefined) { 28 throw new Error( 29 "useVideoElement must be used within a VideoElementProvider", 30 ); 31 } 32 return context.videoElement; 33}