diff --git a/videojs/index.d.ts b/videojs/index.d.ts index 9e4156ece6..23fcfcddb2 100644 --- a/videojs/index.d.ts +++ b/videojs/index.d.ts @@ -1,63 +1,65 @@ -// Type definitions for Video.js +// Type definitions for Video.js 5.16 // Project: https://github.com/zencoder/video-js // Definitions by: Vincent Bortone // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// The Video.js API allows you to interact with the video through Javascript, whether the browser is playing the video through HTML5 video, Flash, or any other supported playback technologies. +// The Video.js API allows you to interact with the video through +// Javascript, whether the browser is playing the video through HTML5 +// video, Flash, or any other supported playback technologies. -interface VideoJSOptions { - techOrder?: string[]; - html5?: Object; - width?: number; - height?: number; - defaultVolume?: number; - children?: Object; - controls?: boolean; - src?: string; - autoplay?: boolean; - preload?: string; +declare var videojs: videojsStatic; +export = videojs; +export as namespace videojs; + +type videojsStatic = + (id: any, options?: videojs.PlayerOptions, ready?: () => void) => videojs.Player; + +declare namespace videojs { + + interface PlayerOptions { + techOrder?: string[]; + html5?: any; + width?: number; + height?: number; + defaultVolume?: number; + children?: string[]; + controls?: boolean; + src?: string; + autoplay?: boolean; + preload?: string; + } + + interface Source { + type: string; + src: string; + } + + interface Player { + play(): Player; + pause(): Player; + paused(): boolean; + src(newSource: string | Source | Source[]): Player; + currentTime(seconds: number): Player; + currentTime(): number; + duration(): number; + buffered(): TimeRanges; + bufferedPercent(): number; + volume(percentAsDecimal: number): TimeRanges; + volume(): number; + width(): number; + width(pixels: number): Player; + height(): number; + height(pixels: number): Player; + size(width: number, height: number): Player; + requestFullScreen(): Player; + cancelFullScreen(): Player; + ready(callback: () => void ): Player; + on(eventName: string, callback: (eventObject: Event) => void ): void; + off(eventName?: string, callback?: (eventObject: Event) => void ): void; + dispose(): void; + addRemoteTextTrack(options: {}): HTMLTrackElement; + removeRemoteTextTrack(track: HTMLTrackElement): void; + poster(val?: string): string | Player; + playbackRate(rate?: number): number; + } } - -interface VideoJSSource { - type: string; - src: string; -} - -interface VideoJSPlayer { - play(): VideoJSPlayer; - pause(): VideoJSPlayer; - paused(): boolean; - src(newSource: string): VideoJSPlayer; - src(newSource: VideoJSSource): VideoJSPlayer; - src(newSource: VideoJSSource[]): VideoJSPlayer; - currentTime(seconds: number): VideoJSPlayer; - currentTime(): number; - duration(): number; - buffered(): TimeRanges; - bufferedPercent(): number; - volume(percentAsDecimal: number): TimeRanges; - volume(): number; - width(): number; - width(pixels: number): VideoJSPlayer; - height(): number; - height(pixels: number): VideoJSPlayer; - size(width: number, height: number): VideoJSPlayer; - requestFullScreen(): VideoJSPlayer; - cancelFullScreen(): VideoJSPlayer; - ready(callback: () => void ): VideoJSPlayer; - on(eventName: string, callback: (eventObject: Event) => void ): void; - off(eventName: string, callback: () => void ): void; - off(eventName: string): void; - off(): void; - dispose(): void; - addRemoteTextTrack(options : {}) : HTMLTrackElement; - removeRemoteTextTrack(track : HTMLTrackElement) : void; - poster(val?: string) : string|VideoJSPlayer; - playbackRate(rate?: number) : number; -} - -interface VideoJSStatic { - (id: any, options?: VideoJSOptions, ready?: () => void): VideoJSPlayer; -} - -declare var videojs:VideoJSStatic; diff --git a/videojs/tslint.json b/videojs/tslint.json new file mode 100644 index 0000000000..2221e40e4a --- /dev/null +++ b/videojs/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" } \ No newline at end of file diff --git a/videojs/videojs-tests.ts b/videojs/videojs-tests.ts index 6b2c90184e..82161f9119 100644 --- a/videojs/videojs-tests.ts +++ b/videojs/videojs-tests.ts @@ -1,9 +1,10 @@ // Tests for Video.js API +import * as videojs from 'videojs'; videojs("example_video_1").ready(function(){ - var myPlayer:VideoJSPlayer = this; + var myPlayer: videojs.Player = this; // EXAMPLE: Start playing the video. myPlayer.play(); @@ -57,17 +58,35 @@ videojs("example_video_1").ready(function(){ myPlayer.height(480); - myPlayer.size(640,480); + myPlayer.size(640, 480); myPlayer.requestFullScreen(); myPlayer.cancelFullScreen(); + testEvents(myPlayer); +}); - var myFunc = function(){ - var myPlayer: VideoJSPlayer = this; +function testEvents(myPlayer: videojs.Player) { + const myFunc = function() { + const myPlayer: videojs.Player = this; // Do something when the event is fired }; - //myPlayer.addEvent("volumechange", myFunc); - //myPlayer.removeEvent("volumechange", myFunc); -}); + myPlayer.on("error", myFunc); + // Removes the specified listener only. + myPlayer.off("error", myFunc); + + + const myFuncWithArg = function(e: Event) { + const myPlayer: videojs.Player = this; + // Do something when the event is fired + }; + myPlayer.on("volumechange", myFuncWithArg); + // Removes all listeners for the given event type. + myPlayer.off("volumechange"); + + + myPlayer.on("loadeddata", function() { /* Some handler. */ }); + // Removes all listeners. + myPlayer.off(); +}