/**
* @file duration-display.js
*/
import TimeDisplay from './time-display' ;
import Component from '../../component.js' ;
/**
* Affiche la durée
*
* @extends Component
*/
class DurationDisplay extends TimeDisplay {
/**
* 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) {
super(player, options) ;
const updateContent = (e) => this.updateContent(e) ;
// nous ne voulons pas/nous n'avons pas besoin d'étrangler les changements de durée,
// car ils doivent toujours afficher la durée modifiée en tant que
// il a changé
this.on(player, 'durationchange', updateContent) ;
// Écouter loadstart car la durée du lecteur est réinitialisée lorsqu'un nouvel élément multimédia est chargé,
// mais le changement de durée sur l'agent utilisateur ne sera pas déclenché.
// @see [Spec]{@link https://www.w3.org/TR/2011/WD-html5-20110113/video.html#media-element-load-algorithm}
this.on(player, 'loadstart', updateContent) ;
// Écoute également timeupdate (dans le parent) et loadedmetadata car la suppression de ces éléments est nécessaire
// les auditeurs auraient pu interrompre les applications/bibliothèques dépendantes. Ces
// peut probablement être supprimé pour la version 7.0.
this.on(player, 'loadedmetadata', updateContent) ;
}
/**
* Construit le DOM par défaut `className`.
*
* @return {string}
* Le `nom de classe` du DOM pour cet objet.
*/
buildCSSClass() {
return 'vjs-duration' ;
}
/**
* Affichage de la durée de la mise à jour.
*
* @param {EventTarget~Event} [event]
* L'événement `durationchange`, `timeupdate`, ou `loadedmetadata` qui a causé
* cette fonction doit être appelée.
*
* @listens Player#durationchange
* @listens Player#timeupdate
* @listens Player#loadedmetadata
*/
updateContent(event) {
const duration = this.player_.duration() ;
this.updateTextNode_(duration) ;
}
}
/**
* Texte ajouté à l'affichage de la durée pour les utilisateurs de lecteurs d'écran.
*
* @type {string}
* @private
*/
DurationDisplay.prototype.labelText_ = 'Durée' ;
/**
* Le texte qui doit s'afficher au-dessus des contrôles `DurationDisplay`. Ajouté pour la localisation.
*
* @type {string}
* @private
*
* @deprecated in v7 ; controlText_ n'est pas utilisé dans les composants d'affichage non actifs
*/
DurationDisplay.prototype.controlText_ = 'Durée' ;
Component.registerComponent('DurationDisplay', DurationDisplay) ;
export default DurationDisplay ;