/**
 * @Datei beschreibungen-button.js
 * /
importieren Sie TextTrackButton aus './text-track-button.js';
importiere Komponente aus '../../component.js';
import * as Fn from '../../utils/fn.js';

/**
 * Die Schaltflächenkomponente zum Umschalten und Auswählen von Beschreibungen
 *
 * @erweitert TextTrackButton
 * /
class DescriptionsButton extends TextTrackButton {

  /**
   * 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.
   *
   * @param {Component~ReadyCallback} [ready]
   *        Die Funktion, die aufgerufen wird, wenn diese Komponente bereit ist.
   * /
  constructor(player, options, ready) {
    super(Spieler, Optionen, bereit);

    const tracks = player.textTracks();
    const changeHandler = Fn.bind(this, this.handleTracksChange);

    tracks.addEventListener('change', changeHandler);
    this.on('dispose', function() {
      tracks.removeEventListener('change', changeHandler);
    });
  }

  /**
   * Wechsel der Textspur handhaben
   *
   * @param {EventTarget~Event} event
   *        Das Ereignis, das diese Funktion ausgelöst hat
   *
   * @listens TextTrackList#ändern
   * /
  handleTracksChange(event) {
    const tracks = this.player().textTracks();
    let disabled = false;

    // Prüfen, ob eine Spur anderer Art angezeigt wird
    for (let i = 0, l = tracks.length; i < l; i++) {
      const track = tracks[i];

      if (track.kind !== this.kind_ && track.mode === 'showing') {
        deaktiviert = wahr;
        pause;
      }
    }

    // Wenn ein anderer Titel angezeigt wird, deaktivieren Sie diese Menüschaltfläche
    wenn (deaktiviert) {
      this.disable();
    } else {
      this.enable();
    }
  }

  /**
   * Erzeugt den Standard-DOM "Klassenname".
   *
   * @return {string}
   *         Der DOM `className` für dieses Objekt.
   * /
  buildCSSClass() {
    return `vjs-descriptions-button ${super.buildCSSClass()}`;
  }

  buildWrapperCSSClass() {
    return `vjs-descriptions-button ${super.buildWrapperCSSClass()}`;
  }
}

/**
 * art" von TextTrack, nach dem gesucht werden soll, um ihn mit diesem Menü zu verknüpfen.
 *
 * @Typ {String}
 * @privat
 * /
DescriptionsButton.prototype.kind_ = 'Beschreibungen';

/**
 * Der Text, der über den "DescriptionsButton"-Steuerelementen angezeigt werden soll. Für die Lokalisierung hinzugefügt.
 *
 * @Typ {String}
 * @privat
 * /
DescriptionsButton.prototype.controlText_ = 'Beschreibungen';

Component.registerComponent('DescriptionsButton', DescriptionsButton);
standardmäßig DescriptionsButton exportieren;