/**
 * @archivo play-progress-bar.js
 * /
importar componente desde '../../component.js';
importar {IS_IOS, IS_ANDROID} desde '../../utils/browser.js';
importar * como Fn desde '../../utils/fn.js';

import './time-tooltip';

/**
 * Utilizado por {@link SeekBar} para mostrar el progreso de la reproducción multimedia como parte de la
 * {@enlace ProgressControl}.
 *
 * Componente @extiende
 * /
clase PlayProgressBar extiende Componente {

  /**
   * Crea una instancia de esta clase.
   *
   * @param {Jugador} jugador
   * El {@link Player} 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);
    this.update = Fn.throttle(Fn.bind(this, this.update), Fn.UPDATE_REFRESH_INTERVAL);
  }

  /**
   * Crea el elemento DOM para esta clase.
   *
   * @return {Elemento}
   * El elemento que se creó.
   * /
  crearEl() {
    return super.createEl('div', {
      className: 'vjs-play-progress vjs-slider-bar'
    }, {
      'aria-oculto': 'verdadero'
    });
  }

  /**
   * Pone en cola las actualizaciones de su propio DOM, así como el DOM de su
   * {@link TimeTooltip} niño.
   *
   * @param {Objeto} buscarBarRect
   * El `ClientRect` para el elemento {@link SeekBar}.
   *
   * @param {número} buscarBarPoint
   * Un número del 0 al 1, que representa un punto de referencia horizontal
   * desde el borde izquierdo de la {@link SeekBar}
   * /
  actualizar(buscarBarRect, buscarBarPunto) {
    const timeTooltip = this.getChild('timeTooltip');

    si (! información sobre herramientas de tiempo) {
      devolver;
    }

    const time = (this.player_.scrubbing()) ?
      this.player_.getCache().currentTime :
      this.player_.currentTime();

    timeTooltip.updateTime(seekBarRect, seekBarPoint, tiempo);
  }
}

/**
 * Opciones predeterminadas para {@link PlayProgressBar}.
 *
 * @type {Objeto}
 * @privado
 * /
PlayProgressBar.prototipo.opciones_ = {
  niños: []
};

// La información sobre herramientas de tiempo no debe agregarse a un reproductor en dispositivos móviles
if (!IS_IOS && !IS_ANDROID) {
  PlayProgressBar.prototype.options_.children.push('timeTooltip');
}

Component.registerComponent('PlayProgressBar', PlayProgressBar);
exportar PlayProgressBar predeterminado;