mirror of
https://github.com/videojs/video.js.git
synced 2025-04-13 11:50:49 +02:00
95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
/**
|
|
* @file fullscreen-toggle.js
|
|
*/
|
|
import Button from '../button.js';
|
|
import Component from '../component.js';
|
|
import document from 'global/document';
|
|
|
|
/**
|
|
* @typedef { import('./player').default } Player
|
|
*/
|
|
|
|
/**
|
|
* Toggle fullscreen video
|
|
*
|
|
* @extends Button
|
|
*/
|
|
class FullscreenToggle extends Button {
|
|
|
|
/**
|
|
* Creates an instance of this class.
|
|
*
|
|
* @param {Player} player
|
|
* The `Player` that this class should be attached to.
|
|
*
|
|
* @param {Object} [options]
|
|
* The key/value store of player options.
|
|
*/
|
|
constructor(player, options) {
|
|
super(player, options);
|
|
this.on(player, 'fullscreenchange', (e) => this.handleFullscreenChange(e));
|
|
|
|
if (document[player.fsApi_.fullscreenEnabled] === false) {
|
|
this.disable();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Builds the default DOM `className`.
|
|
*
|
|
* @return {string}
|
|
* The DOM `className` for this object.
|
|
*/
|
|
buildCSSClass() {
|
|
return `vjs-fullscreen-control ${super.buildCSSClass()}`;
|
|
}
|
|
|
|
/**
|
|
* Handles fullscreenchange on the player and change control text accordingly.
|
|
*
|
|
* @param {Event} [event]
|
|
* The {@link Player#fullscreenchange} event that caused this function to be
|
|
* called.
|
|
*
|
|
* @listens Player#fullscreenchange
|
|
*/
|
|
handleFullscreenChange(event) {
|
|
if (this.player_.isFullscreen()) {
|
|
this.controlText('Exit Fullscreen');
|
|
} else {
|
|
this.controlText('Fullscreen');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This gets called when an `FullscreenToggle` is "clicked". See
|
|
* {@link ClickableComponent} for more detailed information on what a click can be.
|
|
*
|
|
* @param {Event} [event]
|
|
* The `keydown`, `tap`, or `click` event that caused this function to be
|
|
* called.
|
|
*
|
|
* @listens tap
|
|
* @listens click
|
|
*/
|
|
handleClick(event) {
|
|
if (!this.player_.isFullscreen()) {
|
|
this.player_.requestFullscreen();
|
|
} else {
|
|
this.player_.exitFullscreen();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* The text that should display over the `FullscreenToggle`s controls. Added for localization.
|
|
*
|
|
* @type {string}
|
|
* @protected
|
|
*/
|
|
FullscreenToggle.prototype.controlText_ = 'Fullscreen';
|
|
|
|
Component.registerComponent('FullscreenToggle', FullscreenToggle);
|
|
export default FullscreenToggle;
|