1(function () { 2 'use strict'; 3 4 var isCommonjs = typeof module !== 'undefined' && module.exports; 5 var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element; 6 7 var fn = (function () { 8 var val; 9 var valLength; 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, valLength = val.length; i < valLength; i++) { 66 ret[fnMap[0][i]] = val[i]; 67 } 68 return ret; 69 } 70 } 71 72 return false; 73 })(); 74 75 var screenfull = { 76 request: function (elem) { 77 var request = fn.requestFullscreen; 78 79 elem = elem || document.documentElement; 80 81 // Work around Safari 5.1 bug: reports support for 82 // keyboard in fullscreen even though it doesn't. 83 // Browser sniffing, since the alternative with 84 // setTimeout is even worse. 85 if (/5\.1[\.\d]* Safari/.test(navigator.userAgent)) { 86 elem[request](); 87 } else { 88 elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT); 89 } 90 }, 91 exit: function () { 92 document[fn.exitFullscreen](); 93 }, 94 toggle: function (elem) { 95 if (this.isFullscreen) { 96 this.exit(); 97 } else { 98 this.request(elem); 99 } 100 }, 101 raw: fn 102 }; 103 104 if (!fn) { 105 if (isCommonjs) { 106 module.exports = false; 107 } else { 108 window.screenfull = false; 109 } 110 111 return; 112 } 113 114 Object.defineProperties(screenfull, { 115 isFullscreen: { 116 get: function () { 117 return !!document[fn.fullscreenElement]; 118 } 119 }, 120 element: { 121 enumerable: true, 122 get: function () { 123 return document[fn.fullscreenElement]; 124 } 125 }, 126 enabled: { 127 enumerable: true, 128 get: function () { 129 // Coerce to boolean in case of old WebKit 130 return !!document[fn.fullscreenEnabled]; 131 } 132 } 133 }); 134 135 if (isCommonjs) { 136 module.exports = screenfull; 137 } else { 138 window.screenfull = screenfull; 139 } 140})();
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.