/**
 * @file text-track-list.js
 */
'./track-list'에서 TrackList 가져오기;

/**
 * 미디어 파일에 대한 {@link TextTrack}의 현재 목록입니다.
 *
 * @see [사양]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}
 * @extends 트랙리스트
 */
클래스 TextTrackList 확장 TrackList {

  /**
   * `TextTrackList`에 {@link TextTrack} 추가
   *
   * @param {TextTrack} 트랙
   * 목록에 추가할 텍스트 트랙.
   *
   * @fires 트랙리스트#addtrack
   */
  addTrack(트랙) {
    super.addTrack(트랙);

    if (!this.queueChange_) {
      this.queueChange_ = () => this.queueTrigger('변경');
    }
    if (!this.triggerSelectedlanguagechange) {
      this.triggerSelectedlanguagechange_ = () => this.trigger('선택된 언어 변경');
    }

    /**
     * @listens TextTrack#modechange
     * @fires 트랙리스트#변경
     */
    track.addEventListener('modechange', this.queueChange_);
    const nonLanguageTextTrackKind = ['메타데이터', '챕터'];

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

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

    // 추가한 이벤트 핸들러를 수동으로 제거합니다.
    if (rtrack.removeEventListener) {
      if (this.queueChange_) {
        rtrack.removeEventListener('modechange', this.queueChange_);
      }
      if (this.selectedlanguagechange_) {
        rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);
      }
    }
  }
}
기본 TextTrackList 내보내기;