/**
* @file text-track-button.js
*/
import TrackButton de '../track-button.js' ;
import Component from '../../component.js' ;
import TextTrackMenuItem de './text-track-menu-item.js' ;
import OffTextTrackMenuItem from './off-text-track-menu-item.js' ;
/**
* Classe de base pour les boutons permettant d'activer des types de pistes de texte spécifiques (par exemple, les sous-titres)
*
* @extends MenuButton
*/
class TextTrackButton extends TrackButton {
/**
* Crée une instance de cette classe.
*
* @param {Player} player
* Le `Player` auquel cette classe doit être attachée.
*
* @param {Objet} [options={}]
* La mémoire clé/valeur des options du lecteur.
*/
constructor(player, options = {}) {
options.tracks = player.textTracks() ;
super(player, options) ;
}
/**
* Créer un élément de menu pour chaque piste de texte
*
* @param {TextTrackMenuItem[]} [items=[]]
* Tableau existant d'éléments à utiliser lors de la création
*
* @return {TextTrackMenuItem[]}
* Tableau des éléments de menu qui ont été créés
*/
createItems(items = [], TrackMenuItem = TextTrackMenuItem) {
// L'étiquette est un substitut à l'étiquette [track] off
// Utilisé pour localiser les légendes/sous-titres
let label ;
if (this.label_) {
label = `${this.label_} off` ;
}
// Ajouter un élément de menu OFF pour désactiver toutes les pistes
items.push(new OffTextTrackMenuItem(this.player_, {
types : this.kinds_,
type : this.kind_,
étiquette
})) ;
this.hideThreshold_ += 1 ;
const tracks = this.player_.textTracks() ;
if (!Array.isArray(this.kinds_)) {
this.kinds_ = [this.kind_] ;
}
for (let i = 0 ; i < tracks.length ; i++) {
const track = tracks[i] ;
// n'ajouter que les pistes qui sont d'un type approprié et qui ont une étiquette
if (this.kinds_.indexOf(track.kind) > -1) {
const item = new TrackMenuItem(this.player_, {
la voie ferrée,
types : this.kinds_,
type : this.kind_,
// L'élément de menu est sélectionnable
sélectionnable : true,
// L'élément de menu n'est PAS multi-sélectionnable (c'est-à-dire qu'un seul élément peut être marqué comme "sélectionné" à la fois)
multiSelectable : false
}) ;
item.addClass(`vjs-${track.kind}-menu-item`) ;
items.push(item) ;
}
}
les articles de retour ;
}
}
Component.registerComponent('TextTrackButton', TextTrackButton) ;
export default TextTrackButton ;