/**
 * @file playback-rate-menu-item.js
 */
import MenuItem from '../../menu/menu-item.js' ;
import Component from '../../component.js' ;

/**
 * Le type d'élément de menu spécifique pour la sélection d'un taux de lecture.
 *
 * @extends MenuItem
 */
class PlaybackRateMenuItem extends MenuItem {

  /**
   * Crée une instance de cette classe.
   *
   * @param {Player} player
   *        Le `Player` auquel cette classe doit être attachée.
   *
   * @param {Objet} [options]
   *        La mémoire clé/valeur des options du lecteur.
   */
  constructor(player, options) {
    const label = options.rate ;
    const rate = parseFloat(label, 10) ;

    // Modifier les options pour l'init de la classe MenuItem parente.
    options.label = label ;
    options.selected = rate === player.playbackRate() ;
    options.selectable = true ;
    options.multiSelectable = false ;

    super(player, options) ;

    this.label = label ;
    this.rate = rate ;

    this.on(player, 'ratechange', (e) => this.update(e)) ;
  }

  /**
   * Cette fonction est appelée lorsqu'un élément de menu `PlaybackRateMenuItem` est "cliqué". Voir
   * {@link ClickableComponent} pour des informations plus détaillées sur ce que peut être un clic.
   *
   * @param {EventTarget~Event} [event]
   *        L'événement `keydown`, `tap` ou `click` qui a provoqué l'activation de cette fonction est le suivant
   *        appelé.
   *
   * @listens tap
   * @listens click
   */
  handleClick(event) {
    super.handleClick() ;
    this.player().playbackRate(this.rate) ;
  }

  /**
   * Mettre à jour l'élément de menu PlaybackRate lorsque la vitesse de lecture change.
   *
   * @param {EventTarget~Event} [event]
   *        L'événement `ratechange` qui a provoqué l'exécution de cette fonction.
   *
   * @listens Player#ratechange
   */
  update(event) {
    this.selected(this.player().playbackRate() === this.rate) ;
  }

}

/**
 * Le texte qui doit s'afficher au-dessus des contrôles `PlaybackRateMenuItem`. Ajouté pour la localisation.
 *
 * @type {string}
 * @private
 */
PlaybackRateMenuItem.prototype.contentElType = 'button' ;

Component.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem) ;
exporter l'élément de menu PlaybackRate par défaut ;