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