@aidenlx/player
Version:
Headless web components that make integrating media on the a web a breeze.
76 lines (75 loc) • 2.17 kB
JavaScript
import "../../chunks/chunk.LNH2V2XS.js";
import {
isFunction,
isString,
isUndefined,
kebabToCamelCase,
ScriptLoader
} from "@vidstack/foundation";
const HLS_CTOR_CACHE = /* @__PURE__ */ new Map();
function isHlsConstructorCached(src) {
return HLS_CTOR_CACHE.has(src);
}
async function importHlsConstructor(importer, callbacks = {}) {
if (isUndefined(importer))
return void 0;
callbacks.onLoadStart?.();
if (!isFunction(importer)) {
callbacks.onLoaded?.(importer);
return importer;
}
const cacheKey = String(importer);
if (HLS_CTOR_CACHE.has(cacheKey)) {
const hlsCtor = HLS_CTOR_CACHE.get(cacheKey);
callbacks.onLoaded?.(hlsCtor);
return hlsCtor;
}
try {
const hlsCtor = (await importer())?.default;
if (hlsCtor && !!hlsCtor.isSupported) {
callbacks.onLoaded?.(hlsCtor);
HLS_CTOR_CACHE.set(cacheKey, hlsCtor);
} else {
throw Error(false ? "[vds]: Failed importing `hls.js`. Dynamic import returned invalid constructor." : "");
}
return hlsCtor;
} catch (err) {
callbacks.onLoadError?.(err);
}
return void 0;
}
async function loadHlsConstructorScript(src, callbacks = {}) {
if (!isString(src))
return void 0;
if (HLS_CTOR_CACHE.has(src))
return HLS_CTOR_CACHE.get(src);
callbacks.onLoadStart?.();
try {
await ScriptLoader.load(src);
if (!isFunction(window.Hls)) {
throw Error(false ? "[vds]: Failed loading `hls.js`. Could not find a valid constructor at `window.Hls`." : "");
}
const ctor = window.Hls;
callbacks.onLoaded?.(ctor);
HLS_CTOR_CACHE.set(src, ctor);
return ctor;
} catch (err) {
callbacks.onLoadError?.(err);
}
return void 0;
}
function vdsToHlsEventType(type) {
return kebabToCamelCase(type.replace("vds-", ""));
}
const vdsHlsEventPrefix = "vds-hls-";
const vdsHlsEvents = ["lib-load", "instance", "unsupported"];
function isHlsEventType(type) {
return type.startsWith(vdsHlsEventPrefix) && !vdsHlsEvents.some((t) => type.startsWith(`${vdsHlsEventPrefix}${t}`));
}
export {
importHlsConstructor,
isHlsConstructorCached,
isHlsEventType,
loadHlsConstructorScript,
vdsToHlsEventType
};