/**
 * @file play-progress-bar.js
 */
import Component from '../../component.js' ;
import {IS_IOS, IS_ANDROID} from '../../utils/browser.js' ;
import * as Fn from '../../utils/fn.js' ;

import './time-tooltip' ;

/**
 * Utilisé par {@link SeekBar} pour afficher la progression de la lecture d'un média dans le cadre de la fonction
 * {@link ProgressControl}.
 *
 * @extends Component
 */
class PlayProgressBar extends Component {

  /**
   * Crée une instance de cette classe.
   *
   * @param {Player} player
   *        Le {@link Player} auquel cette classe doit être attachée.
   *
   * @param {Objet} [options]
   *        La mémoire clé/valeur des options du lecteur.
   */
  constructor(player, options) {
    super(player, options) ;
    this.update = Fn.throttle(Fn.bind(this, this.update), Fn.UPDATE_REFRESH_INTERVAL) ;
  }

  /**
   * Crée l'élément DOM pour cette classe.
   *
   * @return {Element}
   *         L'élément qui a été créé.
   */
  createEl() {
    return super.createEl('div', {
      className : 'vjs-play-progress vjs-slider-bar'
    }, {
      aria-hidden" : "true" (vrai)
    }) ;
  }

  /**
   * Enqueues updates to its own DOM as well as the DOM of its
   * {@link TimeTooltip} child.
   *
   * @param {Object} seekBarRect
   *        Le `ClientRect` de l'élément {@link SeekBar}.
   *
   * @param {number} seekBarPoint
   *        Un nombre compris entre 0 et 1, représentant un point de référence horizontal
   *        à partir du bord gauche de la {@link SeekBar}
   */
  update(seekBarRect, seekBarPoint) {
    const timeTooltip = this.getChild('timeTooltip') ;

    if (!timeTooltip) {
      retour ;
    }

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

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

/**
 * Options par défaut pour {@link PlayProgressBar}.
 *
 * @type {Objet}
 * @private
 */
PlayProgressBar.prototype.options_ = {
  enfants : []
};

// Les infobulles temporelles ne doivent pas être ajoutées au lecteur sur les appareils mobiles
if (!IS_IOS && !IS_ANDROID) {
  PlayProgressBar.prototype.options_.children.push('timeTooltip') ;
}

Component.registerComponent('PlayProgressBar', PlayProgressBar) ;
exporter la PlayProgressBar par défaut ;