@locpd/vidstack 1.12.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +22 -0
- package/analyze.json.d.ts +8 -0
- package/bundle.d.ts +1 -0
- package/cdn/chunks/vidstack-2f5gzOW6.js +1 -0
- package/cdn/chunks/vidstack-BYgY9wmd.js +1 -0
- package/cdn/chunks/vidstack-BfBBPhXV.js +1 -0
- package/cdn/chunks/vidstack-Bjo5esRp.js +1 -0
- package/cdn/chunks/vidstack-BuL67v3q.js +1 -0
- package/cdn/chunks/vidstack-C0msPRTd.js +3 -0
- package/cdn/chunks/vidstack-CJNLoJPa.js +1 -0
- package/cdn/chunks/vidstack-CQSpZ7X8.js +16 -0
- package/cdn/chunks/vidstack-C_AxqLKV.js +1 -0
- package/cdn/chunks/vidstack-CioT3Yw2.js +1 -0
- package/cdn/chunks/vidstack-CrqkytHl.js +1 -0
- package/cdn/chunks/vidstack-D0M8R0ZU.js +1 -0
- package/cdn/chunks/vidstack-D40FSa5B.js +3 -0
- package/cdn/chunks/vidstack-DD2JwFVU.js +1 -0
- package/cdn/chunks/vidstack-DRH_1tFW.js +1 -0
- package/cdn/chunks/vidstack-DfDZuHNP.js +1 -0
- package/cdn/chunks/vidstack-DiNS2Vx5.js +1 -0
- package/cdn/chunks/vidstack-xjJ-ui_l.js +1 -0
- package/cdn/providers/vidstack-audio-2Dt_Ivbp.js +1 -0
- package/cdn/providers/vidstack-dash-CUtD4e6q.js +1 -0
- package/cdn/providers/vidstack-google-cast-BdORATUX.js +1 -0
- package/cdn/providers/vidstack-hls-R25Kb6DP.js +1 -0
- package/cdn/providers/vidstack-html-DaAUJYsD.js +1 -0
- package/cdn/providers/vidstack-video-Csvox7SO.js +1 -0
- package/cdn/providers/vidstack-vimeo-D4Z96kg2.js +1 -0
- package/cdn/providers/vidstack-youtube-DiND6h3s.js +1 -0
- package/cdn/vidstack.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-2f5gzOW6.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-45yH5los.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BBVMdOnf.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BB_ulI_T.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BcAewM33.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BfBBPhXV.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-Bxv1Qnxe.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-C2ZbG62f.js +3 -0
- package/cdn/with-layouts/chunks/vidstack-CCYIOKgL.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CL6PeIO1.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-C_AxqLKV.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CifDkwDH.js +795 -0
- package/cdn/with-layouts/chunks/vidstack-Cry7aD59.js +3 -0
- package/cdn/with-layouts/chunks/vidstack-D065okCn.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-DGuMoXmI.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-DRH_1tFW.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-DVBs1XoQ.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-Dge3KT8k.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-DiNS2Vx5.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-HvYfJoen.js +1 -0
- package/cdn/with-layouts/providers/vidstack-audio-DE5vKIzW.js +1 -0
- package/cdn/with-layouts/providers/vidstack-dash-CA2agUuZ.js +1 -0
- package/cdn/with-layouts/providers/vidstack-google-cast-CGs-t8HM.js +1 -0
- package/cdn/with-layouts/providers/vidstack-hls-BHMbMFFR.js +1 -0
- package/cdn/with-layouts/providers/vidstack-html-Dm9gmNk6.js +1 -0
- package/cdn/with-layouts/providers/vidstack-video-C5it_Lbl.js +1 -0
- package/cdn/with-layouts/providers/vidstack-vimeo-BabLn9sy.js +1 -0
- package/cdn/with-layouts/providers/vidstack-youtube-D8UlccUL.js +1 -0
- package/cdn/with-layouts/vidstack.js +1 -0
- package/dev/chunks/vidstack-B7Zi3v_O.js +104 -0
- package/dev/chunks/vidstack-BFg1ZqiG.js +91 -0
- package/dev/chunks/vidstack-BGB2pa9s.js +58 -0
- package/dev/chunks/vidstack-BaIbHZE3.js +1519 -0
- package/dev/chunks/vidstack-Bb2rASIc.js +5188 -0
- package/dev/chunks/vidstack-Bcmx8pmK.js +224 -0
- package/dev/chunks/vidstack-Bl4b0Nen.js +29 -0
- package/dev/chunks/vidstack-Bo5OTJ06.js +58 -0
- package/dev/chunks/vidstack-BoAGnlRt.js +58 -0
- package/dev/chunks/vidstack-Bpr4fI4n.js +7 -0
- package/dev/chunks/vidstack-Bt8MP2DK.js +204 -0
- package/dev/chunks/vidstack-Bu2kfzUd.js +1637 -0
- package/dev/chunks/vidstack-C-ffXlSV.js +2995 -0
- package/dev/chunks/vidstack-C-ztJq-f.js +109 -0
- package/dev/chunks/vidstack-CFNlaVTR.js +55 -0
- package/dev/chunks/vidstack-C_l97D5j.js +254 -0
- package/dev/chunks/vidstack-CjhKISI0.js +114 -0
- package/dev/chunks/vidstack-CofXIJAy.js +57 -0
- package/dev/chunks/vidstack-CwTj4H1w.js +18 -0
- package/dev/chunks/vidstack-DDwbYVHV.js +66 -0
- package/dev/chunks/vidstack-DFImIcIL.js +11 -0
- package/dev/chunks/vidstack-DGDvUbvO.js +33 -0
- package/dev/chunks/vidstack-DO0kqA99.js +107 -0
- package/dev/chunks/vidstack-DXxIKXmd.js +50 -0
- package/dev/chunks/vidstack-DajrMUR0.js +297 -0
- package/dev/chunks/vidstack-DbBJlz7I.js +10 -0
- package/dev/chunks/vidstack-Dihypf8P.js +11 -0
- package/dev/chunks/vidstack-DlAhl87f.js +1193 -0
- package/dev/chunks/vidstack-Dm1xEU9Q.js +34 -0
- package/dev/chunks/vidstack-Dv_LIPFu.js +14 -0
- package/dev/chunks/vidstack-igYn0Apa.js +254 -0
- package/dev/chunks/vidstack-krOAtKMi.js +32 -0
- package/dev/chunks/vidstack-qh1N5_f_.js +26 -0
- package/dev/chunks/vidstack-rB-wqXw1.js +107 -0
- package/dev/chunks/vidstack-zG6PIeGg.js +66 -0
- package/dev/define/plyr-layout.js +51 -0
- package/dev/define/templates/plyr-layout.js +571 -0
- package/dev/define/templates/vidstack-audio-layout.js +167 -0
- package/dev/define/templates/vidstack-video-layout.js +390 -0
- package/dev/define/vidstack-icons.js +1 -0
- package/dev/define/vidstack-player-default-layout.js +21 -0
- package/dev/define/vidstack-player-layouts.js +25 -0
- package/dev/define/vidstack-player-ui.js +70 -0
- package/dev/define/vidstack-player.js +19 -0
- package/dev/global/plyr.js +501 -0
- package/dev/global/vidstack-player.js +129 -0
- package/dev/providers/vidstack-audio.js +35 -0
- package/dev/providers/vidstack-dash.js +516 -0
- package/dev/providers/vidstack-google-cast.js +474 -0
- package/dev/providers/vidstack-hls.js +408 -0
- package/dev/providers/vidstack-html.js +567 -0
- package/dev/providers/vidstack-video.js +207 -0
- package/dev/providers/vidstack-vimeo.js +554 -0
- package/dev/providers/vidstack-youtube.js +286 -0
- package/dev/vidstack-elements.js +36 -0
- package/dev/vidstack.js +91 -0
- package/dom.d.ts +91 -0
- package/elements.d.ts +1433 -0
- package/empty.vtt +1 -0
- package/global/player.d.ts +52 -0
- package/global/plyr.d.ts +343 -0
- package/google-cast.d.ts +1422 -0
- package/icons.d.ts +1 -0
- package/index.d.ts +402 -0
- package/package.json +199 -0
- package/player/index.d.ts +3 -0
- package/player/layouts/default.d.ts +3 -0
- package/player/layouts/index.d.ts +3 -0
- package/player/layouts/plyr.d.ts +3 -0
- package/player/styles/base.css +153 -0
- package/player/styles/default/buffering.css +55 -0
- package/player/styles/default/buttons.css +175 -0
- package/player/styles/default/captions.css +181 -0
- package/player/styles/default/chapter-title.css +26 -0
- package/player/styles/default/controls.css +56 -0
- package/player/styles/default/gestures.css +19 -0
- package/player/styles/default/icons.css +6 -0
- package/player/styles/default/keyboard.css +148 -0
- package/player/styles/default/layouts/audio.css +417 -0
- package/player/styles/default/layouts/video.css +590 -0
- package/player/styles/default/menus.css +959 -0
- package/player/styles/default/poster.css +52 -0
- package/player/styles/default/sliders.css +391 -0
- package/player/styles/default/theme.css +2461 -0
- package/player/styles/default/thumbnail.css +40 -0
- package/player/styles/default/time.css +45 -0
- package/player/styles/default/tooltips.css +141 -0
- package/player/styles/plyr/theme.css +1237 -0
- package/player/ui.d.ts +3 -0
- package/plugins.d.ts +19 -0
- package/plugins.js +13 -0
- package/prod/chunks/vidstack-B01xzxC4.js +7 -0
- package/prod/chunks/vidstack-BCeb7ryV.js +201 -0
- package/prod/chunks/vidstack-BGSTndAW.js +1590 -0
- package/prod/chunks/vidstack-BPitBBjh.js +1519 -0
- package/prod/chunks/vidstack-BQlOPwOu.js +45 -0
- package/prod/chunks/vidstack-BSDzlwxO.js +4778 -0
- package/prod/chunks/vidstack-BT0m6zEi.js +109 -0
- package/prod/chunks/vidstack-BTigPj2h.js +55 -0
- package/prod/chunks/vidstack-BiyXcJ_M.js +107 -0
- package/prod/chunks/vidstack-BoVf5n1M.js +2985 -0
- package/prod/chunks/vidstack-Bq6c3Bam.js +58 -0
- package/prod/chunks/vidstack-ByLCIBtB.js +297 -0
- package/prod/chunks/vidstack-C2US-gSO.js +248 -0
- package/prod/chunks/vidstack-C9vIqaYT.js +10 -0
- package/prod/chunks/vidstack-CF6fixCQ.js +1193 -0
- package/prod/chunks/vidstack-CTojmhKq.js +66 -0
- package/prod/chunks/vidstack-ChQTHmIQ.js +77 -0
- package/prod/chunks/vidstack-Cm6_unwd.js +246 -0
- package/prod/chunks/vidstack-CwTj4H1w.js +18 -0
- package/prod/chunks/vidstack-D3ltXc3a.js +33 -0
- package/prod/chunks/vidstack-D5EzK014.js +14 -0
- package/prod/chunks/vidstack-DDXt6fpN.js +58 -0
- package/prod/chunks/vidstack-DJDnh4xT.js +11 -0
- package/prod/chunks/vidstack-DXxIKXmd.js +50 -0
- package/prod/chunks/vidstack-D_-9AA6_.js +29 -0
- package/prod/chunks/vidstack-DbkZGjSn.js +107 -0
- package/prod/chunks/vidstack-Dihypf8P.js +11 -0
- package/prod/chunks/vidstack-Dm1xEU9Q.js +34 -0
- package/prod/chunks/vidstack-Dq5Yu0Vr.js +205 -0
- package/prod/chunks/vidstack-DqAw8m9J.js +26 -0
- package/prod/chunks/vidstack-DsPOyKtl.js +57 -0
- package/prod/chunks/vidstack-krOAtKMi.js +32 -0
- package/prod/chunks/vidstack-nLyr4NEP.js +58 -0
- package/prod/chunks/vidstack-xMS8dnYq.js +114 -0
- package/prod/chunks/vidstack-yEGTpgeA.js +104 -0
- package/prod/define/plyr-layout.js +51 -0
- package/prod/define/templates/plyr-layout.js +571 -0
- package/prod/define/templates/vidstack-audio-layout.js +167 -0
- package/prod/define/templates/vidstack-video-layout.js +390 -0
- package/prod/define/vidstack-icons.js +1 -0
- package/prod/define/vidstack-player-default-layout.js +21 -0
- package/prod/define/vidstack-player-layouts.js +25 -0
- package/prod/define/vidstack-player-ui.js +70 -0
- package/prod/define/vidstack-player.js +19 -0
- package/prod/global/plyr.js +493 -0
- package/prod/global/vidstack-player.js +129 -0
- package/prod/providers/vidstack-audio.js +35 -0
- package/prod/providers/vidstack-dash.js +501 -0
- package/prod/providers/vidstack-google-cast.js +468 -0
- package/prod/providers/vidstack-hls.js +393 -0
- package/prod/providers/vidstack-html.js +555 -0
- package/prod/providers/vidstack-video.js +204 -0
- package/prod/providers/vidstack-vimeo.js +548 -0
- package/prod/providers/vidstack-youtube.js +286 -0
- package/prod/vidstack-elements.js +36 -0
- package/prod/vidstack.js +158 -0
- package/server/chunks/vidstack-6juFdkKy.js +29 -0
- package/server/chunks/vidstack-B7iHmv7_.js +307 -0
- package/server/chunks/vidstack-BmxyML9v.js +1619 -0
- package/server/chunks/vidstack-BskfxwD3.js +566 -0
- package/server/chunks/vidstack-BvLV0SMz.js +4642 -0
- package/server/chunks/vidstack-BvWwluXZ.js +205 -0
- package/server/chunks/vidstack-C-413dj2.js +8 -0
- package/server/chunks/vidstack-C26K8z_-.js +55 -0
- package/server/chunks/vidstack-CJJiksDz.js +107 -0
- package/server/chunks/vidstack-CUNv52x1.js +141 -0
- package/server/chunks/vidstack-CqyBCODe.js +295 -0
- package/server/chunks/vidstack-CwTj4H1w.js +18 -0
- package/server/chunks/vidstack-DHAyGSOl.js +1502 -0
- package/server/chunks/vidstack-DLU3cjcp.js +381 -0
- package/server/chunks/vidstack-DXxIKXmd.js +50 -0
- package/server/chunks/vidstack-DbtDXDS2.js +104 -0
- package/server/chunks/vidstack-Dm1xEU9Q.js +34 -0
- package/server/chunks/vidstack-DzTHw_bw.js +207 -0
- package/server/chunks/vidstack-Wn3NH5Sg.js +1566 -0
- package/server/chunks/vidstack-krOAtKMi.js +32 -0
- package/server/chunks/vidstack-wNViAkr4.js +3045 -0
- package/server/define/plyr-layout.js +16 -0
- package/server/define/vidstack-icons.js +1 -0
- package/server/define/vidstack-player-default-layout.js +13 -0
- package/server/define/vidstack-player-layouts.js +16 -0
- package/server/define/vidstack-player-ui.js +11 -0
- package/server/define/vidstack-player.js +6 -0
- package/server/global/plyr.js +322 -0
- package/server/global/vidstack-player.js +58 -0
- package/server/vidstack-elements.js +46 -0
- package/server/vidstack.js +148 -0
- package/tailwind.cjs +101 -0
- package/tailwind.d.cts +15 -0
- package/types/vidstack-BOvzfZjK.d.ts +1269 -0
- package/types/vidstack-Cttpg6GU.d.ts +7474 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { onDispose, EventsController, listenEvent, DOMEvent, scoped } from '../chunks/vidstack-Bu2kfzUd.js';
|
|
2
|
+
import { canUsePictureInPicture, canUseVideoPresentation, canPlayHLSNatively } from '../chunks/vidstack-CjhKISI0.js';
|
|
3
|
+
import { HTMLMediaProvider } from './vidstack-html.js';
|
|
4
|
+
import { HTMLAirPlayAdapter } from '../chunks/vidstack-Bo5OTJ06.js';
|
|
5
|
+
import { TextTrack, TextTrackSymbol } from '../chunks/vidstack-igYn0Apa.js';
|
|
6
|
+
import '../chunks/vidstack-qh1N5_f_.js';
|
|
7
|
+
import '../chunks/vidstack-Dihypf8P.js';
|
|
8
|
+
import '../chunks/vidstack-Dv_LIPFu.js';
|
|
9
|
+
import '../chunks/vidstack-zG6PIeGg.js';
|
|
10
|
+
import '../chunks/vidstack-BGB2pa9s.js';
|
|
11
|
+
|
|
12
|
+
class NativeHLSTextTracks {
|
|
13
|
+
#video;
|
|
14
|
+
#ctx;
|
|
15
|
+
constructor(video, ctx) {
|
|
16
|
+
this.#video = video;
|
|
17
|
+
this.#ctx = ctx;
|
|
18
|
+
video.textTracks.onaddtrack = this.#onAddTrack.bind(this);
|
|
19
|
+
onDispose(this.#onDispose.bind(this));
|
|
20
|
+
}
|
|
21
|
+
#onAddTrack(event) {
|
|
22
|
+
const nativeTrack = event.track;
|
|
23
|
+
if (!nativeTrack || findTextTrackElement(this.#video, nativeTrack)) return;
|
|
24
|
+
const track = new TextTrack({
|
|
25
|
+
id: nativeTrack.id,
|
|
26
|
+
kind: nativeTrack.kind,
|
|
27
|
+
label: nativeTrack.label ?? "",
|
|
28
|
+
language: nativeTrack.language,
|
|
29
|
+
type: "vtt"
|
|
30
|
+
});
|
|
31
|
+
track[TextTrackSymbol.native] = { track: nativeTrack };
|
|
32
|
+
track[TextTrackSymbol.readyState] = 2;
|
|
33
|
+
track[TextTrackSymbol.nativeHLS] = true;
|
|
34
|
+
let lastIndex = 0;
|
|
35
|
+
const onCueChange = (event2) => {
|
|
36
|
+
if (!nativeTrack.cues) return;
|
|
37
|
+
for (let i = lastIndex; i < nativeTrack.cues.length; i++) {
|
|
38
|
+
track.addCue(nativeTrack.cues[i], event2);
|
|
39
|
+
lastIndex++;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
onCueChange(event);
|
|
43
|
+
nativeTrack.oncuechange = onCueChange;
|
|
44
|
+
this.#ctx.textTracks.add(track, event);
|
|
45
|
+
track.setMode(nativeTrack.mode, event);
|
|
46
|
+
}
|
|
47
|
+
#onDispose() {
|
|
48
|
+
this.#video.textTracks.onaddtrack = null;
|
|
49
|
+
for (const track of this.#ctx.textTracks) {
|
|
50
|
+
const nativeTrack = track[TextTrackSymbol.native]?.track;
|
|
51
|
+
if (nativeTrack?.oncuechange) nativeTrack.oncuechange = null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function findTextTrackElement(video, track) {
|
|
56
|
+
return Array.from(video.children).find((el) => el.track === track);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
class VideoPictureInPicture {
|
|
60
|
+
#video;
|
|
61
|
+
#media;
|
|
62
|
+
constructor(video, media) {
|
|
63
|
+
this.#video = video;
|
|
64
|
+
this.#media = media;
|
|
65
|
+
new EventsController(video).add("enterpictureinpicture", this.#onEnter.bind(this)).add("leavepictureinpicture", this.#onExit.bind(this));
|
|
66
|
+
}
|
|
67
|
+
get active() {
|
|
68
|
+
return document.pictureInPictureElement === this.#video;
|
|
69
|
+
}
|
|
70
|
+
get supported() {
|
|
71
|
+
return canUsePictureInPicture(this.#video);
|
|
72
|
+
}
|
|
73
|
+
async enter() {
|
|
74
|
+
return this.#video.requestPictureInPicture();
|
|
75
|
+
}
|
|
76
|
+
exit() {
|
|
77
|
+
return document.exitPictureInPicture();
|
|
78
|
+
}
|
|
79
|
+
#onEnter(event) {
|
|
80
|
+
this.#onChange(true, event);
|
|
81
|
+
}
|
|
82
|
+
#onExit(event) {
|
|
83
|
+
this.#onChange(false, event);
|
|
84
|
+
}
|
|
85
|
+
#onChange = (active, event) => {
|
|
86
|
+
this.#media.notify("picture-in-picture-change", active, event);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
class VideoPresentation {
|
|
91
|
+
#video;
|
|
92
|
+
#media;
|
|
93
|
+
#mode = "inline";
|
|
94
|
+
get mode() {
|
|
95
|
+
return this.#mode;
|
|
96
|
+
}
|
|
97
|
+
constructor(video, media) {
|
|
98
|
+
this.#video = video;
|
|
99
|
+
this.#media = media;
|
|
100
|
+
listenEvent(video, "webkitpresentationmodechanged", this.#onModeChange.bind(this));
|
|
101
|
+
}
|
|
102
|
+
get supported() {
|
|
103
|
+
return canUseVideoPresentation(this.#video);
|
|
104
|
+
}
|
|
105
|
+
async setPresentationMode(mode) {
|
|
106
|
+
if (this.#mode === mode) return;
|
|
107
|
+
this.#video.webkitSetPresentationMode(mode);
|
|
108
|
+
}
|
|
109
|
+
#onModeChange(event) {
|
|
110
|
+
const prevMode = this.#mode;
|
|
111
|
+
this.#mode = this.#video.webkitPresentationMode;
|
|
112
|
+
{
|
|
113
|
+
this.#media.logger?.infoGroup("presentation mode change").labelledLog("Mode", this.#mode).labelledLog("Event", event).dispatch();
|
|
114
|
+
}
|
|
115
|
+
this.#media.player?.dispatch(
|
|
116
|
+
new DOMEvent("video-presentation-change", {
|
|
117
|
+
detail: this.#mode,
|
|
118
|
+
trigger: event
|
|
119
|
+
})
|
|
120
|
+
);
|
|
121
|
+
["fullscreen", "picture-in-picture"].forEach((type) => {
|
|
122
|
+
if (this.#mode === type || prevMode === type) {
|
|
123
|
+
this.#media.notify(`${type}-change`, this.#mode === type, event);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
class FullscreenPresentationAdapter {
|
|
129
|
+
#presentation;
|
|
130
|
+
get active() {
|
|
131
|
+
return this.#presentation.mode === "fullscreen";
|
|
132
|
+
}
|
|
133
|
+
get supported() {
|
|
134
|
+
return this.#presentation.supported;
|
|
135
|
+
}
|
|
136
|
+
constructor(presentation) {
|
|
137
|
+
this.#presentation = presentation;
|
|
138
|
+
}
|
|
139
|
+
async enter() {
|
|
140
|
+
this.#presentation.setPresentationMode("fullscreen");
|
|
141
|
+
}
|
|
142
|
+
async exit() {
|
|
143
|
+
this.#presentation.setPresentationMode("inline");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
class PIPPresentationAdapter {
|
|
147
|
+
#presentation;
|
|
148
|
+
get active() {
|
|
149
|
+
return this.#presentation.mode === "picture-in-picture";
|
|
150
|
+
}
|
|
151
|
+
get supported() {
|
|
152
|
+
return this.#presentation.supported;
|
|
153
|
+
}
|
|
154
|
+
constructor(presentation) {
|
|
155
|
+
this.#presentation = presentation;
|
|
156
|
+
}
|
|
157
|
+
async enter() {
|
|
158
|
+
this.#presentation.setPresentationMode("picture-in-picture");
|
|
159
|
+
}
|
|
160
|
+
async exit() {
|
|
161
|
+
this.#presentation.setPresentationMode("inline");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
class VideoProvider extends HTMLMediaProvider {
|
|
166
|
+
$$PROVIDER_TYPE = "VIDEO";
|
|
167
|
+
get type() {
|
|
168
|
+
return "video";
|
|
169
|
+
}
|
|
170
|
+
airPlay;
|
|
171
|
+
fullscreen;
|
|
172
|
+
pictureInPicture;
|
|
173
|
+
constructor(video, ctx) {
|
|
174
|
+
super(video, ctx);
|
|
175
|
+
scoped(() => {
|
|
176
|
+
this.airPlay = new HTMLAirPlayAdapter(video, ctx);
|
|
177
|
+
if (canUseVideoPresentation(video)) {
|
|
178
|
+
const presentation = new VideoPresentation(video, ctx);
|
|
179
|
+
this.fullscreen = new FullscreenPresentationAdapter(presentation);
|
|
180
|
+
this.pictureInPicture = new PIPPresentationAdapter(presentation);
|
|
181
|
+
} else if (canUsePictureInPicture(video)) {
|
|
182
|
+
this.pictureInPicture = new VideoPictureInPicture(video, ctx);
|
|
183
|
+
}
|
|
184
|
+
}, this.scope);
|
|
185
|
+
}
|
|
186
|
+
setup() {
|
|
187
|
+
super.setup();
|
|
188
|
+
if (canPlayHLSNatively(this.video)) {
|
|
189
|
+
new NativeHLSTextTracks(this.video, this.ctx);
|
|
190
|
+
}
|
|
191
|
+
this.ctx.textRenderers.attachVideo(this.video);
|
|
192
|
+
onDispose(() => {
|
|
193
|
+
this.ctx.textRenderers.attachVideo(null);
|
|
194
|
+
});
|
|
195
|
+
if (this.type === "video") this.ctx.notify("provider-setup", this);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The native HTML `<video>` element.
|
|
199
|
+
*
|
|
200
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement}
|
|
201
|
+
*/
|
|
202
|
+
get video() {
|
|
203
|
+
return this.media;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export { VideoProvider };
|