/**
* @file descriptions-button.js
* /
importar TextTrackButton desde './text-track-button.js';
importar componente desde '../../component.js';
importar * como Fn desde '../../utils/fn.js';
/**
* El componente de botón para alternar y seleccionar descripciones
*
* @extiende TextTrackButton
* /
clase DescriptionsButton extiende TextTrackButton {
/**
* 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.
*
* @param {Componente~ReadyCallback} [listo]
* La función a llamar cuando este componente esté listo.
* /
constructor(jugador, opciones, listo) {
super(jugador, opciones, listo);
const pistas = player.textTracks();
const changeHandler = Fn.bind(this, this.handleTracksChange);
pistas.addEventListener('cambio', changeHandler);
this.on('dispose', function() {
pistas.removeEventListener('cambio', changeHandler);
});
}
/**
* Manejar el cambio de pista de texto
*
* @param {EventTarget~Evento} evento
* El evento que provocó la ejecución de esta función
*
* @escucha TextTrackList#cambio
* /
handleTracksChange(evento) {
const pistas = this.player().textTracks();
dejar deshabilitado = falso;
// Comprobar si se muestra una pista de un tipo diferente
for (sea i = 0, l = pistas.longitud; i < yo; i++) {
const pista = pistas[i];
if (pista.tipo !== este.tipo_ && track.mode === 'mostrando') {
deshabilitado = verdadero;
romper;
}
}
// Si se muestra otra pista, deshabilite este botón de menú
si (deshabilitado) {
esto.deshabilitar();
} else {
esto.habilitar();
}
}
/**
* Construye el DOM predeterminado `className`.
*
* @return {cadena}
* El DOM `className` para este objeto.
* /
construirClaseCSS() {
return `vjs-descriptions-button ${super.buildCSSClass()}`;
}
buildWrapperCSSClass() {
return `vjs-descriptions-button ${super.buildWrapperCSSClass()}`;
}
}
/**
* `tipo` de TextTrack a buscar para asociarlo a este menú.
*
* @tipo {cadena}
* @privado
* /
DescriptionsButton.prototype.kind_ = 'descripciones';
/**
* El texto que debería mostrarse sobre los controles `DescriptionsButton`s. Añadido para la localización.
*
* @tipo {cadena}
* @privado
* /
DescriptionsButton.prototype.controlText_ = 'Descripciones';
Component.registerComponent('DescriptionsButton', DescriptionsButton);
exportar el botón de descripción predeterminado;