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

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

  /**
   * 為每個文本軌道創建一個菜單項
   *
   * @param {TextTrackMenuItem[]} [items=[]]
   * 創建期間要使用的現有項目數組
   *
   * @return {TextTrackMenuItem[]}
   * 創建的菜單項數組
   */
  createItems(items = [], TrackMenuItem = TextTrackMenuItem) {

    // 標籤是 [track] 關閉標籤的覆蓋
    // 用於本地化字幕/副標題
    讓標籤;

    如果(this.label_){
      label = `${this.label_} off`;
    }
    // 添加一個 OFF 菜單項以關閉所有曲目
    items.push(new OffTextTrackMenuItem(this.player_, {
      種類:this.kinds_,
      種類:this.kind_,
      標籤
    }));

    this.hideThreshold_ += 1;

    const tracks = this.player_.textTracks();

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

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

      // 僅添加適當類型且具有標籤的曲目
      如果 (this.kinds_.indexOf(track.kind) > -1) {

        const item = new TrackMenuItem(this.player_, {
          追踪,
          種類:this.kinds_,
          種類:this.kind_,
          // 菜單項是可選擇的
          可選:真實,
          // MenuItem 不是 multiSelectable(即一次只能將一個標記為“選中”)
          多選:假
        });

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

    退換貨品;
  }

}

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