/**
* @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;