UNPKG

polyfill-service

Version:
1 lines 4.6 kB
{"aliases":["caniuse:matchmedia","modernizr:matchmedia"],"browsers":{"android":"2.1 - 2.3","blackberry":"7","ie":"6 - 9","opera":"11.5 - 12.1","op_mini":"*","op_mob":"10 - 12","safari":"4 - 5"},"dependencies":["Event"],"docs":"https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia","spec":"http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface","baseDir":"matchMedia","hasTests":true,"rawSource":"\n// matchMedia\n(function (global) {\n\tfunction evalQuery(query) {\n\t\t/* jshint evil: true */\n\t\tquery = (query || 'true')\n\t\t\t.replace(/^only\\s+/, '')\n\t\t\t.replace(/(device)-([\\w.]+)/g, '$1.$2')\n\t\t\t.replace(/([\\w.]+)\\s*:/g, 'media.$1 ===')\n\t\t\t.replace(/min-([\\w.]+)\\s*===/g, '$1 >=')\n\t\t\t.replace(/max-([\\w.]+)\\s*===/g, '$1 <=')\n\t\t\t.replace(/all|screen/g, '1')\n\t\t\t.replace(/print/g, '0')\n\t\t\t.replace(/,/g, '||')\n\t\t\t.replace(/\\band\\b/g, '&&')\n\t\t\t.replace(/dpi/g, '')\n\t\t\t.replace(/(\\d+)(cm|em|in|dppx|mm|pc|pt|px|rem)/g, function ($0, $1, $2) {\n\t\t\t\treturn $1 * (\n\t\t\t\t\t$2 === 'cm' ? 0.3937 * 96 : (\n\t\t\t\t\t\t$2 === 'em' || $2 === 'rem' ? 16 : (\n\t\t\t\t\t\t\t$2 === 'in' || $2 === 'dppx' ? 96 : (\n\t\t\t\t\t\t\t\t$2 === 'mm' ? 0.3937 * 96 / 10 : (\n\t\t\t\t\t\t\t\t\t$2 === 'pc' ? 12 * 96 / 72 : (\n\t\t\t\t\t\t\t\t\t\t$2 === 'pt' ? 96 / 72 : 1\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t});\n\t\treturn new Function('media', 'try{ return !!(%s) }catch(e){ return false }'\n\t\t\t.replace('%s', query)\n\t\t)({\n\t\t\twidth: global.innerWidth,\n\t\t\theight: global.innerHeight,\n\t\t\torientation: global.orientation || 'landscape',\n\t\t\tdevice: {\n\t\t\t\twidth: global.screen.width,\n\t\t\t\theight: global.screen.height,\n\t\t\t\torientation: global.screen.orientation || global.orientation || 'landscape'\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction MediaQueryList() {\n\t\tthis.matches = false;\n\t\tthis.media = 'invalid';\n\t}\n\n\tMediaQueryList.prototype.addListener = function addListener(listener) {\n\t\tthis.addListener.listeners.push(listener);\n\t};\n\n\tMediaQueryList.prototype.removeListener = function removeListener(listener) {\n\t\tthis.addListener.listeners.splice(this.addListener.listeners.indexOf(listener), 1);\n\t};\n\n\t// <Global>.matchMedia\n\tglobal.matchMedia = function matchMedia(query) {\n\t\tvar\n\t\tlist = new MediaQueryList();\n\n\t\tif (0 === arguments.length) {\n\t\t\tthrow new TypeError('Not enough arguments to matchMedia');\n\t\t}\n\n\t\tlist.media = String(query);\n\t\tlist.matches = evalQuery(list.media);\n\t\tlist.addListener.listeners = [];\n\n\t\tglobal.addEventListener('resize', function () {\n\t\t\tvar listeners = [].concat(list.addListener.listeners), matches = evalQuery(list.media);\n\n\t\t\tif (matches != list.matches) {\n\t\t\t\tlist.matches = matches;\n\t\t\t\tfor (var index = 0, length = listeners.length; index < length; ++index) {\n\t\t\t\t\tlisteners[index].call(global, list);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t};\n})(this);\n","minSource":"!function(e){function t(t){return t=(t||\"true\").replace(/^only\\s+/,\"\").replace(/(device)-([\\w.]+)/g,\"$1.$2\").replace(/([\\w.]+)\\s*:/g,\"media.$1 ===\").replace(/min-([\\w.]+)\\s*===/g,\"$1 >=\").replace(/max-([\\w.]+)\\s*===/g,\"$1 <=\").replace(/all|screen/g,\"1\").replace(/print/g,\"0\").replace(/,/g,\"||\").replace(/\\band\\b/g,\"&&\").replace(/dpi/g,\"\").replace(/(\\d+)(cm|em|in|dppx|mm|pc|pt|px|rem)/g,function(e,t,n){return t*(\"cm\"===n?37.7952:\"em\"===n||\"rem\"===n?16:\"in\"===n||\"dppx\"===n?96:\"mm\"===n?3.77952:\"pc\"===n?16:\"pt\"===n?96/72:1)}),new Function(\"media\",\"try{ return !!(%s) }catch(e){ return false }\".replace(\"%s\",t))({width:e.innerWidth,height:e.innerHeight,orientation:e.orientation||\"landscape\",device:{width:e.screen.width,height:e.screen.height,orientation:e.screen.orientation||e.orientation||\"landscape\"}})}function n(){this.matches=!1,this.media=\"invalid\"}n.prototype.addListener=function(e){this.addListener.listeners.push(e)},n.prototype.removeListener=function(e){this.addListener.listeners.splice(this.addListener.listeners.indexOf(e),1)},e.matchMedia=function(i){var r=new n;if(0===arguments.length)throw new TypeError(\"Not enough arguments to matchMedia\");return r.media=String(i),r.matches=t(r.media),r.addListener.listeners=[],e.addEventListener(\"resize\",function(){var n=[].concat(r.addListener.listeners),i=t(r.media);if(i!=r.matches){r.matches=i;for(var a=0,c=n.length;c>a;++a)n[a].call(e,r)}}),r}}(this);","detectSource":"'matchMedia' in this"}