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