/**
* @file play-toggle.js
*/
從 '../button.js' 導入按鈕;
從 '../component.js' 導入組件;
從'../utils/promise'導入{silencePromise};
/**
* 在播放和暫停之間切換的按鈕。
*
* @extends 按鈕
*/
類 PlayToggle 擴展按鈕 {
/**
* 創建此類的一個實例。
*
* @param {Player} 播放器
* 此類應附加到的 `Player`。
*
* @param {對象} [選項={}]
* 播放器選項的鍵/值存儲。
*/
構造函數(播放器,選項= {}){
超級(播放器,選項);
// 顯示或隱藏重播圖標
options.replay = options.replay === undefined ||選項.重播;
this.on(player, 'play', (e) => this.handlePlay(e));
this.on(player, '暫停', (e) => this.handlePause(e));
如果(選項。重播){
this.on(player, 'ended', (e) => this.handleEnded(e));
}
}
/**
* 構建默認的 DOM `className`。
*
* @return {字符串}
* 此對象的 DOM `className`。
*/
buildCSSClass() {
返回`vjs-play-control ${super.buildCSSClass()}`;
}
/**
* 當 `PlayToggle` 被“點擊”時調用。看
* {@link ClickableComponent} 以獲取有關點擊的更多詳細信息。
*
* @param {EventTarget~Event} [事件]
* 導致此功能被執行的 `keydown`、`tap` 或 `click` 事件
* 打電話。
*
* @listens 水龍頭
* @listens 點擊
*/
handleClick(事件){
如果 (this.player_.paused()) {
silencePromise(this.player_.play());
}其他{
這個.player_.pause();
}
}
/**
* 這會在視頻結束並且用戶搜索後調用一次,以便
* 我們可以將重播按鈕改回播放按鈕。
*
* @param {EventTarget~Event} [事件]
* 導致此函數運行的事件。
*
* @listens Player#seeked
*/
handleSeeked(事件){
this.removeClass('vjs-ended');
如果 (this.player_.paused()) {
這個.handlePause(事件);
}其他{
這個.handlePlay(事件);
}
}
/**
* 將 vjs-playing 類添加到元素,以便它可以改變外觀。
*
* @param {EventTarget~Event} [事件]
* 導致此函數運行的事件。
*
* @listens Player#play
*/
handlePlay(事件){
this.removeClass('vjs-ended');
this.removeClass('vjs-paused');
this.addClass('vjs-playing');
// 將按鈕文本更改為“暫停”
this.controlText('暫停');
}
/**
* 將 vjs-paused 類添加到元素,以便它可以更改外觀。
*
* @param {EventTarget~Event} [事件]
* 導致此函數運行的事件。
*
* @listens Player#pause
*/
句柄暫停(事件){
this.removeClass('vjs-playing');
this.addClass('vjs-paused');
// 將按鈕文本更改為“播放”
this.controlText('播放');
}
/**
* 將 vjs-ended 類添加到元素,以便它可以改變外觀
*
* @param {EventTarget~Event} [事件]
* 導致此函數運行的事件。
*
* @listens Player#ended
*/
handleEnded(事件){
this.removeClass('vjs-playing');
this.addClass('vjs-ended');
// 將按鈕文本更改為“重播”
this.controlText('重播');
// 在下一個搜索中刪除重播按鈕
this.one(this.player_, 'seeked', (e) => this.handleSeeked(e));
}
}
/**
* 應顯示在 `PlayToggle` 控件上的文本。添加本地化。
*
* @type {字符串}
* @私人的
*/
PlayToggle.prototype.controlText_ = '播放';
Component.registerComponent('PlayToggle', PlayToggle);
導出默認 PlayToggle;