|
|
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = _default;
- var order = {
- "*": 0,
- "/": 0,
- "+": 1,
- "-": 1
- };
-
- function round(value, prec) {
- if (prec !== false) {
- var precision = Math.pow(10, prec);
- return Math.round(value * precision) / precision;
- }
-
- return value;
- }
-
- function stringify(node, prec) {
- switch (node.type) {
- case "MathExpression":
- {
- var left = node.left,
- right = node.right,
- op = node.operator;
- var str = "";
- if (left.type === 'MathExpression' && order[op] < order[left.operator]) str += `(${stringify(left, prec)})`;else str += stringify(left, prec);
- str += order[op] ? ` ${node.operator} ` : node.operator;
- if (right.type === 'MathExpression' && order[op] < order[right.operator]) str += `(${stringify(right, prec)})`;else str += stringify(right, prec);
- return str;
- }
-
- case "Value":
- return round(node.value, prec);
-
- case 'Function':
- return node.value;
-
- default:
- return round(node.value, prec) + node.unit;
- }
- }
-
- function _default(calc, node, originalValue, options, result, item) {
- var str = stringify(node, options.precision);
-
- if (node.type === "MathExpression") {
- // if calc expression couldn't be resolved to a single value, re-wrap it as
- // a calc()
- str = `${calc}(${str})`; // if the warnWhenCannotResolve option is on, inform the user that the calc
- // expression could not be resolved to a single value
-
- if (options.warnWhenCannotResolve) {
- result.warn("Could not reduce expression: " + originalValue, {
- plugin: 'postcss-calc',
- node: item
- });
- }
- }
-
- return str;
- }
-
- module.exports = exports.default;
|