/**
 * @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} 播放器
   * 此類應附加到的 `Player`。
   *
   * @param {對象} [選項]
   * 播放器選項的鍵/值存儲。
   */
  構造函數(播放器,選項){
    const track = options.track;
    const tracks = player.audioTracks();

    // 修改父 MenuItem 類的 init 的選項。
    options.label = track.label ||跟踪語言 || '未知';
    options.selected = track.enabled;

    超級(播放器,選項);

    this.track = 軌道;

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

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

    tracks.addEventListener('change', changeHandler);
    this.on('處置', () => {
      tracks.removeEventListener('change', changeHandler);
    });
  }

  createEl(類型,道具,屬性){
    const el = super.createEl(type, props, attrs);
    const parentSpan = el.querySelector('.vjs-menu-item-text');

    如果(this.options_.track.kind ==='main-desc'){
      parentSpan.appendChild(Dom.createEl('span', {
        className: 'vjs-icon-placeholder'
      },{
        'aria-hidden': true
      }));
      parentSpan.appendChild(Dom.createEl('span', {
        className: 'vjs-control-text',
        textContent: ' ' + this.localize('描述')
      }));
    }

    返回 el;
  }

  /**
   * 當一個 AudioTrackMenuItem 被“點擊”時被調用。參見 {@link ClickableComponent}
   * 有關點擊的更多詳細信息。
   *
   * @param {EventTarget~Event} [事件]
   * 導致此功能被執行的 `keydown`、`tap` 或 `click` 事件
   * 打電話。
   *
   * @listens 水龍頭
   * @listens 點擊
   */
  handleClick(事件){
    super.handleClick(事件);

    // 音軌列表會自動切換其他曲目
    // 為我們關閉。
    this.track.enabled = true;

    // 當使用本機音軌時,我們要確保關閉其他音軌
    如果(this.player_.tech_.featuresNativeAudioTracks){
      const tracks = this.player_.audioTracks();

      對於(讓我 = 0; 我 < 跟踪。長度; 我 ++){
        const track = tracks[i];

        // 跳過當前曲目,因為我們在上面啟用了它
        如果(跟踪=== this.track){
          繼續;
        }

        track.enabled = track === this.track;
      }
    }
  }

  /**
   * 處理任何 {@link AudioTrack} 變化。
   *
   * @param {EventTarget~Event} [事件]
   * 導致此運行的 {@link AudioTrackList#change} 事件。
   *
   * @listens AudioTrackList#change
   */
  handleTracksChange(事件){
    this.selected(this.track.enabled);
  }
}

Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);
導出默認 AudioTrackMenuItem;