/**
* @archivo play-toggle.js
* /
importar botón desde '../button.js';
importar componente desde '../component.js';
importar {silencePromise} desde '../utils/promise';
/**
* Botón para alternar entre reproducción y pausa.
*
* Botón @extiende
* /
clase PlayToggle extiende Botón {
/**
* Crea una instancia de esta clase.
*
* @param {Jugador} jugador
* El `Jugador` al que se debe adjuntar esta clase.
*
* @param {Objeto} [opciones={}]
* El almacén de clave/valor de las opciones del jugador.
* /
constructor(jugador, opciones = {}) {
super(jugador, opciones);
// mostrar u ocultar el icono de reproducción
options.replay = options.replay === indefinido || opciones.repetir;
this.on(jugador, 'jugar', (e) => this.handlePlay(e));
this.on(jugador, 'pausa', (e) => this.handlePause(e));
if (opciones.repetir) {
this.on(jugador, 'terminado', (e) => this.handleEnded(e));
}
}
/**
* Construye el DOM predeterminado `className`.
*
* @return {cadena}
* El DOM `className` para este objeto.
* /
construirClaseCSS() {
devuelve `vjs-play-control ${super.buildCSSClass()}`;
}
/**
* Esto se llama cuando se "hace clic" en `PlayToggle`. Ver
* {@link ClickableComponent} para obtener información más detallada sobre lo que puede ser un clic.
*
* @param {Objetivo de evento~Evento} [evento]
* El evento `keydown`, `top` o `click` que hizo que esta función se desactivara
* llamado.
*
* @escucha toca
* @escucha clic
* /
handleClick(evento) {
if (este.jugador_.pausado()) {
PromesaSilencio(este.jugador_.jugar());
} else {
este.jugador_.pausa();
}
}
/**
* Esto se llama una vez que el video ha terminado y el usuario busca para que
* podemos cambiar el botón de reproducción de nuevo a un botón de reproducción.
*
* @param {Objetivo de evento~Evento} [evento]
* El evento que provocó la ejecución de esta función.
*
* @escucha Player#buscado
* /
manejarBuscado(evento) {
this.removeClass('vjs-terminado');
if (este.jugador_.pausado()) {
this.handlePause(evento);
} else {
this.handlePlay(evento);
}
}
/**
* Agregue la clase vjs-playing al elemento para que pueda cambiar de apariencia.
*
* @param {Objetivo de evento~Evento} [evento]
* El evento que provocó la ejecución de esta función.
*
* @escucha Player#play
* /
handlePlay(evento) {
this.removeClass('vjs-terminado');
this.removeClass('vjs-paused');
this.addClass('vjs-jugando');
// cambia el texto del botón a "Pausa"
this.controlText('Pausa');
}
/**
* Agregue la clase pausada de vjs al elemento para que pueda cambiar de apariencia.
*
* @param {Objetivo de evento~Evento} [evento]
* El evento que provocó la ejecución de esta función.
*
* @escucha jugador#pausa
* /
handlePause(evento) {
this.removeClass('vjs-jugando');
this.addClass('vjs-paused');
// cambia el texto del botón a "Jugar"
this.controlText('Reproducir');
}
/**
* Agregue la clase terminada en vjs al elemento para que pueda cambiar de apariencia
*
* @param {Objetivo de evento~Evento} [evento]
* El evento que provocó la ejecución de esta función.
*
* @escucha Player#finalizado
* /
handleEnded(evento) {
this.removeClass('vjs-jugando');
this.addClass('vjs-terminado');
// cambia el texto del botón a "Reproducir"
this.controlText('Reproducir');
// en la próxima búsqueda elimina el botón de reproducción
this.one(this.player_, 'buscado', (e) => this.handleSeeked(e));
}
}
/**
* El texto que debería mostrarse sobre los controles de `PlayToggle`. Añadido para la localización.
*
* @tipo {cadena}
* @privado
* /
PlayToggle.prototype.controlText_ = 'Reproducir';
Component.registerComponent('PlayToggle', PlayToggle);
exportar PlayToggle predeterminado;