| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 
							- /*!
 
- * screenfull
 
- * v4.2.1 - 2019-07-27
 
- * (c) Sindre Sorhus; MIT License
 
- */
 
- (function () {
 
- 	'use strict';
 
- 	var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};
 
- 	var isCommonjs = typeof module !== 'undefined' && module.exports;
 
- 	var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;
 
- 	var fn = (function () {
 
- 		var val;
 
- 		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'
 
- 			]
 
- 		];
 
- 		var i = 0;
 
- 		var l = fnMap.length;
 
- 		var ret = {};
 
- 		for (; i < l; i++) {
 
- 			val = fnMap[i];
 
- 			if (val && val[1] in document) {
 
- 				for (i = 0; i < val.length; i++) {
 
- 					ret[fnMap[0][i]] = val[i];
 
- 				}
 
- 				return ret;
 
- 			}
 
- 		}
 
- 		return false;
 
- 	})();
 
- 	var eventNameMap = {
 
- 		change: fn.fullscreenchange,
 
- 		error: fn.fullscreenerror
 
- 	};
 
- 	var screenfull = {
 
- 		request: function (elem) {
 
- 			return new Promise(function (resolve, reject) {
 
- 				var request = fn.requestFullscreen;
 
- 				var onFullScreenEntered = function () {
 
- 					this.off('change', onFullScreenEntered);
 
- 					resolve();
 
- 				}.bind(this);
 
- 				this.on('change', onFullScreenEntered);
 
- 				elem = elem || document.documentElement;
 
- 				var promise;
 
- 				// 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)) {
 
- 					promise = elem[request]();
 
- 				} else {
 
- 					promise = elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});
 
- 				}
 
- 				Promise.resolve(promise).catch(reject);
 
- 			}.bind(this));
 
- 		},
 
- 		exit: function () {
 
- 			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) {
 
- 			return this.isFullscreen ? this.exit() : this.request(elem);
 
- 		},
 
- 		onchange: function (callback) {
 
- 			this.on('change', callback);
 
- 		},
 
- 		onerror: function (callback) {
 
- 			this.on('error', callback);
 
- 		},
 
- 		on: function (event, callback) {
 
- 			var eventName = eventNameMap[event];
 
- 			if (eventName) {
 
- 				document.addEventListener(eventName, callback, false);
 
- 			}
 
- 		},
 
- 		off: function (event, callback) {
 
- 			var eventName = eventNameMap[event];
 
- 			if (eventName) {
 
- 				document.removeEventListener(eventName, callback, false);
 
- 			}
 
- 		},
 
- 		raw: fn
 
- 	};
 
- 	if (!fn) {
 
- 		if (isCommonjs) {
 
- 			module.exports = false;
 
- 		} else {
 
- 			window.screenfull = false;
 
- 		}
 
- 		return;
 
- 	}
 
- 	Object.defineProperties(screenfull, {
 
- 		isFullscreen: {
 
- 			get: function () {
 
- 				return Boolean(document[fn.fullscreenElement]);
 
- 			}
 
- 		},
 
- 		element: {
 
- 			enumerable: true,
 
- 			get: function () {
 
- 				return document[fn.fullscreenElement];
 
- 			}
 
- 		},
 
- 		enabled: {
 
- 			enumerable: true,
 
- 			get: function () {
 
- 				// Coerce to boolean in case of old WebKit
 
- 				return Boolean(document[fn.fullscreenEnabled]);
 
- 			}
 
- 		}
 
- 	});
 
- 	if (isCommonjs) {
 
- 		module.exports = screenfull;
 
- 		// TODO: remove this in the next major version
 
- 		module.exports.default = screenfull;
 
- 	} else {
 
- 		window.screenfull = screenfull;
 
- 	}
 
- })();
 
 
  |