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