/**
 * @file off-text-track-menu-item.js
 */
從“./text-track-menu-item.js”導入 TextTrackMenuItem;
從 '../../component.js' 導入組件;

/**
 * 用於轉動特定類型文本軌道的特殊菜單項
 *
 * @extends TextTrackMenuItem
 */
類 OffTextTrackMenuItem 擴展 TextTrackMenuItem {

  /**
   * 創建此類的一個實例。
   *
   * @param {Player} 播放器
   * 此類應附加到的 `Player`。
   *
   * @param {對象} [選項]
   * 播放器選項的鍵/值存儲。
   */
  構造函數(播放器,選項){
    // 創建偽軌道信息
    // 需要選項['kind']
    options.track = {
      播放器,
      // 不再需要在軌道本身上存儲 `kind` 或 `kinds`
      // 因為它們現在存儲在所有實例的 `kinds` 屬性中
      // TextTrackMenuItem,但為了向後兼容,這將保留
      種類:options.kind,
      種類:options.kinds,
      默認值:假,
      模式:'禁用'
    };

    如果(!options.kinds){
      options.kinds = [options.kind];
    }

    如果(選項。標籤){
      options.track.label = options.label;
    }其他{
      options.track.label = options.kinds.join(' and ') + ' off';
    }

    // 菜單項是可選擇的
    options.selectable = true;
    // MenuItem 不是 multiSelectable(即一次只能將一個標記為“選中”)
    options.multiSelectable = false;

    超級(播放器,選項);
  }

  /**
   * 處理文本軌道變化
   *
   * @param {EventTarget~Event} 事件
   * 導致該函數運行的事件
   */
  handleTracksChange(事件){
    const tracks = this.player().textTracks();
    讓 shouldBeSelected = true;

    for (let i = 0, l = tracks.length; i < l; i++) {
      const track = tracks[i];

      如果 ((this.options_.kinds.indexOf(track.kind) > -1) && track.mode === '顯示') {
        shouldBeSelected = false;
        休息;
      }
    }

    // 防止多餘的 selected() 調用,因為它們可能會導致
    // 屏幕閱讀器不必要地閱讀附加的控製文本
    if (shouldBeSelected !== this.isSelected_) {
      this.selected(shouldBeSelected);
    }
  }

  handleSelectedLanguageChange(事件){
    const tracks = this.player().textTracks();
    讓 allHidden = true;

    for (let i = 0, l = tracks.length; i < l; i++) {
      const track = tracks[i];

      if ((['字幕', '描述', '字幕'].indexOf(track.kind) > -1) && track.mode === '顯示') {
        所有隱藏=假;
        休息;
      }
    }

    如果(全部隱藏){
      this.player_.cache_.selectedLanguage = {
        啟用:假
      };
    }
  }

}

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