/**
* @file text-track-button.js
* /
importar TrackButton desde '../track-button.js';
importar componente desde '../../component.js';
importar TextTrackMenuItem desde './text-track-menu-item.js';
importar OffTextTrackMenuItem desde './off-text-track-menu-item.js';
/**
* La clase base para botones que alternan tipos de pistas de texto específicas (por ejemplo, subtítulos)
*
* @extiende el botón de menú
* /
clase TextTrackButton extiende TrackButton {
/**
* 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 = {}) {
options.tracks = player.textTracks();
super(jugador, opciones);
}
/**
* Crear un elemento de menú para cada pista de texto
*
* @param {TextTrackMenuItem[]} [elementos=[]]
* Conjunto existente de elementos para usar durante la creación
*
* @return {TextTrackMenuItem[]}
* Matriz de elementos de menú que se crearon
* /
createItems(items = [], TrackMenuItem = TextTrackMenuItem) {
// La etiqueta es una anulación de la [pista] fuera de la etiqueta
// Usado para localizar leyendas/subtítulos
dejar etiquetar;
if (esta.etiqueta_) {
etiqueta = `${this.label_} off`;
}
// Agregue un elemento de menú APAGADO para apagar todas las pistas
items.push(nuevo OffTextTrackMenuItem(this.player_, {
tipos: este.tipos_,
tipo: este.tipo_,
etiqueta
}));
este.hideThreshold_ += 1;
const pistas = this.player_.textTracks();
if (!Array.isArray(this.kinds_)) {
este.tipos_ = [este.tipo_];
}
para (sea i = 0; i < pistas.longitud; i++) {
const pista = pistas[i];
// solo agregue pistas que sean del tipo apropiado y tengan una etiqueta
if (este.tipos_.indexOf(pista.tipo) > -1) {
const item = new TrackMenuItem(this.player_, {
pista,
tipos: este.tipos_,
tipo: este.tipo_,
// MenuItem es seleccionable
seleccionable: verdadero,
// MenuItem NO es multiseleccionable (es decir, solo uno puede marcarse como "seleccionado" a la vez)
multiseleccionable: falso
});
item.addClass(`vjs-${track.kind}-menu-item`);
items.push(item);
}
}
devolver los artículos;
}
}
Component.registerComponent('TextTrackButton', TextTrackButton);
exportar TextTrackButton predeterminado;