UNPKG

playable

Version:

Video player based on HTML5Video

135 lines 4.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var fnMap = [ [ 'requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', ], // new WebKit [ 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', ], // old WebKit (Safari 5.1) [ 'webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror', ], [ 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', ], [ 'msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', ], ]; /* ignore coverage */ function getFullScreenFn() { var ret = {}; for (var i = 0; i < fnMap.length; i += 1) { if (fnMap[i][1] in document) { for (var j = 0; j < fnMap[i].length; j += 1) { ret[fnMap[0][j]] = fnMap[i][j]; } return ret; } } return false; } var DesktopFullScreen = /** @class */ (function () { function DesktopFullScreen(elem, callback) { this._$elem = elem; this._callback = callback; this._fullscreenFn = getFullScreenFn(); this._bindEvents(); } Object.defineProperty(DesktopFullScreen.prototype, "isAPIExist", { get: function () { return Boolean(this._fullscreenFn); }, enumerable: false, configurable: true }); Object.defineProperty(DesktopFullScreen.prototype, "isInFullScreen", { get: function () { if (typeof this._fullscreenFn === 'boolean') { return false; } return Boolean(document[this._fullscreenFn.fullscreenElement]); }, enumerable: false, configurable: true }); Object.defineProperty(DesktopFullScreen.prototype, "isEnabled", { get: function () { if (typeof this._fullscreenFn === 'boolean') { return false; } return (this.isAPIExist && document[this._fullscreenFn.fullscreenEnabled]); }, enumerable: false, configurable: true }); DesktopFullScreen.prototype._bindEvents = function () { if (typeof this._fullscreenFn === 'boolean') { return false; } document.addEventListener(this._fullscreenFn.fullscreenchange, this._callback); }; DesktopFullScreen.prototype._unbindEvents = function () { if (typeof this._fullscreenFn === 'boolean') { return false; } document.removeEventListener(this._fullscreenFn.fullscreenchange, this._callback); }; DesktopFullScreen.prototype.request = function () { if (!this.isEnabled) { return; } var request = this._fullscreenFn.requestFullscreen; // Work around Safari 5.1 bug: reports support for // keyboard in fullscreen even though it doesn't. // Browser sniffing, since the alternative with // setTimeout is even worse. if (/5\.1[.\d]* Safari/.test(navigator.userAgent)) { this._$elem[request](); } else { this._$elem[request](Element.ALLOW_KEYBOARD_INPUT); } }; DesktopFullScreen.prototype.exit = function () { if (!this.isEnabled) { return; } document[this._fullscreenFn.exitFullscreen](); }; DesktopFullScreen.prototype.destroy = function () { this._unbindEvents(); this._$elem = null; }; return DesktopFullScreen; }()); exports.default = DesktopFullScreen; //# sourceMappingURL=desktop.js.map