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