PageSourceSearch

https://imeureka.com/global/vendor/screenfull/screenfull.js

js imeureka.com collected 2026-10-08 21:07:14 UTC 3,853 bytes, 177 lines download raw bytes

vendor: 3,853 bytes, lines 1-177
1/*!
2* screenfull
3* v3.3.2 - 2017-10-27
4* (c) Sindre Sorhus; MIT License
5*/
6(function () {
7	'use strict';
8
9	var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};
10	var isCommonjs = typeof module !== 'undefined' && module.exports;
11	var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;
12
13	var fn = (function () {
14		var val;
15
16		var fnMap = [
17			[
18				'requestFullscreen',
19				'exitFullscreen',
20				'fullscreenElement',
21				'fullscreenEnabled',
22				'fullscreenchange',
23				'fullscreenerror'
24			],
25			// New WebKit
26			[
27				'webkitRequestFullscreen',
28				'webkitExitFullscreen',
29				'webkitFullscreenElement',
30				'webkitFullscreenEnabled',
31				'webkitfullscreenchange',
32				'webkitfullscreenerror'
33
34			],
35			// Old WebKit (Safari 5.1)
36			[
37				'webkitRequestFullScreen',
38				'webkitCancelFullScreen',
39				'webkitCurrentFullScreenElement',
40				'webkitCancelFullScreen',
41				'webkitfullscreenchange',
42				'webkitfullscreenerror'
43
44			],
45			[
46				'mozRequestFullScreen',
47				'mozCancelFullScreen',
48				'mozFullScreenElement',
49				'mozFullScreenEnabled',
50				'mozfullscreenchange',
51				'mozfullscreenerror'
52			],
53			[
54				'msRequestFullscreen',
55				'msExitFullscreen',
56				'msFullscreenElement',
57				'msFullscreenEnabled',
58				'MSFullscreenChange',
59				'MSFullscreenError'
60			]
61		];
62
63		var i = 0;
64		var l = fnMap.length;
65		var ret = {};
66
67		for (; i < l; i++) {
68			val = fnMap[i];
69			if (val && val[1] in document) {
70				for (i = 0; i < val.length; i++) {
71					ret[fnMap[0][i]] = val[i];
72				}
73				return ret;
74			}
75		}
76
77		return false;
78	})();
79
80	var eventNameMap = {
81		change: fn.fullscreenchange,
82		error: fn.fullscreenerror
83	};
84
85	var screenfull = {
86		request: function (elem) {
87			var request = fn.requestFullscreen;
88
89			elem = elem || document.documentElement;
90
91			// Work around Safari 5.1 bug: reports support for
92			// keyboard in fullscreen even though it doesn't.
93			// Browser sniffing, since the alternative with
94			// setTimeout is even worse.
95			if (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
96				elem[request]();
97			} else {
98				if (elem.requestFullscreen) {
99				    elem.requestFullscreen();
100				} else if (elem.webkitRequestFullScreen) {
101				    elem.webkitRequestFullScreen();
102				} else if (elem.mozRequestFullScreen) {
103				    elem.mozRequestFullScreen();
104				} else if (elem.msRequestFullscreen) {
105				    elem.msRequestFullscreen();
106			  	}
107				//elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT);
108			}
109		},
110		exit: function () {
111			document[fn.exitFullscreen]();
112		},
113		toggle: function (elem) {
114			if (this.isFullscreen) {
115				this.exit();
116			} else {
117				this.request(elem);
118			}
119		},
120		onchange: function (callback) {
121			this.on('change', callback);
122		},
123		onerror: function (callback) {
124			this.on('error', callback);
125		},
126		on: function (event, callback) {
127			var eventName = eventNameMap[event];
128			if (eventName) {
129				document.addEventListener(eventName, callback, false);
130			}
131		},
132		off: function (event, callback) {
133			var eventName = eventNameMap[event];
134			if (eventName) {
135				document.removeEventListener(eventName, callback, false);
136			}
137		},
138		raw: fn
139	};
140
141	if (!fn) {
142		if (isCommonjs) {
143			module.exports = false;
144		} else {
145			window.screenfull = false;
146		}
147
148		return;
149	}
150
151	Object.defineProperties(screenfull, {
152		isFullscreen: {
153			get: function () {
154				return Boolean(document[fn.fullscreenElement]);
155			}
156		},
157		element: {
158			enumerable: true,
159			get: function () {
160				return document[fn.fullscreenElement];
161			}
162		},
163		enabled: {
164			enumerable: true,
165			get: function () {
166				// Coerce to boolean in case of old WebKit
167				return Boolean(document[fn.fullscreenEnabled]);
168			}
169		}
170	});
171
172	if (isCommonjs) {
173		module.exports = screenfull;
174	} else {
175		window.screenfull = screenfull;
176	}
177})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.