diff --git a/types/jwplayer/index.d.ts b/types/jwplayer/index.d.ts index 0a182483f0..4040d24a52 100644 --- a/types/jwplayer/index.d.ts +++ b/types/jwplayer/index.d.ts @@ -1,10 +1,224 @@ -// Type definitions for JW Player 6.0 +// Type definitions for JW Player V8.0 // Project: http://developer.longtailvideo.com/trac/ // Definitions by: Martin Duparc +// Tomer Kruvi // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // JW Player is the leading HTML5 & Flash video player, optimized for mobile and the desktop. Easy enough for beginners, advanced enough for pros. +interface Version { + version: string; + major: number; + minor: number +} + +interface Browser { + chrome: boolean; + edge: boolean; + facebook: boolean; + firefox: boolean; + ie: boolean; + msie: boolean; + safari: boolean; + version: Version; +} + +interface OS { + android: boolean; + androidNative: boolean; // Android native browser + iOS: boolean; + mobile: boolean; + mac: boolean; + iPad: boolean; + iPhone: boolean; + windows: boolean; + version: Version; +} + +interface Features { + flash: boolean; + flashVersion: number; + iframe: boolean; +} + +interface Environment{ + Browser: Browser; + OS: OS; + Features: Features; +} + +interface CallbackParam { +} + +interface AdProgressParam extends CallbackParam { + client: 'vast' | 'googima'; + creativetype: string; + tag: string; +} + +interface AdCompanionsParam extends CallbackParam { + companions: any[]; + tag: string; +} + +interface AdErrorParam extends CallbackParam { + message: string; + tag: string; +} + +interface AdRequestParam extends CallbackParam { + adposition: 'pre' | 'mid' | 'post'; + client: 'vast' | 'googima'; + offset: 'pre' | 'mid' | 'post'; + tag: string; +} + +interface AdImpressionParam extends CallbackParam { + adposition: 'pre' | 'mid' | 'post'; + adsystem: string; + adtitle: string; + clickThroughUrl: string; + client: 'vast' | 'googima'; + creativetype: string; + linear: string; + mediafile: any; + tag: string; + vastversion: number; + wrapper: any[]; +} + +interface AdStartedParam extends CallbackParam { + creativetype: string; + tag: string; +} + +interface AdPlayParam extends CallbackParam { + creativetype: string; + newstate: string; + oldstate: string; + tag: string; +} + +interface BufferParam extends CallbackParam { + newstate: string; + oldstate: string; + reason: 'loading' | 'complete' | 'stalled' | 'error'; +} + +interface BufferChangeParam extends CallbackParam { + duration: number; + bufferPercent: number; + position: number; + metadata: any; +} + +interface AdTimeParam extends CallbackParam { + client: 'vast' | 'googima'; + creativetype: string; + duration: number; + position: number; + sequence: number; + tag: string; +} + +interface AudioTracksParam extends CallbackParam { + levels: any[]; +} + +interface CaptionsChangedParam extends CallbackParam { + currentTrack: number; +} + +interface CaptionsListParam extends CallbackParam { + tracks: any[]; +} + +interface AudioTrackChangedParam extends CallbackParam { + currentTrack: number; +} + +interface MetadataParam extends CallbackParam { + metadata: any; +} + +interface ControlsParam extends CallbackParam { + controls: boolean; +} + +interface ErrorParam extends CallbackParam { + message: string; +} + +interface FullscreenParam extends CallbackParam { + fullscreen: boolean; +} + +interface IdleParam extends CallbackParam { + oldstate: 'buffering' | 'playing' | 'paused'; +} + +interface LevelsChangedParam extends CallbackParam { + currentQuality: number; +} + +interface MuteParam extends CallbackParam { + mute: boolean; +} + +interface VolumeParam extends CallbackParam { + volume: boolean; +} + +interface PlayParam extends CallbackParam { + oldstate: 'buffering' | 'playing'; + viewable: 0 | 1; +} + +interface PlaylistParam extends CallbackParam { + playlist: any[]; +} + +interface PlaylistItemParam extends CallbackParam { + index: number; + item: any; +} + +interface ReadyParam extends CallbackParam { + setupTime: number; + viewable: 0 | 1; +} + +interface ResizeParam extends CallbackParam { + width: number; + height: number; +} + +interface VisualQualityParam extends CallbackParam { + mode: string; + label: string; + reason: string; +} + +interface LevelsParam extends CallbackParam { + width: number; + levels: any[]; +} + +interface SeekParam extends CallbackParam { + position: number; + offset: number; +} + +interface TimeParam extends CallbackParam { + duration: number; + position: number; + viewable: number; +} + +interface EventCallback { + (param: T): void; +} + interface JWPlayer { addButton(icon: string, label: string, handler: () => void, id: string): void; getAudioTracks(): any[]; @@ -27,68 +241,51 @@ interface JWPlayer { getSafeRegion(): any[]; getState(): string; getVolume(): number; + getEnvironment(): Environment; getWidth(): number; load(playlist: any[]): void; load(playlist: string): void; - onAdClick(callback: (o: { tag: string; }) => void): void; - onAdCompanions(callback: (o: { - tag: string; - companions: any[]; - }) => void): void; - onAdComplete(callback: (o: { tag: string; }) => void): void; - onAdError(callback: (o: { - tag: string; - message: string; - }) => void): void; - onAdImpression(callback: (o: { tag: string; }) => void): void; - onAdPause(callback: (o: { tag: string; }) => void): void; - onAdPlay(callback: (o: { tag: string; }) => void): void; - onAdSkipped(callback: (o: { tag: string; }) => void): void; - onAdTime(callback: (o: { - tag: string; - position: number; - duration: number; - sequence: number; - }) => void): void; - onAudioTracks(callback: (o: { levels: any[]; }) => void): void; - onAudioTrackChange(callback: (o: { currentTrack: number; }) => void): void; - onBeforeComplete(callback: () => void): void; - onBeforePlay(callback: () => void): void; - onBuffer(callback: (o: { oldstate: string }) => void): void; - onBufferChange(callback: () => void): void; - onCaptionsChange(callback: (o: { track: number; }) => void): void; - onCaptionsList(callback: (o: { tracks: any[]; }) => void): void; - onComplete(callback: () => void): void; - onControls(callback: (o: { controls: boolean; }) => void): void; - onDisplayClick(callback: () => void): void; - onError(callback: (o: { message: string }) => void): void; - onFullscreen(callback: (o: { fullscreen: boolean; }) => void): void; - onIdle(callback: (o: { oldstate: string }) => void): void; - onLevelsChanged(callback: (o: { currentQuality: number }) => void): void; - onMeta(callback: (o: { metadata: any; }) => void): void; - onMute(callback: (o: { mute: boolean; }) => void): void; - onPause(callback: (o: { oldstate: string }) => void): void; - onPlay(callback: (o: { oldstate: string }) => void): void; - onPlaylist(callback: () => void): void; - onPlaylistItem(callback: () => void): void; - onPlaylistComplete(callback: () => void): void; - onReady(callback: () => void): void; - onResize(callback: () => void): void; - onQualityChange(callback: () => void): void; - onQualityLevels(callback: (o: { levels: any[] }) => void): void; - onSeek(callback: (o: { - position: number; - offset: number; - }) => void): void; - onSetupError(callback: (o: { - fallback: boolean; - message: string; - }) => void): void; - onTime(callback: (o: { - duration: number; - position: number; - }) => void): void; - onVolume(callback: (o: { volume: number; }) => void): void; + on(event: 'adClick', callback: EventCallback): void; + on(event: 'adCompanions', callback: EventCallback): void; + on(event: 'adComplete', callback: EventCallback): void; + on(event: 'adSkipped', callback: EventCallback): void; + on(event: 'adError', callback: EventCallback): void; + on(event: 'adRequest', callback: EventCallback): void; + on(event: 'adStarted', callback: EventCallback): void; + on(event: 'adImpression', callback: EventCallback): void; + on(event: 'adPlay', callback: EventCallback): void; + on(event: 'adPause', callback: EventCallback): void; + on(event: 'adTime', callback: EventCallback): void; + on(event: 'meta', callback: EventCallback): void; + on(event: 'audioTracks', callback: EventCallback): void; + on(event: 'audioTrackChanged', callback: EventCallback): void; + on(event: 'beforeComplete', callback: () => void): void; + on(event: 'beforePlay', callback: () => void): void; + on(event: 'buffer', callback: EventCallback): void; + on(event: 'bufferChange', callback: EventCallback): void; + on(event: 'captionsChanged', callback: EventCallback): void; + on(event: 'captionsList', callback: EventCallback): void; + on(event: 'controls', callback: EventCallback): void; + on(event: 'displayClick', callback: () => void): void; + on(event: 'error', callback: EventCallback): void; + on(event: 'fullscreen', callback: EventCallback): void; + on(event: 'idle', callback: EventCallback): void; + on(event: 'levelsChanged', callback: EventCallback): void; + on(event: 'mute', callback: EventCallback): void; + on(event: 'volume', callback: EventCallback): void; + on(event: 'pause', callback: EventCallback): void; + on(event: 'play', callback: EventCallback): void; + on(event: 'playlist', callback: EventCallback): void; + on(event: 'playlistItem', callback: EventCallback): void; + on(event: 'playlistComplete', callback: () => void): void; + on(event: 'ready', callback: EventCallback): void; + on(event: 'resize', callback: EventCallback): void; + on(event: 'visualQuality', callback: EventCallback): void; + on(event: 'levels', callback: EventCallback): void; + on(event: 'seek', callback: EventCallback): void; + on(event: 'setupError', callback: EventCallback): void; + on(event: 'remove', callback: () => void): void; + on(event: 'time', callback: EventCallback): void; pause(state?: boolean): void; play(state?: boolean): void; playAd(tag: string): void; @@ -115,4 +312,4 @@ interface JWPlayerStatic { version: string; } -declare var jwplayer:JWPlayerStatic; +declare const jwplayer:JWPlayerStatic;