X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fpeertube-videojs-typings.ts;h=246f0d390c76984379b6d4b8c40dcba988e37485;hb=ba8a8367e7fde7915ae6633445bf46ebf4a9fe94;hp=8f3d76cacc707c6df1af483129eea8bfd2b64d73;hpb=83fcadac86da0bc6120a5b93850bb9a7fc069fba;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 8f3d76cac..246f0d390 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -1,11 +1,17 @@ -import { PeerTubePlugin } from './peertube-plugin' -import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' +import { HlsConfig, Level } from 'hls.js' +import videojs from 'video.js' +import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models' +import { Html5Hlsjs } from './p2p-media-loader/hls-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' -import { Config, Level } from 'hls.js' +import { PlayerMode } from './peertube-player-options-builder' +import { PeerTubePlugin } from './peertube-plugin' +import { PeerTubeResolutionsPlugin } from './peertube-resolutions-plugin' +import { PlaylistPlugin } from './playlist/playlist-plugin' +import { StatsCardOptions } from './stats/stats-card' +import { StatsForNerdsPlugin } from './stats/stats-plugin' +import { EndCardOptions } from './upnext/end-card' +import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' declare module 'video.js' { @@ -30,50 +36,48 @@ declare module 'video.js' { p2pMediaLoader (): P2pMediaLoaderPlugin + peertubeResolutions (): PeerTubeResolutionsPlugin + contextmenuUI (options: any): any bezels (): void + peertubeMobile (): void + peerTubeHotkeysPlugin (): void - qualityLevels (): QualityLevels + stats (options?: StatsCardOptions): StatsForNerdsPlugin textTracks (): TextTrackList & { - on: Function - tracks_: { kind: string, mode: string, language: string }[] + tracks_: (TextTrack & { id: string, label: string, src: string })[] } - audioTracks (): AudioTrackList + dock (options: { title: string, description: string }): void + + upnext (options: Partial): void + + playlist (): PlaylistPlugin } } export interface VideoJSTechHLS extends videojs.Tech { - hlsProvider: any // FIXME: typings + hlsProvider: Html5Hlsjs } export interface HlsjsConfigHandlerOptions { - hlsjsConfig?: Config & { cueHandler: any }// FIXME: typings - captionConfig?: any // FIXME: typings + hlsjsConfig?: HlsConfig levelLabelHandler?: (level: Level) => string } -type QualityLevelRepresentation = { +type PeerTubeResolution = { id: number - height: 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 + selected: boolean + selectCallback: () => void } type VideoJSCaption = { @@ -83,7 +87,7 @@ type VideoJSCaption = { } type UserWatching = { - url: string, + url: string authorizationHeader: string } @@ -100,6 +104,34 @@ type PeerTubePluginOptions = { videoCaptions: VideoJSCaption[] stopTime: number | string + + isLive: boolean + + videoUUID: string +} + +type PlaylistPluginOptions = { + elements: VideoPlaylistElement[] + + playlist: VideoPlaylist + + getCurrentPosition: () => number + + onItemClicked: (element: VideoPlaylistElement) => void +} + +type NextPreviousVideoButtonOptions = { + type: 'next' | 'previous' + handler: () => void + isDisabled: () => boolean +} + +type PeerTubeLinkButtonOptions = { + shortUUID: string +} + +type PeerTubeP2PInfoButtonOptions = { + p2pEnabled: boolean } type WebtorrentPluginOptions = { @@ -111,6 +143,8 @@ type WebtorrentPluginOptions = { videoFiles: VideoFile[] startTime: number | string + + playerRefusedP2P: boolean } type P2PMediaLoaderPluginOptions = { @@ -122,6 +156,8 @@ type P2PMediaLoaderPluginOptions = { } type VideoJSPluginOptions = { + playlist?: PlaylistPluginOptions + peertube: PeerTubePluginOptions webtorrent?: WebtorrentPluginOptions @@ -130,7 +166,7 @@ type VideoJSPluginOptions = { } type LoadedQualityData = { - qualitySwitchCallback: Function, + qualitySwitchCallback: (resolutionId: number, type: 'video') => void qualityData: { video: { id: number @@ -141,7 +177,7 @@ type LoadedQualityData = { } type ResolutionUpdateData = { - auto: boolean, + auto: boolean resolutionId: number id?: number } @@ -151,6 +187,8 @@ type AutoResolutionUpdateData = { } type PlayerNetworkInfo = { + source: 'webtorrent' | 'p2p-media-loader' + http: { downloadSpeed: number uploadSpeed: number @@ -165,19 +203,32 @@ type PlayerNetworkInfo = { uploaded: number numPeers: number } + + // In bytes + bandwidthEstimate: number +} + +type PlaylistItemOptions = { + element: VideoPlaylistElement + + onClicked: () => void } export { PlayerNetworkInfo, + PlaylistItemOptions, + NextPreviousVideoButtonOptions, ResolutionUpdateData, AutoResolutionUpdateData, + PlaylistPluginOptions, VideoJSCaption, UserWatching, PeerTubePluginOptions, WebtorrentPluginOptions, P2PMediaLoaderPluginOptions, + PeerTubeResolution, VideoJSPluginOptions, LoadedQualityData, - QualityLevelRepresentation, - QualityLevels + PeerTubeLinkButtonOptions, + PeerTubeP2PInfoButtonOptions }