less 4.1.0 → 4.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -1
- package/.eslintrc.json +70 -2
- package/Gruntfile.js +7 -11
- package/bin/lessc +19 -1
- package/dist/less.js +232 -146
- package/dist/less.min.js +3 -3
- package/dist/less.min.js.map +1 -1
- package/lib/less/functions/function-caller.js +5 -1
- package/lib/less/functions/function-caller.js.map +1 -1
- package/lib/less/functions/types.js +2 -1
- package/lib/less/functions/types.js.map +1 -1
- package/lib/less/parser/parser.js +24 -6
- package/lib/less/parser/parser.js.map +1 -1
- package/lib/less/tree/attribute.js +6 -2
- package/lib/less/tree/attribute.js.map +1 -1
- package/lib/less/tree/debug-info.js +30 -33
- package/lib/less/tree/debug-info.js.map +1 -1
- package/lib/less/tree/dimension.js +2 -1
- package/lib/less/tree/dimension.js.map +1 -1
- package/lib/less/tree/expression.js +0 -2
- package/lib/less/tree/expression.js.map +1 -1
- package/lib/less/tree/index.js +34 -7
- package/lib/less/tree/index.js.map +1 -1
- package/lib/less/tree/js-eval-node.js +4 -2
- package/lib/less/tree/js-eval-node.js.map +1 -1
- package/lib/less/tree/mixin-call.js +9 -3
- package/lib/less/tree/mixin-call.js.map +1 -1
- package/lib/less/tree/namespace-value.js +6 -2
- package/lib/less/tree/namespace-value.js.map +1 -1
- package/lib/less/tree/node.js +14 -7
- package/lib/less/tree/node.js.map +1 -1
- package/lib/less/tree/operation.js +3 -2
- package/lib/less/tree/operation.js.map +1 -1
- package/lib/less/tree/property.js +6 -2
- package/lib/less/tree/property.js.map +1 -1
- package/lib/less/tree/variable.js +6 -2
- package/lib/less/tree/variable.js.map +1 -1
- package/lib/less/visitors/to-css-visitor.js +4 -2
- package/lib/less/visitors/to-css-visitor.js.map +1 -1
- package/lib/less-browser/utils.js +3 -0
- package/lib/less-browser/utils.js.map +1 -1
- package/lib/less-node/image-size.js +0 -2
- package/lib/less-node/image-size.js.map +1 -1
- package/lib/less-node/index.js.map +1 -1
- package/lib/less-node/lessc-helper.js +1 -0
- package/lib/less-node/lessc-helper.js.map +1 -1
- package/lib/less-node/url-file-manager.js +3 -3
- package/lib/less-node/url-file-manager.js.map +1 -1
- package/package.json +11 -10
- package/test/index.js +3 -1
- package/test/less-test.js +45 -1
- package/tsconfig.json +5 -0
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
4
|
var node_1 = tslib_1.__importDefault(require("./node"));
|
|
5
|
-
var Attribute = function (key, op, value) {
|
|
5
|
+
var Attribute = function (key, op, value, cif) {
|
|
6
6
|
this.key = key;
|
|
7
7
|
this.op = op;
|
|
8
8
|
this.value = value;
|
|
9
|
+
this.cif = cif;
|
|
9
10
|
};
|
|
10
11
|
Attribute.prototype = Object.assign(new node_1.default(), {
|
|
11
12
|
type: 'Attribute',
|
|
12
13
|
eval: function (context) {
|
|
13
|
-
return new Attribute(this.key.eval ? this.key.eval(context) : this.key, this.op, (this.value && this.value.eval) ? this.value.eval(context) : this.value);
|
|
14
|
+
return new Attribute(this.key.eval ? this.key.eval(context) : this.key, this.op, (this.value && this.value.eval) ? this.value.eval(context) : this.value, this.cif);
|
|
14
15
|
},
|
|
15
16
|
genCSS: function (context, output) {
|
|
16
17
|
output.add(this.toCSS(context));
|
|
@@ -21,6 +22,9 @@ Attribute.prototype = Object.assign(new node_1.default(), {
|
|
|
21
22
|
value += this.op;
|
|
22
23
|
value += (this.value.toCSS ? this.value.toCSS(context) : this.value);
|
|
23
24
|
}
|
|
25
|
+
if (this.cif) {
|
|
26
|
+
value = value + " " + this.cif;
|
|
27
|
+
}
|
|
24
28
|
return "[" + value + "]";
|
|
25
29
|
}
|
|
26
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../../src/less/tree/attribute.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAE1B,IAAM,SAAS,GAAG,UAAS,GAAG,EAAE,EAAE,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../../src/less/tree/attribute.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAE1B,IAAM,SAAS,GAAG,UAAS,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG;IAC1C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC,CAAA;AAED,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,cAAI,EAAE,EAAE;IAC5C,IAAI,EAAE,WAAW;IAEjB,IAAI,YAAC,OAAO;QACR,OAAO,IAAI,SAAS,CAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EACjD,IAAI,CAAC,EAAE,EACP,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EACvE,IAAI,CAAC,GAAG,CACX,CAAC;IACN,CAAC;IAED,MAAM,YAAC,OAAO,EAAE,MAAM;QAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,YAAC,OAAO;QACT,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAEhE,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxE;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;SAClC;QAED,OAAO,MAAI,KAAK,MAAG,CAAC;IACxB,CAAC;CACJ,CAAC,CAAC;AAEH,kBAAe,SAAS,CAAC","sourcesContent":["import Node from './node';\n\nconst Attribute = function(key, op, value, cif) {\n this.key = key;\n this.op = op;\n this.value = value;\n this.cif = cif;\n}\n\nAttribute.prototype = Object.assign(new Node(), {\n type: 'Attribute',\n\n eval(context) {\n return new Attribute(\n this.key.eval ? this.key.eval(context) : this.key,\n this.op,\n (this.value && this.value.eval) ? this.value.eval(context) : this.value,\n this.cif\n );\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context) {\n let value = this.key.toCSS ? this.key.toCSS(context) : this.key;\n\n if (this.op) {\n value += this.op;\n value += (this.value.toCSS ? this.value.toCSS(context) : this.value);\n }\n\n if (this.cif) {\n value = value + \" \" + this.cif;\n }\n\n return `[${value}]`;\n }\n});\n\nexport default Attribute;\n"]}
|
|
@@ -1,39 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
break;
|
|
11
|
-
case 'mediaquery':
|
|
12
|
-
result = debugInfo.asMediaQuery(ctx);
|
|
13
|
-
break;
|
|
14
|
-
case 'all':
|
|
15
|
-
result = debugInfo.asComment(ctx) + (lineSeparator || '') + debugInfo.asMediaQuery(ctx);
|
|
16
|
-
break;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return result;
|
|
3
|
+
function asComment(ctx) {
|
|
4
|
+
return "/* line " + ctx.debugInfo.lineNumber + ", " + ctx.debugInfo.fileName + " */\n";
|
|
5
|
+
}
|
|
6
|
+
function asMediaQuery(ctx) {
|
|
7
|
+
var filenameWithProtocol = ctx.debugInfo.fileName;
|
|
8
|
+
if (!/^[a-z]+:\/\//i.test(filenameWithProtocol)) {
|
|
9
|
+
filenameWithProtocol = "file://" + filenameWithProtocol;
|
|
20
10
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
11
|
+
return "@media -sass-debug-info{filename{font-family:" + filenameWithProtocol.replace(/([.:\/\\])/g, function (a) {
|
|
12
|
+
if (a == '\\') {
|
|
13
|
+
a = '\/';
|
|
14
|
+
}
|
|
15
|
+
return "\\" + a;
|
|
16
|
+
}) + "}line{font-family:\\00003" + ctx.debugInfo.lineNumber + "}}\n";
|
|
17
|
+
}
|
|
18
|
+
function debugInfo(context, ctx, lineSeparator) {
|
|
19
|
+
var result = '';
|
|
20
|
+
if (context.dumpLineNumbers && !context.compress) {
|
|
21
|
+
switch (context.dumpLineNumbers) {
|
|
22
|
+
case 'comments':
|
|
23
|
+
result = asComment(ctx);
|
|
24
|
+
break;
|
|
25
|
+
case 'mediaquery':
|
|
26
|
+
result = asMediaQuery(ctx);
|
|
27
|
+
break;
|
|
28
|
+
case 'all':
|
|
29
|
+
result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);
|
|
30
|
+
break;
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
return "\\" + a;
|
|
34
|
-
}) + "}line{font-family:\\00003" + ctx.debugInfo.lineNumber + "}}\n";
|
|
35
|
-
};
|
|
36
|
-
return debugInfo;
|
|
37
|
-
}());
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
38
35
|
exports.default = debugInfo;
|
|
39
36
|
//# sourceMappingURL=debug-info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-info.js","sourceRoot":"","sources":["../../../src/less/tree/debug-info.js"],"names":[],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"debug-info.js","sourceRoot":"","sources":["../../../src/less/tree/debug-info.js"],"names":[],"mappings":";;AAAA,SAAS,SAAS,CAAC,GAAG;IAClB,OAAO,aAAW,GAAG,CAAC,SAAS,CAAC,UAAU,UAAK,GAAG,CAAC,SAAS,CAAC,QAAQ,UAAO,CAAC;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,GAAG;IACrB,IAAI,oBAAoB,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;IAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;QAC7C,oBAAoB,GAAG,YAAU,oBAAsB,CAAC;KAC3D;IACD,OAAO,kDAAgD,oBAAoB,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;QAC1G,IAAI,CAAC,IAAI,IAAI,EAAE;YACX,CAAC,GAAG,IAAI,CAAC;SACZ;QACD,OAAO,OAAK,CAAG,CAAC;IACpB,CAAC,CAAC,iCAA4B,GAAG,CAAC,SAAS,CAAC,UAAU,SAAM,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC9C,QAAQ,OAAO,CAAC,eAAe,EAAE;YAC7B,KAAK,UAAU;gBACX,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM;YACV,KAAK,YAAY;gBACb,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM;YACV,KAAK,KAAK;gBACN,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM;SACb;KACJ;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,kBAAe,SAAS,CAAC","sourcesContent":["function asComment(ctx) {\n return `/* line ${ctx.debugInfo.lineNumber}, ${ctx.debugInfo.fileName} */\\n`;\n}\n\nfunction asMediaQuery(ctx) {\n let filenameWithProtocol = ctx.debugInfo.fileName;\n if (!/^[a-z]+:\\/\\//i.test(filenameWithProtocol)) {\n filenameWithProtocol = `file://${filenameWithProtocol}`;\n }\n return `@media -sass-debug-info{filename{font-family:${filenameWithProtocol.replace(/([.:\\/\\\\])/g, function (a) {\n if (a == '\\\\') {\n a = '\\/';\n }\n return `\\\\${a}`;\n })}}line{font-family:\\\\00003${ctx.debugInfo.lineNumber}}}\\n`;\n}\n\nfunction debugInfo(context, ctx, lineSeparator) {\n let result = '';\n if (context.dumpLineNumbers && !context.compress) {\n switch (context.dumpLineNumbers) {\n case 'comments':\n result = asComment(ctx);\n break;\n case 'mediaquery':\n result = asMediaQuery(ctx);\n break;\n case 'all':\n result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);\n break;\n }\n }\n return result;\n}\n\nexport default debugInfo;\n\n"]}
|
|
@@ -57,7 +57,8 @@ Dimension.prototype = Object.assign(new node_1.default(), {
|
|
|
57
57
|
// so `1px + 2` will yield `3px`.
|
|
58
58
|
operate: function (context, op, other) {
|
|
59
59
|
/* jshint noempty:false */
|
|
60
|
-
var value = this._operate(context, op, this.value, other.value)
|
|
60
|
+
var value = this._operate(context, op, this.value, other.value);
|
|
61
|
+
var unit = this.unit.clone();
|
|
61
62
|
if (op === '+' || op === '-') {
|
|
62
63
|
if (unit.numerator.length === 0 && unit.denominator.length === 0) {
|
|
63
64
|
unit = other.unit.clone();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimension.js","sourceRoot":"","sources":["../../../src/less/tree/dimension.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport Unit from './unit';\nimport Color from './color';\n\n//\n// A number with a unit\n//\nconst Dimension = function(value, unit) {\n this.value = parseFloat(value);\n if (isNaN(this.value)) {\n throw new Error('Dimension is not a number.');\n }\n this.unit = (unit && unit instanceof Unit) ? unit :\n new Unit(unit ? [unit] : undefined);\n this.setParent(this.unit, this);\n};\n\nDimension.prototype = Object.assign(new Node(), {\n type: 'Dimension',\n\n accept(visitor) {\n this.unit = visitor.visit(this.unit);\n },\n\n eval(context) {\n return this;\n },\n\n toColor() {\n return new Color([this.value, this.value, this.value]);\n },\n\n genCSS(context, output) {\n if ((context && context.strictUnits) && !this.unit.isSingular()) {\n throw new Error(`Multiple units in dimension. Correct the units or use the unit function. Bad unit: ${this.unit.toString()}`);\n }\n\n const value = this.fround(context, this.value);\n let strValue = String(value);\n\n if (value !== 0 && value < 0.000001 && value > -0.000001) {\n // would be output 1e-6 etc.\n strValue = value.toFixed(20).replace(/0+$/, '');\n }\n\n if (context && context.compress) {\n // Zero values doesn't need a unit\n if (value === 0 && this.unit.isLength()) {\n output.add(strValue);\n return;\n }\n\n // Float values doesn't need a leading zero\n if (value > 0 && value < 1) {\n strValue = (strValue).substr(1);\n }\n }\n\n output.add(strValue);\n this.unit.genCSS(context, output);\n },\n\n // In an operation between two Dimensions,\n // we default to the first Dimension's unit,\n // so `1px + 2` will yield `3px`.\n operate(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value), unit = this.unit.clone();\n\n if (op === '+' || op === '-') {\n if (unit.numerator.length === 0 && unit.denominator.length === 0) {\n unit = other.unit.clone();\n if (this.unit.backupUnit) {\n unit.backupUnit = this.unit.backupUnit;\n }\n } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {\n // do nothing\n } else {\n other = other.convertTo(this.unit.usedUnits());\n\n if (context.strictUnits && other.unit.toString() !== unit.toString()) {\n throw new Error(`Incompatible units. Change the units or use the unit function. `\n + `Bad units: '${unit.toString()}' and '${other.unit.toString()}'.`);\n }\n\n value = this._operate(context, op, this.value, other.value);\n }\n } else if (op === '*') {\n unit.numerator = unit.numerator.concat(other.unit.numerator).sort();\n unit.denominator = unit.denominator.concat(other.unit.denominator).sort();\n unit.cancel();\n } else if (op === '/') {\n unit.numerator = unit.numerator.concat(other.unit.denominator).sort();\n unit.denominator = unit.denominator.concat(other.unit.numerator).sort();\n unit.cancel();\n }\n return new Dimension(value, unit);\n },\n\n compare(other) {\n let a, b;\n\n if (!(other instanceof Dimension)) {\n return undefined;\n }\n\n if (this.unit.isEmpty() || other.unit.isEmpty()) {\n a = this;\n b = other;\n } else {\n a = this.unify();\n b = other.unify();\n if (a.unit.compare(b.unit) !== 0) {\n return undefined;\n }\n }\n\n return Node.numericCompare(a.value, b.value);\n },\n\n unify() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n },\n\n convertTo(conversions) {\n let value = this.value;\n const unit = this.unit.clone();\n let i;\n let groupName;\n let group;\n let targetUnit;\n let derivedConversions = {};\n let applyUnit;\n\n if (typeof conversions === 'string') {\n for (i in unitConversions) {\n if (unitConversions[i].hasOwnProperty(conversions)) {\n derivedConversions = {};\n derivedConversions[i] = conversions;\n }\n }\n conversions = derivedConversions;\n }\n applyUnit = function (atomicUnit, denominator) {\n /* jshint loopfunc:true */\n if (group.hasOwnProperty(atomicUnit)) {\n if (denominator) {\n value = value / (group[atomicUnit] / group[targetUnit]);\n } else {\n value = value * (group[atomicUnit] / group[targetUnit]);\n }\n\n return targetUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in conversions) {\n if (conversions.hasOwnProperty(groupName)) {\n targetUnit = conversions[groupName];\n group = unitConversions[groupName];\n\n unit.map(applyUnit);\n }\n }\n\n unit.cancel();\n\n return new Dimension(value, unit);\n }\n});\n\nexport default Dimension;\n"]}
|
|
1
|
+
{"version":3,"file":"dimension.js","sourceRoot":"","sources":["../../../src/less/tree/dimension.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport Unit from './unit';\nimport Color from './color';\n\n//\n// A number with a unit\n//\nconst Dimension = function(value, unit) {\n this.value = parseFloat(value);\n if (isNaN(this.value)) {\n throw new Error('Dimension is not a number.');\n }\n this.unit = (unit && unit instanceof Unit) ? unit :\n new Unit(unit ? [unit] : undefined);\n this.setParent(this.unit, this);\n};\n\nDimension.prototype = Object.assign(new Node(), {\n type: 'Dimension',\n\n accept(visitor) {\n this.unit = visitor.visit(this.unit);\n },\n\n eval(context) {\n return this;\n },\n\n toColor() {\n return new Color([this.value, this.value, this.value]);\n },\n\n genCSS(context, output) {\n if ((context && context.strictUnits) && !this.unit.isSingular()) {\n throw new Error(`Multiple units in dimension. Correct the units or use the unit function. Bad unit: ${this.unit.toString()}`);\n }\n\n const value = this.fround(context, this.value);\n let strValue = String(value);\n\n if (value !== 0 && value < 0.000001 && value > -0.000001) {\n // would be output 1e-6 etc.\n strValue = value.toFixed(20).replace(/0+$/, '');\n }\n\n if (context && context.compress) {\n // Zero values doesn't need a unit\n if (value === 0 && this.unit.isLength()) {\n output.add(strValue);\n return;\n }\n\n // Float values doesn't need a leading zero\n if (value > 0 && value < 1) {\n strValue = (strValue).substr(1);\n }\n }\n\n output.add(strValue);\n this.unit.genCSS(context, output);\n },\n\n // In an operation between two Dimensions,\n // we default to the first Dimension's unit,\n // so `1px + 2` will yield `3px`.\n operate(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value);\n let unit = this.unit.clone();\n\n if (op === '+' || op === '-') {\n if (unit.numerator.length === 0 && unit.denominator.length === 0) {\n unit = other.unit.clone();\n if (this.unit.backupUnit) {\n unit.backupUnit = this.unit.backupUnit;\n }\n } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {\n // do nothing\n } else {\n other = other.convertTo(this.unit.usedUnits());\n\n if (context.strictUnits && other.unit.toString() !== unit.toString()) {\n throw new Error(`Incompatible units. Change the units or use the unit function. `\n + `Bad units: '${unit.toString()}' and '${other.unit.toString()}'.`);\n }\n\n value = this._operate(context, op, this.value, other.value);\n }\n } else if (op === '*') {\n unit.numerator = unit.numerator.concat(other.unit.numerator).sort();\n unit.denominator = unit.denominator.concat(other.unit.denominator).sort();\n unit.cancel();\n } else if (op === '/') {\n unit.numerator = unit.numerator.concat(other.unit.denominator).sort();\n unit.denominator = unit.denominator.concat(other.unit.numerator).sort();\n unit.cancel();\n }\n return new Dimension(value, unit);\n },\n\n compare(other) {\n let a, b;\n\n if (!(other instanceof Dimension)) {\n return undefined;\n }\n\n if (this.unit.isEmpty() || other.unit.isEmpty()) {\n a = this;\n b = other;\n } else {\n a = this.unify();\n b = other.unify();\n if (a.unit.compare(b.unit) !== 0) {\n return undefined;\n }\n }\n\n return Node.numericCompare(a.value, b.value);\n },\n\n unify() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n },\n\n convertTo(conversions) {\n let value = this.value;\n const unit = this.unit.clone();\n let i;\n let groupName;\n let group;\n let targetUnit;\n let derivedConversions = {};\n let applyUnit;\n\n if (typeof conversions === 'string') {\n for (i in unitConversions) {\n if (unitConversions[i].hasOwnProperty(conversions)) {\n derivedConversions = {};\n derivedConversions[i] = conversions;\n }\n }\n conversions = derivedConversions;\n }\n applyUnit = function (atomicUnit, denominator) {\n /* jshint loopfunc:true */\n if (group.hasOwnProperty(atomicUnit)) {\n if (denominator) {\n value = value / (group[atomicUnit] / group[targetUnit]);\n } else {\n value = value * (group[atomicUnit] / group[targetUnit]);\n }\n\n return targetUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in conversions) {\n if (conversions.hasOwnProperty(groupName)) {\n targetUnit = conversions[groupName];\n group = unitConversions[groupName];\n\n unit.map(applyUnit);\n }\n }\n\n unit.cancel();\n\n return new Dimension(value, unit);\n }\n});\n\nexport default Dimension;\n"]}
|
|
@@ -5,8 +5,6 @@ var node_1 = tslib_1.__importDefault(require("./node"));
|
|
|
5
5
|
var paren_1 = tslib_1.__importDefault(require("./paren"));
|
|
6
6
|
var comment_1 = tslib_1.__importDefault(require("./comment"));
|
|
7
7
|
var dimension_1 = tslib_1.__importDefault(require("./dimension"));
|
|
8
|
-
var Constants = tslib_1.__importStar(require("../constants"));
|
|
9
|
-
var MATH = Constants.Math;
|
|
10
8
|
var Expression = function (value, noSpacing) {
|
|
11
9
|
this.value = value;
|
|
12
10
|
this.noSpacing = noSpacing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/less/tree/expression.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,0DAA4B;AAC5B,8DAAgC;AAChC,kEAAoC;
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/less/tree/expression.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Paren from './paren';\nimport Comment from './comment';\nimport Dimension from './dimension';\n\nconst Expression = function(value, noSpacing) {\n this.value = value;\n this.noSpacing = noSpacing;\n if (!value) {\n throw new Error('Expression requires an array parameter');\n }\n};\n\nExpression.prototype = Object.assign(new Node(), {\n type: 'Expression',\n\n accept(visitor) {\n this.value = visitor.visitArray(this.value);\n },\n\n eval(context) {\n let returnValue;\n const mathOn = context.isMathOn();\n const inParenthesis = this.parens;\n\n let doubleParen = false;\n if (inParenthesis) {\n context.inParenthesis();\n }\n if (this.value.length > 1) {\n returnValue = new Expression(this.value.map(function (e) {\n if (!e.eval) {\n return e;\n }\n return e.eval(context);\n }), this.noSpacing);\n } else if (this.value.length === 1) {\n if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {\n doubleParen = true;\n }\n returnValue = this.value[0].eval(context);\n } else {\n returnValue = this;\n }\n if (inParenthesis) {\n context.outOfParenthesis();\n }\n if (this.parens && this.parensInOp && !mathOn && !doubleParen \n && (!(returnValue instanceof Dimension))) {\n returnValue = new Paren(returnValue);\n }\n return returnValue;\n },\n\n genCSS(context, output) {\n for (let i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (!this.noSpacing && i + 1 < this.value.length) {\n output.add(' ');\n }\n }\n },\n\n throwAwayComments() {\n this.value = this.value.filter(function(v) {\n return !(v instanceof Comment);\n });\n }\n});\n\nexport default Expression;\n"]}
|
package/lib/less/tree/index.js
CHANGED
|
@@ -39,13 +39,40 @@ var namespace_value_1 = tslib_1.__importDefault(require("./namespace-value"));
|
|
|
39
39
|
var mixin_call_1 = tslib_1.__importDefault(require("./mixin-call"));
|
|
40
40
|
var mixin_definition_1 = tslib_1.__importDefault(require("./mixin-definition"));
|
|
41
41
|
exports.default = {
|
|
42
|
-
Node: node_1.default,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
Node: node_1.default,
|
|
43
|
+
Color: color_1.default,
|
|
44
|
+
AtRule: atrule_1.default,
|
|
45
|
+
DetachedRuleset: detached_ruleset_1.default,
|
|
46
|
+
Operation: operation_1.default,
|
|
47
|
+
Dimension: dimension_1.default,
|
|
48
|
+
Unit: unit_1.default,
|
|
49
|
+
Keyword: keyword_1.default,
|
|
50
|
+
Variable: variable_1.default,
|
|
51
|
+
Property: property_1.default,
|
|
52
|
+
Ruleset: ruleset_1.default,
|
|
53
|
+
Element: element_1.default,
|
|
54
|
+
Attribute: attribute_1.default,
|
|
55
|
+
Combinator: combinator_1.default,
|
|
56
|
+
Selector: selector_1.default,
|
|
57
|
+
Quoted: quoted_1.default,
|
|
58
|
+
Expression: expression_1.default,
|
|
59
|
+
Declaration: declaration_1.default,
|
|
60
|
+
Call: call_1.default,
|
|
61
|
+
URL: url_1.default,
|
|
62
|
+
Import: import_1.default,
|
|
63
|
+
Comment: comment_1.default,
|
|
64
|
+
Anonymous: anonymous_1.default,
|
|
65
|
+
Value: value_1.default,
|
|
66
|
+
JavaScript: javascript_1.default,
|
|
67
|
+
Assignment: assignment_1.default,
|
|
68
|
+
Condition: condition_1.default,
|
|
69
|
+
Paren: paren_1.default,
|
|
70
|
+
Media: media_1.default,
|
|
71
|
+
UnicodeDescriptor: unicode_descriptor_1.default,
|
|
72
|
+
Negative: negative_1.default,
|
|
73
|
+
Extend: extend_1.default,
|
|
74
|
+
VariableCall: variable_call_1.default,
|
|
75
|
+
NamespaceValue: namespace_value_1.default,
|
|
49
76
|
mixin: {
|
|
50
77
|
Call: mixin_call_1.default,
|
|
51
78
|
Definition: mixin_definition_1.default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/less/tree/index.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,0DAA4B;AAC5B,4DAA8B;AAC9B,gFAAiD;AACjD,kEAAoC;AACpC,kEAAoC;AACpC,wDAA0B;AAC1B,8DAAgC;AAChC,gEAAkC;AAClC,gEAAkC;AAClC,8DAAgC;AAChC,8DAAgC;AAChC,kEAAoC;AACpC,oEAAsC;AACtC,gEAAkC;AAClC,4DAA8B;AAC9B,oEAAsC;AACtC,sEAAwC;AACxC,wDAA0B;AAC1B,sDAAwB;AACxB,4DAA8B;AAC9B,8DAAgC;AAChC,kEAAoC;AACpC,0DAA4B;AAC5B,oEAAsC;AACtC,oEAAsC;AACtC,kEAAoC;AACpC,0DAA4B;AAC5B,0DAA4B;AAC5B,oFAAqD;AACrD,gEAAkC;AAClC,4DAA8B;AAC9B,0EAA2C;AAC3C,8EAA+C;AAE/C,SAAS;AACT,oEAAqC;AACrC,gFAAiD;AAEjD,kBAAe;IACX,IAAI,gBAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/less/tree/index.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,0DAA4B;AAC5B,4DAA8B;AAC9B,gFAAiD;AACjD,kEAAoC;AACpC,kEAAoC;AACpC,wDAA0B;AAC1B,8DAAgC;AAChC,gEAAkC;AAClC,gEAAkC;AAClC,8DAAgC;AAChC,8DAAgC;AAChC,kEAAoC;AACpC,oEAAsC;AACtC,gEAAkC;AAClC,4DAA8B;AAC9B,oEAAsC;AACtC,sEAAwC;AACxC,wDAA0B;AAC1B,sDAAwB;AACxB,4DAA8B;AAC9B,8DAAgC;AAChC,kEAAoC;AACpC,0DAA4B;AAC5B,oEAAsC;AACtC,oEAAsC;AACtC,kEAAoC;AACpC,0DAA4B;AAC5B,0DAA4B;AAC5B,oFAAqD;AACrD,gEAAkC;AAClC,4DAA8B;AAC9B,0EAA2C;AAC3C,8EAA+C;AAE/C,SAAS;AACT,oEAAqC;AACrC,gFAAiD;AAEjD,kBAAe;IACX,IAAI,gBAAA;IAAE,KAAK,iBAAA;IAAE,MAAM,kBAAA;IAAE,eAAe,4BAAA;IAAE,SAAS,qBAAA;IAC/C,SAAS,qBAAA;IAAE,IAAI,gBAAA;IAAE,OAAO,mBAAA;IAAE,QAAQ,oBAAA;IAAE,QAAQ,oBAAA;IAC5C,OAAO,mBAAA;IAAE,OAAO,mBAAA;IAAE,SAAS,qBAAA;IAAE,UAAU,sBAAA;IAAE,QAAQ,oBAAA;IACjD,MAAM,kBAAA;IAAE,UAAU,sBAAA;IAAE,WAAW,uBAAA;IAAE,IAAI,gBAAA;IAAE,GAAG,eAAA;IAAE,MAAM,kBAAA;IAClD,OAAO,mBAAA;IAAE,SAAS,qBAAA;IAAE,KAAK,iBAAA;IAAE,UAAU,sBAAA;IAAE,UAAU,sBAAA;IACjD,SAAS,qBAAA;IAAE,KAAK,iBAAA;IAAE,KAAK,iBAAA;IAAE,iBAAiB,8BAAA;IAAE,QAAQ,oBAAA;IACpD,MAAM,kBAAA;IAAE,YAAY,yBAAA;IAAE,cAAc,2BAAA;IACpC,KAAK,EAAE;QACH,IAAI,EAAE,oBAAS;QACf,UAAU,EAAE,0BAAe;KAC9B;CACJ,CAAC","sourcesContent":["import Node from './node';\nimport Color from './color';\nimport AtRule from './atrule';\nimport DetachedRuleset from './detached-ruleset';\nimport Operation from './operation';\nimport Dimension from './dimension';\nimport Unit from './unit';\nimport Keyword from './keyword';\nimport Variable from './variable';\nimport Property from './property';\nimport Ruleset from './ruleset';\nimport Element from './element';\nimport Attribute from './attribute';\nimport Combinator from './combinator';\nimport Selector from './selector';\nimport Quoted from './quoted';\nimport Expression from './expression';\nimport Declaration from './declaration';\nimport Call from './call';\nimport URL from './url';\nimport Import from './import';\nimport Comment from './comment';\nimport Anonymous from './anonymous';\nimport Value from './value';\nimport JavaScript from './javascript';\nimport Assignment from './assignment';\nimport Condition from './condition';\nimport Paren from './paren';\nimport Media from './media';\nimport UnicodeDescriptor from './unicode-descriptor';\nimport Negative from './negative';\nimport Extend from './extend';\nimport VariableCall from './variable-call';\nimport NamespaceValue from './namespace-value';\n\n// mixins\nimport MixinCall from './mixin-call';\nimport MixinDefinition from './mixin-definition';\n\nexport default {\n Node, Color, AtRule, DetachedRuleset, Operation,\n Dimension, Unit, Keyword, Variable, Property,\n Ruleset, Element, Attribute, Combinator, Selector,\n Quoted, Expression, Declaration, Call, URL, Import,\n Comment, Anonymous, Value, JavaScript, Assignment,\n Condition, Paren, Media, UnicodeDescriptor, Negative,\n Extend, VariableCall, NamespaceValue,\n mixin: {\n Call: MixinCall,\n Definition: MixinDefinition\n }\n};"]}
|
|
@@ -21,7 +21,8 @@ JsEvalNode.prototype = Object.assign(new node_1.default(), {
|
|
|
21
21
|
expression = new Function("return (" + expression + ")");
|
|
22
22
|
}
|
|
23
23
|
catch (e) {
|
|
24
|
-
throw { message: "JavaScript evaluation error: " + e.message + " from `" + expression + "`",
|
|
24
|
+
throw { message: "JavaScript evaluation error: " + e.message + " from `" + expression + "`",
|
|
25
|
+
filename: this.fileInfo().filename,
|
|
25
26
|
index: this.getIndex() };
|
|
26
27
|
}
|
|
27
28
|
var variables = context.frames[0].variables();
|
|
@@ -40,7 +41,8 @@ JsEvalNode.prototype = Object.assign(new node_1.default(), {
|
|
|
40
41
|
result = expression.call(evalContext);
|
|
41
42
|
}
|
|
42
43
|
catch (e) {
|
|
43
|
-
throw { message: "JavaScript evaluation error: '" + e.name + ": " + e.message.replace(/["]/g, '\'') + "'",
|
|
44
|
+
throw { message: "JavaScript evaluation error: '" + e.name + ": " + e.message.replace(/["]/g, '\'') + "'",
|
|
45
|
+
filename: this.fileInfo().filename,
|
|
44
46
|
index: this.getIndex() };
|
|
45
47
|
}
|
|
46
48
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js-eval-node.js","sourceRoot":"","sources":["../../../src/less/tree/js-eval-node.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,gEAAkC;AAElC,IAAM,UAAU,GAAG,cAAY,CAAC,CAAC;AAEjC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,cAAI,EAAE,EAAE;IAC7C,kBAAkB,YAAC,UAAU,EAAE,OAAO;QAClC,IAAI,MAAM,CAAC;QACX,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC5B,MAAM,EAAE,OAAO,EAAE,8DAA8D;gBAC3E,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;SAChC;QAED,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,IAAI;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,kBAAQ,CAAC,MAAI,IAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QAEH,IAAI;YACA,UAAU,GAAG,IAAI,QAAQ,CAAC,aAAW,UAAU,MAAG,CAAC,CAAC;SACvD;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,EAAE,OAAO,EAAE,kCAAgC,CAAC,CAAC,OAAO,eAAW,UAAU,MAAI
|
|
1
|
+
{"version":3,"file":"js-eval-node.js","sourceRoot":"","sources":["../../../src/less/tree/js-eval-node.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,gEAAkC;AAElC,IAAM,UAAU,GAAG,cAAY,CAAC,CAAC;AAEjC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,cAAI,EAAE,EAAE;IAC7C,kBAAkB,YAAC,UAAU,EAAE,OAAO;QAClC,IAAI,MAAM,CAAC;QACX,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC5B,MAAM,EAAE,OAAO,EAAE,8DAA8D;gBAC3E,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;SAChC;QAED,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,IAAI;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,kBAAQ,CAAC,MAAI,IAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QAEH,IAAI;YACA,UAAU,GAAG,IAAI,QAAQ,CAAC,aAAW,UAAU,MAAG,CAAC,CAAC;SACvD;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,EAAE,OAAO,EAAE,kCAAgC,CAAC,CAAC,OAAO,eAAW,UAAU,MAAI;gBAC/E,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;SAChC;QAED,IAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAChD,KAAK,IAAM,CAAC,IAAI,SAAS,EAAE;YACvB,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBAC7B,0BAA0B;gBAC1B,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;oBACtB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;oBACzB,IAAI,EAAE;wBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC5C,CAAC;iBACJ,CAAC;aACL;SACJ;QAED,IAAI;YACA,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzC;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,EAAE,OAAO,EAAE,mCAAiC,CAAC,CAAC,IAAI,UAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAG;gBAC3F,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;gBAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;SAChC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,YAAC,GAAG;QACL,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpD,OAAO,MAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,CAAC;SAC9E;aAAM;YACH,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;SACtB;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,kBAAe,UAAU,CAAC","sourcesContent":["import Node from './node';\nimport Variable from './variable';\n\nconst JsEvalNode = function() {};\n\nJsEvalNode.prototype = Object.assign(new Node(), {\n evaluateJavaScript(expression, context) {\n let result;\n const that = this;\n const evalContext = {};\n\n if (!context.javascriptEnabled) {\n throw { message: 'Inline JavaScript is not enabled. Is it set in your options?',\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n expression = expression.replace(/@\\{([\\w-]+)\\}/g, function (_, name) {\n return that.jsify(new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context));\n });\n\n try {\n expression = new Function(`return (${expression})`);\n } catch (e) {\n throw { message: `JavaScript evaluation error: ${e.message} from \\`${expression}\\`` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n const variables = context.frames[0].variables();\n for (const k in variables) {\n if (variables.hasOwnProperty(k)) {\n /* jshint loopfunc:true */\n evalContext[k.slice(1)] = {\n value: variables[k].value,\n toJS: function () {\n return this.value.eval(context).toCSS();\n }\n };\n }\n }\n\n try {\n result = expression.call(evalContext);\n } catch (e) {\n throw { message: `JavaScript evaluation error: '${e.name}: ${e.message.replace(/[\"]/g, '\\'')}'` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n return result;\n },\n\n jsify(obj) {\n if (Array.isArray(obj.value) && (obj.value.length > 1)) {\n return `[${obj.value.map(function (v) { return v.toCSS(); }).join(', ')}]`;\n } else {\n return obj.toCSS();\n }\n }\n});\n\nexport default JsEvalNode;\n"]}
|
|
@@ -127,7 +127,9 @@ MixinCall.prototype = Object.assign(new node_1.default(), {
|
|
|
127
127
|
else {
|
|
128
128
|
defaultResult = defTrue;
|
|
129
129
|
if ((count[defTrue] + count[defFalse]) > 1) {
|
|
130
|
-
throw { type: 'Runtime',
|
|
130
|
+
throw { type: 'Runtime',
|
|
131
|
+
message: "Ambiguous use of `default()` found when matching for `" + this.format(args) + "`",
|
|
132
|
+
index: this.getIndex(), filename: this.fileInfo().filename };
|
|
131
133
|
}
|
|
132
134
|
}
|
|
133
135
|
for (m = 0; m < candidates.length; m++) {
|
|
@@ -155,10 +157,14 @@ MixinCall.prototype = Object.assign(new node_1.default(), {
|
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
159
|
if (isOneFound) {
|
|
158
|
-
throw { type: 'Runtime',
|
|
160
|
+
throw { type: 'Runtime',
|
|
161
|
+
message: "No matching definition was found for `" + this.format(args) + "`",
|
|
162
|
+
index: this.getIndex(), filename: this.fileInfo().filename };
|
|
159
163
|
}
|
|
160
164
|
else {
|
|
161
|
-
throw { type: 'Name',
|
|
165
|
+
throw { type: 'Name',
|
|
166
|
+
message: this.selector.toCSS().trim() + " is undefined",
|
|
167
|
+
index: this.getIndex(), filename: this.fileInfo().filename };
|
|
162
168
|
}
|
|
163
169
|
},
|
|
164
170
|
_setVisibilityToReplacement: function (replacement) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixin-call.js","sourceRoot":"","sources":["../../../src/less/tree/mixin-call.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Selector from './selector';\nimport MixinDefinition from './mixin-definition';\nimport defaultFunc from '../functions/default';\n\nconst MixinCall = function(elements, args, index, currentFileInfo, important) {\n this.selector = new Selector(elements);\n this.arguments = args || [];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.important = important;\n this.allowRoot = true;\n this.setParent(this.selector, this);\n};\n\nMixinCall.prototype = Object.assign(new Node(), {\n type: 'MixinCall',\n\n accept(visitor) {\n if (this.selector) {\n this.selector = visitor.visit(this.selector);\n }\n if (this.arguments.length) {\n this.arguments = visitor.visitArray(this.arguments);\n }\n },\n\n eval(context) {\n let mixins;\n let mixin;\n let mixinPath;\n const args = [];\n let arg;\n let argValue;\n const rules = [];\n let match = false;\n let i;\n let m;\n let f;\n let isRecursive;\n let isOneFound;\n const candidates = [];\n let candidate;\n const conditionResult = [];\n let defaultResult;\n const defFalseEitherCase = -1;\n const defNone = 0;\n const defTrue = 1;\n const defFalse = 2;\n let count;\n let originalRuleset;\n let noArgumentsFilter;\n\n this.selector = this.selector.eval(context);\n\n function calcDefGroup(mixin, mixinPath) {\n let f, p, namespace;\n\n for (f = 0; f < 2; f++) {\n conditionResult[f] = true;\n defaultFunc.value(f);\n for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {\n namespace = mixinPath[p];\n if (namespace.matchCondition) {\n conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);\n }\n }\n if (mixin.matchCondition) {\n conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);\n }\n }\n if (conditionResult[0] || conditionResult[1]) {\n if (conditionResult[0] != conditionResult[1]) {\n return conditionResult[1] ?\n defTrue : defFalse;\n }\n\n return defNone;\n }\n return defFalseEitherCase;\n }\n\n for (i = 0; i < this.arguments.length; i++) {\n arg = this.arguments[i];\n argValue = arg.value.eval(context);\n if (arg.expand && Array.isArray(argValue.value)) {\n argValue = argValue.value;\n for (m = 0; m < argValue.length; m++) {\n args.push({value: argValue[m]});\n }\n } else {\n args.push({name: arg.name, value: argValue});\n }\n }\n\n noArgumentsFilter = function(rule) {return rule.matchArgs(null, context);};\n\n for (i = 0; i < context.frames.length; i++) {\n if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {\n isOneFound = true;\n\n // To make `default()` function independent of definition order we have two \"subpasses\" here.\n // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),\n // and build candidate list with corresponding flags. Then, when we know all possible matches,\n // we make a final decision.\n\n for (m = 0; m < mixins.length; m++) {\n mixin = mixins[m].rule;\n mixinPath = mixins[m].path;\n isRecursive = false;\n for (f = 0; f < context.frames.length; f++) {\n if ((!(mixin instanceof MixinDefinition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {\n isRecursive = true;\n break;\n }\n }\n if (isRecursive) {\n continue;\n }\n\n if (mixin.matchArgs(args, context)) {\n candidate = {mixin, group: calcDefGroup(mixin, mixinPath)};\n\n if (candidate.group !== defFalseEitherCase) {\n candidates.push(candidate);\n }\n\n match = true;\n }\n }\n\n defaultFunc.reset();\n\n count = [0, 0, 0];\n for (m = 0; m < candidates.length; m++) {\n count[candidates[m].group]++;\n }\n\n if (count[defNone] > 0) {\n defaultResult = defFalse;\n } else {\n defaultResult = defTrue;\n if ((count[defTrue] + count[defFalse]) > 1) {\n throw { type: 'Runtime',\n message: `Ambiguous use of \\`default()\\` found when matching for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n }\n\n for (m = 0; m < candidates.length; m++) {\n candidate = candidates[m].group;\n if ((candidate === defNone) || (candidate === defaultResult)) {\n try {\n mixin = candidates[m].mixin;\n if (!(mixin instanceof MixinDefinition)) {\n originalRuleset = mixin.originalRuleset || mixin;\n mixin = new MixinDefinition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());\n mixin.originalRuleset = originalRuleset;\n }\n const newRules = mixin.evalCall(context, args, this.important).rules;\n this._setVisibilityToReplacement(newRules);\n Array.prototype.push.apply(rules, newRules);\n } catch (e) {\n throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };\n }\n }\n }\n\n if (match) {\n return rules;\n }\n }\n }\n if (isOneFound) {\n throw { type: 'Runtime',\n message: `No matching definition was found for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n } else {\n throw { type: 'Name',\n message: `${this.selector.toCSS().trim()} is undefined`,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n },\n\n _setVisibilityToReplacement(replacement) {\n let i, rule;\n if (this.blocksVisibility()) {\n for (i = 0; i < replacement.length; i++) {\n rule = replacement[i];\n rule.addVisibilityBlock();\n }\n }\n },\n\n format(args) {\n return `${this.selector.toCSS().trim()}(${args ? args.map(function (a) {\n let argValue = '';\n if (a.name) {\n argValue += `${a.name}:`;\n }\n if (a.value.toCSS) {\n argValue += a.value.toCSS();\n } else {\n argValue += '???';\n }\n return argValue;\n }).join(', ') : ''})`;\n }\n});\n\nexport default MixinCall;\n"]}
|
|
1
|
+
{"version":3,"file":"mixin-call.js","sourceRoot":"","sources":["../../../src/less/tree/mixin-call.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Selector from './selector';\nimport MixinDefinition from './mixin-definition';\nimport defaultFunc from '../functions/default';\n\nconst MixinCall = function(elements, args, index, currentFileInfo, important) {\n this.selector = new Selector(elements);\n this.arguments = args || [];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.important = important;\n this.allowRoot = true;\n this.setParent(this.selector, this);\n};\n\nMixinCall.prototype = Object.assign(new Node(), {\n type: 'MixinCall',\n\n accept(visitor) {\n if (this.selector) {\n this.selector = visitor.visit(this.selector);\n }\n if (this.arguments.length) {\n this.arguments = visitor.visitArray(this.arguments);\n }\n },\n\n eval(context) {\n let mixins;\n let mixin;\n let mixinPath;\n const args = [];\n let arg;\n let argValue;\n const rules = [];\n let match = false;\n let i;\n let m;\n let f;\n let isRecursive;\n let isOneFound;\n const candidates = [];\n let candidate;\n const conditionResult = [];\n let defaultResult;\n const defFalseEitherCase = -1;\n const defNone = 0;\n const defTrue = 1;\n const defFalse = 2;\n let count;\n let originalRuleset;\n let noArgumentsFilter;\n\n this.selector = this.selector.eval(context);\n\n function calcDefGroup(mixin, mixinPath) {\n let f, p, namespace;\n\n for (f = 0; f < 2; f++) {\n conditionResult[f] = true;\n defaultFunc.value(f);\n for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {\n namespace = mixinPath[p];\n if (namespace.matchCondition) {\n conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);\n }\n }\n if (mixin.matchCondition) {\n conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);\n }\n }\n if (conditionResult[0] || conditionResult[1]) {\n if (conditionResult[0] != conditionResult[1]) {\n return conditionResult[1] ?\n defTrue : defFalse;\n }\n\n return defNone;\n }\n return defFalseEitherCase;\n }\n\n for (i = 0; i < this.arguments.length; i++) {\n arg = this.arguments[i];\n argValue = arg.value.eval(context);\n if (arg.expand && Array.isArray(argValue.value)) {\n argValue = argValue.value;\n for (m = 0; m < argValue.length; m++) {\n args.push({value: argValue[m]});\n }\n } else {\n args.push({name: arg.name, value: argValue});\n }\n }\n\n noArgumentsFilter = function(rule) {return rule.matchArgs(null, context);};\n\n for (i = 0; i < context.frames.length; i++) {\n if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {\n isOneFound = true;\n\n // To make `default()` function independent of definition order we have two \"subpasses\" here.\n // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),\n // and build candidate list with corresponding flags. Then, when we know all possible matches,\n // we make a final decision.\n\n for (m = 0; m < mixins.length; m++) {\n mixin = mixins[m].rule;\n mixinPath = mixins[m].path;\n isRecursive = false;\n for (f = 0; f < context.frames.length; f++) {\n if ((!(mixin instanceof MixinDefinition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {\n isRecursive = true;\n break;\n }\n }\n if (isRecursive) {\n continue;\n }\n\n if (mixin.matchArgs(args, context)) {\n candidate = {mixin, group: calcDefGroup(mixin, mixinPath)};\n\n if (candidate.group !== defFalseEitherCase) {\n candidates.push(candidate);\n }\n\n match = true;\n }\n }\n\n defaultFunc.reset();\n\n count = [0, 0, 0];\n for (m = 0; m < candidates.length; m++) {\n count[candidates[m].group]++;\n }\n\n if (count[defNone] > 0) {\n defaultResult = defFalse;\n } else {\n defaultResult = defTrue;\n if ((count[defTrue] + count[defFalse]) > 1) {\n throw { type: 'Runtime',\n message: `Ambiguous use of \\`default()\\` found when matching for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n }\n\n for (m = 0; m < candidates.length; m++) {\n candidate = candidates[m].group;\n if ((candidate === defNone) || (candidate === defaultResult)) {\n try {\n mixin = candidates[m].mixin;\n if (!(mixin instanceof MixinDefinition)) {\n originalRuleset = mixin.originalRuleset || mixin;\n mixin = new MixinDefinition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());\n mixin.originalRuleset = originalRuleset;\n }\n const newRules = mixin.evalCall(context, args, this.important).rules;\n this._setVisibilityToReplacement(newRules);\n Array.prototype.push.apply(rules, newRules);\n } catch (e) {\n throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };\n }\n }\n }\n\n if (match) {\n return rules;\n }\n }\n }\n if (isOneFound) {\n throw { type: 'Runtime',\n message: `No matching definition was found for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n } else {\n throw { type: 'Name',\n message: `${this.selector.toCSS().trim()} is undefined`,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n },\n\n _setVisibilityToReplacement(replacement) {\n let i, rule;\n if (this.blocksVisibility()) {\n for (i = 0; i < replacement.length; i++) {\n rule = replacement[i];\n rule.addVisibilityBlock();\n }\n }\n },\n\n format(args) {\n return `${this.selector.toCSS().trim()}(${args ? args.map(function (a) {\n let argValue = '';\n if (a.name) {\n argValue += `${a.name}:`;\n }\n if (a.value.toCSS) {\n argValue += a.value.toCSS();\n } else {\n argValue += '???';\n }\n return argValue;\n }).join(', ') : ''})`;\n }\n});\n\nexport default MixinCall;\n"]}
|
|
@@ -36,7 +36,9 @@ NamespaceValue.prototype = Object.assign(new node_1.default(), {
|
|
|
36
36
|
rules = rules.variable(name);
|
|
37
37
|
}
|
|
38
38
|
if (!rules) {
|
|
39
|
-
throw { type: 'Name',
|
|
39
|
+
throw { type: 'Name',
|
|
40
|
+
message: "variable " + name + " not found",
|
|
41
|
+
filename: this.fileInfo().filename,
|
|
40
42
|
index: this.getIndex() };
|
|
41
43
|
}
|
|
42
44
|
}
|
|
@@ -51,7 +53,9 @@ NamespaceValue.prototype = Object.assign(new node_1.default(), {
|
|
|
51
53
|
rules = rules.property(name);
|
|
52
54
|
}
|
|
53
55
|
if (!rules) {
|
|
54
|
-
throw { type: 'Name',
|
|
56
|
+
throw { type: 'Name',
|
|
57
|
+
message: "property \"" + name.substr(1) + "\" not found",
|
|
58
|
+
filename: this.fileInfo().filename,
|
|
55
59
|
index: this.getIndex() };
|
|
56
60
|
}
|
|
57
61
|
// Properties are an array of values, since a ruleset can have multiple props.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace-value.js","sourceRoot":"","sources":["../../../src/less/tree/namespace-value.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,gEAAkC;AAClC,8DAAgC;AAChC,gEAAkC;AAElC,IAAM,cAAc,GAAG,UAAS,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ;IAC9D,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,cAAI,EAAE,EAAE;IACjD,IAAI,EAAE,gBAAgB;IAEtB,IAAI,YAAC,OAAO;QACR,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEvB;;;;eAIG;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,KAAK,GAAG,IAAI,iBAAO,CAAC,CAAC,IAAI,kBAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;aAChD;YAED,IAAI,IAAI,KAAK,EAAE,EAAE;gBACb,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;aACnC;iBACI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBACxB,IAAI,GAAG,MAAI,IAAI,kBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAO,CAAC;iBACjE;gBACD,IAAI,KAAK,CAAC,SAAS,EAAE;oBACjB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAChC;gBAED,IAAI,CAAC,KAAK,EAAE;oBACR,MAAM,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"namespace-value.js","sourceRoot":"","sources":["../../../src/less/tree/namespace-value.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport Selector from './selector';\n\nconst NamespaceValue = function(ruleCall, lookups, index, fileInfo) {\n this.value = ruleCall;\n this.lookups = lookups;\n this._index = index;\n this._fileInfo = fileInfo;\n};\n\nNamespaceValue.prototype = Object.assign(new Node(), {\n type: 'NamespaceValue',\n\n eval(context) {\n let i, j, name, rules = this.value.eval(context);\n \n for (i = 0; i < this.lookups.length; i++) {\n name = this.lookups[i];\n\n /**\n * Eval'd DRs return rulesets.\n * Eval'd mixins return rules, so let's make a ruleset if we need it.\n * We need to do this because of late parsing of values\n */\n if (Array.isArray(rules)) {\n rules = new Ruleset([new Selector()], rules);\n }\n\n if (name === '') {\n rules = rules.lastDeclaration();\n }\n else if (name.charAt(0) === '@') {\n if (name.charAt(1) === '@') {\n name = `@${new Variable(name.substr(1)).eval(context).value}`;\n }\n if (rules.variables) {\n rules = rules.variable(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `variable ${name} not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n }\n else {\n if (name.substring(0, 2) === '$@') {\n name = `$${new Variable(name.substr(1)).eval(context).value}`;\n }\n else {\n name = name.charAt(0) === '$' ? name : `$${name}`;\n }\n if (rules.properties) {\n rules = rules.property(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `property \"${name.substr(1)}\" not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n // Properties are an array of values, since a ruleset can have multiple props.\n // We pick the last one (the \"cascaded\" value)\n rules = rules[rules.length - 1];\n }\n\n if (rules.value) {\n rules = rules.eval(context).value;\n }\n if (rules.ruleset) {\n rules = rules.ruleset.eval(context);\n }\n }\n return rules;\n }\n});\n\nexport default NamespaceValue;\n"]}
|
package/lib/less/tree/node.js
CHANGED
|
@@ -13,14 +13,21 @@ var Node = /** @class */ (function () {
|
|
|
13
13
|
this.nodeVisible = undefined;
|
|
14
14
|
this.rootNode = null;
|
|
15
15
|
this.parsed = null;
|
|
16
|
-
var self = this;
|
|
17
|
-
Object.defineProperty(this, 'currentFileInfo', {
|
|
18
|
-
get: function () { return self.fileInfo(); }
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(this, 'index', {
|
|
21
|
-
get: function () { return self.getIndex(); }
|
|
22
|
-
});
|
|
23
16
|
}
|
|
17
|
+
Object.defineProperty(Node.prototype, "currentFileInfo", {
|
|
18
|
+
get: function () {
|
|
19
|
+
return this.fileInfo();
|
|
20
|
+
},
|
|
21
|
+
enumerable: false,
|
|
22
|
+
configurable: true
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(Node.prototype, "index", {
|
|
25
|
+
get: function () {
|
|
26
|
+
return this.getIndex();
|
|
27
|
+
},
|
|
28
|
+
enumerable: false,
|
|
29
|
+
configurable: true
|
|
30
|
+
});
|
|
24
31
|
Node.prototype.setParent = function (nodes, parent) {
|
|
25
32
|
function set(node) {
|
|
26
33
|
if (node && node instanceof Node) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/less/tree/node.js"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH;IACI;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/less/tree/node.js"],"names":[],"mappings":"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","sourcesContent":["/**\n * The reason why Node is a class and other nodes simply do not extend\n * from Node (since we're transpiling) is due to this issue:\n * \n * https://github.com/less/less.js/issues/3434\n */\nclass Node {\n constructor() {\n this.parent = null;\n this.visibilityBlocks = undefined;\n this.nodeVisible = undefined;\n this.rootNode = null;\n this.parsed = null;\n }\n\n get currentFileInfo() {\n return this.fileInfo();\n }\n\n get index() {\n return this.getIndex();\n }\n\n setParent(nodes, parent) {\n function set(node) {\n if (node && node instanceof Node) {\n node.parent = parent;\n }\n }\n if (Array.isArray(nodes)) {\n nodes.forEach(set);\n }\n else {\n set(nodes);\n }\n }\n\n getIndex() {\n return this._index || (this.parent && this.parent.getIndex()) || 0;\n }\n\n fileInfo() {\n return this._fileInfo || (this.parent && this.parent.fileInfo()) || {};\n }\n\n isRulesetLike() { return false; }\n\n toCSS(context) {\n const strs = [];\n this.genCSS(context, {\n add: function(chunk, fileInfo, index) {\n strs.push(chunk);\n },\n isEmpty: function () {\n return strs.length === 0;\n }\n });\n return strs.join('');\n }\n\n genCSS(context, output) {\n output.add(this.value);\n }\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n }\n\n eval() { return this; }\n\n _operate(context, op, a, b) {\n switch (op) {\n case '+': return a + b;\n case '-': return a - b;\n case '*': return a * b;\n case '/': return a / b;\n }\n }\n\n fround(context, value) {\n const precision = context && context.numPrecision;\n // add \"epsilon\" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded:\n return (precision) ? Number((value + 2e-16).toFixed(precision)) : value;\n }\n\n static compare(a, b) {\n /* returns:\n -1: a < b\n 0: a = b\n 1: a > b\n and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */\n\n if ((a.compare) &&\n // for \"symmetric results\" force toCSS-based comparison\n // of Quoted or Anonymous if either value is one of those\n !(b.type === 'Quoted' || b.type === 'Anonymous')) {\n return a.compare(b);\n } else if (b.compare) {\n return -b.compare(a);\n } else if (a.type !== b.type) {\n return undefined;\n }\n\n a = a.value;\n b = b.value;\n if (!Array.isArray(a)) {\n return a === b ? 0 : undefined;\n }\n if (a.length !== b.length) {\n return undefined;\n }\n for (let i = 0; i < a.length; i++) {\n if (Node.compare(a[i], b[i]) !== 0) {\n return undefined;\n }\n }\n return 0;\n }\n\n static numericCompare(a, b) {\n return a < b ? -1\n : a === b ? 0\n : a > b ? 1 : undefined;\n }\n\n // Returns true if this node represents root of ast imported by reference\n blocksVisibility() {\n if (this.visibilityBlocks == null) {\n this.visibilityBlocks = 0;\n }\n return this.visibilityBlocks !== 0;\n }\n\n addVisibilityBlock() {\n if (this.visibilityBlocks == null) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks + 1;\n }\n\n removeVisibilityBlock() {\n if (this.visibilityBlocks == null) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks - 1;\n }\n\n // Turns on node visibility - if called node will be shown in output regardless\n // of whether it comes from import by reference or not\n ensureVisibility() {\n this.nodeVisible = true;\n }\n\n // Turns off node visibility - if called node will NOT be shown in output regardless\n // of whether it comes from import by reference or not\n ensureInvisibility() {\n this.nodeVisible = false;\n }\n\n // return values:\n // false - the node must not be visible\n // true - the node must be visible\n // undefined or null - the node has the same visibility as its parent\n isVisible() {\n return this.nodeVisible;\n }\n\n visibilityInfo() {\n return {\n visibilityBlocks: this.visibilityBlocks,\n nodeVisible: this.nodeVisible\n };\n }\n\n copyVisibilityInfo(info) {\n if (!info) {\n return;\n }\n this.visibilityBlocks = info.visibilityBlocks;\n this.nodeVisible = info.nodeVisible;\n }\n}\n\nexport default Node;\n"]}
|
|
@@ -26,8 +26,9 @@ Operation.prototype = Object.assign(new node_1.default(), {
|
|
|
26
26
|
if (b instanceof dimension_1.default && a instanceof color_1.default) {
|
|
27
27
|
b = b.toColor();
|
|
28
28
|
}
|
|
29
|
-
if (!a.operate) {
|
|
30
|
-
if (a instanceof Operation
|
|
29
|
+
if (!a.operate || !b.operate) {
|
|
30
|
+
if ((a instanceof Operation || b instanceof Operation)
|
|
31
|
+
&& a.op === '/' && context.math === MATH.PARENS_DIVISION) {
|
|
31
32
|
return new Operation(this.op, [a, b], this.isSpaced);
|
|
32
33
|
}
|
|
33
34
|
throw { type: 'Operation',
|