@werk1/w1-system-videoblock
Version:
Universal video player supporting YouTube, Vimeo, HLS, DASH with coordination and GSAP integration for W1 System
33 lines (32 loc) • 1.53 kB
TypeScript
import React from "react";
import type { W1VideoPlayerState } from "../../../types";
import type { VimeoPlayer, YouTubePlayer } from "../streaming-utils/types";
interface UseVideoControlsProps {
videoRef: React.RefObject<HTMLVideoElement>;
youtubePlayerRef: React.RefObject<YouTubePlayer | null>;
vimeoPlayerRef: React.RefObject<VimeoPlayer | null>;
state: W1VideoPlayerState;
setState: React.Dispatch<React.SetStateAction<W1VideoPlayerState>>;
skipIntervals: number;
enableKeyboardControls: boolean;
onProgress?: (progress: number) => void;
onTimeUpdate?: (currentTime: number) => void;
onVolumeChange?: (volume: number) => void;
onPlaybackRateChange?: (rate: number) => void;
}
export declare const useVideoControls: ({ videoRef, youtubePlayerRef, vimeoPlayerRef, state, setState, skipIntervals, enableKeyboardControls, onProgress, onTimeUpdate, onVolumeChange, onPlaybackRateChange, }: UseVideoControlsProps) => {
controlsRef: React.RefObject<HTMLDivElement | null>;
handlePlay: () => Promise<void>;
handlePause: () => Promise<void>;
handlePlayPause: () => void;
handleVolumeChange: (newVolume: number) => void;
handleMute: () => void;
handleSeek: (newTime: number) => void;
handleSkipBackward: () => void;
handleSkipForward: () => void;
handlePlaybackRateChange: (newRate: number) => void;
handleFullscreen: () => Promise<void>;
handleMobileFullscreen: () => Promise<void>;
handlePictureInPicture: () => Promise<void>;
};
export {};