Live video on the AT Protocol
1import React, { createContext, useContext, ReactNode } 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}