/**
* @file seek-to-live.js
*/
import Button from '../button' ;
import Component from '../component' ;
import * as Dom from '../utils/dom.js' ;
/**
* Affiche l'indicateur en direct lorsque la durée est Infini.
*
* @extends Component
*/
class SeekToLive extends Button {
/**
* 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) ;
this.updateLiveEdgeStatus() ;
if (this.player_.liveTracker) {
this.updateLiveEdgeStatusHandler_ = (e) => this.updateLiveEdgeStatus(e) ;
this.on(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_) ;
}
}
/**
* Créer l'élément DOM du `Composant`
*
* @return {Element}
* L'élément qui a été créé.
*/
createEl() {
const el = super.createEl('button', {
className : 'vjs-seek-to-live-control vjs-control'
}) ;
this.textEl_ = Dom.createEl('span', {
className : 'vjs-seek-to-live-text',
textContent : this.localize('LIVE')
}, {
aria-hidden" : "true" (vrai)
}) ;
el.appendChild(this.textEl_) ;
return el ;
}
/**
* Mettre à jour l'état de ce bouton si l'on se trouve au bord de l'écran
* ou non
*/
updateLiveEdgeStatus() {
// par défaut, le bord vivant
if (!this.player_.liveTracker || this.player_.liveTracker.atLiveEdge()) {
this.setAttribute('aria-disabled', true) ;
this.addClass('vjs-at-live-edge') ;
this.controlText('Seek to live, currently playing live') ;
} else {
this.setAttribute('aria-disabled', false) ;
this.removeClass('vjs-at-live-edge') ;
this.controlText('Seek to live, currently behind live') ;
}
}
/**
* En cliquant, nous nous rapprochons le plus possible du point de contact.
* Pour ce faire, nous devons attendre le prochain "changement à rechercher en direct
* qui se produira toutes les secondes de longueur de segment.
*/
handleClick() {
this.player_.liveTracker.seekToLiveEdge() ;
}
/**
* Éliminer l'élément et arrêter le suivi
*/
dispose() {
if (this.player_.liveTracker) {
this.off(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_) ;
}
this.textEl_ = null ;
super.dispose() ;
}
}
SeekToLive.prototype.controlText_ = "Seek to live, currently playing live" ;
Component.registerComponent('SeekToLive', SeekToLive) ;
export default SeekToLive ;