/**
 * @文件持續時間-display.js
 */
從 './time-display' 導入 TimeDisplay;
從 '../../component.js' 導入組件;

/**
 * 顯示持續時間
 *
 * @extends 組件
 */
類 DurationDisplay 擴展 TimeDisplay {

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

    const updateContent = (e) => this.updateContent(e);

    // 我們不想/不需要限制持續時間的變化,
    // 因為它們應該始終將更改後的持續時間顯示為
    // 它已經改變了
    this.on(player, 'durationchange', updateContent);

    // 監聽 loadstart 因為播放器持續時間在加載新媒體元素時重置,
    // 但用戶代理上的持續時間變化不會觸發。
    // @see [規範]{@link https://www.w3.org/TR/2011/WD-html5-20110113/video.html#media-element-load-algorithm}
    this.on(player, 'loadstart', updateContent);

    // 還要監聽 timeupdate(在父級中)和 loadedmetadata,因為刪除了它們
    // 監聽器可能破壞了依賴的應用程序/庫。這些
    // 可能會在 7.0 中被移除。
    this.on(player, 'loadedmetadata', updateContent);
  }

  /**
   * 構建默認的 DOM `className`。
   *
   * @return {字符串}
   * 此對象的 DOM `className`。
   */
  buildCSSClass() {
    返回“vjs持續時間”;
  }

  /**
   *更新持續時間顯示。
   *
   * @param {EventTarget~Event} [事件]
   * 導致的 `durationchange`、`timeupdate` 或 `loadedmetadata` 事件
   * 要調用的函數。
   *
   * @listens Player#durationchange
   * @listens Player#timeupdate
   * @listens Player#loadedmetadata
   */
  更新內容(事件){
    const duration = this.player_.duration();

    this.updateTextNode_(持續時間);
  }
}

/**
 * 為屏幕閱讀器用戶添加到 `DurationDisplay` 的文本。
 *
 * @type {字符串}
 * @私人的
 */
DurationDisplay.prototype.labelText_ = '持續時間';

/**
 * 應顯示在 `DurationDisplay` 控件上的文本。添加到本地化。
 *
 * @type {字符串}
 * @私人的
 *
 * @在 v7 中已棄用; controlText_ 不用於非活動顯示組件
 */
DurationDisplay.prototype.controlText_ = '持續時間';

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