| 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;	}})();
 |