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