forked from component/fullscreen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
90 lines (70 loc) · 1.67 KB
/
index.js
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**
* Module dependencies.
*/
var Emitter = require('emitter');
/**
* Expose `fullscreen()`.
*/
exports = module.exports = fullscreen;
/**
* Mixin emitter.
*/
Emitter(exports);
/**
* document element.
*/
var element = document.documentElement;
/**
* fullscreen supported flag.
*/
exports.supported = !!(element.requestFullscreen
|| element.webkitRequestFullscreen
|| element.mozRequestFullScreen);
/**
* If the window is displayed in full screen mode or not.
*/
exports.isFullscreen = document.fullscreen
|| document.mozFullScreen
|| document.webkitIsFullScreen
|| false;
/**
* Enter fullscreen mode for `el`.
*
* @param {Element} [el]
* @api public
*/
function fullscreen(el){
el = el || element;
if (el.requestFullscreen) return el.requestFullscreen();
if (el.mozRequestFullScreen) return el.mozRequestFullScreen();
if (el.webkitRequestFullscreen) return el.webkitRequestFullscreen();
}
/**
* Exit fullscreen.
*
* @api public
*/
exports.exit = function(){
var doc = document;
if (doc.exitFullscreen) return doc.exitFullscreen();
if (doc.mozCancelFullScreen) return doc.mozCancelFullScreen();
if (doc.webkitCancelFullScreen) return doc.webkitCancelFullScreen();
};
/**
* Change handler function.
*/
function change(prop) {
return function(){
var val = document[prop];
exports.isFullscreen = val;
exports.emit('change', val);
}
}
/**
* Handle events.
*/
if (document.addEventListener) {
document.addEventListener('fullscreenchange', change('fullscreen'));
document.addEventListener('mozfullscreenchange', change('mozFullScreen'));
document.addEventListener('webkitfullscreenchange', change('webkitIsFullScreen'));
}