PageSourceSearch

https://www.emilydickinsonmuseum.org/wp-content/plugins/edm-web-tour/js/screenfull.js?ver=5.2.0

js emilydickinsonmuseum.org collected 2026-10-02 03:12:08 UTC 3,828 bytes, 179 lines download raw bytes

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

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.