/**
* @Datei audio-track-menu-item.js
* /
import MenuItem from '../../menu/menu-item.js';
importiere Komponente aus '../../component.js';
import * as Dom from '../../utils/dom.js';
/**
* Ein {@link AudioTrack} {@link MenuItem}
*
* @extends MenuItem
* /
class AudioTrackMenuItem extends MenuItem {
/**
* 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) {
const track = options.track;
const tracks = player.audioTracks();
// Ändern Sie die Optionen für die Init der übergeordneten MenuItem-Klasse.
options.label = track.label || track.language || 'Unknown';
options.selected = track.enabled;
super(Spieler, Optionen);
this.track = track;
this.addClass(`vjs-${track.kind}-menu-item`);
const changeHandler = (...args) => {
this.handleTracksChange.apply(this, args);
};
tracks.addEventListener('change', changeHandler);
this.on('dispose', () => {
tracks.removeEventListener('change', changeHandler);
});
}
createEl(type, props, attrs) {
const el = super.createEl(type, props, attrs);
const parentSpan = el.querySelector('.vjs-menu-item-text');
if (this.options_.track.kind === 'main-desc') {
parentSpan.appendChild(Dom.createEl('span', {
className: 'vjs-icon-placeholder'
}, {
aria-hidden": wahr
}));
parentSpan.appendChild(Dom.createEl('span', {
className: 'vjs-control-text',
textInhalt: ' ' + this.localize('Beschreibungen')
}));
}
zurück el;
}
/**
* Diese Funktion wird aufgerufen, wenn ein `AudioTrackMenuItem "angeklickt" wird. Siehe {@link ClickableComponent}
* für genauere Informationen darüber, was ein Klick sein kann.
*
* @param {EventTarget~Event} [event]
* Das `Keydown`-, `Tap`- oder `Click`-Ereignis, das diese Funktion ausgelöst hat
* genannt.
*
* @listens tap
* @listens klicken
* /
handleClick(event) {
super.handleClick(event);
// die Audiospurliste schaltet automatisch andere Spuren um
// aus für uns.
this.track.enabled = true;
// wenn native Audiospuren verwendet werden, wollen wir sicherstellen, dass andere Spuren ausgeschaltet sind
if (this.player_.tech_.featuresNativeAudioTracks) {
const tracks = this.player_.audioTracks();
for (let i = 0; i < tracks.length; i++) {
const track = tracks[i];
// Überspringe den aktuellen Titel, da wir ihn oben aktiviert haben
if (track === this.track) {
weiter;
}
track.enabled = track === this.track;
}
}
}
/**
* Behandelt jede {@link AudioTrack} Änderung.
*
* @param {EventTarget~Event} [event]
* Das {@link AudioTrackList#change}-Ereignis, das diesen Vorgang ausgelöst hat.
*
* @listens AudioTrackList#ändern
* /
handleTracksChange(event) {
this.selected(this.track.enabled);
}
}
Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);
standard AudioTrackMenuItem exportieren;