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.
Files changed (200) hide show
  1. package/Gruntfile.js +1 -1
  2. package/bin/lessc +14 -3
  3. package/dist/less.js +11156 -11157
  4. package/dist/less.min.js +3 -3
  5. package/dist/less.min.js.map +1 -1
  6. package/lib/less/constants.js +2 -2
  7. package/lib/less/constants.js.map +1 -1
  8. package/lib/less/contexts.js +88 -110
  9. package/lib/less/contexts.js.map +1 -1
  10. package/lib/less/data/index.js +3 -5
  11. package/lib/less/data/index.js.map +1 -1
  12. package/lib/less/default-options.js +57 -53
  13. package/lib/less/default-options.js.map +1 -1
  14. package/lib/less/environment/abstract-file-manager.js +6 -6
  15. package/lib/less/environment/abstract-file-manager.js.map +1 -1
  16. package/lib/less/environment/abstract-plugin-loader.js +7 -13
  17. package/lib/less/environment/abstract-plugin-loader.js.map +1 -1
  18. package/lib/less/environment/environment.js +9 -11
  19. package/lib/less/environment/environment.js.map +1 -1
  20. package/lib/less/functions/boolean.js +14 -6
  21. package/lib/less/functions/boolean.js.map +1 -1
  22. package/lib/less/functions/color-blending.js +2 -4
  23. package/lib/less/functions/color-blending.js.map +1 -1
  24. package/lib/less/functions/color.js +41 -9
  25. package/lib/less/functions/color.js.map +1 -1
  26. package/lib/less/functions/data-uri.js +5 -26
  27. package/lib/less/functions/data-uri.js.map +1 -1
  28. package/lib/less/functions/default.js +2 -4
  29. package/lib/less/functions/default.js.map +1 -1
  30. package/lib/less/functions/function-caller.js +19 -35
  31. package/lib/less/functions/function-caller.js.map +1 -1
  32. package/lib/less/functions/index.js +14 -16
  33. package/lib/less/functions/index.js.map +1 -1
  34. package/lib/less/functions/list.js +21 -12
  35. package/lib/less/functions/list.js.map +1 -1
  36. package/lib/less/functions/math-helper.js +2 -4
  37. package/lib/less/functions/math-helper.js.map +1 -1
  38. package/lib/less/functions/math.js +2 -4
  39. package/lib/less/functions/math.js.map +1 -1
  40. package/lib/less/functions/number.js +12 -8
  41. package/lib/less/functions/number.js.map +1 -1
  42. package/lib/less/functions/string.js +4 -6
  43. package/lib/less/functions/string.js.map +1 -1
  44. package/lib/less/functions/svg.js +6 -8
  45. package/lib/less/functions/svg.js.map +1 -1
  46. package/lib/less/functions/types.js +9 -11
  47. package/lib/less/functions/types.js.map +1 -1
  48. package/lib/less/import-manager.js +6 -27
  49. package/lib/less/import-manager.js.map +1 -1
  50. package/lib/less/index.js +48 -82
  51. package/lib/less/index.js.map +1 -1
  52. package/lib/less/less-error.js +6 -24
  53. package/lib/less/less-error.js.map +1 -1
  54. package/lib/less/parse-tree.js +8 -8
  55. package/lib/less/parse-tree.js.map +1 -1
  56. package/lib/less/parse.js +11 -31
  57. package/lib/less/parse.js.map +1 -1
  58. package/lib/less/parser/chunker.js +4 -2
  59. package/lib/less/parser/chunker.js.map +1 -1
  60. package/lib/less/parser/parser-input.js +2 -4
  61. package/lib/less/parser/parser-input.js.map +1 -1
  62. package/lib/less/parser/parser.js +8 -29
  63. package/lib/less/parser/parser.js.map +1 -1
  64. package/lib/less/plugin-manager.js +2 -3
  65. package/lib/less/plugin-manager.js.map +1 -1
  66. package/lib/less/render.js +6 -22
  67. package/lib/less/render.js.map +1 -1
  68. package/lib/less/source-map-builder.js +4 -2
  69. package/lib/less/source-map-builder.js.map +1 -1
  70. package/lib/less/source-map-output.js +5 -7
  71. package/lib/less/source-map-output.js.map +1 -1
  72. package/lib/less/transform-tree.js +9 -9
  73. package/lib/less/transform-tree.js.map +1 -1
  74. package/lib/less/tree/anonymous.js +19 -20
  75. package/lib/less/tree/anonymous.js.map +1 -1
  76. package/lib/less/tree/assignment.js +22 -23
  77. package/lib/less/tree/assignment.js.map +1 -1
  78. package/lib/less/tree/atrule.js +105 -116
  79. package/lib/less/tree/atrule.js.map +1 -1
  80. package/lib/less/tree/attribute.js +18 -19
  81. package/lib/less/tree/attribute.js.map +1 -1
  82. package/lib/less/tree/call.js +68 -69
  83. package/lib/less/tree/call.js.map +1 -1
  84. package/lib/less/tree/color.js +163 -172
  85. package/lib/less/tree/color.js.map +1 -1
  86. package/lib/less/tree/combinator.js +9 -10
  87. package/lib/less/tree/combinator.js.map +1 -1
  88. package/lib/less/tree/comment.js +15 -16
  89. package/lib/less/tree/comment.js.map +1 -1
  90. package/lib/less/tree/condition.js +29 -30
  91. package/lib/less/tree/condition.js.map +1 -1
  92. package/lib/less/tree/debug-info.js +32 -30
  93. package/lib/less/tree/debug-info.js.map +1 -1
  94. package/lib/less/tree/declaration.js +71 -95
  95. package/lib/less/tree/declaration.js.map +1 -1
  96. package/lib/less/tree/detached-ruleset.js +18 -38
  97. package/lib/less/tree/detached-ruleset.js.map +1 -1
  98. package/lib/less/tree/dimension.js +126 -129
  99. package/lib/less/tree/dimension.js.map +1 -1
  100. package/lib/less/tree/element.js +40 -41
  101. package/lib/less/tree/element.js.map +1 -1
  102. package/lib/less/tree/expression.js +55 -74
  103. package/lib/less/tree/expression.js.map +1 -1
  104. package/lib/less/tree/extend.js +28 -34
  105. package/lib/less/tree/extend.js.map +1 -1
  106. package/lib/less/tree/import.js +120 -140
  107. package/lib/less/tree/import.js.map +1 -1
  108. package/lib/less/tree/index.js +37 -39
  109. package/lib/less/tree/index.js.map +1 -1
  110. package/lib/less/tree/javascript.js +23 -24
  111. package/lib/less/tree/javascript.js.map +1 -1
  112. package/lib/less/tree/js-eval-node.js +51 -50
  113. package/lib/less/tree/js-eval-node.js.map +1 -1
  114. package/lib/less/tree/keyword.js +10 -11
  115. package/lib/less/tree/keyword.js.map +1 -1
  116. package/lib/less/tree/media.js +111 -131
  117. package/lib/less/tree/media.js.map +1 -1
  118. package/lib/less/tree/mixin-call.js +156 -160
  119. package/lib/less/tree/mixin-call.js.map +1 -1
  120. package/lib/less/tree/mixin-definition.js +164 -184
  121. package/lib/less/tree/mixin-definition.js.map +1 -1
  122. package/lib/less/tree/namespace-value.js +53 -57
  123. package/lib/less/tree/namespace-value.js.map +1 -1
  124. package/lib/less/tree/negative.js +16 -17
  125. package/lib/less/tree/negative.js.map +1 -1
  126. package/lib/less/tree/node.js +39 -39
  127. package/lib/less/tree/node.js.map +1 -1
  128. package/lib/less/tree/operation.js +41 -63
  129. package/lib/less/tree/operation.js.map +1 -1
  130. package/lib/less/tree/paren.js +13 -14
  131. package/lib/less/tree/paren.js.map +1 -1
  132. package/lib/less/tree/property.js +48 -49
  133. package/lib/less/tree/property.js.map +1 -1
  134. package/lib/less/tree/quoted.js +50 -51
  135. package/lib/less/tree/quoted.js.map +1 -1
  136. package/lib/less/tree/ruleset.js +665 -702
  137. package/lib/less/tree/ruleset.js.map +1 -1
  138. package/lib/less/tree/selector.js +105 -106
  139. package/lib/less/tree/selector.js.map +1 -1
  140. package/lib/less/tree/unicode-descriptor.js +5 -6
  141. package/lib/less/tree/unicode-descriptor.js.map +1 -1
  142. package/lib/less/tree/unit.js +99 -120
  143. package/lib/less/tree/unit.js.map +1 -1
  144. package/lib/less/tree/url.js +44 -45
  145. package/lib/less/tree/url.js.map +1 -1
  146. package/lib/less/tree/value.js +27 -26
  147. package/lib/less/tree/value.js.map +1 -1
  148. package/lib/less/tree/variable-call.js +30 -31
  149. package/lib/less/tree/variable-call.js.map +1 -1
  150. package/lib/less/tree/variable.js +46 -48
  151. package/lib/less/tree/variable.js.map +1 -1
  152. package/lib/less/utils.js +5 -23
  153. package/lib/less/utils.js.map +1 -1
  154. package/lib/less/visitors/extend-visitor.js +14 -41
  155. package/lib/less/visitors/extend-visitor.js.map +1 -1
  156. package/lib/less/visitors/import-sequencer.js +2 -7
  157. package/lib/less/visitors/import-sequencer.js.map +1 -1
  158. package/lib/less/visitors/import-visitor.js +7 -33
  159. package/lib/less/visitors/import-visitor.js.map +1 -1
  160. package/lib/less/visitors/index.js +7 -9
  161. package/lib/less/visitors/index.js.map +1 -1
  162. package/lib/less/visitors/join-selector-visitor.js +2 -4
  163. package/lib/less/visitors/join-selector-visitor.js.map +1 -1
  164. package/lib/less/visitors/to-css-visitor.js +4 -6
  165. package/lib/less/visitors/to-css-visitor.js.map +1 -1
  166. package/lib/less/visitors/visitor.js +4 -12
  167. package/lib/less/visitors/visitor.js.map +1 -1
  168. package/lib/less-browser/add-default-options.js +2 -4
  169. package/lib/less-browser/add-default-options.js.map +1 -1
  170. package/lib/less-browser/bootstrap.js +4 -6
  171. package/lib/less-browser/bootstrap.js.map +1 -1
  172. package/lib/less-browser/browser.js +2 -20
  173. package/lib/less-browser/browser.js.map +1 -1
  174. package/lib/less-browser/error-reporting.js +3 -24
  175. package/lib/less-browser/error-reporting.js.map +1 -1
  176. package/lib/less-browser/file-manager.js +17 -36
  177. package/lib/less-browser/file-manager.js.map +1 -1
  178. package/lib/less-browser/image-size.js +2 -4
  179. package/lib/less-browser/image-size.js.map +1 -1
  180. package/lib/less-browser/index.js +9 -11
  181. package/lib/less-browser/index.js.map +1 -1
  182. package/lib/less-browser/plugin-loader.js +10 -29
  183. package/lib/less-browser/plugin-loader.js.map +1 -1
  184. package/lib/less-node/file-manager.js +15 -34
  185. package/lib/less-node/file-manager.js.map +1 -1
  186. package/lib/less-node/image-size.js +4 -6
  187. package/lib/less-node/image-size.js.map +1 -1
  188. package/lib/less-node/index.js +10 -16
  189. package/lib/less-node/index.js.map +1 -1
  190. package/lib/less-node/plugin-loader.js +23 -42
  191. package/lib/less-node/plugin-loader.js.map +1 -1
  192. package/lib/less-node/url-file-manager.js +23 -38
  193. package/lib/less-node/url-file-manager.js.map +1 -1
  194. package/package.json +12 -9
  195. package/test/browser/less/errors/image-height-error.txt +1 -1
  196. package/test/browser/less/errors/image-size-error.txt +1 -1
  197. package/test/browser/less/errors/image-width-error.txt +1 -1
  198. package/test/index.js +28 -9
  199. package/test/less-test.js +36 -16
  200. 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 node_1 = __importDefault(require("./node"));
7
- var selector_1 = __importDefault(require("./selector"));
8
- var ruleset_1 = __importDefault(require("./ruleset"));
9
- var anonymous_1 = __importDefault(require("./anonymous"));
3
+ var tslib_1 = require("tslib");
4
+ var node_1 = tslib_1.__importDefault(require("./node"));
5
+ var selector_1 = tslib_1.__importDefault(require("./selector"));
6
+ var ruleset_1 = tslib_1.__importDefault(require("./ruleset"));
7
+ var anonymous_1 = tslib_1.__importDefault(require("./anonymous"));
10
8
  var AtRule = function (name, value, rules, index, currentFileInfo, debugInfo, isRooted, visibilityInfo) {
11
9
  var i;
12
10
  this.name = name;
@@ -31,116 +29,107 @@ var AtRule = function (name, value, rules, index, currentFileInfo, debugInfo, is
31
29
  this.copyVisibilityInfo(visibilityInfo);
32
30
  this.allowRoot = true;
33
31
  };
34
- AtRule.prototype = new node_1.default();
35
- AtRule.prototype.accept = function (visitor) {
36
- var value = this.value;
37
- var rules = this.rules;
38
- if (rules) {
39
- this.rules = visitor.visitArray(rules);
40
- }
41
- if (value) {
42
- this.value = visitor.visit(value);
43
- }
44
- };
45
- AtRule.prototype.isRulesetLike = function () {
46
- return this.rules || !this.isCharset();
47
- };
48
- AtRule.prototype.isCharset = function () {
49
- return '@charset' === this.name;
50
- };
51
- AtRule.prototype.genCSS = function (context, output) {
52
- var value = this.value;
53
- var rules = this.rules;
54
- output.add(this.name, this.fileInfo(), this.getIndex());
55
- if (value) {
56
- output.add(' ');
57
- value.genCSS(context, output);
58
- }
59
- if (rules) {
60
- this.outputRuleset(context, output, rules);
61
- }
62
- else {
63
- output.add(';');
64
- }
65
- };
66
- AtRule.prototype.eval = function (context) {
67
- var mediaPathBackup;
68
- var mediaBlocksBackup;
69
- var value = this.value;
70
- var rules = this.rules;
71
- // media stored inside other atrule should not bubble over it
72
- // backpup media bubbling information
73
- mediaPathBackup = context.mediaPath;
74
- mediaBlocksBackup = context.mediaBlocks;
75
- // deleted media bubbling information
76
- context.mediaPath = [];
77
- context.mediaBlocks = [];
78
- if (value) {
79
- value = value.eval(context);
80
- }
81
- if (rules) {
82
- // assuming that there is only one rule at this point - that is how parser constructs the rule
83
- rules = [rules[0].eval(context)];
84
- rules[0].root = true;
85
- }
86
- // restore media bubbling information
87
- context.mediaPath = mediaPathBackup;
88
- context.mediaBlocks = mediaBlocksBackup;
89
- return new AtRule(this.name, value, rules, this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());
90
- };
91
- AtRule.prototype.variable = function (name) {
92
- if (this.rules) {
93
- // assuming that there is only one rule at this point - that is how parser constructs the rule
94
- return ruleset_1.default.prototype.variable.call(this.rules[0], name);
95
- }
96
- };
97
- AtRule.prototype.find = function () {
98
- var args = [];
99
- for (var _i = 0; _i < arguments.length; _i++) {
100
- args[_i] = arguments[_i];
101
- }
102
- if (this.rules) {
103
- // assuming that there is only one rule at this point - that is how parser constructs the rule
104
- return ruleset_1.default.prototype.find.apply(this.rules[0], args);
105
- }
106
- };
107
- AtRule.prototype.rulesets = function () {
108
- if (this.rules) {
109
- // assuming that there is only one rule at this point - that is how parser constructs the rule
110
- return ruleset_1.default.prototype.rulesets.apply(this.rules[0]);
111
- }
112
- };
113
- AtRule.prototype.outputRuleset = function (context, output, rules) {
114
- var ruleCnt = rules.length;
115
- var i;
116
- context.tabLevel = (context.tabLevel | 0) + 1;
117
- // Compressed
118
- if (context.compress) {
119
- output.add('{');
120
- for (i = 0; i < ruleCnt; i++) {
121
- rules[i].genCSS(context, output);
122
- }
123
- output.add('}');
32
+ AtRule.prototype = Object.assign(new node_1.default(), {
33
+ type: 'AtRule',
34
+ accept: function (visitor) {
35
+ var value = this.value, rules = this.rules;
36
+ if (rules) {
37
+ this.rules = visitor.visitArray(rules);
38
+ }
39
+ if (value) {
40
+ this.value = visitor.visit(value);
41
+ }
42
+ },
43
+ isRulesetLike: function () {
44
+ return this.rules || !this.isCharset();
45
+ },
46
+ isCharset: function () {
47
+ return '@charset' === this.name;
48
+ },
49
+ genCSS: function (context, output) {
50
+ var value = this.value, rules = this.rules;
51
+ output.add(this.name, this.fileInfo(), this.getIndex());
52
+ if (value) {
53
+ output.add(' ');
54
+ value.genCSS(context, output);
55
+ }
56
+ if (rules) {
57
+ this.outputRuleset(context, output, rules);
58
+ }
59
+ else {
60
+ output.add(';');
61
+ }
62
+ },
63
+ eval: function (context) {
64
+ var mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules;
65
+ // media stored inside other atrule should not bubble over it
66
+ // backpup media bubbling information
67
+ mediaPathBackup = context.mediaPath;
68
+ mediaBlocksBackup = context.mediaBlocks;
69
+ // deleted media bubbling information
70
+ context.mediaPath = [];
71
+ context.mediaBlocks = [];
72
+ if (value) {
73
+ value = value.eval(context);
74
+ }
75
+ if (rules) {
76
+ // assuming that there is only one rule at this point - that is how parser constructs the rule
77
+ rules = [rules[0].eval(context)];
78
+ rules[0].root = true;
79
+ }
80
+ // restore media bubbling information
81
+ context.mediaPath = mediaPathBackup;
82
+ context.mediaBlocks = mediaBlocksBackup;
83
+ return new AtRule(this.name, value, rules, this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());
84
+ },
85
+ variable: function (name) {
86
+ if (this.rules) {
87
+ // assuming that there is only one rule at this point - that is how parser constructs the rule
88
+ return ruleset_1.default.prototype.variable.call(this.rules[0], name);
89
+ }
90
+ },
91
+ find: function () {
92
+ if (this.rules) {
93
+ // assuming that there is only one rule at this point - that is how parser constructs the rule
94
+ return ruleset_1.default.prototype.find.apply(this.rules[0], arguments);
95
+ }
96
+ },
97
+ rulesets: function () {
98
+ if (this.rules) {
99
+ // assuming that there is only one rule at this point - that is how parser constructs the rule
100
+ return ruleset_1.default.prototype.rulesets.apply(this.rules[0]);
101
+ }
102
+ },
103
+ outputRuleset: function (context, output, rules) {
104
+ var ruleCnt = rules.length;
105
+ var i;
106
+ context.tabLevel = (context.tabLevel | 0) + 1;
107
+ // Compressed
108
+ if (context.compress) {
109
+ output.add('{');
110
+ for (i = 0; i < ruleCnt; i++) {
111
+ rules[i].genCSS(context, output);
112
+ }
113
+ output.add('}');
114
+ context.tabLevel--;
115
+ return;
116
+ }
117
+ // Non-compressed
118
+ var tabSetStr = "\n" + Array(context.tabLevel).join(' '), tabRuleStr = tabSetStr + " ";
119
+ if (!ruleCnt) {
120
+ output.add(" {" + tabSetStr + "}");
121
+ }
122
+ else {
123
+ output.add(" {" + tabRuleStr);
124
+ rules[0].genCSS(context, output);
125
+ for (i = 1; i < ruleCnt; i++) {
126
+ output.add(tabRuleStr);
127
+ rules[i].genCSS(context, output);
128
+ }
129
+ output.add(tabSetStr + "}");
130
+ }
124
131
  context.tabLevel--;
125
- return;
126
- }
127
- // Non-compressed
128
- var tabSetStr = "\n" + Array(context.tabLevel).join(' ');
129
- var tabRuleStr = tabSetStr + " ";
130
- if (!ruleCnt) {
131
- output.add(" {" + tabSetStr + "}");
132
132
  }
133
- else {
134
- output.add(" {" + tabRuleStr);
135
- rules[0].genCSS(context, output);
136
- for (i = 1; i < ruleCnt; i++) {
137
- output.add(tabRuleStr);
138
- rules[i].genCSS(context, output);
139
- }
140
- output.add(tabSetStr + "}");
141
- }
142
- context.tabLevel--;
143
- };
144
- AtRule.prototype.type = 'AtRule';
133
+ });
145
134
  exports.default = AtRule;
146
135
  //# sourceMappingURL=atrule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"atrule.js","sourceRoot":"","sources":["../../../src/less/tree/atrule.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Selector from './selector';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\n\nconst AtRule = function(\n name,\n value,\n rules,\n index,\n currentFileInfo,\n debugInfo,\n isRooted,\n visibilityInfo\n) {\n let i;\n\n this.name = name;\n this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);\n if (rules) {\n if (Array.isArray(rules)) {\n this.rules = rules;\n } else {\n this.rules = [rules];\n this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();\n }\n for (i = 0; i < this.rules.length; i++) {\n this.rules[i].allowImports = true;\n }\n this.setParent(this.rules, this);\n }\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.debugInfo = debugInfo;\n this.isRooted = isRooted || false;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n};\n\nAtRule.prototype = new Node();\n\nAtRule.prototype.accept = function(visitor) {\n const value = this.value;\n const rules = this.rules;\n if (rules) {\n this.rules = visitor.visitArray(rules);\n }\n if (value) {\n this.value = visitor.visit(value);\n }\n};\n\nAtRule.prototype.isRulesetLike = function() {\n return this.rules || !this.isCharset();\n};\n\nAtRule.prototype.isCharset = function() {\n return '@charset' === this.name;\n};\n\nAtRule.prototype.genCSS = function(context, output) {\n const value = this.value;\n const rules = this.rules;\n output.add(this.name, this.fileInfo(), this.getIndex());\n if (value) {\n output.add(' ');\n value.genCSS(context, output);\n }\n if (rules) {\n this.outputRuleset(context, output, rules);\n } else {\n output.add(';');\n }\n};\n\nAtRule.prototype.eval = function(context) {\n let mediaPathBackup;\n let mediaBlocksBackup;\n let value = this.value;\n let rules = this.rules;\n\n // media stored inside other atrule should not bubble over it\n // backpup media bubbling information\n mediaPathBackup = context.mediaPath;\n mediaBlocksBackup = context.mediaBlocks;\n // deleted media bubbling information\n context.mediaPath = [];\n context.mediaBlocks = [];\n\n if (value) {\n value = value.eval(context);\n }\n if (rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n rules = [rules[0].eval(context)];\n rules[0].root = true;\n }\n // restore media bubbling information\n context.mediaPath = mediaPathBackup;\n context.mediaBlocks = mediaBlocksBackup;\n\n return new AtRule(this.name, value, rules,\n this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());\n};\n\nAtRule.prototype.variable = function(name) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.variable.call(this.rules[0], name);\n }\n};\n\nAtRule.prototype.find = function(...args) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.find.apply(this.rules[0], args);\n }\n};\n\nAtRule.prototype.rulesets = function() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.rulesets.apply(this.rules[0]);\n }\n};\n\nAtRule.prototype.outputRuleset = function(context, output, rules) {\n const ruleCnt = rules.length;\n let i;\n context.tabLevel = (context.tabLevel | 0) + 1;\n\n // Compressed\n if (context.compress) {\n output.add('{');\n for (i = 0; i < ruleCnt; i++) {\n rules[i].genCSS(context, output);\n }\n output.add('}');\n context.tabLevel--;\n return;\n }\n\n // Non-compressed\n const tabSetStr = `\\n${Array(context.tabLevel).join(' ')}`;\n\n const tabRuleStr = `${tabSetStr} `;\n if (!ruleCnt) {\n output.add(` {${tabSetStr}}`);\n } else {\n output.add(` {${tabRuleStr}`);\n rules[0].genCSS(context, output);\n for (i = 1; i < ruleCnt; i++) {\n output.add(tabRuleStr);\n rules[i].genCSS(context, output);\n }\n output.add(`${tabSetStr}}`);\n }\n\n context.tabLevel--;\n};\n\nAtRule.prototype.type = 'AtRule';\nexport default AtRule;\n"]}
1
+ {"version":3,"file":"atrule.js","sourceRoot":"","sources":["../../../src/less/tree/atrule.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Selector from './selector';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\n\nconst AtRule = function(\n name,\n value,\n rules,\n index,\n currentFileInfo,\n debugInfo,\n isRooted,\n visibilityInfo\n) {\n let i;\n\n this.name = name;\n this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);\n if (rules) {\n if (Array.isArray(rules)) {\n this.rules = rules;\n } else {\n this.rules = [rules];\n this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();\n }\n for (i = 0; i < this.rules.length; i++) {\n this.rules[i].allowImports = true;\n }\n this.setParent(this.rules, this);\n }\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.debugInfo = debugInfo;\n this.isRooted = isRooted || false;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nAtRule.prototype = Object.assign(new Node(), {\n type: 'AtRule',\n accept(visitor) {\n const value = this.value, rules = this.rules;\n if (rules) {\n this.rules = visitor.visitArray(rules);\n }\n if (value) {\n this.value = visitor.visit(value);\n }\n },\n\n isRulesetLike() {\n return this.rules || !this.isCharset();\n },\n\n isCharset() {\n return '@charset' === this.name;\n },\n\n genCSS(context, output) {\n const value = this.value, rules = this.rules;\n output.add(this.name, this.fileInfo(), this.getIndex());\n if (value) {\n output.add(' ');\n value.genCSS(context, output);\n }\n if (rules) {\n this.outputRuleset(context, output, rules);\n } else {\n output.add(';');\n }\n },\n\n eval(context) {\n let mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules;\n\n // media stored inside other atrule should not bubble over it\n // backpup media bubbling information\n mediaPathBackup = context.mediaPath;\n mediaBlocksBackup = context.mediaBlocks;\n // deleted media bubbling information\n context.mediaPath = [];\n context.mediaBlocks = [];\n\n if (value) {\n value = value.eval(context);\n }\n if (rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n rules = [rules[0].eval(context)];\n rules[0].root = true;\n }\n // restore media bubbling information\n context.mediaPath = mediaPathBackup;\n context.mediaBlocks = mediaBlocksBackup;\n\n return new AtRule(this.name, value, rules,\n this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());\n },\n\n variable(name) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.variable.call(this.rules[0], name);\n }\n },\n\n find() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.find.apply(this.rules[0], arguments);\n }\n },\n\n rulesets() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.rulesets.apply(this.rules[0]);\n }\n },\n\n outputRuleset(context, output, rules) {\n const ruleCnt = rules.length;\n let i;\n context.tabLevel = (context.tabLevel | 0) + 1;\n\n // Compressed\n if (context.compress) {\n output.add('{');\n for (i = 0; i < ruleCnt; i++) {\n rules[i].genCSS(context, output);\n }\n output.add('}');\n context.tabLevel--;\n return;\n }\n\n // Non-compressed\n const tabSetStr = `\\n${Array(context.tabLevel).join(' ')}`, tabRuleStr = `${tabSetStr} `;\n if (!ruleCnt) {\n output.add(` {${tabSetStr}}`);\n } else {\n output.add(` {${tabRuleStr}`);\n rules[0].genCSS(context, output);\n for (i = 1; i < ruleCnt; i++) {\n output.add(tabRuleStr);\n rules[i].genCSS(context, output);\n }\n output.add(`${tabSetStr}}`);\n }\n\n context.tabLevel--;\n }\n});\n\nexport default AtRule;\n"]}
@@ -1,29 +1,28 @@
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 node_1 = __importDefault(require("./node"));
3
+ var tslib_1 = require("tslib");
4
+ var node_1 = tslib_1.__importDefault(require("./node"));
7
5
  var Attribute = function (key, op, value) {
8
6
  this.key = key;
9
7
  this.op = op;
10
8
  this.value = value;
11
9
  };
12
- Attribute.prototype = new node_1.default();
13
- Attribute.prototype.eval = function (context) {
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);
15
- };
16
- Attribute.prototype.genCSS = function (context, output) {
17
- output.add(this.toCSS(context));
18
- };
19
- Attribute.prototype.toCSS = function (context) {
20
- var value = this.key.toCSS ? this.key.toCSS(context) : this.key;
21
- if (this.op) {
22
- value += this.op;
23
- value += (this.value.toCSS ? this.value.toCSS(context) : this.value);
10
+ Attribute.prototype = Object.assign(new node_1.default(), {
11
+ type: 'Attribute',
12
+ 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
+ },
15
+ genCSS: function (context, output) {
16
+ output.add(this.toCSS(context));
17
+ },
18
+ toCSS: function (context) {
19
+ var value = this.key.toCSS ? this.key.toCSS(context) : this.key;
20
+ if (this.op) {
21
+ value += this.op;
22
+ value += (this.value.toCSS ? this.value.toCSS(context) : this.value);
23
+ }
24
+ return "[" + value + "]";
24
25
  }
25
- return "[" + value + "]";
26
- };
27
- Attribute.prototype.type = 'Attribute';
26
+ });
28
27
  exports.default = Attribute;
29
28
  //# sourceMappingURL=attribute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../../src/less/tree/attribute.js"],"names":[],"mappings":";;;;;AAAA,gDAA0B;AAE1B,IAAM,SAAS,GAAG,UAAS,GAAG,EAAE,EAAE,EAAE,KAAK;IACrC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,GAAG,IAAI,cAAI,EAAE,CAAC;AAEjC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,UAAS,OAAO;IACvC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAClE,IAAI,CAAC,EAAE,EAAE,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,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,UAAS,OAAO,EAAE,MAAM;IACjD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAS,OAAO;IACxC,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;IAEhE,IAAI,IAAI,CAAC,EAAE,EAAE;QACT,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;QACjB,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;KACxE;IAED,OAAO,MAAI,KAAK,MAAG,CAAC;AACxB,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;AACvC,kBAAe,SAAS,CAAC","sourcesContent":["import Node from './node';\n\nconst Attribute = function(key, op, value) {\n this.key = key;\n this.op = op;\n this.value = value;\n};\n\nAttribute.prototype = new Node();\n\nAttribute.prototype.eval = function(context) {\n return new Attribute(this.key.eval ? this.key.eval(context) : this.key,\n this.op, (this.value && this.value.eval) ? this.value.eval(context) : this.value);\n};\n\nAttribute.prototype.genCSS = function(context, output) {\n output.add(this.toCSS(context));\n};\n\nAttribute.prototype.toCSS = function(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 return `[${value}]`;\n};\n\nAttribute.prototype.type = 'Attribute';\nexport default Attribute;\n"]}
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;IACrC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,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,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAClE,IAAI,CAAC,EAAE,EAAE,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,CAAC,CAAC;IAC1F,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,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) {\n this.key = key;\n this.op = op;\n this.value = value;\n}\n\nAttribute.prototype = Object.assign(new Node(), {\n type: 'Attribute',\n\n eval(context) {\n return new Attribute(this.key.eval ? this.key.eval(context) : this.key,\n this.op, (this.value && this.value.eval) ? this.value.eval(context) : this.value);\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 return `[${value}]`;\n }\n});\n\nexport default Attribute;\n"]}
@@ -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 node_1 = __importDefault(require("./node"));
7
- var anonymous_1 = __importDefault(require("./anonymous"));
8
- var function_caller_1 = __importDefault(require("../functions/function-caller"));
3
+ var tslib_1 = require("tslib");
4
+ var node_1 = tslib_1.__importDefault(require("./node"));
5
+ var anonymous_1 = tslib_1.__importDefault(require("./anonymous"));
6
+ var function_caller_1 = tslib_1.__importDefault(require("../functions/function-caller"));
9
7
  //
10
8
  // A function call node.
11
9
  //
@@ -16,58 +14,60 @@ var Call = function (name, args, index, currentFileInfo) {
16
14
  this._index = index;
17
15
  this._fileInfo = currentFileInfo;
18
16
  };
19
- Call.prototype = new node_1.default();
20
- Call.prototype.accept = function (visitor) {
21
- if (this.args) {
22
- this.args = visitor.visitArray(this.args);
23
- }
24
- };
25
- //
26
- // When evaluating a function call,
27
- // we either find the function in the functionRegistry,
28
- // in which case we call it, passing the evaluated arguments,
29
- // if this returns null or we cannot find the function, we
30
- // simply print it out as it appeared originally [2].
31
- //
32
- // The reason why we evaluate the arguments, is in the case where
33
- // we try to pass a variable to a function, like: `saturate(@color)`.
34
- // The function should receive the value, not the variable.
35
- //
36
- Call.prototype.eval = function (context) {
37
- var _this = this;
38
- /**
39
- * Turn off math for calc(), and switch back on for evaluating nested functions
40
- */
41
- var currentMathContext = context.mathOn;
42
- context.mathOn = !this.calc;
43
- if (this.calc || context.inCalc) {
44
- context.enterCalc();
45
- }
46
- var exitCalc = function () {
47
- if (_this.calc || context.inCalc) {
48
- context.exitCalc();
17
+ Call.prototype = Object.assign(new node_1.default(), {
18
+ type: 'Call',
19
+ accept: function (visitor) {
20
+ if (this.args) {
21
+ this.args = visitor.visitArray(this.args);
49
22
  }
50
- context.mathOn = currentMathContext;
51
- };
52
- var result;
53
- var funcCaller = new function_caller_1.default(this.name, context, this.getIndex(), this.fileInfo());
54
- if (funcCaller.isValid()) {
55
- try {
56
- result = funcCaller.call(this.args);
57
- exitCalc();
23
+ },
24
+ //
25
+ // When evaluating a function call,
26
+ // we either find the function in the functionRegistry,
27
+ // in which case we call it, passing the evaluated arguments,
28
+ // if this returns null or we cannot find the function, we
29
+ // simply print it out as it appeared originally [2].
30
+ //
31
+ // The reason why we evaluate the arguments, is in the case where
32
+ // we try to pass a variable to a function, like: `saturate(@color)`.
33
+ // The function should receive the value, not the variable.
34
+ //
35
+ eval: function (context) {
36
+ var _this = this;
37
+ /**
38
+ * Turn off math for calc(), and switch back on for evaluating nested functions
39
+ */
40
+ var currentMathContext = context.mathOn;
41
+ context.mathOn = !this.calc;
42
+ if (this.calc || context.inCalc) {
43
+ context.enterCalc();
58
44
  }
59
- catch (e) {
60
- if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {
61
- throw e;
45
+ var exitCalc = function () {
46
+ if (_this.calc || context.inCalc) {
47
+ context.exitCalc();
48
+ }
49
+ context.mathOn = currentMathContext;
50
+ };
51
+ var result;
52
+ var funcCaller = new function_caller_1.default(this.name, context, this.getIndex(), this.fileInfo());
53
+ if (funcCaller.isValid()) {
54
+ try {
55
+ result = funcCaller.call(this.args);
56
+ exitCalc();
57
+ }
58
+ catch (e) {
59
+ if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {
60
+ throw e;
61
+ }
62
+ throw {
63
+ type: e.type || 'Runtime',
64
+ message: "Error evaluating function `" + this.name + "`" + (e.message ? ": " + e.message : ''),
65
+ index: this.getIndex(),
66
+ filename: this.fileInfo().filename,
67
+ line: e.lineNumber,
68
+ column: e.columnNumber
69
+ };
62
70
  }
63
- throw {
64
- type: e.type || 'Runtime',
65
- message: "error evaluating function `" + this.name + "`" + (e.message ? ": " + e.message : ''),
66
- index: this.getIndex(),
67
- filename: this.fileInfo().filename,
68
- line: e.lineNumber,
69
- column: e.columnNumber
70
- };
71
71
  }
72
72
  if (result !== null && result !== undefined) {
73
73
  // Results that that are not nodes are cast as Anonymous nodes
@@ -84,21 +84,20 @@ Call.prototype.eval = function (context) {
84
84
  result._fileInfo = this._fileInfo;
85
85
  return result;
86
86
  }
87
- }
88
- var args = this.args.map(function (a) { return a.eval(context); });
89
- exitCalc();
90
- return new Call(this.name, args, this.getIndex(), this.fileInfo());
91
- };
92
- Call.prototype.genCSS = function (context, output) {
93
- output.add(this.name + "(", this.fileInfo(), this.getIndex());
94
- for (var i = 0; i < this.args.length; i++) {
95
- this.args[i].genCSS(context, output);
96
- if (i + 1 < this.args.length) {
97
- output.add(', ');
87
+ var args = this.args.map(function (a) { return a.eval(context); });
88
+ exitCalc();
89
+ return new Call(this.name, args, this.getIndex(), this.fileInfo());
90
+ },
91
+ genCSS: function (context, output) {
92
+ output.add(this.name + "(", this.fileInfo(), this.getIndex());
93
+ for (var i = 0; i < this.args.length; i++) {
94
+ this.args[i].genCSS(context, output);
95
+ if (i + 1 < this.args.length) {
96
+ output.add(', ');
97
+ }
98
98
  }
99
+ output.add(')');
99
100
  }
100
- output.add(')');
101
- };
102
- Call.prototype.type = 'Call';
101
+ });
103
102
  exports.default = Call;
104
103
  //# sourceMappingURL=call.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/less/tree/call.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Anonymous from './anonymous';\nimport FunctionCaller from '../functions/function-caller';\n\n//\n// A function call node.\n//\nconst Call = function(name, args, index, currentFileInfo) {\n this.name = name;\n this.args = args;\n this.calc = name === 'calc';\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nCall.prototype = new Node();\n\nCall.prototype.accept = function(visitor) {\n if (this.args) {\n this.args = visitor.visitArray(this.args);\n }\n};\n\n//\n// When evaluating a function call,\n// we either find the function in the functionRegistry,\n// in which case we call it, passing the evaluated arguments,\n// if this returns null or we cannot find the function, we\n// simply print it out as it appeared originally [2].\n//\n// The reason why we evaluate the arguments, is in the case where\n// we try to pass a variable to a function, like: `saturate(@color)`.\n// The function should receive the value, not the variable.\n//\nCall.prototype.eval = function(context) {\n /**\n * Turn off math for calc(), and switch back on for evaluating nested functions\n */\n const currentMathContext = context.mathOn;\n context.mathOn = !this.calc;\n if (this.calc || context.inCalc) {\n context.enterCalc();\n }\n\n const exitCalc = () => {\n if (this.calc || context.inCalc) {\n context.exitCalc();\n }\n context.mathOn = currentMathContext;\n };\n\n let result;\n const funcCaller = new FunctionCaller(this.name, context, this.getIndex(), this.fileInfo());\n\n if (funcCaller.isValid()) {\n try {\n result = funcCaller.call(this.args);\n exitCalc();\n } catch (e) {\n if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {\n throw e\n }\n throw { \n type: e.type || 'Runtime',\n message: `error evaluating function \\`${this.name}\\`${e.message ? `: ${e.message}` : ''}`,\n index: this.getIndex(), \n filename: this.fileInfo().filename,\n line: e.lineNumber,\n column: e.columnNumber\n };\n }\n\n if (result !== null && result !== undefined) {\n // Results that that are not nodes are cast as Anonymous nodes\n // Falsy values or booleans are returned as empty nodes\n if (!(result instanceof Node)) {\n if (!result || result === true) {\n result = new Anonymous(null); \n }\n else {\n result = new Anonymous(result.toString()); \n }\n \n }\n result._index = this._index;\n result._fileInfo = this._fileInfo;\n return result;\n }\n }\n\n const args = this.args.map(a => a.eval(context));\n exitCalc();\n\n return new Call(this.name, args, this.getIndex(), this.fileInfo());\n};\n\nCall.prototype.genCSS = function(context, output) {\n output.add(`${this.name}(`, this.fileInfo(), this.getIndex());\n\n for (let i = 0; i < this.args.length; i++) {\n this.args[i].genCSS(context, output);\n if (i + 1 < this.args.length) {\n output.add(', ');\n }\n }\n\n output.add(')');\n};\n\nCall.prototype.type = 'Call';\nexport default Call;\n"]}
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/less/tree/call.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Anonymous from './anonymous';\nimport FunctionCaller from '../functions/function-caller';\n\n//\n// A function call node.\n//\nconst Call = function(name, args, index, currentFileInfo) {\n this.name = name;\n this.args = args;\n this.calc = name === 'calc';\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nCall.prototype = Object.assign(new Node(), {\n type: 'Call',\n\n accept(visitor) {\n if (this.args) {\n this.args = visitor.visitArray(this.args);\n }\n },\n\n //\n // When evaluating a function call,\n // we either find the function in the functionRegistry,\n // in which case we call it, passing the evaluated arguments,\n // if this returns null or we cannot find the function, we\n // simply print it out as it appeared originally [2].\n //\n // The reason why we evaluate the arguments, is in the case where\n // we try to pass a variable to a function, like: `saturate(@color)`.\n // The function should receive the value, not the variable.\n //\n eval(context) {\n /**\n * Turn off math for calc(), and switch back on for evaluating nested functions\n */\n const currentMathContext = context.mathOn;\n context.mathOn = !this.calc;\n if (this.calc || context.inCalc) {\n context.enterCalc();\n }\n\n const exitCalc = () => {\n if (this.calc || context.inCalc) {\n context.exitCalc();\n }\n context.mathOn = currentMathContext;\n };\n\n let result;\n const funcCaller = new FunctionCaller(this.name, context, this.getIndex(), this.fileInfo());\n\n if (funcCaller.isValid()) {\n try {\n result = funcCaller.call(this.args);\n exitCalc();\n } catch (e) {\n if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {\n throw e;\n }\n throw { \n type: e.type || 'Runtime',\n message: `Error evaluating function \\`${this.name}\\`${e.message ? `: ${e.message}` : ''}`,\n index: this.getIndex(), \n filename: this.fileInfo().filename,\n line: e.lineNumber,\n column: e.columnNumber\n };\n }\n }\n\n if (result !== null && result !== undefined) {\n // Results that that are not nodes are cast as Anonymous nodes\n // Falsy values or booleans are returned as empty nodes\n if (!(result instanceof Node)) {\n if (!result || result === true) {\n result = new Anonymous(null); \n }\n else {\n result = new Anonymous(result.toString()); \n }\n \n }\n result._index = this._index;\n result._fileInfo = this._fileInfo;\n return result;\n }\n\n const args = this.args.map(a => a.eval(context));\n exitCalc();\n\n return new Call(this.name, args, this.getIndex(), this.fileInfo());\n },\n\n genCSS(context, output) {\n output.add(`${this.name}(`, this.fileInfo(), this.getIndex());\n\n for (let i = 0; i < this.args.length; i++) {\n this.args[i].genCSS(context, output);\n if (i + 1 < this.args.length) {\n output.add(', ');\n }\n }\n\n output.add(')');\n }\n});\n\nexport default Call;\n"]}