|
@@ -1,6 +1,6 @@
|
|
|
/*!
|
|
|
* screenfull
|
|
|
-* v3.3.2 - 2017-10-27
|
|
|
+* v4.2.0 - 2019-04-01
|
|
|
* (c) Sindre Sorhus; MIT License
|
|
|
*/
|
|
|
(function () {
|
|
@@ -84,29 +84,48 @@
|
|
|
|
|
|
var screenfull = {
|
|
|
request: function (elem) {
|
|
|
- var request = fn.requestFullscreen;
|
|
|
-
|
|
|
- elem = elem || document.documentElement;
|
|
|
-
|
|
|
- // 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 (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
|
|
|
- elem[request]();
|
|
|
- } else {
|
|
|
- elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
|
|
|
- }
|
|
|
+ return new Promise(function (resolve) {
|
|
|
+ var request = fn.requestFullscreen;
|
|
|
+
|
|
|
+ var onFullScreenEntered = function () {
|
|
|
+ this.off('change', onFullScreenEntered);
|
|
|
+ resolve();
|
|
|
+ }.bind(this);
|
|
|
+
|
|
|
+ elem = elem || document.documentElement;
|
|
|
+
|
|
|
+ // 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 (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
|
|
|
+ elem[request]();
|
|
|
+ } else {
|
|
|
+ elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});
|
|
|
+ }
|
|
|
+
|
|
|
+ this.on('change', onFullScreenEntered);
|
|
|
+ }.bind(this));
|
|
|
},
|
|
|
exit: function () {
|
|
|
- document[fn.exitFullscreen]();
|
|
|
+ return new Promise(function (resolve) {
|
|
|
+ if (!this.isFullscreen) {
|
|
|
+ resolve();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var onFullScreenExit = function () {
|
|
|
+ this.off('change', onFullScreenExit);
|
|
|
+ resolve();
|
|
|
+ }.bind(this);
|
|
|
+
|
|
|
+ document[fn.exitFullscreen]();
|
|
|
+
|
|
|
+ this.on('change', onFullScreenExit);
|
|
|
+ }.bind(this));
|
|
|
},
|
|
|
toggle: function (elem) {
|
|
|
- if (this.isFullscreen) {
|
|
|
- this.exit();
|
|
|
- } else {
|
|
|
- this.request(elem);
|
|
|
- }
|
|
|
+ return this.isFullscreen ? this.exit() : this.request(elem);
|
|
|
},
|
|
|
onchange: function (callback) {
|
|
|
this.on('change', callback);
|
|
@@ -162,6 +181,8 @@
|
|
|
|
|
|
if (isCommonjs) {
|
|
|
module.exports = screenfull;
|
|
|
+ // TODO: remove this in the next major version
|
|
|
+ module.exports.default = screenfull;
|
|
|
} else {
|
|
|
window.screenfull = screenfull;
|
|
|
}
|