@jesscss/fns 1.0.8-alpha.8 → 2.0.0-alpha.2

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 (625) hide show
  1. package/README.md +15 -5
  2. package/lib/__tests__/color-adjustments.test.d.ts +1 -0
  3. package/lib/__tests__/color-adjustments.test.js +137 -0
  4. package/lib/__tests__/color-adjustments.test.js.map +1 -0
  5. package/lib/__tests__/color-components.test.d.ts +1 -0
  6. package/lib/__tests__/color-components.test.js +76 -0
  7. package/lib/__tests__/color-components.test.js.map +1 -0
  8. package/lib/__tests__/color.test.d.ts +1 -0
  9. package/lib/__tests__/color.test.js +41 -0
  10. package/lib/__tests__/color.test.js.map +1 -0
  11. package/lib/__tests__/floor.test.d.ts +1 -0
  12. package/lib/__tests__/floor.test.js +38 -0
  13. package/lib/__tests__/floor.test.js.map +1 -0
  14. package/lib/__tests__/iif.d.ts +1 -0
  15. package/lib/__tests__/iif.js +38 -0
  16. package/lib/__tests__/iif.test.d.ts +1 -0
  17. package/lib/__tests__/iif.test.js +34 -0
  18. package/lib/__tests__/iif.test.js.map +1 -0
  19. package/lib/__tests__/math.d.ts +1 -0
  20. package/lib/__tests__/math.js +45 -0
  21. package/lib/__tests__/math.test.d.ts +1 -0
  22. package/lib/__tests__/math.test.js +46 -0
  23. package/lib/__tests__/math.test.js.map +1 -0
  24. package/lib/conversions.d.ts +46 -0
  25. package/lib/conversions.js +142 -0
  26. package/lib/conversions.js.map +1 -0
  27. package/lib/index.d.ts +1 -5
  28. package/lib/index.js +3 -17
  29. package/lib/index.js.map +1 -0
  30. package/lib/less/__tests__/advanced-blend-modes.test.d.ts +1 -0
  31. package/lib/less/__tests__/advanced-blend-modes.test.js +29 -0
  32. package/lib/less/__tests__/advanced-blend-modes.test.js.map +1 -0
  33. package/lib/less/__tests__/alpha-adjustments.test.d.ts +1 -0
  34. package/lib/less/__tests__/alpha-adjustments.test.js +36 -0
  35. package/lib/less/__tests__/alpha-adjustments.test.js.map +1 -0
  36. package/lib/less/__tests__/argb.test.d.ts +1 -0
  37. package/lib/less/__tests__/argb.test.js +15 -0
  38. package/lib/less/__tests__/argb.test.js.map +1 -0
  39. package/lib/less/__tests__/blend-modes.test.d.ts +1 -0
  40. package/lib/less/__tests__/blend-modes.test.js +27 -0
  41. package/lib/less/__tests__/blend-modes.test.js.map +1 -0
  42. package/lib/less/__tests__/contrast.test.d.ts +1 -0
  43. package/lib/less/__tests__/contrast.test.js +29 -0
  44. package/lib/less/__tests__/contrast.test.js.map +1 -0
  45. package/lib/less/__tests__/convert.test.d.ts +1 -0
  46. package/lib/less/__tests__/convert.test.js +25 -0
  47. package/lib/less/__tests__/convert.test.js.map +1 -0
  48. package/lib/less/__tests__/e.test.d.ts +1 -0
  49. package/lib/less/__tests__/e.test.js +12 -0
  50. package/lib/less/__tests__/e.test.js.map +1 -0
  51. package/lib/less/__tests__/extract.test.d.ts +1 -0
  52. package/lib/less/__tests__/extract.test.js +32 -0
  53. package/lib/less/__tests__/extract.test.js.map +1 -0
  54. package/lib/less/__tests__/format.test.d.ts +1 -0
  55. package/lib/less/__tests__/format.test.js +20 -0
  56. package/lib/less/__tests__/format.test.js.map +1 -0
  57. package/lib/less/__tests__/get-unit.test.d.ts +1 -0
  58. package/lib/less/__tests__/get-unit.test.js +15 -0
  59. package/lib/less/__tests__/get-unit.test.js.map +1 -0
  60. package/lib/less/__tests__/hsl-branches.test.d.ts +1 -0
  61. package/lib/less/__tests__/hsl-branches.test.js +27 -0
  62. package/lib/less/__tests__/hsl-branches.test.js.map +1 -0
  63. package/lib/less/__tests__/hsl-relative-errors.test.d.ts +1 -0
  64. package/lib/less/__tests__/hsl-relative-errors.test.js +97 -0
  65. package/lib/less/__tests__/hsl-relative-errors.test.js.map +1 -0
  66. package/lib/less/__tests__/hsla-fallback.test.d.ts +1 -0
  67. package/lib/less/__tests__/hsla-fallback.test.js +29 -0
  68. package/lib/less/__tests__/hsla-fallback.test.js.map +1 -0
  69. package/lib/less/__tests__/hsv-family.test.d.ts +1 -0
  70. package/lib/less/__tests__/hsv-family.test.js +43 -0
  71. package/lib/less/__tests__/hsv-family.test.js.map +1 -0
  72. package/lib/less/__tests__/isdefined.test.d.ts +1 -0
  73. package/lib/less/__tests__/isdefined.test.js +18 -0
  74. package/lib/less/__tests__/isdefined.test.js.map +1 -0
  75. package/lib/less/__tests__/isruleset.test.d.ts +1 -0
  76. package/lib/less/__tests__/isruleset.test.js +22 -0
  77. package/lib/less/__tests__/isruleset.test.js.map +1 -0
  78. package/lib/less/__tests__/length.test.d.ts +1 -0
  79. package/lib/less/__tests__/length.test.js +16 -0
  80. package/lib/less/__tests__/length.test.js.map +1 -0
  81. package/lib/less/__tests__/luma-luminance-hsv-channels.test.d.ts +1 -0
  82. package/lib/less/__tests__/luma-luminance-hsv-channels.test.js +35 -0
  83. package/lib/less/__tests__/luma-luminance-hsv-channels.test.js.map +1 -0
  84. package/lib/less/__tests__/max.test.d.ts +1 -0
  85. package/lib/less/__tests__/max.test.js +35 -0
  86. package/lib/less/__tests__/max.test.js.map +1 -0
  87. package/lib/less/__tests__/min.test.d.ts +1 -0
  88. package/lib/less/__tests__/min.test.js +37 -0
  89. package/lib/less/__tests__/min.test.js.map +1 -0
  90. package/lib/less/__tests__/mix.test.d.ts +1 -0
  91. package/lib/less/__tests__/mix.test.js +25 -0
  92. package/lib/less/__tests__/mix.test.js.map +1 -0
  93. package/lib/less/__tests__/mod.test.d.ts +1 -0
  94. package/lib/less/__tests__/mod.test.js +11 -0
  95. package/lib/less/__tests__/mod.test.js.map +1 -0
  96. package/lib/less/__tests__/percentage.test.d.ts +1 -0
  97. package/lib/less/__tests__/percentage.test.js +12 -0
  98. package/lib/less/__tests__/percentage.test.js.map +1 -0
  99. package/lib/less/__tests__/pow.test.d.ts +1 -0
  100. package/lib/less/__tests__/pow.test.js +11 -0
  101. package/lib/less/__tests__/pow.test.js.map +1 -0
  102. package/lib/less/__tests__/reexports-smoke.test.d.ts +1 -0
  103. package/lib/less/__tests__/reexports-smoke.test.js +26 -0
  104. package/lib/less/__tests__/reexports-smoke.test.js.map +1 -0
  105. package/lib/less/__tests__/replace.test.d.ts +1 -0
  106. package/lib/less/__tests__/replace.test.js +22 -0
  107. package/lib/less/__tests__/replace.test.js.map +1 -0
  108. package/lib/less/__tests__/rgb-relative-errors.test.d.ts +1 -0
  109. package/lib/less/__tests__/rgb-relative-errors.test.js +98 -0
  110. package/lib/less/__tests__/rgb-relative-errors.test.js.map +1 -0
  111. package/lib/less/__tests__/rgb-rgba-branches.test.d.ts +1 -0
  112. package/lib/less/__tests__/rgb-rgba-branches.test.js +49 -0
  113. package/lib/less/__tests__/rgb-rgba-branches.test.js.map +1 -0
  114. package/lib/less/__tests__/rgba-fallback.test.d.ts +1 -0
  115. package/lib/less/__tests__/rgba-fallback.test.js +29 -0
  116. package/lib/less/__tests__/rgba-fallback.test.js.map +1 -0
  117. package/lib/less/__tests__/shade.test.d.ts +1 -0
  118. package/lib/less/__tests__/shade.test.js +19 -0
  119. package/lib/less/__tests__/shade.test.js.map +1 -0
  120. package/lib/less/__tests__/spin.test.d.ts +1 -0
  121. package/lib/less/__tests__/spin.test.js +26 -0
  122. package/lib/less/__tests__/spin.test.js.map +1 -0
  123. package/lib/less/__tests__/tint.test.d.ts +1 -0
  124. package/lib/less/__tests__/tint.test.js +19 -0
  125. package/lib/less/__tests__/tint.test.js.map +1 -0
  126. package/lib/less/__tests__/types.test.d.ts +1 -0
  127. package/lib/less/__tests__/types.test.js +28 -0
  128. package/lib/less/__tests__/types.test.js.map +1 -0
  129. package/lib/less/__tests__/unit.test.d.ts +1 -0
  130. package/lib/less/__tests__/unit.test.js +17 -0
  131. package/lib/less/__tests__/unit.test.js.map +1 -0
  132. package/lib/less/abs.d.ts +7 -0
  133. package/lib/less/abs.js +8 -0
  134. package/lib/less/abs.js.map +1 -0
  135. package/lib/less/acos.d.ts +440 -0
  136. package/lib/less/acos.js +3 -0
  137. package/lib/less/acos.js.map +1 -0
  138. package/lib/less/alpha.d.ts +7 -0
  139. package/lib/less/alpha.js +8 -0
  140. package/lib/less/alpha.js.map +1 -0
  141. package/lib/less/argb.d.ts +441 -0
  142. package/lib/less/argb.js +17 -0
  143. package/lib/less/argb.js.map +1 -0
  144. package/lib/less/asin.d.ts +440 -0
  145. package/lib/less/asin.js +3 -0
  146. package/lib/less/asin.js.map +1 -0
  147. package/lib/less/atan.d.ts +440 -0
  148. package/lib/less/atan.js +3 -0
  149. package/lib/less/atan.js.map +1 -0
  150. package/lib/less/average.d.ts +601 -0
  151. package/lib/less/average.js +17 -0
  152. package/lib/less/average.js.map +1 -0
  153. package/lib/less/blue.d.ts +7 -0
  154. package/lib/less/blue.js +8 -0
  155. package/lib/less/blue.js.map +1 -0
  156. package/lib/less/ceil.d.ts +7 -0
  157. package/lib/less/ceil.js +8 -0
  158. package/lib/less/ceil.js.map +1 -0
  159. package/lib/less/color.d.ts +441 -0
  160. package/lib/less/color.js +33 -0
  161. package/lib/less/color.js.map +1 -0
  162. package/lib/less/contrast.d.ts +1427 -0
  163. package/lib/less/contrast.js +57 -0
  164. package/lib/less/contrast.js.map +1 -0
  165. package/lib/less/convert.d.ts +600 -0
  166. package/lib/less/convert.js +45 -0
  167. package/lib/less/convert.js.map +1 -0
  168. package/lib/less/cos.d.ts +440 -0
  169. package/lib/less/cos.js +3 -0
  170. package/lib/less/cos.js.map +1 -0
  171. package/lib/less/darken.d.ts +980 -0
  172. package/lib/less/darken.js +29 -0
  173. package/lib/less/darken.js.map +1 -0
  174. package/lib/less/desaturate.d.ts +980 -0
  175. package/lib/less/desaturate.js +29 -0
  176. package/lib/less/desaturate.js.map +1 -0
  177. package/lib/less/difference.d.ts +601 -0
  178. package/lib/less/difference.js +18 -0
  179. package/lib/less/difference.js.map +1 -0
  180. package/lib/less/e.d.ts +444 -0
  181. package/lib/less/e.js +17 -0
  182. package/lib/less/e.js.map +1 -0
  183. package/lib/less/each.d.ts +615 -0
  184. package/lib/less/each.js +64 -0
  185. package/lib/less/each.js.map +1 -0
  186. package/lib/less/exclusion.d.ts +601 -0
  187. package/lib/less/exclusion.js +18 -0
  188. package/lib/less/exclusion.js.map +1 -0
  189. package/lib/less/extract.d.ts +625 -0
  190. package/lib/less/extract.js +43 -0
  191. package/lib/less/extract.js.map +1 -0
  192. package/lib/less/fade.d.ts +600 -0
  193. package/lib/less/fade.js +28 -0
  194. package/lib/less/fade.js.map +1 -0
  195. package/lib/less/fadein.d.ts +980 -0
  196. package/lib/less/fadein.js +37 -0
  197. package/lib/less/fadein.js.map +1 -0
  198. package/lib/less/fadeout.d.ts +980 -0
  199. package/lib/less/fadeout.js +36 -0
  200. package/lib/less/fadeout.js.map +1 -0
  201. package/lib/less/floor.d.ts +7 -0
  202. package/lib/less/floor.js +8 -0
  203. package/lib/less/floor.js.map +1 -0
  204. package/lib/less/format.d.ts +1821 -0
  205. package/lib/less/format.js +44 -0
  206. package/lib/less/format.js.map +1 -0
  207. package/lib/less/get-unit.d.ts +441 -0
  208. package/lib/less/get-unit.js +11 -0
  209. package/lib/less/get-unit.js.map +1 -0
  210. package/lib/less/green.d.ts +7 -0
  211. package/lib/less/green.js +8 -0
  212. package/lib/less/green.js.map +1 -0
  213. package/lib/less/greyscale.d.ts +441 -0
  214. package/lib/less/greyscale.js +18 -0
  215. package/lib/less/greyscale.js.map +1 -0
  216. package/lib/less/hardlight.d.ts +601 -0
  217. package/lib/less/hardlight.js +19 -0
  218. package/lib/less/hardlight.js.map +1 -0
  219. package/lib/less/hsl.d.ts +1063 -0
  220. package/lib/less/hsl.js +257 -0
  221. package/lib/less/hsl.js.map +1 -0
  222. package/lib/less/hsla.d.ts +354 -0
  223. package/lib/less/hsla.js +31 -0
  224. package/lib/less/hsla.js.map +1 -0
  225. package/lib/less/hsv.d.ts +723 -0
  226. package/lib/less/hsv.js +20 -0
  227. package/lib/less/hsv.js.map +1 -0
  228. package/lib/less/hsva.d.ts +991 -0
  229. package/lib/less/hsva.js +53 -0
  230. package/lib/less/hsva.js.map +1 -0
  231. package/lib/less/hsvhue.d.ts +441 -0
  232. package/lib/less/hsvhue.js +11 -0
  233. package/lib/less/hsvhue.js.map +1 -0
  234. package/lib/less/hsvsaturation.d.ts +441 -0
  235. package/lib/less/hsvsaturation.js +12 -0
  236. package/lib/less/hsvsaturation.js.map +1 -0
  237. package/lib/less/hsvvalue.d.ts +441 -0
  238. package/lib/less/hsvvalue.js +11 -0
  239. package/lib/less/hsvvalue.js.map +1 -0
  240. package/lib/less/hue.d.ts +441 -0
  241. package/lib/less/hue.js +11 -0
  242. package/lib/less/hue.js.map +1 -0
  243. package/lib/less/iif.d.ts +1033 -0
  244. package/lib/less/iif.js +30 -0
  245. package/lib/less/iif.js.map +1 -0
  246. package/lib/less/index.d.ts +75 -0
  247. package/lib/less/index.js +76 -0
  248. package/lib/less/index.js.map +1 -0
  249. package/lib/less/isdefined.d.ts +466 -0
  250. package/lib/less/isdefined.js +21 -0
  251. package/lib/less/isdefined.js.map +1 -0
  252. package/lib/less/isruleset.d.ts +466 -0
  253. package/lib/less/isruleset.js +24 -0
  254. package/lib/less/isruleset.js.map +1 -0
  255. package/lib/less/length.d.ts +441 -0
  256. package/lib/less/length.js +21 -0
  257. package/lib/less/length.js.map +1 -0
  258. package/lib/less/lighten.d.ts +980 -0
  259. package/lib/less/lighten.js +29 -0
  260. package/lib/less/lighten.js.map +1 -0
  261. package/lib/less/lightness.d.ts +441 -0
  262. package/lib/less/lightness.js +11 -0
  263. package/lib/less/lightness.js.map +1 -0
  264. package/lib/less/luma.d.ts +441 -0
  265. package/lib/less/luma.js +14 -0
  266. package/lib/less/luma.js.map +1 -0
  267. package/lib/less/luminance.d.ts +441 -0
  268. package/lib/less/luminance.js +16 -0
  269. package/lib/less/luminance.js.map +1 -0
  270. package/lib/less/math-factory.d.ts +774 -0
  271. package/lib/less/math-factory.js +18 -0
  272. package/lib/less/math-factory.js.map +1 -0
  273. package/lib/less/mathv1.d.ts +0 -0
  274. package/lib/less/mathv1.js +209 -0
  275. package/lib/less/mathv1.js.map +1 -0
  276. package/lib/less/max.d.ts +466 -0
  277. package/lib/less/max.js +85 -0
  278. package/lib/less/max.js.map +1 -0
  279. package/lib/less/min.d.ts +466 -0
  280. package/lib/less/min.js +85 -0
  281. package/lib/less/min.js.map +1 -0
  282. package/lib/less/mix.d.ts +980 -0
  283. package/lib/less/mix.js +39 -0
  284. package/lib/less/mix.js.map +1 -0
  285. package/lib/less/mod.d.ts +600 -0
  286. package/lib/less/mod.js +16 -0
  287. package/lib/less/mod.js.map +1 -0
  288. package/lib/less/multiply.d.ts +601 -0
  289. package/lib/less/multiply.js +18 -0
  290. package/lib/less/multiply.js.map +1 -0
  291. package/lib/less/negation.d.ts +601 -0
  292. package/lib/less/negation.js +18 -0
  293. package/lib/less/negation.js.map +1 -0
  294. package/lib/less/overlay.d.ts +601 -0
  295. package/lib/less/overlay.js +23 -0
  296. package/lib/less/overlay.js.map +1 -0
  297. package/lib/less/percentage.d.ts +441 -0
  298. package/lib/less/percentage.js +11 -0
  299. package/lib/less/percentage.js.map +1 -0
  300. package/lib/less/pi.d.ts +332 -0
  301. package/lib/less/pi.js +3 -0
  302. package/lib/less/pi.js.map +1 -0
  303. package/lib/less/pow.d.ts +600 -0
  304. package/lib/less/pow.js +16 -0
  305. package/lib/less/pow.js.map +1 -0
  306. package/lib/less/range.d.ts +1038 -0
  307. package/lib/less/range.js +40 -0
  308. package/lib/less/range.js.map +1 -0
  309. package/lib/less/red.d.ts +7 -0
  310. package/lib/less/red.js +8 -0
  311. package/lib/less/red.js.map +1 -0
  312. package/lib/less/replace.d.ts +1264 -0
  313. package/lib/less/replace.js +32 -0
  314. package/lib/less/replace.js.map +1 -0
  315. package/lib/less/rgb.d.ts +1063 -0
  316. package/lib/less/rgb.js +266 -0
  317. package/lib/less/rgb.js.map +1 -0
  318. package/lib/less/rgba.d.ts +354 -0
  319. package/lib/less/rgba.js +31 -0
  320. package/lib/less/rgba.js.map +1 -0
  321. package/lib/less/round.d.ts +7 -0
  322. package/lib/less/round.js +8 -0
  323. package/lib/less/round.js.map +1 -0
  324. package/lib/less/saturate.d.ts +980 -0
  325. package/lib/less/saturate.js +29 -0
  326. package/lib/less/saturate.js.map +1 -0
  327. package/lib/less/saturation.d.ts +441 -0
  328. package/lib/less/saturation.js +12 -0
  329. package/lib/less/saturation.js.map +1 -0
  330. package/lib/less/screen.d.ts +601 -0
  331. package/lib/less/screen.js +18 -0
  332. package/lib/less/screen.js.map +1 -0
  333. package/lib/less/shade.d.ts +600 -0
  334. package/lib/less/shade.js +26 -0
  335. package/lib/less/shade.js.map +1 -0
  336. package/lib/less/sin.d.ts +440 -0
  337. package/lib/less/sin.js +3 -0
  338. package/lib/less/sin.js.map +1 -0
  339. package/lib/less/softlight.d.ts +601 -0
  340. package/lib/less/softlight.js +25 -0
  341. package/lib/less/softlight.js.map +1 -0
  342. package/lib/less/spin.d.ts +600 -0
  343. package/lib/less/spin.js +22 -0
  344. package/lib/less/spin.js.map +1 -0
  345. package/lib/less/sqrt.d.ts +440 -0
  346. package/lib/less/sqrt.js +3 -0
  347. package/lib/less/sqrt.js.map +1 -0
  348. package/lib/less/tan.d.ts +440 -0
  349. package/lib/less/tan.js +3 -0
  350. package/lib/less/tan.js.map +1 -0
  351. package/lib/less/tint.d.ts +600 -0
  352. package/lib/less/tint.js +26 -0
  353. package/lib/less/tint.js.map +1 -0
  354. package/lib/less/types.d.ts +4112 -0
  355. package/lib/less/types.js +53 -0
  356. package/lib/less/types.js.map +1 -0
  357. package/lib/less/unit.d.ts +753 -0
  358. package/lib/less/unit.js +20 -0
  359. package/lib/less/unit.js.map +1 -0
  360. package/lib/sass/__tests__/hsl-channels.test.d.ts +1 -0
  361. package/lib/sass/__tests__/hsl-channels.test.js +85 -0
  362. package/lib/sass/__tests__/hsl-channels.test.js.map +1 -0
  363. package/lib/sass/__tests__/list-advanced.test.d.ts +1 -0
  364. package/lib/sass/__tests__/list-advanced.test.js +157 -0
  365. package/lib/sass/__tests__/list-advanced.test.js.map +1 -0
  366. package/lib/sass/__tests__/list-functions.test.d.ts +1 -0
  367. package/lib/sass/__tests__/list-functions.test.js +153 -0
  368. package/lib/sass/__tests__/list-functions.test.js.map +1 -0
  369. package/lib/sass/__tests__/map-functions.test.d.ts +1 -0
  370. package/lib/sass/__tests__/map-functions.test.js +208 -0
  371. package/lib/sass/__tests__/map-functions.test.js.map +1 -0
  372. package/lib/sass/__tests__/math-functions.test.d.ts +1 -0
  373. package/lib/sass/__tests__/math-functions.test.js +73 -0
  374. package/lib/sass/__tests__/math-functions.test.js.map +1 -0
  375. package/lib/sass/__tests__/math-remaining.test.d.ts +1 -0
  376. package/lib/sass/__tests__/math-remaining.test.js +113 -0
  377. package/lib/sass/__tests__/math-remaining.test.js.map +1 -0
  378. package/lib/sass/__tests__/opacity.test.d.ts +1 -0
  379. package/lib/sass/__tests__/opacity.test.js +53 -0
  380. package/lib/sass/__tests__/opacity.test.js.map +1 -0
  381. package/lib/sass/__tests__/string-functions.test.d.ts +1 -0
  382. package/lib/sass/__tests__/string-functions.test.js +109 -0
  383. package/lib/sass/__tests__/string-functions.test.js.map +1 -0
  384. package/lib/sass/__tests__/string-remaining.test.d.ts +1 -0
  385. package/lib/sass/__tests__/string-remaining.test.js +131 -0
  386. package/lib/sass/__tests__/string-remaining.test.js.map +1 -0
  387. package/lib/sass/adjust-hue.d.ts +10 -0
  388. package/lib/sass/adjust-hue.js +11 -0
  389. package/lib/sass/adjust-hue.js.map +1 -0
  390. package/lib/sass/color/index.d.ts +22 -0
  391. package/lib/sass/color/index.js +43 -0
  392. package/lib/sass/color/index.js.map +1 -0
  393. package/lib/sass/color/red.d.ts +7 -0
  394. package/lib/sass/color/red.js +8 -0
  395. package/lib/sass/color/red.js.map +1 -0
  396. package/lib/sass/compatible.d.ts +610 -0
  397. package/lib/sass/compatible.js +62 -0
  398. package/lib/sass/compatible.js.map +1 -0
  399. package/lib/sass/complement.d.ts +450 -0
  400. package/lib/sass/complement.js +28 -0
  401. package/lib/sass/complement.js.map +1 -0
  402. package/lib/sass/fade-in.d.ts +10 -0
  403. package/lib/sass/fade-in.js +11 -0
  404. package/lib/sass/fade-in.js.map +1 -0
  405. package/lib/sass/fade-out.d.ts +10 -0
  406. package/lib/sass/fade-out.js +11 -0
  407. package/lib/sass/fade-out.js.map +1 -0
  408. package/lib/sass/grayscale.d.ts +10 -0
  409. package/lib/sass/grayscale.js +11 -0
  410. package/lib/sass/grayscale.js.map +1 -0
  411. package/lib/sass/hue.d.ts +450 -0
  412. package/lib/sass/hue.js +24 -0
  413. package/lib/sass/hue.js.map +1 -0
  414. package/lib/sass/ie-hex-str.d.ts +10 -0
  415. package/lib/sass/ie-hex-str.js +11 -0
  416. package/lib/sass/ie-hex-str.js.map +1 -0
  417. package/lib/sass/index.d.ts +64 -0
  418. package/lib/sass/index.js +90 -0
  419. package/lib/sass/index.js.map +1 -0
  420. package/lib/sass/invert.d.ts +813 -0
  421. package/lib/sass/invert.js +36 -0
  422. package/lib/sass/invert.js.map +1 -0
  423. package/lib/sass/lightness.d.ts +450 -0
  424. package/lib/sass/lightness.js +24 -0
  425. package/lib/sass/lightness.js.map +1 -0
  426. package/lib/sass/list/append.d.ts +989 -0
  427. package/lib/sass/list/append.js +54 -0
  428. package/lib/sass/list/append.js.map +1 -0
  429. package/lib/sass/list/index.d.ts +21 -0
  430. package/lib/sass/list/index.js +24 -0
  431. package/lib/sass/list/index.js.map +1 -0
  432. package/lib/sass/list/is-bracketed.d.ts +450 -0
  433. package/lib/sass/list/is-bracketed.js +30 -0
  434. package/lib/sass/list/is-bracketed.js.map +1 -0
  435. package/lib/sass/list/join.d.ts +1354 -0
  436. package/lib/sass/list/join.js +66 -0
  437. package/lib/sass/list/join.js.map +1 -0
  438. package/lib/sass/list/length.d.ts +450 -0
  439. package/lib/sass/list/length.js +22 -0
  440. package/lib/sass/list/length.js.map +1 -0
  441. package/lib/sass/list/list-index.d.ts +609 -0
  442. package/lib/sass/list/list-index.js +49 -0
  443. package/lib/sass/list/list-index.js.map +1 -0
  444. package/lib/sass/list/nth.d.ts +634 -0
  445. package/lib/sass/list/nth.js +36 -0
  446. package/lib/sass/list/nth.js.map +1 -0
  447. package/lib/sass/list/separator.d.ts +451 -0
  448. package/lib/sass/list/separator.js +36 -0
  449. package/lib/sass/list/separator.js.map +1 -0
  450. package/lib/sass/list/set-nth.d.ts +756 -0
  451. package/lib/sass/list/set-nth.js +42 -0
  452. package/lib/sass/list/set-nth.js.map +1 -0
  453. package/lib/sass/list/zip.d.ts +474 -0
  454. package/lib/sass/list/zip.js +46 -0
  455. package/lib/sass/list/zip.js.map +1 -0
  456. package/lib/sass/map/get.d.ts +757 -0
  457. package/lib/sass/map/get.js +79 -0
  458. package/lib/sass/map/get.js.map +1 -0
  459. package/lib/sass/map/has-key.d.ts +757 -0
  460. package/lib/sass/map/has-key.js +76 -0
  461. package/lib/sass/map/has-key.js.map +1 -0
  462. package/lib/sass/map/index.d.ts +19 -0
  463. package/lib/sass/map/index.js +23 -0
  464. package/lib/sass/map/index.js.map +1 -0
  465. package/lib/sass/map/keys.d.ts +449 -0
  466. package/lib/sass/map/keys.js +39 -0
  467. package/lib/sass/map/keys.js.map +1 -0
  468. package/lib/sass/map/merge.d.ts +608 -0
  469. package/lib/sass/map/merge.js +54 -0
  470. package/lib/sass/map/merge.js.map +1 -0
  471. package/lib/sass/map/remove.d.ts +633 -0
  472. package/lib/sass/map/remove.js +41 -0
  473. package/lib/sass/map/remove.js.map +1 -0
  474. package/lib/sass/map/set.d.ts +731 -0
  475. package/lib/sass/map/set.js +72 -0
  476. package/lib/sass/map/set.js.map +1 -0
  477. package/lib/sass/map/values.d.ts +449 -0
  478. package/lib/sass/map/values.js +30 -0
  479. package/lib/sass/map/values.js.map +1 -0
  480. package/lib/sass/math/abs.d.ts +7 -0
  481. package/lib/sass/math/abs.js +8 -0
  482. package/lib/sass/math/abs.js.map +1 -0
  483. package/lib/sass/math/index.d.ts +18 -0
  484. package/lib/sass/math/index.js +43 -0
  485. package/lib/sass/math/index.js.map +1 -0
  486. package/lib/sass/opacify.d.ts +11 -0
  487. package/lib/sass/opacify.js +12 -0
  488. package/lib/sass/opacify.js.map +1 -0
  489. package/lib/sass/opacity.d.ts +451 -0
  490. package/lib/sass/opacity.js +33 -0
  491. package/lib/sass/opacity.js.map +1 -0
  492. package/lib/sass/percentage.d.ts +449 -0
  493. package/lib/sass/percentage.js +26 -0
  494. package/lib/sass/percentage.js.map +1 -0
  495. package/lib/sass/quote.d.ts +449 -0
  496. package/lib/sass/quote.js +27 -0
  497. package/lib/sass/quote.js.map +1 -0
  498. package/lib/sass/random.d.ts +534 -0
  499. package/lib/sass/random.js +37 -0
  500. package/lib/sass/random.js.map +1 -0
  501. package/lib/sass/saturation.d.ts +450 -0
  502. package/lib/sass/saturation.js +24 -0
  503. package/lib/sass/saturation.js.map +1 -0
  504. package/lib/sass/str-index.d.ts +609 -0
  505. package/lib/sass/str-index.js +34 -0
  506. package/lib/sass/str-index.js.map +1 -0
  507. package/lib/sass/str-insert.d.ts +756 -0
  508. package/lib/sass/str-insert.js +61 -0
  509. package/lib/sass/str-insert.js.map +1 -0
  510. package/lib/sass/str-slice.d.ts +1039 -0
  511. package/lib/sass/str-slice.js +95 -0
  512. package/lib/sass/str-slice.js.map +1 -0
  513. package/lib/sass/string/index.d.ts +18 -0
  514. package/lib/sass/string/index.js +25 -0
  515. package/lib/sass/string/index.js.map +1 -0
  516. package/lib/sass/string/length.d.ts +450 -0
  517. package/lib/sass/string/length.js +32 -0
  518. package/lib/sass/string/length.js.map +1 -0
  519. package/lib/sass/to-lower-case.d.ts +449 -0
  520. package/lib/sass/to-lower-case.js +23 -0
  521. package/lib/sass/to-lower-case.js.map +1 -0
  522. package/lib/sass/to-upper-case.d.ts +449 -0
  523. package/lib/sass/to-upper-case.js +23 -0
  524. package/lib/sass/to-upper-case.js.map +1 -0
  525. package/lib/sass/transparentize.d.ts +11 -0
  526. package/lib/sass/transparentize.js +12 -0
  527. package/lib/sass/transparentize.js.map +1 -0
  528. package/lib/sass/unique-id.d.ts +341 -0
  529. package/lib/sass/unique-id.js +23 -0
  530. package/lib/sass/unique-id.js.map +1 -0
  531. package/lib/sass/unit.d.ts +762 -0
  532. package/lib/sass/unit.js +37 -0
  533. package/lib/sass/unit.js.map +1 -0
  534. package/lib/sass/unitless.d.ts +450 -0
  535. package/lib/sass/unitless.js +23 -0
  536. package/lib/sass/unitless.js.map +1 -0
  537. package/lib/sass/unquote.d.ts +449 -0
  538. package/lib/sass/unquote.js +27 -0
  539. package/lib/sass/unquote.js.map +1 -0
  540. package/lib/shared/color/alpha.d.ts +441 -0
  541. package/lib/shared/color/alpha.js +10 -0
  542. package/lib/shared/color/alpha.js.map +1 -0
  543. package/lib/shared/color/blue.d.ts +441 -0
  544. package/lib/shared/color/blue.js +10 -0
  545. package/lib/shared/color/blue.js.map +1 -0
  546. package/lib/shared/color/green.d.ts +441 -0
  547. package/lib/shared/color/green.js +10 -0
  548. package/lib/shared/color/green.js.map +1 -0
  549. package/lib/shared/color/red.d.ts +441 -0
  550. package/lib/shared/color/red.js +10 -0
  551. package/lib/shared/color/red.js.map +1 -0
  552. package/lib/shared/index.d.ts +16 -0
  553. package/lib/shared/index.js +19 -0
  554. package/lib/shared/index.js.map +1 -0
  555. package/lib/shared/math/__tests__/max.test.d.ts +1 -0
  556. package/lib/shared/math/__tests__/max.test.js +12 -0
  557. package/lib/shared/math/__tests__/max.test.js.map +1 -0
  558. package/lib/shared/math/__tests__/min.test.d.ts +1 -0
  559. package/lib/shared/math/__tests__/min.test.js +12 -0
  560. package/lib/shared/math/__tests__/min.test.js.map +1 -0
  561. package/lib/shared/math/__tests__/round.test.d.ts +1 -0
  562. package/lib/shared/math/__tests__/round.test.js +10 -0
  563. package/lib/shared/math/__tests__/round.test.js.map +1 -0
  564. package/lib/shared/math/abs.d.ts +441 -0
  565. package/lib/shared/math/abs.js +11 -0
  566. package/lib/shared/math/abs.js.map +1 -0
  567. package/lib/shared/math/ceil.d.ts +441 -0
  568. package/lib/shared/math/ceil.js +11 -0
  569. package/lib/shared/math/ceil.js.map +1 -0
  570. package/lib/shared/math/floor.d.ts +441 -0
  571. package/lib/shared/math/floor.js +11 -0
  572. package/lib/shared/math/floor.js.map +1 -0
  573. package/lib/shared/math/max.d.ts +469 -0
  574. package/lib/shared/math/max.js +22 -0
  575. package/lib/shared/math/max.js.map +1 -0
  576. package/lib/shared/math/min.d.ts +469 -0
  577. package/lib/shared/math/min.js +22 -0
  578. package/lib/shared/math/min.js.map +1 -0
  579. package/lib/shared/math/round.d.ts +778 -0
  580. package/lib/shared/math/round.js +17 -0
  581. package/lib/shared/math/round.js.map +1 -0
  582. package/lib/util/colorHelper.d.ts +2 -0
  583. package/lib/util/colorHelper.js +32 -0
  584. package/lib/util/colorHelper.js.map +1 -0
  585. package/lib/util/get-color-func-values.d.ts +5 -0
  586. package/lib/util/get-color-func-values.js +28 -0
  587. package/lib/util/get-color-func-values.js.map +1 -0
  588. package/lib/util/get-hsla.d.ts +10 -0
  589. package/lib/util/get-hsla.js +38 -0
  590. package/lib/util/get-hsla.js.map +1 -0
  591. package/lib/util/get-luma.d.ts +2 -0
  592. package/lib/util/get-luma.js +10 -0
  593. package/lib/util/get-luma.js.map +1 -0
  594. package/lib/util/index.d.ts +5 -0
  595. package/lib/util/index.js +17 -0
  596. package/lib/util/index.js.map +1 -0
  597. package/lib/util/mathHelper.d.ts +4 -0
  598. package/lib/util/mathHelper.js +45 -0
  599. package/lib/util/mathHelper.js.map +1 -0
  600. package/lib/util/number.d.ts +4 -0
  601. package/lib/util/number.js +23 -0
  602. package/lib/util/number.js.map +1 -0
  603. package/lib/util/relative-color.d.ts +54 -0
  604. package/lib/util/relative-color.js +268 -0
  605. package/lib/util/relative-color.js.map +1 -0
  606. package/lib/util/serialize-node.d.ts +2 -0
  607. package/lib/util/serialize-node.js +8 -0
  608. package/lib/util/serialize-node.js.map +1 -0
  609. package/lib/util/to-hsl.d.ts +7 -0
  610. package/lib/util/to-hsl.js +6 -0
  611. package/lib/util/to-hsl.js.map +1 -0
  612. package/lib/util/to-hsv.d.ts +7 -0
  613. package/lib/util/to-hsv.js +73 -0
  614. package/lib/util/to-hsv.js.map +1 -0
  615. package/package.json +39 -16
  616. package/lib/color-blending.d.ts +0 -9
  617. package/lib/color-blending.js +0 -83
  618. package/lib/color.d.ts +0 -42
  619. package/lib/color.js +0 -407
  620. package/lib/each.d.ts +0 -14
  621. package/lib/each.js +0 -35
  622. package/lib/iif.d.ts +0 -4
  623. package/lib/iif.js +0 -10
  624. package/lib/math.d.ts +0 -13
  625. package/lib/math.js +0 -199
@@ -0,0 +1,17 @@
1
+ import { Dimension, defineFunction } from '@jesscss/core';
2
+ import { mathHelper } from '../../util/mathHelper.js';
3
+ import lodashRound from 'lodash-es/round.js';
4
+ export default defineFunction('round', function (value, precision = 0) {
5
+ return mathHelper(lodashRound, ['value', 'precision'], undefined, value, precision);
6
+ }, {
7
+ params: [{
8
+ name: 'value',
9
+ type: [Dimension, 'number']
10
+ }, {
11
+ name: 'precision',
12
+ type: [Dimension, 'number'],
13
+ optional: true,
14
+ default: 0
15
+ }]
16
+ });
17
+ //# sourceMappingURL=round.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/shared/math/round.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,eAAe,cAAc,CAC3B,OAAO,EACP,UAAS,KAAyB,EAAE,YAAgC,CAAC;IACnE,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACtF,CAAC,EACD;IACE,MAAM,EAAE,CAAC;YACP,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC5B,EAAE;YACD,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC3B,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC;SACX,CAAC;CACH,CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Color } from '@jesscss/core';
2
+ export declare function colorBlend(mode: (c1: number, c2: number) => number, color1: Color, color2: Color): Color;
@@ -0,0 +1,32 @@
1
+ import { Color } from '@jesscss/core';
2
+ // Color Blending
3
+ // ref: http://www.w3.org/TR/compositing-1
4
+ export function colorBlend(mode, color1, color2) {
5
+ if (!(color1 instanceof Color) || !(color2 instanceof Color)) {
6
+ throw new Error('Both arguments must be colors.');
7
+ }
8
+ // result
9
+ const ab = color1.alpha;
10
+ let cb; // backdrop
11
+ let cs; // source
12
+ const as = color2.alpha;
13
+ let cr;
14
+ const rgba = [];
15
+ const ar = as + ab * (1 - as);
16
+ for (let i = 0; i < 3; i++) {
17
+ cb = color1.rgb[i] / 255;
18
+ cs = color2.rgb[i] / 255;
19
+ cr = mode(cb, cs);
20
+ if (ar) {
21
+ cr = (as * cs + ab * (cb
22
+ - as * (cb + cs - cr))) / ar;
23
+ }
24
+ rgba[i] = cr * 255;
25
+ }
26
+ rgba[3] = ar;
27
+ const out = new Color(rgba);
28
+ // Preserve color1 style for blend outputs (Less-like form continuity).
29
+ out.options.format = color1.options.format;
30
+ return out;
31
+ }
32
+ //# sourceMappingURL=colorHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorHelper.js","sourceRoot":"","sources":["../../src/util/colorHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,iBAAiB;AACjB,0CAA0C;AAC1C,MAAM,UAAU,UAAU,CAAC,IAAwC,EAAE,MAAa,EAAE,MAAa;IAC/F,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,SAAS;IACT,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAExB,IAAI,EAAU,CAAC,CAAC,WAAW;IAC3B,IAAI,EAAU,CAAC,CAAC,SAAS;IACzB,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAExB,IAAI,EAAU,CAAC;IACf,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC;QAC1B,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC;QAC1B,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;kBACpB,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAEb,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,uEAAuE;IACvE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type Dimension, Sequence } from '@jesscss/core';
2
+ /**
3
+ * Allows for comma-less syntax
4
+ */
5
+ export declare function getColorFunctionValues(one: Sequence | Dimension, two: Dimension, three: Dimension): [number, number, number, number];
@@ -0,0 +1,28 @@
1
+ import { Operation, Sequence } from '@jesscss/core';
2
+ import { getNumber } from './number.js';
3
+ /**
4
+ * Allows for comma-less syntax
5
+ */
6
+ export function getColorFunctionValues(one, two, three) {
7
+ /**
8
+ * Comma-less syntax
9
+ * e.g. rgb(0 128 255 / 50%)
10
+ */
11
+ let alpha = 1;
12
+ if (one instanceof Sequence) {
13
+ const val = one.value;
14
+ one = val[0];
15
+ two = val[1];
16
+ three = val[2];
17
+ /**
18
+ * @todo - should this be normalized in
19
+ * function caller? Or parsed differently?
20
+ */
21
+ if (three instanceof Operation) {
22
+ const op = three;
23
+ ([three, , alpha] = op.value);
24
+ }
25
+ }
26
+ return [one, two, three, alpha].map(v => getNumber(v, true));
27
+ }
28
+ //# sourceMappingURL=get-color-func-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-color-func-values.js","sourceRoot":"","sources":["../../src/util/get-color-func-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAGT,QAAQ,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAyB,EAAE,GAAc,EAAE,KAAgB;IAChG;;;OAGG;IACH,IAAI,KAAK,GAAkB,CAAC,CAAC;IAC7B,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAgB,GAAG,CAAC,KAAoB,CAAC;QAClD,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACd,KAAK,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAChB;;;WAGG;QACH,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,KAAkB,CAAC;YAC9B,CAAC,CAAC,KAAK,EAAE,AAAD,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAuC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAsC,CAAC;AACrG,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type Color, type Dimension, type Node, type Context } from '@jesscss/core';
2
+ interface HSLA {
3
+ h: number;
4
+ s: number;
5
+ l: number;
6
+ a?: number;
7
+ }
8
+ export declare function getHsla(this: Context, origColor: Color, hsl: HSLA): Color | undefined;
9
+ export declare function adjustHSL(this: Context, key: 'h' | 's' | 'l' | 'a', dir: '+' | '-', color: Color, amount: Dimension, method?: Node): Color | undefined;
10
+ export {};
@@ -0,0 +1,38 @@
1
+ import { ColorFormat } from '@jesscss/core';
2
+ import { toHSL } from './to-hsl';
3
+ import { clamp } from './number';
4
+ import hsla from '../less/hsla';
5
+ export function getHsla(origColor, hsl) {
6
+ const color = hsla.call(this, hsl.h, hsl.s, hsl.l, hsl.a ?? 1);
7
+ if (color) {
8
+ const value = origColor.value;
9
+ if (typeof value === 'number') {
10
+ color.value = { rgba: [value, value, value, 1], format: ColorFormat.RGB };
11
+ }
12
+ else {
13
+ // Don't overwrite the value if it already has rgba set
14
+ if (!color.value.rgba) {
15
+ color.value = { format: ColorFormat.RGB };
16
+ }
17
+ }
18
+ return color;
19
+ }
20
+ }
21
+ export function adjustHSL(key, dir, color, amount, method) {
22
+ const hsl = toHSL(color);
23
+ if (!(amount.value.unit === '%')) {
24
+ throw new Error('Amount must be a percentage');
25
+ }
26
+ let adjustAmount = amount.value.number / 100;
27
+ if (method && method.value === 'relative') {
28
+ adjustAmount = hsl[key] * adjustAmount;
29
+ }
30
+ if (dir === '-') {
31
+ hsl[key] = clamp(hsl[key] - adjustAmount);
32
+ }
33
+ else {
34
+ hsl[key] = clamp(hsl[key] + adjustAmount);
35
+ }
36
+ return getHsla.call(this, color, hsl);
37
+ }
38
+ //# sourceMappingURL=get-hsla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-hsla.js","sourceRoot":"","sources":["../../src/util/get-hsla.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,IAAI,MAAM,cAAc,CAAC;AAShC,MAAM,UAAU,OAAO,CAAgB,SAAgB,EAAE,GAAS;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAEvB,GAA0B,EAC1B,GAAc,EACd,KAAY,EACZ,MAAiB,EACjB,MAAa;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IAE7C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1C,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;IACzC,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type Color } from '@jesscss/core';
2
+ export declare function getLuma(color: Color): number;
@@ -0,0 +1,10 @@
1
+ export function getLuma(color) {
2
+ let r = color.rgb[0] / 255;
3
+ let g = color.rgb[1] / 255;
4
+ let b = color.rgb[2] / 255;
5
+ r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);
6
+ g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);
7
+ b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);
8
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
9
+ }
10
+ //# sourceMappingURL=get-luma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-luma.js","sourceRoot":"","sources":["../../src/util/get-luma.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAC,KAAY;IAClC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3B,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3B,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAE3B,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtE,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ExtendedFn } from '@jesscss/core';
2
+ import type { validate } from 'superstruct';
3
+ export type { ExtendedFn };
4
+ type CheckResult = ReturnType<typeof validate>;
5
+ export declare function wrapValidate(...args: CheckResult[]): true | Error[];
@@ -0,0 +1,17 @@
1
+ export function wrapValidate(...args) {
2
+ const success = args.some(([err]) => !err);
3
+ const errors = [];
4
+ if (!success) {
5
+ for (let i = 0; i < args.length; i++) {
6
+ let [err] = args[i];
7
+ if (!err) {
8
+ continue;
9
+ }
10
+ let error = err.failures()[0];
11
+ errors.push(new Error(error.message));
12
+ }
13
+ return errors;
14
+ }
15
+ return true;
16
+ }
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,YAAY,CAC1B,GAAG,IAAmB;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACrB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,SAAS;YACX,CAAC;YAED,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Dimension } from '@jesscss/core';
2
+ export declare function num(values: Dimension | number): number;
3
+ export declare function num(values: Array<Dimension | number>): number[];
4
+ export declare const mathHelper: (fn: (...nums: number[]) => number, params: string[], unit: string | null | undefined, ...input: Array<Dimension | number>) => Dimension;
@@ -0,0 +1,45 @@
1
+ import { Dimension, Num } from '@jesscss/core';
2
+ const { isArray } = Array;
3
+ export function num(values) {
4
+ if (isArray(values)) {
5
+ return values.map(n => n instanceof Dimension ? n.value.number : n);
6
+ }
7
+ return values instanceof Dimension ? values.value.number : values;
8
+ }
9
+ export const mathHelper = (fn, params, unit, ...input) => {
10
+ let key = 0;
11
+ for (const n of input) {
12
+ if (!(n instanceof Dimension) && typeof n !== 'number') {
13
+ let name = params[key++];
14
+ name = name ? `"${name}" ` : '';
15
+ throw new TypeError(`${name}argument must be numeric`);
16
+ }
17
+ }
18
+ const val = input[0];
19
+ if (unit === null) {
20
+ const numberResult = fn(...num(input));
21
+ const preservedUnit = val instanceof Dimension ? val.value.unit : undefined;
22
+ return new Dimension({ number: numberResult, unit: preservedUnit });
23
+ }
24
+ const normalizedInput = input.map(v => {
25
+ if (!(v instanceof Dimension)) {
26
+ return v;
27
+ }
28
+ if (v.value.unit === 'deg') {
29
+ return v.value.number * Math.PI / 180;
30
+ }
31
+ if (v.value.unit === 'grad') {
32
+ return v.value.number * Math.PI / 200;
33
+ }
34
+ if (v.value.unit === 'turn') {
35
+ return v.value.number * 2 * Math.PI;
36
+ }
37
+ return v.value.number;
38
+ });
39
+ unit ??= val instanceof Dimension ? val.value.unit : '';
40
+ if (unit === undefined) {
41
+ return new Num(fn(...normalizedInput));
42
+ }
43
+ return new Dimension({ number: fn(...normalizedInput), unit });
44
+ };
45
+ //# sourceMappingURL=mathHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathHelper.js","sourceRoot":"","sources":["../../src/util/mathHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Dimension, type Node } from '@jesscss/core';
2
+ export type ColorValue = Dimension | number;
3
+ export declare function clamp(val: number): number;
4
+ export declare function getNumber(n: Node | number, ignoreUnit?: boolean): number;
@@ -0,0 +1,23 @@
1
+ import { Dimension } from '@jesscss/core';
2
+ export function clamp(val) {
3
+ return Math.min(1, Math.max(0, val));
4
+ }
5
+ export function getNumber(n, ignoreUnit = false) {
6
+ if (n instanceof Dimension) {
7
+ let unit = n.value.unit;
8
+ if (unit === '%') {
9
+ return n.value.number / 100;
10
+ }
11
+ else if (!unit || ignoreUnit) {
12
+ return n.value.number;
13
+ }
14
+ throw new Error('color functions take numbers as parameters');
15
+ }
16
+ else if (n.constructor === Number) {
17
+ return n;
18
+ }
19
+ else {
20
+ throw new Error('color functions take numbers as parameters');
21
+ }
22
+ }
23
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/util/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,eAAe,CAAC;AAIrD,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAgB,EAAE,UAAU,GAAG,KAAK;IAC5D,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { type Node, type List, Color, type Context } from '@jesscss/core';
2
+ /**
3
+ * Detects and parses relative color syntax from rawArgs
4
+ * Returns null if not relative color syntax, otherwise returns parsed data
5
+ *
6
+ * Example: rgb(from color r g b) -> { originColor: <color node>, channels: [r, g, b] }
7
+ * Example: rgb(from color r g b / 0.5) -> { originColor: <color node>, channels: [r, g, b], alpha: <alpha node> }
8
+ */
9
+ export declare function parseRelativeColorSyntax(rawArgs: List): {
10
+ originColor: Node;
11
+ channels: Node[];
12
+ alpha?: Node;
13
+ } | null;
14
+ /**
15
+ * Gets the normalized channel values from an origin color for RGB context
16
+ * Returns values in the ranges specified by CSS Color Module Level 5:
17
+ * - r, g, b: 0-255 (as numbers)
18
+ * - alpha: 0-1 (as number)
19
+ */
20
+ export declare function getRGBChannelValues(originColor: Color): {
21
+ r: number;
22
+ g: number;
23
+ b: number;
24
+ alpha: number;
25
+ };
26
+ /**
27
+ * Evaluates an RGB channel reference (r, g, b, alpha) from the origin color
28
+ * Returns the numeric value for that channel in RGB range (0-255)
29
+ * Supports both simple identifiers and calc() expressions
30
+ */
31
+ export declare function evaluateRGBChannelReference(channel: Node, originColor: Color, context: Context): Promise<number>;
32
+ /**
33
+ * Gets the normalized channel values from an origin color for HSL context
34
+ * Returns values in the ranges specified by CSS Color Module Level 5:
35
+ * - h: 0-360 (as number in degrees)
36
+ * - s, l: 0-1 (as numbers, will be converted to percentages in substitution)
37
+ * - alpha: 0-1 (as number)
38
+ */
39
+ export declare function getHSLChannelValues(originColor: Color): {
40
+ h: number;
41
+ s: number;
42
+ l: number;
43
+ alpha: number;
44
+ };
45
+ /**
46
+ * Evaluates an HSL channel reference (h, s, l, alpha) from the origin color
47
+ * Returns the numeric value for that channel
48
+ * Supports both simple identifiers and calc() expressions
49
+ */
50
+ export declare function evaluateHSLChannelReference(channel: Node, originColor: Color, context: Context): Promise<number>;
51
+ /**
52
+ * Evaluates an origin color node to a Color
53
+ */
54
+ export declare function evaluateOriginColor(originColorNode: Node, context: Context): Promise<Color>;
@@ -0,0 +1,268 @@
1
+ import { Sequence, Any, Color, Call, Dimension, Operation } from '@jesscss/core';
2
+ /**
3
+ * Detects and parses relative color syntax from rawArgs
4
+ * Returns null if not relative color syntax, otherwise returns parsed data
5
+ *
6
+ * Example: rgb(from color r g b) -> { originColor: <color node>, channels: [r, g, b] }
7
+ * Example: rgb(from color r g b / 0.5) -> { originColor: <color node>, channels: [r, g, b], alpha: <alpha node> }
8
+ */
9
+ export function parseRelativeColorSyntax(rawArgs) {
10
+ if (!rawArgs || !rawArgs.value || rawArgs.value.length === 0) {
11
+ return null;
12
+ }
13
+ const firstArg = rawArgs.value[0];
14
+ // Check if first argument is a Sequence starting with "from"
15
+ if (firstArg instanceof Sequence && firstArg.value && firstArg.value.length > 0) {
16
+ const firstItem = firstArg.value[0];
17
+ // Check if first item is "from" keyword
18
+ if (firstItem instanceof Any && firstItem.value.toLowerCase() === 'from') {
19
+ // This is relative color syntax
20
+ if (firstArg.value.length < 2) {
21
+ throw new Error('Relative color syntax requires an origin color after "from"');
22
+ }
23
+ const originColor = firstArg.value[1];
24
+ const channels = firstArg.value.slice(2) || [];
25
+ // Check if there's an alpha value separated by / (rawArgs.value[1] when sep is '/')
26
+ let alpha;
27
+ if (rawArgs.value.length > 1 && rawArgs.options?.sep === '/') {
28
+ alpha = rawArgs.value[1];
29
+ }
30
+ return {
31
+ originColor,
32
+ channels,
33
+ alpha
34
+ };
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ /**
40
+ * Gets the normalized channel values from an origin color for RGB context
41
+ * Returns values in the ranges specified by CSS Color Module Level 5:
42
+ * - r, g, b: 0-255 (as numbers)
43
+ * - alpha: 0-1 (as number)
44
+ */
45
+ export function getRGBChannelValues(originColor) {
46
+ const [r, g, b] = originColor._rgb;
47
+ const alpha = originColor._alpha;
48
+ return { r, g, b, alpha };
49
+ }
50
+ /**
51
+ * Substitutes channel variable references (r, g, b, alpha) in a node tree with Dimension nodes
52
+ * This is used to replace channel variables in calc() expressions with their actual values
53
+ */
54
+ function substituteChannelVariables(node, channelValues, format) {
55
+ // If it's an Any node representing a channel variable, replace it with a Dimension
56
+ if (node instanceof Any && typeof node.value === 'string') {
57
+ const channelName = node.value.toLowerCase();
58
+ // Handle location - it can be undefined, empty array, or proper LocationInfo
59
+ // TypeScript needs explicit narrowing to avoid [] type
60
+ let location = undefined;
61
+ if (node.location && Array.isArray(node.location) && node.location.length >= 6) {
62
+ location = node.location;
63
+ }
64
+ const context = node.context;
65
+ if (format === 'rgb') {
66
+ const values = channelValues;
67
+ switch (channelName) {
68
+ case 'r':
69
+ return new Dimension({ number: values.r, unit: '' }, node.options, location, context);
70
+ case 'g':
71
+ return new Dimension({ number: values.g, unit: '' }, node.options, location, context);
72
+ case 'b':
73
+ return new Dimension({ number: values.b, unit: '' }, node.options, location, context);
74
+ case 'alpha':
75
+ // For RGB context, alpha is 0-1, but when used in calc for r/g/b, it should be 0-255
76
+ // However, according to spec, channel values are resolved first, so alpha stays 0-1
77
+ // The conversion happens when the result is used for r/g/b output
78
+ return new Dimension({ number: values.alpha, unit: '' }, node.options, location, context);
79
+ }
80
+ }
81
+ else {
82
+ const values = channelValues;
83
+ switch (channelName) {
84
+ case 'h':
85
+ return new Dimension({ number: values.h, unit: 'deg' }, node.options, location, context);
86
+ case 's':
87
+ return new Dimension({ number: values.s * 100, unit: '%' }, node.options, location, context);
88
+ case 'l':
89
+ return new Dimension({ number: values.l * 100, unit: '%' }, node.options, location, context);
90
+ case 'alpha':
91
+ return new Dimension({ number: values.alpha, unit: '' }, node.options, location, context);
92
+ }
93
+ }
94
+ }
95
+ // If it's a Call node (like calc()), recursively substitute in its arguments
96
+ if (node instanceof Call && node.value.args) {
97
+ const cloned = node.clone();
98
+ // Recursively substitute in arguments
99
+ if (cloned.value.args) {
100
+ const substitutedArgs = node.value.args.value.map(arg => substituteChannelVariables(arg, channelValues, format));
101
+ cloned.value.args.value = substitutedArgs;
102
+ }
103
+ return cloned;
104
+ }
105
+ // If it's an Operation, recursively substitute in its operands
106
+ if (node instanceof Operation && node.value) {
107
+ const cloned = node.clone();
108
+ const [left, op, right] = node.value;
109
+ cloned.value = [
110
+ substituteChannelVariables(left, channelValues, format),
111
+ op,
112
+ substituteChannelVariables(right, channelValues, format)
113
+ ];
114
+ return cloned;
115
+ }
116
+ // If it's a Sequence or List, recursively substitute in its values
117
+ if ('value' in node && Array.isArray(node.value)) {
118
+ const cloned = node.clone();
119
+ cloned.value = node.value.map((item) => substituteChannelVariables(item, channelValues, format));
120
+ return cloned;
121
+ }
122
+ // For other node types, return as-is
123
+ return node;
124
+ }
125
+ /**
126
+ * Evaluates an RGB channel reference (r, g, b, alpha) from the origin color
127
+ * Returns the numeric value for that channel in RGB range (0-255)
128
+ * Supports both simple identifiers and calc() expressions
129
+ */
130
+ export async function evaluateRGBChannelReference(channel, originColor, context) {
131
+ const channelValues = getRGBChannelValues(originColor);
132
+ // Check if channel is a simple identifier (r, g, b, alpha)
133
+ if (channel instanceof Any && typeof channel.value === 'string') {
134
+ const channelName = channel.value.toLowerCase();
135
+ switch (channelName) {
136
+ case 'r':
137
+ return channelValues.r;
138
+ case 'g':
139
+ return channelValues.g;
140
+ case 'b':
141
+ return channelValues.b;
142
+ case 'alpha':
143
+ // Convert alpha (0-1) to RGB range (0-255) when used for r/g/b
144
+ return channelValues.alpha * 255;
145
+ default:
146
+ throw new Error(`Invalid RGB channel reference: ${channelName}. Must be r, g, b, or alpha`);
147
+ }
148
+ }
149
+ // If it's a Call node (like calc()), substitute channel variables and evaluate
150
+ if (channel instanceof Call) {
151
+ const substituted = substituteChannelVariables(channel, channelValues, 'rgb');
152
+ const evaluated = await substituted.eval(context);
153
+ // The result should be a Dimension
154
+ if (evaluated instanceof Dimension) {
155
+ const value = evaluated.value.number;
156
+ // Clamp to 0-255 range for RGB
157
+ return Math.max(0, Math.min(255, value));
158
+ }
159
+ throw new Error(`Channel expression must evaluate to a Dimension, got ${evaluated.type}`);
160
+ }
161
+ // For other node types, try to evaluate and extract numeric value
162
+ const evaluated = await channel.eval(context);
163
+ if (evaluated instanceof Dimension) {
164
+ return Math.max(0, Math.min(255, evaluated.value.number));
165
+ }
166
+ throw new Error(`Channel reference must be an identifier or evaluate to a Dimension, got ${channel.type}`);
167
+ }
168
+ /**
169
+ * Gets the normalized channel values from an origin color for HSL context
170
+ * Returns values in the ranges specified by CSS Color Module Level 5:
171
+ * - h: 0-360 (as number in degrees)
172
+ * - s, l: 0-1 (as numbers, will be converted to percentages in substitution)
173
+ * - alpha: 0-1 (as number)
174
+ */
175
+ export function getHSLChannelValues(originColor) {
176
+ const [h, s, l] = originColor._hsl;
177
+ const alpha = originColor._alpha;
178
+ return { h, s, l, alpha };
179
+ }
180
+ /**
181
+ * Evaluates an HSL channel reference (h, s, l, alpha) from the origin color
182
+ * Returns the numeric value for that channel
183
+ * Supports both simple identifiers and calc() expressions
184
+ */
185
+ export async function evaluateHSLChannelReference(channel, originColor, context) {
186
+ const channelValues = getHSLChannelValues(originColor);
187
+ // Check if channel is a simple identifier (h, s, l, alpha)
188
+ if (channel instanceof Any && typeof channel.value === 'string') {
189
+ const channelName = channel.value.toLowerCase();
190
+ switch (channelName) {
191
+ case 'h':
192
+ return channelValues.h;
193
+ case 's':
194
+ return channelValues.s;
195
+ case 'l':
196
+ return channelValues.l;
197
+ case 'alpha':
198
+ return channelValues.alpha;
199
+ default:
200
+ throw new Error(`Invalid HSL channel reference: ${channelName}. Must be h, s, l, or alpha`);
201
+ }
202
+ }
203
+ // If it's a Call node (like calc()), substitute channel variables and evaluate
204
+ if (channel instanceof Call) {
205
+ const substituted = substituteChannelVariables(channel, channelValues, 'hsl');
206
+ const evaluated = await substituted.eval(context);
207
+ // The result should be a Dimension
208
+ if (evaluated instanceof Dimension) {
209
+ const value = evaluated.value.number;
210
+ const unit = evaluated.value.unit;
211
+ // Handle different units for hue (deg, turn, rad, grad)
212
+ if (unit === 'deg' || unit === '' || unit === undefined) {
213
+ // Normalize hue to 0-360
214
+ return ((value % 360) + 360) % 360;
215
+ }
216
+ else if (unit === 'turn') {
217
+ return ((value * 360 % 360) + 360) % 360;
218
+ }
219
+ else if (unit === 'rad') {
220
+ return ((value * 180 / Math.PI % 360) + 360) % 360;
221
+ }
222
+ else if (unit === 'grad') {
223
+ return ((value * 0.9 % 360) + 360) % 360;
224
+ }
225
+ else if (unit === '%') {
226
+ // For s/l, percentage values are 0-100%, convert to 0-1
227
+ return Math.max(0, Math.min(1, value / 100));
228
+ }
229
+ else {
230
+ // For s/l without unit, assume 0-1 range
231
+ return Math.max(0, Math.min(1, value));
232
+ }
233
+ }
234
+ throw new Error(`Channel expression must evaluate to a Dimension, got ${evaluated.type}`);
235
+ }
236
+ // For other node types, try to evaluate and extract numeric value
237
+ const evaluated = await channel.eval(context);
238
+ if (evaluated instanceof Dimension) {
239
+ const value = evaluated.value.number;
240
+ const unit = evaluated.value.unit;
241
+ // Handle percentage units for s/l
242
+ if (unit === '%') {
243
+ return Math.max(0, Math.min(1, value / 100));
244
+ }
245
+ // For hue, normalize to 0-360
246
+ if (unit === 'deg' || unit === '' || unit === undefined) {
247
+ return ((value % 360) + 360) % 360;
248
+ }
249
+ // For other cases, return as-is (will be clamped by caller if needed)
250
+ return value;
251
+ }
252
+ throw new Error(`Channel reference must be an identifier or evaluate to a Dimension, got ${channel.type}`);
253
+ }
254
+ /**
255
+ * Evaluates an origin color node to a Color
256
+ */
257
+ export async function evaluateOriginColor(originColorNode, context) {
258
+ // Evaluate the origin color node
259
+ const evaluated = await originColorNode.eval(context);
260
+ // Cast to Color (it should be a Color, but might need conversion)
261
+ if (evaluated instanceof Color) {
262
+ return evaluated;
263
+ }
264
+ // Try to convert to Color if possible
265
+ // This might need to be expanded based on what types can be converted to Color
266
+ throw new Error(`Origin color must evaluate to a Color, got ${evaluated.type}`);
267
+ }
268
+ //# sourceMappingURL=relative-color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-color.js","sourceRoot":"","sources":["../../src/util/relative-color.ts"],"names":[],"mappings":"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"}