UNPKG

@aidenlx/player

Version:

Headless web components that make integrating media on the a web a breeze.

76 lines (75 loc) 2.17 kB
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 };