/**
 * @Datei close-button.js
 * /
importiere Button von './button';
importiere Komponente von './komponente';
import keycode from 'keycode';

/**
 * Der `CloseButton` ist ein `{@link Button}`, der ein `close` Ereignis auslöst, wenn
 * es wird angeklickt.
 *
 * @erweitert Button
 * /
class CloseButton extends Button {

  /**
  * Erzeugt eine Instanz der Klasse this.
  *
  * @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.controlText(options && options.controlText || this.localize('Close'));
  }

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

  /**
   * Diese Funktion wird aufgerufen, wenn ein `CloseButton` angeklickt wird. Sehen
   * {@link ClickableComponent#handleClick} für weitere Informationen darüber, wann
   * wird dies ausgelöst
   *
   * @param {EventTarget~Event} event
   *        Das `Keydown`-, `Tap`- oder `Click`-Ereignis, das diese Funktion ausgelöst hat
   *        genannt.
   *
   * @listens tap
   * @listens klicken
   * @fires CloseButton#close
   * /
  handleClick(event) {

    /**
     * Wird ausgelöst, wenn ein `CloseButton` angeklickt wird.
     *
     * @event CloseButton#close
     * @Typ {EventTarget~Event}
     *
     * @property {boolean} [bubbles=false]
     *           auf false gesetzt, so dass das Schließereignis nicht
     *           an die Eltern herantreten, wenn es keinen Zuhörer gibt
     * /
    this.trigger({type: 'close', bubbles: false});
  }
  /**
   * Ereignishandler, der aufgerufen wird, wenn ein `CloseButton` eine
   * ereignis "Abbruch".
   *
   * Wenn die Taste Esc ist, wird standardmäßig ein "Klick"-Ereignis ausgelöst.
   *
   * @param {EventTarget~Event} event
   *        Das "Keydown"-Ereignis, das zum Aufruf dieser Funktion geführt hat.
   *
   * @listens keydown
   * /
  handleKeyDown(event) {
    // Die Esc-Taste löst das Ereignis `Klick` aus
    if (keycode.isEventKey(event, 'Esc')) {
      event.preventDefault();
      event.stopPropagation();
      this.trigger('click');
    } else {
      // Übergabe der Tastendruckbehandlung für nicht unterstützte Tasten
      super.handleKeyDown(event);
    }
  }
}

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