/**
 * @file mouse-time-display.js
 * /
importar componente desde '../../component.js';
importar * como Fn desde '../../utils/fn.js';

import './time-tooltip';

/**
 * El componente {@link MouseTimeDisplay} rastrea el movimiento del mouse sobre el
 * {@enlace ProgressControl}. Muestra un indicador y un {@link TimeTooltip}
 * indicando el tiempo que está representado por un punto dado en el
 * {@enlace ProgressControl}.
 *
 * Componente @extiende
 * /
class MouseTimeDisplay 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);
  }

  /**
   * Crear el elemento DOM para esta clase.
   *
   * @return {Elemento}
   * El elemento que se creó.
   * /
  crearEl() {
    return super.createEl('div', {
      className: 'vjs-mouse-display'
    });
  }

  /**
   * 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) {
    tiempo constante = buscarBarPoint * this.player_.duration();

    this.getChild('timeTooltip').updateTime(seekBarRect, seekBarPoint, time, () => {
      this.el_.style.left = `${seekBarRect.width * seekBarPoint}px`;
    });
  }
}

/**
 * Opciones predeterminadas para `MouseTimeDisplay`
 *
 * @type {Objeto}
 * @privado
 * /
MouseTimeDisplay.prototype.options_ = {
  niños: [
    'timeTooltip'
  ]
};

Component.registerComponent('MouseTimeDisplay', MouseTimeDisplay);
exportar MouseTimeDisplay por defecto;