/**
 * @file audio-track-menu-item.js
 */
'../../menu/menu-item.js'에서 MenuItem 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
import * as Dom from '../../utils/dom.js';

/**
 * {@link AudioTrack} {@link MenuItem}
 *
 * @extends 메뉴 항목
 */
클래스 AudioTrackMenuItem은 MenuItem {를 확장합니다.

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

    // 상위 MenuItem 클래스의 init에 대한 옵션을 수정합니다.
    options.label = track.label || 트랙.언어 || '알려지지 않은';
    options.selected = 트랙.활성화;

    super(플레이어, 옵션);

    this.track = 트랙;

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

    const changeHandler = (...인수) => {
      this.handleTracksChange.apply(this, args);
    };

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

  createEl(유형, 소품, 속성) {
    const el = super.createEl(type, props, attrs);
    const parentSpan = el.querySelector('.vjs-menu-item-text');

    if (this.options_.track.kind === 'main-desc') {
      parentSpan.appendChild(Dom.createEl('스팬', {
        className: 'vjs-icon-placeholder'
      }, {
        '아리아 숨김': 참
      }));
      parentSpan.appendChild(Dom.createEl('스팬', {
        className: 'vjs-control-text',
        textContent: ' ' + this.localize('설명')
      }));
    }

    반환 엘;
  }

  /**
   * 이것은 `AudioTrackMenuItem이 "클릭"될 때 호출됩니다. {@link ClickableComponent} 참조
   * 클릭이 무엇인지에 대한 자세한 정보를 보려면.
   *
   * @param {이벤트대상~이벤트} [이벤트]
   * 이 함수를 실행하게 만든 `keydown`, `tap` 또는 `click` 이벤트
   * 라고 불리는.
   *
   * @listens 탭
   * @듣기 클릭
   */
  handleClick(이벤트) {
    super.handleClick(event);

    // 오디오 트랙 목록은 자동으로 다른 트랙을 토글합니다.
    // 꺼져 있습니다.
    this.track.enabled = 참;

    // 네이티브 오디오 트랙이 사용될 때 다른 트랙이 꺼져 있는지 확인하고 싶습니다.
    if (this.player_.tech_.featuresNativeAudioTracks) {
      const 트랙 = this.player_.audioTracks();

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

        // 위에서 활성화했기 때문에 현재 트랙을 건너뜁니다.
        if (트랙 === this.track) {
          계속하다;
        }

        track.enabled = 트랙 === this.track;
      }
    }
  }

  /**
   * 모든 {@link AudioTrack} 변경을 처리합니다.
   *
   * @param {이벤트대상~이벤트} [이벤트]
   * 실행을 유발한 {@link AudioTrackList#change} 이벤트입니다.
   *
   * @listens AudioTrackList#변경
   */
  handleTracksChange(이벤트) {
    this.selected(this.track.enabled);
  }
}

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