import React, { createContext, ReactNode, useRef, useState } from "react"; import { PlaybackSpeed } from "./type"; import VideoPlayerLayout from "./VideoPlayerLayout"; interface VideoPlayerContextType { src: string; poster?: string; onError?: (error: string) => void; showControls: boolean; setShowControls: React.Dispatch>; isSettingsOpen: boolean; setIsSettingsOpen: React.Dispatch>; playbackSpeed: PlaybackSpeed; setPlaybackSpeed: React.Dispatch>; videoRef: React.RefObject; isReady: boolean; setIsReady: React.Dispatch>; isPlaying: boolean; setIsPlaying: React.Dispatch>; error: string | null; setError: React.Dispatch>; bufferingState: boolean; setBufferingState: React.Dispatch>; volume: number; setVolume: React.Dispatch>; isMuted: boolean; setIsMuted: React.Dispatch>; loadingProgress: number; setLoadingProgress: React.Dispatch>; currentTime: number; setCurrentTime: React.Dispatch>; duration: number; setDuration: React.Dispatch>; brightness: number; setBrightness: React.Dispatch>; isDragging: boolean; setIsDragging: React.Dispatch>; isHovering: boolean; setIsHovering: React.Dispatch>; progressRef: React.RefObject; } export const VideoPlayerContext = createContext( null ); export function VideoPlayer({ src, poster, onError, }: { src: string; poster?: string; onError?: (error: string) => void; }) { const [showControls, setShowControls] = useState(false); const [isSettingsOpen, setIsSettingsOpen] = useState(false); const [playbackSpeed, setPlaybackSpeed] = useState(1.0); const videoRef = useRef(null); const [isReady, setIsReady] = useState(false); const [isPlaying, setIsPlaying] = useState(false); const [error, setError] = useState(null); const [bufferingState, setBufferingState] = useState(false); const [volume, setVolume] = useState(1); const [isMuted, setIsMuted] = useState(false); const [loadingProgress, setLoadingProgress] = useState(0); const [currentTime, setCurrentTime] = useState(0); const [duration, setDuration] = useState(0); const [brightness, setBrightness] = useState(1); const [isDragging, setIsDragging] = useState(false); const [isHovering, setIsHovering] = useState(false); const progressRef = useRef(null); return ( ); }