/**
* @file off-text-track-menu-item.js
* /
importar TextTrackMenuItem desde './text-track-menu-item.js';
importar componente desde '../../component.js';
/**
* Un elemento de menú especial para girar un tipo específico de pista de texto
*
* @extiende TextTrackMenuItem
* /
clase OffTextTrackMenuItem extiende TextTrackMenuItem {
/**
* Crea una instancia de esta clase.
*
* @param {Jugador} jugador
* El `Jugador` al que se debe adjuntar esta clase.
*
* @param {Objeto} [opciones]
* El almacén de clave/valor de las opciones del jugador.
* /
constructor(jugador, opciones) {
// Crear información de pseudo pista
// Requiere opciones['tipo']
opciones.pista = {
jugador,
// ya no es necesario almacenar `kind` o `kinds` en la propia pista
// ya que ahora están almacenados en la propiedad `kinds` de todas las instancias de
// TextTrackMenuItem, pero esto permanecerá por compatibilidad con versiones anteriores
tipo: opciones.tipo,
tipos: opciones.tipos,
predeterminado: falso,
modo: 'deshabilitado'
};
if (!opciones.tipos) {
opciones.tipos = [opciones.tipo];
}
if (opciones.etiqueta) {
opciones.pista.etiqueta = opciones.etiqueta;
} else {
options.track.label = options.kinds.join(' y ') + 'off';
}
// MenuItem es seleccionable
opciones.seleccionable = verdadero;
// MenuItem NO es multiseleccionable (es decir, solo uno puede marcarse como "seleccionado" a la vez)
opciones.multiseleccionable = falso;
super(jugador, opciones);
}
/**
* Manejar el cambio de pista de texto
*
* @param {EventTarget~Evento} evento
* El evento que provocó la ejecución de esta función
* /
handleTracksChange(evento) {
const pistas = this.player().textTracks();
let shouldBeSelected = true;
for (sea i = 0, l = pistas.longitud; i < yo; i++) {
const pista = pistas[i];
if ((this.options_.kinds.indexOf(track.kind) > -1) && track.mode === 'mostrando') {
debe ser seleccionado = falso;
romper;
}
}
// Evita llamadas redundantes a selected() porque pueden causar
// lectores de pantalla para leer el texto de control adjunto innecesariamente
if (deberíaSeleccionado !== this.isSelected_) {
this.selected(deberíaSerSeleccionado);
}
}
handleSelectedLanguageChange(evento) {
const pistas = this.player().textTracks();
let allHidden = verdadero;
for (sea i = 0, l = pistas.longitud; i < yo; i++) {
const pista = pistas[i];
if ((['títulos', 'descripciones', 'subtítulos'].indexOf(pista.tipo) > -1) && track.mode === 'mostrando') {
todoOculto = falso;
romper;
}
}
si (todo oculto) {
this.player_.cache_.selectedLanguage = {
habilitado: falso
};
}
}
}
Component.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);
exportar OffTextTrackMenuItem predeterminado;