UNPKG

vidstack

Version:

Build awesome media experiences on the web.

73 lines (69 loc) 2.21 kB
import { $$_ssr, $$_attr } from 'maverick.js/ssr'; import { isString } from 'maverick.js/std'; const AUDIO_EXTENSIONS = /\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\?)/i; const AUDIO_TYPES = /* @__PURE__ */ new Set([ "audio/mpeg", "audio/ogg", "audio/3gp", "audio/mp4", "audio/webm", "audio/flac" ]); const VIDEO_EXTENSIONS = /\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\d+]+)?($|\?)/i; const VIDEO_TYPES = /* @__PURE__ */ new Set([ "video/mp4", "video/webm", "video/3gp", "video/ogg", "video/avi", "video/mpeg" ]); const HLS_VIDEO_EXTENSIONS = /\.(m3u8)($|\?)/i; const HLS_VIDEO_TYPES = /* @__PURE__ */ new Set([ // Apple sanctioned "application/vnd.apple.mpegurl", // Apple sanctioned for backwards compatibility "audio/mpegurl", // Very common "audio/x-mpegurl", // Very common "application/x-mpegurl", // Included for completeness "video/x-mpegurl", "video/mpegurl", "application/mpegurl" ]); function isHLSSrc({ src, type }) { return typeof src === "string" && HLS_VIDEO_EXTENSIONS.test(src) || HLS_VIDEO_TYPES.has(type); } const $$_templ = ["<!$><audio", "", "", "", "", ' preload="none" aria-hidden="true"></audio>']; class AudioProviderLoader { canPlay({ src, type }) { return isString(src) ? AUDIO_EXTENSIONS.test(src) || AUDIO_TYPES.has(type) || src.startsWith("blob:") && type === "audio/object" : type === "audio/object"; } mediaType() { return "audio"; } async load() { if (!this._audio) { throw Error( "[vidstack] `<audio>` element was not found - did you forget to include `<media-outlet>`?" ); } return new (await import('./provider.js')).AudioProvider(this._audio); } render($store) { { const src = $store.source().src; return $$_ssr( $$_templ, $$_attr("src", isString(src) ? src : null), $$_attr("muted", $store.muted), $$_attr("controls", $store.controls), $$_attr("crossorigin", $store.crossorigin), $$_attr("playsinline", $store.playsinline) ); } } } export { AudioProviderLoader as A, HLS_VIDEO_EXTENSIONS as H, VIDEO_EXTENSIONS as V, HLS_VIDEO_TYPES as a, VIDEO_TYPES as b, isHLSSrc as i };