media-query-splitting-plugin
Version:
Webpack 4 plugin for styles splitting by media query
1 lines • 1.82 kB
JavaScript
;function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a}finally{try{d||null==h["return"]||h["return"]()}finally{if(e)throw f}}return c}function _arrayWithHoles(a){if(Array.isArray(a))return a}var mediaQuery=require("css-mediaquery"),toPx=function(a){var b=parseFloat(a),c=(a+"").match(/(em|rem|px|cm|mm|in|pt|pc)?$/)[1];return"em"===c?16*b:"rem"===c?16*b:"cm"===c?96*b/2.54:"mm"===c?96*b/2.54/10:"in"===c?96*b:"pt"===c?72*b:"pc"===c?72*b/12:b},getExpression=function(a){return a.reduce(function(a,b){var c=b.feature,d=b.modifier,e=b.value;return a[c]=a[c]||{},a[c][d]=toPx(e),a},{})},compare=function(a,b){var c=mediaQuery.parse(a),d=_slicedToArray(c,1),e=d[0],f=mediaQuery.parse(b),g=_slicedToArray(f,1),h=g[0],i=getExpression(e.expressions),j=getExpression(h.expressions),k=Object.keys(i),l=Object.keys(j);return k.every(function(a){var b=i[a],c=j[a],d=2===k.length,e=2===l.length;if(c){var f="number"==typeof b.min,g="number"==typeof c.min;return d?e?b.min<=c.min&&b.max>=c.max:g?b.min<=c.min&&b.max>=c.min:b.max>=c.max&&b.min<=c.max:e?f?b.min>=c.min:b.max<=c.max:f?g?b.min>=c.min:b.min<=c.max:g?b.max>=c.min:b.max<=c.max}return!0})},escapeQuery=function(a){return a.replace(/:/g,": ").replace(/,/g,", ").replace(/\s+/g," ")},matchMedia=function(a){var b=a.mediaQuery,c=void 0===b?"":b,d=a.mediaOptions,e={};return Object.keys(d).forEach(function(a){var b=d[a],f=b.query||"";e[a]=b.exact?escapeQuery(f)===escapeQuery(c):compare(f,c)}),e};module.exports=matchMedia;