less 3.13.1 → 4.1.0
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/Gruntfile.js +1 -1
- package/bin/lessc +14 -3
- package/dist/less.js +11156 -11157
- package/dist/less.min.js +3 -3
- package/dist/less.min.js.map +1 -1
- package/lib/less/constants.js +2 -2
- package/lib/less/constants.js.map +1 -1
- package/lib/less/contexts.js +88 -110
- package/lib/less/contexts.js.map +1 -1
- package/lib/less/data/index.js +3 -5
- package/lib/less/data/index.js.map +1 -1
- package/lib/less/default-options.js +57 -53
- package/lib/less/default-options.js.map +1 -1
- package/lib/less/environment/abstract-file-manager.js +6 -6
- package/lib/less/environment/abstract-file-manager.js.map +1 -1
- package/lib/less/environment/abstract-plugin-loader.js +7 -13
- package/lib/less/environment/abstract-plugin-loader.js.map +1 -1
- package/lib/less/environment/environment.js +9 -11
- package/lib/less/environment/environment.js.map +1 -1
- package/lib/less/functions/boolean.js +14 -6
- package/lib/less/functions/boolean.js.map +1 -1
- package/lib/less/functions/color-blending.js +2 -4
- package/lib/less/functions/color-blending.js.map +1 -1
- package/lib/less/functions/color.js +41 -9
- package/lib/less/functions/color.js.map +1 -1
- package/lib/less/functions/data-uri.js +5 -26
- package/lib/less/functions/data-uri.js.map +1 -1
- package/lib/less/functions/default.js +2 -4
- package/lib/less/functions/default.js.map +1 -1
- package/lib/less/functions/function-caller.js +19 -35
- package/lib/less/functions/function-caller.js.map +1 -1
- package/lib/less/functions/index.js +14 -16
- package/lib/less/functions/index.js.map +1 -1
- package/lib/less/functions/list.js +21 -12
- package/lib/less/functions/list.js.map +1 -1
- package/lib/less/functions/math-helper.js +2 -4
- package/lib/less/functions/math-helper.js.map +1 -1
- package/lib/less/functions/math.js +2 -4
- package/lib/less/functions/math.js.map +1 -1
- package/lib/less/functions/number.js +12 -8
- package/lib/less/functions/number.js.map +1 -1
- package/lib/less/functions/string.js +4 -6
- package/lib/less/functions/string.js.map +1 -1
- package/lib/less/functions/svg.js +6 -8
- package/lib/less/functions/svg.js.map +1 -1
- package/lib/less/functions/types.js +9 -11
- package/lib/less/functions/types.js.map +1 -1
- package/lib/less/import-manager.js +6 -27
- package/lib/less/import-manager.js.map +1 -1
- package/lib/less/index.js +48 -82
- package/lib/less/index.js.map +1 -1
- package/lib/less/less-error.js +6 -24
- package/lib/less/less-error.js.map +1 -1
- package/lib/less/parse-tree.js +8 -8
- package/lib/less/parse-tree.js.map +1 -1
- package/lib/less/parse.js +11 -31
- package/lib/less/parse.js.map +1 -1
- package/lib/less/parser/chunker.js +4 -2
- package/lib/less/parser/chunker.js.map +1 -1
- package/lib/less/parser/parser-input.js +2 -4
- package/lib/less/parser/parser-input.js.map +1 -1
- package/lib/less/parser/parser.js +8 -29
- package/lib/less/parser/parser.js.map +1 -1
- package/lib/less/plugin-manager.js +2 -3
- package/lib/less/plugin-manager.js.map +1 -1
- package/lib/less/render.js +6 -22
- package/lib/less/render.js.map +1 -1
- package/lib/less/source-map-builder.js +4 -2
- package/lib/less/source-map-builder.js.map +1 -1
- package/lib/less/source-map-output.js +5 -7
- package/lib/less/source-map-output.js.map +1 -1
- package/lib/less/transform-tree.js +9 -9
- package/lib/less/transform-tree.js.map +1 -1
- package/lib/less/tree/anonymous.js +19 -20
- package/lib/less/tree/anonymous.js.map +1 -1
- package/lib/less/tree/assignment.js +22 -23
- package/lib/less/tree/assignment.js.map +1 -1
- package/lib/less/tree/atrule.js +105 -116
- package/lib/less/tree/atrule.js.map +1 -1
- package/lib/less/tree/attribute.js +18 -19
- package/lib/less/tree/attribute.js.map +1 -1
- package/lib/less/tree/call.js +68 -69
- package/lib/less/tree/call.js.map +1 -1
- package/lib/less/tree/color.js +163 -172
- package/lib/less/tree/color.js.map +1 -1
- package/lib/less/tree/combinator.js +9 -10
- package/lib/less/tree/combinator.js.map +1 -1
- package/lib/less/tree/comment.js +15 -16
- package/lib/less/tree/comment.js.map +1 -1
- package/lib/less/tree/condition.js +29 -30
- package/lib/less/tree/condition.js.map +1 -1
- package/lib/less/tree/debug-info.js +32 -30
- package/lib/less/tree/debug-info.js.map +1 -1
- package/lib/less/tree/declaration.js +71 -95
- package/lib/less/tree/declaration.js.map +1 -1
- package/lib/less/tree/detached-ruleset.js +18 -38
- package/lib/less/tree/detached-ruleset.js.map +1 -1
- package/lib/less/tree/dimension.js +126 -129
- package/lib/less/tree/dimension.js.map +1 -1
- package/lib/less/tree/element.js +40 -41
- package/lib/less/tree/element.js.map +1 -1
- package/lib/less/tree/expression.js +55 -74
- package/lib/less/tree/expression.js.map +1 -1
- package/lib/less/tree/extend.js +28 -34
- package/lib/less/tree/extend.js.map +1 -1
- package/lib/less/tree/import.js +120 -140
- package/lib/less/tree/import.js.map +1 -1
- package/lib/less/tree/index.js +37 -39
- package/lib/less/tree/index.js.map +1 -1
- package/lib/less/tree/javascript.js +23 -24
- package/lib/less/tree/javascript.js.map +1 -1
- package/lib/less/tree/js-eval-node.js +51 -50
- package/lib/less/tree/js-eval-node.js.map +1 -1
- package/lib/less/tree/keyword.js +10 -11
- package/lib/less/tree/keyword.js.map +1 -1
- package/lib/less/tree/media.js +111 -131
- package/lib/less/tree/media.js.map +1 -1
- package/lib/less/tree/mixin-call.js +156 -160
- package/lib/less/tree/mixin-call.js.map +1 -1
- package/lib/less/tree/mixin-definition.js +164 -184
- package/lib/less/tree/mixin-definition.js.map +1 -1
- package/lib/less/tree/namespace-value.js +53 -57
- package/lib/less/tree/namespace-value.js.map +1 -1
- package/lib/less/tree/negative.js +16 -17
- package/lib/less/tree/negative.js.map +1 -1
- package/lib/less/tree/node.js +39 -39
- package/lib/less/tree/node.js.map +1 -1
- package/lib/less/tree/operation.js +41 -63
- package/lib/less/tree/operation.js.map +1 -1
- package/lib/less/tree/paren.js +13 -14
- package/lib/less/tree/paren.js.map +1 -1
- package/lib/less/tree/property.js +48 -49
- package/lib/less/tree/property.js.map +1 -1
- package/lib/less/tree/quoted.js +50 -51
- package/lib/less/tree/quoted.js.map +1 -1
- package/lib/less/tree/ruleset.js +665 -702
- package/lib/less/tree/ruleset.js.map +1 -1
- package/lib/less/tree/selector.js +105 -106
- package/lib/less/tree/selector.js.map +1 -1
- package/lib/less/tree/unicode-descriptor.js +5 -6
- package/lib/less/tree/unicode-descriptor.js.map +1 -1
- package/lib/less/tree/unit.js +99 -120
- package/lib/less/tree/unit.js.map +1 -1
- package/lib/less/tree/url.js +44 -45
- package/lib/less/tree/url.js.map +1 -1
- package/lib/less/tree/value.js +27 -26
- package/lib/less/tree/value.js.map +1 -1
- package/lib/less/tree/variable-call.js +30 -31
- package/lib/less/tree/variable-call.js.map +1 -1
- package/lib/less/tree/variable.js +46 -48
- package/lib/less/tree/variable.js.map +1 -1
- package/lib/less/utils.js +5 -23
- package/lib/less/utils.js.map +1 -1
- package/lib/less/visitors/extend-visitor.js +14 -41
- package/lib/less/visitors/extend-visitor.js.map +1 -1
- package/lib/less/visitors/import-sequencer.js +2 -7
- package/lib/less/visitors/import-sequencer.js.map +1 -1
- package/lib/less/visitors/import-visitor.js +7 -33
- package/lib/less/visitors/import-visitor.js.map +1 -1
- package/lib/less/visitors/index.js +7 -9
- package/lib/less/visitors/index.js.map +1 -1
- package/lib/less/visitors/join-selector-visitor.js +2 -4
- package/lib/less/visitors/join-selector-visitor.js.map +1 -1
- package/lib/less/visitors/to-css-visitor.js +4 -6
- package/lib/less/visitors/to-css-visitor.js.map +1 -1
- package/lib/less/visitors/visitor.js +4 -12
- package/lib/less/visitors/visitor.js.map +1 -1
- package/lib/less-browser/add-default-options.js +2 -4
- package/lib/less-browser/add-default-options.js.map +1 -1
- package/lib/less-browser/bootstrap.js +4 -6
- package/lib/less-browser/bootstrap.js.map +1 -1
- package/lib/less-browser/browser.js +2 -20
- package/lib/less-browser/browser.js.map +1 -1
- package/lib/less-browser/error-reporting.js +3 -24
- package/lib/less-browser/error-reporting.js.map +1 -1
- package/lib/less-browser/file-manager.js +17 -36
- package/lib/less-browser/file-manager.js.map +1 -1
- package/lib/less-browser/image-size.js +2 -4
- package/lib/less-browser/image-size.js.map +1 -1
- package/lib/less-browser/index.js +9 -11
- package/lib/less-browser/index.js.map +1 -1
- package/lib/less-browser/plugin-loader.js +10 -29
- package/lib/less-browser/plugin-loader.js.map +1 -1
- package/lib/less-node/file-manager.js +15 -34
- package/lib/less-node/file-manager.js.map +1 -1
- package/lib/less-node/image-size.js +4 -6
- package/lib/less-node/image-size.js.map +1 -1
- package/lib/less-node/index.js +10 -16
- package/lib/less-node/index.js.map +1 -1
- package/lib/less-node/plugin-loader.js +23 -42
- package/lib/less-node/plugin-loader.js.map +1 -1
- package/lib/less-node/url-file-manager.js +23 -38
- package/lib/less-node/url-file-manager.js.map +1 -1
- package/package.json +12 -9
- package/test/browser/less/errors/image-height-error.txt +1 -1
- package/test/browser/less/errors/image-size-error.txt +1 -1
- package/test/browser/less/errors/image-width-error.txt +1 -1
- package/test/index.js +28 -9
- package/test/less-test.js +36 -16
- package/tsconfig.json +1 -0
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var node_1 = tslib_1.__importDefault(require("./node"));
|
|
5
|
+
var unit_conversions_1 = tslib_1.__importDefault(require("../data/unit-conversions"));
|
|
6
|
+
var unit_1 = tslib_1.__importDefault(require("./unit"));
|
|
7
|
+
var color_1 = tslib_1.__importDefault(require("./color"));
|
|
10
8
|
//
|
|
11
9
|
// A number with a unit
|
|
12
10
|
//
|
|
@@ -19,141 +17,140 @@ var Dimension = function (value, unit) {
|
|
|
19
17
|
new unit_1.default(unit ? [unit] : undefined);
|
|
20
18
|
this.setParent(this.unit, this);
|
|
21
19
|
};
|
|
22
|
-
Dimension.prototype = new node_1.default()
|
|
23
|
-
Dimension
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var value = this.fround(context, this.value);
|
|
37
|
-
var strValue = String(value);
|
|
38
|
-
if (value !== 0 && value < 0.000001 && value > -0.000001) {
|
|
39
|
-
// would be output 1e-6 etc.
|
|
40
|
-
strValue = value.toFixed(20).replace(/0+$/, '');
|
|
41
|
-
}
|
|
42
|
-
if (context && context.compress) {
|
|
43
|
-
// Zero values doesn't need a unit
|
|
44
|
-
if (value === 0 && this.unit.isLength()) {
|
|
45
|
-
output.add(strValue);
|
|
46
|
-
return;
|
|
20
|
+
Dimension.prototype = Object.assign(new node_1.default(), {
|
|
21
|
+
type: 'Dimension',
|
|
22
|
+
accept: function (visitor) {
|
|
23
|
+
this.unit = visitor.visit(this.unit);
|
|
24
|
+
},
|
|
25
|
+
eval: function (context) {
|
|
26
|
+
return this;
|
|
27
|
+
},
|
|
28
|
+
toColor: function () {
|
|
29
|
+
return new color_1.default([this.value, this.value, this.value]);
|
|
30
|
+
},
|
|
31
|
+
genCSS: function (context, output) {
|
|
32
|
+
if ((context && context.strictUnits) && !this.unit.isSingular()) {
|
|
33
|
+
throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: " + this.unit.toString());
|
|
47
34
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
35
|
+
var value = this.fround(context, this.value);
|
|
36
|
+
var strValue = String(value);
|
|
37
|
+
if (value !== 0 && value < 0.000001 && value > -0.000001) {
|
|
38
|
+
// would be output 1e-6 etc.
|
|
39
|
+
strValue = value.toFixed(20).replace(/0+$/, '');
|
|
51
40
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var value = this._operate(context, op, this.value, other.value);
|
|
62
|
-
var unit = this.unit.clone();
|
|
63
|
-
if (op === '+' || op === '-') {
|
|
64
|
-
if (unit.numerator.length === 0 && unit.denominator.length === 0) {
|
|
65
|
-
unit = other.unit.clone();
|
|
66
|
-
if (this.unit.backupUnit) {
|
|
67
|
-
unit.backupUnit = this.unit.backupUnit;
|
|
41
|
+
if (context && context.compress) {
|
|
42
|
+
// Zero values doesn't need a unit
|
|
43
|
+
if (value === 0 && this.unit.isLength()) {
|
|
44
|
+
output.add(strValue);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Float values doesn't need a leading zero
|
|
48
|
+
if (value > 0 && value < 1) {
|
|
49
|
+
strValue = (strValue).substr(1);
|
|
68
50
|
}
|
|
69
51
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
52
|
+
output.add(strValue);
|
|
53
|
+
this.unit.genCSS(context, output);
|
|
54
|
+
},
|
|
55
|
+
// In an operation between two Dimensions,
|
|
56
|
+
// we default to the first Dimension's unit,
|
|
57
|
+
// so `1px + 2` will yield `3px`.
|
|
58
|
+
operate: function (context, op, other) {
|
|
59
|
+
/* jshint noempty:false */
|
|
60
|
+
var value = this._operate(context, op, this.value, other.value), unit = this.unit.clone();
|
|
61
|
+
if (op === '+' || op === '-') {
|
|
62
|
+
if (unit.numerator.length === 0 && unit.denominator.length === 0) {
|
|
63
|
+
unit = other.unit.clone();
|
|
64
|
+
if (this.unit.backupUnit) {
|
|
65
|
+
unit.backupUnit = this.unit.backupUnit;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {
|
|
69
|
+
// do nothing
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
other = other.convertTo(this.unit.usedUnits());
|
|
73
|
+
if (context.strictUnits && other.unit.toString() !== unit.toString()) {
|
|
74
|
+
throw new Error("Incompatible units. Change the units or use the unit function. "
|
|
75
|
+
+ ("Bad units: '" + unit.toString() + "' and '" + other.unit.toString() + "'."));
|
|
76
|
+
}
|
|
77
|
+
value = this._operate(context, op, this.value, other.value);
|
|
78
78
|
}
|
|
79
|
-
value = this._operate(context, op, this.value, other.value);
|
|
80
79
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
var b;
|
|
97
|
-
if (!(other instanceof Dimension)) {
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
if (this.unit.isEmpty() || other.unit.isEmpty()) {
|
|
101
|
-
a = this;
|
|
102
|
-
b = other;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
a = this.unify();
|
|
106
|
-
b = other.unify();
|
|
107
|
-
if (a.unit.compare(b.unit) !== 0) {
|
|
80
|
+
else if (op === '*') {
|
|
81
|
+
unit.numerator = unit.numerator.concat(other.unit.numerator).sort();
|
|
82
|
+
unit.denominator = unit.denominator.concat(other.unit.denominator).sort();
|
|
83
|
+
unit.cancel();
|
|
84
|
+
}
|
|
85
|
+
else if (op === '/') {
|
|
86
|
+
unit.numerator = unit.numerator.concat(other.unit.denominator).sort();
|
|
87
|
+
unit.denominator = unit.denominator.concat(other.unit.numerator).sort();
|
|
88
|
+
unit.cancel();
|
|
89
|
+
}
|
|
90
|
+
return new Dimension(value, unit);
|
|
91
|
+
},
|
|
92
|
+
compare: function (other) {
|
|
93
|
+
var a, b;
|
|
94
|
+
if (!(other instanceof Dimension)) {
|
|
108
95
|
return undefined;
|
|
109
96
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Dimension.prototype.unify = function () {
|
|
114
|
-
return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });
|
|
115
|
-
};
|
|
116
|
-
Dimension.prototype.convertTo = function (conversions) {
|
|
117
|
-
var value = this.value;
|
|
118
|
-
var unit = this.unit.clone();
|
|
119
|
-
var i;
|
|
120
|
-
var groupName;
|
|
121
|
-
var group;
|
|
122
|
-
var targetUnit;
|
|
123
|
-
var derivedConversions = {};
|
|
124
|
-
var applyUnit;
|
|
125
|
-
if (typeof conversions === 'string') {
|
|
126
|
-
for (i in unit_conversions_1.default) {
|
|
127
|
-
if (unit_conversions_1.default[i].hasOwnProperty(conversions)) {
|
|
128
|
-
derivedConversions = {};
|
|
129
|
-
derivedConversions[i] = conversions;
|
|
130
|
-
}
|
|
97
|
+
if (this.unit.isEmpty() || other.unit.isEmpty()) {
|
|
98
|
+
a = this;
|
|
99
|
+
b = other;
|
|
131
100
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (denominator) {
|
|
138
|
-
value = value / (group[atomicUnit] / group[targetUnit]);
|
|
101
|
+
else {
|
|
102
|
+
a = this.unify();
|
|
103
|
+
b = other.unify();
|
|
104
|
+
if (a.unit.compare(b.unit) !== 0) {
|
|
105
|
+
return undefined;
|
|
139
106
|
}
|
|
140
|
-
|
|
141
|
-
|
|
107
|
+
}
|
|
108
|
+
return node_1.default.numericCompare(a.value, b.value);
|
|
109
|
+
},
|
|
110
|
+
unify: function () {
|
|
111
|
+
return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });
|
|
112
|
+
},
|
|
113
|
+
convertTo: function (conversions) {
|
|
114
|
+
var value = this.value;
|
|
115
|
+
var unit = this.unit.clone();
|
|
116
|
+
var i;
|
|
117
|
+
var groupName;
|
|
118
|
+
var group;
|
|
119
|
+
var targetUnit;
|
|
120
|
+
var derivedConversions = {};
|
|
121
|
+
var applyUnit;
|
|
122
|
+
if (typeof conversions === 'string') {
|
|
123
|
+
for (i in unit_conversions_1.default) {
|
|
124
|
+
if (unit_conversions_1.default[i].hasOwnProperty(conversions)) {
|
|
125
|
+
derivedConversions = {};
|
|
126
|
+
derivedConversions[i] = conversions;
|
|
127
|
+
}
|
|
142
128
|
}
|
|
143
|
-
|
|
129
|
+
conversions = derivedConversions;
|
|
144
130
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
131
|
+
applyUnit = function (atomicUnit, denominator) {
|
|
132
|
+
/* jshint loopfunc:true */
|
|
133
|
+
if (group.hasOwnProperty(atomicUnit)) {
|
|
134
|
+
if (denominator) {
|
|
135
|
+
value = value / (group[atomicUnit] / group[targetUnit]);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
value = value * (group[atomicUnit] / group[targetUnit]);
|
|
139
|
+
}
|
|
140
|
+
return targetUnit;
|
|
141
|
+
}
|
|
142
|
+
return atomicUnit;
|
|
143
|
+
};
|
|
144
|
+
for (groupName in conversions) {
|
|
145
|
+
if (conversions.hasOwnProperty(groupName)) {
|
|
146
|
+
targetUnit = conversions[groupName];
|
|
147
|
+
group = unit_conversions_1.default[groupName];
|
|
148
|
+
unit.map(applyUnit);
|
|
149
|
+
}
|
|
152
150
|
}
|
|
151
|
+
unit.cancel();
|
|
152
|
+
return new Dimension(value, unit);
|
|
153
153
|
}
|
|
154
|
-
|
|
155
|
-
return new Dimension(value, unit);
|
|
156
|
-
};
|
|
157
|
-
Dimension.prototype.type = 'Dimension';
|
|
154
|
+
});
|
|
158
155
|
exports.default = Dimension;
|
|
159
156
|
//# sourceMappingURL=dimension.js.map
|
|
@@ -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 = new Node();\n\nDimension.prototype.accept = function(visitor) {\n this.unit = visitor.visit(this.unit);\n};\n\nDimension.prototype.eval = function(context) {\n return this;\n};\n\nDimension.prototype.toColor = function() {\n return new Color([this.value, this.value, this.value]);\n};\n\nDimension.prototype.genCSS = function(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`.\nDimension.prototype.operate = function(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value);\n\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\nDimension.prototype.compare = function(other) {\n let a;\n let 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\nDimension.prototype.unify = function() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n};\n\nDimension.prototype.convertTo = function(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 = (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\nDimension.prototype.type = 'Dimension';\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), 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"]}
|
package/lib/less/tree/element.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var node_1 = tslib_1.__importDefault(require("./node"));
|
|
5
|
+
var paren_1 = tslib_1.__importDefault(require("./paren"));
|
|
6
|
+
var combinator_1 = tslib_1.__importDefault(require("./combinator"));
|
|
9
7
|
var Element = function (combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {
|
|
10
8
|
this.combinator = combinator instanceof combinator_1.default ?
|
|
11
9
|
combinator : new combinator_1.default(combinator);
|
|
@@ -24,41 +22,42 @@ var Element = function (combinator, value, isVariable, index, currentFileInfo, v
|
|
|
24
22
|
this.copyVisibilityInfo(visibilityInfo);
|
|
25
23
|
this.setParent(this.combinator, this);
|
|
26
24
|
};
|
|
27
|
-
Element.prototype = new node_1.default()
|
|
28
|
-
Element
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
25
|
+
Element.prototype = Object.assign(new node_1.default(), {
|
|
26
|
+
type: 'Element',
|
|
27
|
+
accept: function (visitor) {
|
|
28
|
+
var value = this.value;
|
|
29
|
+
this.combinator = visitor.visit(this.combinator);
|
|
30
|
+
if (typeof value === 'object') {
|
|
31
|
+
this.value = visitor.visit(value);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
eval: function (context) {
|
|
35
|
+
return new Element(this.combinator, this.value.eval ? this.value.eval(context) : this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo());
|
|
36
|
+
},
|
|
37
|
+
clone: function () {
|
|
38
|
+
return new Element(this.combinator, this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo());
|
|
39
|
+
},
|
|
40
|
+
genCSS: function (context, output) {
|
|
41
|
+
output.add(this.toCSS(context), this.fileInfo(), this.getIndex());
|
|
42
|
+
},
|
|
43
|
+
toCSS: function (context) {
|
|
44
|
+
context = context || {};
|
|
45
|
+
var value = this.value;
|
|
46
|
+
var firstSelector = context.firstSelector;
|
|
47
|
+
if (value instanceof paren_1.default) {
|
|
48
|
+
// selector in parens should not be affected by outer selector
|
|
49
|
+
// flags (breaks only interpolated selectors - see #1973)
|
|
50
|
+
context.firstSelector = true;
|
|
51
|
+
}
|
|
52
|
+
value = value.toCSS ? value.toCSS(context) : value;
|
|
53
|
+
context.firstSelector = firstSelector;
|
|
54
|
+
if (value === '' && this.combinator.value.charAt(0) === '&') {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return this.combinator.toCSS(context) + value;
|
|
59
|
+
}
|
|
57
60
|
}
|
|
58
|
-
|
|
59
|
-
return this.combinator.toCSS(context) + value;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
Element.prototype.type = 'Element';
|
|
61
|
+
});
|
|
63
62
|
exports.default = Element;
|
|
64
63
|
//# sourceMappingURL=element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../../src/less/tree/element.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../../src/less/tree/element.js"],"names":[],"mappings":";;;AAAA,wDAA0B;AAC1B,0DAA4B;AAC5B,oEAAsC;AAEtC,IAAM,OAAO,GAAG,UAAS,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc;IAC1F,IAAI,CAAC,UAAU,GAAG,UAAU,YAAY,oBAAU,CAAC,CAAC;QAChD,UAAU,CAAC,CAAC,CAAC,IAAI,oBAAU,CAAC,UAAU,CAAC,CAAC;IAE5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;KAC7B;SAAM,IAAI,KAAK,EAAE;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;SAAM;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACnB;IACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;IACjC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAA;AAED,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,cAAI,EAAE,EAAE;IAC1C,IAAI,EAAE,SAAS;IAEf,MAAM,YAAC,OAAO;QACV,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrC;IACL,CAAC;IAED,IAAI,YAAC,OAAO;QACR,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EACvD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QACD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAC9B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,YAAC,OAAO,EAAE,MAAM;QAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,YAAC,OAAO;QACT,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,KAAK,YAAY,eAAK,EAAE;YACxB,8DAA8D;YAC9D,yDAAyD;YACzD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;SAChC;QACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACtC,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACzD,OAAO,EAAE,CAAC;SACb;aAAM;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;SACjD;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,kBAAe,OAAO,CAAC","sourcesContent":["import Node from './node';\nimport Paren from './paren';\nimport Combinator from './combinator';\n\nconst Element = function(combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {\n this.combinator = combinator instanceof Combinator ?\n combinator : new Combinator(combinator);\n\n if (typeof value === 'string') {\n this.value = value.trim();\n } else if (value) {\n this.value = value;\n } else {\n this.value = '';\n }\n this.isVariable = isVariable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.combinator, this);\n}\n\nElement.prototype = Object.assign(new Node(), {\n type: 'Element',\n\n accept(visitor) {\n const value = this.value;\n this.combinator = visitor.visit(this.combinator);\n if (typeof value === 'object') {\n this.value = visitor.visit(value);\n }\n },\n\n eval(context) {\n return new Element(this.combinator,\n this.value.eval ? this.value.eval(context) : this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n clone() {\n return new Element(this.combinator,\n this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context), this.fileInfo(), this.getIndex());\n },\n\n toCSS(context) {\n context = context || {};\n let value = this.value;\n const firstSelector = context.firstSelector;\n if (value instanceof Paren) {\n // selector in parens should not be affected by outer selector\n // flags (breaks only interpolated selectors - see #1973)\n context.firstSelector = true;\n }\n value = value.toCSS ? value.toCSS(context) : value;\n context.firstSelector = firstSelector;\n if (value === '' && this.combinator.value.charAt(0) === '&') {\n return '';\n } else {\n return this.combinator.toCSS(context) + value;\n }\n }\n});\n\nexport default Element;\n"]}
|
|
@@ -1,32 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var node_1 = tslib_1.__importDefault(require("./node"));
|
|
5
|
+
var paren_1 = tslib_1.__importDefault(require("./paren"));
|
|
6
|
+
var comment_1 = tslib_1.__importDefault(require("./comment"));
|
|
7
|
+
var dimension_1 = tslib_1.__importDefault(require("./dimension"));
|
|
8
|
+
var Constants = tslib_1.__importStar(require("../constants"));
|
|
30
9
|
var MATH = Constants.Math;
|
|
31
10
|
var Expression = function (value, noSpacing) {
|
|
32
11
|
this.value = value;
|
|
@@ -35,56 +14,58 @@ var Expression = function (value, noSpacing) {
|
|
|
35
14
|
throw new Error('Expression requires an array parameter');
|
|
36
15
|
}
|
|
37
16
|
};
|
|
38
|
-
Expression.prototype = new node_1.default()
|
|
39
|
-
Expression
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
17
|
+
Expression.prototype = Object.assign(new node_1.default(), {
|
|
18
|
+
type: 'Expression',
|
|
19
|
+
accept: function (visitor) {
|
|
20
|
+
this.value = visitor.visitArray(this.value);
|
|
21
|
+
},
|
|
22
|
+
eval: function (context) {
|
|
23
|
+
var returnValue;
|
|
24
|
+
var mathOn = context.isMathOn();
|
|
25
|
+
var inParenthesis = this.parens;
|
|
26
|
+
var doubleParen = false;
|
|
27
|
+
if (inParenthesis) {
|
|
28
|
+
context.inParenthesis();
|
|
29
|
+
}
|
|
30
|
+
if (this.value.length > 1) {
|
|
31
|
+
returnValue = new Expression(this.value.map(function (e) {
|
|
32
|
+
if (!e.eval) {
|
|
33
|
+
return e;
|
|
34
|
+
}
|
|
35
|
+
return e.eval(context);
|
|
36
|
+
}), this.noSpacing);
|
|
37
|
+
}
|
|
38
|
+
else if (this.value.length === 1) {
|
|
39
|
+
if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {
|
|
40
|
+
doubleParen = true;
|
|
55
41
|
}
|
|
56
|
-
|
|
57
|
-
}), this.noSpacing);
|
|
58
|
-
}
|
|
59
|
-
else if (this.value.length === 1) {
|
|
60
|
-
if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {
|
|
61
|
-
doubleParen = true;
|
|
42
|
+
returnValue = this.value[0].eval(context);
|
|
62
43
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
&& (!(returnValue instanceof dimension_1.default))) {
|
|
73
|
-
returnValue = new paren_1.default(returnValue);
|
|
74
|
-
}
|
|
75
|
-
return returnValue;
|
|
76
|
-
};
|
|
77
|
-
Expression.prototype.genCSS = function (context, output) {
|
|
78
|
-
for (var i = 0; i < this.value.length; i++) {
|
|
79
|
-
this.value[i].genCSS(context, output);
|
|
80
|
-
if (!this.noSpacing && i + 1 < this.value.length) {
|
|
81
|
-
output.add(' ');
|
|
44
|
+
else {
|
|
45
|
+
returnValue = this;
|
|
46
|
+
}
|
|
47
|
+
if (inParenthesis) {
|
|
48
|
+
context.outOfParenthesis();
|
|
49
|
+
}
|
|
50
|
+
if (this.parens && this.parensInOp && !mathOn && !doubleParen
|
|
51
|
+
&& (!(returnValue instanceof dimension_1.default))) {
|
|
52
|
+
returnValue = new paren_1.default(returnValue);
|
|
82
53
|
}
|
|
54
|
+
return returnValue;
|
|
55
|
+
},
|
|
56
|
+
genCSS: function (context, output) {
|
|
57
|
+
for (var i = 0; i < this.value.length; i++) {
|
|
58
|
+
this.value[i].genCSS(context, output);
|
|
59
|
+
if (!this.noSpacing && i + 1 < this.value.length) {
|
|
60
|
+
output.add(' ');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
throwAwayComments: function () {
|
|
65
|
+
this.value = this.value.filter(function (v) {
|
|
66
|
+
return !(v instanceof comment_1.default);
|
|
67
|
+
});
|
|
83
68
|
}
|
|
84
|
-
};
|
|
85
|
-
Expression.prototype.throwAwayComments = function () {
|
|
86
|
-
this.value = this.value.filter(function (v) { return !(v instanceof comment_1.default); });
|
|
87
|
-
};
|
|
88
|
-
Expression.prototype.type = 'Expression';
|
|
69
|
+
});
|
|
89
70
|
exports.default = Expression;
|
|
90
71
|
//# sourceMappingURL=expression.js.map
|