solve-engine 1.1.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/README.md +12 -17
  2. package/dist/{BytecodeBuilder-Bp9xeTmX.d.cts → BytecodeBuilder-DGGeByAP.d.cts} +18 -0
  3. package/dist/{BytecodeBuilder-Bp9xeTmX.d.ts → BytecodeBuilder-DGGeByAP.d.ts} +18 -0
  4. package/dist/{Configuration-C9W8tJv_.d.cts → Configuration-B6W0-T67.d.cts} +17 -4
  5. package/dist/{Configuration-C9W8tJv_.d.ts → Configuration-B6W0-T67.d.ts} +17 -4
  6. package/dist/{EngineError-B61GS1jp.d.cts → EngineError-Ce1lPkjZ.d.cts} +8 -0
  7. package/dist/{EngineError-B61GS1jp.d.ts → EngineError-Ce1lPkjZ.d.ts} +8 -0
  8. package/dist/{Lexer-BOs7euZe.d.cts → Lexer-B4C1qHXu.d.cts} +1 -1
  9. package/dist/{Lexer-CSI_lwbW.d.ts → Lexer-DKMlj7Sy.d.ts} +1 -1
  10. package/dist/{PackageCompatibility-B-7rK1TD.d.cts → PackageCompatibility-Bn5jnBtA.d.cts} +2 -2
  11. package/dist/{PackageCompatibility-Dh59eF-X.d.ts → PackageCompatibility-CIvq2MP5.d.ts} +2 -2
  12. package/dist/{PackageRegistry-_8rDlvxI.d.ts → PackageRegistry-DzeiWcv4.d.ts} +143 -175
  13. package/dist/{PackageRegistry-BHWJP83F.d.cts → PackageRegistry-dpdurBVO.d.cts} +143 -175
  14. package/dist/{Parselet-BBT8riYh.d.ts → Parselet-B-zoPrTa.d.ts} +9 -6
  15. package/dist/{Parselet-BHcgK9S7.d.cts → Parselet-C4Wu055_.d.cts} +9 -6
  16. package/dist/{ScopeManager-CxA24W5n.d.ts → ScopeManager-C2LDOrDx.d.ts} +14 -16
  17. package/dist/{ScopeManager-8vf02dwj.d.cts → ScopeManager-D7uMXbhS.d.cts} +14 -16
  18. package/dist/{Token-B1hdkedD.d.cts → Token-CbP_OutD.d.cts} +9 -0
  19. package/dist/{Token-B1hdkedD.d.ts → Token-CbP_OutD.d.ts} +9 -0
  20. package/dist/{TokenNormalizer-C6VzZgHa.d.ts → TokenNormalizer-DCWdZjGz.d.ts} +1 -1
  21. package/dist/{TokenNormalizer-DRc1Js1V.d.cts → TokenNormalizer-DnlL7_8c.d.cts} +1 -1
  22. package/dist/{VMCheckpoints-MK--EBH2.d.ts → VMCheckpoints-CGyFhivM.d.ts} +3 -3
  23. package/dist/{VMCheckpoints-ELYqITdF.d.cts → VMCheckpoints-I9jg3jWR.d.cts} +3 -3
  24. package/dist/{Value-BUi1RA3S.d.cts → Value-CCi_Eecs.d.cts} +72 -5
  25. package/dist/{Value-BUi1RA3S.d.ts → Value-CCi_Eecs.d.ts} +72 -5
  26. package/dist/{WorkerError-gzmaopj2.d.cts → WorkerError-B4p6PNfx.d.cts} +1 -1
  27. package/dist/{WorkerError-_-RkoQ5P.d.ts → WorkerError-Dhj9BQ_A.d.ts} +1 -1
  28. package/dist/chunk-2JMFUQZH.js +2 -0
  29. package/dist/chunk-2JMFUQZH.js.map +1 -0
  30. package/dist/chunk-2RWAXT6O.js +0 -1
  31. package/dist/chunk-4BZIYU7S.cjs +3 -0
  32. package/dist/chunk-4BZIYU7S.cjs.map +1 -0
  33. package/dist/chunk-4J7XZSZJ.cjs +5 -0
  34. package/dist/chunk-4J7XZSZJ.cjs.map +1 -0
  35. package/dist/chunk-4QVBSG6B.cjs +2 -0
  36. package/dist/chunk-4QVBSG6B.cjs.map +1 -0
  37. package/dist/chunk-5IJD5L3O.cjs +2 -0
  38. package/dist/chunk-5IJD5L3O.cjs.map +1 -0
  39. package/dist/chunk-62LMTO4F.js +2 -0
  40. package/dist/chunk-62LMTO4F.js.map +1 -0
  41. package/dist/chunk-6CY44ZPG.js +2 -0
  42. package/dist/chunk-6CY44ZPG.js.map +1 -0
  43. package/dist/chunk-6G3PMEPA.js +2 -0
  44. package/dist/chunk-6G3PMEPA.js.map +1 -0
  45. package/dist/chunk-6INX773F.cjs +2 -0
  46. package/dist/chunk-6INX773F.cjs.map +1 -0
  47. package/dist/chunk-6KFVG6UY.cjs +2 -0
  48. package/dist/chunk-6KFVG6UY.cjs.map +1 -0
  49. package/dist/chunk-76F3LCIL.js +4 -0
  50. package/dist/chunk-76F3LCIL.js.map +1 -0
  51. package/dist/chunk-7GK3XEZF.js +2 -0
  52. package/dist/chunk-7GK3XEZF.js.map +1 -0
  53. package/dist/chunk-APN442VD.cjs +2 -0
  54. package/dist/chunk-APN442VD.cjs.map +1 -0
  55. package/dist/chunk-AXMQG5TS.cjs +2 -0
  56. package/dist/chunk-AXMQG5TS.cjs.map +1 -0
  57. package/dist/chunk-CIQOK7Q4.cjs +2 -0
  58. package/dist/chunk-CIQOK7Q4.cjs.map +1 -0
  59. package/dist/chunk-E6Z4NQAS.js +2 -0
  60. package/dist/chunk-E6Z4NQAS.js.map +1 -0
  61. package/dist/chunk-EFJCC6FJ.cjs +2 -0
  62. package/dist/chunk-EFJCC6FJ.cjs.map +1 -0
  63. package/dist/chunk-ESUN2THE.cjs +2 -0
  64. package/dist/chunk-ESUN2THE.cjs.map +1 -0
  65. package/dist/chunk-EVAOPEO4.js +2 -0
  66. package/dist/chunk-EVAOPEO4.js.map +1 -0
  67. package/dist/chunk-EYRBENHC.js +3 -0
  68. package/dist/chunk-EYRBENHC.js.map +1 -0
  69. package/dist/chunk-FDE5HWDI.cjs +2 -0
  70. package/dist/chunk-FDE5HWDI.cjs.map +1 -0
  71. package/dist/chunk-FWW3M36J.cjs +2 -0
  72. package/dist/chunk-FWW3M36J.cjs.map +1 -0
  73. package/dist/chunk-GOIQYUWV.js +2 -0
  74. package/dist/chunk-GOIQYUWV.js.map +1 -0
  75. package/dist/chunk-HFKDWQUL.js +2 -0
  76. package/dist/chunk-HFKDWQUL.js.map +1 -0
  77. package/dist/chunk-HLBYHXQD.cjs +3 -0
  78. package/dist/chunk-HLBYHXQD.cjs.map +1 -0
  79. package/dist/chunk-IANAMBJQ.cjs +2 -0
  80. package/dist/chunk-IANAMBJQ.cjs.map +1 -0
  81. package/dist/chunk-IJMNVBIS.js +2 -0
  82. package/dist/chunk-IJMNVBIS.js.map +1 -0
  83. package/dist/chunk-J4LZD4ZY.js +3 -0
  84. package/dist/chunk-J4LZD4ZY.js.map +1 -0
  85. package/dist/chunk-JAK3RAFA.cjs +2 -0
  86. package/dist/chunk-JAK3RAFA.cjs.map +1 -0
  87. package/dist/chunk-JFAJN3C2.cjs +2 -0
  88. package/dist/chunk-JFAJN3C2.cjs.map +1 -0
  89. package/dist/chunk-JPFCXLJV.js +2 -0
  90. package/dist/chunk-JPFCXLJV.js.map +1 -0
  91. package/dist/chunk-JSPKKNPQ.js +3 -0
  92. package/dist/chunk-JSPKKNPQ.js.map +1 -0
  93. package/dist/chunk-L3FPQSGN.js +2 -0
  94. package/dist/chunk-L3FPQSGN.js.map +1 -0
  95. package/dist/chunk-LR4E4A4W.cjs +2 -0
  96. package/dist/chunk-LR4E4A4W.cjs.map +1 -0
  97. package/dist/chunk-MIQBJGGR.js +2 -0
  98. package/dist/chunk-MIQBJGGR.js.map +1 -0
  99. package/dist/chunk-MPB7KUN5.js +3 -0
  100. package/dist/chunk-MPB7KUN5.js.map +1 -0
  101. package/dist/chunk-MSYX32PF.cjs +2 -0
  102. package/dist/chunk-MSYX32PF.cjs.map +1 -0
  103. package/dist/chunk-MVZUTETT.js +2 -0
  104. package/dist/chunk-MVZUTETT.js.map +1 -0
  105. package/dist/chunk-N7N7MPMK.cjs +2 -0
  106. package/dist/chunk-N7N7MPMK.cjs.map +1 -0
  107. package/dist/chunk-NGBBNL4K.cjs +1 -3
  108. package/dist/chunk-P6WPEUAJ.cjs +2 -0
  109. package/dist/chunk-P6WPEUAJ.cjs.map +1 -0
  110. package/dist/chunk-PS272DZJ.cjs +2 -0
  111. package/dist/chunk-PS272DZJ.cjs.map +1 -0
  112. package/dist/chunk-QXQE7X4S.js +2 -0
  113. package/dist/chunk-QXQE7X4S.js.map +1 -0
  114. package/dist/chunk-R2ENWQ76.js +2 -0
  115. package/dist/chunk-R2ENWQ76.js.map +1 -0
  116. package/dist/chunk-R2SZFJTT.cjs +2 -0
  117. package/dist/chunk-R2SZFJTT.cjs.map +1 -0
  118. package/dist/chunk-RAF57WYO.js +2 -0
  119. package/dist/chunk-RAF57WYO.js.map +1 -0
  120. package/dist/chunk-RSF25YSJ.js +2 -0
  121. package/dist/chunk-RSF25YSJ.js.map +1 -0
  122. package/dist/chunk-SOMGSIO4.cjs +3 -0
  123. package/dist/chunk-SOMGSIO4.cjs.map +1 -0
  124. package/dist/chunk-SUXRZWH2.cjs +3 -0
  125. package/dist/chunk-SUXRZWH2.cjs.map +1 -0
  126. package/dist/chunk-SYYE3QAX.cjs +2 -0
  127. package/dist/chunk-SYYE3QAX.cjs.map +1 -0
  128. package/dist/chunk-SZGK6RIP.cjs +2 -0
  129. package/dist/chunk-SZGK6RIP.cjs.map +1 -0
  130. package/dist/chunk-TCZSPH4A.js +2 -0
  131. package/dist/chunk-TCZSPH4A.js.map +1 -0
  132. package/dist/chunk-TLG7VZRX.cjs +2 -0
  133. package/dist/chunk-TLG7VZRX.cjs.map +1 -0
  134. package/dist/chunk-TRBXW6HW.js +2 -0
  135. package/dist/{chunk-AQNHHJMJ.cjs.map → chunk-TRBXW6HW.js.map} +1 -1
  136. package/dist/chunk-TTFO4YDP.cjs +2 -0
  137. package/dist/chunk-TTFO4YDP.cjs.map +1 -0
  138. package/dist/chunk-TWC7K3ZX.js +2 -0
  139. package/dist/chunk-TWC7K3ZX.js.map +1 -0
  140. package/dist/chunk-UDQ57ZRX.cjs +2 -0
  141. package/dist/chunk-UDQ57ZRX.cjs.map +1 -0
  142. package/dist/chunk-UI6IFGBT.js +2 -0
  143. package/dist/chunk-UI6IFGBT.js.map +1 -0
  144. package/dist/chunk-UURM7P3P.cjs +4 -0
  145. package/dist/chunk-UURM7P3P.cjs.map +1 -0
  146. package/dist/chunk-W2JAR233.js +2 -0
  147. package/dist/chunk-W2JAR233.js.map +1 -0
  148. package/dist/chunk-WGZ3FNHI.js +2 -0
  149. package/dist/chunk-WGZ3FNHI.js.map +1 -0
  150. package/dist/chunk-WN5CMP4T.cjs +3 -0
  151. package/dist/chunk-WN5CMP4T.cjs.map +1 -0
  152. package/dist/chunk-XEIDV5JP.js +2 -0
  153. package/dist/chunk-XEIDV5JP.js.map +1 -0
  154. package/dist/chunk-XNIWQHXY.js +2 -0
  155. package/dist/chunk-XNIWQHXY.js.map +1 -0
  156. package/dist/chunk-XR7HEC7B.js +5 -0
  157. package/dist/chunk-XR7HEC7B.js.map +1 -0
  158. package/dist/chunk-Y7O4D3BJ.cjs +2 -0
  159. package/dist/chunk-Y7O4D3BJ.cjs.map +1 -0
  160. package/dist/chunk-YAYBVVG2.js +3 -0
  161. package/dist/chunk-YAYBVVG2.js.map +1 -0
  162. package/dist/chunk-YJ2OPULK.js +2 -0
  163. package/dist/chunk-YJ2OPULK.js.map +1 -0
  164. package/dist/chunk-YVKHEAFT.js +2 -0
  165. package/dist/chunk-YVKHEAFT.js.map +1 -0
  166. package/dist/chunk-ZCNBT44X.cjs +2 -0
  167. package/dist/chunk-ZCNBT44X.cjs.map +1 -0
  168. package/dist/chunk-ZLRJ7TDP.cjs +2 -0
  169. package/dist/chunk-ZLRJ7TDP.cjs.map +1 -0
  170. package/dist/constants.cjs +1 -21
  171. package/dist/constants.d.cts +1 -1
  172. package/dist/constants.d.ts +1 -1
  173. package/dist/constants.js +1 -4
  174. package/dist/engine.cjs +1 -94
  175. package/dist/engine.d.cts +29 -14
  176. package/dist/engine.d.ts +29 -14
  177. package/dist/engine.js +1 -37
  178. package/dist/errors.cjs +1 -105
  179. package/dist/errors.d.cts +3 -3
  180. package/dist/errors.d.ts +3 -3
  181. package/dist/errors.js +1 -4
  182. package/dist/format.cjs +1 -26
  183. package/dist/format.d.cts +2 -2
  184. package/dist/format.d.ts +2 -2
  185. package/dist/format.js +1 -9
  186. package/dist/index.cjs +1 -314
  187. package/dist/index.cjs.map +1 -1
  188. package/dist/index.d.cts +55 -23
  189. package/dist/index.d.ts +55 -23
  190. package/dist/index.js +1 -278
  191. package/dist/index.js.map +1 -1
  192. package/dist/language.cjs +1 -369
  193. package/dist/language.cjs.map +1 -1
  194. package/dist/language.d.cts +12 -13
  195. package/dist/language.d.ts +12 -13
  196. package/dist/language.js +1 -348
  197. package/dist/language.js.map +1 -1
  198. package/dist/lexer.cjs +1 -63
  199. package/dist/lexer.d.cts +3 -3
  200. package/dist/lexer.d.ts +3 -3
  201. package/dist/lexer.js +1 -10
  202. package/dist/normalizer.cjs +1 -39
  203. package/dist/normalizer.d.cts +3 -3
  204. package/dist/normalizer.d.ts +3 -3
  205. package/dist/normalizer.js +1 -10
  206. package/dist/packages.cjs +1 -128
  207. package/dist/packages.d.cts +39 -14
  208. package/dist/packages.d.ts +39 -14
  209. package/dist/packages.js +1 -23
  210. package/dist/parser.cjs +1 -54
  211. package/dist/parser.d.cts +9 -9
  212. package/dist/parser.d.ts +9 -9
  213. package/dist/parser.js +1 -9
  214. package/dist/{pipeline-CtfJtPQc.d.cts → pipeline-72QmQlGx.d.ts} +3 -3
  215. package/dist/{pipeline-DCd5M6Gk.d.ts → pipeline-DCQicwWX.d.cts} +3 -3
  216. package/dist/resolvers.cjs +1 -12
  217. package/dist/resolvers.d.cts +3 -3
  218. package/dist/resolvers.d.ts +3 -3
  219. package/dist/resolvers.js +1 -3
  220. package/dist/services.cjs +1 -20
  221. package/dist/services.js +1 -3
  222. package/dist/testing.cjs +3 -477
  223. package/dist/testing.cjs.map +1 -1
  224. package/dist/testing.d.cts +12 -13
  225. package/dist/testing.d.ts +12 -13
  226. package/dist/testing.js +3 -469
  227. package/dist/testing.js.map +1 -1
  228. package/dist/uom.cjs +1 -55
  229. package/dist/uom.d.cts +3 -3
  230. package/dist/uom.d.ts +3 -3
  231. package/dist/uom.js +1 -10
  232. package/dist/utilities.cjs +1 -36
  233. package/dist/utilities.js +1 -7
  234. package/dist/vm.cjs +1 -295
  235. package/dist/vm.cjs.map +1 -1
  236. package/dist/vm.d.cts +22 -10
  237. package/dist/vm.d.ts +22 -10
  238. package/dist/vm.js +1 -193
  239. package/dist/vm.js.map +1 -1
  240. package/dist/worker.cjs +2 -492
  241. package/dist/worker.cjs.map +1 -1
  242. package/dist/worker.d.cts +19 -20
  243. package/dist/worker.d.ts +19 -20
  244. package/dist/worker.js +2 -483
  245. package/dist/worker.js.map +1 -1
  246. package/package.json +1 -13
  247. package/dist/chunk-267JPOTF.js +0 -406
  248. package/dist/chunk-267JPOTF.js.map +0 -1
  249. package/dist/chunk-2TZKENDH.cjs +0 -448
  250. package/dist/chunk-2TZKENDH.cjs.map +0 -1
  251. package/dist/chunk-3BOK2LDK.js +0 -17
  252. package/dist/chunk-3BOK2LDK.js.map +0 -1
  253. package/dist/chunk-3OWCDIPN.js +0 -215
  254. package/dist/chunk-3OWCDIPN.js.map +0 -1
  255. package/dist/chunk-3VGDNEE3.js +0 -84
  256. package/dist/chunk-3VGDNEE3.js.map +0 -1
  257. package/dist/chunk-4D6NIHE2.js +0 -451
  258. package/dist/chunk-4D6NIHE2.js.map +0 -1
  259. package/dist/chunk-4HQKTMWG.js +0 -7985
  260. package/dist/chunk-4HQKTMWG.js.map +0 -1
  261. package/dist/chunk-536WPM2V.cjs +0 -283
  262. package/dist/chunk-536WPM2V.cjs.map +0 -1
  263. package/dist/chunk-5HRB36DK.js +0 -405
  264. package/dist/chunk-5HRB36DK.js.map +0 -1
  265. package/dist/chunk-5ON7PUAZ.js +0 -12
  266. package/dist/chunk-5ON7PUAZ.js.map +0 -1
  267. package/dist/chunk-7KYSUDQO.js +0 -109
  268. package/dist/chunk-7KYSUDQO.js.map +0 -1
  269. package/dist/chunk-7ZX6B7SY.cjs +0 -3222
  270. package/dist/chunk-7ZX6B7SY.cjs.map +0 -1
  271. package/dist/chunk-ADBA3XBE.cjs +0 -20
  272. package/dist/chunk-ADBA3XBE.cjs.map +0 -1
  273. package/dist/chunk-ALYRJ72W.cjs +0 -434
  274. package/dist/chunk-ALYRJ72W.cjs.map +0 -1
  275. package/dist/chunk-AMOJYLG2.cjs +0 -1692
  276. package/dist/chunk-AMOJYLG2.cjs.map +0 -1
  277. package/dist/chunk-AQNHHJMJ.cjs +0 -261
  278. package/dist/chunk-B4HBEFTB.cjs +0 -375
  279. package/dist/chunk-B4HBEFTB.cjs.map +0 -1
  280. package/dist/chunk-B7LXJ6LC.cjs +0 -36
  281. package/dist/chunk-B7LXJ6LC.cjs.map +0 -1
  282. package/dist/chunk-B7NLZMQ3.cjs +0 -74
  283. package/dist/chunk-B7NLZMQ3.cjs.map +0 -1
  284. package/dist/chunk-BLI4NIQY.js +0 -98
  285. package/dist/chunk-BLI4NIQY.js.map +0 -1
  286. package/dist/chunk-BYJBUL7U.js +0 -499
  287. package/dist/chunk-BYJBUL7U.js.map +0 -1
  288. package/dist/chunk-CCBZZQAE.js +0 -312
  289. package/dist/chunk-CCBZZQAE.js.map +0 -1
  290. package/dist/chunk-CKQMXMHR.cjs +0 -219
  291. package/dist/chunk-CKQMXMHR.cjs.map +0 -1
  292. package/dist/chunk-CUR2WLI4.cjs +0 -507
  293. package/dist/chunk-CUR2WLI4.cjs.map +0 -1
  294. package/dist/chunk-DLEBSLF4.js +0 -336
  295. package/dist/chunk-DLEBSLF4.js.map +0 -1
  296. package/dist/chunk-E23GZEWL.cjs +0 -209
  297. package/dist/chunk-E23GZEWL.cjs.map +0 -1
  298. package/dist/chunk-EJ3ILXX6.cjs +0 -223
  299. package/dist/chunk-EJ3ILXX6.cjs.map +0 -1
  300. package/dist/chunk-ENKKJYD3.js +0 -333
  301. package/dist/chunk-ENKKJYD3.js.map +0 -1
  302. package/dist/chunk-ENRIK36Q.cjs +0 -94
  303. package/dist/chunk-ENRIK36Q.cjs.map +0 -1
  304. package/dist/chunk-ERCOHGXD.js +0 -356
  305. package/dist/chunk-ERCOHGXD.js.map +0 -1
  306. package/dist/chunk-FD5ZZHEU.js +0 -92
  307. package/dist/chunk-FD5ZZHEU.js.map +0 -1
  308. package/dist/chunk-FEAIOR7N.cjs +0 -91
  309. package/dist/chunk-FEAIOR7N.cjs.map +0 -1
  310. package/dist/chunk-GCM5JHMX.js +0 -88
  311. package/dist/chunk-GCM5JHMX.js.map +0 -1
  312. package/dist/chunk-GLA4JXBO.js +0 -204
  313. package/dist/chunk-GLA4JXBO.js.map +0 -1
  314. package/dist/chunk-HIQ5HSZL.cjs +0 -1923
  315. package/dist/chunk-HIQ5HSZL.cjs.map +0 -1
  316. package/dist/chunk-HVRVSI2Z.cjs +0 -829
  317. package/dist/chunk-HVRVSI2Z.cjs.map +0 -1
  318. package/dist/chunk-I4GAWIPW.js +0 -825
  319. package/dist/chunk-I4GAWIPW.js.map +0 -1
  320. package/dist/chunk-J45BCEZ4.cjs +0 -339
  321. package/dist/chunk-J45BCEZ4.cjs.map +0 -1
  322. package/dist/chunk-JG6ZJ2WU.js +0 -1513
  323. package/dist/chunk-JG6ZJ2WU.js.map +0 -1
  324. package/dist/chunk-L2TE7PMO.cjs +0 -14
  325. package/dist/chunk-L2TE7PMO.cjs.map +0 -1
  326. package/dist/chunk-LHZ6VOA7.js +0 -1764
  327. package/dist/chunk-LHZ6VOA7.js.map +0 -1
  328. package/dist/chunk-MN3LHRGV.cjs +0 -8012
  329. package/dist/chunk-MN3LHRGV.cjs.map +0 -1
  330. package/dist/chunk-MVTOCRV2.js +0 -213
  331. package/dist/chunk-MVTOCRV2.js.map +0 -1
  332. package/dist/chunk-N5NNW4VG.cjs +0 -341
  333. package/dist/chunk-N5NNW4VG.cjs.map +0 -1
  334. package/dist/chunk-N7FNVFXW.cjs +0 -32
  335. package/dist/chunk-N7FNVFXW.cjs.map +0 -1
  336. package/dist/chunk-NKW7LKYU.js +0 -3185
  337. package/dist/chunk-NKW7LKYU.js.map +0 -1
  338. package/dist/chunk-NLNDMWZC.js +0 -31
  339. package/dist/chunk-NLNDMWZC.js.map +0 -1
  340. package/dist/chunk-NNQ2TYDF.js +0 -1848
  341. package/dist/chunk-NNQ2TYDF.js.map +0 -1
  342. package/dist/chunk-NNZAEUDW.js +0 -6792
  343. package/dist/chunk-NNZAEUDW.js.map +0 -1
  344. package/dist/chunk-OUHT5Z36.cjs +0 -393
  345. package/dist/chunk-OUHT5Z36.cjs.map +0 -1
  346. package/dist/chunk-QFTDTX6K.cjs +0 -457
  347. package/dist/chunk-QFTDTX6K.cjs.map +0 -1
  348. package/dist/chunk-SBUFNJVE.js +0 -258
  349. package/dist/chunk-SBUFNJVE.js.map +0 -1
  350. package/dist/chunk-SRGQ72IR.cjs +0 -2800
  351. package/dist/chunk-SRGQ72IR.cjs.map +0 -1
  352. package/dist/chunk-SSV46KFA.cjs +0 -112
  353. package/dist/chunk-SSV46KFA.cjs.map +0 -1
  354. package/dist/chunk-T6ZYQJ63.cjs +0 -6807
  355. package/dist/chunk-T6ZYQJ63.cjs.map +0 -1
  356. package/dist/chunk-UKQHXPGW.js +0 -30
  357. package/dist/chunk-UKQHXPGW.js.map +0 -1
  358. package/dist/chunk-UO6BUV6K.js +0 -278
  359. package/dist/chunk-UO6BUV6K.js.map +0 -1
  360. package/dist/chunk-V4XG5QF6.js +0 -1685
  361. package/dist/chunk-V4XG5QF6.js.map +0 -1
  362. package/dist/chunk-VEKIWQ3F.cjs +0 -39
  363. package/dist/chunk-VEKIWQ3F.cjs.map +0 -1
  364. package/dist/chunk-WWQEY7BV.js +0 -67
  365. package/dist/chunk-WWQEY7BV.js.map +0 -1
  366. package/dist/chunk-WXEHD6TT.js +0 -2795
  367. package/dist/chunk-WXEHD6TT.js.map +0 -1
  368. package/dist/chunk-X6K3HUOY.cjs +0 -86
  369. package/dist/chunk-X6K3HUOY.cjs.map +0 -1
  370. package/dist/chunk-XA4CKRML.cjs +0 -316
  371. package/dist/chunk-XA4CKRML.cjs.map +0 -1
  372. package/dist/chunk-XBTEO4OB.js +0 -391
  373. package/dist/chunk-XBTEO4OB.js.map +0 -1
  374. package/dist/chunk-XIYYHA65.cjs +0 -101
  375. package/dist/chunk-XIYYHA65.cjs.map +0 -1
  376. package/dist/chunk-YLJ4XMA6.js +0 -33
  377. package/dist/chunk-YLJ4XMA6.js.map +0 -1
  378. package/dist/chunk-YRIKITGF.cjs +0 -1768
  379. package/dist/chunk-YRIKITGF.cjs.map +0 -1
  380. package/dist/chunk-Z2XP767T.cjs +0 -35
  381. package/dist/chunk-Z2XP767T.cjs.map +0 -1
  382. package/dist/chunk-Z4X2RWOF.js +0 -37
  383. package/dist/chunk-Z4X2RWOF.js.map +0 -1
  384. package/dist/chunk-Z7XGGLI2.js +0 -455
  385. package/dist/chunk-Z7XGGLI2.js.map +0 -1
  386. package/dist/chunk-ZMW6NU2K.cjs +0 -1516
  387. package/dist/chunk-ZMW6NU2K.cjs.map +0 -1
  388. package/dist/chunk-ZVTWQLK4.cjs +0 -459
  389. package/dist/chunk-ZVTWQLK4.cjs.map +0 -1
  390. package/dist/variables.cjs +0 -17
  391. package/dist/variables.cjs.map +0 -1
  392. package/dist/variables.d.cts +0 -87
  393. package/dist/variables.d.ts +0 -87
  394. package/dist/variables.js +0 -4
  395. package/dist/variables.js.map +0 -1
@@ -1,20 +0,0 @@
1
- 'use strict';
2
-
3
- // src/utilities/Strings.ts
4
- function stripQuotes(value) {
5
- return value.startsWith('"') && value.endsWith('"') && value.length >= 2 ? value.slice(1, -1) : value;
6
- }
7
- function countLines(text, stopAfter = Number.MAX_SAFE_INTEGER) {
8
- let count = 1;
9
- let index = text.indexOf("\n");
10
- while (index !== -1) {
11
- if (++count > stopAfter) return count;
12
- index = text.indexOf("\n", index + 1);
13
- }
14
- return count;
15
- }
16
-
17
- exports.countLines = countLines;
18
- exports.stripQuotes = stripQuotes;
19
- //# sourceMappingURL=chunk-ADBA3XBE.cjs.map
20
- //# sourceMappingURL=chunk-ADBA3XBE.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utilities/Strings.ts"],"names":[],"mappings":";;;AASO,SAAS,YAAY,KAAA,EAAuB;AAClD,EAAA,OAAO,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,IAAK,MAAM,QAAA,CAAS,GAAG,CAAA,IAAK,KAAA,CAAM,UAAU,CAAA,GACpE,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GACjB,KAAA;AACJ;AAeO,SAAS,UAAA,CAAW,IAAA,EAAc,SAAA,GAAoB,MAAA,CAAO,gBAAA,EAA0B;AAC7F,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAC7B,EAAA,OAAO,UAAU,EAAA,EAAI;AACpB,IAAA,IAAI,EAAE,KAAA,GAAQ,SAAA,EAAW,OAAO,KAAA;AAChC,IAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,KAAA,GAAQ,CAAC,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,KAAA;AACR","file":"chunk-ADBA3XBE.cjs","sourcesContent":["/**\n * Strips a single layer of matching double quotes from a string, if present.\n * Returns the input unchanged if it isn't fully wrapped in quotes.\n *\n * Was needed for STRING token values, which the lexer used to emit with their\n * surrounding `\"...\"` quotes still attached. `tokenizeString()` now strips them\n * when it builds the token, so on that path this is a no-op kept as a defence\n * against text arriving from somewhere else already quoted.\n */\nexport function stripQuotes(value: string): string {\n\treturn value.startsWith('\"') && value.endsWith('\"') && value.length >= 2\n\t\t? value.slice(1, -1)\n\t\t: value;\n}\n\n/**\n * How many lines `text` has, without splitting it into an array.\n *\n * `split(\"\\n\").length` answers the same question and allocates the whole\n * document to do it, which is the wrong shape for a caller whose next move may\n * be to refuse the document for being too large. Counting stops as soon as the\n * answer is \"more than the caller cares about\".\n *\n * @param text - The document.\n * @param stopAfter - Stop counting once past this many lines.\n * @returns The line count, or `stopAfter + 1` for anything longer. A document\n * with no newline in it is one line, matching `split`.\n */\nexport function countLines(text: string, stopAfter: number = Number.MAX_SAFE_INTEGER): number {\n\tlet count = 1;\n\tlet index = text.indexOf(\"\\n\");\n\twhile (index !== -1) {\n\t\tif (++count > stopAfter) return count;\n\t\tindex = text.indexOf(\"\\n\", index + 1);\n\t}\n\treturn count;\n}\n"]}
@@ -1,434 +0,0 @@
1
- 'use strict';
2
-
3
- // src/packages/colour/CssNamedColours.ts
4
- var CSS_NAMED_COLOURS = {
5
- aliceblue: [240, 248, 255],
6
- antiquewhite: [250, 235, 215],
7
- aqua: [0, 255, 255],
8
- aquamarine: [127, 255, 212],
9
- azure: [240, 255, 255],
10
- beige: [245, 245, 220],
11
- bisque: [255, 228, 196],
12
- black: [0, 0, 0],
13
- blanchedalmond: [255, 235, 205],
14
- blue: [0, 0, 255],
15
- blueviolet: [138, 43, 226],
16
- brown: [165, 42, 42],
17
- burlywood: [222, 184, 135],
18
- cadetblue: [95, 158, 160],
19
- chartreuse: [127, 255, 0],
20
- chocolate: [210, 105, 30],
21
- coral: [255, 127, 80],
22
- cornflowerblue: [100, 149, 237],
23
- cornsilk: [255, 248, 220],
24
- crimson: [220, 20, 60],
25
- cyan: [0, 255, 255],
26
- darkblue: [0, 0, 139],
27
- darkcyan: [0, 139, 139],
28
- darkgoldenrod: [184, 134, 11],
29
- darkgray: [169, 169, 169],
30
- darkgreen: [0, 100, 0],
31
- darkgrey: [169, 169, 169],
32
- darkkhaki: [189, 183, 107],
33
- darkmagenta: [139, 0, 139],
34
- darkolivegreen: [85, 107, 47],
35
- darkorange: [255, 140, 0],
36
- darkorchid: [153, 50, 204],
37
- darkred: [139, 0, 0],
38
- darksalmon: [233, 150, 122],
39
- darkseagreen: [143, 188, 143],
40
- darkslateblue: [72, 61, 139],
41
- darkslategray: [47, 79, 79],
42
- darkslategrey: [47, 79, 79],
43
- darkturquoise: [0, 206, 209],
44
- darkviolet: [148, 0, 211],
45
- deeppink: [255, 20, 147],
46
- deepskyblue: [0, 191, 255],
47
- dimgray: [105, 105, 105],
48
- dimgrey: [105, 105, 105],
49
- dodgerblue: [30, 144, 255],
50
- firebrick: [178, 34, 34],
51
- floralwhite: [255, 250, 240],
52
- forestgreen: [34, 139, 34],
53
- fuchsia: [255, 0, 255],
54
- gainsboro: [220, 220, 220],
55
- ghostwhite: [248, 248, 255],
56
- gold: [255, 215, 0],
57
- goldenrod: [218, 165, 32],
58
- gray: [128, 128, 128],
59
- green: [0, 128, 0],
60
- greenyellow: [173, 255, 47],
61
- grey: [128, 128, 128],
62
- honeydew: [240, 255, 240],
63
- hotpink: [255, 105, 180],
64
- indianred: [205, 92, 92],
65
- indigo: [75, 0, 130],
66
- ivory: [255, 255, 240],
67
- khaki: [240, 230, 140],
68
- lavender: [230, 230, 250],
69
- lavenderblush: [255, 240, 245],
70
- lawngreen: [124, 252, 0],
71
- lemonchiffon: [255, 250, 205],
72
- lightblue: [173, 216, 230],
73
- lightcoral: [240, 128, 128],
74
- lightcyan: [224, 255, 255],
75
- lightgoldenrodyellow: [250, 250, 210],
76
- lightgray: [211, 211, 211],
77
- lightgreen: [144, 238, 144],
78
- lightgrey: [211, 211, 211],
79
- lightpink: [255, 182, 193],
80
- lightsalmon: [255, 160, 122],
81
- lightseagreen: [32, 178, 170],
82
- lightskyblue: [135, 206, 250],
83
- lightslategray: [119, 136, 153],
84
- lightslategrey: [119, 136, 153],
85
- lightsteelblue: [176, 196, 222],
86
- lightyellow: [255, 255, 224],
87
- lime: [0, 255, 0],
88
- limegreen: [50, 205, 50],
89
- linen: [250, 240, 230],
90
- magenta: [255, 0, 255],
91
- maroon: [128, 0, 0],
92
- mediumaquamarine: [102, 205, 170],
93
- mediumblue: [0, 0, 205],
94
- mediumorchid: [186, 85, 211],
95
- mediumpurple: [147, 112, 219],
96
- mediumseagreen: [60, 179, 113],
97
- mediumslateblue: [123, 104, 238],
98
- mediumspringgreen: [0, 250, 154],
99
- mediumturquoise: [72, 209, 204],
100
- mediumvioletred: [199, 21, 133],
101
- midnightblue: [25, 25, 112],
102
- mintcream: [245, 255, 250],
103
- mistyrose: [255, 228, 225],
104
- moccasin: [255, 228, 181],
105
- navajowhite: [255, 222, 173],
106
- navy: [0, 0, 128],
107
- oldlace: [253, 245, 230],
108
- olive: [128, 128, 0],
109
- olivedrab: [107, 142, 35],
110
- orange: [255, 165, 0],
111
- orangered: [255, 69, 0],
112
- orchid: [218, 112, 214],
113
- palegoldenrod: [238, 232, 170],
114
- palegreen: [152, 251, 152],
115
- paleturquoise: [175, 238, 238],
116
- palevioletred: [219, 112, 147],
117
- papayawhip: [255, 239, 213],
118
- peachpuff: [255, 218, 185],
119
- peru: [205, 133, 63],
120
- pink: [255, 192, 203],
121
- plum: [221, 160, 221],
122
- powderblue: [176, 224, 230],
123
- purple: [128, 0, 128],
124
- rebeccapurple: [102, 51, 153],
125
- red: [255, 0, 0],
126
- rosybrown: [188, 143, 143],
127
- royalblue: [65, 105, 225],
128
- saddlebrown: [139, 69, 19],
129
- salmon: [250, 128, 114],
130
- sandybrown: [244, 164, 96],
131
- seagreen: [46, 139, 87],
132
- seashell: [255, 245, 238],
133
- sienna: [160, 82, 45],
134
- silver: [192, 192, 192],
135
- skyblue: [135, 206, 235],
136
- slateblue: [106, 90, 205],
137
- slategray: [112, 128, 144],
138
- slategrey: [112, 128, 144],
139
- snow: [255, 250, 250],
140
- springgreen: [0, 255, 127],
141
- steelblue: [70, 130, 180],
142
- tan: [210, 180, 140],
143
- teal: [0, 128, 128],
144
- thistle: [216, 191, 216],
145
- tomato: [255, 99, 71],
146
- turquoise: [64, 224, 208],
147
- violet: [238, 130, 238],
148
- wheat: [245, 222, 179],
149
- white: [255, 255, 255],
150
- whitesmoke: [245, 245, 245],
151
- yellow: [255, 255, 0],
152
- yellowgreen: [154, 205, 50]
153
- };
154
-
155
- // src/packages/colour/ColourMath.ts
156
- function clamp255(x) {
157
- return Math.min(255, Math.max(0, Math.round(x)));
158
- }
159
- function clamp01(x) {
160
- return Math.min(1, Math.max(0, x));
161
- }
162
- function hexByte(n) {
163
- return clamp255(n).toString(16).padStart(2, "0");
164
- }
165
- function formatAlpha(a) {
166
- return String(Number(a.toFixed(3)));
167
- }
168
- function parseHex(input) {
169
- const s = input.startsWith("#") ? input.slice(1) : input;
170
- if (!/^[0-9a-fA-F]+$/.test(s)) return null;
171
- const dbl = (h) => parseInt(h + h, 16);
172
- const pair = (h) => parseInt(h, 16);
173
- switch (s.length) {
174
- case 3:
175
- return { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: 1, format: "hex" };
176
- case 4:
177
- return { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: dbl(s[3]) / 255, format: "hex" };
178
- case 6:
179
- return { r: pair(s.slice(0, 2)), g: pair(s.slice(2, 4)), b: pair(s.slice(4, 6)), a: 1, format: "hex" };
180
- case 8:
181
- return {
182
- r: pair(s.slice(0, 2)),
183
- g: pair(s.slice(2, 4)),
184
- b: pair(s.slice(4, 6)),
185
- a: pair(s.slice(6, 8)) / 255,
186
- format: "hex"
187
- };
188
- default:
189
- return null;
190
- }
191
- }
192
- function namedColour(name) {
193
- const key = name.trim().toLowerCase();
194
- if (key === "transparent") return { r: 0, g: 0, b: 0, a: 0, format: "named", name: "transparent" };
195
- const rgb = CSS_NAMED_COLOURS[key];
196
- if (!rgb) return null;
197
- return { r: rgb[0], g: rgb[1], b: rgb[2], a: 1, format: "named", name: key };
198
- }
199
- function parseColour(input) {
200
- const trimmed = input.trim();
201
- if (trimmed.startsWith("#") || /^[0-9a-fA-F]{3,8}$/.test(trimmed)) {
202
- const hex = parseHex(trimmed);
203
- if (hex) return hex;
204
- }
205
- return namedColour(trimmed);
206
- }
207
- function rgbToHsl(r, g, b) {
208
- const rn = r / 255;
209
- const gn = g / 255;
210
- const bn = b / 255;
211
- const max = Math.max(rn, gn, bn);
212
- const min = Math.min(rn, gn, bn);
213
- const l = (max + min) / 2;
214
- if (max === min) return { h: 0, s: 0, l };
215
- const d = max - min;
216
- const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
217
- let h;
218
- if (max === rn) h = (gn - bn) / d + (gn < bn ? 6 : 0);
219
- else if (max === gn) h = (bn - rn) / d + 2;
220
- else h = (rn - gn) / d + 4;
221
- return { h: h * 60, s, l };
222
- }
223
- function hslToRgb(h, s, l) {
224
- if (s === 0) {
225
- const v = clamp255(l * 255);
226
- return { r: v, g: v, b: v };
227
- }
228
- const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
229
- const p = 2 * l - q;
230
- const hn = (h % 360 + 360) % 360 / 360;
231
- const hue = (t) => {
232
- let tt = t;
233
- if (tt < 0) tt += 1;
234
- if (tt > 1) tt -= 1;
235
- if (tt < 1 / 6) return p + (q - p) * 6 * tt;
236
- if (tt < 1 / 2) return q;
237
- if (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;
238
- return p;
239
- };
240
- return {
241
- r: clamp255(hue(hn + 1 / 3) * 255),
242
- g: clamp255(hue(hn) * 255),
243
- b: clamp255(hue(hn - 1 / 3) * 255)
244
- };
245
- }
246
- function toHexString(c) {
247
- const base = `#${hexByte(c.r)}${hexByte(c.g)}${hexByte(c.b)}`;
248
- return c.a < 1 ? `${base}${hexByte(c.a * 255)}` : base;
249
- }
250
- function formatColour(c) {
251
- switch (c.format) {
252
- case "rgb":
253
- return `rgb(${c.r}, ${c.g}, ${c.b})`;
254
- case "rgba":
255
- return `rgba(${c.r}, ${c.g}, ${c.b}, ${formatAlpha(c.a)})`;
256
- case "hsl": {
257
- const { h, s, l } = rgbToHsl(c.r, c.g, c.b);
258
- return `hsl(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%)`;
259
- }
260
- case "hsla": {
261
- const { h, s, l } = rgbToHsl(c.r, c.g, c.b);
262
- return `hsla(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%, ${formatAlpha(c.a)})`;
263
- }
264
- case "named":
265
- return c.name ?? toHexString(c);
266
- case "hex":
267
- default:
268
- return toHexString(c);
269
- }
270
- }
271
- function linearise(channel8) {
272
- const cs = channel8 / 255;
273
- return cs <= 0.03928 ? cs / 12.92 : Math.pow((cs + 0.055) / 1.055, 2.4);
274
- }
275
- function relativeLuminance(c) {
276
- return 0.2126 * linearise(c.r) + 0.7152 * linearise(c.g) + 0.0722 * linearise(c.b);
277
- }
278
- function contrastRatio(a, b) {
279
- const la = relativeLuminance(a) + 0.05;
280
- const lb = relativeLuminance(b) + 0.05;
281
- return la > lb ? la / lb : lb / la;
282
- }
283
- function derive(c, next) {
284
- const format = c.format === "named" ? "hex" : c.format;
285
- return {
286
- r: next.r ?? c.r,
287
- g: next.g ?? c.g,
288
- b: next.b ?? c.b,
289
- a: next.a ?? c.a,
290
- format
291
- };
292
- }
293
- function adjustHsl(c, fn) {
294
- const hsl = rgbToHsl(c.r, c.g, c.b);
295
- fn(hsl);
296
- const { r, g, b } = hslToRgb(hsl.h, hsl.s, hsl.l);
297
- return derive(c, { r, g, b });
298
- }
299
- function lighten(c, amount) {
300
- return adjustHsl(c, (hsl) => hsl.l = clamp01(hsl.l + amount));
301
- }
302
- function darken(c, amount) {
303
- return adjustHsl(c, (hsl) => hsl.l = clamp01(hsl.l - amount));
304
- }
305
- function saturate(c, amount) {
306
- return adjustHsl(c, (hsl) => hsl.s = clamp01(hsl.s + amount));
307
- }
308
- function desaturate(c, amount) {
309
- return adjustHsl(c, (hsl) => hsl.s = clamp01(hsl.s - amount));
310
- }
311
- function rotateHue(c, degrees) {
312
- return adjustHsl(c, (hsl) => hsl.h = ((hsl.h + degrees) % 360 + 360) % 360);
313
- }
314
- function complement(c) {
315
- return rotateHue(c, 180);
316
- }
317
- function grayscale(c) {
318
- const y = clamp255(0.299 * c.r + 0.587 * c.g + 0.114 * c.b);
319
- return derive(c, { r: y, g: y, b: y });
320
- }
321
- function invert(c, amount = 1) {
322
- const t = clamp01(amount);
323
- return derive(c, {
324
- r: clamp255(c.r + (255 - 2 * c.r) * t),
325
- g: clamp255(c.g + (255 - 2 * c.g) * t),
326
- b: clamp255(c.b + (255 - 2 * c.b) * t)
327
- });
328
- }
329
- function mix(a, b, weight = 0.5) {
330
- const t = clamp01(weight);
331
- const lerp = (x, y) => x * (1 - t) + y * t;
332
- const format = a.format === "named" ? "hex" : a.format;
333
- return {
334
- r: clamp255(lerp(a.r, b.r)),
335
- g: clamp255(lerp(a.g, b.g)),
336
- b: clamp255(lerp(a.b, b.b)),
337
- a: clamp01(lerp(a.a, b.a)),
338
- format
339
- };
340
- }
341
- function withAlpha(c, alpha) {
342
- const a = clamp01(alpha);
343
- let format = c.format;
344
- if (a < 1) {
345
- if (format === "rgb") format = "rgba";
346
- else if (format === "hsl") format = "hsla";
347
- else if (format === "named") format = "hex";
348
- }
349
- return { r: c.r, g: c.g, b: c.b, a, format };
350
- }
351
- var WHITE = { r: 255, g: 255, b: 255, a: 1, format: "hex" };
352
- var BLACK = { r: 0, g: 0, b: 0, a: 1, format: "hex" };
353
- var MID_GREY = { r: 128, g: 128, b: 128, a: 1};
354
- function hsvToRgb(h, s, v) {
355
- const hh = (h % 360 + 360) % 360 / 60;
356
- const c = v * s;
357
- const x = c * (1 - Math.abs(hh % 2 - 1));
358
- const m = v - c;
359
- let r = 0;
360
- let g = 0;
361
- let b = 0;
362
- if (hh < 1) [r, g, b] = [c, x, 0];
363
- else if (hh < 2) [r, g, b] = [x, c, 0];
364
- else if (hh < 3) [r, g, b] = [0, c, x];
365
- else if (hh < 4) [r, g, b] = [0, x, c];
366
- else if (hh < 5) [r, g, b] = [x, 0, c];
367
- else [r, g, b] = [c, 0, x];
368
- return { r: clamp255((r + m) * 255), g: clamp255((g + m) * 255), b: clamp255((b + m) * 255) };
369
- }
370
- function hwbToRgb(h, w, b) {
371
- const wh = clamp01(w);
372
- const bl = clamp01(b);
373
- if (wh + bl >= 1) {
374
- const grey = clamp255(wh / (wh + bl) * 255);
375
- return { r: grey, g: grey, b: grey };
376
- }
377
- const base = hslToRgb(h, 1, 0.5);
378
- const channel = (ch) => clamp255(ch * (1 - wh - bl) + wh * 255);
379
- return { r: channel(base.r), g: channel(base.g), b: channel(base.b) };
380
- }
381
- function tint(c, amount) {
382
- return mix(c, WHITE, amount);
383
- }
384
- function shade(c, amount) {
385
- return mix(c, BLACK, amount);
386
- }
387
- function tone(c, amount) {
388
- return mix(c, MID_GREY, amount);
389
- }
390
- function isDark(c) {
391
- return contrastRatio(c, WHITE) >= contrastRatio(c, BLACK);
392
- }
393
- function readableColour(background) {
394
- return isDark(background) ? WHITE : BLACK;
395
- }
396
- var WCAG_THRESHOLDS = { aa: 4.5, aaa: 7, aaLarge: 3, aaaLarge: 4.5 };
397
- function wcagLevel(a, b) {
398
- const ratio = contrastRatio(a, b);
399
- if (ratio >= WCAG_THRESHOLDS.aaa) return "AAA";
400
- if (ratio >= WCAG_THRESHOLDS.aa) return "AA";
401
- if (ratio >= WCAG_THRESHOLDS.aaLarge) return "AA Large";
402
- return "Fail";
403
- }
404
-
405
- exports.WCAG_THRESHOLDS = WCAG_THRESHOLDS;
406
- exports.clamp01 = clamp01;
407
- exports.clamp255 = clamp255;
408
- exports.complement = complement;
409
- exports.contrastRatio = contrastRatio;
410
- exports.darken = darken;
411
- exports.desaturate = desaturate;
412
- exports.formatColour = formatColour;
413
- exports.grayscale = grayscale;
414
- exports.hslToRgb = hslToRgb;
415
- exports.hsvToRgb = hsvToRgb;
416
- exports.hwbToRgb = hwbToRgb;
417
- exports.invert = invert;
418
- exports.isDark = isDark;
419
- exports.lighten = lighten;
420
- exports.mix = mix;
421
- exports.parseColour = parseColour;
422
- exports.readableColour = readableColour;
423
- exports.relativeLuminance = relativeLuminance;
424
- exports.rgbToHsl = rgbToHsl;
425
- exports.rotateHue = rotateHue;
426
- exports.saturate = saturate;
427
- exports.shade = shade;
428
- exports.tint = tint;
429
- exports.toHexString = toHexString;
430
- exports.tone = tone;
431
- exports.wcagLevel = wcagLevel;
432
- exports.withAlpha = withAlpha;
433
- //# sourceMappingURL=chunk-ALYRJ72W.cjs.map
434
- //# sourceMappingURL=chunk-ALYRJ72W.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/packages/colour/CssNamedColours.ts","../src/packages/colour/ColourMath.ts"],"names":[],"mappings":"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","file":"chunk-ALYRJ72W.cjs","sourcesContent":["/**\n * The complete CSS Color Module Level 4 named-colour set, as canonical sRGB\n * `[r, g, b]` triples (0-255). These are the same values every browser resolves\n * a keyword to, so `color(\"rebeccapurple\")` matches what the page would render.\n *\n * `transparent` is handled by the caller (it is `rgba(0, 0, 0, 0)`, an alpha the\n * triples here cannot express) and `currentColor` is deliberately absent: it is\n * context-dependent, not a fixed colour.\n */\nexport const CSS_NAMED_COLOURS: Readonly<Record<string, readonly [number, number, number]>> = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n};\n","/**\n * Pure colour maths for the colour package. Everything here is a plain function\n * over numbers and {@link ColourData} with no engine imports and no side effects,\n * so it is trivially unit-testable and can be reused by a host renderer (the docs\n * notepad reads these to draw a swatch). Canonical storage is sRGB: `r`,`g`,`b`\n * are integers 0-255 and `a` is 0-1. HSL is derived on demand and re-quantised,\n * never stored, so equal-and-opposite operations return to a stable colour.\n */\nimport type { ColourData, ColourFormat } from \"@solve-js/vm/Value\";\nimport { CSS_NAMED_COLOURS } from \"./CssNamedColours\";\n\n/** Round and clamp a value to a valid 0-255 sRGB channel. */\nexport function clamp255(x: number): number {\n\treturn Math.min(255, Math.max(0, Math.round(x)));\n}\n\n/** Clamp a value to the 0-1 range used for alpha and normalised HSL. */\nexport function clamp01(x: number): number {\n\treturn Math.min(1, Math.max(0, x));\n}\n\nfunction hexByte(n: number): string {\n\treturn clamp255(n).toString(16).padStart(2, \"0\");\n}\n\n/**\n * Render the alpha channel the way CSS does: a plain decimal with no trailing\n * zeros (`1`, `0.5`, `0.333`), so `rgba(255, 0, 0, 0.5)` reads back cleanly.\n */\nfunction formatAlpha(a: number): string {\n\treturn String(Number(a.toFixed(3)));\n}\n\n// ── Parsing ─────────────────────────────────────────────────────────────\n\n/**\n * Parse a CSS hex colour: `#RGB`, `#RGBA`, `#RRGGBB` or `#RRGGBBAA`,\n * case-insensitive, leading `#` optional. Three and four digit forms expand each\n * nibble (`f` becomes `ff`), matching a browser. Any other length or a non-hex\n * character returns null so the caller can raise a clear error.\n */\nexport function parseHex(input: string): ColourData | null {\n\tconst s = input.startsWith(\"#\") ? input.slice(1) : input;\n\tif (!/^[0-9a-fA-F]+$/.test(s)) return null;\n\tconst dbl = (h: string): number => parseInt(h + h, 16);\n\tconst pair = (h: string): number => parseInt(h, 16);\n\tswitch (s.length) {\n\t\tcase 3:\n\t\t\treturn { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: 1, format: \"hex\" };\n\t\tcase 4:\n\t\t\treturn { r: dbl(s[0]), g: dbl(s[1]), b: dbl(s[2]), a: dbl(s[3]) / 255, format: \"hex\" };\n\t\tcase 6:\n\t\t\treturn { r: pair(s.slice(0, 2)), g: pair(s.slice(2, 4)), b: pair(s.slice(4, 6)), a: 1, format: \"hex\" };\n\t\tcase 8:\n\t\t\treturn {\n\t\t\t\tr: pair(s.slice(0, 2)),\n\t\t\t\tg: pair(s.slice(2, 4)),\n\t\t\t\tb: pair(s.slice(4, 6)),\n\t\t\t\ta: pair(s.slice(6, 8)) / 255,\n\t\t\t\tformat: \"hex\",\n\t\t\t};\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Resolve a CSS named colour (case-insensitive), including `transparent`. Returns\n * null for an unknown keyword so the caller can raise an error.\n */\nexport function namedColour(name: string): ColourData | null {\n\tconst key = name.trim().toLowerCase();\n\tif (key === \"transparent\") return { r: 0, g: 0, b: 0, a: 0, format: \"named\", name: \"transparent\" };\n\tconst rgb = CSS_NAMED_COLOURS[key];\n\tif (!rgb) return null;\n\treturn { r: rgb[0], g: rgb[1], b: rgb[2], a: 1, format: \"named\", name: key };\n}\n\n/** Parse either a hex string or a named colour; null if neither. */\nexport function parseColour(input: string): ColourData | null {\n\tconst trimmed = input.trim();\n\tif (trimmed.startsWith(\"#\") || /^[0-9a-fA-F]{3,8}$/.test(trimmed)) {\n\t\tconst hex = parseHex(trimmed);\n\t\tif (hex) return hex;\n\t}\n\treturn namedColour(trimmed);\n}\n\n// ── RGB <-> HSL ─────────────────────────────────────────────────────────\n\n/** Convert sRGB (0-255) to HSL with h in [0, 360), s and l in [0, 1]. */\nexport function rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n\tconst rn = r / 255;\n\tconst gn = g / 255;\n\tconst bn = b / 255;\n\tconst max = Math.max(rn, gn, bn);\n\tconst min = Math.min(rn, gn, bn);\n\tconst l = (max + min) / 2;\n\tif (max === min) return { h: 0, s: 0, l };\n\tconst d = max - min;\n\tconst s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\tlet h: number;\n\tif (max === rn) h = (gn - bn) / d + (gn < bn ? 6 : 0);\n\telse if (max === gn) h = (bn - rn) / d + 2;\n\telse h = (rn - gn) / d + 4;\n\treturn { h: h * 60, s, l };\n}\n\n/** Convert HSL (h in degrees, s and l in [0, 1]) to sRGB (0-255 integers). */\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n\tif (s === 0) {\n\t\tconst v = clamp255(l * 255);\n\t\treturn { r: v, g: v, b: v };\n\t}\n\tconst q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\tconst p = 2 * l - q;\n\tconst hn = (((h % 360) + 360) % 360) / 360;\n\tconst hue = (t: number): number => {\n\t\tlet tt = t;\n\t\tif (tt < 0) tt += 1;\n\t\tif (tt > 1) tt -= 1;\n\t\tif (tt < 1 / 6) return p + (q - p) * 6 * tt;\n\t\tif (tt < 1 / 2) return q;\n\t\tif (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;\n\t\treturn p;\n\t};\n\treturn {\n\t\tr: clamp255(hue(hn + 1 / 3) * 255),\n\t\tg: clamp255(hue(hn) * 255),\n\t\tb: clamp255(hue(hn - 1 / 3) * 255),\n\t};\n}\n\n// ── Display ─────────────────────────────────────────────────────────────\n\n/** Canonical hex string, `#rrggbb`, extended to `#rrggbbaa` only when a < 1. */\nexport function toHexString(c: ColourData): string {\n\tconst base = `#${hexByte(c.r)}${hexByte(c.g)}${hexByte(c.b)}`;\n\treturn c.a < 1 ? `${base}${hexByte(c.a * 255)}` : base;\n}\n\n/**\n * Render a colour as the CSS string matching its authored `format`. Always valid\n * CSS, so a host can drop it straight into a `background` (this is both the\n * displayed answer text and the DTO `css` field).\n */\nexport function formatColour(c: ColourData): string {\n\tswitch (c.format) {\n\t\tcase \"rgb\":\n\t\t\treturn `rgb(${c.r}, ${c.g}, ${c.b})`;\n\t\tcase \"rgba\":\n\t\t\treturn `rgba(${c.r}, ${c.g}, ${c.b}, ${formatAlpha(c.a)})`;\n\t\tcase \"hsl\": {\n\t\t\tconst { h, s, l } = rgbToHsl(c.r, c.g, c.b);\n\t\t\treturn `hsl(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%)`;\n\t\t}\n\t\tcase \"hsla\": {\n\t\t\tconst { h, s, l } = rgbToHsl(c.r, c.g, c.b);\n\t\t\treturn `hsla(${Math.round(h)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%, ${formatAlpha(c.a)})`;\n\t\t}\n\t\tcase \"named\":\n\t\t\treturn c.name ?? toHexString(c);\n\t\tcase \"hex\":\n\t\tdefault:\n\t\t\treturn toHexString(c);\n\t}\n}\n\n// ── WCAG luminance and contrast ─────────────────────────────────────────\n\nfunction linearise(channel8: number): number {\n\tconst cs = channel8 / 255;\n\treturn cs <= 0.03928 ? cs / 12.92 : Math.pow((cs + 0.055) / 1.055, 2.4);\n}\n\n/** WCAG relative luminance, 0 (black) to 1 (white). Alpha is ignored, per WCAG. */\nexport function relativeLuminance(c: ColourData): number {\n\treturn 0.2126 * linearise(c.r) + 0.7152 * linearise(c.g) + 0.0722 * linearise(c.b);\n}\n\n/** WCAG contrast ratio between two colours, 1 (identical) to 21 (black on white). */\nexport function contrastRatio(a: ColourData, b: ColourData): number {\n\tconst la = relativeLuminance(a) + 0.05;\n\tconst lb = relativeLuminance(b) + 0.05;\n\treturn la > lb ? la / lb : lb / la;\n}\n\n// ── Operations ──────────────────────────────────────────────────────────\n\n/**\n * Rebuild a colour from new channels, preserving the display format and alpha\n * unless overridden. A `named` colour whose channels change is no longer that\n * keyword, so it falls back to hex display.\n */\nfunction derive(c: ColourData, next: { r?: number; g?: number; b?: number; a?: number }): ColourData {\n\tconst format: ColourFormat = c.format === \"named\" ? \"hex\" : c.format;\n\treturn {\n\t\tr: next.r ?? c.r,\n\t\tg: next.g ?? c.g,\n\t\tb: next.b ?? c.b,\n\t\ta: next.a ?? c.a,\n\t\tformat,\n\t};\n}\n\nfunction adjustHsl(c: ColourData, fn: (hsl: { h: number; s: number; l: number }) => void): ColourData {\n\tconst hsl = rgbToHsl(c.r, c.g, c.b);\n\tfn(hsl);\n\tconst { r, g, b } = hslToRgb(hsl.h, hsl.s, hsl.l);\n\treturn derive(c, { r, g, b });\n}\n\n/** Increase lightness by `amount` (a fraction 0-1). */\nexport function lighten(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.l = clamp01(hsl.l + amount)));\n}\n\n/** Decrease lightness by `amount`. */\nexport function darken(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.l = clamp01(hsl.l - amount)));\n}\n\n/** Increase saturation by `amount`. */\nexport function saturate(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.s = clamp01(hsl.s + amount)));\n}\n\n/** Decrease saturation by `amount`. */\nexport function desaturate(c: ColourData, amount: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.s = clamp01(hsl.s - amount)));\n}\n\n/** Rotate the hue by `degrees` (wraps at 360). */\nexport function rotateHue(c: ColourData, degrees: number): ColourData {\n\treturn adjustHsl(c, (hsl) => (hsl.h = ((hsl.h + degrees) % 360 + 360) % 360));\n}\n\n/** The colour on the opposite side of the wheel (hue + 180). */\nexport function complement(c: ColourData): ColourData {\n\treturn rotateHue(c, 180);\n}\n\n/** Convert to grey using Rec.601 luma, preserving alpha. */\nexport function grayscale(c: ColourData): ColourData {\n\tconst y = clamp255(0.299 * c.r + 0.587 * c.g + 0.114 * c.b);\n\treturn derive(c, { r: y, g: y, b: y });\n}\n\n/** Invert each channel by `amount` (1 = full inversion), preserving alpha. */\nexport function invert(c: ColourData, amount = 1): ColourData {\n\tconst t = clamp01(amount);\n\treturn derive(c, {\n\t\tr: clamp255(c.r + (255 - 2 * c.r) * t),\n\t\tg: clamp255(c.g + (255 - 2 * c.g) * t),\n\t\tb: clamp255(c.b + (255 - 2 * c.b) * t),\n\t});\n}\n\n/**\n * Blend two colours by linear sRGB interpolation, `weight` toward `b` (0.5 is the\n * midpoint). This matches Sass `mix()` and DevTools blending; it is not\n * perceptually uniform (that would be Oklab), a deliberate zero-dependency choice.\n */\nexport function mix(a: ColourData, b: ColourData, weight = 0.5): ColourData {\n\tconst t = clamp01(weight);\n\tconst lerp = (x: number, y: number): number => x * (1 - t) + y * t;\n\tconst format: ColourFormat = a.format === \"named\" ? \"hex\" : a.format;\n\treturn {\n\t\tr: clamp255(lerp(a.r, b.r)),\n\t\tg: clamp255(lerp(a.g, b.g)),\n\t\tb: clamp255(lerp(a.b, b.b)),\n\t\ta: clamp01(lerp(a.a, b.a)),\n\t\tformat,\n\t};\n}\n\n/** Set the alpha channel, upgrading the display format so the alpha shows. */\nexport function withAlpha(c: ColourData, alpha: number): ColourData {\n\tconst a = clamp01(alpha);\n\tlet format: ColourFormat = c.format;\n\tif (a < 1) {\n\t\tif (format === \"rgb\") format = \"rgba\";\n\t\telse if (format === \"hsl\") format = \"hsla\";\n\t\telse if (format === \"named\") format = \"hex\";\n\t}\n\treturn { r: c.r, g: c.g, b: c.b, a, format };\n}\n\n// ── Additional colour spaces and helpers ────────────────────────────────\n\n/** Opaque white and black, reused by the luminance-based helpers below. */\nconst WHITE: ColourData = { r: 255, g: 255, b: 255, a: 1, format: \"hex\" };\nconst BLACK: ColourData = { r: 0, g: 0, b: 0, a: 1, format: \"hex\" };\nconst MID_GREY: ColourData = { r: 128, g: 128, b: 128, a: 1, format: \"hex\" };\n\n/**\n * Convert HSV/HSB (hue in degrees, saturation and value in 0-1) to sRGB. HSV is\n * the wheel most colour pickers present (DevTools included), distinct from HSL:\n * `value` is how bright the colour is, where HSL's `lightness` is how close to\n * white or black.\n */\nexport function hsvToRgb(h: number, s: number, v: number): { r: number; g: number; b: number } {\n\tconst hh = ((((h % 360) + 360) % 360)) / 60;\n\tconst c = v * s;\n\tconst x = c * (1 - Math.abs((hh % 2) - 1));\n\tconst m = v - c;\n\tlet r = 0;\n\tlet g = 0;\n\tlet b = 0;\n\tif (hh < 1) [r, g, b] = [c, x, 0];\n\telse if (hh < 2) [r, g, b] = [x, c, 0];\n\telse if (hh < 3) [r, g, b] = [0, c, x];\n\telse if (hh < 4) [r, g, b] = [0, x, c];\n\telse if (hh < 5) [r, g, b] = [x, 0, c];\n\telse [r, g, b] = [c, 0, x];\n\treturn { r: clamp255((r + m) * 255), g: clamp255((g + m) * 255), b: clamp255((b + m) * 255) };\n}\n\n/**\n * Convert HWB (hue in degrees, whiteness and blackness in 0-1) to sRGB, the CSS\n * Color 4 model: start from the pure hue and mix in white and black. When\n * whiteness and blackness sum to 1 or more the hue washes out to grey.\n */\nexport function hwbToRgb(h: number, w: number, b: number): { r: number; g: number; b: number } {\n\tconst wh = clamp01(w);\n\tconst bl = clamp01(b);\n\tif (wh + bl >= 1) {\n\t\tconst grey = clamp255((wh / (wh + bl)) * 255);\n\t\treturn { r: grey, g: grey, b: grey };\n\t}\n\tconst base = hslToRgb(h, 1, 0.5);\n\tconst channel = (ch: number): number => clamp255(ch * (1 - wh - bl) + wh * 255);\n\treturn { r: channel(base.r), g: channel(base.g), b: channel(base.b) };\n}\n\n/** Mix toward white by `amount` (a tint). */\nexport function tint(c: ColourData, amount: number): ColourData {\n\treturn mix(c, WHITE, amount);\n}\n\n/** Mix toward black by `amount` (a shade). */\nexport function shade(c: ColourData, amount: number): ColourData {\n\treturn mix(c, BLACK, amount);\n}\n\n/** Mix toward mid-grey by `amount` (a tone). */\nexport function tone(c: ColourData, amount: number): ColourData {\n\treturn mix(c, MID_GREY, amount);\n}\n\n/**\n * Whether a colour reads as dark, meaning white text on it has at least as much\n * WCAG contrast as black text does. Backs {@link readableColour} and the\n * `isdark`/`islight` predicates.\n */\nexport function isDark(c: ColourData): boolean {\n\treturn contrastRatio(c, WHITE) >= contrastRatio(c, BLACK);\n}\n\n/** Black or white, whichever has the higher WCAG contrast against `background`. */\nexport function readableColour(background: ColourData): ColourData {\n\treturn isDark(background) ? WHITE : BLACK;\n}\n\n/**\n * WCAG 2.x minimum contrast ratios. Normal text needs 4.5 (AA) or 7 (AAA); large\n * text (>= 18pt, or >= 14pt bold) and UI components need 3 (AA) or 4.5 (AAA).\n */\nexport const WCAG_THRESHOLDS = { aa: 4.5, aaa: 7, aaLarge: 3, aaaLarge: 4.5 } as const;\n\n/** The four WCAG ratings this package reports, best first. */\nexport type WcagLevel = \"AAA\" | \"AA\" | \"AA Large\" | \"Fail\";\n\n/**\n * The best WCAG 2.x rating two colours pass for normal-size text: `AAA` (ratio\n * >= 7), `AA` (>= 4.5), `AA Large` (>= 3, which meets AA only for large text or\n * UI), or `Fail` (< 3). This is the badge a contrast checker shows.\n */\nexport function wcagLevel(a: ColourData, b: ColourData): WcagLevel {\n\tconst ratio = contrastRatio(a, b);\n\tif (ratio >= WCAG_THRESHOLDS.aaa) return \"AAA\";\n\tif (ratio >= WCAG_THRESHOLDS.aa) return \"AA\";\n\tif (ratio >= WCAG_THRESHOLDS.aaLarge) return \"AA Large\";\n\treturn \"Fail\";\n}\n"]}