/**
* @file audio-track-menu-item.js
* /
importar MenuItem desde '../../menu/menu-item.js';
importar componente desde '../../component.js';
importar * como Dom desde '../../utils/dom.js';
/**
* Una {@link AudioTrack} {@link MenuItem}
*
* @extiende elemento de menú
* /
clase AudioTrackMenuItem extiende MenuItem {
/**
* 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) {
const pista = opciones.pista;
const pistas = player.audioTracks();
// Modificar las opciones para el inicio de la clase principal MenuItem.
opciones.etiqueta = pista.etiqueta || pista.idioma || 'Desconocido';
opciones.seleccionado = seguimiento.habilitado;
super(jugador, opciones);
esta.pista = pista;
this.addClass(`vjs-${track.kind}-menu-item`);
const changeHandler = (... argumentos) => {
this.handleTracksChange.apply(this, args);
};
pistas.addEventListener('cambio', changeHandler);
this.on('dispose', () => {
pistas.removeEventListener('cambio', changeHandler);
});
}
createEl(tipo, accesorios, atributos) {
const el = super.createEl(tipo, props, attrs);
const parentSpan = el.querySelector('.vjs-menu-item-text');
if (this.options_.track.kind === 'main-desc') {
parentSpan.appendChild(Dom.createEl('span', {
className: 'vjs-icono-marcador de posición'
}, {
'aria-oculto': verdadero
}));
parentSpan.appendChild(Dom.createEl('span', {
className: 'vjs-control-texto',
textContent: ' ' + this.localize('Descripciones')
}));
}
volver el;
}
/**
* Esto se llama cuando se "hace clic" en un `AudioTrackMenuItem'. Ver {@link ClickableComponent}
* para obtener información más detallada sobre lo que puede ser un clic.
*
* @param {Objetivo de evento~Evento} [evento]
* El evento `keydown`, `top` o `click` que hizo que esta función se desactivara
* llamado.
*
* @escucha toca
* @escucha clic
* /
handleClick(evento) {
super.handleClick(evento);
// la lista de pistas de audio alternará automáticamente otras pistas
// fuera para nosotros.
this.track.enabled = true;
// cuando se usan pistas de audio nativas, queremos asegurarnos de que otras pistas estén desactivadas
if (this.player_.tech_.featuresNativeAudioTracks) {
const pistas = this.player_.audioTracks();
para (sea i = 0; i < pistas.longitud; i++) {
const pista = pistas[i];
// salta la pista actual ya que la habilitamos arriba
if (pista === esta.pista) {
continuar;
}
track.enabled = track === this.track;
}
}
}
/**
* Manejar cualquier cambio de {@link AudioTrack}.
*
* @param {Objetivo de evento~Evento} [evento]
* El evento {@link AudioTrackList#change} que hizo que esto se ejecutara.
*
* @escucha AudioTrackList#cambiar
* /
handleTracksChange(evento) {
this.selected(this.track.enabled);
}
}
Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);
exportar elemento de menú de pista de audio predeterminado;