/**
 * @archivo duración-display.js
 * /
importar TimeDisplay desde './time-display';
importar componente desde '../../component.js';

/**
 * Muestra la duración
 *
 * Componente @extiende
 * /
class DurationDisplay extiende TimeDisplay {

  /**
   * Crea una instancia de esta clase.
   *
   * @param {Jugador} jugador
   * El `Jugador` al que se debe adjuntar esta clase.
   *
   * @param {Objeto} [opciones]
   * El almacén de clave/valor de las opciones del jugador.
   * /
  constructor(jugador, opciones) {
    super(jugador, opciones);

    const actualizarContenido = (e) => este.updateContent(e);

    // no queremos/necesitamos acelerar los cambios de duración,
    // ya que siempre deberían mostrar la duración modificada como
    // Ha cambiado
    this.on(player, 'cambio de duración', updateContent);

    // Escuche loadstart porque la duración del reproductor se restablece cuando se carga un nuevo elemento multimedia,
    // pero el cambio de duración en el agente de usuario no se activará.
    // @ver [Spec]{@link https://www.w3.org/TR/2011/WD-html5-20110113/video.html#media-element-load-algorithm}
    this.on(player, 'loadstart', updateContent);

    // También escuche la actualización de tiempo (en el padre) y los metadatos cargados porque los elimina
    // los oyentes podrían haber roto aplicaciones/bibliotecas dependientes. Estos
    // probablemente se puede eliminar para 7.0.
    this.on(player, 'loadedmetadata', updateContent);
  }

  /**
   * Construye el DOM predeterminado `className`.
   *
   * @return {cadena}
   * El DOM `className` para este objeto.
   * /
  construirClaseCSS() {
    return 'vjs-duración';
  }

  /**
   * Actualización de la visualización del tiempo de duración.
   *
   * @param {Objetivo de evento~Evento} [evento]
   * El evento `durationchange`, `timeupdate` o `loadedmetadata` que causó
   * esta función a llamar.
   *
   * @escucha Player#durationchange
   * @escucha Player#timeupdate
   * @escucha Player#loadedmetadata
   * /
  actualizar contenido (evento) {
    const duracion = this.player_.duration();

    this.updateTextNode_(duración);
  }
}

/**
 * El texto que se agrega a `DurationDisplay` para usuarios de lectores de pantalla.
 *
 * @tipo {cadena}
 * @privado
 * /
DurationDisplay.prototype.labelText_ = 'Duración';

/**
 * El texto que debería mostrarse sobre los controles `DurationDisplay`s. Añadido a para la localización.
 *
 * @tipo {cadena}
 * @privado
 *
 * @obsoleto en v7; controlText_ no se usa en componentes de visualización no activos
 * /
DurationDisplay.prototype.controlText_ = 'Duración';

Component.registerComponent('DuraciónVisualización', DuraciónVisualización);
exportar visualización de duración predeterminada;