UNPKG

vidstack

Version:

Build awesome media experiences on the web.

62 lines (59 loc) 1.64 kB
import { listenEvent } from 'maverick.js/std'; import { N as LIST_ADD, W as LIST_REMOVE, L as LIST_SELECT } from '../../media-core.js'; class NativeAudioTracks { constructor(_provider, _context) { this.q = _provider; this.ph = _context; this.ri.onaddtrack = this.ti.bind(this); this.ri.onremovetrack = this.ui.bind(this); this.ri.onchange = this.vi.bind(this); listenEvent(this.ph.audioTracks, "change", this.wi.bind(this)); } get ri() { return this.q.media.audioTracks; } ti(event) { const _track = event.track; if (_track.label === "") return; const audioTrack = { id: _track.id + "", label: _track.label, language: _track.language, kind: _track.kind, selected: false }; this.ph.audioTracks[LIST_ADD](audioTrack, event); if (_track.enabled) audioTrack.selected = true; } ui(event) { const track = this.ph.audioTracks.getById(event.track.id); if (track) this.ph.audioTracks[LIST_REMOVE](track, event); } vi(event) { let enabledTrack = this.si(); if (!enabledTrack) return; const track = this.ph.audioTracks.getById(enabledTrack.id); if (track) this.ph.audioTracks[LIST_SELECT](track, true, event); } si() { return Array.from(this.ri).find((track) => track.enabled); } wi(event) { const { current } = event.detail; if (!current) return; const track = this.ri.getTrackById(current.id); if (track) { const prev = this.si(); if (prev) prev.enabled = false; track.enabled = true; } } } export { NativeAudioTracks as N };