]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/assets/player/peertube-videojs-typings.ts
Fix videojs typings
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / peertube-videojs-typings.ts
index e4572266130c8bd03c3686f563ad15b6cc9c5344..9616dd326e85118109aac802b5fa456c65593ea5 100644 (file)
@@ -1,13 +1,17 @@
-import videojs from 'video.js'
 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
@@ -21,32 +25,59 @@ declare module 'video.js' {
     // Plugins
 
     peertube (): PeerTubePlugin
+
     webtorrent (): WebTorrentPlugin
+
     p2pMediaLoader (): P2pMediaLoaderPlugin
 
     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
-    }
+    qualityLevels (): QualityLevels
 
     textTracks (): TextTrackList & {
       on: Function
       tracks_: { kind: string, mode: string, language: string }[]
     }
+
+    audioTracks (): AudioTrackList
+
+    dock (options: { title: string, description: string }): void
   }
 }
 
+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
@@ -148,5 +179,7 @@ export {
   WebtorrentPluginOptions,
   P2PMediaLoaderPluginOptions,
   VideoJSPluginOptions,
-  LoadedQualityData
+  LoadedQualityData,
+  QualityLevelRepresentation,
+  QualityLevels
 }