]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/assets/player/peertube-videojs-typings.ts
Fix some old typing issues
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / peertube-videojs-typings.ts
index e4572266130c8bd03c3686f563ad15b6cc9c5344..ea39ac44d4f74ec37392f68dd9f6315384349f9d 100644 (file)
@@ -1,13 +1,23 @@
+import { HlsConfig, 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 { 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 { PlayerMode } from './peertube-player-manager'
+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' {
+
   export interface VideoJsPlayer {
+    srOptions_: HlsjsConfigHandlerOptions
+
     theaterEnabled: boolean
 
     // FIXME: add it to upstream typings
@@ -21,32 +31,53 @@ declare module 'video.js' {
     // Plugins
 
     peertube (): PeerTubePlugin
+
     webtorrent (): WebTorrentPlugin
+
     p2pMediaLoader (): P2pMediaLoaderPlugin
 
+    peertubeResolutions (): PeerTubeResolutionsPlugin
+
     contextmenuUI (options: any): any
 
     bezels (): void
 
-    qualityLevels (): { height: number, id: number }[] & {
-      selectedIndex: number
-      selectedIndex_: number
-
-      addQualityLevel (representation: {
-        id: number
-        label: string
-        height: number
-        _enabled: boolean
-      }): void
-    }
+    stats (options?: StatsCardOptions): StatsForNerdsPlugin
 
     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<EndCardOptions>): void
+
+    playlist (): PlaylistPlugin
   }
 }
 
+export interface VideoJSTechHLS extends videojs.Tech {
+  hlsProvider: Html5Hlsjs
+}
+
+export interface HlsjsConfigHandlerOptions {
+  hlsjsConfig?: HlsConfig
+
+  levelLabelHandler?: (level: Level) => string
+}
+
+type PeerTubeResolution = {
+  id: number
+
+  height?: number
+  label?: string
+  width?: number
+  bitrate?: number
+
+  selected: boolean
+  selectCallback: () => void
+}
+
 type VideoJSCaption = {
   label: string
   language: string
@@ -54,7 +85,7 @@ type VideoJSCaption = {
 }
 
 type UserWatching = {
-  url: string,
+  url: string
   authorizationHeader: string
 }
 
@@ -71,6 +102,30 @@ 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 WebtorrentPluginOptions = {
@@ -93,6 +148,8 @@ type P2PMediaLoaderPluginOptions = {
 }
 
 type VideoJSPluginOptions = {
+  playlist?: PlaylistPluginOptions
+
   peertube: PeerTubePluginOptions
 
   webtorrent?: WebtorrentPluginOptions
@@ -101,7 +158,7 @@ type VideoJSPluginOptions = {
 }
 
 type LoadedQualityData = {
-  qualitySwitchCallback: Function,
+  qualitySwitchCallback: (resolutionId: number, type: 'video') => void
   qualityData: {
     video: {
       id: number
@@ -112,7 +169,7 @@ type LoadedQualityData = {
 }
 
 type ResolutionUpdateData = {
-  auto: boolean,
+  auto: boolean
   resolutionId: number
   id?: number
 }
@@ -122,6 +179,8 @@ type AutoResolutionUpdateData = {
 }
 
 type PlayerNetworkInfo = {
+  source: 'webtorrent' | 'p2p-media-loader'
+
   http: {
     downloadSpeed: number
     uploadSpeed: number
@@ -136,17 +195,31 @@ 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
+  LoadedQualityData,
+  PeerTubeLinkButtonOptions
 }