]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/assets/player/types/peertube-videojs-typings.ts
Translated using Weblate (Spanish)
[github/Chocobozzz/PeerTube.git] / client / src / assets / player / types / peertube-videojs-typings.ts
1 import { HlsConfig, Level } from 'hls.js'
2 import videojs from 'video.js'
3 import { Engine } from '@peertube/p2p-media-loader-hlsjs'
4 import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models'
5 import { PeerTubeDockPluginOptions } from '../shared/dock/peertube-dock-plugin'
6 import { Html5Hlsjs } from '../shared/p2p-media-loader/hls-plugin'
7 import { P2pMediaLoaderPlugin } from '../shared/p2p-media-loader/p2p-media-loader-plugin'
8 import { RedundancyUrlManager } from '../shared/p2p-media-loader/redundancy-url-manager'
9 import { PeerTubePlugin } from '../shared/peertube/peertube-plugin'
10 import { PlaylistPlugin } from '../shared/playlist/playlist-plugin'
11 import { PeerTubeResolutionsPlugin } from '../shared/resolutions/peertube-resolutions-plugin'
12 import { StatsCardOptions } from '../shared/stats/stats-card'
13 import { StatsForNerdsPlugin } from '../shared/stats/stats-plugin'
14 import { EndCardOptions } from '../shared/upnext/end-card'
15 import { WebTorrentPlugin } from '../shared/webtorrent/webtorrent-plugin'
16 import { PlayerMode } from './manager-options'
17
18 declare module 'video.js' {
19
20 export interface VideoJsPlayer {
21 srOptions_: HlsjsConfigHandlerOptions
22
23 theaterEnabled: boolean
24
25 // FIXME: add it to upstream typings
26 posterImage: {
27 show (): void
28 hide (): void
29 }
30
31 handleTechSeeked_ (): void
32
33 // Plugins
34
35 peertube (): PeerTubePlugin
36
37 webtorrent (): WebTorrentPlugin
38
39 p2pMediaLoader (): P2pMediaLoaderPlugin
40
41 peertubeResolutions (): PeerTubeResolutionsPlugin
42
43 contextmenuUI (options: any): any
44
45 bezels (): void
46 peertubeMobile (): void
47 peerTubeHotkeysPlugin (): void
48
49 stats (options?: StatsCardOptions): StatsForNerdsPlugin
50
51 textTracks (): TextTrackList & {
52 tracks_: (TextTrack & { id: string, label: string, src: string })[]
53 }
54
55 peertubeDock (options: PeerTubeDockPluginOptions): void
56
57 upnext (options: Partial<EndCardOptions>): void
58
59 playlist (): PlaylistPlugin
60 }
61 }
62
63 export interface VideoJSTechHLS extends videojs.Tech {
64 hlsProvider: Html5Hlsjs
65 }
66
67 export interface HlsjsConfigHandlerOptions {
68 hlsjsConfig?: HlsConfig
69
70 levelLabelHandler?: (level: Level) => string
71 }
72
73 type PeerTubeResolution = {
74 id: number
75
76 height?: number
77 label?: string
78 width?: number
79 bitrate?: number
80
81 selected: boolean
82 selectCallback: () => void
83 }
84
85 type VideoJSCaption = {
86 label: string
87 language: string
88 src: string
89 }
90
91 type PeerTubePluginOptions = {
92 mode: PlayerMode
93
94 autoplay: boolean
95 videoDuration: number
96
97 videoViewUrl: string
98 authorizationHeader?: string
99
100 subtitle?: string
101
102 videoCaptions: VideoJSCaption[]
103
104 startTime: number | string
105 stopTime: number | string
106
107 isLive: boolean
108
109 videoUUID: string
110 }
111
112 type PlaylistPluginOptions = {
113 elements: VideoPlaylistElement[]
114
115 playlist: VideoPlaylist
116
117 getCurrentPosition: () => number
118
119 onItemClicked: (element: VideoPlaylistElement) => void
120 }
121
122 type NextPreviousVideoButtonOptions = {
123 type: 'next' | 'previous'
124 handler: () => void
125 isDisabled: () => boolean
126 }
127
128 type PeerTubeLinkButtonOptions = {
129 shortUUID: string
130 }
131
132 type PeerTubeP2PInfoButtonOptions = {
133 p2pEnabled: boolean
134 }
135
136 type WebtorrentPluginOptions = {
137 playerElement: HTMLVideoElement
138
139 autoplay: boolean
140 videoDuration: number
141
142 videoFiles: VideoFile[]
143
144 startTime: number | string
145
146 playerRefusedP2P: boolean
147 }
148
149 type P2PMediaLoaderPluginOptions = {
150 redundancyUrlManager: RedundancyUrlManager
151 type: string
152 src: string
153
154 startTime: number | string
155
156 loader: P2PMediaLoader
157 }
158
159 export type P2PMediaLoader = {
160 getEngine(): Engine
161 }
162
163 type VideoJSPluginOptions = {
164 playlist?: PlaylistPluginOptions
165
166 peertube: PeerTubePluginOptions
167
168 webtorrent?: WebtorrentPluginOptions
169
170 p2pMediaLoader?: P2PMediaLoaderPluginOptions
171 }
172
173 type LoadedQualityData = {
174 qualitySwitchCallback: (resolutionId: number, type: 'video') => void
175 qualityData: {
176 video: {
177 id: number
178 label: string
179 selected: boolean
180 }[]
181 }
182 }
183
184 type ResolutionUpdateData = {
185 auto: boolean
186 resolutionId: number
187 id?: number
188 }
189
190 type AutoResolutionUpdateData = {
191 possible: boolean
192 }
193
194 type PlayerNetworkInfo = {
195 source: 'webtorrent' | 'p2p-media-loader'
196
197 http: {
198 downloadSpeed: number
199 uploadSpeed: number
200 downloaded: number
201 uploaded: number
202 }
203
204 p2p: {
205 downloadSpeed: number
206 uploadSpeed: number
207 downloaded: number
208 uploaded: number
209 numPeers: number
210 }
211
212 // In bytes
213 bandwidthEstimate: number
214 }
215
216 type PlaylistItemOptions = {
217 element: VideoPlaylistElement
218
219 onClicked: () => void
220 }
221
222 export {
223 PlayerNetworkInfo,
224 PlaylistItemOptions,
225 NextPreviousVideoButtonOptions,
226 ResolutionUpdateData,
227 AutoResolutionUpdateData,
228 PlaylistPluginOptions,
229 VideoJSCaption,
230 PeerTubePluginOptions,
231 WebtorrentPluginOptions,
232 P2PMediaLoaderPluginOptions,
233 PeerTubeResolution,
234 VideoJSPluginOptions,
235 LoadedQualityData,
236 PeerTubeLinkButtonOptions,
237 PeerTubeP2PInfoButtonOptions
238 }