X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fpeertube-videojs-typings.ts;h=9616dd326e85118109aac802b5fa456c65593ea5;hb=7e37e111116e41530749b88327bc601cb39ade03;hp=79a5a6c4d6c7c8bd2aec7baad21d4e4fa5e89ddf;hpb=b718fd22374d64534bcfe69932cf562894abed6a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts index 79a5a6c4d..9616dd326 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -1,27 +1,81 @@ -// FIXME: something weird with our path definition in tsconfig and typings -// @ts-ignore -import * as videojs from 'video.js' - -import { VideoFile } from '../../../../shared/models/videos/video.model' import { PeerTubePlugin } from './peertube-plugin' import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin' import { PlayerMode } from './peertube-player-manager' +import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager' +import { VideoFile } from '@shared/models' +import videojs from 'video.js/dist/alt/video.core.js' +import { Config, Level } from 'hls.js' + +declare module 'video.js' { + + export interface VideoJsPlayer { + srOptions_: HlsjsConfigHandlerOptions + + theaterEnabled: boolean + + // FIXME: add it to upstream typings + posterImage: { + show (): void + hide (): void + } + + handleTechSeeked_ (): void + + // Plugins -declare namespace videojs { - interface Player { peertube (): PeerTubePlugin + webtorrent (): WebTorrentPlugin + p2pMediaLoader (): P2pMediaLoaderPlugin + + contextmenuUI (options: any): any + + bezels (): void + + qualityLevels (): QualityLevels + + textTracks (): TextTrackList & { + on: Function + tracks_: { kind: string, mode: string, language: string }[] + } + + audioTracks (): AudioTrackList + + dock (options: { title: string, description: string }): void } } -interface VideoJSComponentInterface { - _player: videojs.Player +export interface VideoJSTechHLS extends videojs.Tech { + hlsProvider: any // FIXME: typings +} + +export interface HlsjsConfigHandlerOptions { + hlsjsConfig?: Config & { cueHandler: any }// FIXME: typings + captionConfig?: any // FIXME: typings + + levelLabelHandler?: (level: Level) => string +} + +type QualityLevelRepresentation = { + id: number + height: number + + label?: string + width?: number + bandwidth?: number + bitrate?: number + + enabled?: Function + _enabled: boolean +} - new (player: videojs.Player, options?: any): any +type QualityLevels = QualityLevelRepresentation[] & { + selectedIndex: number + selectedIndex_: number - registerComponent (name: string, obj: any): any + addQualityLevel (representation: QualityLevelRepresentation): void } type VideoJSCaption = { @@ -41,12 +95,13 @@ type PeerTubePluginOptions = { autoplay: boolean videoViewUrl: string videoDuration: number - startTime: number | string userWatching?: UserWatching subtitle?: string videoCaptions: VideoJSCaption[] + + stopTime: number | string } type WebtorrentPluginOptions = { @@ -56,12 +111,16 @@ type WebtorrentPluginOptions = { videoDuration: number videoFiles: VideoFile[] + + startTime: number | string } type P2PMediaLoaderPluginOptions = { - redundancyBaseUrls: string[] + redundancyUrlManager: RedundancyUrlManager type: string src: string + + startTime: number | string } type VideoJSPluginOptions = { @@ -72,9 +131,6 @@ type VideoJSPluginOptions = { p2pMediaLoader?: P2PMediaLoaderPluginOptions } -// videojs typings don't have some method we need -const videojsUntyped = videojs as any - type LoadedQualityData = { qualitySwitchCallback: Function, qualityData: { @@ -117,13 +173,13 @@ export { PlayerNetworkInfo, ResolutionUpdateData, AutoResolutionUpdateData, - VideoJSComponentInterface, - videojsUntyped, VideoJSCaption, UserWatching, PeerTubePluginOptions, WebtorrentPluginOptions, P2PMediaLoaderPluginOptions, VideoJSPluginOptions, - LoadedQualityData + LoadedQualityData, + QualityLevelRepresentation, + QualityLevels }