-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-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' {
p2pMediaLoader (): P2pMediaLoaderPlugin
+ peertubeResolutions (): PeerTubeResolutionsPlugin
+
contextmenuUI (options: any): any
bezels (): void
- qualityLevels (): QualityLevels
+ peertubeMobile (): void
+
+ stats (options?: StatsCardOptions): StatsForNerdsPlugin
textTracks (): TextTrackList & {
- on: Function
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: 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 = {
}
type UserWatching = {
- url: string,
+ url: string
authorizationHeader: string
}
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 = {
videoFiles: VideoFile[]
startTime: number | string
+
+ playerRefusedP2P: boolean
}
type P2PMediaLoaderPluginOptions = {
}
type VideoJSPluginOptions = {
+ playlist?: PlaylistPluginOptions
+
peertube: PeerTubePluginOptions
webtorrent?: WebtorrentPluginOptions
}
type LoadedQualityData = {
- qualitySwitchCallback: Function,
+ qualitySwitchCallback: (resolutionId: number, type: 'video') => void
qualityData: {
video: {
id: number
}
type ResolutionUpdateData = {
- auto: boolean,
+ auto: boolean
resolutionId: number
id?: number
}
}
type PlayerNetworkInfo = {
+ source: 'webtorrent' | 'p2p-media-loader'
+
http: {
downloadSpeed: number
uploadSpeed: number
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
}