less 4.4.2 → 4.6.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 (333) hide show
  1. package/bin/lessc +67 -58
  2. package/dist/less.js +14496 -11811
  3. package/dist/less.min.js +4 -4
  4. package/dist/less.min.js.map +1 -1
  5. package/lib/less/constants.js +5 -7
  6. package/lib/less/contexts.js +71 -56
  7. package/lib/less/data/colors.js +150 -153
  8. package/lib/less/data/index.js +4 -7
  9. package/lib/less/data/unit-conversions.js +2 -5
  10. package/lib/less/default-options.js +52 -23
  11. package/lib/less/deprecation.js +67 -0
  12. package/lib/less/environment/abstract-file-manager.js +62 -50
  13. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  14. package/lib/less/environment/environment-api.ts +21 -0
  15. package/lib/less/environment/environment.js +34 -30
  16. package/lib/less/environment/file-manager-api.ts +77 -0
  17. package/lib/less/functions/boolean.js +13 -13
  18. package/lib/less/functions/color-blending.js +39 -31
  19. package/lib/less/functions/color.js +153 -137
  20. package/lib/less/functions/data-uri.js +73 -64
  21. package/lib/less/functions/default.js +9 -11
  22. package/lib/less/functions/function-caller.js +35 -34
  23. package/lib/less/functions/function-registry.js +16 -17
  24. package/lib/less/functions/index.js +33 -33
  25. package/lib/less/functions/list.js +88 -75
  26. package/lib/less/functions/math-helper.js +8 -11
  27. package/lib/less/functions/math.js +21 -21
  28. package/lib/less/functions/number.js +42 -53
  29. package/lib/less/functions/string.js +18 -22
  30. package/lib/less/functions/style.js +21 -20
  31. package/lib/less/functions/svg.js +83 -82
  32. package/lib/less/functions/types.js +28 -32
  33. package/lib/less/import-manager.js +73 -64
  34. package/lib/less/index.js +65 -65
  35. package/lib/less/less-error.js +65 -46
  36. package/lib/less/logger.js +11 -14
  37. package/lib/less/parse-tree.js +94 -38
  38. package/lib/less/parse.js +44 -44
  39. package/lib/less/parser/parser-input.js +152 -131
  40. package/lib/less/parser/parser.js +866 -672
  41. package/lib/less/plugin-manager.js +57 -46
  42. package/lib/less/render.js +17 -23
  43. package/lib/less/source-map-builder.js +52 -43
  44. package/lib/less/source-map-output.js +57 -44
  45. package/lib/less/transform-tree.js +40 -30
  46. package/lib/less/tree/anonymous.js +52 -28
  47. package/lib/less/tree/assignment.js +44 -27
  48. package/lib/less/tree/atrule-syntax.js +4 -6
  49. package/lib/less/tree/atrule.js +247 -140
  50. package/lib/less/tree/attribute.js +55 -24
  51. package/lib/less/tree/call.js +70 -42
  52. package/lib/less/tree/color.js +194 -145
  53. package/lib/less/tree/combinator.js +31 -21
  54. package/lib/less/tree/comment.js +44 -23
  55. package/lib/less/tree/condition.js +61 -36
  56. package/lib/less/tree/container.js +90 -34
  57. package/lib/less/tree/debug-info.js +53 -11
  58. package/lib/less/tree/declaration.js +97 -52
  59. package/lib/less/tree/detached-ruleset.js +42 -24
  60. package/lib/less/tree/dimension.js +127 -71
  61. package/lib/less/tree/element.js +82 -52
  62. package/lib/less/tree/expression.js +75 -50
  63. package/lib/less/tree/extend.js +71 -42
  64. package/lib/less/tree/import.js +184 -110
  65. package/lib/less/tree/index.js +52 -81
  66. package/lib/less/tree/javascript.js +43 -32
  67. package/lib/less/tree/js-eval-node.js +46 -32
  68. package/lib/less/tree/keyword.js +25 -17
  69. package/lib/less/tree/media.js +77 -35
  70. package/lib/less/tree/merge-rules.js +47 -0
  71. package/lib/less/tree/mixin-call.js +181 -98
  72. package/lib/less/tree/mixin-definition.js +211 -117
  73. package/lib/less/tree/namespace-value.js +63 -44
  74. package/lib/less/tree/negative.js +34 -21
  75. package/lib/less/tree/nested-at-rule.js +149 -66
  76. package/lib/less/tree/node.js +225 -90
  77. package/lib/less/tree/operation.js +59 -34
  78. package/lib/less/tree/paren.js +34 -17
  79. package/lib/less/tree/property.js +66 -35
  80. package/lib/less/tree/query-in-parens.js +52 -60
  81. package/lib/less/tree/quoted.js +93 -44
  82. package/lib/less/tree/ruleset.js +632 -318
  83. package/lib/less/tree/selector.js +151 -77
  84. package/lib/less/tree/unicode-descriptor.js +14 -12
  85. package/lib/less/tree/unit.js +111 -63
  86. package/lib/less/tree/url.js +62 -38
  87. package/lib/less/tree/value.js +50 -34
  88. package/lib/less/tree/variable-call.js +47 -30
  89. package/lib/less/tree/variable.js +53 -31
  90. package/lib/less/utils.js +44 -47
  91. package/lib/less/visitors/extend-visitor.js +233 -172
  92. package/lib/less/visitors/import-sequencer.js +24 -24
  93. package/lib/less/visitors/import-visitor.js +62 -52
  94. package/lib/less/visitors/index.js +14 -17
  95. package/lib/less/visitors/join-selector-visitor.js +40 -37
  96. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  97. package/lib/less/visitors/to-css-visitor.js +135 -128
  98. package/lib/less/visitors/visitor.js +60 -45
  99. package/lib/less-browser/add-default-options.js +23 -13
  100. package/lib/less-browser/bootstrap.js +23 -17
  101. package/lib/less-browser/browser.js +24 -21
  102. package/lib/less-browser/cache.js +17 -19
  103. package/lib/less-browser/error-reporting.js +52 -44
  104. package/lib/less-browser/file-manager.js +52 -42
  105. package/lib/less-browser/image-size.js +12 -12
  106. package/lib/less-browser/index.js +131 -105
  107. package/lib/less-browser/log-listener.js +30 -31
  108. package/lib/less-browser/plugin-loader.js +10 -10
  109. package/lib/less-browser/utils.js +19 -21
  110. package/lib/less-node/environment.js +32 -8
  111. package/lib/less-node/file-manager.js +62 -45
  112. package/lib/less-node/fs.js +11 -8
  113. package/lib/less-node/image-size.js +40 -31
  114. package/lib/less-node/index.js +28 -19
  115. package/lib/less-node/lessc-helper.js +28 -28
  116. package/lib/less-node/plugin-loader.js +35 -27
  117. package/lib/less-node/url-file-manager.js +33 -31
  118. package/package.json +31 -19
  119. package/.eslintignore +0 -6
  120. package/.eslintrc.js +0 -63
  121. package/Gruntfile.js +0 -404
  122. package/bower.json +0 -22
  123. package/lib/less/constants.js.map +0 -1
  124. package/lib/less/contexts.js.map +0 -1
  125. package/lib/less/data/colors.js.map +0 -1
  126. package/lib/less/data/index.js.map +0 -1
  127. package/lib/less/data/unit-conversions.js.map +0 -1
  128. package/lib/less/default-options.js.map +0 -1
  129. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  130. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  131. package/lib/less/environment/environment-api.js +0 -3
  132. package/lib/less/environment/environment-api.js.map +0 -1
  133. package/lib/less/environment/environment.js.map +0 -1
  134. package/lib/less/environment/file-manager-api.js +0 -3
  135. package/lib/less/environment/file-manager-api.js.map +0 -1
  136. package/lib/less/functions/boolean.js.map +0 -1
  137. package/lib/less/functions/color-blending.js.map +0 -1
  138. package/lib/less/functions/color.js.map +0 -1
  139. package/lib/less/functions/data-uri.js.map +0 -1
  140. package/lib/less/functions/default.js.map +0 -1
  141. package/lib/less/functions/function-caller.js.map +0 -1
  142. package/lib/less/functions/function-registry.js.map +0 -1
  143. package/lib/less/functions/index.js.map +0 -1
  144. package/lib/less/functions/list.js.map +0 -1
  145. package/lib/less/functions/math-helper.js.map +0 -1
  146. package/lib/less/functions/math.js.map +0 -1
  147. package/lib/less/functions/number.js.map +0 -1
  148. package/lib/less/functions/string.js.map +0 -1
  149. package/lib/less/functions/style.js.map +0 -1
  150. package/lib/less/functions/svg.js.map +0 -1
  151. package/lib/less/functions/types.js.map +0 -1
  152. package/lib/less/import-manager.js.map +0 -1
  153. package/lib/less/index.js.map +0 -1
  154. package/lib/less/less-error.js.map +0 -1
  155. package/lib/less/logger.js.map +0 -1
  156. package/lib/less/parse-tree.js.map +0 -1
  157. package/lib/less/parse.js.map +0 -1
  158. package/lib/less/parser/chunker.js +0 -148
  159. package/lib/less/parser/chunker.js.map +0 -1
  160. package/lib/less/parser/parser-input.js.map +0 -1
  161. package/lib/less/parser/parser.js.map +0 -1
  162. package/lib/less/plugin-manager.js.map +0 -1
  163. package/lib/less/render.js.map +0 -1
  164. package/lib/less/source-map-builder.js.map +0 -1
  165. package/lib/less/source-map-output.js.map +0 -1
  166. package/lib/less/transform-tree.js.map +0 -1
  167. package/lib/less/tree/anonymous.js.map +0 -1
  168. package/lib/less/tree/assignment.js.map +0 -1
  169. package/lib/less/tree/atrule-syntax.js.map +0 -1
  170. package/lib/less/tree/atrule.js.map +0 -1
  171. package/lib/less/tree/attribute.js.map +0 -1
  172. package/lib/less/tree/call.js.map +0 -1
  173. package/lib/less/tree/color.js.map +0 -1
  174. package/lib/less/tree/combinator.js.map +0 -1
  175. package/lib/less/tree/comment.js.map +0 -1
  176. package/lib/less/tree/condition.js.map +0 -1
  177. package/lib/less/tree/container.js.map +0 -1
  178. package/lib/less/tree/debug-info.js.map +0 -1
  179. package/lib/less/tree/declaration.js.map +0 -1
  180. package/lib/less/tree/detached-ruleset.js.map +0 -1
  181. package/lib/less/tree/dimension.js.map +0 -1
  182. package/lib/less/tree/element.js.map +0 -1
  183. package/lib/less/tree/expression.js.map +0 -1
  184. package/lib/less/tree/extend.js.map +0 -1
  185. package/lib/less/tree/import.js.map +0 -1
  186. package/lib/less/tree/index.js.map +0 -1
  187. package/lib/less/tree/javascript.js.map +0 -1
  188. package/lib/less/tree/js-eval-node.js.map +0 -1
  189. package/lib/less/tree/keyword.js.map +0 -1
  190. package/lib/less/tree/media.js.map +0 -1
  191. package/lib/less/tree/mixin-call.js.map +0 -1
  192. package/lib/less/tree/mixin-definition.js.map +0 -1
  193. package/lib/less/tree/namespace-value.js.map +0 -1
  194. package/lib/less/tree/negative.js.map +0 -1
  195. package/lib/less/tree/nested-at-rule.js.map +0 -1
  196. package/lib/less/tree/node.js.map +0 -1
  197. package/lib/less/tree/operation.js.map +0 -1
  198. package/lib/less/tree/paren.js.map +0 -1
  199. package/lib/less/tree/property.js.map +0 -1
  200. package/lib/less/tree/query-in-parens.js.map +0 -1
  201. package/lib/less/tree/quoted.js.map +0 -1
  202. package/lib/less/tree/ruleset.js.map +0 -1
  203. package/lib/less/tree/selector.js.map +0 -1
  204. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  205. package/lib/less/tree/unit.js.map +0 -1
  206. package/lib/less/tree/url.js.map +0 -1
  207. package/lib/less/tree/value.js.map +0 -1
  208. package/lib/less/tree/variable-call.js.map +0 -1
  209. package/lib/less/tree/variable.js.map +0 -1
  210. package/lib/less/utils.js.map +0 -1
  211. package/lib/less/visitors/extend-visitor.js.map +0 -1
  212. package/lib/less/visitors/import-sequencer.js.map +0 -1
  213. package/lib/less/visitors/import-visitor.js.map +0 -1
  214. package/lib/less/visitors/index.js.map +0 -1
  215. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  216. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  217. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  218. package/lib/less/visitors/visitor.js.map +0 -1
  219. package/lib/less-browser/add-default-options.js.map +0 -1
  220. package/lib/less-browser/bootstrap.js.map +0 -1
  221. package/lib/less-browser/browser.js.map +0 -1
  222. package/lib/less-browser/cache.js.map +0 -1
  223. package/lib/less-browser/error-reporting.js.map +0 -1
  224. package/lib/less-browser/file-manager.js.map +0 -1
  225. package/lib/less-browser/image-size.js.map +0 -1
  226. package/lib/less-browser/index.js.map +0 -1
  227. package/lib/less-browser/log-listener.js.map +0 -1
  228. package/lib/less-browser/plugin-loader.js.map +0 -1
  229. package/lib/less-browser/utils.js.map +0 -1
  230. package/lib/less-node/environment.js.map +0 -1
  231. package/lib/less-node/file-manager.js.map +0 -1
  232. package/lib/less-node/fs.js.map +0 -1
  233. package/lib/less-node/image-size.js.map +0 -1
  234. package/lib/less-node/index.js.map +0 -1
  235. package/lib/less-node/lessc-helper.js.map +0 -1
  236. package/lib/less-node/plugin-loader.js.map +0 -1
  237. package/lib/less-node/url-file-manager.js.map +0 -1
  238. package/test/.eslintrc.json +0 -9
  239. package/test/README.md +0 -3
  240. package/test/browser/common.js +0 -230
  241. package/test/browser/css/global-vars/simple.css +0 -3
  242. package/test/browser/css/modify-vars/simple.css +0 -8
  243. package/test/browser/css/plugin/plugin.css +0 -3
  244. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  245. package/test/browser/css/relative-urls/urls.css +0 -36
  246. package/test/browser/css/rewrite-urls/urls.css +0 -36
  247. package/test/browser/css/rootpath/urls.css +0 -35
  248. package/test/browser/css/rootpath-relative/urls.css +0 -35
  249. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  250. package/test/browser/css/urls.css +0 -54
  251. package/test/browser/generator/benchmark.config.js +0 -50
  252. package/test/browser/generator/generate.js +0 -78
  253. package/test/browser/generator/runner.config.js +0 -188
  254. package/test/browser/generator/runner.js +0 -2
  255. package/test/browser/generator/template.js +0 -93
  256. package/test/browser/generator/utils.js +0 -14
  257. package/test/browser/less/console-errors/test-error.less +0 -3
  258. package/test/browser/less/console-errors/test-error.txt +0 -2
  259. package/test/browser/less/errors/image-height-error.less +0 -3
  260. package/test/browser/less/errors/image-height-error.txt +0 -4
  261. package/test/browser/less/errors/image-size-error.less +0 -3
  262. package/test/browser/less/errors/image-size-error.txt +0 -4
  263. package/test/browser/less/errors/image-width-error.less +0 -3
  264. package/test/browser/less/errors/image-width-error.txt +0 -4
  265. package/test/browser/less/global-vars/simple.less +0 -3
  266. package/test/browser/less/imports/urls.less +0 -4
  267. package/test/browser/less/imports/urls2.less +0 -4
  268. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  269. package/test/browser/less/modify-vars/simple.less +0 -8
  270. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  271. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  272. package/test/browser/less/plugin/plugin.js +0 -4
  273. package/test/browser/less/plugin/plugin.less +0 -4
  274. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  275. package/test/browser/less/relative-urls/urls.less +0 -34
  276. package/test/browser/less/rewrite-urls/urls.less +0 -34
  277. package/test/browser/less/rootpath/urls.less +0 -33
  278. package/test/browser/less/rootpath-relative/urls.less +0 -33
  279. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  280. package/test/browser/less/urls.less +0 -62
  281. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  282. package/test/browser/runner-VisitorPlugin.js +0 -3
  283. package/test/browser/runner-browser-options.js +0 -51
  284. package/test/browser/runner-browser-spec.js +0 -12
  285. package/test/browser/runner-console-errors.js +0 -5
  286. package/test/browser/runner-errors-options.js +0 -6
  287. package/test/browser/runner-errors-spec.js +0 -3
  288. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  289. package/test/browser/runner-filemanagerPlugin.js +0 -3
  290. package/test/browser/runner-global-vars-options.js +0 -7
  291. package/test/browser/runner-global-vars-spec.js +0 -3
  292. package/test/browser/runner-legacy-options.js +0 -6
  293. package/test/browser/runner-legacy-spec.js +0 -3
  294. package/test/browser/runner-main-options.js +0 -17
  295. package/test/browser/runner-main-spec.js +0 -7
  296. package/test/browser/runner-modify-vars-options.js +0 -5
  297. package/test/browser/runner-modify-vars-spec.js +0 -33
  298. package/test/browser/runner-no-js-errors-options.js +0 -4
  299. package/test/browser/runner-no-js-errors-spec.js +0 -3
  300. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  301. package/test/browser/runner-postProcessorPlugin.js +0 -3
  302. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  303. package/test/browser/runner-preProcessorPlugin.js +0 -3
  304. package/test/browser/runner-production-options.js +0 -3
  305. package/test/browser/runner-production-spec.js +0 -5
  306. package/test/browser/runner-relative-urls-options.js +0 -3
  307. package/test/browser/runner-relative-urls-spec.js +0 -3
  308. package/test/browser/runner-rewrite-urls-options.js +0 -3
  309. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  310. package/test/browser/runner-rootpath-options.js +0 -3
  311. package/test/browser/runner-rootpath-relative-options.js +0 -4
  312. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  313. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  314. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  315. package/test/browser/runner-rootpath-spec.js +0 -3
  316. package/test/browser/runner-strict-units-options.js +0 -5
  317. package/test/browser/runner-strict-units-spec.js +0 -3
  318. package/test/index.js +0 -112
  319. package/test/less-test.js +0 -625
  320. package/test/mocha-playwright/runner.js +0 -210
  321. package/test/modify-vars.js +0 -28
  322. package/test/plugins/filemanager/index.js +0 -19
  323. package/test/plugins/postprocess/index.js +0 -14
  324. package/test/plugins/preprocess/index.js +0 -19
  325. package/test/plugins/visitor/index.js +0 -24
  326. package/test/sourcemaps/basic.json +0 -1
  327. package/test/sourcemaps/custom-props.json +0 -1
  328. package/test/sourcemaps/index.html +0 -17
  329. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  330. package/test/sourcemaps-variable-selector/basic.json +0 -1
  331. package/test/test-es6.ts +0 -17
  332. package/tsconfig.build.json +0 -7
  333. package/tsconfig.json +0 -21
@@ -1,134 +1,149 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
1
  /* eslint-disable no-unused-vars */
5
2
  /**
6
3
  * @todo - Remove unused when JSDoc types are added for visitor methods
7
4
  */
8
- var tree_1 = tslib_1.__importDefault(require("../tree"));
9
- var visitor_1 = tslib_1.__importDefault(require("./visitor"));
10
- var logger_1 = tslib_1.__importDefault(require("../logger"));
11
- var utils = tslib_1.__importStar(require("../utils"));
5
+ import tree from '../tree/index.js';
6
+ import Visitor from './visitor.js';
7
+ import logger from '../logger.js';
8
+ import * as utils from '../utils.js';
9
+
12
10
  /* jshint loopfunc:true */
13
- var ExtendFinderVisitor = /** @class */ (function () {
14
- function ExtendFinderVisitor() {
15
- this._visitor = new visitor_1.default(this);
11
+
12
+ class ExtendFinderVisitor {
13
+ constructor() {
14
+ this._visitor = new Visitor(this);
16
15
  this.contexts = [];
17
16
  this.allExtendsStack = [[]];
18
17
  }
19
- ExtendFinderVisitor.prototype.run = function (root) {
18
+
19
+ run(root) {
20
20
  root = this._visitor.visit(root);
21
21
  root.allExtends = this.allExtendsStack[0];
22
22
  return root;
23
- };
24
- ExtendFinderVisitor.prototype.visitDeclaration = function (declNode, visitArgs) {
23
+ }
24
+
25
+ visitDeclaration(declNode, visitArgs) {
25
26
  visitArgs.visitDeeper = false;
26
- };
27
- ExtendFinderVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) {
27
+ }
28
+
29
+ visitMixinDefinition(mixinDefinitionNode, visitArgs) {
28
30
  visitArgs.visitDeeper = false;
29
- };
30
- ExtendFinderVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) {
31
+ }
32
+
33
+ visitRuleset(rulesetNode, visitArgs) {
31
34
  if (rulesetNode.root) {
32
35
  return;
33
36
  }
34
- var i;
35
- var j;
36
- var extend;
37
- var allSelectorsExtendList = [];
38
- var extendList;
37
+
38
+ let i;
39
+ let j;
40
+ let extend;
41
+ const allSelectorsExtendList = [];
42
+ let extendList;
43
+
39
44
  // get &:extend(.a); rules which apply to all selectors in this ruleset
40
- var rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;
45
+ const rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;
41
46
  for (i = 0; i < ruleCnt; i++) {
42
- if (rulesetNode.rules[i] instanceof tree_1.default.Extend) {
47
+ if (rulesetNode.rules[i] instanceof tree.Extend) {
43
48
  allSelectorsExtendList.push(rules[i]);
44
49
  rulesetNode.extendOnEveryPath = true;
45
50
  }
46
51
  }
52
+
47
53
  // now find every selector and apply the extends that apply to all extends
48
54
  // and the ones which apply to an individual extend
49
- var paths = rulesetNode.paths;
55
+ const paths = rulesetNode.paths;
50
56
  for (i = 0; i < paths.length; i++) {
51
- var selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;
57
+ const selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;
58
+
52
59
  extendList = selExtendList ? utils.copyArray(selExtendList).concat(allSelectorsExtendList)
53
60
  : allSelectorsExtendList;
61
+
54
62
  if (extendList) {
55
- extendList = extendList.map(function (allSelectorsExtend) {
63
+ extendList = extendList.map(function(allSelectorsExtend) {
56
64
  return allSelectorsExtend.clone();
57
65
  });
58
66
  }
67
+
59
68
  for (j = 0; j < extendList.length; j++) {
60
69
  this.foundExtends = true;
61
70
  extend = extendList[j];
62
71
  extend.findSelfSelectors(selectorPath);
63
72
  extend.ruleset = rulesetNode;
64
- if (j === 0) {
65
- extend.firstExtendOnThisSelectorPath = true;
66
- }
73
+ if (j === 0) { extend.firstExtendOnThisSelectorPath = true; }
67
74
  this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);
68
75
  }
69
76
  }
77
+
70
78
  this.contexts.push(rulesetNode.selectors);
71
- };
72
- ExtendFinderVisitor.prototype.visitRulesetOut = function (rulesetNode) {
79
+ }
80
+
81
+ visitRulesetOut(rulesetNode) {
73
82
  if (!rulesetNode.root) {
74
83
  this.contexts.length = this.contexts.length - 1;
75
84
  }
76
- };
77
- ExtendFinderVisitor.prototype.visitMedia = function (mediaNode, visitArgs) {
85
+ }
86
+
87
+ visitMedia(mediaNode, visitArgs) {
78
88
  mediaNode.allExtends = [];
79
89
  this.allExtendsStack.push(mediaNode.allExtends);
80
- };
81
- ExtendFinderVisitor.prototype.visitMediaOut = function (mediaNode) {
90
+ }
91
+
92
+ visitMediaOut(mediaNode) {
82
93
  this.allExtendsStack.length = this.allExtendsStack.length - 1;
83
- };
84
- ExtendFinderVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) {
94
+ }
95
+
96
+ visitAtRule(atRuleNode, visitArgs) {
85
97
  atRuleNode.allExtends = [];
86
98
  this.allExtendsStack.push(atRuleNode.allExtends);
87
- };
88
- ExtendFinderVisitor.prototype.visitAtRuleOut = function (atRuleNode) {
99
+ }
100
+
101
+ visitAtRuleOut(atRuleNode) {
89
102
  this.allExtendsStack.length = this.allExtendsStack.length - 1;
90
- };
91
- return ExtendFinderVisitor;
92
- }());
93
- var ProcessExtendsVisitor = /** @class */ (function () {
94
- function ProcessExtendsVisitor() {
95
- this._visitor = new visitor_1.default(this);
96
103
  }
97
- ProcessExtendsVisitor.prototype.run = function (root) {
98
- var extendFinder = new ExtendFinderVisitor();
104
+ }
105
+
106
+ class ProcessExtendsVisitor {
107
+ constructor() {
108
+ this._visitor = new Visitor(this);
109
+ }
110
+
111
+ run(root) {
112
+ const extendFinder = new ExtendFinderVisitor();
99
113
  this.extendIndices = {};
100
114
  extendFinder.run(root);
101
- if (!extendFinder.foundExtends) {
102
- return root;
103
- }
115
+ if (!extendFinder.foundExtends) { return root; }
104
116
  root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));
105
117
  this.allExtendsStack = [root.allExtends];
106
- var newRoot = this._visitor.visit(root);
118
+ const newRoot = this._visitor.visit(root);
107
119
  this.checkExtendsForNonMatched(root.allExtends);
108
120
  return newRoot;
109
- };
110
- ProcessExtendsVisitor.prototype.checkExtendsForNonMatched = function (extendList) {
111
- var indices = this.extendIndices;
112
- extendList.filter(function (extend) {
121
+ }
122
+
123
+ checkExtendsForNonMatched(extendList) {
124
+ const indices = this.extendIndices;
125
+ extendList.filter(function(extend) {
113
126
  return !extend.hasFoundMatches && extend.parent_ids.length == 1;
114
- }).forEach(function (extend) {
115
- var selector = '_unknown_';
127
+ }).forEach(function(extend) {
128
+ let selector = '_unknown_';
116
129
  try {
117
130
  selector = extend.selector.toCSS({});
118
131
  }
119
- catch (_) { }
120
- if (!indices["".concat(extend.index, " ").concat(selector)]) {
121
- indices["".concat(extend.index, " ").concat(selector)] = true;
132
+ catch (_) {}
133
+
134
+ if (!indices[`${extend.index} ${selector}`]) {
135
+ indices[`${extend.index} ${selector}`] = true;
122
136
  /**
123
137
  * @todo Shouldn't this be an error? To alert the developer
124
138
  * that they may have made an error in the selector they are
125
139
  * targeting?
126
140
  */
127
- logger_1.default.warn("WARNING: extend '".concat(selector, "' has no matches"));
141
+ logger.warn(`WARNING: extend '${selector}' has no matches`);
128
142
  }
129
143
  });
130
- };
131
- ProcessExtendsVisitor.prototype.doExtendChaining = function (extendsList, extendsListTarget, iterationCount) {
144
+ }
145
+
146
+ doExtendChaining(extendsList, extendsListTarget, iterationCount) {
132
147
  //
133
148
  // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering
134
149
  // and pasting the selector we would do normally, but we are also adding an extend with the same target selector
@@ -137,17 +152,21 @@ var ProcessExtendsVisitor = /** @class */ (function () {
137
152
  // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors
138
153
  // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already
139
154
  // processed if we look at each selector at a time, as is done in visitRuleset
140
- var extendIndex;
141
- var targetExtendIndex;
142
- var matches;
143
- var extendsToAdd = [];
144
- var newSelector;
145
- var extendVisitor = this;
146
- var selectorPath;
147
- var extend;
148
- var targetExtend;
149
- var newExtend;
155
+
156
+ let extendIndex;
157
+
158
+ let targetExtendIndex;
159
+ let matches;
160
+ const extendsToAdd = [];
161
+ let newSelector;
162
+ const extendVisitor = this;
163
+ let selectorPath;
164
+ let extend;
165
+ let targetExtend;
166
+ let newExtend;
167
+
150
168
  iterationCount = iterationCount || 0;
169
+
151
170
  // loop through comparing every extend with every target extend.
152
171
  // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place
153
172
  // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one
@@ -156,32 +175,41 @@ var ProcessExtendsVisitor = /** @class */ (function () {
156
175
  // case when processing media queries
157
176
  for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {
158
177
  for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {
178
+
159
179
  extend = extendsList[extendIndex];
160
180
  targetExtend = extendsListTarget[targetExtendIndex];
181
+
161
182
  // look for circular references
162
- if (extend.parent_ids.indexOf(targetExtend.object_id) >= 0) {
163
- continue;
164
- }
183
+ if ( extend.parent_ids.indexOf( targetExtend.object_id ) >= 0 ) { continue; }
184
+
165
185
  // find a match in the target extends self selector (the bit before :extend)
166
186
  selectorPath = [targetExtend.selfSelectors[0]];
167
187
  matches = extendVisitor.findMatch(extend, selectorPath);
188
+
168
189
  if (matches.length) {
169
190
  extend.hasFoundMatches = true;
191
+
170
192
  // we found a match, so for each self selector..
171
- extend.selfSelectors.forEach(function (selfSelector) {
172
- var info = targetExtend.visibilityInfo();
193
+ extend.selfSelectors.forEach(function(selfSelector) {
194
+ const info = targetExtend.visibilityInfo();
195
+
173
196
  // process the extend as usual
174
197
  newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible());
198
+
175
199
  // but now we create a new extend from it
176
- newExtend = new (tree_1.default.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);
200
+ newExtend = new(tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);
177
201
  newExtend.selfSelectors = newSelector;
202
+
178
203
  // add the extend onto the list of extends for that selector
179
204
  newSelector[newSelector.length - 1].extendList = [newExtend];
205
+
180
206
  // record that we need to add it.
181
207
  extendsToAdd.push(newExtend);
182
208
  newExtend.ruleset = targetExtend.ruleset;
209
+
183
210
  // remember its parents for circular references
184
211
  newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);
212
+
185
213
  // only process the selector once.. if we have :extend(.a,.b) then multiple
186
214
  // extends will look at the same selector path, so when extending
187
215
  // we know that any others will be duplicates in terms of what is added to the css
@@ -193,101 +221,114 @@ var ProcessExtendsVisitor = /** @class */ (function () {
193
221
  }
194
222
  }
195
223
  }
224
+
196
225
  if (extendsToAdd.length) {
197
226
  // try to detect circular references to stop a stack overflow.
198
227
  // may no longer be needed.
199
228
  this.extendChainCount++;
200
229
  if (iterationCount > 100) {
201
- var selectorOne = '{unable to calculate}';
202
- var selectorTwo = '{unable to calculate}';
230
+ let selectorOne = '{unable to calculate}';
231
+ let selectorTwo = '{unable to calculate}';
203
232
  try {
204
233
  selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();
205
234
  selectorTwo = extendsToAdd[0].selector.toCSS();
206
235
  }
207
- catch (e) { }
208
- throw { message: "extend circular reference detected. One of the circular extends is currently:".concat(selectorOne, ":extend(").concat(selectorTwo, ")") };
236
+ catch (e) {}
237
+ throw { message: `extend circular reference detected. One of the circular extends is currently:${selectorOne}:extend(${selectorTwo})`};
209
238
  }
239
+
210
240
  // now process the new extends on the existing rules so that we can handle a extending b extending c extending
211
241
  // d extending e...
212
242
  return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));
213
- }
214
- else {
243
+ } else {
215
244
  return extendsToAdd;
216
245
  }
217
- };
218
- ProcessExtendsVisitor.prototype.visitDeclaration = function (ruleNode, visitArgs) {
246
+ }
247
+
248
+ visitDeclaration(ruleNode, visitArgs) {
219
249
  visitArgs.visitDeeper = false;
220
- };
221
- ProcessExtendsVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) {
250
+ }
251
+
252
+ visitMixinDefinition(mixinDefinitionNode, visitArgs) {
222
253
  visitArgs.visitDeeper = false;
223
- };
224
- ProcessExtendsVisitor.prototype.visitSelector = function (selectorNode, visitArgs) {
254
+ }
255
+
256
+ visitSelector(selectorNode, visitArgs) {
225
257
  visitArgs.visitDeeper = false;
226
- };
227
- ProcessExtendsVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) {
258
+ }
259
+
260
+ visitRuleset(rulesetNode, visitArgs) {
228
261
  if (rulesetNode.root) {
229
262
  return;
230
263
  }
231
- var matches;
232
- var pathIndex;
233
- var extendIndex;
234
- var allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];
235
- var selectorsToAdd = [];
236
- var extendVisitor = this;
237
- var selectorPath;
264
+ let matches;
265
+ const allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];
266
+ const selectorsToAdd = [];
267
+ const paths = rulesetNode.paths;
268
+ const pathCount = paths.length;
269
+
238
270
  // look at each selector path in the ruleset, find any extend matches and then copy, find and replace
239
- for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {
240
- for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {
241
- selectorPath = rulesetNode.paths[pathIndex];
271
+
272
+ for (let extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {
273
+ const extend = allExtends[extendIndex];
274
+ for (let pathIndex = 0; pathIndex < pathCount; pathIndex++) {
275
+ const selectorPath = paths[pathIndex];
276
+
242
277
  // extending extends happens initially, before the main pass
243
- if (rulesetNode.extendOnEveryPath) {
244
- continue;
245
- }
246
- var extendList = selectorPath[selectorPath.length - 1].extendList;
247
- if (extendList && extendList.length) {
248
- continue;
249
- }
250
- matches = this.findMatch(allExtends[extendIndex], selectorPath);
278
+ if (rulesetNode.extendOnEveryPath) { continue; }
279
+ const extendList = selectorPath[selectorPath.length - 1].extendList;
280
+ if (extendList && extendList.length) { continue; }
281
+
282
+ matches = this.findMatch(extend, selectorPath);
283
+
251
284
  if (matches.length) {
252
- allExtends[extendIndex].hasFoundMatches = true;
253
- allExtends[extendIndex].selfSelectors.forEach(function (selfSelector) {
254
- var extendedSelectors;
255
- extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible());
256
- selectorsToAdd.push(extendedSelectors);
257
- });
285
+ extend.hasFoundMatches = true;
286
+
287
+ const selfSelectors = extend.selfSelectors;
288
+ const isVisible = extend.isVisible();
289
+ for (let si = 0; si < selfSelectors.length; si++) {
290
+ selectorsToAdd.push(this.extendSelector(matches, selectorPath, selfSelectors[si], isVisible));
291
+ }
258
292
  }
259
293
  }
260
294
  }
261
- rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);
262
- };
263
- ProcessExtendsVisitor.prototype.findMatch = function (extend, haystackSelectorPath) {
295
+ rulesetNode.paths = paths.concat(selectorsToAdd);
296
+ }
297
+
298
+ findMatch(extend, haystackSelectorPath) {
264
299
  //
265
300
  // look through the haystack selector path to try and find the needle - extend.selector
266
301
  // returns an array of selector matches that can then be replaced
267
302
  //
268
- var haystackSelectorIndex;
269
- var hackstackSelector;
270
- var hackstackElementIndex;
271
- var haystackElement;
272
- var targetCombinator;
273
- var i;
274
- var extendVisitor = this;
275
- var needleElements = extend.selector.elements;
276
- var potentialMatches = [];
277
- var potentialMatch;
278
- var matches = [];
303
+ let haystackSelectorIndex;
304
+
305
+ let hackstackSelector;
306
+ let hackstackElementIndex;
307
+ let haystackElement;
308
+ let targetCombinator;
309
+ let i;
310
+ const needleElements = extend.selector.elements;
311
+ const potentialMatches = [];
312
+ let potentialMatch;
313
+ const matches = [];
314
+
279
315
  // loop through the haystack elements
280
316
  for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {
281
317
  hackstackSelector = haystackSelectorPath[haystackSelectorIndex];
318
+
282
319
  for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {
320
+
283
321
  haystackElement = hackstackSelector.elements[hackstackElementIndex];
322
+
284
323
  // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.
285
324
  if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {
286
- potentialMatches.push({ pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,
287
- initialCombinator: haystackElement.combinator });
325
+ potentialMatches.push({pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,
326
+ initialCombinator: haystackElement.combinator});
288
327
  }
328
+
289
329
  for (i = 0; i < potentialMatches.length; i++) {
290
330
  potentialMatch = potentialMatches[i];
331
+
291
332
  // selectors add " " onto the first element. When we use & it joins the selectors together, but if we don't
292
333
  // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to
293
334
  // work out what the resulting combinator will be
@@ -295,14 +336,15 @@ var ProcessExtendsVisitor = /** @class */ (function () {
295
336
  if (targetCombinator === '' && hackstackElementIndex === 0) {
296
337
  targetCombinator = ' ';
297
338
  }
339
+
298
340
  // if we don't match, null our match to indicate failure
299
- if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||
341
+ if (!this.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||
300
342
  (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {
301
343
  potentialMatch = null;
302
- }
303
- else {
344
+ } else {
304
345
  potentialMatch.matched++;
305
346
  }
347
+
306
348
  // if we are still valid and have finished, test whether we have elements after and whether these are allowed
307
349
  if (potentialMatch) {
308
350
  potentialMatch.finished = potentialMatch.matched === needleElements.length;
@@ -321,8 +363,7 @@ var ProcessExtendsVisitor = /** @class */ (function () {
321
363
  potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again
322
364
  matches.push(potentialMatch);
323
365
  }
324
- }
325
- else {
366
+ } else {
326
367
  potentialMatches.splice(i, 1);
327
368
  i--;
328
369
  }
@@ -330,12 +371,13 @@ var ProcessExtendsVisitor = /** @class */ (function () {
330
371
  }
331
372
  }
332
373
  return matches;
333
- };
334
- ProcessExtendsVisitor.prototype.isElementValuesEqual = function (elementValue1, elementValue2) {
374
+ }
375
+
376
+ isElementValuesEqual(elementValue1, elementValue2) {
335
377
  if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') {
336
378
  return elementValue1 === elementValue2;
337
379
  }
338
- if (elementValue1 instanceof tree_1.default.Attribute) {
380
+ if (elementValue1 instanceof tree.Attribute) {
339
381
  if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {
340
382
  return false;
341
383
  }
@@ -351,11 +393,11 @@ var ProcessExtendsVisitor = /** @class */ (function () {
351
393
  }
352
394
  elementValue1 = elementValue1.value;
353
395
  elementValue2 = elementValue2.value;
354
- if (elementValue1 instanceof tree_1.default.Selector) {
355
- if (!(elementValue2 instanceof tree_1.default.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {
396
+ if (elementValue1 instanceof tree.Selector) {
397
+ if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {
356
398
  return false;
357
399
  }
358
- for (var i = 0; i < elementValue1.elements.length; i++) {
400
+ for (let i = 0; i < elementValue1.elements.length; i++) {
359
401
  if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) {
360
402
  if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) {
361
403
  return false;
@@ -368,31 +410,46 @@ var ProcessExtendsVisitor = /** @class */ (function () {
368
410
  return true;
369
411
  }
370
412
  return false;
371
- };
372
- ProcessExtendsVisitor.prototype.extendSelector = function (matches, selectorPath, replacementSelector, isVisible) {
413
+ }
414
+
415
+ extendSelector(matches, selectorPath, replacementSelector, isVisible) {
416
+
373
417
  // for a set of matches, replace each match with the replacement selector
374
- var currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;
418
+
419
+ let currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;
420
+
375
421
  for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {
376
422
  match = matches[matchIndex];
377
423
  selector = selectorPath[match.pathIndex];
378
- firstElement = new tree_1.default.Element(match.initialCombinator, replacementSelector.elements[0].value, replacementSelector.elements[0].isVariable, replacementSelector.elements[0].getIndex(), replacementSelector.elements[0].fileInfo());
424
+ firstElement = new tree.Element(
425
+ match.initialCombinator,
426
+ replacementSelector.elements[0].value,
427
+ replacementSelector.elements[0].isVariable,
428
+ replacementSelector.elements[0].getIndex(),
429
+ replacementSelector.elements[0].fileInfo()
430
+ );
431
+
379
432
  if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {
380
433
  path[path.length - 1].elements = path[path.length - 1]
381
434
  .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));
382
435
  currentSelectorPathElementIndex = 0;
383
436
  currentSelectorPathIndex++;
384
437
  }
438
+
385
439
  newElements = selector.elements
386
440
  .slice(currentSelectorPathElementIndex, match.index)
387
441
  .concat([firstElement])
388
442
  .concat(replacementSelector.elements.slice(1));
443
+
389
444
  if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {
390
445
  path[path.length - 1].elements =
391
446
  path[path.length - 1].elements.concat(newElements);
392
- }
393
- else {
447
+ } else {
394
448
  path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));
395
- path.push(new tree_1.default.Selector(newElements));
449
+
450
+ path.push(new tree.Selector(
451
+ newElements
452
+ ));
396
453
  }
397
454
  currentSelectorPathIndex = match.endPathIndex;
398
455
  currentSelectorPathElementIndex = match.endPathElementIndex;
@@ -401,44 +458,48 @@ var ProcessExtendsVisitor = /** @class */ (function () {
401
458
  currentSelectorPathIndex++;
402
459
  }
403
460
  }
461
+
404
462
  if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {
405
463
  path[path.length - 1].elements = path[path.length - 1]
406
464
  .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));
407
465
  currentSelectorPathIndex++;
408
466
  }
467
+
409
468
  path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));
410
469
  path = path.map(function (currentValue) {
411
470
  // we can re-use elements here, because the visibility property matters only for selectors
412
- var derived = currentValue.createDerived(currentValue.elements);
471
+ const derived = currentValue.createDerived(currentValue.elements);
413
472
  if (isVisible) {
414
473
  derived.ensureVisibility();
415
- }
416
- else {
474
+ } else {
417
475
  derived.ensureInvisibility();
418
476
  }
419
477
  return derived;
420
478
  });
421
479
  return path;
422
- };
423
- ProcessExtendsVisitor.prototype.visitMedia = function (mediaNode, visitArgs) {
424
- var newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
480
+ }
481
+
482
+ visitMedia(mediaNode, visitArgs) {
483
+ let newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
425
484
  newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));
426
485
  this.allExtendsStack.push(newAllExtends);
427
- };
428
- ProcessExtendsVisitor.prototype.visitMediaOut = function (mediaNode) {
429
- var lastIndex = this.allExtendsStack.length - 1;
486
+ }
487
+
488
+ visitMediaOut(mediaNode) {
489
+ const lastIndex = this.allExtendsStack.length - 1;
430
490
  this.allExtendsStack.length = lastIndex;
431
- };
432
- ProcessExtendsVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) {
433
- var newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
491
+ }
492
+
493
+ visitAtRule(atRuleNode, visitArgs) {
494
+ let newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
434
495
  newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends));
435
496
  this.allExtendsStack.push(newAllExtends);
436
- };
437
- ProcessExtendsVisitor.prototype.visitAtRuleOut = function (atRuleNode) {
438
- var lastIndex = this.allExtendsStack.length - 1;
497
+ }
498
+
499
+ visitAtRuleOut(atRuleNode) {
500
+ const lastIndex = this.allExtendsStack.length - 1;
439
501
  this.allExtendsStack.length = lastIndex;
440
- };
441
- return ProcessExtendsVisitor;
442
- }());
443
- exports.default = ProcessExtendsVisitor;
444
- //# sourceMappingURL=extend-visitor.js.map
502
+ }
503
+ }
504
+
505
+ export default ProcessExtendsVisitor;