X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fpeertube-videojs-typings.ts;h=e5259092c6cdfaac0a056d424f0288faada30062;hb=10f26f4203b8cef32778bf3435d8112eaea3c093;hp=7b0ea20748e36ee10c61d205bb9e1940ed14d442;hpb=f5fcd9f72514d6c4044a9c904d0ce610033bcba5;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 7b0ea2074..e5259092c 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -1,13 +1,19 @@ +import { Config, Level } from 'hls.js' import videojs from 'video.js' -import { PeerTubePlugin } from './peertube-plugin' -import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' +import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models' 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 { PlayerMode } from './peertube-player-manager' +import { PeerTubePlugin } from './peertube-plugin' +import { PlaylistPlugin } from './playlist/playlist-plugin' +import { EndCardOptions } from './upnext/end-card' +import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' declare module 'video.js' { + export interface VideoJsPlayer { + srOptions_: HlsjsConfigHandlerOptions + theaterEnabled: boolean // FIXME: add it to upstream typings @@ -21,31 +27,61 @@ declare module 'video.js' { // Plugins peertube (): PeerTubePlugin + webtorrent (): WebTorrentPlugin + p2pMediaLoader (): P2pMediaLoaderPlugin contextmenuUI (options: any): any bezels (): void - qualityLevels (): { height: number, id: number }[] & { - selectedIndex: number - - addQualityLevel (representation: { - id: number - label: string - height: number, - _enabled: boolean - }): void - } + qualityLevels (): QualityLevels textTracks (): TextTrackList & { on: Function - tracks_: { kind: string, mode: string, language: string }[] + tracks_: (TextTrack & { id: string, label: string, src: string })[] } + + dock (options: { title: string, description: string }): void + + upnext (options: Partial): void + + playlist (): PlaylistPlugin } } +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 +} + +type QualityLevels = QualityLevelRepresentation[] & { + selectedIndex: number + selectedIndex_: number + + addQualityLevel (representation: QualityLevelRepresentation): void +} + type VideoJSCaption = { label: string language: string @@ -70,6 +106,24 @@ type PeerTubePluginOptions = { videoCaptions: VideoJSCaption[] stopTime: number | string + + isLive: boolean +} + +type PlaylistPluginOptions = { + elements: VideoPlaylistElement[] + + playlist: VideoPlaylist + + getCurrentPosition: () => number + + onItemClicked: (element: VideoPlaylistElement) => void +} + +type NextPreviousVideoButtonOptions = { + type: 'next' | 'previous' + handler: Function + isDisabled: () => boolean } type WebtorrentPluginOptions = { @@ -92,6 +146,8 @@ type P2PMediaLoaderPluginOptions = { } type VideoJSPluginOptions = { + playlist?: PlaylistPluginOptions + peertube: PeerTubePluginOptions webtorrent?: WebtorrentPluginOptions @@ -121,6 +177,8 @@ type AutoResolutionUpdateData = { } type PlayerNetworkInfo = { + source: 'webtorrent' | 'p2p-media-loader' + http: { downloadSpeed: number uploadSpeed: number @@ -137,15 +195,26 @@ type PlayerNetworkInfo = { } } +type PlaylistItemOptions = { + element: VideoPlaylistElement + + onClicked: Function +} + export { PlayerNetworkInfo, + PlaylistItemOptions, + NextPreviousVideoButtonOptions, ResolutionUpdateData, AutoResolutionUpdateData, + PlaylistPluginOptions, VideoJSCaption, UserWatching, PeerTubePluginOptions, WebtorrentPluginOptions, P2PMediaLoaderPluginOptions, VideoJSPluginOptions, - LoadedQualityData + LoadedQualityData, + QualityLevelRepresentation, + QualityLevels }