@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,109 @@
|
|
|
1
|
+
import { IS_CHROME, IS_IOS, canGoogleCastSrc } from './vidstack-xMS8dnYq.js';
|
|
2
|
+
import { loadScript } from './vidstack-CTojmhKq.js';
|
|
3
|
+
import { getCastContext, getCastSession, isCastConnected, hasLoadedCastFramework, getCastFrameworkURL, isCastAvailable, getCastErrorMessage, getDefaultCastOptions } from './vidstack-BQlOPwOu.js';
|
|
4
|
+
import { peek } from './vidstack-BGSTndAW.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,55 @@
|
|
|
1
|
+
import { Icon$34, Icon$35, Icon$27, Icon$26, Icon$60, Icon$61, Icon$39, Icon$40, Icon$105, Icon$104, Icon$54, Icon$59, Icon$62, Icon$56, Icon$33, Icon$8, Icon$13, Icon$19, Icon$63, Icon$53, Icon$0, Icon$22, Icon$11, Icon$88, Icon$16, Icon$77, Icon$81, Icon$24, Icon$74, Icon$31, Icon$5 } from './vidstack-BGSTndAW.js';
|
|
2
|
+
|
|
3
|
+
const icons = {
|
|
4
|
+
airplay: Icon$5,
|
|
5
|
+
download: Icon$31,
|
|
6
|
+
play: Icon$62,
|
|
7
|
+
pause: Icon$59,
|
|
8
|
+
replay: Icon$74,
|
|
9
|
+
mute: Icon$54,
|
|
10
|
+
"google-cast": Icon$24,
|
|
11
|
+
"volume-low": Icon$105,
|
|
12
|
+
"volume-high": Icon$104,
|
|
13
|
+
"cc-on": Icon$26,
|
|
14
|
+
"cc-off": Icon$27,
|
|
15
|
+
"pip-enter": Icon$61,
|
|
16
|
+
"pip-exit": Icon$60,
|
|
17
|
+
"fs-enter": Icon$40,
|
|
18
|
+
"fs-exit": Icon$39,
|
|
19
|
+
"seek-forward": Icon$81,
|
|
20
|
+
"seek-backward": Icon$77,
|
|
21
|
+
"menu-chapters": Icon$16,
|
|
22
|
+
"menu-settings": Icon$88,
|
|
23
|
+
"menu-arrow-left": Icon$11,
|
|
24
|
+
"menu-arrow-right": Icon$22,
|
|
25
|
+
"menu-accessibility": Icon$0,
|
|
26
|
+
"menu-audio": Icon$53,
|
|
27
|
+
"menu-audio-boost-up": Icon$104,
|
|
28
|
+
"menu-audio-boost-down": Icon$105,
|
|
29
|
+
"menu-playback": Icon$63,
|
|
30
|
+
"menu-speed-up": Icon$35,
|
|
31
|
+
"menu-speed-down": Icon$34,
|
|
32
|
+
"menu-captions": Icon$27,
|
|
33
|
+
"menu-quality-up": Icon$13,
|
|
34
|
+
"menu-quality-down": Icon$8,
|
|
35
|
+
"menu-radio-check": Icon$19,
|
|
36
|
+
"menu-font-size-up": Icon$13,
|
|
37
|
+
"menu-font-size-down": Icon$8,
|
|
38
|
+
"menu-opacity-up": Icon$33,
|
|
39
|
+
"menu-opacity-down": Icon$56,
|
|
40
|
+
"kb-play": Icon$62,
|
|
41
|
+
"kb-pause": Icon$59,
|
|
42
|
+
"kb-mute": Icon$54,
|
|
43
|
+
"kb-volume-up": Icon$104,
|
|
44
|
+
"kb-volume-down": Icon$105,
|
|
45
|
+
"kb-fs-enter": Icon$40,
|
|
46
|
+
"kb-fs-exit": Icon$39,
|
|
47
|
+
"kb-pip-enter": Icon$61,
|
|
48
|
+
"kb-pip-exit": Icon$60,
|
|
49
|
+
"kb-cc-on": Icon$26,
|
|
50
|
+
"kb-cc-off": Icon$27,
|
|
51
|
+
"kb-seek-forward": Icon$35,
|
|
52
|
+
"kb-seek-backward": Icon$34
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export { icons };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Component, State, effect, isNull, setAttribute, EventsController } from './vidstack-BGSTndAW.js';
|
|
2
|
+
import { useMediaContext } from './vidstack-DJDnh4xT.js';
|
|
3
|
+
import { preconnect } from './vidstack-CTojmhKq.js';
|
|
4
|
+
|
|
5
|
+
class Poster extends Component {
|
|
6
|
+
static props = {
|
|
7
|
+
src: null,
|
|
8
|
+
alt: null,
|
|
9
|
+
crossOrigin: null
|
|
10
|
+
};
|
|
11
|
+
static state = new State({
|
|
12
|
+
img: null,
|
|
13
|
+
src: null,
|
|
14
|
+
alt: null,
|
|
15
|
+
crossOrigin: null,
|
|
16
|
+
loading: true,
|
|
17
|
+
error: null,
|
|
18
|
+
hidden: false
|
|
19
|
+
});
|
|
20
|
+
#media;
|
|
21
|
+
onSetup() {
|
|
22
|
+
this.#media = useMediaContext();
|
|
23
|
+
this.#watchSrc();
|
|
24
|
+
this.#watchAlt();
|
|
25
|
+
this.#watchCrossOrigin();
|
|
26
|
+
this.#watchHidden();
|
|
27
|
+
}
|
|
28
|
+
onAttach(el) {
|
|
29
|
+
el.style.setProperty("pointer-events", "none");
|
|
30
|
+
effect(this.#watchImg.bind(this));
|
|
31
|
+
effect(this.#watchSrc.bind(this));
|
|
32
|
+
effect(this.#watchAlt.bind(this));
|
|
33
|
+
effect(this.#watchCrossOrigin.bind(this));
|
|
34
|
+
effect(this.#watchHidden.bind(this));
|
|
35
|
+
const { started } = this.#media.$state;
|
|
36
|
+
this.setAttributes({
|
|
37
|
+
"data-visible": () => !started() && !this.$state.hidden(),
|
|
38
|
+
"data-loading": this.#isLoading.bind(this),
|
|
39
|
+
"data-error": this.#hasError.bind(this),
|
|
40
|
+
"data-hidden": this.$state.hidden
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
onConnect(el) {
|
|
44
|
+
effect(this.#onPreconnect.bind(this));
|
|
45
|
+
effect(this.#onLoadStart.bind(this));
|
|
46
|
+
}
|
|
47
|
+
#hasError() {
|
|
48
|
+
const { error } = this.$state;
|
|
49
|
+
return !isNull(error());
|
|
50
|
+
}
|
|
51
|
+
#onPreconnect() {
|
|
52
|
+
const { canLoadPoster, poster } = this.#media.$state;
|
|
53
|
+
if (!canLoadPoster() && poster()) preconnect(poster(), "preconnect");
|
|
54
|
+
}
|
|
55
|
+
#watchHidden() {
|
|
56
|
+
const { src } = this.$props, { poster, nativeControls } = this.#media.$state;
|
|
57
|
+
this.el && setAttribute(this.el, "display", nativeControls() ? "none" : null);
|
|
58
|
+
this.$state.hidden.set(this.#hasError() || !(src() || poster()) || nativeControls());
|
|
59
|
+
}
|
|
60
|
+
#isLoading() {
|
|
61
|
+
const { loading, hidden } = this.$state;
|
|
62
|
+
return !hidden() && loading();
|
|
63
|
+
}
|
|
64
|
+
#watchImg() {
|
|
65
|
+
const img = this.$state.img();
|
|
66
|
+
if (!img) return;
|
|
67
|
+
new EventsController(img).add("load", this.#onLoad.bind(this)).add("error", this.#onError.bind(this));
|
|
68
|
+
if (img.complete) this.#onLoad();
|
|
69
|
+
}
|
|
70
|
+
#prevSrc = "";
|
|
71
|
+
#watchSrc() {
|
|
72
|
+
const { poster: defaultPoster } = this.#media.$props, { canLoadPoster, providedPoster, inferredPoster } = this.#media.$state;
|
|
73
|
+
const src = this.$props.src() || "", poster = src || defaultPoster() || inferredPoster();
|
|
74
|
+
if (this.#prevSrc === providedPoster()) {
|
|
75
|
+
providedPoster.set(src);
|
|
76
|
+
}
|
|
77
|
+
this.$state.src.set(canLoadPoster() && poster.length ? poster : null);
|
|
78
|
+
this.#prevSrc = src;
|
|
79
|
+
}
|
|
80
|
+
#watchAlt() {
|
|
81
|
+
const { src } = this.$props, { alt } = this.$state, { poster } = this.#media.$state;
|
|
82
|
+
alt.set(src() || poster() ? this.$props.alt() : null);
|
|
83
|
+
}
|
|
84
|
+
#watchCrossOrigin() {
|
|
85
|
+
const { crossOrigin: crossOriginProp } = this.$props, { crossOrigin: crossOriginState } = this.$state, { crossOrigin: mediaCrossOrigin, poster: src } = this.#media.$state, crossOrigin = crossOriginProp() !== null ? crossOriginProp() : mediaCrossOrigin();
|
|
86
|
+
crossOriginState.set(
|
|
87
|
+
/ytimg\.com|vimeo/.test(src() || "") ? null : crossOrigin === true ? "anonymous" : crossOrigin
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
#onLoadStart() {
|
|
91
|
+
const { loading, error } = this.$state, { canLoadPoster, poster } = this.#media.$state;
|
|
92
|
+
loading.set(canLoadPoster() && !!poster());
|
|
93
|
+
error.set(null);
|
|
94
|
+
}
|
|
95
|
+
#onLoad() {
|
|
96
|
+
const { loading, error } = this.$state;
|
|
97
|
+
loading.set(false);
|
|
98
|
+
error.set(null);
|
|
99
|
+
}
|
|
100
|
+
#onError(event) {
|
|
101
|
+
const { loading, error } = this.$state;
|
|
102
|
+
loading.set(false);
|
|
103
|
+
error.set(event);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export { Poster };
|