/**
 * @파일 설명-버튼.js
 */
'./text-track-button.js'에서 TextTrackButton 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
import * as Fn from '../../utils/fn.js';

/**
 * 설명 전환 및 선택을 위한 버튼 구성 요소
 *
 * @extends TextTrackButton
 */
클래스 DescriptionsButton은 TextTrackButton을 확장합니다 {

  /**
   * 이 클래스의 인스턴스를 만듭니다.
   *
   * @param {플레이어} 플레이어
   * 이 클래스가 연결되어야 하는 `Player`.
   *
   * @param {객체} [옵션]
   * 플레이어 옵션의 키/값 저장소.
   *
   * @param {Component~ReadyCallback} [준비]
   * 이 구성 요소가 준비되었을 때 호출할 함수입니다.
   */
  생성자(플레이어, 옵션, 준비) {
    super(플레이어, 옵션, 준비);

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

    tracks.addEventListener('변경', changeHandler);
    this.on('처리', function() {
      tracks.removeEventListener('변경', changeHandler);
    });
  }

  /**
   * 텍스트 트랙 변경 처리
   *
   * @param {EventTarget~Event} 이벤트
   * 이 기능을 실행하게 만든 이벤트
   *
   * @listens TextTrackList#change
   */
  handleTracksChange(이벤트) {
    const 트랙 = this.player().textTracks();
    비활성화하자 = 거짓;

    // 다른 종류의 트랙이 표시되는지 확인
    for (let i = 0, l = 트랙 길이; i < 엘; i++) {
      const 트랙 = 트랙[i];

      if (track.kind !== this.kind_ && track.mode === '표시') {
        비활성화 = 참;
        부서지다;
      }
    }

    // 다른 트랙이 표시되면 이 메뉴 버튼을 비활성화합니다.
    if (비활성화) {
      this.disable();
    } else {
      this.enable();
    }
  }

  /**
   * 기본 DOM `className`을 빌드합니다.
   *
   * @return {문자열}
   * 이 개체의 DOM `className`입니다.
   */
  buildCSSClass() {
    `vjs-descriptions-button ${super.buildCSSClass()}` 반환;
  }

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

/**
 * 이 메뉴와 연결하기 위해 찾을 TextTrack의 `종류`.
 *
 * @유형 {문자열}
 * @사적인
 */
DescriptionsButton.prototype.kind_ = '설명';

/**
 * `DescriptionsButton` 컨트롤 위에 표시되어야 하는 텍스트입니다. 현지화를 위해 추가되었습니다.
 *
 * @유형 {문자열}
 * @사적인
 */
DescriptionsButton.prototype.controlText_ = '설명';

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