less 2.4.0 → 2.5.3

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 (405) hide show
  1. package/.idea/jsLibraryMappings.xml +7 -7
  2. package/.idea/less.js.iml +9 -16
  3. package/.idea/libraries/less_js_node_modules.xml +14 -0
  4. package/.idea/misc.xml +14 -5
  5. package/.idea/modules.xml +8 -9
  6. package/.idea/vcs.xml +6 -7
  7. package/.idea/workspace.xml +592 -806
  8. package/.jscsrc +72 -72
  9. package/.travis.yml +1 -0
  10. package/CHANGELOG.md +54 -8
  11. package/Gruntfile.js +40 -13
  12. package/README.md +2 -0
  13. package/appveyor.yml +0 -6
  14. package/bin/lessc +22 -24
  15. package/bower.json +1 -2
  16. package/dist/less-rolledup.js +8572 -0
  17. package/dist/less.js +807 -401
  18. package/dist/less.min.js +9 -8
  19. package/lib/less/contexts.js +2 -0
  20. package/lib/less/environment/abstract-file-manager.js +5 -1
  21. package/lib/less/functions/color.js +46 -12
  22. package/lib/less/functions/function-caller.js +31 -2
  23. package/lib/less/functions/function-registry.js +28 -17
  24. package/lib/less/functions/math-helper.js +16 -0
  25. package/lib/less/functions/math.js +4 -16
  26. package/lib/less/functions/number.js +7 -2
  27. package/lib/less/functions/string.js +5 -3
  28. package/lib/less/functions/svg.js +19 -11
  29. package/lib/less/functions/types.js +1 -6
  30. package/lib/less/import-manager.js +8 -3
  31. package/lib/less/index.js +1 -1
  32. package/lib/less/parser/parser-input.js +55 -54
  33. package/lib/less/parser/parser.js +168 -52
  34. package/lib/less/plugins/function-importer.js +35 -0
  35. package/lib/less/source-map-output.js +1 -2
  36. package/lib/less/tree/anonymous.js +10 -2
  37. package/lib/less/tree/color.js +4 -1
  38. package/lib/less/tree/comment.js +0 -3
  39. package/lib/less/tree/dimension.js +5 -3
  40. package/lib/less/tree/directive.js +40 -15
  41. package/lib/less/tree/expression.js +5 -0
  42. package/lib/less/tree/import.js +22 -10
  43. package/lib/less/tree/media.js +3 -23
  44. package/lib/less/tree/mixin-call.js +17 -7
  45. package/lib/less/tree/mixin-definition.js +20 -6
  46. package/lib/less/tree/rule.js +19 -1
  47. package/lib/less/tree/ruleset.js +40 -27
  48. package/lib/less/tree/selector.js +8 -1
  49. package/lib/less/visitors/extend-visitor.js +1 -4
  50. package/lib/less/visitors/import-visitor.js +17 -2
  51. package/lib/less/visitors/join-selector-visitor.js +6 -0
  52. package/lib/less/visitors/to-css-visitor.js +48 -14
  53. package/lib/less-browser/bootstrap.js +5 -6
  54. package/lib/less-browser/index.js +20 -12
  55. package/lib/less-node/image-size.js +54 -31
  56. package/lib/less-node/index.js +1 -1
  57. package/lib/less-node/lessc-helper.js +2 -2
  58. package/lib/less-rhino/index.js +12 -8
  59. package/package.json +9 -13
  60. package/test/browser/less/urls.less +7 -1
  61. package/test/browser/less.js +30 -0
  62. package/test/browser/runner-VisitorPlugin-options.js +3 -0
  63. package/test/browser/runner-VisitorPlugin.js +3 -0
  64. package/test/browser/runner-filemanagerPlugin-options.js +4 -0
  65. package/test/browser/runner-filemanagerPlugin.js +3 -0
  66. package/test/browser/runner-global-vars-options.js +2 -1
  67. package/test/browser/runner-main-options.js +11 -11
  68. package/test/browser/runner-postProcessor.js +1 -1
  69. package/test/browser/runner-postProcessorPlugin-options.js +3 -0
  70. package/test/browser/runner-postProcessorPlugin.js +3 -0
  71. package/test/browser/runner-preProcessorPlugin-options.js +3 -0
  72. package/test/browser/runner-preProcessorPlugin.js +3 -0
  73. package/test/css/comments2.css +1 -1
  74. package/test/css/compression/compression.css +1 -1
  75. package/test/css/detached-rulesets.css +5 -0
  76. package/test/css/directives-bubling.css +119 -0
  77. package/test/css/extract-and-length.css +1 -1
  78. package/test/css/filemanagerPlugin/filemanager.css +3 -0
  79. package/test/css/functions.css +17 -1
  80. package/test/css/import-reference.css +5 -1
  81. package/test/css/import.css +4 -0
  82. package/test/css/include-path/include-path.css +4 -1
  83. package/test/css/include-path-string/include-path-string.css +3 -0
  84. package/test/css/legacy/legacy.css +14 -0
  85. package/test/css/media.css +0 -1
  86. package/test/css/mixins-args.css +51 -1
  87. package/test/css/plugin.css +44 -0
  88. package/test/css/postProcessorPlugin/postProcessor.css +4 -0
  89. package/test/css/preProcessorPlugin/preProcessor.css +3 -0
  90. package/test/css/scope.css +1 -1
  91. package/test/css/strings.css +1 -1
  92. package/test/css/url-args/urls.css +5 -5
  93. package/test/css/urls.css +8 -8
  94. package/test/css/variables.css +5 -5
  95. package/test/css/visitorPlugin/visitor.css +3 -0
  96. package/test/data/image.jpg +0 -0
  97. package/test/data/image.svg +2 -1
  98. package/test/data/page.html +1 -1
  99. package/test/index.js +5 -0
  100. package/test/less/detached-rulesets.less +9 -0
  101. package/test/less/directives-bubling.less +142 -0
  102. package/test/less/errors/at-rules-undefined-var.txt +4 -4
  103. package/test/less/errors/css-guard-default-func.txt +4 -4
  104. package/test/less/errors/javascript-undefined-var.txt +4 -4
  105. package/test/less/errors/mixins-guards-default-func-1.txt +4 -4
  106. package/test/less/errors/mixins-guards-default-func-2.txt +4 -4
  107. package/test/less/errors/mixins-guards-default-func-3.txt +4 -4
  108. package/test/less/errors/{parse-error-extra-parens.less → parse-error-media-no-block-1.less} +0 -0
  109. package/test/less/errors/parse-error-media-no-block-1.txt +3 -0
  110. package/test/less/errors/parse-error-media-no-block-2.less +1 -0
  111. package/test/less/errors/parse-error-media-no-block-2.txt +2 -0
  112. package/test/less/errors/parse-error-media-no-block-3.less +4 -0
  113. package/test/less/errors/parse-error-media-no-block-3.txt +3 -0
  114. package/test/less/errors/percentage-non-number-argument.less +3 -0
  115. package/test/less/errors/percentage-non-number-argument.txt +4 -0
  116. package/test/less/errors/property-interp-not-defined.txt +2 -2
  117. package/test/less/errors/svg-gradient2.txt +1 -1
  118. package/test/less/errors/svg-gradient3.txt +1 -1
  119. package/test/less/errors/svg-gradient4.less +4 -0
  120. package/test/less/errors/svg-gradient4.txt +4 -0
  121. package/test/less/errors/svg-gradient5.less +4 -0
  122. package/test/less/errors/svg-gradient5.txt +4 -0
  123. package/test/less/errors/svg-gradient6.less +4 -0
  124. package/test/less/errors/svg-gradient6.txt +4 -0
  125. package/test/less/filemanagerPlugin/colors.test +1 -0
  126. package/test/less/filemanagerPlugin/filemanager.less +4 -0
  127. package/test/less/functions.less +20 -2
  128. package/test/less/import/css-import.less +1 -0
  129. package/test/less/import/import-inline-invalid-css.less +1 -0
  130. package/test/less/import/import-reference.less +10 -1
  131. package/test/less/import/import-test-a.less +1 -0
  132. package/test/less/import-reference.less +4 -1
  133. package/test/less/import.less +1 -0
  134. package/test/less/include-path/include-path.less +3 -1
  135. package/test/less/include-path-string/include-path-string.less +3 -0
  136. package/test/less/legacy/legacy.less +14 -0
  137. package/test/less/mixins-args.less +48 -0
  138. package/test/less/mixins-guards.less +9 -0
  139. package/test/less/no-output.less +1 -1
  140. package/test/less/plugin/plugin-global.js +9 -0
  141. package/test/less/plugin/plugin-local.js +8 -0
  142. package/test/less/plugin/plugin-transitive.js +5 -0
  143. package/test/less/plugin/plugin-transitive.less +5 -0
  144. package/test/less/plugin.less +85 -0
  145. package/test/less/postProcessorPlugin/postProcessor.less +4 -0
  146. package/test/less/preProcessorPlugin/preProcessor.less +3 -0
  147. package/test/less/sourcemaps/imported.css +6 -6
  148. package/test/less/visitorPlugin/visitor.less +4 -0
  149. package/test/less-bom/charsets.less +3 -0
  150. package/test/less-bom/colors.less +98 -0
  151. package/test/less-bom/comments.less +102 -0
  152. package/test/less-bom/comments2.less +20 -0
  153. package/test/less-bom/compression/compression.less +36 -0
  154. package/test/less-bom/css-3.less +154 -0
  155. package/test/less-bom/css-escapes.less +33 -0
  156. package/test/less-bom/css-guards.less +103 -0
  157. package/test/less-bom/css.less +108 -0
  158. package/test/less-bom/debug/import/test.less +25 -0
  159. package/test/less-bom/debug/linenumbers.less +33 -0
  160. package/test/less-bom/detached-rulesets.less +112 -0
  161. package/test/less-bom/directives-bubling.less +142 -0
  162. package/test/less-bom/empty.less +1 -0
  163. package/test/less-bom/errors/add-mixed-units.less +3 -0
  164. package/test/less-bom/errors/add-mixed-units.txt +4 -0
  165. package/test/less-bom/errors/add-mixed-units2.less +3 -0
  166. package/test/less-bom/errors/add-mixed-units2.txt +4 -0
  167. package/test/less-bom/errors/at-rules-undefined-var.less +4 -0
  168. package/test/less-bom/errors/at-rules-undefined-var.txt +4 -0
  169. package/test/less-bom/errors/bad-variable-declaration1.less +1 -0
  170. package/test/less-bom/errors/bad-variable-declaration1.txt +2 -0
  171. package/test/less-bom/errors/color-func-invalid-color.less +3 -0
  172. package/test/less-bom/errors/color-func-invalid-color.txt +4 -0
  173. package/test/less-bom/errors/color-invalid-hex-code.less +3 -0
  174. package/test/less-bom/errors/color-invalid-hex-code.txt +4 -0
  175. package/test/less-bom/errors/color-invalid-hex-code2.less +3 -0
  176. package/test/less-bom/errors/color-invalid-hex-code2.txt +4 -0
  177. package/test/less-bom/errors/css-guard-default-func.less +4 -0
  178. package/test/less-bom/errors/css-guard-default-func.txt +4 -0
  179. package/test/less-bom/errors/detached-ruleset-1.less +6 -0
  180. package/test/less-bom/errors/detached-ruleset-1.txt +4 -0
  181. package/test/less-bom/errors/detached-ruleset-2.less +6 -0
  182. package/test/less-bom/errors/detached-ruleset-2.txt +4 -0
  183. package/test/less-bom/errors/detached-ruleset-3.less +4 -0
  184. package/test/less-bom/errors/detached-ruleset-3.txt +4 -0
  185. package/test/less-bom/errors/detached-ruleset-5.less +4 -0
  186. package/test/less-bom/errors/detached-ruleset-5.txt +3 -0
  187. package/test/less-bom/errors/detached-ruleset-6.less +5 -0
  188. package/test/less-bom/errors/detached-ruleset-6.txt +4 -0
  189. package/test/less-bom/errors/divide-mixed-units.less +3 -0
  190. package/test/less-bom/errors/divide-mixed-units.txt +4 -0
  191. package/test/less-bom/errors/extend-no-selector.less +3 -0
  192. package/test/less-bom/errors/extend-no-selector.txt +3 -0
  193. package/test/less-bom/errors/extend-not-at-end.less +3 -0
  194. package/test/less-bom/errors/extend-not-at-end.txt +3 -0
  195. package/test/less-bom/errors/import-malformed.less +1 -0
  196. package/test/less-bom/errors/import-malformed.txt +3 -0
  197. package/test/less-bom/errors/import-missing.less +6 -0
  198. package/test/less-bom/errors/import-missing.txt +3 -0
  199. package/test/less-bom/errors/import-no-semi.less +1 -0
  200. package/test/less-bom/errors/import-no-semi.txt +2 -0
  201. package/test/less-bom/errors/import-subfolder1.less +1 -0
  202. package/test/less-bom/errors/import-subfolder1.txt +3 -0
  203. package/test/less-bom/errors/import-subfolder2.less +1 -0
  204. package/test/less-bom/errors/import-subfolder2.txt +4 -0
  205. package/test/less-bom/errors/imports/import-subfolder1.less +1 -0
  206. package/test/less-bom/errors/imports/import-subfolder2.less +1 -0
  207. package/test/less-bom/errors/imports/import-test.less +4 -0
  208. package/test/less-bom/errors/imports/subfolder/mixin-not-defined.less +1 -0
  209. package/test/less-bom/errors/imports/subfolder/parse-error-curly-bracket.less +1 -0
  210. package/test/less-bom/errors/javascript-error.less +3 -0
  211. package/test/less-bom/errors/javascript-error.txt +4 -0
  212. package/test/less-bom/errors/javascript-undefined-var.less +3 -0
  213. package/test/less-bom/errors/javascript-undefined-var.txt +4 -0
  214. package/test/less-bom/errors/mixed-mixin-definition-args-1.less +6 -0
  215. package/test/less-bom/errors/mixed-mixin-definition-args-1.txt +4 -0
  216. package/test/less-bom/errors/mixed-mixin-definition-args-2.less +6 -0
  217. package/test/less-bom/errors/mixed-mixin-definition-args-2.txt +4 -0
  218. package/test/less-bom/errors/mixin-not-defined.less +11 -0
  219. package/test/less-bom/errors/mixin-not-defined.txt +3 -0
  220. package/test/less-bom/errors/mixin-not-matched.less +6 -0
  221. package/test/less-bom/errors/mixin-not-matched.txt +3 -0
  222. package/test/less-bom/errors/mixin-not-matched2.less +6 -0
  223. package/test/less-bom/errors/mixin-not-matched2.txt +3 -0
  224. package/test/less-bom/errors/mixin-not-visible-in-scope-1.less +9 -0
  225. package/test/less-bom/errors/mixin-not-visible-in-scope-1.txt +4 -0
  226. package/test/less-bom/errors/mixins-guards-default-func-1.less +9 -0
  227. package/test/less-bom/errors/mixins-guards-default-func-1.txt +4 -0
  228. package/test/less-bom/errors/mixins-guards-default-func-2.less +9 -0
  229. package/test/less-bom/errors/mixins-guards-default-func-2.txt +4 -0
  230. package/test/less-bom/errors/mixins-guards-default-func-3.less +9 -0
  231. package/test/less-bom/errors/mixins-guards-default-func-3.txt +4 -0
  232. package/test/less-bom/errors/multiple-guards-on-css-selectors.less +4 -0
  233. package/test/less-bom/errors/multiple-guards-on-css-selectors.txt +4 -0
  234. package/test/less-bom/errors/multiple-guards-on-css-selectors2.less +4 -0
  235. package/test/less-bom/errors/multiple-guards-on-css-selectors2.txt +4 -0
  236. package/test/less-bom/errors/multiply-mixed-units.less +7 -0
  237. package/test/less-bom/errors/multiply-mixed-units.txt +4 -0
  238. package/test/less-bom/errors/parens-error-1.less +3 -0
  239. package/test/less-bom/errors/parens-error-1.txt +4 -0
  240. package/test/less-bom/errors/parens-error-2.less +3 -0
  241. package/test/less-bom/errors/parens-error-2.txt +4 -0
  242. package/test/less-bom/errors/parens-error-3.less +3 -0
  243. package/test/less-bom/errors/parens-error-3.txt +4 -0
  244. package/test/less-bom/errors/parse-error-curly-bracket.less +4 -0
  245. package/test/less-bom/errors/parse-error-curly-bracket.txt +4 -0
  246. package/test/less-bom/errors/parse-error-media-no-block-1.less +5 -0
  247. package/test/less-bom/errors/parse-error-media-no-block-1.txt +3 -0
  248. package/test/less-bom/errors/parse-error-media-no-block-2.less +1 -0
  249. package/test/less-bom/errors/parse-error-media-no-block-2.txt +2 -0
  250. package/test/less-bom/errors/parse-error-media-no-block-3.less +4 -0
  251. package/test/less-bom/errors/parse-error-media-no-block-3.txt +3 -0
  252. package/test/less-bom/errors/parse-error-missing-bracket.less +2 -0
  253. package/test/less-bom/errors/parse-error-missing-bracket.txt +3 -0
  254. package/test/less-bom/errors/parse-error-missing-parens.less +5 -0
  255. package/test/less-bom/errors/parse-error-missing-parens.txt +3 -0
  256. package/test/less-bom/errors/parse-error-with-import.less +13 -0
  257. package/test/less-bom/errors/parse-error-with-import.txt +4 -0
  258. package/test/less-bom/errors/percentage-missing-space.less +3 -0
  259. package/test/less-bom/errors/percentage-missing-space.txt +4 -0
  260. package/test/less-bom/errors/percentage-non-number-argument.less +3 -0
  261. package/test/less-bom/errors/percentage-non-number-argument.txt +4 -0
  262. package/test/less-bom/errors/property-asterisk-only-name.less +3 -0
  263. package/test/less-bom/errors/property-asterisk-only-name.txt +4 -0
  264. package/test/less-bom/errors/property-ie5-hack.less +3 -0
  265. package/test/less-bom/errors/property-ie5-hack.txt +3 -0
  266. package/test/less-bom/errors/property-in-root.less +4 -0
  267. package/test/less-bom/errors/property-in-root.txt +4 -0
  268. package/test/less-bom/errors/property-in-root2.less +1 -0
  269. package/test/less-bom/errors/property-in-root2.txt +4 -0
  270. package/test/less-bom/errors/property-in-root3.less +4 -0
  271. package/test/less-bom/errors/property-in-root3.txt +3 -0
  272. package/test/less-bom/errors/property-interp-not-defined.less +1 -0
  273. package/test/less-bom/errors/property-interp-not-defined.txt +2 -0
  274. package/test/less-bom/errors/recursive-variable.less +1 -0
  275. package/test/less-bom/errors/recursive-variable.txt +2 -0
  276. package/test/less-bom/errors/single-character.less +1 -0
  277. package/test/less-bom/errors/single-character.txt +2 -0
  278. package/test/less-bom/errors/svg-gradient1.less +3 -0
  279. package/test/less-bom/errors/svg-gradient1.txt +4 -0
  280. package/test/less-bom/errors/svg-gradient2.less +3 -0
  281. package/test/less-bom/errors/svg-gradient2.txt +4 -0
  282. package/test/less-bom/errors/svg-gradient3.less +3 -0
  283. package/test/less-bom/errors/svg-gradient3.txt +4 -0
  284. package/test/less-bom/errors/svg-gradient4.less +4 -0
  285. package/test/less-bom/errors/svg-gradient4.txt +4 -0
  286. package/test/less-bom/errors/svg-gradient5.less +4 -0
  287. package/test/less-bom/errors/svg-gradient5.txt +4 -0
  288. package/test/less-bom/errors/svg-gradient6.less +4 -0
  289. package/test/less-bom/errors/svg-gradient6.txt +4 -0
  290. package/test/less-bom/errors/unit-function.less +3 -0
  291. package/test/less-bom/errors/unit-function.txt +4 -0
  292. package/test/less-bom/extend-chaining.less +91 -0
  293. package/test/less-bom/extend-clearfix.less +19 -0
  294. package/test/less-bom/extend-exact.less +46 -0
  295. package/test/less-bom/extend-media.less +24 -0
  296. package/test/less-bom/extend-nest.less +65 -0
  297. package/test/less-bom/extend-selector.less +99 -0
  298. package/test/less-bom/extend.less +81 -0
  299. package/test/less-bom/extract-and-length.less +133 -0
  300. package/test/less-bom/filemanagerPlugin/colors.test +1 -0
  301. package/test/less-bom/filemanagerPlugin/filemanager.less +4 -0
  302. package/test/less-bom/functions.less +232 -0
  303. package/test/less-bom/globalVars/extended.json +5 -0
  304. package/test/less-bom/globalVars/extended.less +10 -0
  305. package/test/less-bom/globalVars/simple.json +3 -0
  306. package/test/less-bom/globalVars/simple.less +3 -0
  307. package/test/less-bom/ie-filters.less +15 -0
  308. package/test/less-bom/import/css-import.less +1 -0
  309. package/test/less-bom/import/deeper/deeper-2/url-import-2.less +3 -0
  310. package/test/less-bom/import/deeper/deeper-2/url-import.less +1 -0
  311. package/test/less-bom/import/deeper/import-once-test-a.less +1 -0
  312. package/test/less-bom/import/deeper/url-import.less +1 -0
  313. package/test/less-bom/import/import-and-relative-paths-test.less +17 -0
  314. package/test/less-bom/import/import-charset-test.less +1 -0
  315. package/test/less-bom/import/import-inline-invalid-css.less +1 -0
  316. package/test/less-bom/import/import-interpolation.less +2 -0
  317. package/test/less-bom/import/import-interpolation2.less +5 -0
  318. package/test/less-bom/import/import-once-test-c.less +6 -0
  319. package/test/less-bom/import/import-reference.less +98 -0
  320. package/test/less-bom/import/import-test-a.less +5 -0
  321. package/test/less-bom/import/import-test-b.less +8 -0
  322. package/test/less-bom/import/import-test-c.less +6 -0
  323. package/test/less-bom/import/import-test-d.css +1 -0
  324. package/test/less-bom/import/import-test-e.less +2 -0
  325. package/test/less-bom/import/import-test-f.less +5 -0
  326. package/test/less-bom/import/imports/font.less +8 -0
  327. package/test/less-bom/import/imports/logo.less +6 -0
  328. package/test/less-bom/import/interpolation-vars.less +6 -0
  329. package/test/less-bom/import/invalid-css.less +1 -0
  330. package/test/less-bom/import/urls.less +1 -0
  331. package/test/less-bom/import-inline.less +3 -0
  332. package/test/less-bom/import-interpolation.less +8 -0
  333. package/test/less-bom/import-once.less +6 -0
  334. package/test/less-bom/import-reference.less +26 -0
  335. package/test/less-bom/import.less +31 -0
  336. package/test/less-bom/include-path/include-path.less +8 -0
  337. package/test/less-bom/include-path-string/include-path-string.less +3 -0
  338. package/test/less-bom/javascript.less +38 -0
  339. package/test/less-bom/lazy-eval.less +6 -0
  340. package/test/less-bom/legacy/legacy.less +21 -0
  341. package/test/less-bom/media.less +234 -0
  342. package/test/less-bom/merge.less +78 -0
  343. package/test/less-bom/mixins-args.less +263 -0
  344. package/test/less-bom/mixins-closure.less +26 -0
  345. package/test/less-bom/mixins-guards-default-func.less +195 -0
  346. package/test/less-bom/mixins-guards.less +280 -0
  347. package/test/less-bom/mixins-important.less +53 -0
  348. package/test/less-bom/mixins-interpolated.less +75 -0
  349. package/test/less-bom/mixins-named-args.less +36 -0
  350. package/test/less-bom/mixins-nested.less +22 -0
  351. package/test/less-bom/mixins-pattern.less +102 -0
  352. package/test/less-bom/mixins.less +145 -0
  353. package/test/less-bom/modifyVars/extended.json +5 -0
  354. package/test/less-bom/modifyVars/extended.less +11 -0
  355. package/test/less-bom/nested-gradient-with-svg-gradient/mixin-consumer.less +5 -0
  356. package/test/less-bom/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +15 -0
  357. package/test/less-bom/no-js-errors/no-js-errors.less +3 -0
  358. package/test/less-bom/no-js-errors/no-js-errors.txt +4 -0
  359. package/test/less-bom/no-output.less +2 -0
  360. package/test/less-bom/operations.less +62 -0
  361. package/test/less-bom/parens.less +45 -0
  362. package/test/less-bom/plugin/plugin-global.js +9 -0
  363. package/test/less-bom/plugin/plugin-local.js +8 -0
  364. package/test/less-bom/plugin/plugin-transitive.js +5 -0
  365. package/test/less-bom/plugin/plugin-transitive.less +5 -0
  366. package/test/less-bom/plugin.less +85 -0
  367. package/test/less-bom/postProcessorPlugin/postProcessor.less +4 -0
  368. package/test/less-bom/preProcessorPlugin/preProcessor.less +3 -0
  369. package/test/less-bom/property-name-interp.less +56 -0
  370. package/test/less-bom/rulesets.less +30 -0
  371. package/test/less-bom/scope.less +104 -0
  372. package/test/less-bom/selectors.less +184 -0
  373. package/test/less-bom/sourcemaps/basic.json +3 -0
  374. package/test/less-bom/sourcemaps/basic.less +27 -0
  375. package/test/less-bom/sourcemaps/imported.css +7 -0
  376. package/test/less-bom/sourcemaps-empty/empty.less +1 -0
  377. package/test/less-bom/sourcemaps-empty/var-defs.less +1 -0
  378. package/test/less-bom/static-urls/urls.less +33 -0
  379. package/test/less-bom/strict-units/strict-units.less +4 -0
  380. package/test/less-bom/strings.less +73 -0
  381. package/test/less-bom/url-args/urls.less +63 -0
  382. package/test/less-bom/urls.less +94 -0
  383. package/test/less-bom/variables-in-at-rules.less +20 -0
  384. package/test/less-bom/variables.less +119 -0
  385. package/test/less-bom/visitorPlugin/visitor.less +4 -0
  386. package/test/less-bom/whitespace.less +44 -0
  387. package/test/less-test.js +9 -5
  388. package/test/plugins/filemanager/index.js +19 -0
  389. package/test/plugins/postprocess/index.js +14 -0
  390. package/test/plugins/preprocess/index.js +19 -0
  391. package/test/plugins/visitor/index.js +24 -0
  392. package/test.less +1 -0
  393. package/.idea/codeStyleSettings.xml +0 -13
  394. package/.idea/encodings.xml +0 -5
  395. package/.idea/inspectionProfiles/Project_Default.xml +0 -8
  396. package/.idea/inspectionProfiles/profiles_settings.xml +0 -7
  397. package/.idea/jsLinters/jscs.xml +0 -4
  398. package/.idea/jsLinters/jshint.xml +0 -70
  399. package/.idea/libraries/sass_stdlib.xml +0 -8
  400. package/.idea/scopes/scope_settings.xml +0 -5
  401. package/projectFilesBackup/.idea/libraries/sass_stdlib.xml +0 -8
  402. package/test/less/errors/detached-ruleset-4.less +0 -5
  403. package/test/less/errors/detached-ruleset-4.txt +0 -4
  404. package/test/less/errors/parse-error-extra-parens.txt +0 -3
  405. package/test/sourcemaps/maps/import-map.map +0 -1
@@ -0,0 +1,154 @@
1
+ .comma-delimited {
2
+ text-shadow: -1px -1px 1px red, 6px 5px 5px yellow;
3
+ -moz-box-shadow: 0pt 0pt 2px rgba(255, 255, 255, 0.4) inset,
4
+ 0pt 4px 6px rgba(255, 255, 255, 0.4) inset;
5
+ -webkit-transform: rotate(-0.0000000001deg);
6
+ }
7
+ @font-face {
8
+ font-family: Headline;
9
+ unicode-range: U+??????, U+0???, U+0-7F, U+A5;
10
+ }
11
+ .other {
12
+ -moz-transform: translate(0, 11em) rotate(-90deg);
13
+ transform: rotateX(45deg);
14
+ }
15
+ .item[data-cra_zy-attr1b-ut3=bold] {
16
+ font-weight: bold;
17
+ }
18
+ p:not([class*="lead"]) {
19
+ color: black;
20
+ }
21
+
22
+ input[type="text"].class#id[attr=32]:not(1) {
23
+ color: white;
24
+ }
25
+
26
+ div#id.class[a=1][b=2].class:not(1) {
27
+ color: white;
28
+ }
29
+
30
+ ul.comma > li:not(:only-child)::after {
31
+ color: white;
32
+ }
33
+
34
+ ol.comma > li:nth-last-child(2)::after {
35
+ color: white;
36
+ }
37
+
38
+ li:nth-child(4n+1),
39
+ li:nth-child(-5n),
40
+ li:nth-child(-n+2) {
41
+ color: white;
42
+ }
43
+
44
+ a[href^="http://"] {
45
+ color: black;
46
+ }
47
+
48
+ a[href$="http://"] {
49
+ color: black;
50
+ }
51
+
52
+ form[data-disabled] {
53
+ color: black;
54
+ }
55
+
56
+ p::before {
57
+ color: black;
58
+ }
59
+
60
+ #issue322 {
61
+ -webkit-animation: anim2 7s infinite ease-in-out;
62
+ }
63
+
64
+ @-webkit-keyframes frames {
65
+ 0% { border: 1px }
66
+ 5.5% { border: 2px }
67
+ 100% { border: 3px }
68
+ }
69
+
70
+ @keyframes fontbulger1 {
71
+ to {
72
+ font-size: 15px;
73
+ }
74
+ from,to {
75
+ font-size: 12px;
76
+ }
77
+ 0%,100% {
78
+ font-size: 12px;
79
+ }
80
+ }
81
+
82
+ .units {
83
+ font: 1.2rem/2rem;
84
+ font: 8vw/9vw;
85
+ font: 10vh/12vh;
86
+ font: 12vm/15vm;
87
+ font: 12vmin/15vmin;
88
+ font: 1.2ch/1.5ch;
89
+ }
90
+
91
+ @supports ( box-shadow: 2px 2px 2px black ) or
92
+ ( -moz-box-shadow: 2px 2px 2px black ) {
93
+ .outline {
94
+ box-shadow: 2px 2px 2px black;
95
+ -moz-box-shadow: 2px 2px 2px black;
96
+ }
97
+ }
98
+
99
+ @-x-document url-prefix(""github.com"") {
100
+ h1 {
101
+ color: red;
102
+ }
103
+ }
104
+
105
+ @viewport {
106
+ font-size: 10px;
107
+ }
108
+ @namespace foo url(http://www.example.com);
109
+
110
+ foo|h1 { color: blue; }
111
+ foo|* { color: yellow; }
112
+ |h1 { color: red; }
113
+ *|h1 { color: green; }
114
+ h1 { color: green; }
115
+ .upper-test {
116
+ UpperCaseProperties: allowed;
117
+ }
118
+ @host {
119
+ div {
120
+ display: block;
121
+ }
122
+ }
123
+ ::distributed(input::placeholder) {
124
+ color: #b3b3b3;
125
+ }
126
+ .shadow ^ .dom,
127
+ body ^^ .shadow {
128
+ display: done;
129
+ }
130
+
131
+ :host(.sel .a),
132
+ :host-context(.sel .b),
133
+ .sel /deep/ .b,
134
+ ::content .sel {
135
+ type: shadow-dom;
136
+ }
137
+ /deep/ b {
138
+ c: 'd';
139
+ &[e]{
140
+ f: 'g';
141
+ }
142
+ }
143
+
144
+ #issue2066 {
145
+ background: url('/images/icon-team.svg') 0 0 / contain;
146
+ }
147
+ @counter-style triangle {
148
+ system: cyclic;
149
+ symbols: ‣;
150
+ suffix: " ";
151
+ }
152
+ @-ms-viewport{
153
+ //width: auto !important;
154
+ }
@@ -0,0 +1,33 @@
1
+ @ugly: fuchsia;
2
+
3
+ .escape\|random\|char {
4
+ color: red;
5
+ }
6
+
7
+ .mixin\!tUp {
8
+ font-weight: bold;
9
+ }
10
+
11
+ // class="404"
12
+ .\34 04 {
13
+ background: red;
14
+
15
+ strong {
16
+ color: @ugly;
17
+ .mixin\!tUp;
18
+ }
19
+ }
20
+
21
+ .trailingTest\+ {
22
+ color: red;
23
+ }
24
+
25
+ /* This hideous test of hideousness checks for the selector "blockquote" with various permutations of hex escapes */
26
+ \62\6c\6f \63 \6B \0071 \000075o\74 e {
27
+ color: silver;
28
+ }
29
+
30
+ [ng\:cloak],
31
+ ng\:form {
32
+ display: none;
33
+ }
@@ -0,0 +1,103 @@
1
+ 
2
+ .light when (lightness(@a) > 50%) {
3
+ color: green;
4
+ }
5
+ .dark when (lightness(@a) < 50%) {
6
+ color: orange;
7
+ }
8
+ @a: #ddd;
9
+
10
+ .see-the {
11
+ @a: #444; // this mirrors what mixins do - they evaluate the guards at the point of definition
12
+ .light();
13
+ .dark();
14
+ }
15
+
16
+ .hide-the {
17
+ .light();
18
+ .dark();
19
+ }
20
+
21
+ .multiple-conditions-1 when (@b = 1), (@c = 2), (@d = 3) {
22
+ color: red;
23
+ }
24
+
25
+ .multiple-conditions-2 when (@b = 1), (@c = 2), (@d = 2) {
26
+ color: blue;
27
+ }
28
+
29
+ @b: 2;
30
+ @c: 3;
31
+ @d: 3;
32
+
33
+ .inheritance when (@b = 2) {
34
+ .test {
35
+ color: black;
36
+ }
37
+ &:hover {
38
+ color: pink;
39
+ }
40
+ .hideme when (@b = 1) {
41
+ color: green;
42
+ }
43
+ & when (@b = 1) {
44
+ hideme: green;
45
+ }
46
+ }
47
+
48
+ .hideme when (@b = 1) {
49
+ .test {
50
+ color: black;
51
+ }
52
+ &:hover {
53
+ color: pink;
54
+ }
55
+ .hideme when (@b = 1) {
56
+ color: green;
57
+ }
58
+ }
59
+
60
+ & when (@b = 1) {
61
+ .hideme {
62
+ color: red;
63
+ }
64
+ }
65
+
66
+ .mixin-with-guard-inside(@colWidth) {
67
+ // selector with guard (applies also to & when() ...)
68
+ .clsWithGuard when (@colWidth <= 0) {
69
+ dispaly: none;
70
+ }
71
+ }
72
+
73
+ .mixin-with-guard-inside(0px);
74
+
75
+ .dont-split-me-up {
76
+ width: 1px;
77
+ & when (@c = 3) {
78
+ color: red;
79
+ }
80
+ & when (@c = 3) {
81
+ height: 1px;
82
+ }
83
+ + & when (@c = 3) { // creates invalid css but tests that we don't fold it in
84
+ sibling: true;
85
+ }
86
+ }
87
+
88
+ .scope-check when (@c = 3) {
89
+ @k: 1px;
90
+ & when (@c = 3) {
91
+ @k: 2px;
92
+ sub-prop: @k;
93
+ }
94
+ prop: @k;
95
+ }
96
+ .scope-check-2 {
97
+ .scope-check();
98
+ @k:4px;
99
+ }
100
+ .errors-if-called when (@c = never) {
101
+ .mixin-doesnt-exist();
102
+ }
103
+ a:hover when (2 = true) {5:-}
@@ -0,0 +1,108 @@
1
+ @charset "utf-8";
2
+ div { color: black; }
3
+ div { width: 99%; }
4
+
5
+ * {
6
+ min-width: 45em;
7
+ }
8
+
9
+ h1, h2 > a > p, h3 {
10
+ color: none;
11
+ }
12
+
13
+ div.class {
14
+ color: blue;
15
+ }
16
+
17
+ div#id {
18
+ color: green;
19
+ }
20
+
21
+ .class#id {
22
+ color: purple;
23
+ }
24
+
25
+ .one.two.three {
26
+ color: grey;
27
+ }
28
+
29
+ @media print {
30
+ * {
31
+ font-size: 3em;
32
+ }
33
+ }
34
+
35
+ @media screen {
36
+ * {
37
+ font-size: 10px;
38
+ }
39
+ }
40
+
41
+ @font-face {
42
+ font-family: 'Garamond Pro';
43
+ }
44
+
45
+ a:hover, a:link {
46
+ color: #999;
47
+ }
48
+
49
+ p, p:first-child {
50
+ text-transform: none;
51
+ }
52
+
53
+ q:lang(no) {
54
+ quotes: none;
55
+ }
56
+
57
+ p + h1 {
58
+ font-size: +2.2em;
59
+ }
60
+
61
+ #shorthands {
62
+ border: 1px solid #000;
63
+ font: 12px/16px Arial;
64
+ font: 100%/16px Arial;
65
+ margin: 1px 0;
66
+ padding: 0 auto;
67
+ }
68
+
69
+ #more-shorthands {
70
+ margin: 0;
71
+ padding: 1px 0 2px 0;
72
+ font: normal small/20px 'Trebuchet MS', Verdana, sans-serif;
73
+ font: 0/0 a;
74
+ border-radius: 5px / 10px;
75
+ }
76
+
77
+ .misc {
78
+ -moz-border-radius: 2px;
79
+ display: -moz-inline-stack;
80
+ width: .1em;
81
+ background-color: #009998;
82
+ background: -webkit-gradient(linear, left top, left bottom, from(red), to(blue));
83
+ margin: ;
84
+ .nested-multiple {
85
+ multiple-semi-colons: yes;;;;;;
86
+ };
87
+ filter: alpha(opacity=100);
88
+ width: auto\9;
89
+ }
90
+
91
+ #important {
92
+ color: red !important;
93
+ width: 100%!important;
94
+ height: 20px ! important;
95
+ }
96
+
97
+ .def-font(@name) {
98
+ @font-face {
99
+ font-family: @name
100
+ }
101
+ }
102
+
103
+ .def-font(font-a);
104
+ .def-font(font-b);
105
+
106
+ .æøå {
107
+ margin: 0;
108
+ }
@@ -0,0 +1,25 @@
1
+ @charset "ISO-8859-1";
2
+
3
+ .mixin_import1() {
4
+ @media all {
5
+ .tst {
6
+ color: black;
7
+ @media screen {
8
+ color: red;
9
+ .tst3 {
10
+ color: white;
11
+ }
12
+ }
13
+ }
14
+ }
15
+ }
16
+
17
+ .mixin_import2() {
18
+ .tst2 {
19
+ color: white;
20
+ }
21
+ }
22
+
23
+ .tst3 {
24
+ color: grey;
25
+ }
@@ -0,0 +1,33 @@
1
+ @charset "UTF-8";
2
+
3
+ @import "import/test.less";
4
+
5
+ .start() {
6
+ .test2 {
7
+ color: red;
8
+ }
9
+ }
10
+
11
+ .mix() {
12
+ color: black;
13
+ }
14
+
15
+ .test1 {
16
+ .mix();
17
+ }
18
+
19
+ .start();
20
+
21
+ .mixin_import1();
22
+
23
+ .mixin_import2();
24
+
25
+ @debug: 1;
26
+ & when (@debug = 1) {
27
+ .test {
28
+ color: red;
29
+ & when (@debug = 1) {
30
+ width: 2;
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,112 @@
1
+ @ruleset: {
2
+ color: black;
3
+ background: white;
4
+ };
5
+
6
+ @a: 1px;
7
+ .wrap-mixin(@ruleset) {
8
+ @a: hidden and if you see this in the output its a bug;
9
+ @b: visible;
10
+ @d: magic-frame; // same behaviour as mixin calls - falls back to this frame
11
+ .wrap-selector {
12
+ @c: visible;
13
+ @ruleset();
14
+ visible-one: @b;
15
+ visible-two: @c;
16
+ }
17
+ };
18
+
19
+ .wrap-mixin({
20
+ color: black;
21
+ one: @a;
22
+ @b: hidden and if you see this in the output its a bug;
23
+ @c: hidden and if you see this in the output its a bug;
24
+ four: @d;
25
+ });
26
+
27
+ .wrap-mixin(@ruleset: {
28
+ color: red;
29
+ });
30
+
31
+ .wrap-mixin(@ruleset);
32
+
33
+ .desktop-and-old-ie(@rules) {
34
+ @media screen and (min-width: 1200) { @rules(); }
35
+ html.lt-ie9 & { @rules(); }
36
+ }
37
+
38
+ header {
39
+ background: blue;
40
+
41
+ .desktop-and-old-ie({
42
+ background: red;
43
+ });
44
+ }
45
+
46
+ .wrap-mixin-calls-wrap(@ruleset) {
47
+ .wrap-mixin(@ruleset);
48
+ };
49
+
50
+ .wrap-mixin({
51
+ test: extra-wrap;
52
+ .wrap-mixin-calls-wrap({
53
+ test: wrapped-twice;
54
+ });
55
+ });
56
+
57
+ .wrap-mixin({
58
+ test-func: unit(90px);
59
+ test-arithmetic: unit((9+9), px);
60
+ });
61
+ // without mixins
62
+ @ruleset-2: {
63
+ b: 1;
64
+ };
65
+ .without-mixins {
66
+ @ruleset-2();
67
+ }
68
+ @my-ruleset: {
69
+ .my-selector {
70
+ @media tv {
71
+ background-color: black;
72
+ }
73
+ }
74
+ };
75
+ @media (orientation:portrait) {
76
+ @my-ruleset();
77
+ .wrap-media-mixin({
78
+ @media tv {
79
+ .triple-wrapped-mq {
80
+ triple: true;
81
+ }
82
+ }
83
+ });
84
+ }
85
+ .wrap-media-mixin(@ruleset) {
86
+ @media widescreen {
87
+ @media print {
88
+ @ruleset();
89
+ }
90
+ @ruleset();
91
+ }
92
+ @ruleset();
93
+ }
94
+ // unlocking mixins
95
+ @my-mixins: {
96
+ .mixin() {
97
+ test: test;
98
+ }
99
+ };
100
+ @my-mixins();
101
+ .a {
102
+ .mixin();
103
+ }
104
+ // as mixin argument default
105
+ .mixin-definition(@a: {}; @b: {default: works;};) {
106
+ @a();
107
+ @b();
108
+ }
109
+ .argument-default {
110
+ .mixin-definition();
111
+ .mixin-definition({direct: works;}; @b: {named: works;});
112
+ }
@@ -0,0 +1,142 @@
1
+ //simple case: @document
2
+ .parent {
3
+ color:green;
4
+
5
+ @document url-prefix() {
6
+ .child {
7
+ color:red;
8
+ }
9
+ }
10
+ }
11
+
12
+ //selectors joinings test
13
+ .top {
14
+ @supports (sandwitch: butter) {
15
+ .inside & {
16
+ property: value;
17
+ }
18
+ }
19
+ }
20
+
21
+ @supports (sandwitch: bread) {
22
+ .in1 {
23
+ .in2 {
24
+ property: value;
25
+ }
26
+ }
27
+ }
28
+
29
+ .top {
30
+ .inside & {
31
+ @supports (sandwitch: ham) {
32
+ property: value;
33
+ }
34
+ }
35
+ }
36
+
37
+ //combined with @font-face which has different kind of body
38
+ @supports (font-family: weirdFont) {
39
+ @font-face {
40
+ font-family: something;
41
+ src: made-up-url;
42
+ }
43
+ }
44
+
45
+ @font-face {
46
+ @supports not (-webkit-font-smoothing: subpixel-antialiased) {
47
+ font-family: something;
48
+ src: made-up-url;
49
+ }
50
+ }
51
+
52
+ //bubling through media
53
+ @supports (property: value) {
54
+ .outOfMedia & {
55
+ @media (max-size: 2px) {
56
+ @supports (whatever: something) {
57
+ property: value;
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ .onTop & {
64
+ @supports (property: value) {
65
+ @media (max-size: 2px) {
66
+ @supports (whatever: something) {
67
+ property: value;
68
+ }
69
+ }
70
+ }
71
+ }
72
+
73
+
74
+ //long combination of supports and media
75
+ @media print {
76
+ html {
77
+ in-html: visible;
78
+ @supports (upper: test) {
79
+ in-supports: first;
80
+ div {
81
+ in-div: visible;
82
+ @supports not (-webkit-font-smoothing: subpixel-antialiased) {
83
+ in-supports: second;
84
+ @media screen {
85
+ font-weight: 400;
86
+ nested {
87
+ property: value;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+
96
+ //another long combination of supports and media
97
+ @media print {
98
+ @media (max-size: 2px) {
99
+ .in1 {
100
+ stay: here;
101
+ @supports not (-webkit-font-smoothing: subpixel-antialiased) {
102
+ .in2 & {
103
+ @supports (whatever: something) {
104
+ property: value;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ //called from mixin
113
+ .nestedSupportsMixin() {
114
+ font-weight: 300;
115
+ -webkit-font-smoothing: subpixel-antialiased;
116
+ @supports not (-webkit-font-smoothing: subpixel-antialiased) {
117
+ font-weight: 400;
118
+ nested {
119
+ property: value;
120
+ }
121
+ }
122
+ }
123
+
124
+ html {
125
+ .nestedSupportsMixin;
126
+ }
127
+
128
+ // selectors should not propagate into all directive types
129
+ .onTop {
130
+ @font-face {
131
+ font-family: something;
132
+ src: made-up-url;
133
+ }
134
+
135
+ @keyframes "textscale" {
136
+ 0% { font-size : 1em; }
137
+ 100% { font-size : 2em; }
138
+ }
139
+
140
+ animation : "textscale";
141
+ font-family : something;
142
+ }
@@ -0,0 +1 @@
1
+ 
@@ -0,0 +1,3 @@
1
+ .a {
2
+ error: (1px + 3em);
3
+ }
@@ -0,0 +1,4 @@
1
+ SyntaxError: Incompatible units. Change the units or use the unit function. Bad units: 'px' and 'em'. in {path}add-mixed-units.less on line 2, column 3:
2
+ 1 .a {
3
+ 2 error: (1px + 3em);
4
+ 3 }
@@ -0,0 +1,3 @@
1
+ .a {
2
+ error: ((1px * 2px) + (3em * 3px));
3
+ }