UNPKG

vidstack

Version:

Build awesome media experiences on the web.

73 lines (70 loc) 1.7 kB
import { setAttribute, isString } from 'maverick.js/std'; import { b as isMediaStream } from '../audio/loader.js'; import { H as HTMLMediaEvents } from './html–media-events.js'; import { N as NativeAudioTracks } from './native-audio-tracks.js'; class HTMLMediaProvider { constructor(_media) { this._media = _media; } setup(context) { new HTMLMediaEvents(this, context); if ("audioTracks" in this.media) new NativeAudioTracks(this, context); } get type() { return ""; } get media() { return this._media; } get paused() { return this._media.paused; } get muted() { return this._media.muted; } set muted(muted) { this._media.muted = muted; } get volume() { return this._media.volume; } set volume(volume) { this._media.volume = volume; } get currentTime() { return this._media.currentTime; } set currentTime(time) { this._media.currentTime = time; } get playsinline() { return this._media.hasAttribute("playsinline"); } set playsinline(playsinline) { setAttribute(this._media, "playsinline", playsinline); } get playbackRate() { return this._media.playbackRate; } set playbackRate(rate) { this._media.playbackRate = rate; } async play() { return this._media.play(); } async pause() { return this._media.pause(); } async loadSource({ src }, preload) { this._media.preload = preload; if (isMediaStream(src)) { this._media.srcObject = src; } else { this._media.srcObject = null; this._media.src = isString(src) ? src : window.URL.createObjectURL(src); } this._media.load(); } } export { HTMLMediaProvider as H };