1/*! 2 * screenfull 3 * v1.2.0 - 2014-04-29 4 * (c) Sindre Sorhus; MIT License 5 */ 6(function () { 7 'use strict'; 8 9 var isCommonjs = typeof module !== 'undefined' && module.exports; 10 var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element; 11 12 var fn = (function () { 13 var val; 14 var valLength; 15 16 var fnMap = [ 17 [ 18 'requestFullscreen', 19 'exitFullscreen', 20 'fullscreenElement', 21 'fullscreenEnabled', 22 'fullscreenchange', 23 'fullscreenerror' 24 ], 25 // new WebKit 26 [ 27 'webkitRequestFullscreen', 28 'webkitExitFullscreen', 29 'webkitFullscreenElement', 30 'webkitFullscreenEnabled', 31 'webkitfullscreenchange', 32 'webkitfullscreenerror' 33 34 ], 35 // old WebKit (Safari 5.1) 36 [ 37 'webkitRequestFullScreen', 38 'webkitCancelFullScreen', 39 'webkitCurrentFullScreenElement', 40 'webkitCancelFullScreen', 41 'webkitfullscreenchange', 42 'webkitfullscreenerror' 43 44 ], 45 [ 46 'mozRequestFullScreen', 47 'mozCancelFullScreen', 48 'mozFullScreenElement', 49 'mozFullScreenEnabled', 50 'mozfullscreenchange', 51 'mozfullscreenerror' 52 ], 53 [ 54 'msRequestFullscreen', 55 'msExitFullscreen', 56 'msFullscreenElement', 57 'msFullscreenEnabled', 58 'MSFullscreenChange', 59 'MSFullscreenError' 60 ] 61 ]; 62 63 var i = 0; 64 var l = fnMap.length; 65 var ret = {}; 66 67 for (; i < l; i++) { 68 val = fnMap[i]; 69 if (val && val[1] in document) { 70 for (i = 0, valLength = val.length; i < valLength; i++) { 71 ret[fnMap[0][i]] = val[i]; 72 } 73 return ret; 74 } 75 } 76 77 return false; 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 (/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 () {}, 107 onerror: function () {}, 108 raw: fn 109 }; 110 111 if (!fn) { 112 if (isCommonjs) { 113 module.exports = false; 114 } else { 115 window.screenfull = false; 116 } 117 118 return; 119 } 120 121 Object.defineProperties(screenfull, { 122 isFullscreen: { 123 get: function () { 124 return !!document[fn.fullscreenElement]; 125 } 126 }, 127 element: { 128 enumerable: true, 129 get: function () { 130 return document[fn.fullscreenElement]; 131 } 132 }, 133 enabled: { 134 enumerable: true, 135 get: function () { 136 // Coerce to boolean in case of old WebKit 137 return !!document[fn.fullscreenEnabled]; 138 } 139 } 140 }); 141 142 document.addEventListener(fn.fullscreenchange, function (e) { 143 screenfull.onchange.call(screenfull, e); 144 }); 145 146 document.addEventListener(fn.fullscreenerror, function (e) { 147 screenfull.onerror.call(screenfull, e); 148 }); 149 150 if (isCommonjs) { 151 module.exports = screenfull; 152 } else { 153 window.screenfull = screenfull; 154 } 155})();
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.