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