UNPKG

build-plugin-fusion

Version:

plugin for build scripts while use fusion component

40 lines 1.4 kB
var postcss = require('postcss'); var pxRegex = /"[^"]+"|'[^']+'|url\([^)]+\)|(\d*\.?\d+)px/g; var defaults = { viewportWidth: 750, viewportUnit: 'vw', fontViewportUnit: 'vw', unitPrecision: 5, }; module.exports = postcss.plugin('postcss-px2vw', function (options) { var opts = Object.assign({}, defaults, options); return function (root) { root.walkDecls(function (decl) { if (decl.value.indexOf('px') === -1) return; var unit = getUnit(decl.prop, opts); decl.value = decl.value.replace(pxRegex, createPxReplace(opts, unit, opts.viewportWidth)); }); }; }); function toFixed(number, precision) { // eslint-disable-next-line no-restricted-properties var multiplier = Math.pow(10, precision + 1); var wholeNumber = Math.floor(number * multiplier); return (Math.round(wholeNumber / 10) * 10) / multiplier; } function createPxReplace(opts, viewportUnit, viewportSize) { return function (m, $1) { if (!$1) return m; var pixels = parseFloat($1); var parsedVal = toFixed((pixels / viewportSize) * 100, opts.unitPrecision); return parsedVal + viewportUnit; }; } function getUnit(prop, opts) { return prop.indexOf('font') === -1 ? opts.viewportUnit : opts.fontViewportUnit; } //# sourceMappingURL=postcssPluginPx2vw.js.map