/**
* @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 ;