/**
* @file seek-to-live.js
*/
從“../按鈕”導入按鈕;
從 '../component' 導入組件;
import * as Dom from '../utils/dom.js';
/**
* 持續時間為 Infinity 時顯示實時指示器。
*
* @extends 組件
*/
類 SeekToLive 擴展按鈕 {
/**
* 創建此類的一個實例。
*
* @param {Player} 播放器
* 此類應附加到的 `Player`。
*
* @param {對象} [選項]
* 播放器選項的鍵/值存儲。
*/
構造函數(播放器,選項){
超級(播放器,選項);
this.updateLiveEdgeStatus();
如果(這個.player_.liveTracker){
this.updateLiveEdgeStatusHandler_ = (e) => this.updateLiveEdgeStatus(e);
this.on(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_);
}
}
/**
* 創建 `Component` 的 DOM 元素
*
* @return {元素}
* 創建的元素。
*/
創建El() {
const el = super.createEl('按鈕', {
className: 'vjs-seek-to-live-control vjs-control'
});
this.textEl_ = Dom.createEl('span', {
className: 'vjs-seek-to-live-text',
文本內容:this.localize('LIVE')
},{
'aria-hidden': 'true'
});
el.appendChild(this.textEl_);
返回 el;
}
/**
* 如果我們處於實時邊緣,則更新此按鈕的狀態
* 或不
*/
updateLiveEdgeStatus() {
// 默認為活邊
如果(!this.player_.liveTracker || this.player_.liveTracker.atLiveEdge()){
this.setAttribute('aria-disabled', true);
this.addClass('vjs-at-live-edge');
this.controlText('求直播,當前正在直播');
}其他{
this.setAttribute('aria-disabled', false);
this.removeClass('vjs-at-live-edge');
this.controlText('求住,當前在後面住');
}
}
/**
* 點擊讓我們盡可能靠近現場。
* 這需要我們等待下一個 `live-seekable-change`
* 每段長度秒將發生的事件。
*/
handleClick() {
this.player_.liveTracker.seekToLiveEdge();
}
/**
* 處理元素並停止跟踪
*/
處置(){
如果(這個.player_.liveTracker){
this.off(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_);
}
this.textEl_ = null;
super.dispose();
}
}
SeekToLive.prototype.controlText_ = '求直播,正在直播';
Component.registerComponent('SeekToLive', SeekToLive);
導出默認 SeekToLive;