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,35 +1,14 @@
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 selector_1 = __importDefault(require("./selector"));
26
- var element_1 = __importDefault(require("./element"));
27
- var ruleset_1 = __importDefault(require("./ruleset"));
28
- var declaration_1 = __importDefault(require("./declaration"));
29
- var detached_ruleset_1 = __importDefault(require("./detached-ruleset"));
30
- var expression_1 = __importDefault(require("./expression"));
31
- var contexts_1 = __importDefault(require("../contexts"));
32
- var utils = __importStar(require("../utils"));
3
+ var tslib_1 = require("tslib");
4
+ var selector_1 = tslib_1.__importDefault(require("./selector"));
5
+ var element_1 = tslib_1.__importDefault(require("./element"));
6
+ var ruleset_1 = tslib_1.__importDefault(require("./ruleset"));
7
+ var declaration_1 = tslib_1.__importDefault(require("./declaration"));
8
+ var detached_ruleset_1 = tslib_1.__importDefault(require("./detached-ruleset"));
9
+ var expression_1 = tslib_1.__importDefault(require("./expression"));
10
+ var contexts_1 = tslib_1.__importDefault(require("../contexts"));
11
+ var utils = tslib_1.__importStar(require("../utils"));
33
12
  var Definition = function (name, params, rules, condition, variadic, frames, visibilityInfo) {
34
13
  this.name = name || 'anonymous mixin';
35
14
  this.selectors = [new selector_1.default([new element_1.default(null, name, false, this._index, this._fileInfo)])];
@@ -54,180 +33,181 @@ var Definition = function (name, params, rules, condition, variadic, frames, vis
54
33
  this.copyVisibilityInfo(visibilityInfo);
55
34
  this.allowRoot = true;
56
35
  };
57
- Definition.prototype = new ruleset_1.default();
58
- Definition.prototype.accept = function (visitor) {
59
- if (this.params && this.params.length) {
60
- this.params = visitor.visitArray(this.params);
61
- }
62
- this.rules = visitor.visitArray(this.rules);
63
- if (this.condition) {
64
- this.condition = visitor.visit(this.condition);
65
- }
66
- };
67
- Definition.prototype.evalParams = function (context, mixinEnv, args, evaldArguments) {
68
- /* jshint boss:true */
69
- var frame = new ruleset_1.default(null, null);
70
- var varargs;
71
- var arg;
72
- var params = utils.copyArray(this.params);
73
- var i;
74
- var j;
75
- var val;
76
- var name;
77
- var isNamedFound;
78
- var argIndex;
79
- var argsLength = 0;
80
- if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {
81
- frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();
82
- }
83
- mixinEnv = new contexts_1.default.Eval(mixinEnv, [frame].concat(mixinEnv.frames));
84
- if (args) {
85
- args = utils.copyArray(args);
86
- argsLength = args.length;
87
- for (i = 0; i < argsLength; i++) {
88
- arg = args[i];
89
- if (name = (arg && arg.name)) {
90
- isNamedFound = false;
91
- for (j = 0; j < params.length; j++) {
92
- if (!evaldArguments[j] && name === params[j].name) {
93
- evaldArguments[j] = arg.value.eval(context);
94
- frame.prependRule(new declaration_1.default(name, arg.value.eval(context)));
95
- isNamedFound = true;
96
- break;
36
+ Definition.prototype = Object.assign(new ruleset_1.default(), {
37
+ type: 'MixinDefinition',
38
+ evalFirst: true,
39
+ accept: function (visitor) {
40
+ if (this.params && this.params.length) {
41
+ this.params = visitor.visitArray(this.params);
42
+ }
43
+ this.rules = visitor.visitArray(this.rules);
44
+ if (this.condition) {
45
+ this.condition = visitor.visit(this.condition);
46
+ }
47
+ },
48
+ evalParams: function (context, mixinEnv, args, evaldArguments) {
49
+ /* jshint boss:true */
50
+ var frame = new ruleset_1.default(null, null);
51
+ var varargs;
52
+ var arg;
53
+ var params = utils.copyArray(this.params);
54
+ var i;
55
+ var j;
56
+ var val;
57
+ var name;
58
+ var isNamedFound;
59
+ var argIndex;
60
+ var argsLength = 0;
61
+ if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {
62
+ frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();
63
+ }
64
+ mixinEnv = new contexts_1.default.Eval(mixinEnv, [frame].concat(mixinEnv.frames));
65
+ if (args) {
66
+ args = utils.copyArray(args);
67
+ argsLength = args.length;
68
+ for (i = 0; i < argsLength; i++) {
69
+ arg = args[i];
70
+ if (name = (arg && arg.name)) {
71
+ isNamedFound = false;
72
+ for (j = 0; j < params.length; j++) {
73
+ if (!evaldArguments[j] && name === params[j].name) {
74
+ evaldArguments[j] = arg.value.eval(context);
75
+ frame.prependRule(new declaration_1.default(name, arg.value.eval(context)));
76
+ isNamedFound = true;
77
+ break;
78
+ }
79
+ }
80
+ if (isNamedFound) {
81
+ args.splice(i, 1);
82
+ i--;
83
+ continue;
84
+ }
85
+ else {
86
+ throw { type: 'Runtime', message: "Named argument for " + this.name + " " + args[i].name + " not found" };
97
87
  }
98
- }
99
- if (isNamedFound) {
100
- args.splice(i, 1);
101
- i--;
102
- continue;
103
- }
104
- else {
105
- throw { type: 'Runtime', message: "Named argument for " + this.name + " " + args[i].name + " not found" };
106
88
  }
107
89
  }
108
90
  }
109
- }
110
- argIndex = 0;
111
- for (i = 0; i < params.length; i++) {
112
- if (evaldArguments[i]) {
113
- continue;
114
- }
115
- arg = args && args[argIndex];
116
- if (name = params[i].name) {
117
- if (params[i].variadic) {
118
- varargs = [];
119
- for (j = argIndex; j < argsLength; j++) {
120
- varargs.push(args[j].value.eval(context));
121
- }
122
- frame.prependRule(new declaration_1.default(name, new expression_1.default(varargs).eval(context)));
91
+ argIndex = 0;
92
+ for (i = 0; i < params.length; i++) {
93
+ if (evaldArguments[i]) {
94
+ continue;
123
95
  }
124
- else {
125
- val = arg && arg.value;
126
- if (val) {
127
- // This was a mixin call, pass in a detached ruleset of it's eval'd rules
128
- if (Array.isArray(val)) {
129
- val = new detached_ruleset_1.default(new ruleset_1.default('', val));
96
+ arg = args && args[argIndex];
97
+ if (name = params[i].name) {
98
+ if (params[i].variadic) {
99
+ varargs = [];
100
+ for (j = argIndex; j < argsLength; j++) {
101
+ varargs.push(args[j].value.eval(context));
102
+ }
103
+ frame.prependRule(new declaration_1.default(name, new expression_1.default(varargs).eval(context)));
104
+ }
105
+ else {
106
+ val = arg && arg.value;
107
+ if (val) {
108
+ // This was a mixin call, pass in a detached ruleset of it's eval'd rules
109
+ if (Array.isArray(val)) {
110
+ val = new detached_ruleset_1.default(new ruleset_1.default('', val));
111
+ }
112
+ else {
113
+ val = val.eval(context);
114
+ }
115
+ }
116
+ else if (params[i].value) {
117
+ val = params[i].value.eval(mixinEnv);
118
+ frame.resetCache();
130
119
  }
131
120
  else {
132
- val = val.eval(context);
121
+ throw { type: 'Runtime', message: "wrong number of arguments for " + this.name + " (" + argsLength + " for " + this.arity + ")" };
133
122
  }
123
+ frame.prependRule(new declaration_1.default(name, val));
124
+ evaldArguments[i] = val;
134
125
  }
135
- else if (params[i].value) {
136
- val = params[i].value.eval(mixinEnv);
137
- frame.resetCache();
138
- }
139
- else {
140
- throw { type: 'Runtime', message: "wrong number of arguments for " + this.name + " (" + argsLength + " for " + this.arity + ")" };
126
+ }
127
+ if (params[i].variadic && args) {
128
+ for (j = argIndex; j < argsLength; j++) {
129
+ evaldArguments[j] = args[j].value.eval(context);
141
130
  }
142
- frame.prependRule(new declaration_1.default(name, val));
143
- evaldArguments[i] = val;
144
131
  }
132
+ argIndex++;
145
133
  }
146
- if (params[i].variadic && args) {
147
- for (j = argIndex; j < argsLength; j++) {
148
- evaldArguments[j] = args[j].value.eval(context);
134
+ return frame;
135
+ },
136
+ makeImportant: function () {
137
+ var rules = !this.rules ? this.rules : this.rules.map(function (r) {
138
+ if (r.makeImportant) {
139
+ return r.makeImportant(true);
149
140
  }
141
+ else {
142
+ return r;
143
+ }
144
+ });
145
+ var result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);
146
+ return result;
147
+ },
148
+ eval: function (context) {
149
+ return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));
150
+ },
151
+ evalCall: function (context, args, important) {
152
+ var _arguments = [];
153
+ var mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;
154
+ var frame = this.evalParams(context, new contexts_1.default.Eval(context, mixinFrames), args, _arguments);
155
+ var rules;
156
+ var ruleset;
157
+ frame.prependRule(new declaration_1.default('@arguments', new expression_1.default(_arguments).eval(context)));
158
+ rules = utils.copyArray(this.rules);
159
+ ruleset = new ruleset_1.default(null, rules);
160
+ ruleset.originalRuleset = this;
161
+ ruleset = ruleset.eval(new contexts_1.default.Eval(context, [this, frame].concat(mixinFrames)));
162
+ if (important) {
163
+ ruleset = ruleset.makeImportant();
150
164
  }
151
- argIndex++;
152
- }
153
- return frame;
154
- };
155
- Definition.prototype.makeImportant = function () {
156
- var rules = !this.rules ? this.rules : this.rules.map(function (r) {
157
- if (r.makeImportant) {
158
- return r.makeImportant(true);
159
- }
160
- else {
161
- return r;
162
- }
163
- });
164
- var result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);
165
- return result;
166
- };
167
- Definition.prototype.eval = function (context) {
168
- return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));
169
- };
170
- Definition.prototype.evalCall = function (context, args, important) {
171
- var _arguments = [];
172
- var mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;
173
- var frame = this.evalParams(context, new contexts_1.default.Eval(context, mixinFrames), args, _arguments);
174
- var rules;
175
- var ruleset;
176
- frame.prependRule(new declaration_1.default('@arguments', new expression_1.default(_arguments).eval(context)));
177
- rules = utils.copyArray(this.rules);
178
- ruleset = new ruleset_1.default(null, rules);
179
- ruleset.originalRuleset = this;
180
- ruleset = ruleset.eval(new contexts_1.default.Eval(context, [this, frame].concat(mixinFrames)));
181
- if (important) {
182
- ruleset = ruleset.makeImportant();
183
- }
184
- return ruleset;
185
- };
186
- Definition.prototype.matchCondition = function (args, context) {
187
- if (this.condition && !this.condition.eval(new contexts_1.default.Eval(context, [this.evalParams(context, /* the parameter variables */ new contexts_1.default.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]
188
- .concat(this.frames || []) // the parent namespace/mixin frames
189
- .concat(context.frames)))) { // the current environment frames
190
- return false;
191
- }
192
- return true;
193
- };
194
- Definition.prototype.matchArgs = function (args, context) {
195
- var allArgsCnt = (args && args.length) || 0;
196
- var len;
197
- var optionalParameters = this.optionalParameters;
198
- var requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {
199
- if (optionalParameters.indexOf(p.name) < 0) {
200
- return count + 1;
201
- }
202
- else {
203
- return count;
204
- }
205
- }, 0);
206
- if (!this.variadic) {
207
- if (requiredArgsCnt < this.required) {
208
- return false;
209
- }
210
- if (allArgsCnt > this.params.length) {
165
+ return ruleset;
166
+ },
167
+ matchCondition: function (args, context) {
168
+ if (this.condition && !this.condition.eval(new contexts_1.default.Eval(context, [this.evalParams(context, /* the parameter variables */ new contexts_1.default.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]
169
+ .concat(this.frames || []) // the parent namespace/mixin frames
170
+ .concat(context.frames)))) { // the current environment frames
211
171
  return false;
212
172
  }
213
- }
214
- else {
215
- if (requiredArgsCnt < (this.required - 1)) {
216
- return false;
173
+ return true;
174
+ },
175
+ matchArgs: function (args, context) {
176
+ var allArgsCnt = (args && args.length) || 0;
177
+ var len;
178
+ var optionalParameters = this.optionalParameters;
179
+ var requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {
180
+ if (optionalParameters.indexOf(p.name) < 0) {
181
+ return count + 1;
182
+ }
183
+ else {
184
+ return count;
185
+ }
186
+ }, 0);
187
+ if (!this.variadic) {
188
+ if (requiredArgsCnt < this.required) {
189
+ return false;
190
+ }
191
+ if (allArgsCnt > this.params.length) {
192
+ return false;
193
+ }
217
194
  }
218
- }
219
- // check patterns
220
- len = Math.min(requiredArgsCnt, this.arity);
221
- for (var i = 0; i < len; i++) {
222
- if (!this.params[i].name && !this.params[i].variadic) {
223
- if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {
195
+ else {
196
+ if (requiredArgsCnt < (this.required - 1)) {
224
197
  return false;
225
198
  }
226
199
  }
200
+ // check patterns
201
+ len = Math.min(requiredArgsCnt, this.arity);
202
+ for (var i = 0; i < len; i++) {
203
+ if (!this.params[i].name && !this.params[i].variadic) {
204
+ if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {
205
+ return false;
206
+ }
207
+ }
208
+ }
209
+ return true;
227
210
  }
228
- return true;
229
- };
230
- Definition.prototype.type = 'MixinDefinition';
231
- Definition.prototype.evalFirst = true;
211
+ });
232
212
  exports.default = Definition;
233
213
  //# sourceMappingURL=mixin-definition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mixin-definition.js","sourceRoot":"","sources":["../../../src/less/tree/mixin-definition.js"],"names":[],"mappings":"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","sourcesContent":["import Selector from './selector';\nimport Element from './element';\nimport Ruleset from './ruleset';\nimport Declaration from './declaration';\nimport DetachedRuleset from './detached-ruleset';\nimport Expression from './expression';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst Definition = function(name, params, rules, condition, variadic, frames, visibilityInfo) {\n this.name = name || 'anonymous mixin';\n this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];\n this.params = params;\n this.condition = condition;\n this.variadic = variadic;\n this.arity = params.length;\n this.rules = rules;\n this._lookups = {};\n const optionalParameters = [];\n this.required = params.reduce((count, p) => {\n if (!p.name || (p.name && !p.value)) {\n return count + 1;\n }\n else {\n optionalParameters.push(p.name);\n return count;\n }\n }, 0);\n this.optionalParameters = optionalParameters;\n this.frames = frames;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n};\n\nDefinition.prototype = new Ruleset();\n\nDefinition.prototype.accept = function(visitor) {\n if (this.params && this.params.length) {\n this.params = visitor.visitArray(this.params);\n }\n this.rules = visitor.visitArray(this.rules);\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n};\n\nDefinition.prototype.evalParams = function(context, mixinEnv, args, evaldArguments) {\n /* jshint boss:true */\n const frame = new Ruleset(null, null);\n\n let varargs;\n let arg;\n const params = utils.copyArray(this.params);\n let i;\n let j;\n let val;\n let name;\n let isNamedFound;\n let argIndex;\n let argsLength = 0;\n\n if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {\n frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();\n }\n mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));\n\n if (args) {\n args = utils.copyArray(args);\n argsLength = args.length;\n\n for (i = 0; i < argsLength; i++) {\n arg = args[i];\n if (name = (arg && arg.name)) {\n isNamedFound = false;\n for (j = 0; j < params.length; j++) {\n if (!evaldArguments[j] && name === params[j].name) {\n evaldArguments[j] = arg.value.eval(context);\n frame.prependRule(new Declaration(name, arg.value.eval(context)));\n isNamedFound = true;\n break;\n }\n }\n if (isNamedFound) {\n args.splice(i, 1);\n i--;\n continue;\n } else {\n throw { type: 'Runtime', message: `Named argument for ${this.name} ${args[i].name} not found` };\n }\n }\n }\n }\n argIndex = 0;\n for (i = 0; i < params.length; i++) {\n if (evaldArguments[i]) { continue; }\n\n arg = args && args[argIndex];\n\n if (name = params[i].name) {\n if (params[i].variadic) {\n varargs = [];\n for (j = argIndex; j < argsLength; j++) {\n varargs.push(args[j].value.eval(context));\n }\n frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));\n } else {\n val = arg && arg.value;\n if (val) {\n // This was a mixin call, pass in a detached ruleset of it's eval'd rules\n if (Array.isArray(val)) {\n val = new DetachedRuleset(new Ruleset('', val));\n }\n else {\n val = val.eval(context);\n }\n } else if (params[i].value) {\n val = params[i].value.eval(mixinEnv);\n frame.resetCache();\n } else {\n throw { type: 'Runtime', message: `wrong number of arguments for ${this.name} (${argsLength} for ${this.arity})` };\n }\n\n frame.prependRule(new Declaration(name, val));\n evaldArguments[i] = val;\n }\n }\n\n if (params[i].variadic && args) {\n for (j = argIndex; j < argsLength; j++) {\n evaldArguments[j] = args[j].value.eval(context);\n }\n }\n argIndex++;\n }\n\n return frame;\n};\n\nDefinition.prototype.makeImportant = function() {\n const rules = !this.rules ? this.rules : this.rules.map(r => {\n if (r.makeImportant) {\n return r.makeImportant(true);\n } else {\n return r;\n }\n });\n const result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);\n return result;\n};\n\nDefinition.prototype.eval = function(context) {\n return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));\n};\n\nDefinition.prototype.evalCall = function(context, args, important) {\n const _arguments = [];\n const mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;\n const frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);\n let rules;\n let ruleset;\n\n frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));\n\n rules = utils.copyArray(this.rules);\n\n ruleset = new Ruleset(null, rules);\n ruleset.originalRuleset = this;\n ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));\n if (important) {\n ruleset = ruleset.makeImportant();\n }\n return ruleset;\n};\n\nDefinition.prototype.matchCondition = function(args, context) {\n if (this.condition && !this.condition.eval(\n new contexts.Eval(context,\n [this.evalParams(context, /* the parameter variables */\n new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]\n .concat(this.frames || []) // the parent namespace/mixin frames\n .concat(context.frames)))) { // the current environment frames\n return false;\n }\n return true;\n};\n\nDefinition.prototype.matchArgs = function(args, context) {\n const allArgsCnt = (args && args.length) || 0;\n let len;\n const optionalParameters = this.optionalParameters;\n const requiredArgsCnt = !args ? 0 : args.reduce((count, p) => {\n if (optionalParameters.indexOf(p.name) < 0) {\n return count + 1;\n } else {\n return count;\n }\n }, 0);\n\n if (!this.variadic) {\n if (requiredArgsCnt < this.required) {\n return false;\n }\n if (allArgsCnt > this.params.length) {\n return false;\n }\n } else {\n if (requiredArgsCnt < (this.required - 1)) {\n return false;\n }\n }\n\n // check patterns\n len = Math.min(requiredArgsCnt, this.arity);\n\n for (let i = 0; i < len; i++) {\n if (!this.params[i].name && !this.params[i].variadic) {\n if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {\n return false;\n }\n }\n }\n return true;\n};\n\nDefinition.prototype.type = 'MixinDefinition';\nDefinition.prototype.evalFirst = true;\nexport default Definition;\n"]}
1
+ {"version":3,"file":"mixin-definition.js","sourceRoot":"","sources":["../../../src/less/tree/mixin-definition.js"],"names":[],"mappings":"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","sourcesContent":["import Selector from './selector';\nimport Element from './element';\nimport Ruleset from './ruleset';\nimport Declaration from './declaration';\nimport DetachedRuleset from './detached-ruleset';\nimport Expression from './expression';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst Definition = function(name, params, rules, condition, variadic, frames, visibilityInfo) {\n this.name = name || 'anonymous mixin';\n this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];\n this.params = params;\n this.condition = condition;\n this.variadic = variadic;\n this.arity = params.length;\n this.rules = rules;\n this._lookups = {};\n const optionalParameters = [];\n this.required = params.reduce(function (count, p) {\n if (!p.name || (p.name && !p.value)) {\n return count + 1;\n }\n else {\n optionalParameters.push(p.name);\n return count;\n }\n }, 0);\n this.optionalParameters = optionalParameters;\n this.frames = frames;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nDefinition.prototype = Object.assign(new Ruleset(), {\n type: 'MixinDefinition',\n evalFirst: true,\n\n accept(visitor) {\n if (this.params && this.params.length) {\n this.params = visitor.visitArray(this.params);\n }\n this.rules = visitor.visitArray(this.rules);\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n evalParams(context, mixinEnv, args, evaldArguments) {\n /* jshint boss:true */\n const frame = new Ruleset(null, null);\n\n let varargs;\n let arg;\n const params = utils.copyArray(this.params);\n let i;\n let j;\n let val;\n let name;\n let isNamedFound;\n let argIndex;\n let argsLength = 0;\n\n if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {\n frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();\n }\n mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));\n\n if (args) {\n args = utils.copyArray(args);\n argsLength = args.length;\n\n for (i = 0; i < argsLength; i++) {\n arg = args[i];\n if (name = (arg && arg.name)) {\n isNamedFound = false;\n for (j = 0; j < params.length; j++) {\n if (!evaldArguments[j] && name === params[j].name) {\n evaldArguments[j] = arg.value.eval(context);\n frame.prependRule(new Declaration(name, arg.value.eval(context)));\n isNamedFound = true;\n break;\n }\n }\n if (isNamedFound) {\n args.splice(i, 1);\n i--;\n continue;\n } else {\n throw { type: 'Runtime', message: `Named argument for ${this.name} ${args[i].name} not found` };\n }\n }\n }\n }\n argIndex = 0;\n for (i = 0; i < params.length; i++) {\n if (evaldArguments[i]) { continue; }\n\n arg = args && args[argIndex];\n\n if (name = params[i].name) {\n if (params[i].variadic) {\n varargs = [];\n for (j = argIndex; j < argsLength; j++) {\n varargs.push(args[j].value.eval(context));\n }\n frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));\n } else {\n val = arg && arg.value;\n if (val) {\n // This was a mixin call, pass in a detached ruleset of it's eval'd rules\n if (Array.isArray(val)) {\n val = new DetachedRuleset(new Ruleset('', val));\n }\n else {\n val = val.eval(context);\n }\n } else if (params[i].value) {\n val = params[i].value.eval(mixinEnv);\n frame.resetCache();\n } else {\n throw { type: 'Runtime', message: `wrong number of arguments for ${this.name} (${argsLength} for ${this.arity})` };\n }\n\n frame.prependRule(new Declaration(name, val));\n evaldArguments[i] = val;\n }\n }\n\n if (params[i].variadic && args) {\n for (j = argIndex; j < argsLength; j++) {\n evaldArguments[j] = args[j].value.eval(context);\n }\n }\n argIndex++;\n }\n\n return frame;\n },\n\n makeImportant() {\n const rules = !this.rules ? this.rules : this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant(true);\n } else {\n return r;\n }\n });\n const result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);\n return result;\n },\n\n eval(context) {\n return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));\n },\n\n evalCall(context, args, important) {\n const _arguments = [];\n const mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;\n const frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);\n let rules;\n let ruleset;\n\n frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));\n\n rules = utils.copyArray(this.rules);\n\n ruleset = new Ruleset(null, rules);\n ruleset.originalRuleset = this;\n ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));\n if (important) {\n ruleset = ruleset.makeImportant();\n }\n return ruleset;\n },\n\n matchCondition(args, context) {\n if (this.condition && !this.condition.eval(\n new contexts.Eval(context,\n [this.evalParams(context, /* the parameter variables */\n new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]\n .concat(this.frames || []) // the parent namespace/mixin frames\n .concat(context.frames)))) { // the current environment frames\n return false;\n }\n return true;\n },\n\n matchArgs(args, context) {\n const allArgsCnt = (args && args.length) || 0;\n let len;\n const optionalParameters = this.optionalParameters;\n const requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {\n if (optionalParameters.indexOf(p.name) < 0) {\n return count + 1;\n } else {\n return count;\n }\n }, 0);\n\n if (!this.variadic) {\n if (requiredArgsCnt < this.required) {\n return false;\n }\n if (allArgsCnt > this.params.length) {\n return false;\n }\n } else {\n if (requiredArgsCnt < (this.required - 1)) {\n return false;\n }\n }\n\n // check patterns\n len = Math.min(requiredArgsCnt, this.arity);\n\n for (let i = 0; i < len; i++) {\n if (!this.params[i].name && !this.params[i].variadic) {\n if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {\n return false;\n }\n }\n }\n return true;\n }\n});\n\nexport default Definition;\n"]}
@@ -1,76 +1,72 @@
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 variable_1 = __importDefault(require("./variable"));
8
- var ruleset_1 = __importDefault(require("./ruleset"));
9
- var selector_1 = __importDefault(require("./selector"));
3
+ var tslib_1 = require("tslib");
4
+ var node_1 = tslib_1.__importDefault(require("./node"));
5
+ var variable_1 = tslib_1.__importDefault(require("./variable"));
6
+ var ruleset_1 = tslib_1.__importDefault(require("./ruleset"));
7
+ var selector_1 = tslib_1.__importDefault(require("./selector"));
10
8
  var NamespaceValue = function (ruleCall, lookups, index, fileInfo) {
11
9
  this.value = ruleCall;
12
10
  this.lookups = lookups;
13
11
  this._index = index;
14
12
  this._fileInfo = fileInfo;
15
13
  };
16
- NamespaceValue.prototype = new node_1.default();
17
- NamespaceValue.prototype.eval = function (context) {
18
- var i;
19
- var j;
20
- var name;
21
- var rules = this.value.eval(context);
22
- for (i = 0; i < this.lookups.length; i++) {
23
- name = this.lookups[i];
24
- /**
25
- * Eval'd DRs return rulesets.
26
- * Eval'd mixins return rules, so let's make a ruleset if we need it.
27
- * We need to do this because of late parsing of values
28
- */
29
- if (Array.isArray(rules)) {
30
- rules = new ruleset_1.default([new selector_1.default()], rules);
31
- }
32
- if (name === '') {
33
- rules = rules.lastDeclaration();
34
- }
35
- else if (name.charAt(0) === '@') {
36
- if (name.charAt(1) === '@') {
37
- name = "@" + new variable_1.default(name.substr(1)).eval(context).value;
38
- }
39
- if (rules.variables) {
40
- rules = rules.variable(name);
14
+ NamespaceValue.prototype = Object.assign(new node_1.default(), {
15
+ type: 'NamespaceValue',
16
+ eval: function (context) {
17
+ var i, j, name, rules = this.value.eval(context);
18
+ for (i = 0; i < this.lookups.length; i++) {
19
+ name = this.lookups[i];
20
+ /**
21
+ * Eval'd DRs return rulesets.
22
+ * Eval'd mixins return rules, so let's make a ruleset if we need it.
23
+ * We need to do this because of late parsing of values
24
+ */
25
+ if (Array.isArray(rules)) {
26
+ rules = new ruleset_1.default([new selector_1.default()], rules);
41
27
  }
42
- if (!rules) {
43
- throw { type: 'Name', message: "variable " + name + " not found", filename: this.fileInfo().filename,
44
- index: this.getIndex() };
28
+ if (name === '') {
29
+ rules = rules.lastDeclaration();
45
30
  }
46
- }
47
- else {
48
- if (name.substring(0, 2) === '$@') {
49
- name = "$" + new variable_1.default(name.substr(1)).eval(context).value;
31
+ else if (name.charAt(0) === '@') {
32
+ if (name.charAt(1) === '@') {
33
+ name = "@" + new variable_1.default(name.substr(1)).eval(context).value;
34
+ }
35
+ if (rules.variables) {
36
+ rules = rules.variable(name);
37
+ }
38
+ if (!rules) {
39
+ throw { type: 'Name', message: "variable " + name + " not found", filename: this.fileInfo().filename,
40
+ index: this.getIndex() };
41
+ }
50
42
  }
51
43
  else {
52
- name = name.charAt(0) === '$' ? name : "$" + name;
44
+ if (name.substring(0, 2) === '$@') {
45
+ name = "$" + new variable_1.default(name.substr(1)).eval(context).value;
46
+ }
47
+ else {
48
+ name = name.charAt(0) === '$' ? name : "$" + name;
49
+ }
50
+ if (rules.properties) {
51
+ rules = rules.property(name);
52
+ }
53
+ if (!rules) {
54
+ throw { type: 'Name', message: "property \"" + name.substr(1) + "\" not found", filename: this.fileInfo().filename,
55
+ index: this.getIndex() };
56
+ }
57
+ // Properties are an array of values, since a ruleset can have multiple props.
58
+ // We pick the last one (the "cascaded" value)
59
+ rules = rules[rules.length - 1];
53
60
  }
54
- if (rules.properties) {
55
- rules = rules.property(name);
61
+ if (rules.value) {
62
+ rules = rules.eval(context).value;
56
63
  }
57
- if (!rules) {
58
- throw { type: 'Name', message: "property \"" + name.substr(1) + "\" not found", filename: this.fileInfo().filename,
59
- index: this.getIndex() };
64
+ if (rules.ruleset) {
65
+ rules = rules.ruleset.eval(context);
60
66
  }
61
- // Properties are an array of values, since a ruleset can have multiple props.
62
- // We pick the last one (the "cascaded" value)
63
- rules = rules[rules.length - 1];
64
- }
65
- if (rules.value) {
66
- rules = rules.eval(context).value;
67
- }
68
- if (rules.ruleset) {
69
- rules = rules.ruleset.eval(context);
70
67
  }
68
+ return rules;
71
69
  }
72
- return rules;
73
- };
74
- NamespaceValue.prototype.type = 'NamespaceValue';
70
+ });
75
71
  exports.default = NamespaceValue;
76
72
  //# sourceMappingURL=namespace-value.js.map
@@ -1 +1 @@
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 = new Node();\n\nNamespaceValue.prototype.eval = function(context) {\n let i;\n let j;\n let name;\n let 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\nNamespaceValue.prototype.type = 'NamespaceValue';\nexport default NamespaceValue;\n"]}
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,EAChB,OAAO,EAAE,cAAY,IAAI,eAAY,EACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;wBAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;iBAChC;aACJ;iBACI;gBACD,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC/B,IAAI,GAAG,MAAI,IAAI,kBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAO,CAAC;iBACjE;qBACI;oBACD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAI,IAAM,CAAC;iBACrD;gBACD,IAAI,KAAK,CAAC,UAAU,EAAE;oBAClB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAChC;gBAED,IAAI,CAAC,KAAK,EAAE;oBACR,MAAM,EAAE,IAAI,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAa,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAa,EACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ;wBAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;iBAChC;gBACD,8EAA8E;gBAC9E,8CAA8C;gBAC9C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACnC;YAED,IAAI,KAAK,CAAC,KAAK,EAAE;gBACb,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;aACrC;YACD,IAAI,KAAK,CAAC,OAAO,EAAE;gBACf,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACvC;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ,CAAC,CAAC;AAEH,kBAAe,cAAc,CAAC","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"]}