From a3c4c02787097041774a122029f0a096ed371598 Mon Sep 17 00:00:00 2001 From: M0ns1gn0r Date: Wed, 1 Feb 2017 20:26:14 +0100 Subject: [PATCH 1/2] Export "videojs" as module. --- videojs/index.d.ts | 111 +++++++++++++++++++++------------------ videojs/videojs-tests.ts | 5 +- 2 files changed, 62 insertions(+), 54 deletions(-) diff --git a/videojs/index.d.ts b/videojs/index.d.ts index 9e4156ece6..4249d0d9b9 100644 --- a/videojs/index.d.ts +++ b/videojs/index.d.ts @@ -3,61 +3,68 @@ // 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: videojs; +export = videojs; +export as namespace videojs; + +interface videojs { + (id: any, options?: videojs.PlayerOptions, ready?: () => void): videojs.Player; } -interface VideoJSSource { - type: string; - src: string; -} +declare namespace videojs { -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 PlayerOptions { + techOrder?: string[]; + html5?: Object; + width?: number; + height?: number; + defaultVolume?: number; + children?: Object; + controls?: boolean; + src?: string; + autoplay?: boolean; + preload?: string; + } -interface VideoJSStatic { - (id: any, options?: VideoJSOptions, ready?: () => void): VideoJSPlayer; -} + interface Source { + type: string; + src: string; + } -declare var videojs:VideoJSStatic; + interface Player { + play(): Player; + pause(): Player; + paused(): boolean; + src(newSource: string): Player; + src(newSource: Source): Player; + src(newSource: 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: () => void ): void; + off(eventName: string): void; + off(): void; + dispose(): void; + addRemoteTextTrack(options : {}) : HTMLTrackElement; + removeRemoteTextTrack(track : HTMLTrackElement) : void; + poster(val?: string) : string|Player; + playbackRate(rate?: number) : number; + } +} diff --git a/videojs/videojs-tests.ts b/videojs/videojs-tests.ts index 6b2c90184e..58300ac97a 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(); @@ -65,7 +66,7 @@ videojs("example_video_1").ready(function(){ var myFunc = function(){ - var myPlayer: VideoJSPlayer = this; + var myPlayer: videojs.Player = this; // Do something when the event is fired }; //myPlayer.addEvent("volumechange", myFunc); From 3983f5b72865a8266fe94d5c62b3b30c8bcbeb78 Mon Sep 17 00:00:00 2001 From: M0ns1gn0r Date: Wed, 1 Feb 2017 20:39:59 +0100 Subject: [PATCH 2/2] Add tslint.json to "videojs". * Fix all the issues the linting uncovered. * Extend the tests for on() / off() functions. --- videojs/index.d.ts | 29 ++++++++++++----------------- videojs/tslint.json | 1 + videojs/videojs-tests.ts | 30 ++++++++++++++++++++++++------ 3 files changed, 37 insertions(+), 23 deletions(-) create mode 100644 videojs/tslint.json diff --git a/videojs/index.d.ts b/videojs/index.d.ts index 4249d0d9b9..23fcfcddb2 100644 --- a/videojs/index.d.ts +++ b/videojs/index.d.ts @@ -1,4 +1,4 @@ -// 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 @@ -7,23 +7,22 @@ // Javascript, whether the browser is playing the video through HTML5 // video, Flash, or any other supported playback technologies. -declare var videojs: videojs; +declare var videojs: videojsStatic; export = videojs; export as namespace videojs; -interface videojs { - (id: any, options?: videojs.PlayerOptions, ready?: () => void): videojs.Player; -} +type videojsStatic = + (id: any, options?: videojs.PlayerOptions, ready?: () => void) => videojs.Player; declare namespace videojs { interface PlayerOptions { techOrder?: string[]; - html5?: Object; + html5?: any; width?: number; height?: number; defaultVolume?: number; - children?: Object; + children?: string[]; controls?: boolean; src?: string; autoplay?: boolean; @@ -39,9 +38,7 @@ declare namespace videojs { play(): Player; pause(): Player; paused(): boolean; - src(newSource: string): Player; - src(newSource: Source): Player; - src(newSource: Source[]): Player; + src(newSource: string | Source | Source[]): Player; currentTime(seconds: number): Player; currentTime(): number; duration(): number; @@ -58,13 +55,11 @@ declare namespace videojs { cancelFullScreen(): Player; ready(callback: () => void ): Player; on(eventName: string, callback: (eventObject: Event) => void ): void; - off(eventName: string, callback: () => void ): void; - off(eventName: string): void; - off(): 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; + addRemoteTextTrack(options: {}): HTMLTrackElement; + removeRemoteTextTrack(track: HTMLTrackElement): void; + poster(val?: string): string | Player; + playbackRate(rate?: number): number; } } 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 58300ac97a..82161f9119 100644 --- a/videojs/videojs-tests.ts +++ b/videojs/videojs-tests.ts @@ -58,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: videojs.Player = 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(); +}