PageSourceSearch

https://academy.mlcto.com/wp-content/plugins/haru-vidi/assets/libraries/screenfull/screenfull.js

js mlcto.com collected 2026-10-09 16:53:43 UTC 4,145 bytes, 188 lines download raw bytes

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

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.