less 3.9.0 → 3.10.1

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 (511) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintignore +4 -1
  3. package/.eslintrc.json +69 -87
  4. package/CHANGELOG.md +7 -0
  5. package/Gruntfile.js +336 -330
  6. package/bin/lessc +13110 -481
  7. package/dist/less.cjs.js +12571 -0
  8. package/dist/less.js +12878 -11507
  9. package/dist/less.min.js +7 -14
  10. package/dist/less.min.js.map +1 -0
  11. package/index.js +1 -1
  12. package/lib/less/constants.js +12 -12
  13. package/lib/less/contexts.js +93 -95
  14. package/lib/less/data/colors.js +1 -1
  15. package/lib/less/data/index.js +4 -4
  16. package/lib/less/data/unit-conversions.js +1 -1
  17. package/lib/less/default-options.js +53 -58
  18. package/lib/less/environment/abstract-file-manager.js +114 -110
  19. package/lib/less/environment/abstract-plugin-loader.js +139 -141
  20. package/lib/less/environment/environment-api.js +1 -1
  21. package/lib/less/environment/environment.js +44 -41
  22. package/lib/less/environment/file-manager-api.js +1 -1
  23. package/lib/less/functions/boolean.js +10 -12
  24. package/lib/less/functions/color-blending.js +20 -10
  25. package/lib/less/functions/color.js +63 -49
  26. package/lib/less/functions/data-uri.js +25 -39
  27. package/lib/less/functions/default.js +5 -7
  28. package/lib/less/functions/function-caller.js +42 -39
  29. package/lib/less/functions/function-registry.js +3 -3
  30. package/lib/less/functions/index.js +28 -16
  31. package/lib/less/functions/list.js +34 -28
  32. package/lib/less/functions/math-helper.js +4 -5
  33. package/lib/less/functions/math.js +8 -9
  34. package/lib/less/functions/number.js +26 -18
  35. package/lib/less/functions/string.js +13 -13
  36. package/lib/less/functions/svg.js +25 -25
  37. package/lib/less/functions/types.js +23 -27
  38. package/lib/less/import-manager.js +140 -138
  39. package/lib/less/index.js +72 -35
  40. package/lib/less/less-error.js +29 -30
  41. package/lib/less/logger.js +4 -4
  42. package/lib/less/parse-tree.js +53 -47
  43. package/lib/less/parse.js +23 -25
  44. package/lib/less/parser/chunker.js +17 -7
  45. package/lib/less/parser/parser-input.js +100 -93
  46. package/lib/less/parser/parser.js +310 -170
  47. package/lib/less/plugin-manager.js +146 -133
  48. package/lib/less/render.js +10 -13
  49. package/lib/less/source-map-builder.js +62 -57
  50. package/lib/less/source-map-output.js +118 -112
  51. package/lib/less/transform-tree.js +21 -18
  52. package/lib/less/tree/anonymous.js +35 -27
  53. package/lib/less/tree/assignment.js +29 -23
  54. package/lib/less/tree/atrule.js +150 -121
  55. package/lib/less/tree/attribute.js +32 -25
  56. package/lib/less/tree/call.js +87 -79
  57. package/lib/less/tree/color.js +202 -185
  58. package/lib/less/tree/combinator.js +25 -19
  59. package/lib/less/tree/comment.js +27 -21
  60. package/lib/less/tree/condition.js +41 -35
  61. package/lib/less/tree/debug-info.js +13 -17
  62. package/lib/less/tree/declaration.js +101 -88
  63. package/lib/less/tree/detached-ruleset.js +27 -20
  64. package/lib/less/tree/dimension.js +142 -124
  65. package/lib/less/tree/element.js +67 -58
  66. package/lib/less/tree/expression.js +66 -57
  67. package/lib/less/tree/extend.js +61 -53
  68. package/lib/less/tree/import.js +144 -141
  69. package/lib/less/tree/index.js +52 -40
  70. package/lib/less/tree/javascript.js +29 -25
  71. package/lib/less/tree/js-eval-node.js +50 -53
  72. package/lib/less/tree/keyword.js +15 -8
  73. package/lib/less/tree/media.js +137 -124
  74. package/lib/less/tree/mixin-call.js +178 -149
  75. package/lib/less/tree/mixin-definition.js +198 -178
  76. package/lib/less/tree/namespace-value.js +75 -67
  77. package/lib/less/tree/negative.js +24 -18
  78. package/lib/less/tree/node.js +138 -117
  79. package/lib/less/tree/operation.js +57 -49
  80. package/lib/less/tree/paren.js +20 -14
  81. package/lib/less/tree/property.js +65 -58
  82. package/lib/less/tree/quoted.js +62 -53
  83. package/lib/less/tree/ruleset.js +739 -680
  84. package/lib/less/tree/selector.js +129 -114
  85. package/lib/less/tree/unicode-descriptor.js +10 -6
  86. package/lib/less/tree/unit.js +117 -97
  87. package/lib/less/tree/url.js +54 -47
  88. package/lib/less/tree/value.js +38 -33
  89. package/lib/less/tree/variable-call.js +41 -34
  90. package/lib/less/tree/variable.js +58 -51
  91. package/lib/less/utils.js +110 -108
  92. package/lib/less/visitors/extend-visitor.js +157 -114
  93. package/lib/less/visitors/import-sequencer.js +47 -43
  94. package/lib/less/visitors/import-visitor.js +22 -23
  95. package/lib/less/visitors/index.js +14 -9
  96. package/lib/less/visitors/join-selector-visitor.js +32 -26
  97. package/lib/less/visitors/set-tree-visibility-visitor.js +37 -30
  98. package/lib/less/visitors/to-css-visitor.js +60 -57
  99. package/lib/less/visitors/visitor.js +44 -35
  100. package/lib/less-browser/add-default-options.js +4 -4
  101. package/lib/less-browser/bootstrap.js +11 -9
  102. package/lib/less-browser/browser.js +13 -12
  103. package/lib/less-browser/cache.js +9 -9
  104. package/lib/less-browser/error-reporting.js +27 -27
  105. package/lib/less-browser/file-manager.js +37 -35
  106. package/lib/less-browser/image-size.js +3 -3
  107. package/lib/less-browser/index.js +78 -73
  108. package/lib/less-browser/log-listener.js +6 -7
  109. package/lib/less-browser/plugin-loader.js +15 -13
  110. package/lib/less-browser/utils.js +20 -20
  111. package/lib/less-node/environment.js +4 -2
  112. package/lib/less-node/file-manager.js +128 -127
  113. package/lib/less-node/fs.js +2 -2
  114. package/lib/less-node/image-size.js +19 -18
  115. package/lib/less-node/index.js +16 -12
  116. package/lib/less-node/lessc-helper.js +4 -5
  117. package/lib/less-node/plugin-loader.js +41 -40
  118. package/lib/less-node/url-file-manager.js +41 -48
  119. package/lib/lessc.js +557 -0
  120. package/package.json +21 -11
  121. package/test/.DS_Store +0 -0
  122. package/test/browser/common.js +34 -30
  123. package/test/browser/css/urls.css +0 -3
  124. package/test/browser/less/plugin/plugin.js +4 -7
  125. package/test/browser/less/urls.less +0 -3
  126. package/test/browser/less.min.js +11 -0
  127. package/test/browser/less.min.js.map +1 -0
  128. package/test/browser/onload.js +13 -0
  129. package/test/browser/runner-browser-options.js +0 -5
  130. package/test/browser/test-runner-template.tmpl +39 -52
  131. package/test/browser/vendor/boot.js +148 -0
  132. package/test/browser/{jasmine-jsreporter.js → vendor/jasmine-jsreporter.js} +0 -0
  133. package/test/copy-bom.js +2 -1
  134. package/test/css/.DS_Store +0 -0
  135. package/test/css/functions-each.css +10 -0
  136. package/test/css/math/.DS_Store +0 -0
  137. package/test/css/namespacing/namespacing-1.css +4 -0
  138. package/test/css/urls.css +0 -1
  139. package/test/index.js +2 -5
  140. package/test/less/.DS_Store +0 -0
  141. package/test/less/colors.less +1 -1
  142. package/test/less/errors/color-func-invalid-color-2.less +2 -0
  143. package/test/less/errors/color-func-invalid-color-2.txt +3 -0
  144. package/test/less/functions-each.less +32 -0
  145. package/test/less/math/.DS_Store +0 -0
  146. package/test/less/namespacing/namespacing-1.less +10 -0
  147. package/test/less/urls.less +0 -1
  148. package/test/less-test.js +20 -11
  149. package/test/modify-vars.js +11 -2
  150. package/.travis.yml +0 -33
  151. package/appveyor.yml +0 -32
  152. package/browser.js +0 -1
  153. package/test/browser/less.js +0 -12956
  154. package/test/less-bom/3rd-party/bootstrap4.less +0 -1
  155. package/test/less-bom/3rd-party/uikit.less +0 -1
  156. package/test/less-bom/calc.less +0 -30
  157. package/test/less-bom/charsets.less +0 -3
  158. package/test/less-bom/colors.less +0 -116
  159. package/test/less-bom/comments.less +0 -102
  160. package/test/less-bom/comments2.less +0 -31
  161. package/test/less-bom/compression/compression.less +0 -36
  162. package/test/less-bom/css-3.less +0 -153
  163. package/test/less-bom/css-escapes.less +0 -42
  164. package/test/less-bom/css-grid.less +0 -30
  165. package/test/less-bom/css-guards.less +0 -103
  166. package/test/less-bom/debug/import/test.less +0 -25
  167. package/test/less-bom/debug/linenumbers.less +0 -33
  168. package/test/less-bom/detached-rulesets.less +0 -112
  169. package/test/less-bom/directives-bubling.less +0 -142
  170. package/test/less-bom/empty.less +0 -1
  171. package/test/less-bom/errors/add-mixed-units.less +0 -3
  172. package/test/less-bom/errors/add-mixed-units.txt +0 -4
  173. package/test/less-bom/errors/add-mixed-units2.less +0 -3
  174. package/test/less-bom/errors/add-mixed-units2.txt +0 -4
  175. package/test/less-bom/errors/at-rules-undefined-var.less +0 -4
  176. package/test/less-bom/errors/at-rules-undefined-var.txt +0 -4
  177. package/test/less-bom/errors/at-rules-unmatching-block.less +0 -4
  178. package/test/less-bom/errors/at-rules-unmatching-block.txt +0 -3
  179. package/test/less-bom/errors/bad-variable-declaration1.less +0 -1
  180. package/test/less-bom/errors/bad-variable-declaration1.txt +0 -2
  181. package/test/less-bom/errors/color-func-invalid-color.less +0 -3
  182. package/test/less-bom/errors/color-func-invalid-color.txt +0 -4
  183. package/test/less-bom/errors/css-guard-default-func.less +0 -4
  184. package/test/less-bom/errors/css-guard-default-func.txt +0 -4
  185. package/test/less-bom/errors/custom-property-unmatched-block-1.less +0 -6
  186. package/test/less-bom/errors/custom-property-unmatched-block-1.txt +0 -4
  187. package/test/less-bom/errors/custom-property-unmatched-block-2.less +0 -6
  188. package/test/less-bom/errors/custom-property-unmatched-block-2.txt +0 -4
  189. package/test/less-bom/errors/custom-property-unmatched-block-3.less +0 -6
  190. package/test/less-bom/errors/custom-property-unmatched-block-3.txt +0 -4
  191. package/test/less-bom/errors/detached-ruleset-1.less +0 -6
  192. package/test/less-bom/errors/detached-ruleset-1.txt +0 -4
  193. package/test/less-bom/errors/detached-ruleset-2.less +0 -6
  194. package/test/less-bom/errors/detached-ruleset-2.txt +0 -4
  195. package/test/less-bom/errors/detached-ruleset-3.less +0 -4
  196. package/test/less-bom/errors/detached-ruleset-3.txt +0 -4
  197. package/test/less-bom/errors/detached-ruleset-5.less +0 -4
  198. package/test/less-bom/errors/detached-ruleset-5.txt +0 -3
  199. package/test/less-bom/errors/detached-ruleset-6.less +0 -5
  200. package/test/less-bom/errors/detached-ruleset-6.txt +0 -4
  201. package/test/less-bom/errors/divide-mixed-units.less +0 -3
  202. package/test/less-bom/errors/divide-mixed-units.txt +0 -4
  203. package/test/less-bom/errors/extend-no-selector.less +0 -3
  204. package/test/less-bom/errors/extend-no-selector.txt +0 -3
  205. package/test/less-bom/errors/extend-not-at-end.less +0 -3
  206. package/test/less-bom/errors/extend-not-at-end.txt +0 -3
  207. package/test/less-bom/errors/functions-1.less +0 -2
  208. package/test/less-bom/errors/functions-1.txt +0 -3
  209. package/test/less-bom/errors/functions-10-keyword.less +0 -2
  210. package/test/less-bom/errors/functions-10-keyword.txt +0 -3
  211. package/test/less-bom/errors/functions-11-operation.less +0 -2
  212. package/test/less-bom/errors/functions-11-operation.txt +0 -3
  213. package/test/less-bom/errors/functions-12-quoted.less +0 -2
  214. package/test/less-bom/errors/functions-12-quoted.txt +0 -3
  215. package/test/less-bom/errors/functions-13-selector.less +0 -2
  216. package/test/less-bom/errors/functions-13-selector.txt +0 -3
  217. package/test/less-bom/errors/functions-14-url.less +0 -2
  218. package/test/less-bom/errors/functions-14-url.txt +0 -3
  219. package/test/less-bom/errors/functions-15-value.less +0 -2
  220. package/test/less-bom/errors/functions-15-value.txt +0 -3
  221. package/test/less-bom/errors/functions-3-assignment.less +0 -2
  222. package/test/less-bom/errors/functions-3-assignment.txt +0 -3
  223. package/test/less-bom/errors/functions-4-call.less +0 -2
  224. package/test/less-bom/errors/functions-4-call.txt +0 -3
  225. package/test/less-bom/errors/functions-5-color-2.less +0 -1
  226. package/test/less-bom/errors/functions-5-color-2.txt +0 -2
  227. package/test/less-bom/errors/functions-5-color.less +0 -2
  228. package/test/less-bom/errors/functions-5-color.txt +0 -3
  229. package/test/less-bom/errors/functions-6-condition.less +0 -2
  230. package/test/less-bom/errors/functions-6-condition.txt +0 -3
  231. package/test/less-bom/errors/functions-7-dimension.less +0 -2
  232. package/test/less-bom/errors/functions-7-dimension.txt +0 -3
  233. package/test/less-bom/errors/functions-8-element.less +0 -2
  234. package/test/less-bom/errors/functions-8-element.txt +0 -3
  235. package/test/less-bom/errors/functions-9-expression.less +0 -2
  236. package/test/less-bom/errors/functions-9-expression.txt +0 -3
  237. package/test/less-bom/errors/import-malformed.less +0 -1
  238. package/test/less-bom/errors/import-malformed.txt +0 -3
  239. package/test/less-bom/errors/import-missing.less +0 -6
  240. package/test/less-bom/errors/import-missing.txt +0 -3
  241. package/test/less-bom/errors/import-no-semi.less +0 -1
  242. package/test/less-bom/errors/import-no-semi.txt +0 -2
  243. package/test/less-bom/errors/import-subfolder1.less +0 -1
  244. package/test/less-bom/errors/import-subfolder1.txt +0 -3
  245. package/test/less-bom/errors/import-subfolder2.less +0 -1
  246. package/test/less-bom/errors/import-subfolder2.txt +0 -4
  247. package/test/less-bom/errors/imports/import-subfolder1.less +0 -1
  248. package/test/less-bom/errors/imports/import-subfolder2.less +0 -1
  249. package/test/less-bom/errors/imports/import-test.less +0 -4
  250. package/test/less-bom/errors/imports/subfolder/mixin-not-defined.less +0 -1
  251. package/test/less-bom/errors/imports/subfolder/parse-error-curly-bracket.less +0 -1
  252. package/test/less-bom/errors/javascript-error.less +0 -3
  253. package/test/less-bom/errors/javascript-error.txt +0 -4
  254. package/test/less-bom/errors/javascript-undefined-var.less +0 -3
  255. package/test/less-bom/errors/javascript-undefined-var.txt +0 -4
  256. package/test/less-bom/errors/mixed-mixin-definition-args-1.less +0 -6
  257. package/test/less-bom/errors/mixed-mixin-definition-args-1.txt +0 -4
  258. package/test/less-bom/errors/mixed-mixin-definition-args-2.less +0 -6
  259. package/test/less-bom/errors/mixed-mixin-definition-args-2.txt +0 -4
  260. package/test/less-bom/errors/mixin-not-defined-2.less +0 -7
  261. package/test/less-bom/errors/mixin-not-defined-2.txt +0 -4
  262. package/test/less-bom/errors/mixin-not-defined.less +0 -11
  263. package/test/less-bom/errors/mixin-not-defined.txt +0 -3
  264. package/test/less-bom/errors/mixin-not-matched.less +0 -6
  265. package/test/less-bom/errors/mixin-not-matched.txt +0 -3
  266. package/test/less-bom/errors/mixin-not-matched2.less +0 -6
  267. package/test/less-bom/errors/mixin-not-matched2.txt +0 -3
  268. package/test/less-bom/errors/mixin-not-visible-in-scope-1.less +0 -9
  269. package/test/less-bom/errors/mixin-not-visible-in-scope-1.txt +0 -4
  270. package/test/less-bom/errors/mixins-guards-cond-expected.less +0 -5
  271. package/test/less-bom/errors/mixins-guards-cond-expected.txt +0 -3
  272. package/test/less-bom/errors/mixins-guards-default-func-1.less +0 -9
  273. package/test/less-bom/errors/mixins-guards-default-func-1.txt +0 -4
  274. package/test/less-bom/errors/mixins-guards-default-func-2.less +0 -9
  275. package/test/less-bom/errors/mixins-guards-default-func-2.txt +0 -4
  276. package/test/less-bom/errors/mixins-guards-default-func-3.less +0 -9
  277. package/test/less-bom/errors/mixins-guards-default-func-3.txt +0 -4
  278. package/test/less-bom/errors/multiple-guards-on-css-selectors.less +0 -4
  279. package/test/less-bom/errors/multiple-guards-on-css-selectors.txt +0 -4
  280. package/test/less-bom/errors/multiple-guards-on-css-selectors2.less +0 -4
  281. package/test/less-bom/errors/multiple-guards-on-css-selectors2.txt +0 -4
  282. package/test/less-bom/errors/multiply-mixed-units.less +0 -7
  283. package/test/less-bom/errors/multiply-mixed-units.txt +0 -4
  284. package/test/less-bom/errors/namespacing-2.less +0 -7
  285. package/test/less-bom/errors/namespacing-2.txt +0 -4
  286. package/test/less-bom/errors/namespacing-3.less +0 -8
  287. package/test/less-bom/errors/namespacing-3.txt +0 -4
  288. package/test/less-bom/errors/namespacing-4.less +0 -7
  289. package/test/less-bom/errors/namespacing-4.txt +0 -4
  290. package/test/less-bom/errors/parens-error-1.less +0 -3
  291. package/test/less-bom/errors/parens-error-1.txt +0 -4
  292. package/test/less-bom/errors/parens-error-2.less +0 -3
  293. package/test/less-bom/errors/parens-error-2.txt +0 -4
  294. package/test/less-bom/errors/parens-error-3.less +0 -3
  295. package/test/less-bom/errors/parens-error-3.txt +0 -4
  296. package/test/less-bom/errors/parse-error-curly-bracket.less +0 -4
  297. package/test/less-bom/errors/parse-error-curly-bracket.txt +0 -4
  298. package/test/less-bom/errors/parse-error-media-no-block-1.less +0 -5
  299. package/test/less-bom/errors/parse-error-media-no-block-1.txt +0 -3
  300. package/test/less-bom/errors/parse-error-media-no-block-2.less +0 -1
  301. package/test/less-bom/errors/parse-error-media-no-block-2.txt +0 -2
  302. package/test/less-bom/errors/parse-error-media-no-block-3.less +0 -4
  303. package/test/less-bom/errors/parse-error-media-no-block-3.txt +0 -3
  304. package/test/less-bom/errors/parse-error-missing-bracket.less +0 -2
  305. package/test/less-bom/errors/parse-error-missing-bracket.txt +0 -3
  306. package/test/less-bom/errors/parse-error-missing-parens.less +0 -5
  307. package/test/less-bom/errors/parse-error-missing-parens.txt +0 -3
  308. package/test/less-bom/errors/parse-error-with-import.less +0 -13
  309. package/test/less-bom/errors/parse-error-with-import.txt +0 -4
  310. package/test/less-bom/errors/percentage-missing-space.less +0 -3
  311. package/test/less-bom/errors/percentage-missing-space.txt +0 -4
  312. package/test/less-bom/errors/percentage-non-number-argument.less +0 -3
  313. package/test/less-bom/errors/percentage-non-number-argument.txt +0 -4
  314. package/test/less-bom/errors/plugin/plugin-error-2.js +0 -5
  315. package/test/less-bom/errors/plugin/plugin-error-3.js +0 -5
  316. package/test/less-bom/errors/plugin/plugin-error.js +0 -1
  317. package/test/less-bom/errors/plugin-1.less +0 -1
  318. package/test/less-bom/errors/plugin-1.txt +0 -2
  319. package/test/less-bom/errors/plugin-2.less +0 -1
  320. package/test/less-bom/errors/plugin-2.txt +0 -5
  321. package/test/less-bom/errors/plugin-3.less +0 -1
  322. package/test/less-bom/errors/plugin-3.txt +0 -5
  323. package/test/less-bom/errors/property-asterisk-only-name.less +0 -3
  324. package/test/less-bom/errors/property-asterisk-only-name.txt +0 -4
  325. package/test/less-bom/errors/property-ie5-hack.less +0 -3
  326. package/test/less-bom/errors/property-ie5-hack.txt +0 -3
  327. package/test/less-bom/errors/property-in-root.less +0 -4
  328. package/test/less-bom/errors/property-in-root.txt +0 -4
  329. package/test/less-bom/errors/property-in-root2.less +0 -1
  330. package/test/less-bom/errors/property-in-root2.txt +0 -4
  331. package/test/less-bom/errors/property-in-root3.less +0 -4
  332. package/test/less-bom/errors/property-in-root3.txt +0 -3
  333. package/test/less-bom/errors/property-interp-not-defined.less +0 -1
  334. package/test/less-bom/errors/property-interp-not-defined.txt +0 -2
  335. package/test/less-bom/errors/recursive-variable.less +0 -1
  336. package/test/less-bom/errors/recursive-variable.txt +0 -2
  337. package/test/less-bom/errors/root-func-undefined-1.less +0 -1
  338. package/test/less-bom/errors/root-func-undefined-1.txt +0 -2
  339. package/test/less-bom/errors/root-func-undefined-2.less +0 -2
  340. package/test/less-bom/errors/root-func-undefined-2.txt +0 -3
  341. package/test/less-bom/errors/single-character.less +0 -1
  342. package/test/less-bom/errors/single-character.txt +0 -2
  343. package/test/less-bom/errors/svg-gradient1.less +0 -3
  344. package/test/less-bom/errors/svg-gradient1.txt +0 -4
  345. package/test/less-bom/errors/svg-gradient2.less +0 -3
  346. package/test/less-bom/errors/svg-gradient2.txt +0 -4
  347. package/test/less-bom/errors/svg-gradient3.less +0 -3
  348. package/test/less-bom/errors/svg-gradient3.txt +0 -4
  349. package/test/less-bom/errors/svg-gradient4.less +0 -4
  350. package/test/less-bom/errors/svg-gradient4.txt +0 -4
  351. package/test/less-bom/errors/svg-gradient5.less +0 -4
  352. package/test/less-bom/errors/svg-gradient5.txt +0 -4
  353. package/test/less-bom/errors/svg-gradient6.less +0 -4
  354. package/test/less-bom/errors/svg-gradient6.txt +0 -4
  355. package/test/less-bom/errors/unit-function.less +0 -3
  356. package/test/less-bom/errors/unit-function.txt +0 -4
  357. package/test/less-bom/extend-chaining.less +0 -91
  358. package/test/less-bom/extend-clearfix.less +0 -19
  359. package/test/less-bom/extend-exact.less +0 -46
  360. package/test/less-bom/extend-media.less +0 -24
  361. package/test/less-bom/extend-nest.less +0 -65
  362. package/test/less-bom/extend-selector.less +0 -110
  363. package/test/less-bom/extend.less +0 -81
  364. package/test/less-bom/extract-and-length.less +0 -146
  365. package/test/less-bom/filemanagerPlugin/colors.test +0 -1
  366. package/test/less-bom/filemanagerPlugin/filemanager.less +0 -4
  367. package/test/less-bom/functions-each.less +0 -131
  368. package/test/less-bom/functions.less +0 -279
  369. package/test/less-bom/globalVars/extended.json +0 -5
  370. package/test/less-bom/globalVars/extended.less +0 -10
  371. package/test/less-bom/globalVars/simple.json +0 -3
  372. package/test/less-bom/globalVars/simple.less +0 -3
  373. package/test/less-bom/ie-filters.less +0 -15
  374. package/test/less-bom/import/css-import.less +0 -1
  375. package/test/less-bom/import/deeper/deeper-2/url-import-2.less +0 -3
  376. package/test/less-bom/import/deeper/deeper-2/url-import.less +0 -1
  377. package/test/less-bom/import/deeper/import-once-test-a.less +0 -1
  378. package/test/less-bom/import/deeper/url-import.less +0 -1
  379. package/test/less-bom/import/import-and-relative-paths-test.less +0 -17
  380. package/test/less-bom/import/import-charset-test.less +0 -1
  381. package/test/less-bom/import/import-inline-invalid-css.less +0 -1
  382. package/test/less-bom/import/import-interpolation.less +0 -2
  383. package/test/less-bom/import/import-interpolation2.less +0 -5
  384. package/test/less-bom/import/import-once-test-c.less +0 -6
  385. package/test/less-bom/import/import-reference.less +0 -98
  386. package/test/less-bom/import/import-test-a.less +0 -5
  387. package/test/less-bom/import/import-test-b.less +0 -8
  388. package/test/less-bom/import/import-test-c.less +0 -6
  389. package/test/less-bom/import/import-test-d.css +0 -1
  390. package/test/less-bom/import/import-test-e.less +0 -2
  391. package/test/less-bom/import/import-test-f.less +0 -5
  392. package/test/less-bom/import/imports/font.less +0 -8
  393. package/test/less-bom/import/imports/logo.less +0 -6
  394. package/test/less-bom/import/interpolation-vars.less +0 -6
  395. package/test/less-bom/import/invalid-css.less +0 -1
  396. package/test/less-bom/import/urls.less +0 -1
  397. package/test/less-bom/import-inline.less +0 -3
  398. package/test/less-bom/import-interpolation.less +0 -8
  399. package/test/less-bom/import-module.less +0 -3
  400. package/test/less-bom/import-once.less +0 -6
  401. package/test/less-bom/import-reference-issues/appender-reference-1968.less +0 -6
  402. package/test/less-bom/import-reference-issues/global-scope-import.less +0 -13
  403. package/test/less-bom/import-reference-issues/global-scope-nested.less +0 -3
  404. package/test/less-bom/import-reference-issues/mixin-1968.less +0 -8
  405. package/test/less-bom/import-reference-issues/multiple-import-nested.less +0 -12
  406. package/test/less-bom/import-reference-issues/multiple-import.less +0 -10
  407. package/test/less-bom/import-reference-issues/simple-mixin.css +0 -3
  408. package/test/less-bom/import-reference-issues/simple-ruleset-2162.less +0 -3
  409. package/test/less-bom/import-reference-issues.less +0 -50
  410. package/test/less-bom/import-reference.less +0 -26
  411. package/test/less-bom/import.less +0 -29
  412. package/test/less-bom/include-path/include-path.less +0 -8
  413. package/test/less-bom/include-path-string/include-path-string.less +0 -3
  414. package/test/less-bom/javascript.less +0 -39
  415. package/test/less-bom/lazy-eval.less +0 -6
  416. package/test/less-bom/legacy/legacy.less +0 -21
  417. package/test/less-bom/math/parens-division/media-math.less +0 -9
  418. package/test/less-bom/math/parens-division/mixins-args.less +0 -264
  419. package/test/less-bom/math/parens-division/new-division.less +0 -17
  420. package/test/less-bom/math/parens-division/parens.less +0 -46
  421. package/test/less-bom/math/strict/css.less +0 -108
  422. package/test/less-bom/math/strict/media-math.less +0 -9
  423. package/test/less-bom/math/strict/mixins-args.less +0 -264
  424. package/test/less-bom/math/strict/parens.less +0 -46
  425. package/test/less-bom/math/strict-legacy/css.less +0 -108
  426. package/test/less-bom/math/strict-legacy/media-math.less +0 -9
  427. package/test/less-bom/math/strict-legacy/mixins-args.less +0 -263
  428. package/test/less-bom/math/strict-legacy/parens.less +0 -50
  429. package/test/less-bom/media.less +0 -241
  430. package/test/less-bom/merge.less +0 -81
  431. package/test/less-bom/mixins-closure.less +0 -26
  432. package/test/less-bom/mixins-guards-default-func.less +0 -195
  433. package/test/less-bom/mixins-guards.less +0 -358
  434. package/test/less-bom/mixins-important.less +0 -53
  435. package/test/less-bom/mixins-interpolated.less +0 -75
  436. package/test/less-bom/mixins-named-args.less +0 -36
  437. package/test/less-bom/mixins-nested.less +0 -22
  438. package/test/less-bom/mixins-pattern.less +0 -102
  439. package/test/less-bom/mixins.less +0 -145
  440. package/test/less-bom/modifyVars/extended.json +0 -5
  441. package/test/less-bom/modifyVars/extended.less +0 -11
  442. package/test/less-bom/namespacing/imports/a-better-bootstrap.less +0 -13
  443. package/test/less-bom/namespacing/imports/library.less +0 -14
  444. package/test/less-bom/namespacing/namespacing-1.less +0 -42
  445. package/test/less-bom/namespacing/namespacing-2.less +0 -27
  446. package/test/less-bom/namespacing/namespacing-3.less +0 -28
  447. package/test/less-bom/namespacing/namespacing-4.less +0 -33
  448. package/test/less-bom/namespacing/namespacing-5.less +0 -32
  449. package/test/less-bom/namespacing/namespacing-6.less +0 -26
  450. package/test/less-bom/namespacing/namespacing-7.less +0 -48
  451. package/test/less-bom/namespacing/namespacing-functions.less +0 -11
  452. package/test/less-bom/namespacing/namespacing-media.less +0 -26
  453. package/test/less-bom/namespacing/namespacing-operations.less +0 -15
  454. package/test/less-bom/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  455. package/test/less-bom/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  456. package/test/less-bom/no-js-errors/no-js-errors.less +0 -3
  457. package/test/less-bom/no-js-errors/no-js-errors.txt +0 -4
  458. package/test/less-bom/no-output.less +0 -2
  459. package/test/less-bom/no-strict-math/mixins-guards.less +0 -25
  460. package/test/less-bom/no-strict-math/no-sm-operations.less +0 -16
  461. package/test/less-bom/operations.less +0 -63
  462. package/test/less-bom/parse-interpolation.less +0 -53
  463. package/test/less-bom/permissive-parse.less +0 -50
  464. package/test/less-bom/plugin/plugin-collection.js +0 -9
  465. package/test/less-bom/plugin/plugin-global.js +0 -9
  466. package/test/less-bom/plugin/plugin-local.js +0 -14
  467. package/test/less-bom/plugin/plugin-preeval.js +0 -27
  468. package/test/less-bom/plugin/plugin-scope1.js +0 -3
  469. package/test/less-bom/plugin/plugin-scope2.js +0 -3
  470. package/test/less-bom/plugin/plugin-set-options-v2.js +0 -33
  471. package/test/less-bom/plugin/plugin-set-options-v3.js +0 -31
  472. package/test/less-bom/plugin/plugin-set-options.js +0 -32
  473. package/test/less-bom/plugin/plugin-simple.js +0 -7
  474. package/test/less-bom/plugin/plugin-transitive.js +0 -6
  475. package/test/less-bom/plugin/plugin-transitive.less +0 -5
  476. package/test/less-bom/plugin/plugin-tree-nodes.js +0 -82
  477. package/test/less-bom/plugin-module.less +0 -7
  478. package/test/less-bom/plugin-preeval.less +0 -15
  479. package/test/less-bom/plugin.less +0 -142
  480. package/test/less-bom/postProcessorPlugin/postProcessor.less +0 -4
  481. package/test/less-bom/preProcessorPlugin/preProcessor.less +0 -3
  482. package/test/less-bom/property-accessors.less +0 -67
  483. package/test/less-bom/property-name-interp.less +0 -56
  484. package/test/less-bom/rewrite-urls-all/folder/file.less +0 -8
  485. package/test/less-bom/rewrite-urls-all/rewrite-urls-all.less +0 -11
  486. package/test/less-bom/rewrite-urls-local/folder/file.less +0 -8
  487. package/test/less-bom/rewrite-urls-local/rewrite-urls-local.less +0 -11
  488. package/test/less-bom/root-registry/file.less +0 -1
  489. package/test/less-bom/root-registry/root.less +0 -3
  490. package/test/less-bom/rootpath-rewrite-urls-all/folder/file.less +0 -8
  491. package/test/less-bom/rootpath-rewrite-urls-all/rootpath-rewrite-urls-all.less +0 -11
  492. package/test/less-bom/rootpath-rewrite-urls-local/folder/file.less +0 -8
  493. package/test/less-bom/rootpath-rewrite-urls-local/rootpath-rewrite-urls-local.less +0 -11
  494. package/test/less-bom/rulesets.less +0 -30
  495. package/test/less-bom/scope.less +0 -104
  496. package/test/less-bom/selectors.less +0 -184
  497. package/test/less-bom/sourcemaps/basic.json +0 -3
  498. package/test/less-bom/sourcemaps/basic.less +0 -27
  499. package/test/less-bom/sourcemaps/custom-props.less +0 -8
  500. package/test/less-bom/sourcemaps/imported.css +0 -7
  501. package/test/less-bom/sourcemaps-empty/empty.less +0 -1
  502. package/test/less-bom/sourcemaps-empty/var-defs.less +0 -1
  503. package/test/less-bom/static-urls/urls.less +0 -33
  504. package/test/less-bom/strict-units/strict-units.less +0 -4
  505. package/test/less-bom/strings.less +0 -73
  506. package/test/less-bom/url-args/urls.less +0 -63
  507. package/test/less-bom/urls.less +0 -94
  508. package/test/less-bom/variables-in-at-rules.less +0 -20
  509. package/test/less-bom/variables.less +0 -127
  510. package/test/less-bom/visitorPlugin/visitor.less +0 -4
  511. package/test/less-bom/whitespace.less +0 -44
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  /**
3
3
  * Given the full path to a file, return the path component
4
4
  * Provided by AbstractFileManager
@@ -1,15 +1,13 @@
1
+ import Anonymous from '../tree/anonymous';
2
+ import Keyword from '../tree/keyword';
1
3
 
2
- var functionRegistry = require('./function-registry'),
3
- Anonymous = require('../tree/anonymous'),
4
- Keyword = require('../tree/keyword');
4
+ function boolean(condition) {
5
+ return condition ? Keyword.True : Keyword.False;
6
+ }
5
7
 
6
- functionRegistry.addMultiple({
7
- boolean: function(condition) {
8
- return condition ? Keyword.True : Keyword.False;
9
- },
8
+ function If(condition, trueValue, falseValue) {
9
+ return condition ? trueValue
10
+ : (falseValue || new Anonymous);
11
+ }
10
12
 
11
- 'if': function(condition, trueValue, falseValue) {
12
- return condition ? trueValue
13
- : (falseValue || new Anonymous);
14
- }
15
- });
13
+ export default { boolean, 'if': If };
@@ -1,16 +1,25 @@
1
- var Color = require('../tree/color'),
2
- functionRegistry = require('./function-registry');
1
+ import Color from '../tree/color';
3
2
 
4
3
  // Color Blending
5
4
  // ref: http://www.w3.org/TR/compositing-1
6
5
 
7
6
  function colorBlend(mode, color1, color2) {
8
- var ab = color1.alpha, cb, // backdrop
9
- as = color2.alpha, cs, // source
10
- ar, cr, r = []; // result
7
+ const ab = color1.alpha; // result
8
+
9
+ let // backdrop
10
+ cb;
11
+
12
+ const as = color2.alpha;
13
+
14
+ let // source
15
+ cs;
16
+
17
+ let ar;
18
+ let cr;
19
+ const r = [];
11
20
 
12
21
  ar = as + ab * (1 - as);
13
- for (var i = 0; i < 3; i++) {
22
+ for (let i = 0; i < 3; i++) {
14
23
  cb = color1.rgb[i] / 255;
15
24
  cs = color2.rgb[i] / 255;
16
25
  cr = mode(cb, cs);
@@ -24,7 +33,7 @@ function colorBlend(mode, color1, color2) {
24
33
  return new Color(r, ar);
25
34
  }
26
35
 
27
- var colorBlendModeFunctions = {
36
+ const colorBlendModeFunctions = {
28
37
  multiply: function(cb, cs) {
29
38
  return cb * cs;
30
39
  },
@@ -38,7 +47,8 @@ var colorBlendModeFunctions = {
38
47
  colorBlendModeFunctions.screen(cb - 1, cs);
39
48
  },
40
49
  softlight: function(cb, cs) {
41
- var d = 1, e = cb;
50
+ let d = 1;
51
+ let e = cb;
42
52
  if (cs > 0.5) {
43
53
  e = 1;
44
54
  d = (cb > 0.25) ? Math.sqrt(cb)
@@ -65,10 +75,10 @@ var colorBlendModeFunctions = {
65
75
  }
66
76
  };
67
77
 
68
- for (var f in colorBlendModeFunctions) {
78
+ for (const f in colorBlendModeFunctions) {
69
79
  if (colorBlendModeFunctions.hasOwnProperty(f)) {
70
80
  colorBlend[f] = colorBlend.bind(null, colorBlendModeFunctions[f]);
71
81
  }
72
82
  }
73
83
 
74
- functionRegistry.addMultiple(colorBlend);
84
+ export default colorBlend;
@@ -1,15 +1,14 @@
1
- var Dimension = require('../tree/dimension'),
2
- Color = require('../tree/color'),
3
- Quoted = require('../tree/quoted'),
4
- Anonymous = require('../tree/anonymous'),
5
- functionRegistry = require('./function-registry'),
6
- colorFunctions;
1
+ import Dimension from '../tree/dimension';
2
+ import Color from '../tree/color';
3
+ import Quoted from '../tree/quoted';
4
+ import Anonymous from '../tree/anonymous';
5
+ let colorFunctions;
7
6
 
8
7
  function clamp(val) {
9
8
  return Math.min(1, Math.max(0, val));
10
9
  }
11
10
  function hsla(origColor, hsl) {
12
- var color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);
11
+ const color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);
13
12
  if (color) {
14
13
  if (origColor.value &&
15
14
  /^(rgb|hsl)/.test(origColor.value)) {
@@ -20,6 +19,22 @@ function hsla(origColor, hsl) {
20
19
  return color;
21
20
  }
22
21
  }
22
+ function toHSL(color) {
23
+ if (color.toHSL) {
24
+ return color.toHSL();
25
+ } else {
26
+ throw new Error('Argument cannot be evaluated to a color');
27
+ }
28
+ }
29
+
30
+ function toHSV(color) {
31
+ if (color.toHSV) {
32
+ return color.toHSV();
33
+ } else {
34
+ throw new Error('Argument cannot be evaluated to a color');
35
+ }
36
+ }
37
+
23
38
  function number(n) {
24
39
  if (n instanceof Dimension) {
25
40
  return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);
@@ -41,7 +56,7 @@ function scaled(n, size) {
41
56
  }
42
57
  colorFunctions = {
43
58
  rgb: function (r, g, b) {
44
- var color = colorFunctions.rgba(r, g, b, 1.0);
59
+ const color = colorFunctions.rgba(r, g, b, 1.0);
45
60
  if (color) {
46
61
  color.value = 'rgb';
47
62
  return color;
@@ -57,14 +72,14 @@ colorFunctions = {
57
72
  }
58
73
  return new Color(r.rgb, a, 'rgba');
59
74
  }
60
- var rgb = [r, g, b].map(function (c) { return scaled(c, 255); });
75
+ const rgb = [r, g, b].map(c => scaled(c, 255));
61
76
  a = number(a);
62
77
  return new Color(rgb, a, 'rgba');
63
78
  }
64
79
  catch (e) {}
65
80
  },
66
81
  hsl: function (h, s, l) {
67
- var color = colorFunctions.hsla(h, s, l, 1.0);
82
+ const color = colorFunctions.hsla(h, s, l, 1.0);
68
83
  if (color) {
69
84
  color.value = 'hsl';
70
85
  return color;
@@ -81,7 +96,8 @@ colorFunctions = {
81
96
  return new Color(h.rgb, a, 'hsla');
82
97
  }
83
98
 
84
- var m1, m2;
99
+ let m1;
100
+ let m2;
85
101
 
86
102
  function hue(h) {
87
103
  h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);
@@ -100,12 +116,12 @@ colorFunctions = {
100
116
  }
101
117
 
102
118
  h = (number(h) % 360) / 360;
103
- s = clamp(number(s)); l = clamp(number(l)); a = clamp(number(a));
119
+ s = clamp(number(s));l = clamp(number(l));a = clamp(number(a));
104
120
 
105
121
  m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
106
122
  m1 = l * 2 - m2;
107
123
 
108
- var rgb = [
124
+ const rgb = [
109
125
  hue(h + 1 / 3) * 255,
110
126
  hue(h) * 255,
111
127
  hue(h - 1 / 3) * 255
@@ -122,17 +138,18 @@ colorFunctions = {
122
138
 
123
139
  hsva: function(h, s, v, a) {
124
140
  h = ((number(h) % 360) / 360) * 360;
125
- s = number(s); v = number(v); a = number(a);
141
+ s = number(s);v = number(v);a = number(a);
126
142
 
127
- var i, f;
143
+ let i;
144
+ let f;
128
145
  i = Math.floor((h / 60) % 6);
129
146
  f = (h / 60) - i;
130
147
 
131
- var vs = [v,
148
+ const vs = [v,
132
149
  v * (1 - s),
133
150
  v * (1 - f * s),
134
151
  v * (1 - (1 - f) * s)];
135
- var perm = [[0, 3, 1],
152
+ const perm = [[0, 3, 1],
136
153
  [2, 0, 1],
137
154
  [1, 0, 3],
138
155
  [1, 2, 0],
@@ -146,22 +163,22 @@ colorFunctions = {
146
163
  },
147
164
 
148
165
  hue: function (color) {
149
- return new Dimension(color.toHSL().h);
166
+ return new Dimension(toHSL(color).h);
150
167
  },
151
168
  saturation: function (color) {
152
- return new Dimension(color.toHSL().s * 100, '%');
169
+ return new Dimension(toHSL(color).s * 100, '%');
153
170
  },
154
171
  lightness: function (color) {
155
- return new Dimension(color.toHSL().l * 100, '%');
172
+ return new Dimension(toHSL(color).l * 100, '%');
156
173
  },
157
174
  hsvhue: function(color) {
158
- return new Dimension(color.toHSV().h);
175
+ return new Dimension(toHSV(color).h);
159
176
  },
160
177
  hsvsaturation: function (color) {
161
- return new Dimension(color.toHSV().s * 100, '%');
178
+ return new Dimension(toHSV(color).s * 100, '%');
162
179
  },
163
180
  hsvvalue: function (color) {
164
- return new Dimension(color.toHSV().v * 100, '%');
181
+ return new Dimension(toHSV(color).v * 100, '%');
165
182
  },
166
183
  red: function (color) {
167
184
  return new Dimension(color.rgb[0]);
@@ -173,13 +190,13 @@ colorFunctions = {
173
190
  return new Dimension(color.rgb[2]);
174
191
  },
175
192
  alpha: function (color) {
176
- return new Dimension(color.toHSL().a);
193
+ return new Dimension(toHSL(color).a);
177
194
  },
178
195
  luma: function (color) {
179
196
  return new Dimension(color.luma() * color.alpha * 100, '%');
180
197
  },
181
198
  luminance: function (color) {
182
- var luminance =
199
+ const luminance =
183
200
  (0.2126 * color.rgb[0] / 255) +
184
201
  (0.7152 * color.rgb[1] / 255) +
185
202
  (0.0722 * color.rgb[2] / 255);
@@ -192,7 +209,7 @@ colorFunctions = {
192
209
  if (!color.rgb) {
193
210
  return null;
194
211
  }
195
- var hsl = color.toHSL();
212
+ const hsl = toHSL(color);
196
213
 
197
214
  if (typeof method !== 'undefined' && method.value === 'relative') {
198
215
  hsl.s += hsl.s * amount.value / 100;
@@ -204,7 +221,7 @@ colorFunctions = {
204
221
  return hsla(color, hsl);
205
222
  },
206
223
  desaturate: function (color, amount, method) {
207
- var hsl = color.toHSL();
224
+ const hsl = toHSL(color);
208
225
 
209
226
  if (typeof method !== 'undefined' && method.value === 'relative') {
210
227
  hsl.s -= hsl.s * amount.value / 100;
@@ -216,7 +233,7 @@ colorFunctions = {
216
233
  return hsla(color, hsl);
217
234
  },
218
235
  lighten: function (color, amount, method) {
219
- var hsl = color.toHSL();
236
+ const hsl = toHSL(color);
220
237
 
221
238
  if (typeof method !== 'undefined' && method.value === 'relative') {
222
239
  hsl.l += hsl.l * amount.value / 100;
@@ -228,7 +245,7 @@ colorFunctions = {
228
245
  return hsla(color, hsl);
229
246
  },
230
247
  darken: function (color, amount, method) {
231
- var hsl = color.toHSL();
248
+ const hsl = toHSL(color);
232
249
 
233
250
  if (typeof method !== 'undefined' && method.value === 'relative') {
234
251
  hsl.l -= hsl.l * amount.value / 100;
@@ -240,7 +257,7 @@ colorFunctions = {
240
257
  return hsla(color, hsl);
241
258
  },
242
259
  fadein: function (color, amount, method) {
243
- var hsl = color.toHSL();
260
+ const hsl = toHSL(color);
244
261
 
245
262
  if (typeof method !== 'undefined' && method.value === 'relative') {
246
263
  hsl.a += hsl.a * amount.value / 100;
@@ -252,7 +269,7 @@ colorFunctions = {
252
269
  return hsla(color, hsl);
253
270
  },
254
271
  fadeout: function (color, amount, method) {
255
- var hsl = color.toHSL();
272
+ const hsl = toHSL(color);
256
273
 
257
274
  if (typeof method !== 'undefined' && method.value === 'relative') {
258
275
  hsl.a -= hsl.a * amount.value / 100;
@@ -264,15 +281,15 @@ colorFunctions = {
264
281
  return hsla(color, hsl);
265
282
  },
266
283
  fade: function (color, amount) {
267
- var hsl = color.toHSL();
284
+ const hsl = toHSL(color);
268
285
 
269
286
  hsl.a = amount.value / 100;
270
287
  hsl.a = clamp(hsl.a);
271
288
  return hsla(color, hsl);
272
289
  },
273
290
  spin: function (color, amount) {
274
- var hsl = color.toHSL();
275
- var hue = (hsl.h + amount.value) % 360;
291
+ const hsl = toHSL(color);
292
+ const hue = (hsl.h + amount.value) % 360;
276
293
 
277
294
  hsl.h = hue < 0 ? 360 + hue : hue;
278
295
 
@@ -283,25 +300,21 @@ colorFunctions = {
283
300
  // http://sass-lang.com
284
301
  //
285
302
  mix: function (color1, color2, weight) {
286
- if (!color1.toHSL || !color2.toHSL) {
287
- console.log(color2.type);
288
- console.dir(color2);
289
- }
290
303
  if (!weight) {
291
304
  weight = new Dimension(50);
292
305
  }
293
- var p = weight.value / 100.0;
294
- var w = p * 2 - 1;
295
- var a = color1.toHSL().a - color2.toHSL().a;
306
+ const p = weight.value / 100.0;
307
+ const w = p * 2 - 1;
308
+ const a = toHSL(color1).a - toHSL(color2).a;
296
309
 
297
- var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
298
- var w2 = 1 - w1;
310
+ const w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
311
+ const w2 = 1 - w1;
299
312
 
300
- var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,
313
+ const rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,
301
314
  color1.rgb[1] * w1 + color2.rgb[1] * w2,
302
315
  color1.rgb[2] * w1 + color2.rgb[2] * w2];
303
316
 
304
- var alpha = color1.alpha * p + color2.alpha * (1 - p);
317
+ const alpha = color1.alpha * p + color2.alpha * (1 - p);
305
318
 
306
319
  return new Color(rgb, alpha);
307
320
  },
@@ -322,7 +335,7 @@ colorFunctions = {
322
335
  }
323
336
  // Figure out which is actually light and dark:
324
337
  if (dark.luma() > light.luma()) {
325
- var t = light;
338
+ const t = light;
326
339
  light = dark;
327
340
  dark = t;
328
341
  }
@@ -381,8 +394,8 @@ colorFunctions = {
381
394
  color: function(c) {
382
395
  if ((c instanceof Quoted) &&
383
396
  (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) {
384
- var val = c.value.slice(1);
385
- return new Color(val, undefined, '#' + val);
397
+ const val = c.value.slice(1);
398
+ return new Color(val, undefined, `#${val}`);
386
399
  }
387
400
  if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) {
388
401
  c.value = undefined;
@@ -400,4 +413,5 @@ colorFunctions = {
400
413
  return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount);
401
414
  }
402
415
  };
403
- functionRegistry.addMultiple(colorFunctions);
416
+
417
+ export default colorFunctions;
@@ -1,42 +1,41 @@
1
- module.exports = function(environment) {
2
- var Quoted = require('../tree/quoted'),
3
- URL = require('../tree/url'),
4
- utils = require('../utils'),
5
- functionRegistry = require('./function-registry'),
6
- fallback = function(functionThis, node) {
7
- return new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context);
8
- },
9
- logger = require('../logger');
1
+ import Quoted from '../tree/quoted';
2
+ import URL from '../tree/url';
3
+ import * as utils from '../utils';
4
+ import logger from '../logger';
10
5
 
11
- functionRegistry.add('data-uri', function(mimetypeNode, filePathNode) {
6
+ export default environment => {
7
+
8
+ const fallback = (functionThis, node) => new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context);
9
+
10
+ return { 'data-uri': function(mimetypeNode, filePathNode) {
12
11
 
13
12
  if (!filePathNode) {
14
13
  filePathNode = mimetypeNode;
15
14
  mimetypeNode = null;
16
15
  }
17
16
 
18
- var mimetype = mimetypeNode && mimetypeNode.value;
19
- var filePath = filePathNode.value;
20
- var currentFileInfo = this.currentFileInfo;
21
- var currentDirectory = currentFileInfo.rewriteUrls ?
17
+ let mimetype = mimetypeNode && mimetypeNode.value;
18
+ let filePath = filePathNode.value;
19
+ const currentFileInfo = this.currentFileInfo;
20
+ const currentDirectory = currentFileInfo.rewriteUrls ?
22
21
  currentFileInfo.currentDirectory : currentFileInfo.entryPath;
23
22
 
24
- var fragmentStart = filePath.indexOf('#');
25
- var fragment = '';
23
+ const fragmentStart = filePath.indexOf('#');
24
+ let fragment = '';
26
25
  if (fragmentStart !== -1) {
27
26
  fragment = filePath.slice(fragmentStart);
28
27
  filePath = filePath.slice(0, fragmentStart);
29
28
  }
30
- var context = utils.clone(this.context);
29
+ const context = utils.clone(this.context);
31
30
  context.rawBuffer = true;
32
31
 
33
- var fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);
32
+ const fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);
34
33
 
35
34
  if (!fileManager) {
36
35
  return fallback(this, filePathNode);
37
36
  }
38
37
 
39
- var useBase64 = false;
38
+ let useBase64 = false;
40
39
 
41
40
  // detect the mimetype if not given
42
41
  if (!mimetypeNode) {
@@ -47,7 +46,7 @@ module.exports = function(environment) {
47
46
  useBase64 = false;
48
47
  } else {
49
48
  // use base 64 unless it's an ASCII or UTF-8 format
50
- var charset = environment.charsetLookup(mimetype);
49
+ const charset = environment.charsetLookup(mimetype);
51
50
  useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;
52
51
  }
53
52
  if (useBase64) { mimetype += ';base64'; }
@@ -56,33 +55,20 @@ module.exports = function(environment) {
56
55
  useBase64 = /;base64$/.test(mimetype);
57
56
  }
58
57
 
59
- var fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);
58
+ const fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);
60
59
  if (!fileSync.contents) {
61
- logger.warn('Skipped data-uri embedding of ' + filePath + ' because file not found');
60
+ logger.warn(`Skipped data-uri embedding of ${filePath} because file not found`);
62
61
  return fallback(this, filePathNode || mimetypeNode);
63
62
  }
64
- var buf = fileSync.contents;
63
+ let buf = fileSync.contents;
65
64
  if (useBase64 && !environment.encodeBase64) {
66
65
  return fallback(this, filePathNode);
67
66
  }
68
67
 
69
68
  buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf);
70
69
 
71
- var uri = 'data:' + mimetype + ',' + buf + fragment;
72
-
73
- // IE8 cannot handle a data-uri larger than 32,768 characters. If this is exceeded
74
- // and the --ieCompat flag is enabled, return a normal url() instead.
75
- var DATA_URI_MAX = 32768;
76
- if (uri.length >= DATA_URI_MAX) {
77
-
78
- if (this.context.ieCompat !== false) {
79
- logger.warn('Skipped data-uri embedding of ' + filePath + ' because its size (' + uri.length +
80
- ' characters) exceeds IE8-safe ' + DATA_URI_MAX + ' characters!');
81
-
82
- return fallback(this, filePathNode || mimetypeNode);
83
- }
84
- }
70
+ const uri = `data:${mimetype},${buf}${fragment}`;
85
71
 
86
- return new URL(new Quoted('"' + uri + '"', uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);
87
- });
72
+ return new URL(new Quoted(`"${uri}"`, uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);
73
+ }};
88
74
  };
@@ -1,9 +1,9 @@
1
- var Keyword = require('../tree/keyword'),
2
- functionRegistry = require('./function-registry');
1
+ import Keyword from '../tree/keyword';
3
2
 
4
- var defaultFunc = {
3
+ const defaultFunc = {
5
4
  eval: function () {
6
- var v = this.value_, e = this.error_;
5
+ const v = this.value_;
6
+ const e = this.error_;
7
7
  if (e) {
8
8
  throw e;
9
9
  }
@@ -22,6 +22,4 @@ var defaultFunc = {
22
22
  }
23
23
  };
24
24
 
25
- functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc));
26
-
27
- module.exports = defaultFunc;
25
+ export default defaultFunc;
@@ -1,46 +1,49 @@
1
- var Expression = require('../tree/expression');
1
+ import Expression from '../tree/expression';
2
2
 
3
- var functionCaller = function(name, context, index, currentFileInfo) {
4
- this.name = name.toLowerCase();
5
- this.index = index;
6
- this.context = context;
7
- this.currentFileInfo = currentFileInfo;
3
+ class functionCaller {
4
+ constructor(name, context, index, currentFileInfo) {
5
+ this.name = name.toLowerCase();
6
+ this.index = index;
7
+ this.context = context;
8
+ this.currentFileInfo = currentFileInfo;
8
9
 
9
- this.func = context.frames[0].functionRegistry.get(this.name);
10
- };
11
- functionCaller.prototype.isValid = function() {
12
- return Boolean(this.func);
13
- };
10
+ this.func = context.frames[0].functionRegistry.get(this.name);
11
+ }
12
+
13
+ isValid() {
14
+ return Boolean(this.func);
15
+ }
14
16
 
15
- functionCaller.prototype.call = function(args) {
16
- // This code is terrible and should be replaced as per this issue...
17
- // https://github.com/less/less.js/issues/2477
18
- if (Array.isArray(args)) {
19
- args = args.filter(function (item) {
20
- if (item.type === 'Comment') {
21
- return false;
22
- }
23
- return true;
24
- })
25
- .map(function(item) {
26
- if (item.type === 'Expression') {
27
- var subNodes = item.value.filter(function (item) {
28
- if (item.type === 'Comment') {
29
- return false;
17
+ call(args) {
18
+ // This code is terrible and should be replaced as per this issue...
19
+ // https://github.com/less/less.js/issues/2477
20
+ if (Array.isArray(args)) {
21
+ args = args.filter(item => {
22
+ if (item.type === 'Comment') {
23
+ return false;
24
+ }
25
+ return true;
26
+ })
27
+ .map(item => {
28
+ if (item.type === 'Expression') {
29
+ const subNodes = item.value.filter(item => {
30
+ if (item.type === 'Comment') {
31
+ return false;
32
+ }
33
+ return true;
34
+ });
35
+ if (subNodes.length === 1) {
36
+ return subNodes[0];
37
+ } else {
38
+ return new Expression(subNodes);
39
+ }
30
40
  }
31
- return true;
41
+ return item;
32
42
  });
33
- if (subNodes.length === 1) {
34
- return subNodes[0];
35
- } else {
36
- return new Expression(subNodes);
37
- }
38
- }
39
- return item;
40
- });
41
- }
43
+ }
42
44
 
43
- return this.func.apply(this, args);
44
- };
45
+ return this.func(...args);
46
+ }
47
+ }
45
48
 
46
- module.exports = functionCaller;
49
+ export default functionCaller;
@@ -13,9 +13,9 @@ function makeRegistry( base ) {
13
13
  },
14
14
  addMultiple: function(functions) {
15
15
  Object.keys(functions).forEach(
16
- function(name) {
16
+ name => {
17
17
  this.add(name, functions[name]);
18
- }.bind(this));
18
+ });
19
19
  },
20
20
  get: function(name) {
21
21
  return this._data[name] || ( base && base.get( name ));
@@ -32,4 +32,4 @@ function makeRegistry( base ) {
32
32
  };
33
33
  }
34
34
 
35
- module.exports = makeRegistry( null );
35
+ export default makeRegistry( null );