diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 22:41:29 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 22:41:29 +0800 |
| commit | af842b8362016d0ac572de8c5810b67258df8bd7 (patch) | |
| tree | f904a9294f8d1780a60e6630cf6fd4b494aa7878 /node_modules/postcss-calc/dist/lib | |
| parent | bd9536ee06890c07456337fec3e7a916e03d8f6e (diff) | |
updates
Diffstat (limited to 'node_modules/postcss-calc/dist/lib')
| -rw-r--r-- | node_modules/postcss-calc/dist/lib/transform.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/postcss-calc/dist/lib/transform.js b/node_modules/postcss-calc/dist/lib/transform.js new file mode 100644 index 00000000..1a4505f9 --- /dev/null +++ b/node_modules/postcss-calc/dist/lib/transform.js @@ -0,0 +1,67 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _postcssSelectorParser = require('postcss-selector-parser'); + +var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser); + +var _reduceCssCalc = require('reduce-css-calc'); + +var _reduceCssCalc2 = _interopRequireDefault(_reduceCssCalc); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var MATCH_CALC = /((?:\-[a-z]+\-)?calc)/; + +function transformValue(value, options, result, item) { + if (!value) { + return value; + } + + var reduced = (0, _reduceCssCalc2.default)(value, options.precision); + // if the warnWhenCannotResolve option is on, inform the user that the calc + // expression could not be resolved to a single value + if (options.warnWhenCannotResolve && MATCH_CALC.test(reduced)) { + result.warn("Could not reduce expression: " + value, { plugin: 'postcss-calc', node: item }); + } + + return reduced; +} + +function transformSelector(value, options, result, item) { + return (0, _postcssSelectorParser2.default)(function (selectors) { + selectors.walk(function (node) { + // attribute value + // e.g. the "calc(3*3)" part of "div[data-size="calc(3*3)"]" + if (node.type === 'attribute') { + var val = transformValue(node.raws.unquoted, options, result, item); + node.value = node.quoted ? '"' + val + '"' : val; + } + + // tag value + // e.g. the "calc(3*3)" part of "div:nth-child(2n + calc(3*3))" + if (node.type === 'tag') node.value = transformValue(node.value, options, result, item); + + return; + }); + }).process(value).result.toString(); +} + +exports.default = function (node, property, options, result) { + var value = property === "selector" ? transformSelector(node[property], options, result, node) : transformValue(node[property], options, result, node); + + // if the preserve option is enabled and the value has changed, write the + // transformed value into a cloned node which is inserted before the current + // node, preserving the original value. Otherwise, overwrite the original + // value. + if (options.preserve && node[property] !== value) { + var clone = node.clone(); + clone[property] = value; + node.parent.insertBefore(node, clone); + } else node[property] = value; +}; + +module.exports = exports['default'];
\ No newline at end of file |
