/**
* @file off-text-track-menu-item.js
*/
import TextTrackMenuItem de './text-track-menu-item.js' ;
import Component from '../../component.js' ;
/**
* Un élément de menu spécial pour la transformation d'un type spécifique de piste de texte
*
* @extends TextTrackMenuItem
*/
class OffTextTrackMenuItem extends TextTrackMenuItem {
/**
* 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) {
// Création de pseudo-informations sur les pistes
// Requiert que les options['kind']
options.track = {
joueur,
// il n'est plus nécessaire de stocker `kind` ou `kinds` sur la piste elle-même
// puisqu'ils sont maintenant stockés dans la propriété `kinds` de toutes les instances de
// TextTrackMenuItem, mais cette option sera conservée pour des raisons de compatibilité ascendante
kind : options.kind,
kinds : options.kinds,
par défaut : false,
mode : "désactivé
};
if (!options.kinds) {
options.kinds = [options.kind] ;
}
if (options.label) {
options.track.label = options.label ;
} else {
options.track.label = options.kinds.join(' and ') + ' off' ;
}
// L'élément de menu est sélectionnable
options.selectable = 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)
options.multiSelectable = false ;
super(player, options) ;
}
/**
* Gérer le changement de piste du texte
*
* @param {EventTarget~Event} event
* L'événement qui a provoqué l'exécution de cette fonction
*/
handleTracksChange(event) {
const tracks = this.player().textTracks() ;
let shouldBeSelected = true ;
for (let i = 0, l = tracks.length ; i < l ; i++) {
const track = tracks[i] ;
if ((this.options_.kinds.indexOf(track.kind) > -1) && track.mode === 'showing') {
shouldBeSelected = false ;
pause ;
}
}
// Empêchez les appels redondants à selected(), car ils peuvent causer des problèmes d'accès à l'information
// les lecteurs d'écran lisent inutilement le texte de contrôle annexé
if (shouldBeSelected !== this.isSelected_) {
this.selected(shouldBeSelected) ;
}
}
handleSelectedLanguageChange(event) {
const tracks = this.player().textTracks() ;
let allHidden = true ;
for (let i = 0, l = tracks.length ; i < l ; i++) {
const track = tracks[i] ;
if ((['captions', 'descriptions', 'subtitles'].indexOf(track.kind) > -1) && track.mode === 'showing') {
allHidden = false ;
pause ;
}
}
if (allHidden) {
this.player_.cache_.selectedLanguage = {
activé : faux
};
}
}
}
Component.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem) ;
export default OffTextTrackMenuItem ;