'use strict'; const transform = require('./lib/transform.js'); /** * @typedef {{precision?: number | false, * preserve?: boolean, * warnWhenCannotResolve?: boolean, * mediaQueries?: boolean, * selectors?: boolean}} PostCssCalcOptions */ /** * @type {import('postcss').PluginCreator} * @param {PostCssCalcOptions} opts * @return {import('postcss').Plugin} */ function pluginCreator(opts) { const options = Object.assign( { precision: 5, preserve: false, warnWhenCannotResolve: false, mediaQueries: false, selectors: false, }, opts ); return { postcssPlugin: 'postcss-calc', OnceExit(css, { result }) { css.walk((node) => { const { type } = node; if (type === 'decl') { transform(node, 'value', options, result); } if (type === 'atrule' && options.mediaQueries) { transform(node, 'params', options, result); } if (type === 'rule' && options.selectors) { transform(node, 'selector', options, result); } }); }, }; } pluginCreator.postcss = true; module.exports = pluginCreator;