/**
* @Datei off-text-track-menu-item.js
* /
import TextTrackMenuItem from './text-track-menu-item.js';
importiere Komponente aus '../../component.js';
/**
* Ein spezieller Menüpunkt zum Umschalten einer bestimmten Art von Textspur
*
* @extends TextTrackMenuItem
* /
class OffTextTrackMenuItem extends TextTrackMenuItem {
/**
* Erzeugt eine Instanz dieser Klasse.
*
* @param {Player} Spieler
* Der `Player`, dem diese Klasse zugeordnet werden soll.
*
* @param {Object} [Optionen]
* Der Schlüssel/Wertspeicher der Playeroptionen.
* /
constructor(spieler, optionen) {
// Pseudo-Track-Informationen erstellen
// Benötigt options['kind']
options.track = {
spieler,
// es ist nicht mehr notwendig, `kind` oder `kinds` auf der Spur selbst zu speichern
// da sie nun in der Eigenschaft "kinds" aller Instanzen von
// TextTrackMenuItem, wird aber aus Gründen der Abwärtskompatibilität beibehalten
kind: options.kind,
arten: options.kinds,
standard: false,
modus: 'deaktiviert'
};
if (!options.kinds) {
options.kinds = [options.kind];
}
if (options.label) {
options.track.label = options.label;
} else {
options.track.label = options.kinds.join(' und ') + ' off';
}
// MenuItem ist auswählbar
options.selectable = true;
// MenuItem ist NICHT mehrfach auswählbar (d.h. es kann jeweils nur einer als "ausgewählt" markiert werden)
options.multiSelectable = false;
super(Spieler, Optionen);
}
/**
* Wechsel der Textspur handhaben
*
* @param {EventTarget~Event} event
* Das Ereignis, das diese Funktion ausgelöst hat
* /
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;
}
}
// Vermeiden Sie redundante selected()-Aufrufe, da diese zu
// Bildschirmlesegeräte lesen den angehängten Kontrolltext unnötigerweise
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 = {
aktiviert: false
};
}
}
}
Component.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);
exportieren Standard OffTextTrackMenuItem;