/**
 * @file 텍스트-트랙-버튼.js
 */
'../track-button.js'에서 TrackButton 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
'./text-track-menu-item.js'에서 TextTrackMenuItem 가져오기;
'./off-text-track-menu-item.js'에서 OffTextTrackMenuItem 가져오기;

/**
 * 특정 텍스트 트랙 유형(예: 자막)을 전환하는 버튼의 기본 클래스
 *
 * @extends 메뉴버튼
 */
TextTrackButton 클래스는 TrackButton {을 확장합니다.

  /**
   * 이 클래스의 인스턴스를 만듭니다.
   *
   * @param {플레이어} 플레이어
   * 이 클래스가 연결되어야 하는 `Player`.
   *
   * @param {객체} [옵션={}]
   * 플레이어 옵션의 키/값 저장소.
   */
  생성자(플레이어, 옵션 = {}) {
    options.tracks = player.textTracks();

    super(플레이어, 옵션);
  }

  /**
   * 각 텍스트 트랙에 대한 메뉴 항목 만들기
   *
   * @param {TextTrackMenuItem[]} [항목=[]]
   * 생성 중에 사용할 기존 항목 배열
   *
   * @return {TextTrackMenuItem[]}
   * 생성된 메뉴 항목의 배열
   */
  createItems(항목 = [], TrackMenuItem = TextTrackMenuItem) {

    // 라벨은 [트랙] 오프 라벨에 대한 재정의입니다.
    // 캡션/자막을 현지화하는 데 사용됨
    레이블을 지정하십시오.

    if (이.라벨_) {
      label = `${this.label_} 꺼짐`;
    }
    // 모든 트랙을 끄기 위해 OFF 메뉴 항목 추가
    items.push(새로운 OffTextTrackMenuItem(this.player_, {
      종류: this.kinds_,
      종류: this.kind_,
      라벨
    }));

    this.hideThreshold_ += 1;

    const 트랙 = this.player_.textTracks();

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

    에 대한 (하자 i = 0; i < 트랙.길이; i++) {
      const 트랙 = 트랙[i];

      // 적절한 종류이고 레이블이 있는 트랙만 추가합니다.
      if (this.kinds_.indexOf(track.kind) > -1) {

        const item = new TrackMenuItem(this.player_, {
          길,
          종류: this.kinds_,
          종류: this.kind_,
          // MenuItem을 선택할 수 있습니다.
          선택 가능: 참,
          // MenuItem은 multiSelectable이 아닙니다(즉, 한 번에 하나만 "선택됨"으로 표시할 수 있음).
          다중 선택 가능: 거짓
        });

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

    항목을 반환;
  }

}

Component.registerComponent('TextTrackButton', TextTrackButton);
기본 TextTrackButton 내보내기;