/**
 * @Datei text-track-list.js
 * /
importiere TrackList von './track-list';

/**
 * Die aktuelle Liste von {@link TextTrack} für eine Mediendatei.
 *
 * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}
 * @erweitert TrackList
 * /
class TextTrackList extends TrackList {

  /**
   * Hinzufügen eines {@link TextTrack} zur `TextTrackList`
   *
   * @param {TextTrack} track
   *        Die Textspur, die der Liste hinzugefügt werden soll.
   *
   * @fires TrackList#addtrack
   * /
  addTrack(track) {
    super.addTrack(track);

    if (!this.queueChange_) {
      this.queueChange_ = () => this.queueTrigger('change');
    }
    if (!this.triggerSelectedlanguagechange) {
      this.triggerSelectedlanguagechange_ = () => this.trigger('selectedlanguagechange');
    }

    /**
     * @listens TextTrack#Moduswechsel
     * @brände TrackList#ändern
     * /
    track.addEventListener('modechange', this.queueChange_);
    const nonLanguageTextTrackKind = ['metadata', 'chapters'];

    if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {
      track.addEventListener('modechange', this.triggerSelectedlanguagechange_);
    }
  }

  removeTrack(rtrack) {
    super.removeTrack(rtrack);

    // Entfernen Sie die hinzugefügten Ereignisbehandler manuell
    if (rtrack.removeEventListener) {
      if (this.queueChange_) {
        rtrack.removeEventListener('modechange', this.queueChange_);
      }
      if (this.selectedlanguagechange_) {
        rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);
      }
    }
  }
}
standard TextTrackList exportieren;