summaryrefslogtreecommitdiff
path: root/node_modules/reduce-css-calc/dist/lib/stringifier.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
commitefbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch)
tree2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/reduce-css-calc/dist/lib/stringifier.js
parent43acceb75957c880a5ba5a31aae221394a36d5f6 (diff)
node fixes, updates
Diffstat (limited to 'node_modules/reduce-css-calc/dist/lib/stringifier.js')
-rw-r--r--node_modules/reduce-css-calc/dist/lib/stringifier.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/reduce-css-calc/dist/lib/stringifier.js b/node_modules/reduce-css-calc/dist/lib/stringifier.js
new file mode 100644
index 00000000..92e76326
--- /dev/null
+++ b/node_modules/reduce-css-calc/dist/lib/stringifier.js
@@ -0,0 +1,78 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+exports.default = function (calc, node, precision) {
+ var str = stringify(node, 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 + ")";
+ }
+ return str;
+};
+
+var _reducer = require("./reducer");
+
+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 += " " + node.operator + " ";
+
+ if (right.type === 'MathExpression' && order[op] < order[right.operator]) {
+ str += "(" + stringify(right, prec) + ")";
+ } else if (right.type === 'MathExpression' && op === "-" && ["+", "-"].includes(right.operator)) {
+ // fix #52 : a-(b+c) = a-b-c
+ right.operator = (0, _reducer.flip)(right.operator);
+ str += stringify(right, prec);
+ } else {
+ str += stringify(right, prec);
+ }
+
+ return str;
+ }
+ case "Value":
+ return round(node.value, prec);
+ case 'CssVariable':
+ if (node.fallback) {
+ return "var(" + node.value + ", " + stringify(node.fallback, prec, true) + ")";
+ }
+ return "var(" + node.value + ")";
+ case 'Calc':
+ if (node.prefix) {
+ return "-" + node.prefix + "-calc(" + stringify(node.value, prec) + ")";
+ }
+ return "calc(" + stringify(node.value, prec) + ")";
+ default:
+ return round(node.value, prec) + node.unit;
+ }
+}
+
+module.exports = exports["default"]; \ No newline at end of file