/**
 * @file poster-image.js
 */
從 './clickable-component.js' 導入 ClickableComponent;
從 './component.js' 導入組件;
import * as Dom from './utils/dom.js';
從'./utils/promise'導入{silencePromise};
import * as browser from './utils/browser.js';

/**
 * 處理顯示玩家海報圖像的 `ClickableComponent`。
 *
 * @extends 可點擊組件
 */
類 PosterImage 擴展 ClickableComponent {

  /**
   * 創建此類的一個實例。
   *
   * @param {Player} 播放器
   * 此類應附加到的 `Player`。
   *
   * @param {對象} [選項]
   * 播放器選項的鍵/值存儲。
   */
  構造函數(播放器,選項){
    超級(播放器,選項);

    這個.更新();

    this.update_ = (e) => this.update(e);
    player.on('posterchange', this.update_);
  }

  /**
   * 清理並處理 `PosterImage`。
   */
  處置(){
    this.player().off('posterchange', this.update_);
    super.dispose();
  }

  /**
   * 創建 `PosterImage` 的 DOM 元素。
   *
   * @return {元素}
   * 被創建的元素。
   */
  創建El() {
    const el = Dom.createEl('div', {
      className: 'vjs-海報',

      // 不希望海報是可標記的。
      選項卡索引:-1
    });

    返回 el;
  }

  /**
   * {@link EventTarget~EventListener} 用於 {@link Player#posterchange} 事件。
   *
   * @listens Player#posterchange
   *
   * @param {EventTarget~Event} [事件]
   * 觸發此函數的 `Player#posterchange` 事件。
   */
  更新(事件){
    const url = this.player().poster();

    this.setSrc(url);

    // 如果沒有海報來源,我們應該在這個組件上顯示:none
    // 所以它仍然不可點擊或右鍵點擊
    如果(網址){
      這個。顯示();
    }其他{
      這個。隱藏();
    }
  }

  /**
   * 根據顯示方式設置`PosterImage`的來源。
   *
   * @param {string} 網址
   * `PosterImage` 來源的 URL。
   */
  設置源(網址){
    讓 backgroundImage = '';

    // 任何虛假值都應保留為空字符串,否則
    // 這會拋出一個額外的錯誤
    如果(網址){
      backgroundImage = `url("${url}")`;
    }

    this.el_.style.backgroundImage = backgroundImage;
  }

  /**
   * {@link EventTarget~EventListener} 用於點擊 `PosterImage`。看
   * {@link ClickableComponent#handleClick} 對於將被觸發的實例。
   *
   * @listens 水龍頭
   * @listens 點擊
   * @listens 按鍵
   *
   * @param {EventTarget~Event} 事件
   + 導致調用此函數的 `click`、`tap` 或 `keydown` 事件。
   */
  handleClick(事件){
    // 當控件被禁用時,我們不希望點擊觸發播放
    如果(!this.player_.controls()){
      返回;
    }

    const sourceIsEncrypted = this.player_.usingPlugin('eme') &&
                                這個.player_.eme.sessions &&
                                this.player_.eme.sessions.length > 0;

    如果 (this.player_.tech(true) &&
    // 我們在播放 DRM 內容時觀察到 IE 和 Edge 中的錯誤
    //在視頻元素上調用 .focus () 會導致視頻變黑,
    // 所以我們在特定情況下避免它
    !((瀏覽器版本 || 瀏覽器 .is_Edge)&& 源加密)){
      this.player_.tech(true).focus();
    }

    如果 (this.player_.paused()) {
      silencePromise(this.player_.play());
    }其他{
      這個.player_.pause();
    }
  }

}

Component.registerComponent('PosterImage', PosterImage);
導出默認的 PosterImage;