diff --git a/youtube/youtube.d.ts b/youtube/youtube.d.ts index 8056271380..b1c1e43140 100644 --- a/youtube/youtube.d.ts +++ b/youtube/youtube.d.ts @@ -1,24 +1,31 @@ // Type definitions for YouTube [No version numbering] // Project: https://developers.google.com/youtube/ // Definitions by: Daz Wilkin +// Updated by: Ian Obermiller // Definitions: https://github.com/borisyankov/DefinitelyTyped -// I'm a TypeScript noob so please be gentle! +module YT { + interface EventArgs { + target: Player; + data: any; + } -module Google.YT { - interface Event { - (event: any): void; + interface EventHandler { + (event: EventArgs): void; } + export interface Events { - onReady?: Event; - onPlayback?: Event; - onStateChange?: Event; + onReady?: EventHandler; + onPlayback?: EventHandler; + onStateChange?: EventHandler; } + export enum ListType { search, user_uploads, playlist, } + export interface PlayerVars { autohide?: number; autoplay?: number; @@ -42,91 +49,104 @@ module Google.YT { start?: number; theme?: string; } + export interface PlayerOptions { - width: number; - height: number; - videoId: string; - playerVars: PlayerVars; - events: Events; + width?: number; + height?: number; + videoId?: string; + playerVars?: PlayerVars; + events?: Events; } - interface LoadVideoByTestId { + + interface VideoByIdParams { videoId: string; - startSeconds: number; - endSeconds: number; - suggestedQuality: string; + startSeconds?: number; + endSeconds?: number; + suggestedQuality?: string; } - export interface Player { - + + interface VideoByUrlParams { + mediaContentUrl: string; + startSeconds?: number; + endSeconds?: number; + suggestedQuality?: string; + } + + export class Player { // Constructor - new (string, playerOptions:PlayerOptions): any; + constructor(id: string, playerOptions: PlayerOptions); // Queueing functions - //loadVideoById:(videoId: string, startSeconds: number, suggestedQuality: string)=> void; - loadVideoById:(LoadVideoByTestId)=> void; + loadVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): void; + loadVideoById(VideoByIdParams): void; + cueVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): void; + cueVideoById(VideoByIdParams): void; + + loadVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): void; + loadVideoByUrl(VideoByUrlParams): void; + cueVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): void; + cueVideoByUrl(VideoByUrlParams): void; // Properties size; // Playing - playVideo: () =>void; - pauseVideo: () =>void; - stopVideo: () =>void; - seekTo: (seconds:number, allowSeekAhead:bool) =>void; - clearVideo: () =>void; + playVideo(): void; + pauseVideo(): void; + stopVideo(): void; + seekTo(seconds:number, allowSeekAhead:bool): void; + clearVideo(): void; // Playlist - nextVideo: () =>void; - previousVideo: () =>void; - playVideoAt:(index: number) =>void; + nextVideo(): void; + previousVideo(): void; + playVideoAt(index: number): void; // Volume - mute: () =>void; - unMute: () =>void; - isMuted: () =>bool; - setVolume: (volume: number) =>void; - getVolume: () =>number; + mute(): void; + unMute(): void; + isMuted(): bool; + setVolume(volume: number): void; + getVolume(): number; // Sizing - setSize: (width: number, height: number) =>any; + setSize(width: number, height: number): any; // Playback - getPlaybackRate: () =>number; - setPlaybackRate: (suggestedRate:number) =>void; + getPlaybackRate(): number; + setPlaybackRate(suggestedRate:number): void; getAvailablePlaybackRates(): number[]; // Behavior - setLoop: (loopPlaylists: bool) =>void; - setShuffle: (shufflePlaylist: bool) =>void; + setLoop(loopPlaylists: bool): void; + setShuffle(shufflePlaylist: bool): void; // Status - getVideoLoadedFraction: () =>number; - getPlayerState: () =>number; - getCurrentTime:()=> number; - getVideoStartBytes:()=>number; - getVideoBytesLoaded: () =>number; - getVideoBytesTotal: () =>number; + getVideoLoadedFraction(): number; + getPlayerState(): number; + getCurrentTime(): number; + getVideoStartBytes(): number; + getVideoBytesLoaded(): number; + getVideoBytesTotal(): number; // Information - getDuration: () =>number; - getVideoUrl: () =>string; - getVideoEmbedCode: () =>string; + getDuration(): number; + getVideoUrl(): string; + getVideoEmbedCode(): string; // Playlist - getPlaylist: () =>any[]; - getPlaylistIndex:()=>number; + getPlaylist(): any[]; + getPlaylistIndex(): number; // Event Listener - addEventListener: (event: string, listener: string) =>void; - + addEventListener(event: string, listener: string): void; } -} -interface YT { - Player: Google.YT.Player; - PlayerState: { - BUFFERING: number; - CUED: number; - ENDED: number; - PAUSED: number; - PLAYING: number; + + export enum PlayerState { + BUFFERING, + CUED, + ENDED, + PAUSED, + PLAYING }; -} \ No newline at end of file +}