/**
* @file video-track-list.js
* /
importar TrackList desde './track-list';
/**
* Anule la selección de todos los demás {@link VideoTrack} que estén seleccionados.
*
* lista @param {VideoTrackList}
* lista para trabajar
*
* @param {VideoTrack} 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 video está habilitada, deshabilítela
lista[i].seleccionado = falso;
}
};
/**
* La lista actual de {@link VideoTrack} para un video.
*
* @ver [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}
* @extiende TrackList
* /
clase VideoTrackList extiende TrackList {
/**
* Crear una instancia de esta clase.
*
* @param {VideoTrack[]} [pistas=[]]
* Una lista de `VideoTrack` 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].seleccionado) {
deshabilitarOtros(pistas, pistas[i]);
romper;
}
}
súper (pistas);
esto.cambiando_ = falso;
/**
* @miembro {número} VideoTrackList#selectedIndex
* El índice actual del {@link VideoTrack`} seleccionado.
* /
Object.defineProperty(this, 'selectedIndex', {
conseguir() {
para (sea i = 0; i < esta.longitud; i++) {
si (este[i].seleccionado) {
devolver yo;
}
}
devolver -1;
},
colocar() {}
});
}
/**
* Agregue un {@link VideoTrack} a `VideoTrackList`.
*
* @param {VideoTrack} pista
* El VideoTrack para agregar a la lista
*
* @fires TrackList#addtrack
* /
addTrack(pista) {
if (pista.seleccionada) {
deshabilitarOtros(esto, pista);
}
super.addTrack(pista);
// las pistas nativas no tienen esto
si (! track.addEventListener) {
devolver;
}
track.selectedChange_ = () => {
if (esto.cambiando_) {
devolver;
}
esto.cambiando_ = verdadero;
deshabilitarOtros(esto, pista);
esto.cambiando_ = falso;
this.trigger('cambiar');
};
/**
* @escucha VideoTrack#selectedchange
* @fires TrackList#cambiar
* /
track.addEventListener('cambioseleccionado', track.cambioseleccionado_);
}
removeTrack(rtrack) {
super.removeTrack(rtrack);
si (rtrack.removeEventListener && rtrack.selectedChange_) {
rtrack.removeEventListener('cambioseleccionado', rtrack.cambioseleccionado_);
rtrack.selectedChange_ = nulo;
}
}
}
exportar VideoTrackList predeterminado;