/**
 * @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;