UNPKG

vidstack

Version:

Build awesome media experiences on the web.

38 lines (35 loc) 1.61 kB
import { $$_create_walker, $$_effect, $$_attr, $$_ref, $$_create_template } from 'maverick.js/dom'; import { computed } from 'maverick.js'; import { isString } from 'maverick.js/std'; import { V as VIDEO_EXTENSIONS, c as VIDEO_TYPES, i as isHLSSrc } from '../audio/loader.js'; import { Y as canPlayHLSNatively } from '../../media-core.js'; const $$_templ = /* @__PURE__ */ $$_create_template(`<!$><video preload="none" aria-hidden="true"></video>`), $$_templ_2 = $$_templ; class VideoProviderLoader { _video; canPlay(src) { return isString(src.src) ? VIDEO_EXTENSIONS.test(src.src) || VIDEO_TYPES.has(src.type) || src.src.startsWith("blob:") && src.type === "video/object" || isHLSSrc(src) && canPlayHLSNatively() : src.type === "video/object"; } mediaType() { return "video"; } async load(context) { if (!this._video) { throw Error( "[vidstack] `<video>` element was not found - did you forget to include `<media-outlet>`?" ); } return new (await import('./provider.js')).VideoProvider(this._video, context); } render($store) { const $poster = computed(() => $store.poster() && $store.controls() ? $store.poster() : null); return (() => { const [$$_root, $$_walker] = $$_create_walker($$_templ_2); $$_effect(() => $$_attr($$_root, "controls", $store.controls())); $$_effect(() => $$_attr($$_root, "crossorigin", $store.crossorigin())); $$_effect(() => $$_attr($$_root, "poster", $poster())); $$_ref($$_root, (el) => void (this._video = el)); return $$_root; })(); } } export { VideoProviderLoader as V };