/**
 * @file duration-display.js
 */
'./time-display'에서 TimeDisplay 가져오기;
'../../component.js'에서 컴포넌트 가져오기;

/**
 * 기간을 표시합니다
 *
 * @extends 컴포넌트
 */
클래스 DurationDisplay는 TimeDisplay {를 확장합니다.

  /**
   * 이 클래스의 인스턴스를 만듭니다.
   *
   * @param {플레이어} 플레이어
   * 이 클래스가 연결되어야 하는 `Player`.
   *
   * @param {객체} [옵션]
   * 플레이어 옵션의 키/값 저장소.
   */
  생성자(플레이어, 옵션) {
    super(플레이어, 옵션);

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

    // 지속 시간 변경을 조절하고 싶지 않거나 필요하지 않습니다.
    // 항상 변경된 기간을 다음과 같이 표시해야 하므로
    // 변경되었습니다
    this.on(player, 'durationchange', updateContent);

    // 새 미디어 요소가 로드되면 플레이어 지속 시간이 재설정되므로 loadstart를 수신합니다.
    // 그러나 사용자 에이전트의 durationchange는 실행되지 않습니다.
    // @[사양] 참조{@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 {이벤트대상~이벤트} [이벤트]
   * 원인이 된 `durationchange`, `timeupdate` 또는 `loadedmetadata` 이벤트
   * 호출할 함수입니다.
   *
   * @listens Player#durationchange
   * @listens Player#timeupdate
   * @listens Player#loadedmetadata
   */
  업데이트 콘텐츠(이벤트) {
    지속 시간 = this.player_.duration();

    this.updateTextNode_(기간);
  }
}

/**
 * 스크린 리더 사용자를 위해 `DurationDisplay`에 추가되는 텍스트입니다.
 *
 * @유형 {문자열}
 * @사적인
 */
DurationDisplay.prototype.labelText_ = '기간';

/**
 * `DurationDisplay` 컨트롤 위에 표시되어야 하는 텍스트입니다. 현지화를 위해 추가되었습니다.
 *
 * @유형 {문자열}
 * @사적인
 *
 * @v7에서는 더 이상 사용되지 않습니다. controlText_는 비활성 디스플레이 구성 요소에서 사용되지 않습니다.
 */
DurationDisplay.prototype.controlText_ = '기간';

Component.registerComponent('DurationDisplay', DurationDisplay);
기본 DurationDisplay 내보내기;