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