export const BrowserModMediaPlayerMixin = (C) => class extends C { constructor() { super(); this.player = new Audio(); for (const event of ["play", "pause", "ended", "volumechange"]) { this.player.addEventListener(event, () => this.player_update()); } window.addEventListener("click", () => this.player.play(), { once: true, }); } player_update(ev) { this.sendUpdate({ player: { volume: this.player.volume, muted: this.player.muted, src: this.player.src, state: this.player_state, }, }); } get player_state() { if (!this.player.src) return "stopped"; if (this.player.ended) return "stopped"; if (this.player.paused) return "paused"; return "playing"; } player_play(src) { if (src) this.player.src = src; this.player.play(); } player_pause() { this.player.pause(); } player_stop() { this.player.pause(); this.player.src = null; } player_set_volume(level) { if (level === undefined) return; this.player.volume = level; } player_mute(mute) { if (mute === undefined) mute = !this.player.muted; this.player.muted = Boolean(mute); } };