vidstack
Version:
Build awesome media experiences on the web.
73 lines (70 loc) • 1.7 kB
JavaScript
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 };