-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathfscreen.js
More file actions
70 lines (64 loc) · 2.31 KB
/
fscreen.js
File metadata and controls
70 lines (64 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const key = {
fullscreenEnabled: 0,
fullscreenElement: 1,
requestFullscreen: 2,
exitFullscreen: 3,
fullscreenchange: 4,
fullscreenerror: 5,
fullscreen: 6,
};
const webkit = [
'webkitFullscreenEnabled',
'webkitFullscreenElement',
'webkitRequestFullscreen',
'webkitExitFullscreen',
'webkitfullscreenchange',
'webkitfullscreenerror',
'-webkit-full-screen',
];
const moz = [
'mozFullScreenEnabled',
'mozFullScreenElement',
'mozRequestFullScreen',
'mozCancelFullScreen',
'mozfullscreenchange',
'mozfullscreenerror',
'-moz-full-screen',
];
const ms = [
'msFullscreenEnabled',
'msFullscreenElement',
'msRequestFullscreen',
'msExitFullscreen',
'MSFullscreenChange',
'MSFullscreenError',
'-ms-fullscreen',
];
// so it doesn't throw if no window or document
const document =
typeof window !== 'undefined' && typeof window.document !== 'undefined'
? window.document
: {};
const vendor =
('fullscreenEnabled' in document && Object.keys(key)) ||
(webkit[0] in document && webkit) ||
(moz[0] in document && moz) ||
(ms[0] in document && ms) ||
[];
// prettier-ignore
export default {
requestFullscreen: element => element[vendor[key.requestFullscreen]](),
requestFullscreenFunction: element => element[vendor[key.requestFullscreen]],
get exitFullscreen() { return document[vendor[key.exitFullscreen]].bind(document); },
get fullscreenPseudoClass() { return `:${vendor[key.fullscreen]}`; },
addEventListener: (type, handler, options) => document.addEventListener(vendor[key[type]], handler, options),
removeEventListener: (type, handler, options) => document.removeEventListener(vendor[key[type]], handler, options),
get fullscreenEnabled() { return Boolean(document[vendor[key.fullscreenEnabled]]); },
set fullscreenEnabled(val) {},
get fullscreenElement() { return document[vendor[key.fullscreenElement]]; },
set fullscreenElement(val) {},
get onfullscreenchange() { return document[`on${vendor[key.fullscreenchange]}`.toLowerCase()]; },
set onfullscreenchange(handler) { return document[`on${vendor[key.fullscreenchange]}`.toLowerCase()] = handler; },
get onfullscreenerror() { return document[`on${vendor[key.fullscreenerror]}`.toLowerCase()]; },
set onfullscreenerror(handler) { return document[`on${vendor[key.fullscreenerror]}`.toLowerCase()] = handler; },
};