/**
* @Datei seek-to-live.js
* /
importiere Button von '../button';
importiere Komponente von '../komponente';
import * as Dom from '../utils/dom.js';
/**
* Zeigt die Live-Anzeige an, wenn die Dauer unendlich ist.
*
* @erweitert Komponente
* /
class SeekToLive extends Button {
/**
* Erzeugt eine Instanz dieser Klasse.
*
* @param {Player} Spieler
* Der `Player`, dem diese Klasse zugeordnet werden soll.
*
* @param {Object} [Optionen]
* Der Schlüssel/Wertspeicher der Playeroptionen.
* /
constructor(spieler, optionen) {
super(Spieler, Optionen);
this.updateLiveEdgeStatus();
if (this.player_.liveTracker) {
this.updateLiveEdgeStatusHandler_ = (e) => this.updateLiveEdgeStatus(e);
this.on(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_);
}
}
/**
* Das DOM-Element der Komponente erstellen
*
* @return {Element}
* Das Element, das erstellt wurde.
* /
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',
textInhalt: this.localize('LIVE')
}, {
aria-hidden": "true
});
el.appendChild(this.textEl_);
zurück el;
}
/**
* Aktualisieren Sie den Status dieser Schaltfläche, wenn wir uns an der Live-Kante befinden
* oder nicht
* /
updateLiveEdgeStatus() {
// Standardmäßig wird der lebende Rand verwendet
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');
}
}
/**
* Ein Klick bringt uns so nah wie möglich an den Live-Punkt.
* Dies setzt voraus, dass wir auf die nächste "live-seekable-change" warten
* ereignis, das alle Sekunden der Segmentlänge eintritt.
* /
handleClick() {
this.player_.liveTracker.seekToLiveEdge();
}
/**
* Entsorgen Sie das Element und beenden Sie die Verfolgung
* /
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);
standard SeekToLive exportieren;