mono/packages/ui/dist-lib/vidstack-BN7_0WI--BfSbBAjt.js
babayaga 7f63b07df5 lib
2026-01-20 12:14:45 +01:00

325 lines
11 KiB
JavaScript

var rt = Object.defineProperty;
var V = (n) => {
throw TypeError(n);
};
var ot = (n, t, i) => t in n ? rt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[t] = i;
var _ = (n, t, i) => ot(n, typeof t != "symbol" ? t + "" : t, i), R = (n, t, i) => t.has(n) || V("Cannot " + i);
var e = (n, t, i) => (R(n, t, "read from private field"), i ? i.call(n) : t.get(n)), p = (n, t, i) => t.has(n) ? V("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, i), f = (n, t, i, s) => (R(n, t, "write to private field"), s ? s.call(n, i) : t.set(n, i), i), a = (n, t, i) => (R(n, t, "access private method"), i);
import { V as ht, i as at, h as I, k as dt, l as O, Q as q, m as N, n as ut, D as x, q as ct, R as lt, T as pt, r as k, L as $, I as ft, t as M, u as vt, v as yt, w as gt } from "./lib-export-CI8auKfP.js";
import "react";
const Lt = (n) => ct(n);
var T, h, o, D, C, r, E, U, j, F, Q, K, W, B, J, X, Y, z, G, Z, tt;
class St {
constructor(t, i) {
p(this, r);
p(this, T);
p(this, h);
p(this, o, null);
p(this, D, null);
_(this, "config", {});
p(this, C, /* @__PURE__ */ new Set());
f(this, T, t), f(this, h, i);
}
get instance() {
return e(this, o);
}
setup(t) {
const { streamType: i } = e(this, h).$state, s = O(i).includes("live"), c = O(i).includes("ll-");
f(this, o, new t({
lowLatencyMode: c,
backBufferLength: c ? 4 : s ? 8 : void 0,
renderTextTracksNatively: !1,
...this.config
}));
const u = a(this, r, F).bind(this);
for (const l of Object.values(t.Events)) e(this, o).on(l, u);
e(this, o).on(t.Events.ERROR, a(this, r, Y).bind(this));
for (const l of e(this, C)) l(e(this, o));
e(this, h).player.dispatch("hls-instance", {
detail: e(this, o)
}), e(this, o).attachMedia(e(this, T)), e(this, o).on(t.Events.AUDIO_TRACK_SWITCHED, a(this, r, W).bind(this)), e(this, o).on(t.Events.LEVEL_SWITCHED, a(this, r, B).bind(this)), e(this, o).on(t.Events.LEVEL_LOADED, a(this, r, X).bind(this)), e(this, o).on(t.Events.LEVEL_UPDATED, a(this, r, J).bind(this)), e(this, o).on(t.Events.NON_NATIVE_TEXT_TRACKS_FOUND, a(this, r, Q).bind(this)), e(this, o).on(t.Events.CUES_PARSED, a(this, r, K).bind(this)), e(this, h).qualities[q.enableAuto] = a(this, r, G).bind(this), N(e(this, h).qualities, "change", a(this, r, Z).bind(this)), N(e(this, h).audioTracks, "change", a(this, r, tt).bind(this)), f(this, D, ut(a(this, r, U).bind(this)));
}
onInstance(t) {
return e(this, C).add(t), () => e(this, C).delete(t);
}
loadSource(t) {
var i;
I(t.src) && ((i = e(this, o)) == null || i.loadSource(t.src));
}
destroy() {
var t, i;
(t = e(this, o)) == null || t.destroy(), f(this, o, null), (i = e(this, D)) == null || i.call(this), f(this, D, null);
}
}
T = new WeakMap(), h = new WeakMap(), o = new WeakMap(), D = new WeakMap(), C = new WeakMap(), r = new WeakSet(), E = function(t, i) {
return new x(Lt(t), { detail: i });
}, U = function() {
if (!e(this, h).$state.live()) return;
const t = new lt(a(this, r, j).bind(this));
return t.start(), t.stop.bind(t);
}, j = function() {
var t;
e(this, h).$state.liveSyncPosition.set(((t = e(this, o)) == null ? void 0 : t.liveSyncPosition) ?? 1 / 0);
}, F = function(t, i) {
var s;
(s = e(this, h).player) == null || s.dispatch(a(this, r, E).call(this, t, i));
}, Q = function(t, i) {
const s = a(this, r, E).call(this, t, i);
let c = -1;
for (let u = 0; u < i.tracks.length; u++) {
const l = i.tracks[u], d = l.subtitleTrack ?? l.closedCaptions, w = new pt({
id: `hls-${l.kind}-${u}`,
src: d == null ? void 0 : d.url,
label: l.label,
language: d == null ? void 0 : d.lang,
kind: l.kind,
default: l.default
});
w[k.readyState] = 2, w[k.onModeChange] = () => {
w.mode === "showing" ? (e(this, o).subtitleTrack = u, c = u) : c === u && (e(this, o).subtitleTrack = -1, c = -1);
}, e(this, h).textTracks.add(w, s);
}
}, K = function(t, i) {
var l;
const s = (l = e(this, o)) == null ? void 0 : l.subtitleTrack, c = e(this, h).textTracks.getById(`hls-${i.type}-${s}`);
if (!c) return;
const u = a(this, r, E).call(this, t, i);
for (const d of i.cues)
d.positionAlign = "auto", c.addCue(d, u);
}, W = function(t, i) {
const s = e(this, h).audioTracks[i.id];
if (s) {
const c = a(this, r, E).call(this, t, i);
e(this, h).audioTracks[$.select](s, !0, c);
}
}, B = function(t, i) {
const s = e(this, h).qualities[i.level];
if (s) {
const c = a(this, r, E).call(this, t, i);
e(this, h).qualities[$.select](s, !0, c);
}
}, J = function(t, i) {
i.details.totalduration > 0 && e(this, h).$state.inferredLiveDVRWindow.set(i.details.totalduration);
}, X = function(t, i) {
var P;
if (e(this, h).$state.canPlay()) return;
const { type: s, live: c, totalduration: u, targetduration: l } = i.details, d = a(this, r, E).call(this, t, i);
e(this, h).notify(
"stream-type-change",
c ? s === "EVENT" && Number.isFinite(u) && l >= 10 ? "live:dvr" : "live" : "on-demand",
d
), e(this, h).notify("duration-change", u, d);
const w = e(this, o).media;
e(this, o).currentLevel === -1 && e(this, h).qualities[q.setAuto](!0, d);
for (const y of e(this, o).audioTracks) {
const H = {
id: y.id.toString(),
label: y.name,
language: y.lang || "",
kind: "main"
};
e(this, h).audioTracks[$.add](H, d);
}
for (const y of e(this, o).levels) {
const H = {
id: ((P = y.id) == null ? void 0 : P.toString()) ?? y.height + "p",
width: y.width,
height: y.height,
codec: y.codecSet,
bitrate: y.bitrate
};
e(this, h).qualities[$.add](H, d);
}
w.dispatchEvent(new x("canplay", { trigger: d }));
}, Y = function(t, i) {
var s;
if (i.fatal)
switch (i.type) {
case "mediaError":
(s = e(this, o)) == null || s.recoverMediaError();
break;
default:
a(this, r, z).call(this, i.error);
break;
}
}, z = function(t) {
e(this, h).notify("error", {
message: t.message,
code: 1,
error: t
});
}, G = function() {
e(this, o) && (e(this, o).currentLevel = -1);
}, Z = function() {
const { qualities: t } = e(this, h);
!e(this, o) || t.auto || (e(this, o)[t.switch + "Level"] = t.selectedIndex, ft && (e(this, T).currentTime = e(this, T).currentTime));
}, tt = function() {
const { audioTracks: t } = e(this, h);
e(this, o) && e(this, o).audioTrack !== t.selectedIndex && (e(this, o).audioTrack = t.selectedIndex);
};
var m, g, b, L, it, et, st, nt;
class Et {
constructor(t, i, s) {
p(this, L);
p(this, m);
p(this, g);
p(this, b);
f(this, m, t), f(this, g, i), f(this, b, s), a(this, L, it).call(this);
}
}
m = new WeakMap(), g = new WeakMap(), b = new WeakMap(), L = new WeakSet(), it = async function() {
const t = {
onLoadStart: a(this, L, et).bind(this),
onLoaded: a(this, L, st).bind(this),
onLoadError: a(this, L, nt).bind(this)
};
let i = await mt(e(this, m), t);
if (M(i) && !I(e(this, m)) && (i = await Tt(e(this, m), t)), !i) return null;
if (!i.isSupported()) {
const s = "[vidstack] `hls.js` is not supported in this environment";
return e(this, g).player.dispatch(new x("hls-unsupported")), e(this, g).notify("error", { message: s, code: 4 }), null;
}
return i;
}, et = function() {
e(this, g).player.dispatch(new x("hls-lib-load-start"));
}, st = function(t) {
e(this, g).player.dispatch(
new x("hls-lib-loaded", {
detail: t
})
), e(this, b).call(this, t);
}, nt = function(t) {
const i = vt(t);
e(this, g).player.dispatch(
new x("hls-lib-load-error", {
detail: i
})
), e(this, g).notify("error", {
message: i.message,
code: 4,
error: i
});
};
async function Tt(n, t = {}) {
var i, s, c, u, l;
if (!M(n)) {
if ((i = t.onLoadStart) == null || i.call(t), n.prototype && n.prototype !== Function)
return (s = t.onLoaded) == null || s.call(t, n), n;
try {
const d = (c = await n()) == null ? void 0 : c.default;
if (d && d.isSupported)
(u = t.onLoaded) == null || u.call(t, d);
else
throw Error(
""
);
return d;
} catch (d) {
(l = t.onLoadError) == null || l.call(t, d);
}
}
}
async function mt(n, t = {}) {
var i, s, c;
if (I(n)) {
(i = t.onLoadStart) == null || i.call(t);
try {
if (await yt(n), !gt(window.Hls))
throw Error(
""
);
const u = window.Hls;
return (s = t.onLoaded) == null || s.call(t, u), u;
} catch (u) {
(c = t.onLoadError) == null || c.call(t, u);
}
}
}
const wt = "https://cdn.jsdelivr.net";
var A, v, S;
class xt extends ht {
constructor() {
super(...arguments);
_(this, "$$PROVIDER_TYPE", "HLS");
p(this, A, null);
p(this, v, new St(this.video, this.ctx));
p(this, S, `${wt}/npm/hls.js@^1.5.0/dist/hls.min.js`);
}
/**
* The `hls.js` constructor.
*/
get ctor() {
return e(this, A);
}
/**
* The current `hls.js` instance.
*/
get instance() {
return e(this, v).instance;
}
get type() {
return "hls";
}
get canLiveSync() {
return !0;
}
/**
* The `hls.js` configuration object.
*
* @see {@link https://github.com/video-dev/hls.js/blob/master/docs/API.md#fine-tuning}
*/
get config() {
return e(this, v).config;
}
set config(i) {
e(this, v).config = i;
}
/**
* The `hls.js` constructor (supports dynamic imports) or a URL of where it can be found.
*
* @defaultValue `https://cdn.jsdelivr.net/npm/hls.js@^1.0.0/dist/hls.min.js`
*/
get library() {
return e(this, S);
}
set library(i) {
f(this, S, i);
}
preconnect() {
I(e(this, S)) && dt(e(this, S));
}
setup() {
super.setup(), new Et(e(this, S), this.ctx, (i) => {
f(this, A, i), e(this, v).setup(i), this.ctx.notify("provider-setup", this);
const s = O(this.ctx.$state.source);
s && this.loadSource(s);
});
}
async loadSource(i, s) {
if (!I(i.src)) {
this.removeSource();
return;
}
this.media.preload = s || "", this.appendSource(i, "application/x-mpegurl"), e(this, v).loadSource(i), this.currentSrc = i;
}
/**
* The given callback is invoked when a new `hls.js` instance is created and right before it's
* attached to media.
*/
onInstance(i) {
const s = e(this, v).instance;
return s && i(s), e(this, v).onInstance(i);
}
destroy() {
e(this, v).destroy();
}
}
A = new WeakMap(), v = new WeakMap(), S = new WeakMap(), /**
* Whether `hls.js` is supported in this environment.
*/
_(xt, "supported", at());
export {
xt as HLSProvider
};
//# sourceMappingURL=vidstack-BN7_0WI--BfSbBAjt.js.map