/**
* @file big-play-button.js
*/
從 './button.js' 導入按鈕;
從 './component.js' 導入組件;
從 './utils/promise' 導入 {isPromise, silencePromise};
import * as browser from './utils/browser.js';
/**
* 視頻播放前顯示的初始播放按鈕。的隱藏
* `BigPlayButton` 通過 CSS 和 `Player` 狀態完成。
*
* @extends 按鈕
*/
類 BigPlayButton 擴展按鈕 {
構造函數(播放器,選項){
超級(播放器,選項);
this.mouseused_ = false;
this.on('mousedown', (e) => this.handleMouseDown(e));
}
/**
* 構建默認的 DOM `className`。
*
* @return {字符串}
* 此對象的 DOM `className`。始終返回“vjs-big-play-button”。
*/
buildCSSClass() {
返回“vjs-大播放按鈕”;
}
/**
* 當“點擊”`BigPlayButton` 時調用。參見 {@link ClickableComponent}
* 有關點擊的更多詳細信息。
*
* @param {EventTarget~Event} 事件
* 導致此功能被執行的 `keydown`、`tap` 或 `click` 事件
* 打電話。
*
* @listens 水龍頭
* @listens 點擊
*/
handleClick(事件){
const playPromise = this.player_.play();
// 如果通過鼠標單擊則提前退出
如果(this.mouseused_ && event.clientX && event.clientY){
const sourceIsEncrypted = this.player_.usingPlugin('eme') &&
這個.player_.eme.sessions &&
this.player_.eme.sessions.length > 0;
沉默承諾(播放承諾);
如果 (this.player_.tech(true) &&
// 我們在播放 DRM 內容時觀察到 IE 和 Edge 中的錯誤
// 在視頻元素上調用 .focus() 會導致視頻變黑,
// 所以我們在特定情況下避免它
!((browser.IE_VERSION || browser.IS_EDGE) && sourceIsEncrypted)) {
this.player_.tech(true).focus();
}
返回;
}
const cb = this.player_.getChild('controlBar');
const playToggle = cb && cb.getChild('playToggle');
如果(!playToggle){
this.player_.tech(true).focus();
返回;
}
const playFocus = () => playToggle.focus();
如果(isPromise(playPromise)){
playPromise.then(playFocus, () => {});
}其他{
this.setTimeout(playFocus, 1);
}
}
handleKeyDown(事件){
this.mouseused_ = false;
super.handleKeyDown(事件);
}
handleMouseDown(事件){
this.mouseused_ = true;
}
}
/**
* 應顯示在 `BigPlayButton` 控件上的文本。添加到本地化。
*
* @type {字符串}
* @私人的
*/
BigPlayButton.prototype.controlText_ = '播放視頻';
Component.registerComponent('BigPlayButton', BigPlayButton);
導出默認的 BigPlayButton;