/**
 * @file big-play-button.js
 * /
importar botón desde './button.js';
importar componente desde './component.js';
importar {isPromise, silentPromise} desde './utils/promise';
importar * como navegador desde './utils/browser.js';

/ **
 * El botón de reproducción inicial que se muestra antes de que se reproduzca el video. El ocultamiento de la
 * `BigPlayButton` se realiza a través de CSS y estados `Player`.
 *
 * Botón @extiende
 * /
clase BigPlayButton extiende Botón {
  constructor(jugador, opciones) {
    super(jugador, opciones);

    this.mouseused_ = false;

    this.on('mousedown', (e) => this.handleMouseDown(e));
  }

  / **
   * Construye el DOM predeterminado `className`.
   *
   * @return {cadena}
   * El DOM `className` para este objeto. Siempre devuelve «vjs-big-play-button».
   * /
  construirClaseCSS() {
    return 'vjs-big-play-button';
  }

  / **
   * Esto se llama cuando se "hace clic" en `BigPlayButton`. Ver {@link ClickableComponent}
   * para obtener información más detallada sobre lo que puede ser un clic.
   *
   * @param {EventTarget~Evento} evento
   * El evento `keydown`, `top` o `click` que hizo que esta función se desactivara
   * llamado.
   *
   * @escucha toca
   * @escucha clic
   * /
  handleClick(evento) {
    const playPromise = this.player_.play();

    // sale temprano si se hace clic con el mouse
    si (este.mouseused_ && evento.clienteX && evento.clienteY) {
      const sourceIsEncrypted = this.player_.usingPlugin('eme') &&
                                this.player_.eme.sessions &&
                                this.player_.eme.sessions.length > 0;

      silencioPromesa(reproducirPromesa);
      si (este.player_.tech(verdadero) &&
         // Hemos observado un error en IE y Edge al reproducir contenido DRM donde
         // llamar a .focus() en el elemento de video hace que el video se vuelva negro,
         // asi lo evitamos en ese caso especifico
         !((browser.IE_VERSION || browser.IS_EDGE) && sourceIsEncrypted)) {
        this.player_.tech(verdadero).focus();
      }
      devolver;
    }

    const cb = this.player_.getChild('barra de control');
    const playToggle = cb && cb.getChild('playToggle');

    si (!jugar Alternar) {
      this.player_.tech(verdadero).focus();
      devolver;
    }

    const playFocus = () => jugarToggle.focus();

    if (esPromesa(jugarPromesa)) {
      playPromise.then(playFocus, () => {});
    } else {
      this.setTimeout(playFocus, 1);
    }
  }

  handleKeyDown(evento) {
    this.mouseused_ = false;

    super.handleKeyDown(evento);
  }

  manejarRatónAbajo(evento) {
    this.mouseused_ = true;
  }
}

/ **
 * El texto que debería mostrarse sobre los controles `BigPlayButton`s. Añadido a para la localización.
 *
 * @tipo {cadena}
 * @privado
 * /
BigPlayButton.prototype.controlText_ = 'Reproducir video';

Component.registerComponent('BotónGranReproducción', BotónGranReproducción);
exportar BigPlayButton predeterminado;