/**
* @file audio-track-list.js
* /
importar TrackList desde './track-list';
/**
* En cualquier lugar que llamemos a esta función nos desviamos de la especificación
* ya que solo admitimos una pista de audio habilitada a la vez
*
* @param {Lista de pistas de audio} lista
* lista para trabajar
*
* @param {Pista de audio} pista
* La pista para saltar
*
* @privado
* /
const deshabilitarOtros = función (lista, pista) {
para (sea i = 0; i < lista.longitud; i++) {
if (!Object.keys(list[i]).length || track.id === list[i].id) {
continuar;
}
// otra pista de audio está habilitada, deshabilítela
lista[i].habilitado = falso;
}
};
/**
* La lista actual de {@link AudioTrack} para un archivo multimedia.
*
* @ver [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}
* @extiende TrackList
* /
clase AudioTrackList extiende TrackList {
/**
* Crear una instancia de esta clase.
*
* @param {Pista de audio[]} [pistas=[]]
* Una lista de `AudioTrack` para instanciar la lista.
* /
constructor(pistas = []) {
// asegúrese de que solo 1 pista esté habilitada
// ordenado del último índice al primer índice
for (sea i = pistas.longitud - 1; i > = 0; i--) {
if (pistas[i].habilitado) {
deshabilitarOtros(pistas, pistas[i]);
romper;
}
}
súper (pistas);
esto.cambiando_ = falso;
}
/**
* Agrega una {@link AudioTrack} a la `AudioTrackList`.
*
* @param {Pista de audio} pista
* La pista de audio para agregar a la lista
*
* @fires TrackList#addtrack
* /
addTrack(pista) {
si (pista.habilitado) {
deshabilitarOtros(esto, pista);
}
super.addTrack(pista);
// las pistas nativas no tienen esto
si (! track.addEventListener) {
devolver;
}
pista.enabledChange_ = () => {
// cuando estamos deshabilitando otras pistas (ya que no admitimos
// más de una pista a la vez) configuraremos Changing_
// a verdadero para que no activemos eventos de cambio adicionales
if (esto.cambiando_) {
devolver;
}
esto.cambiando_ = verdadero;
deshabilitarOtros(esto, pista);
esto.cambiando_ = falso;
this.trigger('cambiar');
};
/**
* @escucha Pista de audio#cambio habilitado
* @fires TrackList#cambiar
* /
track.addEventListener('cambio habilitado', seguimiento.cambio habilitado_);
}
removeTrack(rtrack) {
super.removeTrack(rtrack);
si (rtrack.removeEventListener && rtrack.enabledChange_) {
rtrack.removeEventListener('cambio habilitado', rtrack.cambio habilitado_);
rtrack.enabledChange_ = nulo;
}
}
}
exportar lista de pistas de audio predeterminada;