/**
 * @Datei text-track-button.js
 * /
importiere TrackButton aus '../track-button.js';
importiere Komponente aus '../../component.js';
import TextTrackMenuItem from './text-track-menu-item.js';
import OffTextTrackMenuItem from './off-text-track-menu-item.js';

/**
 * Die Basisklasse für Schaltflächen, die bestimmte Textspurtypen umschalten (z. B. Untertitel)
 *
 * @extends MenuButton
 * /
class TextTrackButton extends TrackButton {

  /**
   * Erzeugt eine Instanz dieser Klasse.
   *
   * @param {Player} Spieler
   *        Der `Player`, dem diese Klasse zugeordnet werden soll.
   *
   * @param {Object} [options={}]
   *        Der Schlüssel/Wertspeicher der Playeroptionen.
   * /
  constructor(player, options = {}) {
    options.tracks = player.textTracks();

    super(Spieler, Optionen);
  }

  /**
   * Erstellen Sie für jede Textspur einen Menüpunkt
   *
   * @param {TextTrackMenuItem[]} [items=[]]
   *        Vorhandenes Array von Elementen, die bei der Erstellung verwendet werden sollen
   *
   * @return {TextTrackMenuItem[]}
   *         Array von Menüpunkten, die erstellt wurden
   * /
  createItems(items = [], TrackMenuItem = TextTrackMenuItem) {

    // Das Label überschreibt das Label [track] off
    // Zur Lokalisierung von Bildunterschriften/Untertiteln verwendet
    let label;

    if (this.label_) {
      label = "${this.label_} off";
    }
    // Hinzufügen eines OFF-Menüpunkts, um alle Titel auszuschalten
    items.push(new OffTextTrackMenuItem(this.player_, {
      kinds: this.kinds_,
      kind: this.kind_,
      Etikett
    }));

    this.hideThreshold_ += 1;

    const tracks = this.player_.textTracks();

    if (!Array.isArray(this.kinds_)) {
      this.kinds_ = [this.kind_];
    }

    for (let i = 0; i < tracks.length; i++) {
      const track = tracks[i];

      // füge nur Spuren hinzu, die von geeigneter Art sind und eine Bezeichnung haben
      if (this.kinds_.indexOf(track.kind) > -1) {

        const item = new TrackMenuItem(this.player_, {
          titel,
          kinds: this.kinds_,
          kind: this.kind_,
          // MenuItem ist auswählbar
          auswählbar: wahr,
          // MenuItem ist NICHT mehrfach auswählbar (d.h. es kann jeweils nur einer als "ausgewählt" markiert werden)
          multiSelectable: false
        });

        item.addClass(`vjs-${track.kind}-menu-item`);
        items.push(item);
      }
    }

    rücksendungen;
  }

}

Component.registerComponent('TextTrackButton', TextTrackButton);
standard TextTrackButton exportieren;