em-media-query
Version:
Transform min/max-width/height media queries to ems.
1 lines • 2.5 kB
Source Map (JSON)
{"version":3,"file":"index.esm.js","sources":["index.js"],"sourcesContent":["import parse from 'postcss-value-parser';\nimport round from 'lodash.round';\n\n/**\n * @param {string} string\n * @param {object} options\n *\n * @returns {string}\n */\nexport default (string, options) => {\n\toptions = { precision: 5, ...options };\n\n\tconst tree = parse(string);\n\n\ttree.walk((node) => {\n\t\tif (node.type === 'function') {\n\t\t\tconst values = node.nodes;\n\t\t\tconst minMax = values.some((item) => {\n\t\t\t\treturn /(?:min|max)-(?:width|height)/.test(item.value);\n\t\t\t});\n\n\t\t\t// If we are working with min/max-width/height query\n\t\t\tif (minMax) {\n\t\t\t\tvalues\n\n\t\t\t\t\t// Work only with pixel values\n\t\t\t\t\t.filter((item) => {\n\t\t\t\t\t\tconst value = parse.unit(item.value);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\titem.type === 'word' && value && value.unit === 'px'\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\n\t\t\t\t\t// Convert to ems\n\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\tconst value = parse.unit(item.value);\n\t\t\t\t\t\titem.value = [\n\t\t\t\t\t\t\tround(Number(value.number) / 16, options.precision),\n\t\t\t\t\t\t\t'em'\n\t\t\t\t\t\t].join('');\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\treturn tree.toString();\n};\n"],"names":[],"mappings":";;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,YAAe,CAAC,MAAM,EAAE,OAAO,KAAK;AACpC,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;AACxC;AACA,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACrB,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAChC,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,GAAG,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACxC,IAAI,OAAO,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,IAAI,CAAC,CAAC;AACN;AACA;AACA,GAAG,IAAI,MAAM,EAAE;AACf,IAAI,MAAM;AACV;AACA;AACA,MAAM,MAAM,CAAC,CAAC,IAAI,KAAK;AACvB,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,MAAM;AACN,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;AAC3D,QAAQ;AACR,MAAM,CAAC;AACP;AACA;AACA,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK;AACpB,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,KAAK,GAAG;AACnB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC;AAC1D,OAAO,IAAI;AACX,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjB,MAAM,OAAO,IAAI,CAAC;AAClB,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ;AACA,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;;;;"}