PageSourceSearch

https://www.courselets.org/static/bower_components/screenfull/src/screenfull.js

js courselets.org collected 2026-09-30 03:11:26 UTC 3,457 bytes, 163 lines download raw bytes

vendor: 3,457 bytes, lines 1-163
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			var request = fn.requestFullscreen;
83
84			elem = elem || document.documentElement;
85
86			// Work around Safari 5.1 bug: reports support for
87			// keyboard in fullscreen even though it doesn't.
88			// Browser sniffing, since the alternative with
89			// setTimeout is even worse.
90			if (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
91				elem[request]();
92			} else {
93				elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});
94			}
95		},
96		exit: function () {
97			document[fn.exitFullscreen]();
98		},
99		toggle: function (elem) {
100			if (this.isFullscreen) {
101				this.exit();
102			} else {
103				this.request(elem);
104			}
105		},
106		onchange: function (callback) {
107			this.on('change', callback);
108		},
109		onerror: function (callback) {
110			this.on('error', callback);
111		},
112		on: function (event, callback) {
113			var eventName = eventNameMap[event];
114			if (eventName) {
115				document.addEventListener(eventName, callback, false);
116			}
117		},
118		off: function (event, callback) {
119			var eventName = eventNameMap[event];
120			if (eventName) {
121				document.removeEventListener(eventName, callback, false);
122			}
123		},
124		raw: fn
125	};
126
127	if (!fn) {
128		if (isCommonjs) {
129			module.exports = false;
130		} else {
131			window.screenfull = false;
132		}
133
134		return;
135	}
136
137	Object.defineProperties(screenfull, {
138		isFullscreen: {
139			get: function () {
140				return Boolean(document[fn.fullscreenElement]);
141			}
142		},
143		element: {
144			enumerable: true,
145			get: function () {
146				return document[fn.fullscreenElement];
147			}
148		},
149		enabled: {
150			enumerable: true,
151			get: function () {
152				// Coerce to boolean in case of old WebKit
153				return Boolean(document[fn.fullscreenEnabled]);
154			}
155		}
156	});
157
158	if (isCommonjs) {
159		module.exports = screenfull;
160	} else {
161		window.screenfull = screenfull;
162	}
163})();

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.