Files
OpenFrame/types/youtube.d.ts
T

82 lines
1.8 KiB
TypeScript

// YouTube IFrame API type declarations
interface Window {
YT: typeof YT;
onYouTubeIframeAPIReady: (() => void) | undefined;
}
declare namespace YT {
class Player {
constructor(elementId: string | HTMLElement | null, options?: PlayerOptions);
playVideo(): void;
pauseVideo(): void;
stopVideo(): void;
seekTo(seconds: number, allowSeekAhead?: boolean): void;
mute(): void;
unMute(): void;
isMuted(): boolean;
setVolume(volume: number): void;
getVolume(): number;
getCurrentTime(): number;
getDuration(): number;
getPlayerState(): PlayerState;
setPlaybackRate(suggestedRate: number): void;
getPlaybackRate(): number;
getAvailablePlaybackRates(): number[];
destroy(): void;
}
interface PlayerOptions {
width?: number | string;
height?: number | string;
videoId?: string;
playerVars?: PlayerVars;
events?: PlayerEvents;
}
interface PlayerVars {
autoplay?: 0 | 1;
controls?: 0 | 1;
disablekb?: 0 | 1;
enablejsapi?: 0 | 1;
fs?: 0 | 1;
iv_load_policy?: 1 | 3;
modestbranding?: 0 | 1;
rel?: 0 | 1;
showinfo?: 0 | 1;
start?: number;
end?: number;
}
interface PlayerEvents {
onReady?: (event: PlayerEvent) => void;
onStateChange?: (event: OnStateChangeEvent) => void;
onPlaybackQualityChange?: (event: PlayerEvent) => void;
onPlaybackRateChange?: (event: PlayerEvent) => void;
onError?: (event: OnErrorEvent) => void;
onApiChange?: (event: PlayerEvent) => void;
}
interface PlayerEvent {
target: Player;
}
interface OnStateChangeEvent extends PlayerEvent {
data: PlayerState;
}
interface OnErrorEvent extends PlayerEvent {
data: number;
}
enum PlayerState {
UNSTARTED = -1,
ENDED = 0,
PLAYING = 1,
PAUSED = 2,
BUFFERING = 3,
CUED = 5,
}
}