/**
 * @Datei dauer-anzeige.js
 * /
import TimeDisplay from './time-display';
importiere Komponente aus '../../component.js';

/**
 * Zeigt die Dauer an
 *
 * @erweitert Komponente
 * /
class DurationDisplay extends TimeDisplay {

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

    const updateContent = (e) => this.updateContent(e);

    // Wir wollen/müssen die Daueränderungen nicht drosseln,
    // denn sie sollten die geänderte Dauer immer als
    // es hat sich geändert
    this.on(player, 'durationchange', updateContent);

    // Hören Sie auf loadstart, da die Playerdauer zurückgesetzt wird, wenn ein neues Medienelement geladen wird,
    // aber die Daueränderung auf dem Benutzeragenten wird nicht ausgelöst.
    // @see [Spec]{@link https://www.w3.org/TR/2011/WD-html5-20110113/video.html#media-element-load-algorithm}
    this.on(player, 'loadstart', updateContent);

    // Achten Sie auch auf timeupdate (im übergeordneten System) und loadedmetadata, da das Entfernen dieser
    // Hörer könnten abhängige Anwendungen/Bibliotheken beschädigt haben. Diese
    // kann wahrscheinlich für 7.0 entfernt werden.
    this.on(player, 'loadedmetadata', updateContent);
  }

  /**
   * Erzeugt den Standard-DOM "Klassenname".
   *
   * @return {string}
   *         Der DOM `className` für dieses Objekt.
   * /
  buildCSSClass() {
    return 'vjs-duration';
  }

  /**
   * Aktualisieren Sie die Anzeige der Zeitdauer.
   *
   * @param {EventTarget~Event} [event]
   *        Das Ereignis `durationchange`, `timeupdate` oder `loadedmetadata`, das die
   *        diese Funktion aufgerufen werden soll.
   *
   * @listens Player#durationchange
   * @listens Player#timeupdate
   * @listens Player#loadedmetadata
   * /
  updateContent(event) {
    const duration = this.player_.duration();

    this.updateTextNode_(Dauer);
  }
}

/**
 * Der Text, der für Benutzer von Bildschirmlesegeräten zu `DurationDisplay` hinzugefügt wird.
 *
 * @Typ {String}
 * @privat
 * /
DurationDisplay.prototype.labelText_ = 'Dauer';

/**
 * Der Text, der über den Steuerelementen von "DurationDisplay" angezeigt werden soll. Zugefügt für die Lokalisierung.
 *
 * @Typ {String}
 * @privat
 *
 * @veraltet in v7; controlText_ wird in nicht aktiven Anzeigekomponenten nicht verwendet
 * /
DurationDisplay.prototype.controlText_ = 'Dauer';

Component.registerComponent('DurationDisplay', DurationDisplay);
standardmäßig exportieren DurationDisplay;