UNPKG

vidstack

Version:

Build awesome media experiences on the web.

97 lines (94 loc) 2.57 kB
import { isUndefined, isString, DOMEvent, isFunction } from 'maverick.js/std'; import { Q as coerceToError, R as loadScript } from '../../media-core.js'; class HLSLibLoader { constructor(_lib, _context, _callback) { this.Bh = _lib; this.ph = _context; this.jf = _callback; this.Ch(); } async Ch() { const callbacks = { onLoadStart: this.ge.bind(this), onLoaded: this.ue.bind(this), onLoadError: this.Dh.bind(this) }; let ctor = await loadHLSScript(this.Bh, callbacks); if (isUndefined(ctor) && !isString(this.Bh)) ctor = await importHLS(this.Bh, callbacks); if (!ctor) return null; if (!ctor.isSupported()) { const message = "[vidstack]: `hls.js` is not supported in this environment"; this.ph.player.dispatchEvent(new DOMEvent("hls-unsupported")); this.ph.delegate.p("error", { detail: { message, code: 4 } }); return null; } return ctor; } ge() { this.ph.player.dispatchEvent(new DOMEvent("hls-lib-load-start")); } ue(ctor) { this.ph.player.dispatchEvent( new DOMEvent("hls-lib-loaded", { detail: ctor }) ); this.jf(ctor); } Dh(e) { const error = coerceToError(e); this.ph.player.dispatchEvent( new DOMEvent("hls-lib-load-error", { detail: error }) ); this.ph.delegate.p("error", { detail: { message: error.message, code: 4 } }); } } async function importHLS(loader, callbacks = {}) { if (isUndefined(loader)) return void 0; callbacks.onLoadStart?.(); if (loader.prototype && loader.prototype !== Function) { callbacks.onLoaded?.(loader); return loader; } try { const ctor = (await loader())?.default; if (ctor && !!ctor.isSupported) { callbacks.onLoaded?.(ctor); } else { throw Error( false ? "[vidstack] failed importing `hls.js`. Dynamic import returned invalid constructor." : "" ); } return ctor; } catch (err) { callbacks.onLoadError?.(err); } return void 0; } async function loadHLSScript(src, callbacks = {}) { if (!isString(src)) return void 0; callbacks.onLoadStart?.(); try { await loadScript(src); if (!isFunction(window.Hls)) { throw Error( false ? "[vidstack] failed loading `hls.js`. Could not find a valid `Hls` constructor on window" : "" ); } const ctor = window.Hls; callbacks.onLoaded?.(ctor); return ctor; } catch (err) { callbacks.onLoadError?.(err); } return void 0; } export { HLSLibLoader as H };