@hanifhan1f/vidstack 1.12.19 → 1.12.25
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/cdn/chunks/vidstack-BBMfnVvt.js +1 -0
- package/cdn/chunks/vidstack-BF7lZRtq.js +3 -0
- package/cdn/chunks/vidstack-BYpysj84.js +1 -0
- package/cdn/chunks/vidstack-BkxGdzTJ.js +16 -0
- package/cdn/chunks/vidstack-Bzk6lVKb.js +1 -0
- package/cdn/chunks/vidstack-C0nMUcD9.js +1 -0
- package/cdn/chunks/vidstack-C1FlyyzK.js +1 -0
- package/cdn/chunks/vidstack-C51SKMUl.js +1 -0
- package/cdn/chunks/vidstack-CL95Hezv.js +1 -0
- package/cdn/chunks/vidstack-Cj0I-Rec.js +1 -0
- package/cdn/chunks/vidstack-CkaxOIJb.js +1 -0
- package/cdn/chunks/vidstack-Cu8FqSS9.js +1 -0
- package/cdn/chunks/vidstack-D84Fzc__.js +16 -0
- package/cdn/chunks/vidstack-DIPX97sJ.js +3 -0
- package/cdn/chunks/vidstack-DQvyz7Mm.js +1 -0
- package/cdn/chunks/vidstack-Dd9fqVv6.js +1 -0
- package/cdn/chunks/vidstack-DdAmWWBJ.js +1 -0
- package/cdn/chunks/vidstack-DhXI_0ND.js +1 -0
- package/cdn/chunks/vidstack-DiXE5sG8.js +1 -0
- package/cdn/chunks/vidstack-pFwe7gvT.js +3 -0
- package/cdn/chunks/vidstack-uMxrPflF.js +1 -0
- package/cdn/chunks/vidstack-zemsqC5d.js +1 -0
- package/cdn/providers/vidstack-audio-BAfEe7CJ.js +1 -0
- package/cdn/providers/vidstack-audio-BOGYlExy.js +1 -0
- package/cdn/providers/vidstack-dash-CGZUJqdT.js +1 -0
- package/cdn/providers/vidstack-dash-D4ZARr66.js +1 -0
- package/cdn/providers/vidstack-google-cast-Drb5Ncs5.js +1 -0
- package/cdn/providers/vidstack-hls-8-552IuX.js +1 -0
- package/cdn/providers/vidstack-hls-CVpa4usG.js +1 -0
- package/cdn/providers/vidstack-html-Bag27bH6.js +1 -0
- package/cdn/providers/vidstack-html-BvVaN2VT.js +1 -0
- package/cdn/providers/vidstack-video-BnwQZKER.js +1 -0
- package/cdn/providers/vidstack-video-DXUiSn4B.js +1 -0
- package/cdn/providers/vidstack-vimeo-DD6HUOtJ.js +1 -0
- package/cdn/providers/vidstack-vimeo-gJmBqtLK.js +1 -0
- package/cdn/providers/vidstack-youtube-BVNE075s.js +1 -0
- package/cdn/providers/vidstack-youtube-Chl_dTAz.js +1 -0
- package/cdn/vidstack.js +1 -1
- package/cdn/with-layouts/chunks/vidstack-2Rlth5Cf.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-4liSokT6.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-B97B8XDc.js +3 -0
- package/cdn/with-layouts/chunks/vidstack-BP3ybDy9.js +912 -0
- package/cdn/with-layouts/chunks/vidstack-BaNApRCP.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BbFHhcVG.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BlWKO1g1.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BxJPOhv7.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-BxdAdQ0H.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CROJF16Z.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CXEcXyBI.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CaW6KGwN.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-Ciq-n5rg.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CmuGllcj.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CwzW7rJU.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-CyNByJUW.js +912 -0
- package/cdn/with-layouts/chunks/vidstack-DJyGEdCH.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-DeLOZ-hK.js +3 -0
- package/cdn/with-layouts/chunks/vidstack-DhNpv7SU.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-Dp3Ib32P.js +1 -0
- package/cdn/with-layouts/chunks/vidstack-Dy1Hfo7P.js +3 -0
- package/cdn/with-layouts/providers/vidstack-audio-CwoQJvl2.js +1 -0
- package/cdn/with-layouts/providers/vidstack-audio-cxaZF4jF.js +1 -0
- package/cdn/with-layouts/providers/vidstack-dash-CJsKJfLI.js +1 -0
- package/cdn/with-layouts/providers/vidstack-dash-DX1VjdTW.js +1 -0
- package/cdn/with-layouts/providers/vidstack-google-cast-DYJgNlvD.js +1 -0
- package/cdn/with-layouts/providers/vidstack-hls-2d6-2JAG.js +1 -0
- package/cdn/with-layouts/providers/vidstack-hls-ji26kFdQ.js +1 -0
- package/cdn/with-layouts/providers/vidstack-html-BvHMxtoe.js +1 -0
- package/cdn/with-layouts/providers/vidstack-html-C9nnuK3r.js +1 -0
- package/cdn/with-layouts/providers/vidstack-video-1Uj5cNP2.js +1 -0
- package/cdn/with-layouts/providers/vidstack-video-EWE67g5i.js +1 -0
- package/cdn/with-layouts/providers/vidstack-vimeo-DACTbJaQ.js +1 -0
- package/cdn/with-layouts/providers/vidstack-vimeo-DqFeS0-d.js +1 -0
- package/cdn/with-layouts/providers/vidstack-youtube-RoLp-I6u.js +1 -0
- package/cdn/with-layouts/providers/vidstack-youtube-eivIFfMV.js +1 -0
- package/cdn/with-layouts/vidstack.js +1 -1
- package/dev/chunks/vidstack-0XhA3AD_.js +5181 -0
- package/dev/chunks/vidstack-44ILR0Cb.js +1521 -0
- package/dev/chunks/vidstack-5oWWZmVl.js +58 -0
- package/dev/chunks/vidstack-B4XOm7dP.js +104 -0
- package/dev/chunks/vidstack-BnBLcaA5.js +115 -0
- package/dev/chunks/vidstack-Bo8BNFJ2.js +2986 -0
- package/dev/chunks/vidstack-C3N4zIuV.js +254 -0
- package/dev/chunks/vidstack-CAL4iu_K.js +1482 -0
- package/dev/chunks/vidstack-CEjYxSqZ.js +297 -0
- package/dev/chunks/vidstack-CGyAjz8G.js +58 -0
- package/dev/chunks/vidstack-CJCnHmKE.js +104 -0
- package/dev/chunks/vidstack-CQdFhXSo.js +204 -0
- package/dev/chunks/vidstack-CzCQJ29U.js +107 -0
- package/dev/chunks/vidstack-DD_3HszA.js +1520 -0
- package/dev/chunks/vidstack-DV4g4XvL.js +33 -0
- package/dev/chunks/vidstack-DWtK42Sh.js +1483 -0
- package/dev/chunks/vidstack-D_LvMxPr.js +204 -0
- package/dev/chunks/vidstack-DdTXMZro.js +66 -0
- package/dev/chunks/vidstack-DrczgsqN.js +297 -0
- package/dev/chunks/vidstack-el2dbO0m.js +5181 -0
- package/dev/chunks/vidstack-gF_qqvCK.js +109 -0
- package/dev/chunks/vidstack-rvhuswgi.js +2986 -0
- package/dev/define/plyr-layout.js +7 -7
- package/dev/define/templates/plyr-layout.js +2 -2
- package/dev/define/templates/vidstack-audio-layout.js +3 -3
- package/dev/define/templates/vidstack-video-layout.js +7 -9
- package/dev/define/vidstack-player-default-layout.js +3 -3
- package/dev/define/vidstack-player-layouts.js +3 -3
- package/dev/define/vidstack-player-ui.js +9 -9
- package/dev/define/vidstack-player.js +5 -5
- package/dev/global/plyr.js +9 -9
- package/dev/global/vidstack-player.js +6 -6
- package/dev/providers/vidstack-audio.js +2 -2
- package/dev/providers/vidstack-dash.js +4 -4
- package/dev/providers/vidstack-hls.js +4 -4
- package/dev/providers/vidstack-html.js +1 -1
- package/dev/providers/vidstack-video.js +4 -4
- package/dev/providers/vidstack-vimeo.js +4 -4
- package/dev/providers/vidstack-youtube.js +3 -3
- package/dev/vidstack-elements.js +12 -12
- package/dev/vidstack.js +9 -9
- package/package.json +1 -1
- package/player/styles/default/layouts/video.css +113 -79
- package/prod/chunks/vidstack-BAqdCFIm.js +4771 -0
- package/prod/chunks/vidstack-BRnfTkxi.js +297 -0
- package/prod/chunks/vidstack-BexQYZop.js +2976 -0
- package/prod/chunks/vidstack-Bf1Q6kqO.js +109 -0
- package/prod/chunks/vidstack-Bn9yLryd.js +58 -0
- package/prod/chunks/vidstack-C-yd_bAJ.js +4771 -0
- package/prod/chunks/vidstack-C4PTiuot.js +107 -0
- package/prod/chunks/vidstack-Cs0fH84E.js +1521 -0
- package/prod/chunks/vidstack-DDePVDjt.js +2976 -0
- package/prod/chunks/vidstack-DMDDSV3t.js +104 -0
- package/prod/chunks/vidstack-DXfGRhxZ.js +201 -0
- package/prod/chunks/vidstack-Dg71uhRc.js +58 -0
- package/prod/chunks/vidstack-DlLwMLBL.js +33 -0
- package/prod/chunks/vidstack-DnRxQoqP.js +104 -0
- package/prod/chunks/vidstack-KShKSmYu.js +66 -0
- package/prod/chunks/vidstack-Ko2EJadT.js +1483 -0
- package/prod/chunks/vidstack-ShUhyBfI.js +201 -0
- package/prod/chunks/vidstack-V9U6gsde.js +1482 -0
- package/prod/chunks/vidstack-XA3zT5W9.js +297 -0
- package/prod/chunks/vidstack-kdaDngIm.js +1520 -0
- package/prod/chunks/vidstack-oNEzlviH.js +246 -0
- package/prod/chunks/vidstack-wTTCvdqe.js +115 -0
- package/prod/define/plyr-layout.js +7 -7
- package/prod/define/templates/plyr-layout.js +2 -2
- package/prod/define/templates/vidstack-audio-layout.js +3 -3
- package/prod/define/templates/vidstack-video-layout.js +7 -9
- package/prod/define/vidstack-player-default-layout.js +3 -3
- package/prod/define/vidstack-player-layouts.js +3 -3
- package/prod/define/vidstack-player-ui.js +9 -9
- package/prod/define/vidstack-player.js +5 -5
- package/prod/global/plyr.js +9 -9
- package/prod/global/vidstack-player.js +6 -6
- package/prod/providers/vidstack-audio.js +2 -2
- package/prod/providers/vidstack-dash.js +4 -4
- package/prod/providers/vidstack-hls.js +4 -4
- package/prod/providers/vidstack-html.js +1 -1
- package/prod/providers/vidstack-video.js +4 -4
- package/prod/providers/vidstack-vimeo.js +4 -4
- package/prod/providers/vidstack-youtube.js +3 -3
- package/prod/vidstack-elements.js +12 -12
- package/prod/vidstack.js +9 -9
- package/server/chunks/vidstack-B2Bc9g7_.js +2000 -0
- package/server/chunks/vidstack-BosyhF3p.js +207 -0
- package/server/chunks/vidstack-C8F1EUBn.js +104 -0
- package/server/chunks/vidstack-CWho6PlG.js +141 -0
- package/server/chunks/vidstack-DhF59-Up.js +4635 -0
- package/server/chunks/vidstack-DoHmOxNm.js +295 -0
- package/server/chunks/vidstack-DzWvfg1d.js +1503 -0
- package/server/chunks/vidstack-PnFpou7g.js +3035 -0
- package/server/chunks/vidstack-gEJMQpTE.js +2001 -0
- package/server/define/plyr-layout.js +2 -2
- package/server/define/vidstack-player-default-layout.js +1 -1
- package/server/define/vidstack-player-layouts.js +1 -1
- package/server/define/vidstack-player-ui.js +4 -4
- package/server/define/vidstack-player.js +2 -2
- package/server/global/plyr.js +4 -4
- package/server/global/vidstack-player.js +2 -2
- package/server/vidstack-elements.js +8 -8
- package/server/vidstack.js +4 -4
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { IS_CHROME, IS_IOS, canGoogleCastSrc } from './vidstack-wTTCvdqe.js';
|
|
2
|
+
import { loadScript } from './vidstack-KShKSmYu.js';
|
|
3
|
+
import { getCastContext, getCastSession, isCastConnected, hasLoadedCastFramework, getCastFrameworkURL, isCastAvailable, getCastErrorMessage, getDefaultCastOptions } from './vidstack-9_r3lWNO.js';
|
|
4
|
+
import { peek } from './vidstack-BNpgCJJ1.js';
|
|
5
|
+
|
|
6
|
+
class GoogleCastLoader {
|
|
7
|
+
name = "google-cast";
|
|
8
|
+
target;
|
|
9
|
+
#player;
|
|
10
|
+
/**
|
|
11
|
+
* @see {@link https://developers.google.com/cast/docs/reference/web_sender/cast.framework.CastContext}
|
|
12
|
+
*/
|
|
13
|
+
get cast() {
|
|
14
|
+
return getCastContext();
|
|
15
|
+
}
|
|
16
|
+
mediaType() {
|
|
17
|
+
return "video";
|
|
18
|
+
}
|
|
19
|
+
canPlay(src) {
|
|
20
|
+
return IS_CHROME && !IS_IOS && canGoogleCastSrc(src);
|
|
21
|
+
}
|
|
22
|
+
async prompt(ctx) {
|
|
23
|
+
let loadEvent, openEvent, errorEvent;
|
|
24
|
+
try {
|
|
25
|
+
loadEvent = await this.#loadCastFramework(ctx);
|
|
26
|
+
if (!this.#player) {
|
|
27
|
+
this.#player = new cast.framework.RemotePlayer();
|
|
28
|
+
new cast.framework.RemotePlayerController(this.#player);
|
|
29
|
+
}
|
|
30
|
+
openEvent = ctx.player.createEvent("google-cast-prompt-open", {
|
|
31
|
+
trigger: loadEvent
|
|
32
|
+
});
|
|
33
|
+
ctx.player.dispatchEvent(openEvent);
|
|
34
|
+
this.#notifyRemoteStateChange(ctx, "connecting", openEvent);
|
|
35
|
+
await this.#showPrompt(peek(ctx.$props.googleCast));
|
|
36
|
+
ctx.$state.remotePlaybackInfo.set({
|
|
37
|
+
deviceName: getCastSession()?.getCastDevice().friendlyName
|
|
38
|
+
});
|
|
39
|
+
if (isCastConnected()) this.#notifyRemoteStateChange(ctx, "connected", openEvent);
|
|
40
|
+
} catch (code) {
|
|
41
|
+
const error = code instanceof Error ? code : this.#createError(
|
|
42
|
+
(code + "").toUpperCase(),
|
|
43
|
+
"Prompt failed."
|
|
44
|
+
);
|
|
45
|
+
errorEvent = ctx.player.createEvent("google-cast-prompt-error", {
|
|
46
|
+
detail: error,
|
|
47
|
+
trigger: openEvent ?? loadEvent,
|
|
48
|
+
cancelable: true
|
|
49
|
+
});
|
|
50
|
+
ctx.player.dispatch(errorEvent);
|
|
51
|
+
this.#notifyRemoteStateChange(
|
|
52
|
+
ctx,
|
|
53
|
+
isCastConnected() ? "connected" : "disconnected",
|
|
54
|
+
errorEvent
|
|
55
|
+
);
|
|
56
|
+
throw error;
|
|
57
|
+
} finally {
|
|
58
|
+
ctx.player.dispatch("google-cast-prompt-close", {
|
|
59
|
+
trigger: errorEvent ?? openEvent ?? loadEvent
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async load(ctx) {
|
|
64
|
+
if (!this.#player) {
|
|
65
|
+
throw Error("[vidstack] google cast player was not initialized");
|
|
66
|
+
}
|
|
67
|
+
return new (await import('../providers/vidstack-google-cast.js')).GoogleCastProvider(this.#player, ctx);
|
|
68
|
+
}
|
|
69
|
+
async #loadCastFramework(ctx) {
|
|
70
|
+
if (hasLoadedCastFramework()) return;
|
|
71
|
+
const loadStartEvent = ctx.player.createEvent("google-cast-load-start");
|
|
72
|
+
ctx.player.dispatch(loadStartEvent);
|
|
73
|
+
await loadScript(getCastFrameworkURL());
|
|
74
|
+
await customElements.whenDefined("google-cast-launcher");
|
|
75
|
+
const loadedEvent = ctx.player.createEvent("google-cast-loaded", { trigger: loadStartEvent });
|
|
76
|
+
ctx.player.dispatch(loadedEvent);
|
|
77
|
+
if (!isCastAvailable()) {
|
|
78
|
+
throw this.#createError("CAST_NOT_AVAILABLE", "Google Cast not available on this platform.");
|
|
79
|
+
}
|
|
80
|
+
return loadedEvent;
|
|
81
|
+
}
|
|
82
|
+
async #showPrompt(options) {
|
|
83
|
+
this.#setOptions(options);
|
|
84
|
+
const errorCode = await this.cast.requestSession();
|
|
85
|
+
if (errorCode) {
|
|
86
|
+
throw this.#createError(
|
|
87
|
+
errorCode.toUpperCase(),
|
|
88
|
+
getCastErrorMessage(errorCode)
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
#setOptions(options) {
|
|
93
|
+
this.cast?.setOptions({
|
|
94
|
+
...getDefaultCastOptions(),
|
|
95
|
+
...options
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
#notifyRemoteStateChange(ctx, state, trigger) {
|
|
99
|
+
const detail = { type: "google-cast", state };
|
|
100
|
+
ctx.notify("remote-playback-change", detail, trigger);
|
|
101
|
+
}
|
|
102
|
+
#createError(code, message) {
|
|
103
|
+
const error = Error(message);
|
|
104
|
+
error.code = code;
|
|
105
|
+
return error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { GoogleCastLoader };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { signal, effect, listenEvent, EventsController } from './vidstack-BNpgCJJ1.js';
|
|
2
|
+
import './vidstack-wTTCvdqe.js';
|
|
3
|
+
|
|
4
|
+
class HTMLRemotePlaybackAdapter {
|
|
5
|
+
#media;
|
|
6
|
+
#ctx;
|
|
7
|
+
#state;
|
|
8
|
+
#supported = signal(false);
|
|
9
|
+
get supported() {
|
|
10
|
+
return this.#supported();
|
|
11
|
+
}
|
|
12
|
+
constructor(media, ctx) {
|
|
13
|
+
this.#media = media;
|
|
14
|
+
this.#ctx = ctx;
|
|
15
|
+
this.#setup();
|
|
16
|
+
}
|
|
17
|
+
#setup() {
|
|
18
|
+
if (!this.#media?.remote || !this.canPrompt) return;
|
|
19
|
+
this.#media.remote.watchAvailability((available) => {
|
|
20
|
+
this.#supported.set(available);
|
|
21
|
+
}).catch(() => {
|
|
22
|
+
this.#supported.set(false);
|
|
23
|
+
});
|
|
24
|
+
effect(this.#watchSupported.bind(this));
|
|
25
|
+
}
|
|
26
|
+
#watchSupported() {
|
|
27
|
+
if (!this.#supported()) return;
|
|
28
|
+
const events = ["connecting", "connect", "disconnect"], onStateChange = this.#onStateChange.bind(this);
|
|
29
|
+
onStateChange();
|
|
30
|
+
listenEvent(this.#media, "playing", onStateChange);
|
|
31
|
+
const remoteEvents = new EventsController(this.#media.remote);
|
|
32
|
+
for (const type of events) {
|
|
33
|
+
remoteEvents.add(type, onStateChange);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async prompt() {
|
|
37
|
+
if (!this.supported) throw Error("Not supported on this platform.");
|
|
38
|
+
if (this.type === "airplay" && this.#media.webkitShowPlaybackTargetPicker) {
|
|
39
|
+
return this.#media.webkitShowPlaybackTargetPicker();
|
|
40
|
+
}
|
|
41
|
+
return this.#media.remote.prompt();
|
|
42
|
+
}
|
|
43
|
+
#onStateChange(event) {
|
|
44
|
+
const state = this.#media.remote.state;
|
|
45
|
+
if (state === this.#state) return;
|
|
46
|
+
const detail = { type: this.type, state };
|
|
47
|
+
this.#ctx.notify("remote-playback-change", detail, event);
|
|
48
|
+
this.#state = state;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
class HTMLAirPlayAdapter extends HTMLRemotePlaybackAdapter {
|
|
52
|
+
type = "airplay";
|
|
53
|
+
get canPrompt() {
|
|
54
|
+
return "WebKitPlaybackTargetAvailabilityEvent" in window;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { HTMLAirPlayAdapter };
|