UNPKG

@7sage/vidstack

Version:

UI component library for building high-quality, accessible video and audio experiences on the web.

59 lines (56 loc) 1.62 kB
import { listenEvent, scoped, getScope, isString } from './vidstack-BGSTndAW.js'; function findActiveCue(cues, time) { for (let i = 0, len = cues.length; i < len; i++) { if (isCueActive(cues[i], time)) return cues[i]; } return null; } function isCueActive(cue, time) { return time >= cue.startTime && time < cue.endTime; } function watchActiveTextTrack(tracks, kind, onChange) { let currentTrack = null, scope = getScope(); function onModeChange() { const kinds = isString(kind) ? [kind] : kind, track = tracks.toArray().find((track2) => kinds.includes(track2.kind) && track2.mode === "showing"); if (track === currentTrack) return; if (!track) { onChange(null); currentTrack = null; return; } if (track.readyState == 2) { onChange(track); } else { onChange(null); scoped(() => { const off = listenEvent( track, "load", () => { onChange(track); off(); }, { once: true } ); }, scope); } currentTrack = track; } onModeChange(); return listenEvent(tracks, "mode-change", onModeChange); } function watchCueTextChange(tracks, kind, callback) { watchActiveTextTrack(tracks, kind, (track) => { if (!track) { callback(""); return; } const onCueChange = () => { const activeCue = track?.activeCues[0]; callback(activeCue?.text || ""); }; onCueChange(); listenEvent(track, "cue-change", onCueChange); }); } export { findActiveCue, isCueActive, watchActiveTextTrack, watchCueTextChange };