|
1 (function (root, factory) { |
|
2 if (typeof define === 'function' && define.amd) { |
|
3 // AMD. Register as an anonymous module unless amdModuleId is set |
|
4 define('screenfull', [], function () { |
|
5 return (root['screenfull'] = factory()); |
|
6 }); |
|
7 } else if (typeof exports === 'object') { |
|
8 // Node. Does not work with strict CommonJS, but |
|
9 // only CommonJS-like environments that support module.exports, |
|
10 // like Node. |
|
11 module.exports = factory(); |
|
12 } else { |
|
13 root['screenfull'] = factory(); |
|
14 } |
|
15 }(this, function () { |
|
16 |
|
17 /*! |
|
18 * screenfull |
|
19 * v2.0.0 - 2014-12-22 |
|
20 * (c) Sindre Sorhus; MIT License |
|
21 */ |
|
22 (function () { |
|
23 'use strict'; |
|
24 |
|
25 var isCommonjs = typeof module !== 'undefined' && module.exports; |
|
26 var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element; |
|
27 |
|
28 var fn = (function () { |
|
29 var val; |
|
30 var valLength; |
|
31 |
|
32 var fnMap = [ |
|
33 [ |
|
34 'requestFullscreen', |
|
35 'exitFullscreen', |
|
36 'fullscreenElement', |
|
37 'fullscreenEnabled', |
|
38 'fullscreenchange', |
|
39 'fullscreenerror' |
|
40 ], |
|
41 // new WebKit |
|
42 [ |
|
43 'webkitRequestFullscreen', |
|
44 'webkitExitFullscreen', |
|
45 'webkitFullscreenElement', |
|
46 'webkitFullscreenEnabled', |
|
47 'webkitfullscreenchange', |
|
48 'webkitfullscreenerror' |
|
49 |
|
50 ], |
|
51 // old WebKit (Safari 5.1) |
|
52 [ |
|
53 'webkitRequestFullScreen', |
|
54 'webkitCancelFullScreen', |
|
55 'webkitCurrentFullScreenElement', |
|
56 'webkitCancelFullScreen', |
|
57 'webkitfullscreenchange', |
|
58 'webkitfullscreenerror' |
|
59 |
|
60 ], |
|
61 [ |
|
62 'mozRequestFullScreen', |
|
63 'mozCancelFullScreen', |
|
64 'mozFullScreenElement', |
|
65 'mozFullScreenEnabled', |
|
66 'mozfullscreenchange', |
|
67 'mozfullscreenerror' |
|
68 ], |
|
69 [ |
|
70 'msRequestFullscreen', |
|
71 'msExitFullscreen', |
|
72 'msFullscreenElement', |
|
73 'msFullscreenEnabled', |
|
74 'MSFullscreenChange', |
|
75 'MSFullscreenError' |
|
76 ] |
|
77 ]; |
|
78 |
|
79 var i = 0; |
|
80 var l = fnMap.length; |
|
81 var ret = {}; |
|
82 |
|
83 for (; i < l; i++) { |
|
84 val = fnMap[i]; |
|
85 if (val && val[1] in document) { |
|
86 for (i = 0, valLength = val.length; i < valLength; i++) { |
|
87 ret[fnMap[0][i]] = val[i]; |
|
88 } |
|
89 return ret; |
|
90 } |
|
91 } |
|
92 |
|
93 return false; |
|
94 })(); |
|
95 |
|
96 var screenfull = { |
|
97 request: function (elem) { |
|
98 var request = fn.requestFullscreen; |
|
99 |
|
100 elem = elem || document.documentElement; |
|
101 |
|
102 // Work around Safari 5.1 bug: reports support for |
|
103 // keyboard in fullscreen even though it doesn't. |
|
104 // Browser sniffing, since the alternative with |
|
105 // setTimeout is even worse. |
|
106 if (/5\.1[\.\d]* Safari/.test(navigator.userAgent)) { |
|
107 elem[request](); |
|
108 } else { |
|
109 elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT); |
|
110 } |
|
111 }, |
|
112 exit: function () { |
|
113 document[fn.exitFullscreen](); |
|
114 }, |
|
115 toggle: function (elem) { |
|
116 if (this.isFullscreen) { |
|
117 this.exit(); |
|
118 } else { |
|
119 this.request(elem); |
|
120 } |
|
121 }, |
|
122 raw: fn |
|
123 }; |
|
124 |
|
125 if (!fn) { |
|
126 if (isCommonjs) { |
|
127 module.exports = false; |
|
128 } else { |
|
129 window.screenfull = false; |
|
130 } |
|
131 |
|
132 return; |
|
133 } |
|
134 |
|
135 Object.defineProperties(screenfull, { |
|
136 isFullscreen: { |
|
137 get: function () { |
|
138 return !!document[fn.fullscreenElement]; |
|
139 } |
|
140 }, |
|
141 element: { |
|
142 enumerable: true, |
|
143 get: function () { |
|
144 return document[fn.fullscreenElement]; |
|
145 } |
|
146 }, |
|
147 enabled: { |
|
148 enumerable: true, |
|
149 get: function () { |
|
150 // Coerce to boolean in case of old WebKit |
|
151 return !!document[fn.fullscreenEnabled]; |
|
152 } |
|
153 } |
|
154 }); |
|
155 |
|
156 if (isCommonjs) { |
|
157 module.exports = screenfull; |
|
158 } else { |
|
159 window.screenfull = screenfull; |
|
160 } |
|
161 })(); |
|
162 |
|
163 return screenfull; |
|
164 |
|
165 })); |