@ixfx/components 0.2.4 → 0.2.5

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 (717) hide show
  1. package/bundle/index.d.ts +130 -130
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +2196 -2196
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +97 -0
  6. package/dist/ac-text.d.ts.map +1 -0
  7. package/dist/ac-text.js +484 -0
  8. package/dist/ac-text.js.map +1 -0
  9. package/dist/{button/button-styles.js → button-DgKUzE5o.js} +49 -3
  10. package/dist/button-DgKUzE5o.js.map +1 -0
  11. package/dist/button.d.ts +21 -0
  12. package/dist/button.d.ts.map +1 -0
  13. package/dist/button.js +3 -0
  14. package/dist/checkbox.d.ts +27 -57
  15. package/dist/checkbox.d.ts.map +1 -1
  16. package/dist/checkbox.js +74 -88
  17. package/dist/checkbox.js.map +1 -1
  18. package/dist/chunk-pbuEa-1d.js +13 -0
  19. package/dist/colour-C3MQIjFJ-BJV-QC-3.js +4138 -0
  20. package/dist/colour-C3MQIjFJ-BJV-QC-3.js.map +1 -0
  21. package/dist/colour-picker-Bw-AZoWx.js +922 -0
  22. package/dist/colour-picker-Bw-AZoWx.js.map +1 -0
  23. package/dist/colour-picker.d.ts +2 -0
  24. package/dist/colour-picker.js +2 -0
  25. package/dist/crumbs.d.ts +92 -0
  26. package/dist/crumbs.d.ts.map +1 -0
  27. package/dist/crumbs.js +789 -0
  28. package/dist/crumbs.js.map +1 -0
  29. package/dist/data-display.d.ts +23 -18
  30. package/dist/data-display.d.ts.map +1 -1
  31. package/dist/data-display.js +82 -108
  32. package/dist/data-display.js.map +1 -1
  33. package/dist/decorate-BZbkqIhA.js +9 -0
  34. package/dist/defaults-FEZaGiYZ.js +38 -0
  35. package/dist/defaults-FEZaGiYZ.js.map +1 -0
  36. package/dist/dist-By5URG0Y.js +1290 -0
  37. package/dist/dist-By5URG0Y.js.map +1 -0
  38. package/dist/dist-D7kJgnSE.js +1039 -0
  39. package/dist/dist-D7kJgnSE.js.map +1 -0
  40. package/dist/editable-label.d.ts +71 -0
  41. package/dist/editable-label.d.ts.map +1 -0
  42. package/dist/editable-label.js +279 -0
  43. package/dist/editable-label.js.map +1 -0
  44. package/dist/hex-editor-Gib1Grg2.d.ts +131 -0
  45. package/dist/hex-editor-Gib1Grg2.d.ts.map +1 -0
  46. package/dist/hex-editor-Wd6ZtZA2.js +1147 -0
  47. package/dist/hex-editor-Wd6ZtZA2.js.map +1 -0
  48. package/dist/hex.d.ts +2 -0
  49. package/dist/hex.js +2 -0
  50. package/dist/highlight-CAjwQ4GE.js +50 -0
  51. package/dist/highlight-CAjwQ4GE.js.map +1 -0
  52. package/dist/icon-BR5aTIiP.js +100 -0
  53. package/dist/icon-BR5aTIiP.js.map +1 -0
  54. package/dist/icon-DQKdfR7U.d.ts +36 -0
  55. package/dist/icon-DQKdfR7U.d.ts.map +1 -0
  56. package/dist/icons.d.ts +3 -0
  57. package/dist/icons.js +9 -0
  58. package/dist/icons.js.map +1 -0
  59. package/dist/incr-search-BjCNClnC.js +311 -0
  60. package/dist/incr-search-BjCNClnC.js.map +1 -0
  61. package/dist/incr-search.d.ts +2 -0
  62. package/dist/incr-search.js +3 -0
  63. package/dist/index-B1hNR7Z9.d.ts +36 -0
  64. package/dist/index-B1hNR7Z9.d.ts.map +1 -0
  65. package/dist/index-C5dK8RZa.d.ts +23 -0
  66. package/dist/index-C5dK8RZa.d.ts.map +1 -0
  67. package/dist/index-C9iBN908.d.ts +160 -0
  68. package/dist/index-C9iBN908.d.ts.map +1 -0
  69. package/dist/index-CPVcTTXo.d.ts +396 -0
  70. package/dist/index-CPVcTTXo.d.ts.map +1 -0
  71. package/dist/index-CQxanqXF.d.ts +183 -0
  72. package/dist/index-CQxanqXF.d.ts.map +1 -0
  73. package/dist/index-CpbBI3n7.d.ts +1239 -0
  74. package/dist/index-CpbBI3n7.d.ts.map +1 -0
  75. package/dist/index.d.ts +422 -53
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +5729 -54
  78. package/dist/index.js.map +1 -1
  79. package/dist/interaction-CQDQJf2Q.js +1 -0
  80. package/dist/keyboard-De_vOHLg.js +20 -0
  81. package/dist/keyboard-De_vOHLg.js.map +1 -0
  82. package/dist/labelled-input-base-DS6-6C0r.js +155 -0
  83. package/dist/labelled-input-base-DS6-6C0r.js.map +1 -0
  84. package/dist/labelled-input-base-DnRh4reU.d.ts +43 -0
  85. package/dist/labelled-input-base-DnRh4reU.d.ts.map +1 -0
  86. package/dist/labelled-radial-input.d.ts +34 -0
  87. package/dist/labelled-radial-input.d.ts.map +1 -0
  88. package/dist/labelled-radial-input.js +188 -0
  89. package/dist/labelled-radial-input.js.map +1 -0
  90. package/dist/labelled-range-input.d.ts +2 -0
  91. package/dist/{labelled-range-input/labelled-range-input.js → labelled-range-input.js} +40 -45
  92. package/dist/labelled-range-input.js.map +1 -0
  93. package/dist/led.d.ts +21 -16
  94. package/dist/led.d.ts.map +1 -1
  95. package/dist/led.js +70 -78
  96. package/dist/led.js.map +1 -1
  97. package/dist/menu-BV6UFx_z.js +813 -0
  98. package/dist/menu-BV6UFx_z.js.map +1 -0
  99. package/dist/menu-item-Cikacp4F.d.ts +128 -0
  100. package/dist/menu-item-Cikacp4F.d.ts.map +1 -0
  101. package/dist/menu-item-DEzL_Yjk.js +766 -0
  102. package/dist/menu-item-DEzL_Yjk.js.map +1 -0
  103. package/dist/menu.d.ts +3 -0
  104. package/dist/menu.js +3 -0
  105. package/dist/miller.d.ts +324 -0
  106. package/dist/miller.d.ts.map +1 -0
  107. package/dist/miller.js +1343 -0
  108. package/dist/miller.js.map +1 -0
  109. package/dist/narrowed-text.d.ts +72 -0
  110. package/dist/narrowed-text.d.ts.map +1 -0
  111. package/dist/narrowed-text.js +571 -0
  112. package/dist/narrowed-text.js.map +1 -0
  113. package/dist/panel.d.ts +43 -0
  114. package/dist/panel.d.ts.map +1 -0
  115. package/dist/{panel/panel.js → panel.js} +82 -91
  116. package/dist/panel.js.map +1 -0
  117. package/dist/plots.d.ts +2 -0
  118. package/dist/plots.js +2 -0
  119. package/dist/polar-pad.d.ts +67 -0
  120. package/dist/polar-pad.d.ts.map +1 -0
  121. package/dist/polar-pad.js +537 -0
  122. package/dist/polar-pad.js.map +1 -0
  123. package/dist/popup-Ddx9LCzY.js +24 -0
  124. package/dist/popup-Ddx9LCzY.js.map +1 -0
  125. package/dist/prominence-CreDBdCs.js +98 -0
  126. package/dist/prominence-CreDBdCs.js.map +1 -0
  127. package/dist/radial-input-CNJ8asY2.js +849 -0
  128. package/dist/radial-input-CNJ8asY2.js.map +1 -0
  129. package/dist/radial-input-xSTd4kEz.d.ts +70 -0
  130. package/dist/radial-input-xSTd4kEz.d.ts.map +1 -0
  131. package/dist/radial-input.d.ts +2 -0
  132. package/dist/radial-input.js +2 -0
  133. package/dist/range-input.d.ts +43 -0
  134. package/dist/range-input.d.ts.map +1 -0
  135. package/dist/{range-input/range-input.js → range-input.js} +155 -168
  136. package/dist/range-input.js.map +1 -0
  137. package/dist/range.d.ts +28 -0
  138. package/dist/range.d.ts.map +1 -0
  139. package/dist/range.js +136 -0
  140. package/dist/range.js.map +1 -0
  141. package/dist/registry-CZEB1YI9.js +21 -0
  142. package/dist/registry-CZEB1YI9.js.map +1 -0
  143. package/dist/selecthorizontal.d.ts +13 -8
  144. package/dist/selecthorizontal.d.ts.map +1 -1
  145. package/dist/selecthorizontal.js +19 -23
  146. package/dist/selecthorizontal.js.map +1 -1
  147. package/dist/snap-container.d.ts +50 -0
  148. package/dist/snap-container.d.ts.map +1 -0
  149. package/dist/snap-container.js +297 -0
  150. package/dist/snap-container.js.map +1 -0
  151. package/dist/{split-layout/split-layout.d.ts → split-layout.d.ts} +30 -25
  152. package/dist/split-layout.d.ts.map +1 -0
  153. package/dist/split-layout.js +545 -0
  154. package/dist/split-layout.js.map +1 -0
  155. package/dist/style.css +133 -0
  156. package/dist/swipe.d.ts +48 -0
  157. package/dist/swipe.d.ts.map +1 -0
  158. package/dist/swipe.js +204 -0
  159. package/dist/swipe.js.map +1 -0
  160. package/dist/tab-list-CFF7uSYH.d.ts +66 -0
  161. package/dist/tab-list-CFF7uSYH.d.ts.map +1 -0
  162. package/dist/tabs.d.ts +2 -0
  163. package/dist/tabs.js +203 -0
  164. package/dist/tabs.js.map +1 -0
  165. package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
  166. package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
  167. package/dist/tickled-styles-Bg3QbcrD.js +327 -0
  168. package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
  169. package/dist/timeline-DBWJsSjd.js +1748 -0
  170. package/dist/timeline-DBWJsSjd.js.map +1 -0
  171. package/dist/timeline.d.ts +2 -0
  172. package/dist/timeline.js +2 -0
  173. package/dist/{styles/tooltip.js → tooltip-DMxmBNky.js} +6 -2
  174. package/dist/tooltip-DMxmBNky.js.map +1 -0
  175. package/dist/tooltip-kfUBWYVB.d.ts +26 -0
  176. package/dist/tooltip-kfUBWYVB.d.ts.map +1 -0
  177. package/dist/tree-component-CQpoPo4s.d.ts +326 -0
  178. package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
  179. package/dist/tree-data-model-DGvRVOFY.js +190 -0
  180. package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
  181. package/dist/tree.d.ts +100 -0
  182. package/dist/tree.d.ts.map +1 -0
  183. package/dist/tree.js +1144 -0
  184. package/dist/tree.js.map +1 -0
  185. package/dist/types-BKaqnpwx.d.ts +8 -0
  186. package/dist/types-BKaqnpwx.d.ts.map +1 -0
  187. package/dist/xy-axis-BANbgrI5.js +6243 -0
  188. package/dist/xy-axis-BANbgrI5.js.map +1 -0
  189. package/dist/xy-axis-CIFok7MF.d.ts +141 -0
  190. package/dist/xy-axis-CIFok7MF.d.ts.map +1 -0
  191. package/dist/xy-pad.d.ts +74 -110
  192. package/dist/xy-pad.d.ts.map +1 -1
  193. package/dist/xy-pad.js +300 -320
  194. package/dist/xy-pad.js.map +1 -1
  195. package/package.json +10 -18
  196. package/dist/ac-text/ac-text.d.ts +0 -99
  197. package/dist/ac-text/ac-text.d.ts.map +0 -1
  198. package/dist/ac-text/ac-text.js +0 -571
  199. package/dist/ac-text/ac-text.js.map +0 -1
  200. package/dist/button/button-styles.d.ts +0 -2
  201. package/dist/button/button-styles.d.ts.map +0 -1
  202. package/dist/button/button-styles.js.map +0 -1
  203. package/dist/button/button.d.ts +0 -16
  204. package/dist/button/button.d.ts.map +0 -1
  205. package/dist/button/button.js +0 -58
  206. package/dist/button/button.js.map +0 -1
  207. package/dist/button/radio-group.d.ts +0 -44
  208. package/dist/button/radio-group.d.ts.map +0 -1
  209. package/dist/button/radio-group.js +0 -385
  210. package/dist/button/radio-group.js.map +0 -1
  211. package/dist/button/split-button.d.ts +0 -59
  212. package/dist/button/split-button.d.ts.map +0 -1
  213. package/dist/button/split-button.js +0 -480
  214. package/dist/button/split-button.js.map +0 -1
  215. package/dist/button/types.d.ts +0 -18
  216. package/dist/button/types.d.ts.map +0 -1
  217. package/dist/button/types.js +0 -2
  218. package/dist/button/types.js.map +0 -1
  219. package/dist/colour-picker/colour-picker-popup.d.ts +0 -102
  220. package/dist/colour-picker/colour-picker-popup.d.ts.map +0 -1
  221. package/dist/colour-picker/colour-picker-popup.js +0 -399
  222. package/dist/colour-picker/colour-picker-popup.js.map +0 -1
  223. package/dist/colour-picker/colour-picker.d.ts +0 -100
  224. package/dist/colour-picker/colour-picker.d.ts.map +0 -1
  225. package/dist/colour-picker/colour-picker.js +0 -567
  226. package/dist/colour-picker/colour-picker.js.map +0 -1
  227. package/dist/colour-picker/index.d.ts +0 -4
  228. package/dist/colour-picker/index.d.ts.map +0 -1
  229. package/dist/colour-picker/index.js +0 -3
  230. package/dist/colour-picker/index.js.map +0 -1
  231. package/dist/colour-picker/styles.d.ts +0 -2
  232. package/dist/colour-picker/styles.d.ts.map +0 -1
  233. package/dist/colour-picker/styles.js +0 -139
  234. package/dist/colour-picker/styles.js.map +0 -1
  235. package/dist/colour-picker/types.d.ts +0 -33
  236. package/dist/colour-picker/types.d.ts.map +0 -1
  237. package/dist/colour-picker/types.js +0 -2
  238. package/dist/colour-picker/types.js.map +0 -1
  239. package/dist/colour-picker/util.d.ts +0 -15
  240. package/dist/colour-picker/util.d.ts.map +0 -1
  241. package/dist/colour-picker/util.js +0 -35
  242. package/dist/colour-picker/util.js.map +0 -1
  243. package/dist/common/searchable.d.ts +0 -9
  244. package/dist/common/searchable.d.ts.map +0 -1
  245. package/dist/common/searchable.js +0 -9
  246. package/dist/common/searchable.js.map +0 -1
  247. package/dist/common/tree-component.d.ts +0 -172
  248. package/dist/common/tree-component.d.ts.map +0 -1
  249. package/dist/common/tree-component.js +0 -8
  250. package/dist/common/tree-component.js.map +0 -1
  251. package/dist/common/tree-data-model.d.ts +0 -100
  252. package/dist/common/tree-data-model.d.ts.map +0 -1
  253. package/dist/common/tree-data-model.js +0 -207
  254. package/dist/common/tree-data-model.js.map +0 -1
  255. package/dist/common/tree-item.d.ts +0 -7
  256. package/dist/common/tree-item.d.ts.map +0 -1
  257. package/dist/common/tree-item.js +0 -2
  258. package/dist/common/tree-item.js.map +0 -1
  259. package/dist/common/types.d.ts +0 -69
  260. package/dist/common/types.d.ts.map +0 -1
  261. package/dist/common/types.js +0 -6
  262. package/dist/common/types.js.map +0 -1
  263. package/dist/crumbs/crumb-navigation.d.ts +0 -96
  264. package/dist/crumbs/crumb-navigation.d.ts.map +0 -1
  265. package/dist/crumbs/crumb-navigation.js +0 -911
  266. package/dist/crumbs/crumb-navigation.js.map +0 -1
  267. package/dist/crumbs/crumb-path-controller.d.ts +0 -18
  268. package/dist/crumbs/crumb-path-controller.d.ts.map +0 -1
  269. package/dist/crumbs/crumb-path-controller.js +0 -81
  270. package/dist/crumbs/crumb-path-controller.js.map +0 -1
  271. package/dist/crumbs/crumb-path.d.ts +0 -65
  272. package/dist/crumbs/crumb-path.d.ts.map +0 -1
  273. package/dist/crumbs/crumb-path.js +0 -691
  274. package/dist/crumbs/crumb-path.js.map +0 -1
  275. package/dist/editable-label/editable-label.d.ts +0 -98
  276. package/dist/editable-label/editable-label.d.ts.map +0 -1
  277. package/dist/editable-label/editable-label.js +0 -348
  278. package/dist/editable-label/editable-label.js.map +0 -1
  279. package/dist/editable-label/editable-number.d.ts +0 -96
  280. package/dist/editable-label/editable-number.d.ts.map +0 -1
  281. package/dist/editable-label/editable-number.js +0 -702
  282. package/dist/editable-label/editable-number.js.map +0 -1
  283. package/dist/hex/colour.d.ts +0 -6
  284. package/dist/hex/colour.d.ts.map +0 -1
  285. package/dist/hex/colour.js +0 -33
  286. package/dist/hex/colour.js.map +0 -1
  287. package/dist/hex/data.d.ts +0 -18
  288. package/dist/hex/data.d.ts.map +0 -1
  289. package/dist/hex/data.js +0 -61
  290. package/dist/hex/data.js.map +0 -1
  291. package/dist/hex/diff.d.ts +0 -14
  292. package/dist/hex/diff.d.ts.map +0 -1
  293. package/dist/hex/diff.js +0 -31
  294. package/dist/hex/diff.js.map +0 -1
  295. package/dist/hex/hex-editor.d.ts +0 -101
  296. package/dist/hex/hex-editor.d.ts.map +0 -1
  297. package/dist/hex/hex-editor.js +0 -894
  298. package/dist/hex/hex-editor.js.map +0 -1
  299. package/dist/hex/selection.d.ts +0 -11
  300. package/dist/hex/selection.d.ts.map +0 -1
  301. package/dist/hex/selection.js +0 -218
  302. package/dist/hex/selection.js.map +0 -1
  303. package/dist/hex/types.d.ts +0 -34
  304. package/dist/hex/types.d.ts.map +0 -1
  305. package/dist/hex/types.js +0 -4
  306. package/dist/hex/types.js.map +0 -1
  307. package/dist/icons/defaults.d.ts +0 -27
  308. package/dist/icons/defaults.d.ts.map +0 -1
  309. package/dist/icons/defaults.js +0 -34
  310. package/dist/icons/defaults.js.map +0 -1
  311. package/dist/icons/icon.d.ts +0 -31
  312. package/dist/icons/icon.d.ts.map +0 -1
  313. package/dist/icons/icon.js +0 -125
  314. package/dist/icons/icon.js.map +0 -1
  315. package/dist/icons/index.d.ts +0 -5
  316. package/dist/icons/index.d.ts.map +0 -1
  317. package/dist/icons/index.js +0 -6
  318. package/dist/icons/index.js.map +0 -1
  319. package/dist/icons/registry.d.ts +0 -11
  320. package/dist/icons/registry.d.ts.map +0 -1
  321. package/dist/icons/registry.js +0 -17
  322. package/dist/icons/registry.js.map +0 -1
  323. package/dist/incr-search/ac-adapter.d.ts +0 -18
  324. package/dist/incr-search/ac-adapter.d.ts.map +0 -1
  325. package/dist/incr-search/ac-adapter.js +0 -29
  326. package/dist/incr-search/ac-adapter.js.map +0 -1
  327. package/dist/incr-search/controller-miller.d.ts +0 -9
  328. package/dist/incr-search/controller-miller.d.ts.map +0 -1
  329. package/dist/incr-search/controller-miller.js +0 -8
  330. package/dist/incr-search/controller-miller.js.map +0 -1
  331. package/dist/incr-search/controller-tree.d.ts +0 -55
  332. package/dist/incr-search/controller-tree.d.ts.map +0 -1
  333. package/dist/incr-search/controller-tree.js +0 -106
  334. package/dist/incr-search/controller-tree.js.map +0 -1
  335. package/dist/incr-search/element-search.d.ts +0 -15
  336. package/dist/incr-search/element-search.d.ts.map +0 -1
  337. package/dist/incr-search/element-search.js +0 -82
  338. package/dist/incr-search/element-search.js.map +0 -1
  339. package/dist/incr-search/fuzzy.d.ts +0 -3
  340. package/dist/incr-search/fuzzy.d.ts.map +0 -1
  341. package/dist/incr-search/fuzzy.js +0 -37
  342. package/dist/incr-search/fuzzy.js.map +0 -1
  343. package/dist/incr-search/highlight.d.ts +0 -5
  344. package/dist/incr-search/highlight.d.ts.map +0 -1
  345. package/dist/incr-search/highlight.js +0 -54
  346. package/dist/incr-search/highlight.js.map +0 -1
  347. package/dist/incr-search/incr-search.d.ts +0 -3
  348. package/dist/incr-search/incr-search.d.ts.map +0 -1
  349. package/dist/incr-search/incr-search.js +0 -73
  350. package/dist/incr-search/incr-search.js.map +0 -1
  351. package/dist/incr-search/index.d.ts +0 -12
  352. package/dist/incr-search/index.d.ts.map +0 -1
  353. package/dist/incr-search/index.js +0 -8
  354. package/dist/incr-search/index.js.map +0 -1
  355. package/dist/incr-search/types.d.ts +0 -59
  356. package/dist/incr-search/types.d.ts.map +0 -1
  357. package/dist/incr-search/types.js +0 -2
  358. package/dist/incr-search/types.js.map +0 -1
  359. package/dist/interaction/index.d.ts +0 -10
  360. package/dist/interaction/index.d.ts.map +0 -1
  361. package/dist/interaction/index.js +0 -10
  362. package/dist/interaction/index.js.map +0 -1
  363. package/dist/interaction/tickled-controller.d.ts +0 -186
  364. package/dist/interaction/tickled-controller.d.ts.map +0 -1
  365. package/dist/interaction/tickled-controller.js +0 -256
  366. package/dist/interaction/tickled-controller.js.map +0 -1
  367. package/dist/interaction/tickled-styles.d.ts +0 -53
  368. package/dist/interaction/tickled-styles.d.ts.map +0 -1
  369. package/dist/interaction/tickled-styles.js +0 -106
  370. package/dist/interaction/tickled-styles.js.map +0 -1
  371. package/dist/interaction/tree-keyboard-controller.d.ts +0 -30
  372. package/dist/interaction/tree-keyboard-controller.d.ts.map +0 -1
  373. package/dist/interaction/tree-keyboard-controller.js +0 -105
  374. package/dist/interaction/tree-keyboard-controller.js.map +0 -1
  375. package/dist/keyboard.d.ts +0 -16
  376. package/dist/keyboard.d.ts.map +0 -1
  377. package/dist/keyboard.js +0 -22
  378. package/dist/keyboard.js.map +0 -1
  379. package/dist/labelled-radial-input/index.d.ts +0 -2
  380. package/dist/labelled-radial-input/index.d.ts.map +0 -1
  381. package/dist/labelled-radial-input/index.js +0 -2
  382. package/dist/labelled-radial-input/index.js.map +0 -1
  383. package/dist/labelled-radial-input/labelled-radial-input.d.ts +0 -77
  384. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +0 -1
  385. package/dist/labelled-radial-input/labelled-radial-input.js +0 -214
  386. package/dist/labelled-radial-input/labelled-radial-input.js.map +0 -1
  387. package/dist/labelled-range-input/index.d.ts +0 -2
  388. package/dist/labelled-range-input/index.d.ts.map +0 -1
  389. package/dist/labelled-range-input/index.js +0 -2
  390. package/dist/labelled-range-input/index.js.map +0 -1
  391. package/dist/labelled-range-input/labelled-range-input.d.ts +0 -80
  392. package/dist/labelled-range-input/labelled-range-input.d.ts.map +0 -1
  393. package/dist/labelled-range-input/labelled-range-input.js.map +0 -1
  394. package/dist/menu/index.d.ts +0 -14
  395. package/dist/menu/index.d.ts.map +0 -1
  396. package/dist/menu/index.js +0 -13
  397. package/dist/menu/index.js.map +0 -1
  398. package/dist/menu/menu-bar.d.ts +0 -23
  399. package/dist/menu/menu-bar.d.ts.map +0 -1
  400. package/dist/menu/menu-bar.js +0 -110
  401. package/dist/menu/menu-bar.js.map +0 -1
  402. package/dist/menu/menu-check-item.d.ts +0 -33
  403. package/dist/menu/menu-check-item.d.ts.map +0 -1
  404. package/dist/menu/menu-check-item.js +0 -175
  405. package/dist/menu/menu-check-item.js.map +0 -1
  406. package/dist/menu/menu-command-controller.d.ts +0 -14
  407. package/dist/menu/menu-command-controller.d.ts.map +0 -1
  408. package/dist/menu/menu-command-controller.js +0 -22
  409. package/dist/menu/menu-command-controller.js.map +0 -1
  410. package/dist/menu/menu-container.d.ts +0 -36
  411. package/dist/menu/menu-container.d.ts.map +0 -1
  412. package/dist/menu/menu-container.js +0 -351
  413. package/dist/menu/menu-container.js.map +0 -1
  414. package/dist/menu/menu-from-tree.d.ts +0 -17
  415. package/dist/menu/menu-from-tree.d.ts.map +0 -1
  416. package/dist/menu/menu-from-tree.js +0 -103
  417. package/dist/menu/menu-from-tree.js.map +0 -1
  418. package/dist/menu/menu-header.d.ts +0 -12
  419. package/dist/menu/menu-header.d.ts.map +0 -1
  420. package/dist/menu/menu-header.js +0 -36
  421. package/dist/menu/menu-header.js.map +0 -1
  422. package/dist/menu/menu-item.d.ts +0 -41
  423. package/dist/menu/menu-item.d.ts.map +0 -1
  424. package/dist/menu/menu-item.js +0 -240
  425. package/dist/menu/menu-item.js.map +0 -1
  426. package/dist/menu/menu-radio-group.d.ts +0 -24
  427. package/dist/menu/menu-radio-group.d.ts.map +0 -1
  428. package/dist/menu/menu-radio-group.js +0 -71
  429. package/dist/menu/menu-radio-group.js.map +0 -1
  430. package/dist/menu/menu-radio-item.d.ts +0 -22
  431. package/dist/menu/menu-radio-item.d.ts.map +0 -1
  432. package/dist/menu/menu-radio-item.js +0 -116
  433. package/dist/menu/menu-radio-item.js.map +0 -1
  434. package/dist/menu/menu-separator.d.ts +0 -11
  435. package/dist/menu/menu-separator.d.ts.map +0 -1
  436. package/dist/menu/menu-separator.js +0 -29
  437. package/dist/menu/menu-separator.js.map +0 -1
  438. package/dist/menu/menu-sub-trigger.d.ts +0 -46
  439. package/dist/menu/menu-sub-trigger.d.ts.map +0 -1
  440. package/dist/menu/menu-sub-trigger.js +0 -302
  441. package/dist/menu/menu-sub-trigger.js.map +0 -1
  442. package/dist/menu/menu-trigger.d.ts +0 -57
  443. package/dist/menu/menu-trigger.d.ts.map +0 -1
  444. package/dist/menu/menu-trigger.js +0 -351
  445. package/dist/menu/menu-trigger.js.map +0 -1
  446. package/dist/miller/index.d.ts +0 -5
  447. package/dist/miller/index.d.ts.map +0 -1
  448. package/dist/miller/index.js +0 -5
  449. package/dist/miller/index.js.map +0 -1
  450. package/dist/miller/miller-base.d.ts +0 -184
  451. package/dist/miller/miller-base.d.ts.map +0 -1
  452. package/dist/miller/miller-base.js +0 -1249
  453. package/dist/miller/miller-base.js.map +0 -1
  454. package/dist/miller/miller-list.d.ts +0 -30
  455. package/dist/miller/miller-list.d.ts.map +0 -1
  456. package/dist/miller/miller-list.js +0 -192
  457. package/dist/miller/miller-list.js.map +0 -1
  458. package/dist/miller/miller-tree-controller.d.ts +0 -58
  459. package/dist/miller/miller-tree-controller.d.ts.map +0 -1
  460. package/dist/miller/miller-tree-controller.js +0 -134
  461. package/dist/miller/miller-tree-controller.js.map +0 -1
  462. package/dist/miller/types.d.ts +0 -63
  463. package/dist/miller/types.d.ts.map +0 -1
  464. package/dist/miller/types.js +0 -6
  465. package/dist/miller/types.js.map +0 -1
  466. package/dist/mixins/labelled-input-base.d.ts +0 -38
  467. package/dist/mixins/labelled-input-base.d.ts.map +0 -1
  468. package/dist/mixins/labelled-input-base.js +0 -171
  469. package/dist/mixins/labelled-input-base.js.map +0 -1
  470. package/dist/mixins/labelled-input-util.d.ts +0 -3
  471. package/dist/mixins/labelled-input-util.d.ts.map +0 -1
  472. package/dist/mixins/labelled-input-util.js +0 -10
  473. package/dist/mixins/labelled-input-util.js.map +0 -1
  474. package/dist/my-element.d.ts +0 -14
  475. package/dist/my-element.d.ts.map +0 -1
  476. package/dist/my-element.js +0 -44
  477. package/dist/my-element.js.map +0 -1
  478. package/dist/narrowed-text/index.d.ts +0 -3
  479. package/dist/narrowed-text/index.d.ts.map +0 -1
  480. package/dist/narrowed-text/index.js +0 -3
  481. package/dist/narrowed-text/index.js.map +0 -1
  482. package/dist/narrowed-text/narrowed-text.d.ts +0 -48
  483. package/dist/narrowed-text/narrowed-text.d.ts.map +0 -1
  484. package/dist/narrowed-text/narrowed-text.js +0 -668
  485. package/dist/narrowed-text/narrowed-text.js.map +0 -1
  486. package/dist/narrowed-text/types.d.ts +0 -20
  487. package/dist/narrowed-text/types.d.ts.map +0 -1
  488. package/dist/narrowed-text/types.js +0 -2
  489. package/dist/narrowed-text/types.js.map +0 -1
  490. package/dist/panel/panel-group.d.ts +0 -23
  491. package/dist/panel/panel-group.d.ts.map +0 -1
  492. package/dist/panel/panel-group.js +0 -109
  493. package/dist/panel/panel-group.js.map +0 -1
  494. package/dist/panel/panel.d.ts +0 -39
  495. package/dist/panel/panel.d.ts.map +0 -1
  496. package/dist/panel/panel.js.map +0 -1
  497. package/dist/plots/colour-map.d.ts +0 -31
  498. package/dist/plots/colour-map.d.ts.map +0 -1
  499. package/dist/plots/colour-map.js +0 -133
  500. package/dist/plots/colour-map.js.map +0 -1
  501. package/dist/plots/data.d.ts +0 -27
  502. package/dist/plots/data.d.ts.map +0 -1
  503. package/dist/plots/data.js +0 -47
  504. package/dist/plots/data.js.map +0 -1
  505. package/dist/plots/single-axis.d.ts +0 -41
  506. package/dist/plots/single-axis.d.ts.map +0 -1
  507. package/dist/plots/single-axis.js +0 -428
  508. package/dist/plots/single-axis.js.map +0 -1
  509. package/dist/plots/svg-utils.d.ts +0 -12
  510. package/dist/plots/svg-utils.d.ts.map +0 -1
  511. package/dist/plots/svg-utils.js +0 -64
  512. package/dist/plots/svg-utils.js.map +0 -1
  513. package/dist/plots/xy-axis.d.ts +0 -42
  514. package/dist/plots/xy-axis.d.ts.map +0 -1
  515. package/dist/plots/xy-axis.js +0 -307
  516. package/dist/plots/xy-axis.js.map +0 -1
  517. package/dist/polar-pad/polar-pad.d.ts +0 -132
  518. package/dist/polar-pad/polar-pad.d.ts.map +0 -1
  519. package/dist/polar-pad/polar-pad.js +0 -598
  520. package/dist/polar-pad/polar-pad.js.map +0 -1
  521. package/dist/radial-input/radial-input.d.ts +0 -45
  522. package/dist/radial-input/radial-input.d.ts.map +0 -1
  523. package/dist/radial-input/radial-input.js +0 -692
  524. package/dist/radial-input/radial-input.js.map +0 -1
  525. package/dist/radial-input/svg-utils.d.ts +0 -147
  526. package/dist/radial-input/svg-utils.d.ts.map +0 -1
  527. package/dist/radial-input/svg-utils.js +0 -346
  528. package/dist/radial-input/svg-utils.js.map +0 -1
  529. package/dist/radial-input/types.d.ts +0 -25
  530. package/dist/radial-input/types.d.ts.map +0 -1
  531. package/dist/radial-input/types.js +0 -5
  532. package/dist/radial-input/types.js.map +0 -1
  533. package/dist/range/range-multi.d.ts +0 -62
  534. package/dist/range/range-multi.d.ts.map +0 -1
  535. package/dist/range/range-multi.js +0 -652
  536. package/dist/range/range-multi.js.map +0 -1
  537. package/dist/range/range.d.ts +0 -23
  538. package/dist/range/range.d.ts.map +0 -1
  539. package/dist/range/range.js +0 -153
  540. package/dist/range/range.js.map +0 -1
  541. package/dist/range-input/index.d.ts +0 -2
  542. package/dist/range-input/index.d.ts.map +0 -1
  543. package/dist/range-input/index.js +0 -2
  544. package/dist/range-input/index.js.map +0 -1
  545. package/dist/range-input/range-input.d.ts +0 -92
  546. package/dist/range-input/range-input.d.ts.map +0 -1
  547. package/dist/range-input/range-input.js.map +0 -1
  548. package/dist/snap-container/snap-container.d.ts +0 -45
  549. package/dist/snap-container/snap-container.d.ts.map +0 -1
  550. package/dist/snap-container/snap-container.js +0 -352
  551. package/dist/snap-container/snap-container.js.map +0 -1
  552. package/dist/split-layout/split-layout.d.ts.map +0 -1
  553. package/dist/split-layout/split-layout.js +0 -674
  554. package/dist/split-layout/split-layout.js.map +0 -1
  555. package/dist/styles/popup.d.ts +0 -11
  556. package/dist/styles/popup.d.ts.map +0 -1
  557. package/dist/styles/popup.js +0 -20
  558. package/dist/styles/popup.js.map +0 -1
  559. package/dist/styles/prominence.d.ts +0 -58
  560. package/dist/styles/prominence.d.ts.map +0 -1
  561. package/dist/styles/prominence.js +0 -94
  562. package/dist/styles/prominence.js.map +0 -1
  563. package/dist/styles/tooltip.d.ts +0 -2
  564. package/dist/styles/tooltip.d.ts.map +0 -1
  565. package/dist/styles/tooltip.js.map +0 -1
  566. package/dist/svg-edit-label.d.ts +0 -2
  567. package/dist/svg-edit-label.d.ts.map +0 -1
  568. package/dist/svg-edit-label.js +0 -110
  569. package/dist/svg-edit-label.js.map +0 -1
  570. package/dist/swipe/index.d.ts +0 -2
  571. package/dist/swipe/index.d.ts.map +0 -1
  572. package/dist/swipe/index.js +0 -2
  573. package/dist/swipe/index.js.map +0 -1
  574. package/dist/swipe/swipe.d.ts +0 -65
  575. package/dist/swipe/swipe.d.ts.map +0 -1
  576. package/dist/swipe/swipe.js +0 -229
  577. package/dist/swipe/swipe.js.map +0 -1
  578. package/dist/tabs/tab-layout-item.d.ts +0 -10
  579. package/dist/tabs/tab-layout-item.d.ts.map +0 -1
  580. package/dist/tabs/tab-layout-item.js +0 -20
  581. package/dist/tabs/tab-layout-item.js.map +0 -1
  582. package/dist/tabs/tab-layout.d.ts +0 -10
  583. package/dist/tabs/tab-layout.d.ts.map +0 -1
  584. package/dist/tabs/tab-layout.js +0 -25
  585. package/dist/tabs/tab-layout.js.map +0 -1
  586. package/dist/tabs/tab-list-item.d.ts +0 -34
  587. package/dist/tabs/tab-list-item.d.ts.map +0 -1
  588. package/dist/tabs/tab-list-item.js +0 -195
  589. package/dist/tabs/tab-list-item.js.map +0 -1
  590. package/dist/tabs/tab-list.d.ts +0 -31
  591. package/dist/tabs/tab-list.d.ts.map +0 -1
  592. package/dist/tabs/tab-list.js +0 -257
  593. package/dist/tabs/tab-list.js.map +0 -1
  594. package/dist/tabs/tab-panel.d.ts +0 -11
  595. package/dist/tabs/tab-panel.d.ts.map +0 -1
  596. package/dist/tabs/tab-panel.js +0 -30
  597. package/dist/tabs/tab-panel.js.map +0 -1
  598. package/dist/tabs/tab-panels.d.ts +0 -30
  599. package/dist/tabs/tab-panels.d.ts.map +0 -1
  600. package/dist/tabs/tab-panels.js +0 -80
  601. package/dist/tabs/tab-panels.js.map +0 -1
  602. package/dist/timeline/index.d.ts +0 -9
  603. package/dist/timeline/index.d.ts.map +0 -1
  604. package/dist/timeline/index.js +0 -8
  605. package/dist/timeline/index.js.map +0 -1
  606. package/dist/timeline/timeline-controller.d.ts +0 -48
  607. package/dist/timeline/timeline-controller.d.ts.map +0 -1
  608. package/dist/timeline/timeline-controller.js +0 -81
  609. package/dist/timeline/timeline-controller.js.map +0 -1
  610. package/dist/timeline/timeline-draw.d.ts +0 -28
  611. package/dist/timeline/timeline-draw.d.ts.map +0 -1
  612. package/dist/timeline/timeline-draw.js +0 -330
  613. package/dist/timeline/timeline-draw.js.map +0 -1
  614. package/dist/timeline/timeline-element.d.ts +0 -140
  615. package/dist/timeline/timeline-element.d.ts.map +0 -1
  616. package/dist/timeline/timeline-element.js +0 -888
  617. package/dist/timeline/timeline-element.js.map +0 -1
  618. package/dist/timeline/timeline-interactions.d.ts +0 -40
  619. package/dist/timeline/timeline-interactions.d.ts.map +0 -1
  620. package/dist/timeline/timeline-interactions.js +0 -393
  621. package/dist/timeline/timeline-interactions.js.map +0 -1
  622. package/dist/timeline/timeline-styles.d.ts +0 -2
  623. package/dist/timeline/timeline-styles.d.ts.map +0 -1
  624. package/dist/timeline/timeline-styles.js +0 -153
  625. package/dist/timeline/timeline-styles.js.map +0 -1
  626. package/dist/timeline/timeline-track-tabs.d.ts +0 -30
  627. package/dist/timeline/timeline-track-tabs.d.ts.map +0 -1
  628. package/dist/timeline/timeline-track-tabs.js +0 -204
  629. package/dist/timeline/timeline-track-tabs.js.map +0 -1
  630. package/dist/timeline/types.d.ts +0 -144
  631. package/dist/timeline/types.d.ts.map +0 -1
  632. package/dist/timeline/types.js +0 -3
  633. package/dist/timeline/types.js.map +0 -1
  634. package/dist/tree/index.d.ts +0 -5
  635. package/dist/tree/index.d.ts.map +0 -1
  636. package/dist/tree/index.js +0 -5
  637. package/dist/tree/index.js.map +0 -1
  638. package/dist/tree/tree-base.d.ts +0 -70
  639. package/dist/tree/tree-base.d.ts.map +0 -1
  640. package/dist/tree/tree-base.js +0 -1028
  641. package/dist/tree/tree-base.js.map +0 -1
  642. package/dist/tree/tree-controller.d.ts +0 -14
  643. package/dist/tree/tree-controller.d.ts.map +0 -1
  644. package/dist/tree/tree-controller.js +0 -96
  645. package/dist/tree/tree-controller.js.map +0 -1
  646. package/dist/tree/tree-list.d.ts +0 -20
  647. package/dist/tree/tree-list.d.ts.map +0 -1
  648. package/dist/tree/tree-list.js +0 -174
  649. package/dist/tree/tree-list.js.map +0 -1
  650. package/dist/tree/types.d.ts +0 -14
  651. package/dist/tree/types.d.ts.map +0 -1
  652. package/dist/tree/types.js +0 -7
  653. package/dist/tree/types.js.map +0 -1
  654. package/dist/util/checkbox.d.ts +0 -2
  655. package/dist/util/checkbox.d.ts.map +0 -1
  656. package/dist/util/checkbox.js +0 -69
  657. package/dist/util/checkbox.js.map +0 -1
  658. package/dist/util/circle-arc.d.ts +0 -34
  659. package/dist/util/circle-arc.d.ts.map +0 -1
  660. package/dist/util/circle-arc.js +0 -85
  661. package/dist/util/circle-arc.js.map +0 -1
  662. package/dist/util/clamp.d.ts +0 -4
  663. package/dist/util/clamp.d.ts.map +0 -1
  664. package/dist/util/clamp.js +0 -23
  665. package/dist/util/clamp.js.map +0 -1
  666. package/dist/util/compare.d.ts +0 -53
  667. package/dist/util/compare.d.ts.map +0 -1
  668. package/dist/util/compare.js +0 -91
  669. package/dist/util/compare.js.map +0 -1
  670. package/dist/util/content-editable.d.ts +0 -2
  671. package/dist/util/content-editable.d.ts.map +0 -1
  672. package/dist/util/content-editable.js +0 -13
  673. package/dist/util/content-editable.js.map +0 -1
  674. package/dist/util/coordinates.d.ts +0 -3
  675. package/dist/util/coordinates.d.ts.map +0 -1
  676. package/dist/util/coordinates.js +0 -11
  677. package/dist/util/coordinates.js.map +0 -1
  678. package/dist/util/drag.d.ts +0 -16
  679. package/dist/util/drag.d.ts.map +0 -1
  680. package/dist/util/drag.js +0 -20
  681. package/dist/util/drag.js.map +0 -1
  682. package/dist/util/is-numeric.d.ts +0 -2
  683. package/dist/util/is-numeric.d.ts.map +0 -1
  684. package/dist/util/is-numeric.js +0 -9
  685. package/dist/util/is-numeric.js.map +0 -1
  686. package/dist/util/key-value.d.ts +0 -5
  687. package/dist/util/key-value.d.ts.map +0 -1
  688. package/dist/util/key-value.js +0 -29
  689. package/dist/util/key-value.js.map +0 -1
  690. package/dist/util/near.d.ts +0 -2
  691. package/dist/util/near.d.ts.map +0 -1
  692. package/dist/util/near.js +0 -6
  693. package/dist/util/near.js.map +0 -1
  694. package/dist/util/primitive-types.d.ts +0 -6
  695. package/dist/util/primitive-types.d.ts.map +0 -1
  696. package/dist/util/primitive-types.js +0 -2
  697. package/dist/util/primitive-types.js.map +0 -1
  698. package/dist/util/svg-editable-text.d.ts +0 -26
  699. package/dist/util/svg-editable-text.d.ts.map +0 -1
  700. package/dist/util/svg-editable-text.js +0 -119
  701. package/dist/util/svg-editable-text.js.map +0 -1
  702. package/dist/util/time.d.ts +0 -2
  703. package/dist/util/time.d.ts.map +0 -1
  704. package/dist/util/time.js +0 -2
  705. package/dist/util/time.js.map +0 -1
  706. package/dist/util/tooltip-controller.d.ts +0 -10
  707. package/dist/util/tooltip-controller.d.ts.map +0 -1
  708. package/dist/util/tooltip-controller.js +0 -237
  709. package/dist/util/tooltip-controller.js.map +0 -1
  710. package/dist/util/tooltip.d.ts +0 -21
  711. package/dist/util/tooltip.d.ts.map +0 -1
  712. package/dist/util/tooltip.js +0 -98
  713. package/dist/util/tooltip.js.map +0 -1
  714. package/dist/util/value-drag.d.ts +0 -33
  715. package/dist/util/value-drag.d.ts.map +0 -1
  716. package/dist/util/value-drag.js +0 -154
  717. package/dist/util/value-drag.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colour-C3MQIjFJ-BJV-QC-3.js","names":["__defProp","__exportAll","__defProp","guard","rotate"],"sources":["../node_modules/.pnpm/@ixfx+visual@0.56.12/node_modules/@ixfx/visual/dist/chunk-pbuEa-1d.js","../node_modules/.pnpm/@ixfx+geometry@0.56.12/node_modules/@ixfx/geometry/dist/chunk-pbuEa-1d.js","../node_modules/.pnpm/@ixfx+geometry@0.56.12/node_modules/@ixfx/geometry/dist/guard-CqkBirEd.js","../node_modules/.pnpm/@ixfx+geometry@0.56.12/node_modules/@ixfx/geometry/dist/to-jujzVMAL.js","../node_modules/.pnpm/@ixfx+geometry@0.56.12/node_modules/@ixfx/geometry/dist/polar-LvwxTwIf.js","../node_modules/.pnpm/@ixfx+visual@0.56.12/node_modules/@ixfx/visual/dist/colour-C3MQIjFJ.js"],"sourcesContent":["//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\nexport { __exportAll as t };\n","//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\nexport { __exportAll as t };\n","import { errorResult, numberTest, resultThrow } from \"@ixfx/guards\";\n//#region src/point/guard.ts\n/**\n* Returns true if xy (and z, if present) are _null_.\n* @param p\n* @returns\n*/\nconst isNull = (p) => {\n\tif (isPoint3d(p)) {\n\t\tif (p.z !== null) return false;\n\t}\n\treturn p.x === null && p.y === null;\n};\n/***\n* Returns true if either x, y, z isNaN.\n*/\nconst isNaN = (p) => {\n\tif (isPoint3d(p)) {\n\t\tif (!Number.isNaN(p.z)) return false;\n\t}\n\treturn Number.isNaN(p.x) || Number.isNaN(p.y);\n};\nfunction test(p, name = `Point`, extraInfo = ``) {\n\tif (p === void 0) return errorResult(`'${name}' is undefined. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (p === null) return errorResult(`'${name}' is null. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (typeof p !== `object`) return errorResult(`'${name}' is type '${typeof p}'. Expected object.`, extraInfo);\n\tif (p.x === void 0) return errorResult(`'${name}.x' is undefined. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (p.y === void 0) return errorResult(`'${name}.y' is undefined. Expected {x,y} got ${JSON.stringify(p)}`, extraInfo);\n\tif (typeof p.x !== `number`) return errorResult(`'${name}.x' must be a number. Got ${typeof p.x}`, extraInfo);\n\tif (typeof p.y !== `number`) return errorResult(`'${name}.y' must be a number. Got ${typeof p.y}`, extraInfo);\n\tif (p.z !== void 0) {\n\t\tif (typeof p.z !== `number`) return errorResult(`${name}.z must be a number. Got: ${typeof p.z}`, extraInfo);\n\t\tif (Number.isNaN(p.z)) return errorResult(`'${name}.z' is NaN. Got: ${JSON.stringify(p)}`, extraInfo);\n\t}\n\tif (p.x === null) return errorResult(`'${name}.x' is null`, extraInfo);\n\tif (p.y === null) return errorResult(`'${name}.y' is null`, extraInfo);\n\tif (Number.isNaN(p.x)) return errorResult(`'${name}.x' is NaN`, extraInfo);\n\tif (Number.isNaN(p.y)) return errorResult(`'${name}.y' is NaN`, extraInfo);\n\treturn {\n\t\tsuccess: true,\n\t\tvalue: p\n\t};\n}\n/**\n* Throws an error if point is invalid\n* @param p\n* @param name\n*/\nfunction guard(p, name = `Point`, info) {\n\tresultThrow(test(p, name, info));\n}\n/**\n* Throws if parameter is not a valid point, or either x or y is 0\n* @param pt\n* @returns\n*/\nconst guardNonZeroPoint = (pt, name = `pt`) => {\n\tguard(pt, name);\n\tresultThrow(numberTest(pt.x, `nonZero`, `${name}.x`), numberTest(pt.y, `nonZero`, `${name}.y`), () => {\n\t\tif (typeof pt.z !== `undefined`) return numberTest(pt.z, `nonZero`, `${name}.z`);\n\t});\n\treturn true;\n};\n/**\n* Returns _true_ if `p` has x & y properties.\n* Returns _false_ if `p` is undefined, null or does not contain properties.\n* Use {@link isPoint3d} to check further check for `z`.\n* @param p \n* @returns \n*/\nfunction isPoint(p) {\n\tif (p === void 0) return false;\n\tif (p === null) return false;\n\tif (p.x === void 0) return false;\n\tif (p.y === void 0) return false;\n\treturn true;\n}\n/**\n* Returns _true_ if `p` has x, y, & z properties.\n* Returns _false_ if `p` is undefined, null or does not contain properties.\n* @param p \n* @returns \n*/\nconst isPoint3d = (p) => {\n\tif (p === void 0) return false;\n\tif (p === null) return false;\n\tif (p.x === void 0) return false;\n\tif (p.y === void 0) return false;\n\tif (p.z === void 0) return false;\n\treturn true;\n};\n/**\n* Returns true if both xy (and z, if present) are 0.\n* Use `Points.Empty` to return an empty point.\n* @param p\n* @returns\n*/\nconst isEmpty = (p) => {\n\tif (isPoint3d(p)) {\n\t\tif (p.z !== 0) return false;\n\t}\n\treturn p.x === 0 && p.y === 0;\n};\n/**\n* Returns true if point is a placeholder, where xy (and z, if present)\n* are `NaN`.\n*\n* Use Points.Placeholder to return a placeholder point.\n* @param p\n* @returns\n*/\nconst isPlaceholder = (p) => {\n\tif (isPoint3d(p)) {\n\t\tif (!Number.isNaN(p.z)) return false;\n\t}\n\treturn Number.isNaN(p.x) && Number.isNaN(p.y);\n};\n//#endregion\nexport { isNull as a, isPoint3d as c, isNaN as i, test as l, guardNonZeroPoint as n, isPlaceholder as o, isEmpty as r, isPoint as s, guard as t };\n","import { c as isPoint3d, s as isPoint, t as guard } from \"./guard-CqkBirEd.js\";\n//#region src/point/get-point-parameter.ts\nfunction getTwoPointParameters(a1, ab2, ab3, ab4, ab5, ab6) {\n\tif (isPoint3d(a1) && isPoint3d(ab2)) return [a1, ab2];\n\tif (isPoint(a1) && isPoint(ab2)) return [a1, ab2];\n\tif (isPoint3d(a1)) {\n\t\tconst b = {\n\t\t\tx: ab2,\n\t\t\ty: ab3,\n\t\t\tz: ab4\n\t\t};\n\t\tif (!isPoint3d(b)) throw new Error(`Expected x, y & z parameters`);\n\t\treturn [a1, b];\n\t}\n\tif (isPoint(a1)) {\n\t\tconst b = {\n\t\t\tx: ab2,\n\t\t\ty: ab3\n\t\t};\n\t\tif (!isPoint(b)) throw new Error(`Expected x & y parameters`);\n\t\treturn [a1, b];\n\t}\n\tif (typeof ab5 !== `undefined` && typeof ab4 !== `undefined`) {\n\t\tconst a = {\n\t\t\tx: a1,\n\t\t\ty: ab2,\n\t\t\tz: ab3\n\t\t};\n\t\tconst b = {\n\t\t\tx: ab4,\n\t\t\ty: ab5,\n\t\t\tz: ab6\n\t\t};\n\t\tif (!isPoint3d(a)) throw new Error(`Expected x,y,z for first point`);\n\t\tif (!isPoint3d(b)) throw new Error(`Expected x,y,z for second point`);\n\t\treturn [a, b];\n\t}\n\tconst a = {\n\t\tx: a1,\n\t\ty: ab2\n\t};\n\tconst b = {\n\t\tx: ab3,\n\t\ty: ab4\n\t};\n\tif (!isPoint(a)) throw new Error(`Expected x,y for first point`);\n\tif (!isPoint(b)) throw new Error(`Expected x,y for second point`);\n\treturn [a, b];\n}\n/**\n* Returns a Point form of either a point, x,y params or x,y,z params.\n* If parameters are undefined, an empty point is returned (0, 0)\n* @ignore\n* @param a\n* @param b\n* @returns\n*/\nfunction getPointParameter(a, b, c) {\n\tif (a === void 0) return {\n\t\tx: 0,\n\t\ty: 0\n\t};\n\tif (Array.isArray(a)) {\n\t\tif (a.length === 0) return Object.freeze({\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t\tif (a.length === 1) return Object.freeze({\n\t\t\tx: a[0],\n\t\t\ty: 0\n\t\t});\n\t\tif (a.length === 2) return Object.freeze({\n\t\t\tx: a[0],\n\t\t\ty: a[1]\n\t\t});\n\t\tif (a.length === 3) return Object.freeze({\n\t\t\tx: a[0],\n\t\t\ty: a[1],\n\t\t\tz: a[2]\n\t\t});\n\t\tthrow new Error(`Expected array to be 1-3 elements in length. Got ${a.length}.`);\n\t}\n\tif (isPoint(a)) return a;\n\telse if (typeof a !== `number` || typeof b !== `number`) throw new TypeError(`Expected point or x,y as parameters. Got: a: ${JSON.stringify(a)} b: ${JSON.stringify(b)}`);\n\tif (typeof c === `number`) return Object.freeze({\n\t\tx: a,\n\t\ty: b,\n\t\tz: c\n\t});\n\treturn Object.freeze({\n\t\tx: a,\n\t\ty: b\n\t});\n}\n//#endregion\n//#region src/point/distance.ts\n/**\n* Calculate distance between two points.\n* If both points have a `z` property, the distance is 3D distance is calculated.\n* If only one point has a `z`, it is ignored. To force 2D distance, use {@link distance2d}\n*\n* ```js\n* // Distance between two points\n* const ptA = { x: 0.5, y:0.8 };\n* const ptB = { x: 1, y: 0.4 };\n* distance(ptA, ptB);\n* // Or, provide x,y as parameters\n* distance(ptA, 0.4, 0.9);\n*\n* // Distance from ptA to x: 0.5, y:0.8, z: 0.1\n* const ptC = { x: 0.5, y:0.5, z: 0.3 };\n* // With x,y,z as parameters:\n* distance(ptC, 0.5, 0.8, 0.1);\n* ```\n* @param a First point\n* @param xOrB Second point, or x coord\n* @param y y coord, if x coord is given\n* @param z Optional z coord, if x and y are given.\n* @returns\n*/\nfunction distance(a, xOrB, y, z) {\n\tconst pt = getPointParameter(xOrB, y, z);\n\tguard(pt, `b`);\n\tguard(a, `a`);\n\treturn isPoint3d(pt) && isPoint3d(a) ? Math.hypot(pt.x - a.x, pt.y - a.y, pt.z - a.z) : Math.hypot(pt.x - a.x, pt.y - a.y);\n}\n/**\n* As {@link distance} but always compares by x,y only.\n* @param a\n* @param xOrB \n* @param y\n* @returns \n*/\nfunction distance2d(a, xOrB, y) {\n\tconst pt = getPointParameter(xOrB, y);\n\tguard(pt, `b`);\n\tguard(a, `a`);\n\treturn Math.hypot(pt.x - a.x, pt.y - a.y);\n}\n//#endregion\n//#region src/point/subtract.ts\n/**\n* Returns a Point with the x,y,z values of two points subtracted (a-b).\n* \n* `z` parameter is used if present. Uses a default value of 0 for 'z' when subtracting a 2D point with a 3D one.\n*\n* Examples:\n*\n* ```js\n* subtract(ptA, ptB);\n* subtract(x1, y1, x2, y2);\n* subtract(ptA, x2, y2);\n* ```\n*/\nfunction subtract(a1, ab2, ab3, ab4, ab5, ab6) {\n\tconst [ptA, ptB] = getTwoPointParameters(a1, ab2, ab3, ab4, ab5, ab6);\n\tguard(ptA, `a`);\n\tguard(ptB, `b`);\n\tconst pt = {\n\t\tx: ptA.x - ptB.x,\n\t\ty: ptA.y - ptB.y\n\t};\n\tif (isPoint3d(ptA) || isPoint3d(ptB)) pt.z = (ptA.z ?? 0) - (ptB.z ?? 0);\n\treturn Object.freeze(pt);\n}\n//#endregion\n//#region src/point/to.ts\n/**\n* Returns a point with rounded x,y coordinates. By default uses `Math.round` to round.\n* ```js\n* toIntegerValues({x:1.234, y:5.567}); // Yields: {x:1, y:6}\n* ```\n*\n* ```js\n* toIntegerValues(pt, Math.ceil); // Use Math.ceil to round x,y of `pt`.\n* ```\n* @param pt Point to round\n* @param rounder Rounding function, or Math.round by default\n* @returns\n*/\nconst toIntegerValues = (pt, rounder = Math.round) => {\n\tguard(pt, `pt`);\n\treturn Object.freeze({\n\t\tx: rounder(pt.x),\n\t\ty: rounder(pt.y)\n\t});\n};\n/**\n* Returns a copy of `pt` with `z` field omitted.\n* If it didn't have one to begin within, a copy is still returned.\n* @param pt \n* @returns \n*/\nconst to2d = (pt) => {\n\tguard(pt, `pt`);\n\tlet copy = { ...pt };\n\tdelete copy.z;\n\treturn Object.freeze(copy);\n};\n/**\n* Returns a copy of `pt` with a `z` field set.\n* Defaults to a z value of 0.\n* @param pt Point\n* @param z Z-value, defaults to 0\n* @returns \n*/\nconst to3d = (pt, z = 0) => {\n\tguard(pt, `pt`);\n\treturn Object.freeze({\n\t\t...pt,\n\t\tz\n\t});\n};\n/**\n* Returns a human-friendly string representation `(x, y)`.\n* If `precision` is supplied, this will be the number of significant digits.\n* @param p\n* @returns\n*/\nfunction toString(p, digits) {\n\tif (p === void 0) return `(undefined)`;\n\tif (p === null) return `(null)`;\n\tguard(p, `pt`);\n\tconst x = digits ? p.x.toFixed(digits) : p.x;\n\tconst y = digits ? p.y.toFixed(digits) : p.y;\n\tif (p.z === void 0) return `(${x},${y})`;\n\telse return `(${x},${y},${digits ? p.z.toFixed(digits) : p.z})`;\n}\n//#endregion\nexport { subtract as a, getPointParameter as c, toString as i, getTwoPointParameters as l, to3d as n, distance as o, toIntegerValues as r, distance2d as s, to2d as t };\n","import { t as __exportAll } from \"./chunk-pbuEa-1d.js\";\nimport { c as isPoint3d, s as isPoint, t as guard$1 } from \"./guard-CqkBirEd.js\";\nimport { a as subtract, i as toString$2, o as distance } from \"./to-jujzVMAL.js\";\nimport { movingAverageLight } from \"@ixfx/numbers\";\nimport { numberTest, resultThrow } from \"@ixfx/guards\";\n//#region src/pi.ts\nconst piPi = Math.PI * 2;\n//#endregion\n//#region src/point/averager.ts\n/**\n* Averages a set of points, by default as a 'mean'.\n* \n* List of points has to all have Z property or none of them -- it's not\n* possible to mix 2D and 3D points.\n* @param points \n* @returns \n*/\nconst average$1 = (points, kind = `mean`) => {\n\tlet xSum = 0;\n\tlet ySum = 0;\n\tlet zSum = NaN;\n\tlet total = 0;\n\tif (kind !== `mean`) throw new Error(`Unknown averaging kind: '${kind}' expected: 'mean'`);\n\tfor (const p of points) {\n\t\txSum += p.x;\n\t\tySum += p.y;\n\t\tif (`z` in p && p.z !== void 0) zSum += p.z;\n\t\telse if (Number.isNaN(zSum)) throw new Error(`List of points should all have Z property, or none`);\n\t\ttotal++;\n\t}\n\txSum /= total;\n\tySum /= total;\n\tif (Number.isNaN(zSum)) return {\n\t\tx: xSum,\n\t\ty: ySum\n\t};\n\telse return {\n\t\tx: xSum,\n\t\ty: ySum,\n\t\tz: zSum / total\n\t};\n};\nfunction averager(kind, opts = {}) {\n\tlet x;\n\tlet y;\n\tlet z;\n\tswitch (kind) {\n\t\tcase `moving-average-light`: {\n\t\t\tconst scaling = opts.scaling ?? 3;\n\t\t\tx = movingAverageLight(scaling);\n\t\t\ty = movingAverageLight(scaling);\n\t\t\tz = movingAverageLight(scaling);\n\t\t\tbreak;\n\t\t}\n\t\tdefault: throw new Error(`Unknown averaging kind '${kind}'. Expected: 'moving-average-light'`);\n\t}\n\treturn (point) => {\n\t\tconst ax = x(point.x);\n\t\tconst ay = y(point.y);\n\t\tif (isPoint3d(point)) {\n\t\t\tconst az = z(point.z);\n\t\t\treturn Object.freeze({\n\t\t\t\tx: ax,\n\t\t\t\ty: ay,\n\t\t\t\tz: az\n\t\t\t});\n\t\t} else return Object.freeze({\n\t\t\tx: ax,\n\t\t\ty: ay\n\t\t});\n\t};\n}\n//#endregion\n//#region src/angles.ts\nfunction degreeToRadian(angleInDegrees) {\n\treturn Array.isArray(angleInDegrees) ? angleInDegrees.map((v) => v * (Math.PI / 180)) : angleInDegrees * (Math.PI / 180);\n}\n/**\n* Inverts the angle so it points in the opposite direction of a unit circle\n* @param angleInRadians \n* @returns \n*/\nfunction radianInvert(angleInRadians) {\n\treturn (angleInRadians + Math.PI) % (2 * Math.PI);\n}\nfunction degreeToGradian(angleInDegrees) {\n\treturn angleInDegrees * 1.111111;\n}\n/**\n* Returns the gradian value converted to degrees.\n* By default it wraps, so any value 360 or greater wraps around.\n* @param angleInGradians \n* @param wrap \n* @returns \n*/\nfunction gradianToDegree(angleInGradians, wrap = true) {\n\tif (wrap) return angleInGradians * .9 % 360;\n\treturn angleInGradians * .9;\n}\nfunction radianToGradian(angleInRadians) {\n\treturn angleInRadians * 63.6619772368;\n}\nfunction gradianToRadian(angleInGradian) {\n\treturn angleInGradian * .0157079633;\n}\nfunction radianToDegree(angleInRadians) {\n\treturn Array.isArray(angleInRadians) ? angleInRadians.map((v) => v * 180 / Math.PI) : angleInRadians * 180 / Math.PI;\n}\n/**\n* Angle from x-axis to point (ie. `Math.atan2`)\n* @param point \n* @returns \n*/\nconst radiansFromAxisX = (point) => Math.atan2(point.x, point.y);\n/**\n* Sum angles together, accounting for the 'wrap around'.\n* \n* `clockwise` of _true_ (default) means angles are added in clockwise direction\n* \n* ```js\n* // From 180deg, add 90deg in the clockwise direction\n* radiansSum(Math.PI, Math.PI/2, true);\n* ```\n* \n* Orientation of angles is as follows:\n* ```\n* 90deg\n* Pi/2\n* |\n* Pi ---+--- 0\n* 180 |\n* 3PI/2\n* 270deg\n* ```\n* {@link degreesSum} is the same, but uses degrees (0..360)\n* @param start Starting angle, in radian\n* @param amount Angle to add, in radian\n* @param clockwise Add in clockwise direction (default: _true_)\n* @returns Sum result, in radians\n*/\nconst radiansSum = (start, amount, clockwise = true) => {\n\tif (clockwise) {\n\t\tlet x = start + amount;\n\t\tif (x >= piPi) x = x % piPi;\n\t\treturn x;\n\t} else {\n\t\tconst x = start - amount;\n\t\tif (x < 0) return piPi + x;\n\t\treturn x;\n\t}\n};\n/**\n* Sum angles together, accounting for the 'wrap around'.\n* \n* `clockwise` of _true_ (default) means angles are added in clockwise direction\n* \n* ```js\n* // From 180deg, add 90deg in the clockwise direction\n* radiansSum(180, 90, true);\n* ```\n* \n* {@link radiansSum} is the same, but uses radians (0..2 Pi)\n* \n* Orientation of angles is as follows:\n* ```\n* 90\n* |\n* 180 ---+--- 0\n* |\n* 270\n* ```\n* @param start Starting angle, in degrees\n* @param amount Angle to add, in degrees\n* @param clockwise Add in clockwise direction (default: _true_)\n* @returns Sum result, in degrees\n*/\nconst degreesSum = (start, amount, clockwise = true) => radianToDegree(radiansSum(degreeToRadian(start), degreeToRadian(amount), clockwise));\n/**\n* Computes the angle arc between a start and end angle,\n* given in radians. It properly accounts for the wrap-around\n* values.\n* \n* ```js\n* // Between 0-90deg in clockwise direction\n* radianArc(0, Math.PI/2, true); // Yields: 3Pi/2 (270 deg)\n* \n* // In counter-clockwise direction\n* radianArc(0, Math.PI/2, false); // Yields: Math.PI/2 (90deg)\n* ```\n* \n* See {@link degreeArc} to operate in degrees.\n* \n* Orientation of angles is as follows:\n* ```\n* 90deg\n* Pi/2\n* |\n* Pi ---+--- 0\n* 180 |\n* 3PI/2\n* 270deg\n* ```\n* @param start Start angle, in radians\n* @param end End angle, in radians\n* @param clockwise Calculate in clockwise direction (default: _true_)\n* @returns Angle of arc, in radians.\n*/\nconst radianArc = (start, end, clockwise = true) => {\n\tlet s = start;\n\tif (end < s) {\n\t\ts = 0;\n\t\tend = piPi - start + end;\n\t}\n\tlet d = end - s;\n\tif (clockwise) d = piPi - d;\n\tif (d >= piPi) return d % piPi;\n\treturn d;\n};\n/**\n* Computes the angle arc between a start and end angle,\n* given in degrees. It properly accounts for the wrap-around\n* values.\n* \n* ```js\n* // Between 0-90 in clockwise direction\n* degreeArc(0, 90, true); // Yields: 270\n* \n* // In counter-clockwise direction\n* degreeArc(0, 90, false); // Yields: 90\n* ```\n* \n* See {@link radianArc} to operate in radians.\n* \n* Orientation of angles is as follows:\n* ```\n* 90\n* |\n* 180 ---+--- 0\n* |\n* 270\n* ```\n* @param start Start angle, in degrees\n* @param end End angle, in degrees\n* @param clockwise Calculate in clockwise direction (default: _true_)\n* @returns Angle of arc, in degrees.\n*/\nconst degreeArc = (start, end, clockwise = true) => radianToDegree(radianArc(degreeToRadian(start), degreeToRadian(end), clockwise));\n/**\n* Parses CSS-style angle strings into an 'Angle' type. By default assumes degrees.\n* \n* ```js\n* angleParse(`100`); // { value: 100, unit: `deg` }\n* angleParse(100); // { value: 100, unit: `deg` }\n* angleParse(`100deg`); // { value: 100, unit: `deg` }\n* \n* // More exotic units:\n* angleParse(`100rad`); // { value: 100, unit: `rad` }\n* angleParse(`100turn`); // { value: 100, unit: `turn` }\n* angleParse(`100grad`); // { value: 100, unit: `grad` }\n* ```\n* \n* Once parsed in this format, use {@link angleConvert} to convert to\n* a different unit.\n* @param value \n* @returns \n*/\nconst angleParse = (value) => {\n\tif (isAngleType(value)) return value;\n\tif (typeof value === `number`) return {\n\t\tvalue,\n\t\tunit: `deg`\n\t};\n\tvalue = value.toLowerCase();\n\tlet unit = `deg`;\n\tlet numberValue = NaN;\n\tif (value.endsWith(`grad`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 4));\n\t\tunit = `grad`;\n\t} else if (value.endsWith(`rad`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 3));\n\t\tunit = `rad`;\n\t} else if (value.endsWith(`turn`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 4));\n\t\tunit = `turn`;\n\t} else if (value.endsWith(`deg`)) {\n\t\tnumberValue = Number.parseFloat(value.substring(0, value.length - 3));\n\t\tunit = `deg`;\n\t} else numberValue = Number.parseFloat(value);\n\tif (Number.isNaN(numberValue)) throw new Error(`Invalid angle (bad value?)`);\n\tif (unit.length === 0) throw new Error(`Invalid angle (no unit)`);\n\treturn {\n\t\tvalue: numberValue,\n\t\tunit\n\t};\n};\nconst isAngleType = (v) => {\n\tif (typeof v !== `object`) return false;\n\tif (`unit` in v && `value` in v) {\n\t\tif (typeof v.unit !== `string`) return false;\n\t\tif (typeof v.value !== `number`) return false;\n\t\treturn true;\n\t}\n\treturn false;\n};\n/**\n* Converts some angle representation to a simple numeric radian angle.\n* \n* ```js\n* toRadian(90); // 90deg\n* toRadian(`90`); // 90deg\n* toRadian(`1.2rad`)\n* toRadian(`90deg`)\n* ```\n* \n* Unitless values provided as a number or string are assumed to be degrees.\n* @param angleOrDegrees \n* @returns \n*/\nconst toRadian = (angleOrDegrees) => {\n\tif (typeof angleOrDegrees === `number`) return angleOrDegrees;\n\treturn angleConvert(angleOrDegrees, `rad`).value;\n};\n/**\n* Converts an angle to another representation.\n* Input value is assumed degrees unless it's an {@link Angle} type of has the unit.\n* \n* These are all identical inputs: 100, `100`, `100deg`\n* ```js\n* angleConvert(100, `rad`); // Converts 100deg to radians\n* ```\n* \n* Other units can be used for string input: `2turn`, `1grad`, `2rad`.\n* ```js\n* angleConvert(`2rad`, `deg`); // Converts 2radians to degrees\n* ```\n* \n* Can also use an object input:\n* ```js\n* angleConvert({ value: 10, unit: `deg`}, `rad`);\n* ```\n* @param angleOrDegrees \n* @param destination \n* @returns \n*/\nconst angleConvert = (angleOrDegrees, destination) => {\n\tconst angle = typeof angleOrDegrees === `object` ? angleOrDegrees : angleParse(angleOrDegrees);\n\tswitch (destination) {\n\t\tcase `deg`:\n\t\t\tif (angle.unit === `deg`) return angle;\n\t\t\tif (angle.unit === `rad`) return {\n\t\t\t\tvalue: radianToDegree(angle.value),\n\t\t\t\tunit: `deg`\n\t\t\t};\n\t\t\tif (angle.unit === `grad`) return {\n\t\t\t\tvalue: gradianToDegree(angle.value),\n\t\t\t\tunit: `deg`\n\t\t\t};\n\t\t\tif (angle.unit === `turn`) return {\n\t\t\t\tvalue: turnToDegree(angle.value),\n\t\t\t\tunit: `deg`\n\t\t\t};\n\t\t\tthrow new Error(`Unknown unit: ${angle.unit}`);\n\t\tcase `grad`:\n\t\t\tif (angle.unit === `deg`) return {\n\t\t\t\tvalue: degreeToGradian(angle.value),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tif (angle.unit === `rad`) return {\n\t\t\t\tvalue: radianToGradian(angle.value),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tif (angle.unit === `grad`) return angle;\n\t\t\tif (angle.unit === `turn`) return {\n\t\t\t\tvalue: radianToGradian(turnToRadian(angle.value)),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tthrow new Error(`Unknown unit: ${angle.unit}`);\n\t\tcase `rad`:\n\t\t\tif (angle.unit === `deg`) return {\n\t\t\t\tvalue: degreeToRadian(angle.value),\n\t\t\t\tunit: `rad`\n\t\t\t};\n\t\t\tif (angle.unit === `rad`) return angle;\n\t\t\tif (angle.unit === `grad`) return {\n\t\t\t\tvalue: gradianToRadian(angle.value),\n\t\t\t\tunit: `rad`\n\t\t\t};\n\t\t\tif (angle.unit === `turn`) return {\n\t\t\t\tvalue: radianToGradian(turnToRadian(angle.value)),\n\t\t\t\tunit: `grad`\n\t\t\t};\n\t\t\tthrow new Error(`Unknown unit: ${angle.unit}`);\n\t\tcase `turn`:\n\t\t\tif (angle.unit === `deg`) return {\n\t\t\t\tvalue: degreeToTurn(angle.value),\n\t\t\t\tunit: `turn`\n\t\t\t};\n\t\t\tif (angle.unit === `rad`) return {\n\t\t\t\tvalue: radianToTurn(angle.value),\n\t\t\t\tunit: `turn`\n\t\t\t};\n\t\t\tif (angle.unit === `grad`) return {\n\t\t\t\tvalue: radianToTurn(gradianToRadian(angle.value)),\n\t\t\t\tunit: `turn`\n\t\t\t};\n\t\t\tif (angle.unit === `turn`) return angle;\n\t\t\tthrow new Error(`Unknown unit: ${angle.unit}`);\n\t\tdefault: throw new Error(`Destination unit unknown ('${destination}). Expects: deg, grad, rad or turn`);\n\t}\n};\n/**\n* Compute [unit vector](https://en.wikipedia.org/wiki/Unit_vector) of an angle. The unit vector is essentially the direction of an angle.\n* \n* ```js\n* unitVector(90); // 90 deg\n* unitVector(`1.2rad`); // 1.2 in radians\n* ```\n* \n* The coordinate space is -1..1:\n* ```\n* y 1\n* |\n* |\n* -1 --+--- 1 x\n* |\n* |\n* -1\n* ```\n* \n* See {@link fromUnitVector} to convert back to an angle\n* @param angleOrDegrees Angle specified in degrees, or an angle with units \n*/\nconst toUnitVector = (angleOrDegrees) => {\n\tconst radians = toRadian(angleOrDegrees);\n\treturn {\n\t\tx: Math.cos(radians),\n\t\ty: Math.sin(radians)\n\t};\n};\n/**\n* Convert from a [unit vector](https://en.wikipedia.org/wiki/Unit_vector) to an angle,\n* by default radians.\n* \n* ```js\n* fromUnitVector({ x: 1, y: 0.5 }); // { unit: `rad`, value: ... }\n* fromUnitVector({ x: -0.2, y: 0.4 }, `deg`) // { unit: `deg`, value ... } \n* ```\n* @param vector \n* @param unit \n* @returns \n*/\nconst fromUnitVector = (vector, unit = `rad`) => {\n\tconst r = Math.atan2(vector.x, vector.y);\n\tif (unit === `rad`) return {\n\t\tunit: `rad`,\n\t\tvalue: r\n\t};\n\treturn angleConvert(r, unit);\n};\n/**\n* Converts 'turns' to degrees. By defaults wraps the value, so \n* turn value of 1 or 2 equal 0deg instead of 360 or 720deg.\n* @param turns \n* @param wrap \n* @returns \n*/\nconst turnToDegree = (turns, wrap = true) => {\n\tif (wrap) return turns * 360 % 360;\n\treturn turns * 360;\n};\n/**\n* Calculates the average of angles\n* @param angles \n* @returns \n*/\nconst average = (angles, kind = `mean`) => {\n\tconst anglesProper = angles.map((a) => angleParse(a));\n\treturn fromUnitVector(average$1(anglesProper.map((a) => toUnitVector(a))), anglesProper[0].unit);\n};\nconst turnToRadian = (turns) => turns * piPi;\nconst degreeToTurn = (degrees) => degrees / 360;\nconst radianToTurn = (radians) => radians / piPi;\n/**\n* Normalise a radian angle to 0..2*PI range\n* @param angleRadian \n* @returns \n*/\nconst radiansNormalise = (angleRadian) => {\n\tangleRadian %= piPi;\n\treturn angleRadian < 0 ? angleRadian + piPi : angleRadian;\n};\n/**\n* Returns _true_ if `check` is between `start` and `end` angles, using 0...2PI range.\n* \n* Assumes a clockwise order. Ie. the checked angle is a wedge from `start`,\n* clockwise to `end`.\n* \n* Tip: use {@link radiansNormalise} on all angles first if uncertain if they are on 0...2PI range.\n* @param check \n* @param start \n* @param end \n* @returns \n*/\nconst radiansBetweenCircular = (check, start, end) => {\n\tif (start < 0 || start > piPi) throw new TypeError(`Param 'start' out of range. Expecting 0..2PI. Got: ${start}`);\n\tif (end < 0 || end > piPi) throw new TypeError(`Param 'end' out of range. Expecting 0..2PI. Got: ${end}`);\n\tif (start > Math.PI && end <= Math.PI) if (check > Math.PI) return check >= start;\n\telse return check <= end;\n\treturn check >= start && check <= end;\n};\n/**\n* Given two radian (0..2PI) angles, it returns the sweep angles\n* between them that is either minimised or maximised.\n* @param a \n* @param b \n*/\nconst radianRange = (a, b) => {\n\tif (a < 0 || a > piPi) throw new TypeError(`Param 'a' out of range. Expecting 0..2PI. Got: ${a}`);\n\tif (b < 0 || b > piPi) throw new TypeError(`Param 'b' out of range. Expecting 0..2PI. Got: ${b}`);\n\tconst aa = Math.min(a, b);\n\tconst bb = Math.max(a, b);\n\tif (aa < Math.PI && bb > Math.PI) {\n\t\tconst dCw = piPi - bb + aa;\n\t\tconst dCcw = bb - aa;\n\t\tif (dCw < dCcw) return {\n\t\t\tmin: {\n\t\t\t\tstart: bb,\n\t\t\t\tend: aa,\n\t\t\t\tsweep: dCw\n\t\t\t},\n\t\t\tmax: {\n\t\t\t\tstart: aa,\n\t\t\t\tend: bb,\n\t\t\t\tsweep: dCcw\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\tmin: {\n\t\t\tstart: aa,\n\t\t\tend: bb,\n\t\t\tsweep: bb - aa\n\t\t},\n\t\tmax: {\n\t\t\tstart: bb,\n\t\t\tend: aa,\n\t\t\tsweep: piPi - (bb - aa)\n\t\t}\n\t};\n};\n//#endregion\n//#region src/polar/guard.ts\n/**\n* Returns true if `p` seems to be a {@link Polar.Coord} (ie has both distance & angleRadian fields)\n* @param p\n* @returns True if `p` seems to be a PolarCoord\n*/\nconst isPolarCoord = (p) => {\n\tif (p.distance === void 0) return false;\n\tif (p.angleRadian === void 0) return false;\n\treturn true;\n};\n/**\n* Throws an error if Coord is invalid\n* @param p\n* @param name\n*/\nconst guard = (p, name = `Point`) => {\n\tif (p === void 0) throw new Error(`'${name}' is undefined. Expected {distance, angleRadian} got ${JSON.stringify(p)}`);\n\tif (p === null) throw new Error(`'${name}' is null. Expected {distance, angleRadian} got ${JSON.stringify(p)}`);\n\tif (p.angleRadian === void 0) throw new Error(`'${name}.angleRadian' is undefined. Expected {distance, angleRadian} got ${JSON.stringify(p)}`);\n\tif (p.distance === void 0) throw new Error(`'${name}.distance' is undefined. Expected {distance, angleRadian} got ${JSON.stringify(p)}`);\n\tif (typeof p.angleRadian !== `number`) throw new TypeError(`'${name}.angleRadian' must be a number. Got ${p.angleRadian}`);\n\tif (typeof p.distance !== `number`) throw new TypeError(`'${name}.distance' must be a number. Got ${p.distance}`);\n\tif (p.angleRadian === null) throw new Error(`'${name}.angleRadian' is null`);\n\tif (p.distance === null) throw new Error(`'${name}.distance' is null`);\n\tif (Number.isNaN(p.angleRadian)) throw new TypeError(`'${name}.angleRadian' is NaN`);\n\tif (Number.isNaN(p.distance)) throw new Error(`'${name}.distance' is NaN`);\n};\n//#endregion\n//#region src/polar/angles.ts\n/**\n* Returns a rotated coordinate\n* @param c Coordinate\n* @param amountRadian Amount to rotate, in radians\n* @returns\n*/\nconst rotate = (c, amountRadian) => Object.freeze({\n\t...c,\n\tangleRadian: c.angleRadian + amountRadian\n});\n/**\n* Inverts the direction of coordinate. Ie if pointing north, will point south.\n* @param p\n* @returns\n*/\nconst invert = (p) => {\n\tguard(p, `c`);\n\treturn Object.freeze({\n\t\t...p,\n\t\tangleRadian: p.angleRadian - Math.PI\n\t});\n};\n/**\n* Returns true if PolarCoords have same magnitude but opposite direction\n* @param a\n* @param b\n* @returns\n*/\nconst isOpposite = (a, b) => {\n\tguard(a, `a`);\n\tguard(b, `b`);\n\tif (a.distance !== b.distance) return false;\n\treturn a.angleRadian === -b.angleRadian;\n};\n/**\n* Returns true if Coords have the same direction, regardless of magnitude\n* @param a\n* @param b\n* @returns\n*/\nconst isParallel$1 = (a, b) => {\n\tguard(a, `a`);\n\tguard(b, `b`);\n\treturn a.angleRadian === b.angleRadian;\n};\n/**\n* Returns true if coords are opposite direction, regardless of magnitude\n* @param a\n* @param b\n* @returns\n*/\nconst isAntiParallel = (a, b) => {\n\tguard(a, `a`);\n\tguard(b, `b`);\n\treturn a.angleRadian === -b.angleRadian;\n};\n/**\n* Returns a rotated coordinate\n* @param c Coordinate\n* @param amountDeg Amount to rotate, in degrees\n* @returns\n*/\nconst rotateDegrees = (c, amountDeg) => Object.freeze({\n\t...c,\n\tangleRadian: c.angleRadian + degreeToRadian(amountDeg)\n});\n//#endregion\n//#region src/point/empty.ts\n/**\n* An empty point of `{ x: 0, y: 0 }`.\n*\n* Use `isEmpty` to check if a point is empty.\n* Use `Empty3d` to get an empty point with `z`.\n*/\nconst Empty = {\n\tx: 0,\n\ty: 0\n};\n/**\n* Returns { x:1, y:1 }\n*/\nconst Unit = {\n\tx: 1,\n\ty: 1\n};\n/**\n* An empty Point of `{ x: 0, y: 0, z: 0}`\n* Use `isEmpty` to check if a point is empty.\n* Use `Empty` to get an empty point without `z`.\n*/\nconst Empty3d = {\n\tx: 0,\n\ty: 0,\n\tz: 0\n};\n/**\n* Returns { x:1,y:1,z:1 }\n*/\nconst Unit3d = {\n\tx: 1,\n\ty: 1,\n\tz: 1\n};\n//#endregion\n//#region src/polar/conversions.ts\n/**\n* Converts a polar coordinate to a Line.\n* \n* ```js\n* const line = toLine({ angleRadian: Math.Pi, distance: 0.5 }, { x: 0.2, y: 0.1 });\n* // Yields { a: { x, y}, b: { x, y } }\n* ```\n* \n* The 'start' parameter is taken to be the origin of the Polar coordinate.\n* @param c \n* @param start \n* @returns \n*/\nconst toLine = (c, start) => {\n\treturn {\n\t\ta: start,\n\t\tb: toCartesian$1(c, start)\n\t};\n};\n/**\n* Converts to Cartesian coordinate from polar.\n*\n* ```js\n*\n* const origin = { x: 50, y: 50}; // Polar origin\n* // Yields: { x, y }\n* const polar = Polar.toCartesian({ distance: 10, angleRadian: 0 }, origin);\n* ```\n*\n* Distance and angle can be provided as numbers intead:\n*\n* ```\n* // Yields: { x, y }\n* const polar = Polar.toCartesian(10, 0, origin);\n* ```\n*\n* @param a\n* @param b\n* @param c\n* @returns\n*/\nconst toCartesian$1 = (a, b, c) => {\n\tif (isPolarCoord(a)) {\n\t\tif (typeof b === `undefined`) b = Empty;\n\t\tif (isPoint(b)) return polarToCartesian(a.distance, a.angleRadian, b);\n\t\tthrow new Error(`Expecting (Coord, Point). Second parameter is not a point`);\n\t} else if (typeof a === `object`) throw new TypeError(`First param is an object, but not a Coord: ${JSON.stringify(a)}`);\n\telse if (typeof a === `number` && typeof b === `number`) {\n\t\tif (typeof c === `undefined`) c = Empty;\n\t\tif (!isPoint(c)) throw new Error(`Expecting (number, number, Point). Point param wrong type`);\n\t\treturn polarToCartesian(a, b, c);\n\t} else throw new TypeError(`Expecting parameters of (number, number). Got: (${typeof a}, ${typeof b}, ${typeof c}). a: ${JSON.stringify(a)}`);\n};\n/**\n* Converts a Cartesian coordinate to polar\n*\n* ```js\n*\n* // Yields: { angleRadian, distance }\n* const polar = Polar.fromCartesian({x: 50, y: 50}, origin);\n* ```\n*\n* Any additional properties of `point` are copied to object.\n* \n* Options:\n* * fullCircle: If _true_ (default) returns values on 0..2PI range. If _false_, 0....PI..-PI range.\n* * digits: Rounding to apply\n* @param point Point\n* @param origin Origin. If unspecified, {x:0,y:0} is used\n* @param options Options\n* @returns\n*/\nconst fromCartesian = (point, origin, options = {}) => {\n\tif (typeof point !== `object`) throw new TypeError(`Param 'point' wrong. Expecting a Point, got: ${typeof point}`);\n\tconst fullCircle = options.fullCircle ?? true;\n\tif (typeof origin === `object`) point = subtract(point, origin);\n\tlet angle = Math.atan2(point.y, point.x);\n\tif (fullCircle) angle = radiansNormalise(angle);\n\tlet distance = Math.hypot(point.x, point.y);\n\tif (typeof options.digits === `number`) {\n\t\tangle = parseFloat(angle.toFixed(options.digits));\n\t\tdistance = parseFloat(distance.toFixed(options.digits));\n\t}\n\tconst polar = {\n\t\t...point,\n\t\tangleRadian: angle,\n\t\tdistance\n\t};\n\tdelete polar.x;\n\tdelete polar.y;\n\treturn Object.freeze(polar);\n};\n/**\n* Converts a polar coordinate to Cartesian\n* @param distance Distance\n* @param angleRadians Angle in radians\n* @param origin Origin, or 0,0 by default.\n* @returns\n*/\nconst polarToCartesian = (distance, angleRadians, origin = Empty) => {\n\tguard$1(origin);\n\treturn Object.freeze({\n\t\tx: origin.x + distance * Math.cos(angleRadians),\n\t\ty: origin.y + distance * Math.sin(angleRadians)\n\t});\n};\n/**\n* Returns a human-friendly string representation `(distance, angleDeg)`.\n* If `precision` is supplied, this will be the number of significant digits.\n* @param p\n* @returns\n*/\nconst toString$1 = (p, digits) => {\n\tif (p === void 0) return `(undefined)`;\n\tif (p === null) return `(null)`;\n\tconst angleDeg = radianToDegree(p.angleRadian);\n\treturn `(${digits ? p.distance.toFixed(digits) : p.distance},${digits ? angleDeg.toFixed(digits) : angleDeg})`;\n};\nconst toPoint = (v, origin = Empty) => {\n\tguard(v, `v`);\n\treturn Object.freeze({\n\t\tx: origin.x + v.distance * Math.cos(v.angleRadian),\n\t\ty: origin.y + v.distance * Math.sin(v.angleRadian)\n\t});\n};\n/**\n* Converts a line to a PolarLine\n* \n* A/B points of the line can optionally be reordered based on angle or distance.\n* @param lineOrLines \n* @param origin \n* @param orderBy Whether a/b points are reordered based on `angle` or `distance`. Default: `none`\n* @returns \n*/\nfunction toPolarLine(lineOrLines, origin, opts = {}) {\n\tconst lines = Array.isArray(lineOrLines) ? lineOrLines : [lineOrLines];\n\tif (lines.length === 0) return [];\n\tconst orderBy = opts.orderBy ?? `none`;\n\tconst pl = lines.map((line) => {\n\t\tlet a = fromCartesian(line.a, origin, opts);\n\t\tlet b = fromCartesian(line.b, origin, opts);\n\t\tconst ranges = radianRange(a.angleRadian, b.angleRadian);\n\t\tif (orderBy === `angle-min` && ranges.min.start !== a.angleRadian) [a, b] = [b, a];\n\t\telse if (orderBy === `angle-max` && ranges.max.start < a.angleRadian) [a, b] = [b, a];\n\t\telse if (orderBy === `distance` && b.distance < a.distance) [a, b] = [b, a];\n\t\treturn Object.freeze({\n\t\t\ta,\n\t\t\tb,\n\t\t\torigin\n\t\t});\n\t});\n\tif (Array.isArray(lineOrLines)) return pl;\n\treturn pl[0];\n}\n/**\n* Returns a string representation of a PolarLine\n* @param line \n* @param digits \n* @returns \n*/\nfunction polarLineToString(line, digits = 2) {\n\treturn `angle: ${line.a.angleRadian.toFixed(digits)}-${line.b.angleRadian.toFixed(digits)} dist: ${line.a.distance.toFixed(digits)}-${line.b.distance.toFixed(digits)}`;\n}\nfunction lineToCartesian(lineOrLines, origin) {\n\tconst lines = Array.isArray(lineOrLines) ? lineOrLines : [lineOrLines];\n\tif (lines.length === 0) return [];\n\tconst cart = lines.map((line) => Object.freeze({\n\t\ta: toCartesian$1(line.a, origin),\n\t\tb: toCartesian$1(line.b, origin)\n\t}));\n\tif (Array.isArray(lineOrLines)) return cart;\n\treturn cart[0];\n}\n//#endregion\n//#region src/polar/math.ts\nconst normalise = (c) => {\n\tif (c.distance === 0) throw new Error(`Cannot normalise vector of length 0`);\n\treturn Object.freeze({\n\t\t...c,\n\t\tdistance: 1\n\t});\n};\n/**\n* Clamps the magnitude of a vector\n* @param v\n* @param max\n* @param min\n* @returns\n*/\nconst clampMagnitude = (v, max = 1, min = 0) => {\n\tlet mag = v.distance;\n\tif (mag > max) mag = max;\n\tif (mag < min) mag = min;\n\treturn Object.freeze({\n\t\t...v,\n\t\tdistance: mag\n\t});\n};\n/**\n* Calculate dot product of two PolarCoords.\n*\n* Eg, power is the dot product of force and velocity\n*\n* Dot products are also useful for comparing similarity of\n* angle between two unit PolarCoords.\n* @param a\n* @param b\n* @returns\n*/\nconst dotProduct$1 = (a, b) => {\n\tguard(a, `a`);\n\tguard(b, `b`);\n\treturn a.distance * b.distance * Math.cos(b.angleRadian - a.angleRadian);\n};\n/**\n* Multiplies the magnitude of a coord by `amt`.\n* Direction is unchanged.\n* @param v\n* @param amt\n* @returns\n*/\nconst multiply = (v, amt) => {\n\tguard(v);\n\tresultThrow(numberTest(amt, ``, `amt`));\n\treturn Object.freeze({\n\t\t...v,\n\t\tdistance: v.distance * amt\n\t});\n};\n/**\n* Divides the magnitude of a coord by `amt`.\n* Direction is unchanged.\n* @param v\n* @param amt\n* @returns\n*/\nconst divide = (v, amt) => {\n\tguard(v);\n\tresultThrow(numberTest(amt, ``, `amt`));\n\treturn Object.freeze({\n\t\t...v,\n\t\tdistance: v.distance / amt\n\t});\n};\n/**\n* Returns _true_ if `check` is between `start` and `end` angles.\n* @param start \n* @param end \n* @param check \n* @returns \n*/\nconst between = (check, start, end) => {\n\treturn radiansBetweenCircular(check.angleRadian, start.angleRadian, end.angleRadian);\n};\n//#endregion\n//#region src/point/angle.ts\n/**\n* Returns the angle in radians between `a` and `b`.\n*\n* Eg if `a` is the origin, and `b` is another point,\n* in degrees one would get 0 to -180 when `b` was above `a`.\n* -180 would be `b` in line with `a`.\n* Same for under `a`.\n*\n* Providing a third point `c` gives the interior angle, where `b` is the middle point.\n* \n* See also {@link angleRadianCircle} which returns coordinates on 0..Math.Pi*2\n* range. This avoids negative numbers.\n* \n* @example Calculate angle between a middle of canvas and the cursor\n* ```js\n* const canvasEl = document.querySelector('canvas');\n* const middle = { x: canvasEl.width/2, y: canvasEl.height /2 }\n* \n* canvasEl.addEventListener(`pointermove`, event => { \n* const cursor = {\n* x: event.offsetX,\n* y: event.offsetY\n* }\n* const a = G.Points.angleRadian(middle, cursor);\n*});\n* ```\n* @param a\n* @param b\n* @param c\n* @returns\n*/\nconst angleRadian = (a, b, c) => {\n\tguard$1(a, `a`);\n\tif (b === void 0) return Math.atan2(a.y, a.x);\n\tguard$1(b, `b`);\n\tif (c === void 0) return Math.atan2(b.y - a.y, b.x - a.x);\n\tguard$1(c, `c`);\n\treturn Math.atan2(b.y - a.y, b.x - a.x) - Math.atan2(c.y - a.y, c.x - a.x);\n};\n/**\n* Returns the angle between point(s) using a radian circle system.\n* ```\n* 90deg\n* Pi/2\n* |\n* Pi ---+--- 0\n* 180 |\n* 3PI/2\n* 270deg\n* ```\n* @param a \n* @param b \n* @param c \n* @returns \n*/\nconst angleRadianCircle = (a, b, c) => {\n\tconst angle = angleRadian(a, b, c);\n\tif (angle < 0) return angle + piPi;\n\treturn angle;\n};\n/**\n* Return the angle of a wedge, defined by a, b and C points, where 'b'\n* could be thought of as the origin or pivot.\n* \n* @param a \n* @param b \n* @param c \n* @returns \n*/\nconst angleRadianThreePoint = (a, b, c) => {\n\tconst ab = Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n\tconst bc = Math.sqrt(Math.pow(b.x - c.x, 2) + Math.pow(b.y - c.y, 2));\n\tconst ac = Math.sqrt(Math.pow(c.x - a.x, 2) + Math.pow(c.y - a.y, 2));\n\treturn Math.acos((bc * bc + ab * ab - ac * ac) / (2 * bc * ab));\n};\n//#endregion\n//#region src/polar/ray.ts\nvar ray_exports = /* @__PURE__ */ __exportAll({\n\tfromLine: () => fromLine,\n\tisParallel: () => isParallel,\n\ttoCartesian: () => toCartesian,\n\ttoString: () => toString\n});\n/**\n* Converts a ray (or array of rays) to a Line in cartesian coordinates.\n* \n* By default, the ray's origin is taken to be 0,0.\n* Passing in an origin will override this default, or whatever\n* the ray's origin property is.\n* @param ray Ray\n* @param origin Override or provide origin point\n* @returns \n*/\nfunction toCartesian(rayOrRays, origin) {\n\tconst rays = Array.isArray(rayOrRays) ? rayOrRays : [rayOrRays];\n\tif (rays.length === 0) return [];\n\tconst lines = rays.map((ray) => {\n\t\tconst o = getOrigin(ray, origin);\n\t\treturn {\n\t\t\ta: toCartesian$1(ray.offset ?? 0, ray.angleRadian, o),\n\t\t\tb: toCartesian$1((ray.offset ?? 0) + ray.length, ray.angleRadian, o)\n\t\t};\n\t});\n\tif (Array.isArray(rayOrRays)) return lines;\n\treturn lines[0];\n}\nconst isParallel = (a, b) => a.angleRadian === b.angleRadian;\nconst getOrigin = (ray, origin) => {\n\tif (origin !== void 0) return origin;\n\tif (ray.origin !== void 0) return ray.origin;\n\treturn {\n\t\tx: 0,\n\t\ty: 0\n\t};\n};\n/**\n* Returns a string representation of the ray, useful for debugging.\n* \n* ```js\n* \"PolarRay(angle: ... offset: ... len: ... origin: ...)\"\n* ```\n* @param ray \n* @returns \n*/\nconst toString = (ray) => {\n\tlet basic = `PolarRay(angle: ${ray.angleRadian} offset: ${ray.offset} len: ${ray.length}`;\n\tif (ray.origin) basic += ` origin: ${toString$2(ray.origin)}`;\n\tbasic += `)`;\n\treturn basic;\n};\n/**\n* Returns a PolarRay based on a line(s) and origin.\n* \n* If `origin` is omitted, the origin is taken to be the 'a' point of the line.\n* Otherwise, the origin value is used to determine the 'offset' of the ray.\n* \n* @param lineOrLines Single line or array of lines \n* @param origin \n* @returns \n*/\nfunction fromLine(lineOrLines, origin) {\n\tconst lines = Array.isArray(lineOrLines) ? lineOrLines : [lineOrLines];\n\tif (lines.length === 0) return [];\n\tconst rays = lines.map((line) => {\n\t\tif (origin) return {\n\t\t\tangleRadian: angleRadian(line.a, origin),\n\t\t\toffset: distance(line.a, origin),\n\t\t\tlength: distance(line.b, line.a),\n\t\t\torigin\n\t\t};\n\t\telse return {\n\t\t\tangleRadian: angleRadian(line.a, line.b),\n\t\t\tlength: distance(line.b, line.a),\n\t\t\torigin: line.a\n\t\t};\n\t});\n\tif (Array.isArray(lineOrLines)) return rays;\n\treturn rays[0];\n}\n//#endregion\n//#region src/polar/spiral.ts\nfunction* spiral(smoothness, zoom) {\n\tlet step = 0;\n\twhile (true) {\n\t\tconst a = smoothness * step++;\n\t\tyield {\n\t\t\tdistance: zoom * a,\n\t\t\tangleRadian: a,\n\t\t\tstep\n\t\t};\n\t}\n}\n/**\n* Produces an Archimedian spiral with manual stepping.\n* @param step Step number. Typically 0, 1, 2 ...\n* @param smoothness 0.1 pretty rounded, at around 5 it starts breaking down\n* @param zoom At smoothness 0.1, zoom starting at 1 is OK\n* @returns\n*/\nconst spiralRaw = (step, smoothness, zoom) => {\n\tconst a = smoothness * step;\n\treturn Object.freeze({\n\t\tdistance: zoom * a,\n\t\tangleRadian: a\n\t});\n};\n//#endregion\n//#region src/polar/intersects.ts\n/**\n* Returns a generator function that checks for intersections with a static set of lines.\n* The generator yields values of `{ distance: number, line: PolarLine }`. Lines which have no\n* intersecton are not returned.\n* \n* ```js\n* const c = intersectionDistanceCompute(line1, line2, line3);\n* \n* // Get all results for angle 0.2 as an array\n* const computed = [...c.compute(0.2)]\n* \n* // Sort array by distance (ascending)\n* computed.sort((a, b) => a.distance - b.distance);\n* ```\n* @param lines \n* @returns \n*/\nconst intersectionDistanceCompute = (...lines) => {\n\tconst precompute = (line) => {\n\t\tconst angleMin = Math.min(line.a.angleRadian, line.b.angleRadian);\n\t\tconst angleMax = Math.max(line.a.angleRadian, line.b.angleRadian);\n\t\treturn {\n\t\t\t...line,\n\t\t\tsinBA: Math.sin(line.b.angleRadian - line.a.angleRadian),\n\t\t\tangleMin,\n\t\t\tangleMax,\n\t\t\twraps: Math.abs(line.b.angleRadian - line.a.angleRadian) > Math.PI\n\t\t};\n\t};\n\tconst cache = lines.map((line) => precompute(line));\n\tconst visibilityPolygon = (feather = 1e-6) => {\n\t\tconst angles = [];\n\t\tlines.forEach((line) => {\n\t\t\tangles.push(line.a.angleRadian, line.b.angleRadian, line.a.angleRadian - feather, line.a.angleRadian + feather, line.b.angleRadian - feather, line.b.angleRadian + feather);\n\t\t});\n\t\tangles.sort((a, b) => a - b);\n\t\tconst polygon = [];\n\t\tfor (const angleCalc of angles) {\n\t\t\tlet minDistribution = Infinity;\n\t\t\tfor (const seg of cache) {\n\t\t\t\tconst d = distance(angleCalc, seg);\n\t\t\t\tif (d < minDistribution) minDistribution = d;\n\t\t\t}\n\t\t\tif (minDistribution < Infinity) polygon.push({\n\t\t\t\tangleRadian: angleCalc,\n\t\t\t\tdistance: minDistribution\n\t\t\t});\n\t\t}\n\t\treturn polygon;\n\t};\n\tconst distance = (angle, seg) => {\n\t\tif (!(seg.wraps ? angle >= seg.angleMax || angle <= seg.angleMin : angle >= seg.angleMin && angle <= seg.angleMax)) return NaN;\n\t\tconst sin2θ = Math.sin(seg.b.angleRadian - angle);\n\t\tconst sinθ1 = Math.sin(angle - seg.a.angleRadian);\n\t\tconst denom = seg.b.distance * sin2θ + seg.a.distance * sinθ1;\n\t\tif (denom <= 0) return NaN;\n\t\treturn seg.a.distance * seg.b.distance * seg.sinBA / denom;\n\t};\n\tfunction* compute(angleRadian) {\n\t\tfor (let index = 0; index < cache.length; index++) {\n\t\t\tconst d = distance(angleRadian, cache[index]);\n\t\t\tif (Number.isNaN(d)) continue;\n\t\t\tyield {\n\t\t\t\tdistance: d,\n\t\t\t\tline: lines[index]\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tcompute,\n\t\tvisibilityPolygon\n\t};\n};\n/**\n* Returns the distance at which a line from `angleRadian` hits `line`. Returns `Infinity`\n* if there's no intersection.\n* \n* Calculations assume that all angles etc are in relation to a common origin point.\n* If repeatedly comparing against the same line (or set of lines), use {@link intersectionDistanceCompute} for\n* improved performance.\n* \n* @param angleRadian \n* @param line \n* @returns \n*/\nconst intersectionDistance = (angleRadian, line) => {\n\tconst ray = radiansNormalise(angleRadian);\n\tconst a = radiansNormalise(line.a.angleRadian);\n\tconst b = radiansNormalise(line.b.angleRadian);\n\tif (!radiansBetweenCircular(ray, a, b)) return Infinity;\n\tconst ad = line.a.distance;\n\tconst ab = line.b.distance;\n\tconst sineBA = Math.sin(b - a);\n\tconst sineBRay = Math.sin(b - ray);\n\tconst sineRayA = Math.sin(ray - a);\n\tconst denominator = ab * sineBRay + ad * sineRayA;\n\tif (Math.abs(denominator) < 1e-10) return Infinity;\n\tconst r = ad * ab * sineBA / denominator;\n\tif (r < 0) return Infinity;\n\treturn r;\n};\n//#endregion\n//#region src/polar/index.ts\nvar polar_exports = /* @__PURE__ */ __exportAll({\n\tRay: () => ray_exports,\n\tbetween: () => between,\n\tclampMagnitude: () => clampMagnitude,\n\tdivide: () => divide,\n\tdotProduct: () => dotProduct$1,\n\tfromCartesian: () => fromCartesian,\n\tguard: () => guard,\n\tintersectionDistance: () => intersectionDistance,\n\tintersectionDistanceCompute: () => intersectionDistanceCompute,\n\tinvert: () => invert,\n\tisAntiParallel: () => isAntiParallel,\n\tisOpposite: () => isOpposite,\n\tisParallel: () => isParallel$1,\n\tisPolarCoord: () => isPolarCoord,\n\tlineToCartesian: () => lineToCartesian,\n\tmultiply: () => multiply,\n\tnormalise: () => normalise,\n\tpolarLineToString: () => polarLineToString,\n\trotate: () => rotate,\n\trotateDegrees: () => rotateDegrees,\n\tspiral: () => spiral,\n\tspiralRaw: () => spiralRaw,\n\ttoCartesian: () => toCartesian$1,\n\ttoLine: () => toLine,\n\ttoPoint: () => toPoint,\n\ttoPolarLine: () => toPolarLine,\n\ttoString: () => toString$1\n});\n//#endregion\nexport { radianToTurn as $, isOpposite as A, degreeToGradian as B, toString$1 as C, Unit3d as D, Unit as E, isPolarCoord as F, gradianToDegree as G, degreeToTurn as H, angleConvert as I, radianArc as J, gradianToRadian as K, angleParse as L, rotate as M, rotateDegrees as N, invert as O, guard as P, radianToGradian as Q, average as R, toPolarLine as S, Empty3d as T, degreesSum as U, degreeToRadian as V, fromUnitVector as W, radianRange as X, radianInvert as Y, radianToDegree as Z, lineToCartesian as _, spiralRaw as a, toUnitVector as at, toLine as b, angleRadianCircle as c, average$1 as ct, clampMagnitude as d, radiansBetweenCircular as et, divide as f, fromCartesian as g, normalise as h, spiral as i, toRadian as it, isParallel$1 as j, isAntiParallel as k, angleRadianThreePoint as l, averager as lt, multiply as m, intersectionDistance as n, radiansNormalise as nt, ray_exports as o, turnToDegree as ot, dotProduct$1 as p, isAngleType as q, intersectionDistanceCompute as r, radiansSum as rt, angleRadian as s, turnToRadian as st, polar_exports as t, radiansFromAxisX as tt, between as u, piPi as ut, polarLineToString as v, Empty as w, toPoint as x, toCartesian$1 as y, degreeArc as z };\n","import { t as __exportAll } from \"./chunk-pbuEa-1d.js\";\nimport { angleConvert, angleParse } from \"@ixfx/geometry\";\nimport { numberInclusiveRangeTest, numberTest, percentTest, resultThrow } from \"@ixfx/guards\";\nimport { clamp, interpolate, scaleClamped } from \"@ixfx/numbers\";\nimport { pairwise } from \"@ixfx/arrays\";\n//#region ../../node_modules/.pnpm/colorizr@4.0.1/node_modules/colorizr/dist/index.mjs\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n\tenumerable: true,\n\tconfigurable: true,\n\twritable: true,\n\tvalue\n}) : obj[key] = value;\nvar __export = (target, all) => {\n\tfor (var name2 in all) __defProp(target, name2, {\n\t\tget: all[name2],\n\t\tenumerable: true\n\t});\n};\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar COLOR_KEYS = {\n\thsl: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\"\n\t],\n\toklab: [\n\t\t\"l\",\n\t\t\"a\",\n\t\t\"b\"\n\t],\n\toklch: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\"\n\t],\n\trgb: [\n\t\t\"r\",\n\t\t\"g\",\n\t\t\"b\"\n\t]\n};\nvar COLOR_MODELS = [\n\t\"hsl\",\n\t\"oklab\",\n\t\"oklch\",\n\t\"rgb\"\n];\nvar DEG2RAD = Math.PI / 180;\nvar LAB_TO_LMS = {\n\tl: [.3963377773761749, .2158037573099136],\n\tm: [-.1055613458156586, -.0638541728258133],\n\ts: [-.0894841775298119, -1.2914855480194092]\n};\nvar LRGB_TO_LMS = {\n\tl: [\n\t\t.4122214708,\n\t\t.5363325363,\n\t\t.0514459929\n\t],\n\tm: [\n\t\t.2119034982,\n\t\t.6806995451,\n\t\t.1073969566\n\t],\n\ts: [\n\t\t.0883024619,\n\t\t.2817188376,\n\t\t.6299787005\n\t]\n};\nvar LSM_TO_LAB = {\n\tl: [\n\t\t.2104542553,\n\t\t.793617785,\n\t\t.0040720468\n\t],\n\ta: [\n\t\t1.9779984951,\n\t\t2.428592205,\n\t\t.4505937099\n\t],\n\tb: [\n\t\t.0259040371,\n\t\t.7827717662,\n\t\t.808675766\n\t]\n};\nvar LSM_TO_RGB = {\n\tr: [\n\t\t4.076741636075958,\n\t\t-3.307711539258063,\n\t\t.2309699031821043\n\t],\n\tg: [\n\t\t-1.2684379732850315,\n\t\t2.609757349287688,\n\t\t-.341319376002657\n\t],\n\tb: [\n\t\t-.0041960761386756,\n\t\t-.7034186179359362,\n\t\t1.7076146940746117\n\t]\n};\nvar PRECISION = 5;\nvar RAD2DEG = 180 / Math.PI;\nvar MESSAGES = {\n\talpha: \"alpha must be a number between 0 and 1\",\n\talphaAdjustment: \"alpha must be a number between -1 and 1\",\n\tamount: \"amount must be a number between 0 and 100\",\n\tcolorRequired: \"color is required\",\n\tdegreesRange: \"degrees must be a number between -360 and 360\",\n\thueArgs: \"point, chroma and h are required\",\n\thueRange: \"hue must be a number between 0 and 360\",\n\tinput: \"input is required\",\n\tinputHex: \"input is required and must be a hex\",\n\tinputNumber: \"input is required and must be a number\",\n\tinputString: \"input is required and must be a string\",\n\tinvalid: \"invalid input\",\n\tinvalidColor: \"invalid color\",\n\tinvalidCSS: \"invalid CSS string\",\n\tinvalidHex: \"invalid hex\",\n\tinvalidKey: \"invalid key\",\n\tinvalidModel: \"invalid model\",\n\tinvalidRange: \"color value out of range\",\n\tleft: \"left is required and must be a string\",\n\tlightnessRange: \"lightness must be a number between 0 and 1\",\n\toptions: \"invalid options\",\n\tpaletteSize: \"palette size must be at least 2\",\n\tratioRange: \"ratio must be a number between 0 and 1\",\n\tright: \"right is required and must be a string\",\n\tthreshold: \"threshold must be a number between 0 and 255\",\n\tthresholdNormalized: \"threshold must be a number between 0 and 1\"\n};\nfunction invariant(condition, message) {\n\tif (condition) return;\n\tconst error = !message ? /* @__PURE__ */ new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\") : new Error(message);\n\terror.name = \"colorizr\";\n\tthrow error;\n}\nvar cssColors = {\n\taliceblue: \"#f0f8ff\",\n\tantiquewhite: \"#faebd7\",\n\taqua: \"#00ffff\",\n\taquamarine: \"#7fffd4\",\n\tazure: \"#f0ffff\",\n\tbeige: \"#f5f5dc\",\n\tbisque: \"#ffe4c4\",\n\tblack: \"#000000\",\n\tblanchedalmond: \"#ffebcd\",\n\tblue: \"#0000ff\",\n\tblueviolet: \"#8a2be2\",\n\tbrown: \"#a52a2a\",\n\tburlywood: \"#deb887\",\n\tcadetblue: \"#5f9ea0\",\n\tchartreuse: \"#7fff00\",\n\tchocolate: \"#d2691e\",\n\tcoral: \"#ff7f50\",\n\tcornflowerblue: \"#6495ed\",\n\tcornsilk: \"#fff8dc\",\n\tcrimson: \"#dc143c\",\n\tcyan: \"#00ffff\",\n\tdarkblue: \"#00008b\",\n\tdarkcyan: \"#008b8b\",\n\tdarkgoldenrod: \"#b8860b\",\n\tdarkgray: \"#a9a9a9\",\n\tdarkgreen: \"#006400\",\n\tdarkkhaki: \"#bdb76b\",\n\tdarkmagenta: \"#8b008b\",\n\tdarkolivegreen: \"#556b2f\",\n\tdarkorange: \"#ff8c00\",\n\tdarkorchid: \"#9932cc\",\n\tdarkred: \"#8b0000\",\n\tdarksalmon: \"#e9967a\",\n\tdarkseagreen: \"#8fbc8f\",\n\tdarkslateblue: \"#483d8b\",\n\tdarkslategray: \"#2f4f4f\",\n\tdarkslategrey: \"#2f4f4f\",\n\tdarkturquoise: \"#00ced1\",\n\tdarkviolet: \"#9400d3\",\n\tdeeppink: \"#ff1493\",\n\tdeepskyblue: \"#00bfff\",\n\tdimgray: \"#696969\",\n\tdimgrey: \"#696969\",\n\tdodgerblue: \"#1e90ff\",\n\tfirebrick: \"#b22222\",\n\tfloralwhite: \"#fffaf0\",\n\tforestgreen: \"#228b22\",\n\tfuchsia: \"#ff00ff\",\n\tgainsboro: \"#dcdcdc\",\n\tghostwhite: \"#f8f8ff\",\n\tgold: \"#ffd700\",\n\tgoldenrod: \"#daa520\",\n\tgray: \"#808080\",\n\tgrey: \"#808080\",\n\tgreen: \"#008000\",\n\tgreenyellow: \"#adff2f\",\n\thoneydew: \"#f0fff0\",\n\thotpink: \"#ff69b4\",\n\tindianred: \"#cd5c5c\",\n\tindigo: \"#4b0082\",\n\tivory: \"#fffff0\",\n\tkhaki: \"#f0e68c\",\n\tlavender: \"#e6e6fa\",\n\tlavenderblush: \"#fff0f5\",\n\tlawngreen: \"#7cfc00\",\n\tlemonchiffon: \"#fffacd\",\n\tlightblue: \"#add8e6\",\n\tlightcoral: \"#f08080\",\n\tlightcyan: \"#e0ffff\",\n\tlightgoldenrodyellow: \"#fafad2\",\n\tlightgray: \"#d3d3d3\",\n\tlightgreen: \"#90ee90\",\n\tlightgrey: \"#d3d3d3\",\n\tlightpink: \"#ffb6c1\",\n\tlightsalmon: \"#ffa07a\",\n\tlightseagreen: \"#20b2aa\",\n\tlightskyblue: \"#87cefa\",\n\tlightslategray: \"#778899\",\n\tlightslategrey: \"#778899\",\n\tlightsteelblue: \"#b0c4de\",\n\tlightyellow: \"#ffffe0\",\n\tlime: \"#00ff00\",\n\tlimegreen: \"#32cd32\",\n\tlinen: \"#faf0e6\",\n\tmagenta: \"#ff00ff\",\n\tmaroon: \"#800000\",\n\tmediumaquamarine: \"#66cdaa\",\n\tmediumblue: \"#0000cd\",\n\tmediumorchid: \"#ba55d3\",\n\tmediumpurple: \"#9370db\",\n\tmediumseagreen: \"#3cb371\",\n\tmediumslateblue: \"#7b68ee\",\n\tmediumspringgreen: \"#00fa9a\",\n\tmediumturquoise: \"#48d1cc\",\n\tmediumvioletred: \"#c71585\",\n\tmidnightblue: \"#191970\",\n\tmintcream: \"#f5fffa\",\n\tmistyrose: \"#ffe4e1\",\n\tmoccasin: \"#ffe4b5\",\n\tnavajowhite: \"#ffdead\",\n\tnavy: \"#000080\",\n\toldlace: \"#fdf5e6\",\n\tolive: \"#808000\",\n\tolivedrab: \"#6b8e23\",\n\torange: \"#ffa500\",\n\torangered: \"#ff4500\",\n\torchid: \"#da70d6\",\n\tpalegoldenrod: \"#eee8aa\",\n\tpalegreen: \"#98fb98\",\n\tpaleturquoise: \"#afeeee\",\n\tpalevioletred: \"#db7093\",\n\tpapayawhip: \"#ffefd5\",\n\tpeachpuff: \"#ffdab9\",\n\tperu: \"#cd853f\",\n\tpink: \"#ffc0cb\",\n\tplum: \"#dda0dd\",\n\tpowderblue: \"#b0e0e6\",\n\tpurple: \"#800080\",\n\trebeccapurple: \"#663399\",\n\tred: \"#ff0000\",\n\trosybrown: \"#bc8f8f\",\n\troyalblue: \"#4169e1\",\n\tsaddlebrown: \"#8b4513\",\n\tsalmon: \"#fa8072\",\n\tsandybrown: \"#f4a460\",\n\tseagreen: \"#2e8b57\",\n\tseashell: \"#fff5ee\",\n\tsienna: \"#a0522d\",\n\tsilver: \"#c0c0c0\",\n\tskyblue: \"#87ceeb\",\n\tslateblue: \"#6a5acd\",\n\tslategray: \"#708090\",\n\tslategrey: \"#708090\",\n\tsnow: \"#fffafa\",\n\tspringgreen: \"#00ff7f\",\n\tsteelblue: \"#4682b4\",\n\ttan: \"#d2b48c\",\n\tteal: \"#008080\",\n\tthistle: \"#d8bfd8\",\n\ttomato: \"#ff6347\",\n\tturquoise: \"#40e0d0\",\n\tviolet: \"#ee82ee\",\n\twheat: \"#f5deb3\",\n\twhite: \"#ffffff\",\n\twhitesmoke: \"#f5f5f5\",\n\tyellow: \"#ffff00\",\n\tyellowgreen: \"#9acd32\"\n};\nvar hexRegex = /^#(?:[\\da-f]{3,4}|[\\da-f]{6,8})$/i;\nfunction hasValidMatches(input) {\n\treturn Array.isArray(input) && input.length === 6;\n}\nfunction isHex(input) {\n\tif (!isString(input)) return false;\n\treturn hexRegex.test(input);\n}\nfunction isHSL(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"h\") return value >= 0 && value <= 360;\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.hsl.includes(key) && value >= 0 && value <= 100;\n\t});\n}\nfunction isLAB(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"l\") return value >= 0 && value <= 100;\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.oklab.includes(key) && value >= -1 && value <= 1;\n\t});\n}\nfunction isLCH(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"l\") return value >= 0 && value <= 100;\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.oklch.includes(key) && value >= 0 && value <= (key === \"h\" ? 360 : 1);\n\t});\n}\nfunction isNamedColor(input) {\n\treturn isString(input) && Object.keys(cssColors).includes(input.toLowerCase());\n}\nfunction isNumber(input) {\n\treturn typeof input === \"number\" && !Number.isNaN(input);\n}\nfunction isNumberInRange(input, min, max) {\n\treturn isNumber(input) && input >= min && input <= max;\n}\nfunction isPlainObject(input) {\n\tif (!input) return false;\n\tconst { toString } = Object.prototype;\n\tconst prototype = Object.getPrototypeOf(input);\n\treturn toString.call(input) === \"[object Object]\" && (prototype === null || prototype === Object.getPrototypeOf({}));\n}\nfunction isRGB(input) {\n\tif (!isPlainObject(input)) return false;\n\tconst entries = Object.entries(input);\n\treturn !!entries.length && entries.every(([key, value]) => {\n\t\tif (key === \"alpha\") return value >= 0 && value <= 1;\n\t\treturn COLOR_KEYS.rgb.includes(key) && value >= 0 && value <= 255;\n\t});\n}\nfunction isString(input, validate = true) {\n\tconst isValid = typeof input === \"string\";\n\tif (validate) return isValid && !!input.trim().length;\n\treturn isValid;\n}\nfunction isValidColorModel(input) {\n\treturn isHSL(input) || isRGB(input) || isLAB(input) || isLCH(input);\n}\nfunction formatHex(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tlet color = input.replace(\"#\", \"\");\n\tif (color.length === 3 || color.length === 4) {\n\t\tconst values = [...color];\n\t\tcolor = \"\";\n\t\tvalues.forEach((d) => {\n\t\t\tcolor += `${d}${d}`;\n\t\t});\n\t}\n\tconst hex = `#${color}`;\n\tinvariant(isHex(hex), MESSAGES.invalidHex);\n\treturn hex;\n}\nfunction addAlpha(input, alpha) {\n\tinvariant(isValidColorModel(input), MESSAGES.invalid);\n\tlet value = alpha;\n\tif (value === void 0) return input;\n\tif (value > 1) value /= 100;\n\tif (value === 1) return input;\n\treturn {\n\t\t...input,\n\t\talpha: value\n\t};\n}\nfunction clamp$1(value, min = 0, max = 100) {\n\treturn Math.min(Math.max(value, min), max);\n}\nfunction constrainDegrees(input, amount) {\n\tinvariant(isNumber(input), MESSAGES.inputNumber);\n\tlet value = input + amount;\n\tif (value > 360) value %= 360;\n\tif (value < 0) value += 360;\n\treturn Math.abs(value);\n}\nfunction extractAlpha(input) {\n\tif (Array.isArray(input)) return;\n\treturn input.alpha;\n}\nfunction limit(input, model, key) {\n\tinvariant(isNumber(input), MESSAGES.inputNumber);\n\tinvariant(COLOR_MODELS.includes(model), `${MESSAGES.invalidModel}${model ? `: ${model}` : \"\"}`);\n\tinvariant(COLOR_KEYS[model].includes(key), `${MESSAGES.invalidKey}${key ? `: ${key}` : \"\"}`);\n\tswitch (model) {\n\t\tcase \"hsl\":\n\t\t\tinvariant(COLOR_KEYS.hsl.includes(key), MESSAGES.invalidKey);\n\t\t\tif ([\"l\", \"s\"].includes(key)) return clamp$1(input);\n\t\t\treturn clamp$1(input, 0, 360);\n\t\tcase \"rgb\":\n\t\t\tinvariant(COLOR_KEYS.rgb.includes(key), MESSAGES.invalidKey);\n\t\t\treturn clamp$1(input, 0, 255);\n\t\tdefault: throw new Error(\"Invalid inputs\");\n\t}\n}\nfunction parseInput(input, model) {\n\tconst keys = COLOR_KEYS[model];\n\tconst validator = {\n\t\thsl: isHSL,\n\t\toklab: isLAB,\n\t\toklch: isLCH,\n\t\trgb: isRGB\n\t};\n\tinvariant(isPlainObject(input) || Array.isArray(input), MESSAGES.invalid);\n\tconst value = Array.isArray(input) ? {\n\t\t[keys[0]]: input[0],\n\t\t[keys[1]]: input[1],\n\t\t[keys[2]]: input[2]\n\t} : input;\n\tinvariant(validator[model](value), `${MESSAGES.invalidColor}: ${model}`);\n\treturn value;\n}\nfunction restrictValues(input, precision = PRECISION, forcePrecision = true) {\n\tconst output = new Map(Object.entries(input));\n\tfor (const [key, value] of output.entries()) output.set(key, round$1(value, precision, forcePrecision));\n\treturn Object.fromEntries(output);\n}\nfunction round$1(input, precision = 2, forcePrecision = true) {\n\tif (!isNumber(input) || input === 0) return 0;\n\tif (forcePrecision) {\n\t\tconst factor2 = 10 ** precision;\n\t\treturn Math.round(input * factor2) / factor2;\n\t}\n\tconst absInput = Math.abs(input);\n\tlet digits = Math.abs(Math.ceil(Math.log(absInput) / Math.LN10));\n\tif (digits === 0) digits = 2;\n\telse if (digits > precision) digits = precision;\n\tlet exponent = precision - (digits < 0 ? 0 : digits);\n\tif (exponent <= 1 && precision > 1) exponent = 2;\n\telse if (exponent > precision || exponent === 0) exponent = precision;\n\tconst factor = 10 ** exponent;\n\treturn Math.round(input * factor) / factor;\n}\nfunction addAlphaToHex(input, alpha) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tinvariant(isNumberInRange(alpha, 0, 1), MESSAGES.alpha);\n\tif (alpha >= 1) return removeAlphaFromHex(input);\n\treturn `${removeAlphaFromHex(input)}${convertAlphaToHex(alpha)}`;\n}\nfunction convertAlphaToHex(input) {\n\tinvariant(isNumber(input), MESSAGES.inputNumber);\n\tlet alpha = input;\n\tif (input > 1) alpha /= 100;\n\treturn Math.round(alpha * 255).toString(16).padStart(2, \"0\");\n}\nfunction extractAlphaFromHex(input) {\n\tinvariant(isHex(input), MESSAGES.inputString);\n\tconst alpha = input.substring(7, 9);\n\tif (!alpha) return 1;\n\treturn round$1(parseInt(alpha, 16) / 255);\n}\nfunction removeAlphaFromHex(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tif (input.length === 5) return input.substring(0, 4);\n\treturn input.substring(0, 7);\n}\nfunction hex2rgb(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst hex = formatHex(input).slice(1);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha({\n\t\tr: parseInt(hex.charAt(0) + hex.charAt(1), 16),\n\t\tg: parseInt(hex.charAt(2) + hex.charAt(3), 16),\n\t\tb: parseInt(hex.charAt(4) + hex.charAt(5), 16)\n\t}, alpha);\n}\nvar converters_exports = {};\n__export(converters_exports, {\n\thex2hsl: () => hex2hsl,\n\thex2oklab: () => hex2oklab,\n\thex2oklch: () => hex2oklch,\n\thex2rgb: () => hex2rgb,\n\thsl2hex: () => hsl2hex,\n\thsl2oklab: () => hsl2oklab,\n\thsl2oklch: () => hsl2oklch,\n\thsl2rgb: () => hsl2rgb,\n\toklab2hex: () => oklab2hex,\n\toklab2hsl: () => oklab2hsl,\n\toklab2oklch: () => oklab2oklch,\n\toklab2rgb: () => oklab2rgb,\n\toklch2hex: () => oklch2hex,\n\toklch2hsl: () => oklch2hsl,\n\toklch2oklab: () => oklch2oklab,\n\toklch2rgb: () => oklch2rgb,\n\trgb2hex: () => rgb2hex,\n\trgb2hsl: () => rgb2hsl,\n\trgb2oklab: () => rgb2oklab,\n\trgb2oklch: () => rgb2oklch\n});\nfunction rgb2hsl(input) {\n\tconst value = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\tconst rLimit = limit(value.r, \"rgb\", \"r\") / 255;\n\tconst gLimit = limit(value.g, \"rgb\", \"g\") / 255;\n\tconst bLimit = limit(value.b, \"rgb\", \"b\") / 255;\n\tconst min = Math.min(rLimit, gLimit, bLimit);\n\tconst max = Math.max(rLimit, gLimit, bLimit);\n\tconst delta = max - min;\n\tlet h = 0;\n\tlet s;\n\tconst l = (max + min) / 2;\n\tlet rate;\n\tswitch (max) {\n\t\tcase rLimit:\n\t\t\trate = !delta ? 0 : (gLimit - bLimit) / delta;\n\t\t\th = 60 * rate;\n\t\t\tbreak;\n\t\tcase gLimit:\n\t\t\trate = (bLimit - rLimit) / delta;\n\t\t\th = 60 * rate + 120;\n\t\t\tbreak;\n\t\tcase bLimit:\n\t\t\trate = (rLimit - gLimit) / delta;\n\t\t\th = 60 * rate + 240;\n\t\t\tbreak;\n\t\tdefault: break;\n\t}\n\tif (h < 0) h = 360 + h;\n\tif (min === max) s = 0;\n\telse s = l < .5 ? delta / (2 * l) : delta / (2 - 2 * l);\n\treturn addAlpha({\n\t\th: Math.abs(+(h % 360).toFixed(2)),\n\t\ts: +(s * 100).toFixed(2),\n\t\tl: +(l * 100).toFixed(2)\n\t}, alpha);\n}\nfunction hex2hsl(input) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha(rgb2hsl(hex2rgb(input)), alpha);\n}\nvar { cbrt, sign } = Math;\nfunction rgb2lrgb(input) {\n\tconst abs2 = Math.abs(input);\n\tif (abs2 < .04045) return input / 12.92;\n\treturn (sign(input) || 1) * ((abs2 + .055) / 1.055) ** 2.4;\n}\nfunction rgb2oklab(input, precision = PRECISION) {\n\tconst value = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\tconst [lr, lg, lb] = [\n\t\trgb2lrgb(value.r / 255),\n\t\trgb2lrgb(value.g / 255),\n\t\trgb2lrgb(value.b / 255)\n\t];\n\tconst l = cbrt(LRGB_TO_LMS.l[0] * lr + LRGB_TO_LMS.l[1] * lg + LRGB_TO_LMS.l[2] * lb);\n\tconst m = cbrt(LRGB_TO_LMS.m[0] * lr + LRGB_TO_LMS.m[1] * lg + LRGB_TO_LMS.m[2] * lb);\n\tconst s = cbrt(LRGB_TO_LMS.s[0] * lr + LRGB_TO_LMS.s[1] * lg + LRGB_TO_LMS.s[2] * lb);\n\treturn addAlpha(restrictValues({\n\t\tl: LSM_TO_LAB.l[0] * l + LSM_TO_LAB.l[1] * m - LSM_TO_LAB.l[2] * s,\n\t\ta: LSM_TO_LAB.a[0] * l - LSM_TO_LAB.a[1] * m + LSM_TO_LAB.a[2] * s,\n\t\tb: LSM_TO_LAB.b[0] * l + LSM_TO_LAB.b[1] * m - LSM_TO_LAB.b[2] * s\n\t}, precision), alpha);\n}\nfunction hex2oklab(input, precision) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha(rgb2oklab(hex2rgb(input), precision), alpha);\n}\nvar { atan2, sqrt } = Math;\nfunction oklab2oklch(input, precision) {\n\tconst { l, a, b } = restrictValues(parseInput(input, \"oklab\"));\n\tconst alpha = extractAlpha(input);\n\tconst c = sqrt(a ** 2 + b ** 2);\n\tlet h = (atan2(b, a) * RAD2DEG + 360) % 360;\n\tif (round$1(c * 1e4) === 0) h = 0;\n\treturn addAlpha(restrictValues({\n\t\tl,\n\t\tc,\n\t\th\n\t}, precision), alpha);\n}\nfunction rgb2oklch(input, precision) {\n\tconst value = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(oklab2oklch(rgb2oklab(value, precision), precision), alpha);\n}\nfunction hex2oklch(input, precision) {\n\tinvariant(isHex(input), MESSAGES.inputHex);\n\tconst alpha = extractAlphaFromHex(input);\n\treturn addAlpha(rgb2oklch(hex2rgb(input), precision), alpha);\n}\nfunction hue2rgb(point, chroma2, h) {\n\tinvariant(isNumber(point) && isNumber(chroma2) && isNumber(h), MESSAGES.hueArgs);\n\tlet hue = h;\n\tif (hue < 0) hue += 1;\n\tif (hue > 1) hue -= 1;\n\tif (hue < 1 / 6) return round$1(point + (chroma2 - point) * 6 * hue, 4);\n\tif (hue < 1 / 2) return round$1(chroma2, 4);\n\tif (hue < 2 / 3) return round$1(point + (chroma2 - point) * (2 / 3 - hue) * 6, 4);\n\treturn round$1(point, 4);\n}\nfunction hsl2rgb(input) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\tconst h = round$1(value.h) / 360;\n\tconst s = round$1(value.s) / 100;\n\tconst l = round$1(value.l) / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\tlet point;\n\tlet chroma2;\n\tif (s === 0) {\n\t\tr = l;\n\t\tg = l;\n\t\tb = l;\n\t} else {\n\t\tchroma2 = l < .5 ? l * (1 + s) : l + s - l * s;\n\t\tpoint = 2 * l - chroma2;\n\t\tr = hue2rgb(point, chroma2, h + 1 / 3);\n\t\tg = hue2rgb(point, chroma2, h);\n\t\tb = hue2rgb(point, chroma2, h - 1 / 3);\n\t}\n\treturn addAlpha({\n\t\tr: Math.round(r * 255),\n\t\tg: Math.round(g * 255),\n\t\tb: Math.round(b * 255)\n\t}, alpha);\n}\nfunction rgb2hex(input) {\n\tconst rgb = parseInput(input, \"rgb\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = `#${[\n\t\trgb.r,\n\t\trgb.g,\n\t\trgb.b\n\t].map((d) => `0${Math.floor(d).toString(16)}`.slice(-2)).join(\"\")}`;\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction hsl2hex(input) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = rgb2hex(hsl2rgb(value));\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction hsl2oklab(input, precision) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2oklab(hsl2rgb(value), precision), alpha);\n}\nfunction hsl2oklch(input, precision) {\n\tconst value = parseInput(input, \"hsl\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2oklch(hsl2rgb(value), precision), alpha);\n}\nvar { abs } = Math;\nfunction lrgb2rgb(input) {\n\tconst absoluteNumber = abs(input);\n\tconst sign2 = input < 0 ? -1 : 1;\n\tif (absoluteNumber > .0031308) return sign2 * (absoluteNumber ** (1 / 2.4) * 1.055 - .055);\n\treturn input * 12.92;\n}\nfunction oklab2rgb(input, precision = 0) {\n\tconst { l: L, a: A, b: B } = parseInput(input, \"oklab\");\n\tconst alpha = extractAlpha(input);\n\tconst l = (L + LAB_TO_LMS.l[0] * A + LAB_TO_LMS.l[1] * B) ** 3;\n\tconst m = (L + LAB_TO_LMS.m[0] * A + LAB_TO_LMS.m[1] * B) ** 3;\n\tconst s = (L + LAB_TO_LMS.s[0] * A + LAB_TO_LMS.s[1] * B) ** 3;\n\tconst r = 255 * lrgb2rgb(LSM_TO_RGB.r[0] * l + LSM_TO_RGB.r[1] * m + LSM_TO_RGB.r[2] * s);\n\tconst g = 255 * lrgb2rgb(LSM_TO_RGB.g[0] * l + LSM_TO_RGB.g[1] * m + LSM_TO_RGB.g[2] * s);\n\tconst b = 255 * lrgb2rgb(LSM_TO_RGB.b[0] * l + LSM_TO_RGB.b[1] * m + LSM_TO_RGB.b[2] * s);\n\treturn addAlpha({\n\t\tr: clamp$1(round$1(r, precision), 0, 255),\n\t\tg: clamp$1(round$1(g, precision), 0, 255),\n\t\tb: clamp$1(round$1(b, precision), 0, 255)\n\t}, alpha);\n}\nfunction oklab2hex(input) {\n\tconst value = parseInput(input, \"oklab\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = rgb2hex(oklab2rgb(value));\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction oklab2hsl(input) {\n\tconst value = parseInput(input, \"oklab\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2hsl(oklab2rgb(value)), alpha);\n}\nvar { sin, cos } = Math;\nfunction oklch2oklab(input, precision) {\n\tlet { l, c, h } = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\tif (Number.isNaN(h) || h < 0) h = 0;\n\treturn addAlpha(restrictValues({\n\t\tl,\n\t\ta: c * cos(h * DEG2RAD),\n\t\tb: c * sin(h * DEG2RAD)\n\t}, precision), alpha);\n}\nfunction oklch2rgb(input, precision = 0) {\n\tconst value = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(oklab2rgb(oklch2oklab(value), precision), alpha);\n}\nfunction oklch2hex(input) {\n\tconst value = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\tconst hex = rgb2hex(oklch2rgb(value));\n\treturn alpha !== void 0 && alpha < 1 ? addAlphaToHex(hex, alpha) : hex;\n}\nfunction oklch2hsl(input) {\n\tconst value = parseInput(input, \"oklch\");\n\tconst alpha = extractAlpha(input);\n\treturn addAlpha(rgb2hsl(oklch2rgb(value)), alpha);\n}\nvar MODEL = \"(rgb|hsl|oklab|oklch)a?\";\nvar SEP = \"(?:\\\\s*[,/]\\\\s*|\\\\s+)\";\nvar VALUE = \"(none|[\\\\d%.-]+(?:deg|grad|rad|turn)?)\";\nvar colorRegex = new RegExp(`${MODEL}\\\\s*\\\\(\\\\s*${VALUE}${SEP}${VALUE}${SEP}${VALUE}(?:${SEP}${VALUE})?\\\\s*\\\\)`, \"i\");\nfunction parseAngle(value) {\n\tconst number_ = parseFloat(value);\n\tlet result;\n\tif (value.endsWith(\"grad\")) result = number_ * .9;\n\telse if (value.endsWith(\"rad\")) result = number_ * (180 / Math.PI);\n\telse if (value.endsWith(\"turn\")) result = number_ * 360;\n\telse result = number_;\n\treturn Math.round(result * 1e5) / 1e5;\n}\nfunction extractColorParts(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tif (isHex(input)) {\n\t\tconst keys2 = COLOR_KEYS.rgb;\n\t\tconst { r, g, b } = hex2rgb(input);\n\t\tconst alpha2 = extractAlphaFromHex(input);\n\t\treturn {\n\t\t\tmodel: \"rgb\",\n\t\t\t[keys2[0]]: r,\n\t\t\t[keys2[1]]: g,\n\t\t\t[keys2[2]]: b,\n\t\t\talpha: alpha2 < 1 ? alpha2 : void 0\n\t\t};\n\t}\n\tconst matches = colorRegex.exec(input);\n\tinvariant(hasValidMatches(matches), MESSAGES.invalidCSS);\n\tconst model = matches[1];\n\tconst keys = COLOR_KEYS[model];\n\tlet alpha = matches[5] ? parseFloat(matches[5]) : 1;\n\tif (alpha > 1) alpha /= 100;\n\tconst parseValue = (value, index) => {\n\t\tif (value === \"none\") return 0;\n\t\tif (model === \"hsl\" && index === 0 || model === \"oklch\" && index === 2) return parseAngle(value);\n\t\tconst parsedValue = parseFloat(value);\n\t\tif (!value.includes(\"%\")) return parsedValue;\n\t\tif (model === \"oklch\") {\n\t\t\tif (index === 1) return parsedValue * .4 / 100;\n\t\t} else if (model === \"oklab\") {\n\t\t\tif (index === 1 || index === 2) return parsedValue * .4 / 100;\n\t\t}\n\t\treturn parsedValue;\n\t};\n\tconst values = [\n\t\tparseValue(matches[2], 0),\n\t\tparseValue(matches[3], 1),\n\t\tparseValue(matches[4], 2)\n\t];\n\tif (model === \"oklab\") {\n\t\tinvariant(values[1] >= -.4 && values[1] <= .4, MESSAGES.invalidRange);\n\t\tinvariant(values[2] >= -.4 && values[2] <= .4, MESSAGES.invalidRange);\n\t} else if (model === \"oklch\") invariant(values[1] >= 0 && values[1] <= .4, MESSAGES.invalidRange);\n\treturn {\n\t\tmodel,\n\t\t[keys[0]]: values[0],\n\t\t[keys[1]]: values[1],\n\t\t[keys[2]]: values[2],\n\t\talpha: alpha < 1 ? alpha : void 0\n\t};\n}\nvar toHslConverters = {\n\toklab: oklab2hsl,\n\toklch: oklch2hsl,\n\trgb: rgb2hsl\n};\nvar toOklabConverters = {\n\thsl: hsl2oklab,\n\toklch: oklch2oklab,\n\trgb: rgb2oklab\n};\nvar toOklchConverters = {\n\thsl: hsl2oklch,\n\toklab: oklab2oklch,\n\trgb: rgb2oklch\n};\nvar toRgbConverters = {\n\thsl: hsl2rgb,\n\toklab: oklab2rgb,\n\toklch: oklch2rgb\n};\nvar toHexConverters = {\n\thsl: hsl2hex,\n\toklab: oklab2hex,\n\toklch: oklch2hex,\n\trgb: rgb2hex\n};\nvar fromHexConverters = {\n\thsl: hex2hsl,\n\toklab: hex2oklab,\n\toklch: hex2oklch,\n\trgb: hex2rgb\n};\nvar converterTables = {\n\thsl: toHslConverters,\n\toklab: toOklabConverters,\n\toklch: toOklchConverters,\n\trgb: toRgbConverters\n};\nfunction convertFromCSS(value, output) {\n\tconst { alpha, model, ...color } = extractColorParts(value);\n\tif ([\"oklab\", \"oklch\"].includes(model) && color.l > 1) color.l = round$1(color.l / 100, PRECISION);\n\tconst colorTuple = Object.values(color);\n\tif (output === \"hex\") {\n\t\tconst alphaPrefix = alpha ? convertAlphaToHex(alpha) : \"\";\n\t\treturn `${toHexConverters[model](colorTuple)}${alphaPrefix}`;\n\t}\n\tconst converter = converterTables[output]?.[model];\n\treturn addAlpha(converter ? converter(colorTuple) : color, alpha);\n}\nfunction convertFromHex(value, output) {\n\tconst alpha = extractAlphaFromHex(value);\n\tif (output === \"hex\") return `${removeAlphaFromHex(value)}${alpha !== 1 ? convertAlphaToHex(alpha) : \"\"}`;\n\treturn addAlpha(fromHexConverters[output](value), alpha);\n}\nfunction parseCSS(input, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst value = isNamedColor(input) ? cssColors[input.toLowerCase()] : input;\n\tconst output = format ?? (isHex(value) ? \"hex\" : extractColorParts(value).model);\n\tif (isHex(value)) return convertFromHex(value, output);\n\treturn convertFromCSS(value, output);\n}\nvar mainTRC = 2.4;\nvar normBG = .56;\nvar normTXT = .57;\nvar revBG = .65;\nvar revTXT = .62;\nvar sRco = .2126729;\nvar sGco = .7151522;\nvar sBco = .072175;\nvar blkThreshold = .022;\nvar blkClamp = 1.414;\nvar scaleBoW = 1.14;\nvar scaleWoB = 1.14;\nvar loBoWOffset = .027;\nvar loWoBOffset = .027;\nvar loClip = .1;\nvar deltaYmin = 5e-4;\nfunction softClamp(Y) {\n\treturn Y > blkThreshold ? Y : Y + (blkThreshold - Y) ** blkClamp;\n}\nfunction sRGBtoY(r, g, b) {\n\treturn sRco * (r / 255) ** mainTRC + sGco * (g / 255) ** mainTRC + sBco * (b / 255) ** mainTRC;\n}\nfunction apcaContrast(background, foreground) {\n\tinvariant(isString(background), MESSAGES.inputString);\n\tinvariant(isString(foreground), MESSAGES.inputString);\n\tconst bg = hex2rgb(parseCSS(background, \"hex\"));\n\tconst fg = hex2rgb(parseCSS(foreground, \"hex\"));\n\tconst txtY = softClamp(sRGBtoY(fg.r, fg.g, fg.b));\n\tconst bgY = softClamp(sRGBtoY(bg.r, bg.g, bg.b));\n\tif (Math.abs(bgY - txtY) < deltaYmin) return 0;\n\tconst SAPC = bgY > txtY ? (bgY ** normBG - txtY ** normTXT) * scaleBoW : (bgY ** revBG - txtY ** revTXT) * scaleWoB;\n\tif (Math.abs(SAPC) < loClip) return 0;\n\treturn round$1(SAPC > 0 ? (SAPC - loBoWOffset) * 100 : (SAPC + loWoBOffset) * 100, 5);\n}\nfunction brightnessDifference(left, right, precision = PRECISION) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst RGBLeft = parseCSS(left, \"rgb\");\n\tconst RGBRight = parseCSS(right, \"rgb\");\n\tconst brightnessLeft = (RGBLeft.r * 299 + RGBLeft.g * 587 + RGBLeft.b * 114) / 1e3;\n\tconst brightnessRight = (RGBRight.r * 299 + RGBRight.g * 587 + RGBRight.b * 114) / 1e3;\n\treturn round$1(Math.abs(brightnessRight - brightnessLeft), precision);\n}\nfunction chroma(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst { r, g, b } = parseCSS(input, \"rgb\");\n\treturn round$1((Math.max(r, g, b) - Math.min(r, g, b)) / 255, 4);\n}\nfunction colorDifference(left, right) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst RGBLeft = parseCSS(left, \"rgb\");\n\tconst RGBRight = parseCSS(right, \"rgb\");\n\treturn Math.max(RGBLeft.r, RGBRight.r) - Math.min(RGBLeft.r, RGBRight.r) + (Math.max(RGBLeft.g, RGBRight.g) - Math.min(RGBLeft.g, RGBRight.g)) + (Math.max(RGBLeft.b, RGBRight.b) - Math.min(RGBLeft.b, RGBRight.b));\n}\nfunction luminance(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst { r, g, b } = parseCSS(input, \"rgb\");\n\tconst rgb = [\n\t\tr / 255,\n\t\tg / 255,\n\t\tb / 255\n\t];\n\tfor (let index = 0; index < rgb.length; index++) if (rgb[index] <= .04045) rgb[index] /= 12.92;\n\telse rgb[index] = ((rgb[index] + .055) / 1.055) ** 2.4;\n\treturn round$1(.2126 * rgb[0] + .7152 * rgb[1] + .0722 * rgb[2], 4);\n}\nfunction contrast(left, right) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst LuminanceLeft = luminance(left);\n\tconst LuminanceRight = luminance(right);\n\treturn round$1(LuminanceLeft >= LuminanceRight ? (LuminanceLeft + .05) / (LuminanceRight + .05) : (LuminanceRight + .05) / (LuminanceLeft + .05));\n}\nfunction compare(left, right) {\n\tinvariant(isString(left), MESSAGES.left);\n\tinvariant(isString(right), MESSAGES.right);\n\tconst colorThreshold = 500;\n\tconst brightnessThreshold = 125;\n\tconst colorDifference2 = colorDifference(left, right);\n\tconst contrast2 = contrast(left, right);\n\tconst brightnessDifference2 = brightnessDifference(left, right);\n\tconst isBright = brightnessDifference2 >= brightnessThreshold;\n\tconst hasEnoughDifference = colorDifference2 >= colorThreshold;\n\tlet compliant = 0;\n\tif (isBright && hasEnoughDifference) compliant = 2;\n\telse if (isBright || hasEnoughDifference) compliant = 1;\n\treturn {\n\t\tbrightnessDifference: brightnessDifference2,\n\t\tcolorDifference: colorDifference2,\n\t\tcompliant,\n\t\tcontrast: contrast2,\n\t\tlargeAA: contrast2 >= 3,\n\t\tlargeAAA: contrast2 >= 4.5,\n\t\tnormalAA: contrast2 >= 4.5,\n\t\tnormalAAA: contrast2 >= 7\n\t};\n}\nfunction getColorModel(input) {\n\tif (isHex(input) || isNamedColor(input)) return \"hex\";\n\tif (isHSL(input)) return \"hsl\";\n\tif (isLAB(input)) return \"oklab\";\n\tif (isLCH(input)) return \"oklch\";\n\tif (isRGB(input)) return \"rgb\";\n\tthrow new Error(MESSAGES.invalid);\n}\nfunction getColorValue(input, output) {\n\tconst value = isNamedColor(input) ? cssColors[input.toLowerCase()] : input;\n\tconst from = getColorModel(value);\n\tif (from === output) return value;\n\tconst converter = converters_exports[`${from}2${output}`];\n\tif (!converter) throw new Error(`Converter not found for ${from} to ${output}`);\n\treturn converter(value);\n}\nfunction formatCSS(input, options = {}) {\n\tinvariant(isHex(input) || isValidColorModel(input), MESSAGES.invalid);\n\tconst { alpha, format = \"hex\", precision = PRECISION, separator: baseSeparator = \" \" } = options;\n\tconst opacity2 = alpha && alpha !== 1 ? `${round$1(alpha * 100)}%` : null;\n\tlet params = [];\n\tlet separator = baseSeparator;\n\tswitch (format) {\n\t\tcase \"hsl\": {\n\t\t\tconst { h, s, l } = getColorValue(input, \"hsl\");\n\t\t\tparams = [\n\t\t\t\th,\n\t\t\t\t`${s}%`,\n\t\t\t\t`${l}%`\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"oklab\": {\n\t\t\tseparator = \" \";\n\t\t\tconst { l, a, b } = restrictValues(getColorValue(input, \"oklab\"), precision);\n\t\t\tparams = [\n\t\t\t\t`${round$1(l * 100, precision)}%`,\n\t\t\t\ta,\n\t\t\t\tb\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"oklch\": {\n\t\t\tseparator = \" \";\n\t\t\tconst { l, c, h } = restrictValues(getColorValue(input, \"oklch\"), precision);\n\t\t\tparams = [\n\t\t\t\t`${round$1(l * 100, precision)}%`,\n\t\t\t\tc,\n\t\t\t\th\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"rgb\": {\n\t\t\tconst { r, g, b } = getColorValue(input, \"rgb\");\n\t\t\tparams = [\n\t\t\t\tr,\n\t\t\t\tg,\n\t\t\t\tb\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tconst hex = removeAlphaFromHex(getColorValue(input, \"hex\"));\n\t\t\tif (alpha && alpha !== 1) return `${hex}${convertAlphaToHex(alpha)}`;\n\t\t\treturn hex;\n\t\t}\n\t}\n\treturn `${format}(${params.join(separator)}${opacity2 ? ` / ${opacity2}` : \"\"})`;\n}\nfunction updater(key, operator, format) {\n\treturn (input, amount) => {\n\t\tinvariant(isString(input), MESSAGES.inputString);\n\t\tinvariant(isNumberInRange(amount, 0, 100), MESSAGES.amount);\n\t\tconst color = parseCSS(input, \"hsl\");\n\t\tconst output = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\t\treturn formatCSS({\n\t\t\t...color,\n\t\t\t[key]: clamp$1(color[key] + (operator === \"+\" ? amount : -amount), 0, 100)\n\t\t}, { format: format ?? output });\n\t};\n}\nfunction darken(input, amount, format) {\n\treturn updater(\"l\", \"-\", format)(input, amount);\n}\nfunction desaturate(input, amount, format) {\n\treturn updater(\"s\", \"-\", format)(input, amount);\n}\nfunction grayscale(input, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst output = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\tconst lch = parseCSS(input, \"oklch\");\n\treturn formatCSS({\n\t\t...lch,\n\t\tc: 0\n\t}, {\n\t\tformat: format ?? output,\n\t\talpha: lch.alpha\n\t});\n}\nfunction rotate(input, degrees, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tinvariant(isNumberInRange(degrees, -360, 360), MESSAGES.degreesRange);\n\tconst color = parseCSS(input, \"hsl\");\n\tconst output = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\treturn formatCSS({\n\t\t...color,\n\t\th: constrainDegrees(color.h, degrees)\n\t}, { format: format ?? output });\n}\nfunction invert(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tconst format = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\treturn formatCSS(rotate(parseCSS(input, \"hex\"), 180), { format });\n}\nfunction lighten(input, amount, format) {\n\treturn updater(\"l\", \"+\", format)(input, amount);\n}\nfunction interpolateHue(h1, h2, c1, c2, ratio) {\n\tif (c1 < 1e-4) return h2;\n\tif (c2 < 1e-4) return h1;\n\tlet diff = h2 - h1;\n\tif (diff > 180) diff -= 360;\n\telse if (diff < -180) diff += 360;\n\tlet result = h1 + diff * ratio;\n\tif (result < 0) result += 360;\n\telse if (result >= 360) result -= 360;\n\treturn result;\n}\nfunction mix(color1, color2, ratio = .5, format) {\n\tinvariant(isString(color1), MESSAGES.inputString);\n\tinvariant(isString(color2), MESSAGES.inputString);\n\tinvariant(isNumberInRange(ratio, 0, 1), MESSAGES.ratioRange);\n\tconst output = isHex(color1) || isNamedColor(color1) ? \"hex\" : extractColorParts(color1).model;\n\tconst lch1 = parseCSS(color1, \"oklch\");\n\tconst lch2 = parseCSS(color2, \"oklch\");\n\tconst l = lch1.l + (lch2.l - lch1.l) * ratio;\n\tconst c = lch1.c + (lch2.c - lch1.c) * ratio;\n\tconst h = interpolateHue(lch1.h, lch2.h, lch1.c, lch2.c, ratio);\n\tconst alpha1 = lch1.alpha ?? 1;\n\tconst alpha = alpha1 + ((lch2.alpha ?? 1) - alpha1) * ratio;\n\treturn formatCSS({\n\t\tl,\n\t\tc,\n\t\th\n\t}, {\n\t\tformat: format ?? output,\n\t\talpha: alpha < 1 ? alpha : void 0\n\t});\n}\nfunction parseColor(color) {\n\tinvariant(!!color, MESSAGES.input);\n\tconst output = {};\n\tif (isString(color)) {\n\t\tconst { alpha = 1 } = extractColorParts(color);\n\t\tconst type = isHex(color) ? \"hex\" : extractColorParts(color).model;\n\t\toutput.hex = addAlphaToHex(parseCSS(color, \"hex\"), alpha);\n\t\toutput.hsl = addAlpha(parseCSS(color, \"hsl\"), alpha);\n\t\toutput.oklab = addAlpha(parseCSS(color, \"oklab\"), alpha);\n\t\toutput.oklch = addAlpha(parseCSS(color, \"oklch\"), alpha);\n\t\toutput.rgb = addAlpha(parseCSS(color, \"rgb\"), alpha);\n\t\toutput.alpha = alpha;\n\t\toutput.type = type;\n\t} else if (isPlainObject(color)) {\n\t\tconst { alpha = 1 } = color;\n\t\tif (isHSL(color)) {\n\t\t\toutput.hsl = {\n\t\t\t\th: limit(color.h, \"hsl\", \"h\"),\n\t\t\t\ts: limit(color.s, \"hsl\", \"s\"),\n\t\t\t\tl: limit(color.l, \"hsl\", \"l\")\n\t\t\t};\n\t\t\toutput.rgb = hsl2rgb(output.hsl);\n\t\t\toutput.oklab = hsl2oklab(output.hsl);\n\t\t\toutput.oklch = hsl2oklch(output.hsl);\n\t\t\toutput.type = \"hsl\";\n\t\t} else if (isLAB(color)) {\n\t\t\toutput.hsl = oklab2hsl(color);\n\t\t\toutput.oklab = color;\n\t\t\toutput.oklch = oklab2oklch(color);\n\t\t\toutput.rgb = oklab2rgb(color);\n\t\t\toutput.type = \"oklab\";\n\t\t} else if (isLCH(color)) {\n\t\t\toutput.hsl = oklch2hsl(color);\n\t\t\toutput.oklab = oklch2oklab(color);\n\t\t\toutput.oklch = color;\n\t\t\toutput.rgb = oklch2rgb(color);\n\t\t\toutput.type = \"oklch\";\n\t\t} else if (isRGB(color)) {\n\t\t\toutput.rgb = {\n\t\t\t\tr: limit(color.r, \"rgb\", \"r\"),\n\t\t\t\tg: limit(color.g, \"rgb\", \"g\"),\n\t\t\t\tb: limit(color.b, \"rgb\", \"b\")\n\t\t\t};\n\t\t\toutput.hsl = rgb2hsl(output.rgb);\n\t\t\toutput.oklab = rgb2oklab(output.rgb);\n\t\t\toutput.oklch = rgb2oklch(output.rgb);\n\t\t\toutput.type = \"rgb\";\n\t\t} else throw new Error(\"invalid color\");\n\t\toutput.hex = addAlphaToHex(hsl2hex(output.hsl), alpha);\n\t\toutput.hsl = addAlpha(output.hsl, alpha);\n\t\toutput.oklab = addAlpha(output.oklab, alpha);\n\t\toutput.oklch = addAlpha(output.oklch, alpha);\n\t\toutput.rgb = addAlpha(output.rgb, alpha);\n\t\toutput.alpha = alpha;\n\t} else throw new Error(MESSAGES.input);\n\treturn output;\n}\nfunction opacify(input, alpha, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tinvariant(isNumberInRange(alpha, 0, 1), MESSAGES.alpha);\n\tconst type = isHex(input) || isNamedColor(input) ? \"hex\" : extractColorParts(input).model;\n\treturn formatCSS(parseCSS(input, \"rgb\"), {\n\t\tformat: format ?? type,\n\t\talpha\n\t});\n}\nfunction opacity(input) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tif (isHex(input)) return extractAlphaFromHex(input);\n\telse if (Object.keys(cssColors).includes(input)) return 1;\n\tconst { alpha } = extractColorParts(input);\n\tif (!alpha) return 1;\n\treturn alpha;\n}\nfunction pickByContrast(darkContrast, lightContrast, darkColor, lightColor) {\n\treturn darkContrast >= lightContrast ? darkColor : lightColor;\n}\nfunction readableColor(backgroundColor, options = {}) {\n\tconst { darkColor = \"#000000\", lightColor = \"#ffffff\", method = \"yiq\", threshold } = options;\n\tinvariant(isString(backgroundColor), MESSAGES.inputString);\n\tswitch (method) {\n\t\tcase \"yiq\": {\n\t\t\tconst yiqThreshold = threshold ?? 128;\n\t\t\tinvariant(yiqThreshold >= 0 && yiqThreshold <= 255, MESSAGES.threshold);\n\t\t\tconst { r, g, b } = hex2rgb(parseCSS(backgroundColor, \"hex\"));\n\t\t\treturn (r * 299 + g * 587 + b * 114) / 1e3 >= yiqThreshold ? darkColor : lightColor;\n\t\t}\n\t\tcase \"wcag\": {\n\t\t\tconst wcagThreshold = threshold ?? .5;\n\t\t\tinvariant(wcagThreshold >= 0 && wcagThreshold <= 1, MESSAGES.thresholdNormalized);\n\t\t\treturn luminance(backgroundColor) >= wcagThreshold ? darkColor : lightColor;\n\t\t}\n\t\tcase \"contrast\": return pickByContrast(contrast(darkColor, backgroundColor), contrast(lightColor, backgroundColor), darkColor, lightColor);\n\t\tcase \"oklab\": {\n\t\t\tconst oklabThreshold = threshold ?? .5;\n\t\t\tinvariant(oklabThreshold >= 0 && oklabThreshold <= 1, MESSAGES.thresholdNormalized);\n\t\t\tconst { l } = hex2oklab(parseCSS(backgroundColor, \"hex\"));\n\t\t\treturn l >= oklabThreshold ? darkColor : lightColor;\n\t\t}\n\t\tcase \"apca\": return pickByContrast(Math.abs(apcaContrast(backgroundColor, darkColor)), Math.abs(apcaContrast(backgroundColor, lightColor)), darkColor, lightColor);\n\t\tdefault: throw new Error(`Unknown method: ${method}`);\n\t}\n}\nfunction saturate(input, amount, format) {\n\treturn updater(\"s\", \"+\", format)(input, amount);\n}\nfunction transparentize(input, alpha, format) {\n\tinvariant(isString(input), MESSAGES.inputString);\n\tinvariant(isNumberInRange(alpha, -1, 1), MESSAGES.alphaAdjustment);\n\treturn formatCSS(parseCSS(input, \"oklab\"), {\n\t\tformat,\n\t\talpha: round$1(clamp$1(opacity(input) - alpha, 0, 1))\n\t});\n}\nvar Colorizr = class {\n\tconstructor(color, options = {}) {\n\t\t/** The alpha/opacity value (0-1). */\n\t\t__publicField(this, \"alpha\");\n\t\t__publicField(this, \"hex\");\n\t\t__publicField(this, \"hsl\");\n\t\t__publicField(this, \"oklab\");\n\t\t__publicField(this, \"oklch\");\n\t\t__publicField(this, \"rgb\");\n\t\t__publicField(this, \"type\");\n\t\tinvariant(!!color, MESSAGES.colorRequired);\n\t\tconst { alpha, hex, hsl, oklab, oklch, rgb, type } = parseColor(color);\n\t\tthis.hex = hex;\n\t\tthis.hsl = hsl;\n\t\tthis.oklab = oklab;\n\t\tthis.oklch = oklch;\n\t\tthis.rgb = rgb;\n\t\tthis.alpha = alpha;\n\t\tthis.type = options.format ?? type;\n\t}\n\t/**\n\t* Get CSS string\n\t*/\n\tget css() {\n\t\treturn this.currentColor;\n\t}\n\t/**\n\t* Get the red value\n\t*/\n\tget red() {\n\t\treturn this.rgb.r;\n\t}\n\t/**\n\t* Get the green value\n\t*/\n\tget green() {\n\t\treturn this.rgb.g;\n\t}\n\t/**\n\t* Get the blue value\n\t*/\n\tget blue() {\n\t\treturn this.rgb.b;\n\t}\n\t/**\n\t* Get the hue value\n\t*/\n\tget hue() {\n\t\treturn this.hsl.h;\n\t}\n\t/**\n\t* Get the saturation value\n\t*/\n\tget saturation() {\n\t\treturn this.hsl.s;\n\t}\n\t/**\n\t* Get the lightness value\n\t*/\n\tget lightness() {\n\t\treturn this.hsl.l;\n\t}\n\t/**\n\t* Get the luminance value\n\t*/\n\tget luminance() {\n\t\treturn luminance(this.currentColor);\n\t}\n\t/**\n\t* Get the chroma value\n\t*/\n\tget chroma() {\n\t\treturn chroma(this.currentColor);\n\t}\n\tget opacity() {\n\t\treturn opacity(this.currentColor);\n\t}\n\t/**\n\t* Get the most readable color (light or dark) for this color as a background.\n\t*/\n\tget readableColor() {\n\t\treturn readableColor(this.currentColor);\n\t}\n\tget currentColor() {\n\t\treturn formatCSS(this[this.type], {\n\t\t\tformat: this.type,\n\t\t\talpha: this.alpha\n\t\t});\n\t}\n\t/**\n\t* Get the brightness difference between this color and another.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns The brightness difference value.\n\t*/\n\tbrightnessDifference(input) {\n\t\treturn brightnessDifference(this.currentColor, input);\n\t}\n\t/**\n\t* Get the color difference between this color and another.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns The color difference value.\n\t*/\n\tcolorDifference(input) {\n\t\treturn colorDifference(this.currentColor, input);\n\t}\n\t/**\n\t* Test 2 colors for WCAG compliance.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns Analysis object with compliance information.\n\t*/\n\tcompare(input) {\n\t\treturn compare(this.currentColor, input);\n\t}\n\t/**\n\t* Get the contrast ratio between this color and another.\n\t*\n\t* @param input - The color to compare against.\n\t* @returns The contrast ratio.\n\t*/\n\tcontrast(input) {\n\t\treturn contrast(this.currentColor, input);\n\t}\n\t/**\n\t* Format the color to a specific type.\n\t*\n\t* @param type - The color format to convert to.\n\t* @param precision - The decimal precision for the output.\n\t* @returns The formatted color string.\n\t*/\n\tformat(type, precision) {\n\t\treturn formatCSS(this.rgb, {\n\t\t\talpha: this.alpha,\n\t\t\tformat: type,\n\t\t\tprecision\n\t\t});\n\t}\n\t/**\n\t* Increase lightness.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The lightened color string.\n\t*/\n\tlighten(amount) {\n\t\treturn lighten(this.currentColor, amount);\n\t}\n\t/**\n\t* Decrease lightness.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The darkened color string.\n\t*/\n\tdarken(amount) {\n\t\treturn darken(this.currentColor, amount);\n\t}\n\t/**\n\t* Increase saturation.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The saturated color string.\n\t*/\n\tsaturate(amount) {\n\t\treturn saturate(this.currentColor, amount);\n\t}\n\t/**\n\t* Decrease saturation.\n\t*\n\t* @param amount - A number between 0 and 100.\n\t* @returns The desaturated color string.\n\t*/\n\tdesaturate(amount) {\n\t\treturn desaturate(this.currentColor, amount);\n\t}\n\t/**\n\t* Convert to grayscale.\n\t*\n\t* @returns The grayscale color string.\n\t*/\n\tgrayscale() {\n\t\treturn grayscale(this.currentColor);\n\t}\n\t/**\n\t* Invert color.\n\t*\n\t* @returns The inverted color string.\n\t*/\n\tinvert() {\n\t\treturn invert(this.currentColor);\n\t}\n\t/**\n\t* Mix with another color.\n\t*\n\t* @param color - The color to mix with.\n\t* @param ratio - A number between 0 and 1 (0 = this color, 1 = input color).\n\t* @returns The mixed color string.\n\t*/\n\tmix(color, ratio) {\n\t\treturn mix(this.currentColor, color, ratio);\n\t}\n\t/**\n\t* Add opacity to the color.\n\t*\n\t* @param alpha - A number between 0 and 1.\n\t* @returns The opacified color string.\n\t*/\n\topacify(alpha = .9) {\n\t\treturn opacify(this.currentColor, alpha, this.type);\n\t}\n\t/**\n\t* Rotate color hue.\n\t*\n\t* @param degrees - A number between -360 and 360.\n\t* @returns The rotated color string.\n\t*/\n\trotate(degrees) {\n\t\treturn rotate(this.currentColor, degrees);\n\t}\n\t/**\n\t* Make the color more transparent.\n\t*\n\t* @param alpha - A number between -1 and 1.\n\t* @returns The transparentized color string.\n\t*/\n\ttransparentize(alpha = .1) {\n\t\treturn transparentize(this.currentColor, alpha, this.type);\n\t}\n};\nfunction convert$1(input, format) {\n\treturn formatCSS(parseCSS(input, format), { format });\n}\n/* v8 ignore next 3 -- @preserve */\n//#endregion\n//#region src/colour/guards.ts\nfunction isHsl(v) {\n\tif (typeof v !== `object`) return false;\n\tif (!(`h` in v)) return false;\n\tif (!(`s` in v)) return false;\n\tif (!(`l` in v)) return false;\n\tif (!(`unit` in v)) return false;\n\tif (!(`space` in v)) return false;\n\tif (v.space !== `hsl`) return false;\n\treturn true;\n}\nfunction isRgb(v) {\n\tif (typeof v !== `object`) return false;\n\tif (!(`r` in v)) return false;\n\tif (!(`g` in v)) return false;\n\tif (!(`b` in v)) return false;\n\tif (!(`space` in v)) return false;\n\tif (!(`unit` in v)) return false;\n\tif (v.space === `srgb`) return true;\n\treturn false;\n}\n/**\n* If the input object has r,g&b properties, it will return a fully-\n* formed Rgb type with `unit` and `space` properties.\n*\n* If it lacks these basic three properties or they are out of range,\n* _undefined_ is returned.\n*\n* If RGB values are less than 1 assumes unit:scalar. Otherwise unit:8bit.\n* If RGB values exceed 255, _undefined_ returned.\n* @param v\n* @returns\n*/\nfunction tryParseObjectToRgb(v) {\n\tif (typeof v !== `object`) throw new TypeError(`Param 'v' is expected to be an object, got: ${typeof v}`);\n\tif (!(`r` in v && `g` in v && `b` in v)) return;\n\tif (!(`unit` in v)) if (v.r <= 1 && v.g <= 1 && v.b <= 1) v.unit = `scalar`;\n\telse if (v.r > 255 && v.g <= 255 && v.b <= 255) return;\n\telse v.unit = `8bit`;\n\tif (!(`space` in v)) v.space = `srgb`;\n\treturn v;\n}\nfunction tryParseObjectToHsl(v) {\n\tif (!(`h` in v && `s` in v && `l` in v)) return;\n\tif (!(`unit` in v)) if (v.s <= 1 && v.l <= 1) v.unit = `scalar`;\n\telse if (v.s > 100 || v.l > 100) return;\n\telse v.unit = `absolute`;\n\tif (!(`space` in v)) v.space = `hsl`;\n\treturn v;\n}\nfunction isOkLch(v) {\n\tif (typeof v !== `object`) return false;\n\tif (!(`l` in v)) return false;\n\tif (!(`c` in v)) return false;\n\tif (!(`h` in v)) return false;\n\tif (!(`unit` in v)) return false;\n\tif (!(`space` in v)) return false;\n\tif (v.space === `lch`) return true;\n\tif (v.space === `oklch`) return true;\n\treturn false;\n}\nfunction isColourish(v) {\n\tif (typeof v === `string`) return true;\n\tif (typeof v !== `object`) return false;\n\tif (isHsl(v)) return true;\n\tif (isOkLch(v)) return true;\n\tif (isRgb(v)) return true;\n\treturn false;\n}\n//#endregion\n//#region src/colour/utility.ts\nfunction calculateHueDistance(a, b, limit = 1) {\n\tlet long = -1;\n\tlet short = -1;\n\tif (b < a) {\n\t\tlong = b - a;\n\t\tshort = limit - (a - b);\n\t} else {\n\t\tlong = b - a;\n\t\tshort = long - limit;\n\t}\n\tconst forward = short > 0 ? short : long;\n\tconst backward = short > 0 ? long : short;\n\tif (Math.abs(long) < Math.abs(short)) {\n\t\tconst t = short;\n\t\tshort = long;\n\t\tlong = t;\n\t}\n\treturn {\n\t\tlong,\n\t\tshort,\n\t\tforward,\n\t\tbackward\n\t};\n}\nfunction libraryRgbToHexString(rgb) {\n\tconst componentToHex = (c) => {\n\t\tconst hex = Math.floor(c).toString(16);\n\t\treturn hex.length === 1 ? `0${hex}` : hex;\n\t};\n\tlet part = `#${componentToHex(rgb.r)}${componentToHex(rgb.g)}${componentToHex(rgb.b)}`;\n\tif (typeof rgb.alpha !== `undefined` && rgb.alpha !== 255) part += componentToHex(rgb.alpha);\n\treturn part;\n}\nfunction wrapScalarHue(value) {\n\tvalue = value % 1;\n\tif (value < 0) return (1 - Math.abs(value)) % 1;\n\treturn value;\n}\n//#endregion\n//#region src/colour/hsl.ts\nvar hsl_exports = /* @__PURE__ */ __exportAll({\n\tabsolute: () => absolute$1,\n\tchangeLightness: () => changeLightness$1,\n\tfromCss: () => fromCss$3,\n\tfromHexString: () => fromHexString$3,\n\tgenerateScalar: () => generateScalar$1,\n\tguard: () => guard$4,\n\tinterpolator: () => interpolator$3,\n\tparseCssHslFunction: () => parseCssHslFunction,\n\tscalar: () => scalar$3,\n\ttoAbsolute: () => toAbsolute$1,\n\ttoCssString: () => toCssString$2,\n\ttoHexString: () => toHexString$3,\n\ttoLibraryRgb: () => toLibraryRgb,\n\ttoScalar: () => toScalar$3,\n\twithOpacity: () => withOpacity$3\n});\n/**\n* Scales the opacity value of an input HSL value\n* ```js\n* withOpacity()\n* ```\n* @param value Colour\n* @param fn Function that calcules opacity based on input scalar value\n*/\nfunction withOpacity$3(value, fn) {\n\tswitch (value.unit) {\n\t\tcase `absolute`: return {\n\t\t\t...value,\n\t\t\topacity: fn((value.opacity ?? 100) / 100, value) * 100\n\t\t};\n\t\tcase `scalar`: return {\n\t\t\t...value,\n\t\t\topacity: fn(value.opacity ?? 1, value)\n\t\t};\n\t}\n}\n/**\n* Increases or decreases lightness by this percentage, returning new colour\n*\n* Amount to change:\n* 'fixed': a fixed amount\n* 'delta': increase/decrease by this amount\n* 'pdelta': proportion of current value to change by ('percentage delta')\n*\n* ```\n* const colour = { h: 0.5, s: 0.5, l: 0.5, space: `hsl`, unit: `scalar` };\n* changeLightness(colour, { pdelta: 0.1 }); // l: 0.55\n* changeLightness(colour, { delta: 0.1 }); // l: 0.6\n* changeLightness(colour, { fixed: 0.5 }); // l: 0.5\n* ```\n*\n* Keep in mind the numerical value will depend on the unit of `value`. If it's scalar,\n* lightness is 0..1 scale, otherwise 0..100 scale.\n*\n* Use negative values to decrease (does not apply to 'fixed')\n* @param value Hsl colour\n* @param amount Amount to change\n*/\nfunction changeLightness$1(value, amount) {\n\tlet newL = 0;\n\tif (typeof amount.pdelta !== `undefined`) newL = value.l + value.l * amount.pdelta;\n\telse if (typeof amount.delta !== `undefined`) newL = amount.delta + value.l;\n\telse if (typeof amount.fixed !== `undefined`) {\n\t\tif (amount.fixed < 0) throw new TypeError(`Cannot use negative value with 'fixed'`);\n\t\tnewL = amount.fixed;\n\t} else throw new TypeError(`Parameter 'amount' is missing 'delta/pdelta/fixed' properties`);\n\treturn {\n\t\t...value,\n\t\tl: scaleProperty(value, newL, `l`)\n\t};\n}\nfunction scaleProperty(hsl, value, property) {\n\tif (hsl.unit === `scalar`) {\n\t\tif (value > 1) value = 1;\n\t\telse if (value < 0) value = 0;\n\t} else if (value > 100) value = 100;\n\telse if (value < 0) value = 0;\n\treturn value;\n}\nconst hslTransparent = Object.freeze({\n\th: 0,\n\ts: 0,\n\tl: 0,\n\topacity: 0,\n\tunit: `absolute`,\n\tspace: `hsl`\n});\nfunction fromHexString$3(hexString, options = {}) {\n\treturn fromLibrary$2(hex2hsl(hexString), options);\n}\nfunction fromCss$3(value, options = {}) {\n\tvalue = value.toLowerCase();\n\tif (value.startsWith(`hsla(`)) throw new Error(`hsla() not supported`);\n\tif (value.startsWith(`rgba(`)) throw new Error(`rgba() not supported`);\n\tif (value.startsWith(`#`)) return fromHexString$3(value, options);\n\tif (value.startsWith(`--`)) try {\n\t\tvalue = resolveCss(value);\n\t} catch (error) {\n\t\tif (typeof options.fallbackString !== `undefined`) value = options.fallbackString;\n\t\tif (typeof options.fallbackColour !== `undefined`) return options.fallbackColour;\n\t\tthrow error;\n\t}\n\tif (value === `transparent`) return hslTransparent;\n\tif (typeof cssDefinedHexColours[value] !== `undefined`) return fromHexString$3(cssDefinedHexColours[value], options);\n\tif (value.startsWith(`rgb(`)) return fromLibrary$2(toLibraryHsl(value), options);\n\tif (!value.startsWith(`hsl(`)) try {\n\t\tvalue = convert$1(value, `hsl`);\n\t} catch (error) {\n\t\tif (options.fallbackString) value = options.fallbackString;\n\t\telse throw error;\n\t}\n\ttry {\n\t\tconst hsl = parseCssHslFunction(value);\n\t\tif (options.scalar) return toScalar$3(hsl);\n\t\treturn toAbsolute$1(hsl);\n\t} catch (error) {\n\t\tif (options.fallbackColour) return options.fallbackColour;\n\t\tthrow error;\n\t}\n}\nfunction toCssString$2(hsl) {\n\tconst abs = toAbsolute$1(hsl);\n\tlet css = `hsl(${abs.h}deg ${abs.s}% ${abs.l}%`;\n\tif (`opacity` in abs && abs.opacity !== void 0 && abs.opacity < 100) css += ` / ${abs.opacity}%`;\n\tcss += `)`;\n\treturn css;\n}\nfunction toHexString$3(hsl) {\n\treturn libraryRgbToHexString(toLibraryRgb(hsl));\n}\nfunction fromLibrary$2(hsl, parsingOptions = {}) {\n\tif (typeof hsl === `undefined` || hsl === null) {\n\t\tif (parsingOptions.fallbackColour) return parsingOptions.fallbackColour;\n\t}\n\tconst scalarOpt = parsingOptions.scalar ?? true;\n\tresultThrow(numberInclusiveRangeTest(hsl.h, 0, 360, `h`), numberInclusiveRangeTest(hsl.s, 0, 100, `s`), numberInclusiveRangeTest(hsl.l, 0, 100, `l`), percentTest(hsl.alpha ?? 1, `alpha`));\n\tif (scalarOpt) return scalar$3(hsl.h / 360, hsl.s / 100, hsl.l / 100, hsl.alpha ?? 1);\n\telse return absolute$1(hsl.h, hsl.s, hsl.l, (hsl.alpha ?? 1) * 100);\n}\nfunction toAbsolute$1(hslOrString) {\n\tif (typeof hslOrString === `string`) return fromCss$3(hslOrString, { scalar: false });\n\tif (isRgb(hslOrString)) return toAbsolute$1(fromLibrary$2(toLibraryHsl(hslOrString), { scalar: false }));\n\tconst hsl = hslOrString;\n\tguard$4(hsl);\n\tif (hsl.unit === `absolute`) return hsl;\n\treturn {\n\t\th: hsl.h * 360,\n\t\ts: hsl.s * 100,\n\t\tl: hsl.l * 100,\n\t\topacity: (hsl.opacity ?? 1) * 100,\n\t\tunit: `absolute`,\n\t\tspace: `hsl`\n\t};\n}\n/**\n* Generates a {@link HslScalar} value.\n*\n* ```js\n* generateScaler(10); // 10deg, default to full saturation, half lightness and full opacity\n*\n* // Generate HSL value from radian angle and 50% saturation\n* generateScalar(`10rad`, 0.5);\n*\n* // Generate from numeric CSS variable\n* generateScalar(`--hue`);\n* ```\n* @param absoluteHslOrVariable Hue angle or CSS variable\n* @param saturation\n* @param lightness\n* @param opacity\n*/\nfunction generateScalar$1(absoluteHslOrVariable, saturation = 1, lightness = .5, opacity = 1) {\n\tif (typeof absoluteHslOrVariable === `string`) {\n\t\tif (absoluteHslOrVariable.startsWith(`--`)) absoluteHslOrVariable = getComputedStyle(document.body).getPropertyValue(absoluteHslOrVariable).trim();\n\t}\n\tconst hue = angleParse(absoluteHslOrVariable);\n\tif (saturation > 1) throw new TypeError(`Param 'saturation' must be between 0..1`);\n\tif (lightness > 1) throw new TypeError(`Param 'lightness' must be between 0..1`);\n\tif (opacity > 1) throw new TypeError(`Param 'opacity' must be between 0..1`);\n\treturn {\n\t\th: angleConvert(hue, `deg`).value / 360,\n\t\ts: saturation,\n\t\tl: lightness,\n\t\topacity,\n\t\tunit: `scalar`,\n\t\tspace: `hsl`\n\t};\n}\n/**\n* Converts a {@link Hsl} value to scalar units, or parses a colour string\n* and converts it.\n*\n* ```js\n* toScalar({ h: 100, s: 50, l: 100, unit: `absolute` });\n* toScalar(`red`);\n* ```\n* @param colour\n*/\nfunction toScalar$3(colour) {\n\tif (typeof colour === `string`) return fromCss$3(colour, { scalar: true });\n\tif (isRgb(colour)) return toScalar$3(fromLibrary$2(toLibraryHsl(colour), { scalar: true }));\n\tconst hsl = colour;\n\tguard$4(hsl);\n\tif (hsl.unit === `scalar`) return hsl;\n\treturn {\n\t\th: hsl.h / 360,\n\t\ts: hsl.s / 100,\n\t\tl: hsl.l / 100,\n\t\topacity: (hsl.opacity ?? 1) / 100,\n\t\tunit: `scalar`,\n\t\tspace: `hsl`\n\t};\n}\nfunction guard$4(hsl) {\n\tconst { h, s, l, opacity, space, unit } = hsl;\n\tif (space !== `hsl`) throw new Error(`Space is expected to be 'hsl'. Got: ${space}`);\n\tif (unit === `absolute`) resultThrow(numberTest(h, `finite`, `h`), numberInclusiveRangeTest(s, 0, 100, `s`), numberInclusiveRangeTest(l, 0, 100, `l`), () => {\n\t\tif (typeof opacity === `number`) return numberInclusiveRangeTest(opacity, 0, 100, `opacity`);\n\t});\n\telse if (unit === `scalar`) resultThrow(numberTest(h, `percentage`, `h`), numberTest(s, `percentage`, `s`), numberTest(l, `percentage`, `l`), () => {\n\t\tif (typeof opacity === `number`) return numberTest(opacity, `percentage`, `opacity`);\n\t});\n\telse throw new Error(`Unit is expected to be 'absolute' or 'scalar'. Got: ${unit}`);\n}\nfunction interpolator$3(a, b, direction = `shorter`) {\n\ta = toScalar$3(a);\n\tb = toScalar$3(b);\n\tconst aOpacity = a.opacity ?? 1;\n\tconst distanceCalc = calculateHueDistance(a.h, b.h, 1);\n\tconst hueDistance = direction === `longer` ? distanceCalc.long : distanceCalc.short;\n\tconst satDistance = b.s - a.s;\n\tconst lightDistance = b.l - a.l;\n\tconst opacityDistance = (b.opacity ?? 1) - aOpacity;\n\treturn (amount) => {\n\t\tamount = clamp(amount);\n\t\tlet h = interpolate(amount, 0, Math.abs(hueDistance));\n\t\tif (hueDistance < 0) h = a.h - h;\n\t\telse h = a.h + h;\n\t\tconst s = interpolate(amount, 0, satDistance);\n\t\tconst l = interpolate(amount, 0, lightDistance);\n\t\tconst o = interpolate(amount, 0, opacityDistance);\n\t\treturn scalar$3(wrapScalarHue(h), s + a.s, l + a.l, o + aOpacity);\n\t};\n}\n/**\n* Creates a HslScalar value from scalar (0..1) values\n* @param hue\n* @param sat\n* @param lightness\n* @param opacity\n*/\nfunction scalar$3(hue = .5, sat = 1, lightness = .5, opacity = 1) {\n\tconst hsl = {\n\t\tunit: `scalar`,\n\t\tspace: `hsl`,\n\t\th: hue,\n\t\ts: sat,\n\t\tl: lightness,\n\t\topacity\n\t};\n\tguard$4(hsl);\n\treturn hsl;\n}\nfunction absolute$1(hue = 200, sat = 100, lightness = 50, opacity = 100) {\n\tconst hsl = {\n\t\tunit: `absolute`,\n\t\tspace: `hsl`,\n\t\th: hue,\n\t\ts: sat,\n\t\tl: lightness,\n\t\topacity\n\t};\n\tguard$4(hsl);\n\treturn hsl;\n}\n/**\n* It seems Colorizr can't handle 'deg' units\n* @param value\n*/\nfunction parseCssHslFunction(value) {\n\tif (value.startsWith(`hsla`)) throw new Error(`hsla() is not supported`);\n\tif (!value.startsWith(`hsl(`)) throw new Error(`Expected hsl(..) CSS colour`);\n\tconst start = value.indexOf(`(`);\n\tconst end = value.indexOf(`)`);\n\tif (end < start) throw new Error(`Is hsl() not terminated? Missing ')'`);\n\tlet split = value.substring(start + 1, end).split(/[\\s,]+/);\n\tif (split.length < 3) throw new Error(`Expected three tokens. Got: ${split.length} length`);\n\tlet returnRelative = false;\n\tif (split[0].endsWith(`%`)) returnRelative = true;\n\tif (split[1].endsWith(`%`) && split[2].endsWith(`%`)) returnRelative = true;\n\tconst valueAsScalar = (v, pos) => {\n\t\tif (v === `none`) return 0;\n\t\tif (v.endsWith(`%`)) return Number.parseFloat(v.substring(0, v.length - 1)) / 100;\n\t\tif (v.endsWith(`deg`) && pos === 0) v = v.substring(0, v.length - 3);\n\t\tconst vf = Number.parseFloat(v);\n\t\tif (pos === 0) return vf / 360;\n\t\tif (pos === 3) return vf;\n\t\treturn vf / 100;\n\t};\n\tconst valueAsAbs = (v, pos) => {\n\t\tif (v === `none`) return 0;\n\t\tif (v.endsWith(`%`)) {\n\t\t\tconst vf = Number.parseFloat(v.substring(0, v.length - 1));\n\t\t\tif (pos === 0) return vf * 360;\n\t\t\treturn vf;\n\t\t}\n\t\tif (v.endsWith(`deg`) && pos === 0) return Number.parseFloat(v.substring(0, v.length - 3));\n\t\treturn Number.parseFloat(v);\n\t};\n\tif (split.length > 3) {\n\t\tif (split[3] === `/`) split = [\n\t\t\tsplit[0],\n\t\t\tsplit[1],\n\t\t\tsplit[2],\n\t\t\tsplit[4]\n\t\t];\n\t}\n\tif (returnRelative) return scalar$3(valueAsScalar(split[0], 0), valueAsScalar(split[1], 1), valueAsScalar(split[2], 2), valueAsScalar(split[3] ?? `100%`, 3));\n\telse return absolute$1(valueAsAbs(split[0], 0), valueAsAbs(split[1], 1), valueAsAbs(split[2], 2), valueAsAbs(split[3] ?? `100%`, 3));\n}\n/**\n* Converts a Hsl structure (or CSS string) to Colorizr's RGB format\n* @param hsl HSL colour\n*/\nfunction toLibraryRgb(hsl) {\n\tif (typeof hsl === `string`) return toLibraryRgb(fromCss$3(hsl, { scalar: false }));\n\thsl = toAbsolute$1(hsl);\n\treturn {\n\t\t...hsl2rgb({\n\t\t\th: hsl.h,\n\t\t\ts: hsl.s,\n\t\t\tl: hsl.l\n\t\t}),\n\t\talpha: (hsl.opacity ?? 100) / 100 * 255\n\t};\n}\n//#endregion\n//#region src/colour/srgb.ts\nvar srgb_exports = /* @__PURE__ */ __exportAll({\n\tchangeLightness: () => changeLightness,\n\teightBit: () => eightBit$1,\n\tfromCss: () => fromCss$2,\n\tfromHexString: () => fromHexString$2,\n\tguard: () => guard$3,\n\tinterpolator: () => interpolator$2,\n\tlightness: () => lightness,\n\tparseCssRgbFunction: () => parseCssRgbFunction,\n\tscalar: () => scalar$2,\n\tto8bit: () => to8bit$1,\n\ttoCssString: () => toCssString$1,\n\ttoHexString: () => toHexString$2,\n\ttoLibraryHsl: () => toLibraryHsl,\n\ttoScalar: () => toScalar$2,\n\twithOpacity: () => withOpacity$2\n});\nfunction withOpacity$2(value, fn) {\n\tswitch (value.unit) {\n\t\tcase `8bit`: return {\n\t\t\t...value,\n\t\t\topacity: fn((value.opacity ?? 255) / 255, value) * 255\n\t\t};\n\t\tcase `scalar`: return {\n\t\t\t...value,\n\t\t\topacity: fn(value.opacity ?? 1, value)\n\t\t};\n\t}\n}\nfunction fromHexString$2(hexString, scalar = true) {\n\treturn fromLibrary$1(hex2rgb(hexString), { scalar });\n}\nconst srgbTansparent = Object.freeze({\n\tr: 0,\n\tg: 0,\n\tb: 0,\n\topacity: 0,\n\tunit: `8bit`,\n\tspace: `srgb`\n});\n/**\n* Converts a colour in a legal CSS form into Rgb value, by default RgbScalar (0..1) scale.\n* ```js\n* fromCss(`rebeccapurple`);\n* fromCss(`rgb(40% 20% 60%)`);\n*\n* // Get 8bit version on 0..255 scale\n* fromCss(`blue`, { scalar: false });\n* ```\n*\n* @param value\n* @param options\n*/\nfunction fromCss$2(value, options = {}) {\n\tvalue = value.toLowerCase();\n\tif (value.startsWith(`hsla(`)) throw new Error(`hsla() not supported`);\n\tif (value.startsWith(`rgba(`)) throw new Error(`rgba() not supported`);\n\tconst scalar = options.scalar ?? true;\n\tif (value.startsWith(`#`)) return fromHexString$2(value, scalar);\n\tif (value === `transparent`) return srgbTansparent;\n\tif (typeof cssDefinedHexColours[value] !== `undefined`) return fromHexString$2(cssDefinedHexColours[value], scalar);\n\tif (value.startsWith(`hsl(`)) return fromLibrary$1(toLibraryRgb(value), options);\n\tif (!value.startsWith(`rgb(`)) try {\n\t\tvalue = convert$1(value, `rgb`);\n\t} catch (error) {\n\t\tif (options.fallbackString) value = options.fallbackString;\n\t\telse throw error;\n\t}\n\ttry {\n\t\tconst rgb = parseCssRgbFunction(value);\n\t\tif (scalar) return toScalar$2(rgb);\n\t\treturn to8bit$1(rgb);\n\t} catch (error) {\n\t\tif (options.fallbackColour) return options.fallbackColour;\n\t\tthrow error;\n\t}\n}\nfunction toHexString$2(rgb) {\n\treturn libraryRgbToHexString(toLibrary$1(rgb));\n}\nfunction toCssString$1(rgb) {\n\tguard$3(rgb);\n\tswitch (rgb.unit) {\n\t\tcase `8bit`:\n\t\t\tif (rgb.opacity === void 0 || rgb.opacity === 255) return `rgb(${rgb.r} ${rgb.g} ${rgb.b})`;\n\t\t\treturn `rgb(${rgb.r} ${rgb.g} ${rgb.b} / ${(rgb.opacity ?? 255) / 255})`;\n\t\tcase `scalar`:\n\t\t\tif (rgb.opacity === void 0 || rgb.opacity === 1) return `rgb(${rgb.r * 100}% ${rgb.g * 100}% ${rgb.b * 100}%)`;\n\t\t\treturn `rgb(${rgb.r * 100}% ${rgb.g * 100}% ${rgb.b * 100}% / ${(rgb.opacity ?? 1) * 100}%)`;\n\t\tdefault: throw new Error(`Unknown unit: ${rgb.unit}`);\n\t}\n}\nfunction toLibrary$1(rgb) {\n\tconst abs = to8bit$1(rgb);\n\treturn {\n\t\tr: abs.r,\n\t\tg: abs.g,\n\t\tb: abs.b,\n\t\talpha: abs.opacity\n\t};\n}\nfunction fromLibrary$1(rgb, parsingOptions = {}) {\n\tif (parsingOptions.scalar) return {\n\t\tr: rgb.r / 255,\n\t\tg: rgb.g / 255,\n\t\tb: rgb.b / 255,\n\t\topacity: rgb.alpha ?? 1,\n\t\tunit: `scalar`,\n\t\tspace: `srgb`\n\t};\n\telse return {\n\t\tr: rgb.r,\n\t\tg: rgb.g,\n\t\tb: rgb.b,\n\t\topacity: rgb.alpha ?? 255,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\nfunction to8bit$1(rgbOrString) {\n\tif (typeof rgbOrString === `string`) return fromCss$2(rgbOrString, { scalar: false });\n\tif (isHsl(rgbOrString)) return to8bit$1(fromLibrary$1(toLibraryRgb(rgbOrString), { scalar: false }));\n\tguard$3(rgbOrString);\n\tif (rgbOrString.unit === `8bit`) return rgbOrString;\n\treturn {\n\t\tr: rgbOrString.r * 255,\n\t\tg: rgbOrString.g * 255,\n\t\tb: rgbOrString.b * 255,\n\t\topacity: (rgbOrString.opacity ?? 1) * 255,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\nfunction toScalar$2(rgbOrString) {\n\tif (typeof rgbOrString === `string`) return fromCss$2(rgbOrString, { scalar: true });\n\tif (isHsl(rgbOrString)) return toScalar$2(fromLibrary$1(toLibraryRgb(rgbOrString), { scalar: true }));\n\tguard$3(rgbOrString);\n\tif (rgbOrString.unit === `scalar`) return rgbOrString;\n\treturn {\n\t\tr: rgbOrString.r / 255,\n\t\tg: rgbOrString.g / 255,\n\t\tb: rgbOrString.b / 255,\n\t\topacity: (rgbOrString.opacity ?? 1) / 255,\n\t\tunit: `scalar`,\n\t\tspace: `srgb`\n\t};\n}\nfunction guard$3(rgb) {\n\tconst { r, g, b, opacity, space, unit } = rgb;\n\tif (space !== `srgb`) throw new Error(`Space is expected to be 'srgb'. Got: ${space}`);\n\tif (unit === `8bit`) resultThrow(numberInclusiveRangeTest(r, 0, 255, `r`), numberInclusiveRangeTest(g, 0, 255, `g`), numberInclusiveRangeTest(b, 0, 255, `b`), () => {\n\t\tif (typeof opacity === `number`) return numberInclusiveRangeTest(opacity, 0, 255, `opacity`);\n\t});\n\telse if (unit === `scalar`) resultThrow(numberTest(r, `percentage`, `r`), numberTest(g, `percentage`, `g`), numberTest(b, `percentage`, `b`), () => {\n\t\tif (typeof opacity === `number`) return numberTest(opacity, `percentage`, `opacity`);\n\t});\n\telse throw new Error(`Unit is expected to be '8bit' or 'scalar'. Got: ${unit}`);\n}\n/**\n* Sets the lightness value.\n*\n* Amount to change:\n* 'fixed': a fixed amount\n* 'delta': increase/decrease by this amount\n* 'pdelta': proportion of current value to change by ('percentage delta')\n*\n* Use negative values to decrease\n* @param rgb Colour\n* @param amount Amount to change\n*/\nfunction changeLightness(rgb, amount) {\n\tlet newL = 0;\n\tconst co = new Colorizr(toCssString$1(rgb));\n\tconst scalarUnit = rgb.unit === `scalar`;\n\tif (typeof amount.pdelta !== `undefined`) newL = co.oklab.l + co.oklab.l * amount.pdelta;\n\telse if (typeof amount.delta !== `undefined`) newL = co.oklab.l + amount.delta;\n\telse if (typeof amount.fixed !== `undefined`) {\n\t\tif (amount.fixed < 0) throw new TypeError(`Amount cannot be negative when using 'fixed'`);\n\t\tnewL = amount.fixed;\n\t} else throw new TypeError(`Parameter 'amount' is missing 'pdelta/delta/fixed' properties`);\n\tif (newL < 0) newL = 0;\n\telse if (newL > 1) newL = 1;\n\treturn fromLibrary$1(oklab2rgb({\n\t\ta: co.oklab.a,\n\t\tb: co.oklab.b,\n\t\tl: newL,\n\t\talpha: co.oklab.alpha\n\t}), { scalar: scalarUnit });\n}\n/**\n* Returns a lightness value (0..1) for an RGB input\n*\n* Calculates lightness by converting to Oklab and using the 'L' value\n* @param rgb\n*/\nfunction lightness(rgb) {\n\treturn new Colorizr(toCssString$1(rgb)).oklab.l;\n}\n/**\n* Creates a Rgb8Bit value from 8bit (0..255) values\n* @param red\n* @param green\n* @param blue\n* @param opacity\n*/\nfunction eightBit$1(red = 100, green = 100, blue = 100, opacity = 255) {\n\tconst rgb = {\n\t\tunit: `8bit`,\n\t\tspace: `srgb`,\n\t\tr: red,\n\t\tg: green,\n\t\tb: blue,\n\t\topacity\n\t};\n\tguard$3(rgb);\n\treturn rgb;\n}\n/**\n* Creates a RgbScalar value from scalar (0..1) values\n* @param red\n* @param green\n* @param blue\n* @param opacity\n*/\nfunction scalar$2(red = .5, green = .5, blue = .5, opacity = 1) {\n\tconst rgb = {\n\t\tunit: `scalar`,\n\t\tspace: `srgb`,\n\t\tr: red,\n\t\tg: green,\n\t\tb: blue,\n\t\topacity\n\t};\n\tguard$3(rgb);\n\treturn rgb;\n}\n/**\n* It seems Colorizr can't handle % values properly :'(\n* @param value\n*/\nfunction parseCssRgbFunction(value) {\n\tif (value.startsWith(`rgba`)) throw new Error(`RGBA is not supported`);\n\tif (!value.startsWith(`rgb(`)) throw new Error(`Expected rgb(..) CSS colour`);\n\tconst start = value.indexOf(`(`);\n\tconst end = value.indexOf(`)`);\n\tif (end < start) throw new Error(`Is rgb() not terminated? Missing ')'`);\n\tlet split = value.substring(start + 1, end).split(/[\\s,]+/);\n\tif (split.length < 3) throw new Error(`Expected three tokens. Got: ${split.length} length`);\n\tlet relativeCount = 0;\n\tfor (const s of split) if (s.endsWith(`%`)) relativeCount++;\n\tconst valueAsScalar = (v, pos) => {\n\t\tif (v.endsWith(`%`)) return Number.parseFloat(v.substring(0, v.length - 1)) / 100;\n\t\tif (pos < 3) return Number.parseFloat(v) / 255;\n\t\telse return Number.parseFloat(v);\n\t};\n\tconst valueAs8bit = (v, pos) => {\n\t\tif (v.endsWith(`%`)) return Number.parseFloat(v.substring(0, v.length - 1)) / 100 * 255;\n\t\tif (pos < 3) return Number.parseFloat(v);\n\t\telse return Number.parseFloat(v) * 255;\n\t};\n\tif (split.length > 3) {\n\t\tif (split[3] === `/`) split = [\n\t\t\tsplit[0],\n\t\t\tsplit[1],\n\t\t\tsplit[2],\n\t\t\tsplit[4]\n\t\t];\n\t}\n\tif (relativeCount > 1) return scalar$2(valueAsScalar(split[0], 0), valueAsScalar(split[1], 1), valueAsScalar(split[2], 2), valueAsScalar(split[3] ?? `1`, 3));\n\telse return eightBit$1(valueAs8bit(split[0], 0), valueAs8bit(split[1], 1), valueAs8bit(split[2], 2), valueAs8bit(split[3] ?? `1`, 3));\n}\n/**\n* Interpolates colours in Srgb space. Probably\n* really ugly, use OkLch space isntead.\n*\n* ```js\n* const i = interpolator(`red`, `blue`);\n* i(0.5); // Get 50% between these colours\n* ```\n* @param colourA\n* @param colourB\n*/\nfunction interpolator$2(colourA, colourB) {\n\tconst aa = toScalar$2(colourA);\n\tconst bb = toScalar$2(colourB);\n\tconst aOpacity = aa.opacity ?? 1;\n\tconst opacityDistance = (bb.opacity ?? 1) - aOpacity;\n\tconst r = bb.r - aa.r;\n\tconst g = bb.g - aa.g;\n\tconst b = bb.b - aa.b;\n\treturn (amount) => {\n\t\tamount = clamp(amount);\n\t\treturn scalar$2(aa.r + interpolate(amount, 0, r), aa.g + interpolate(amount, 0, g), aa.b + interpolate(amount, 0, b), aOpacity + interpolate(amount, 0, opacityDistance));\n\t};\n}\n/**\n* Converts a Rgb structure (or CSS string) to Colorizr's HSL format\n* @param rgb\n*/\nfunction toLibraryHsl(rgb) {\n\tif (typeof rgb === `string`) return toLibraryHsl(fromCss$2(rgb, { scalar: false }));\n\trgb = to8bit$1(rgb);\n\treturn {\n\t\t...rgb2hsl({\n\t\t\tr: rgb.r,\n\t\t\tg: rgb.g,\n\t\t\tb: rgb.b\n\t\t}),\n\t\talpha: (rgb.opacity ?? 255) / 255\n\t};\n}\n//#endregion\n//#region src/colour/oklch.ts\nvar oklch_exports = /* @__PURE__ */ __exportAll({\n\tOKLCH_CHROMA_MAX: () => OKLCH_CHROMA_MAX,\n\tabsolute: () => absolute,\n\tfromCss: () => fromCss$1,\n\tfromHexString: () => fromHexString$1,\n\tfromLibrary: () => fromLibrary,\n\tgenerateScalar: () => generateScalar,\n\tguard: () => guard$2,\n\tinterpolator: () => interpolator$1,\n\tscalar: () => scalar$1,\n\ttoAbsolute: () => toAbsolute,\n\ttoCssString: () => toCssString,\n\ttoHexString: () => toHexString$1,\n\ttoScalar: () => toScalar$1,\n\twithOpacity: () => withOpacity$1\n});\nconst OKLCH_CHROMA_MAX = .4;\nfunction guard$2(lch) {\n\tconst { l, c, h, opacity, space, unit } = lch;\n\tif (space !== `oklch`) throw new Error(`Space is expected to be 'oklch'. Got: ${space}`);\n\tif (unit === `absolute`) resultThrow(percentTest(l, `l`), () => {\n\t\tif (typeof c === `number`) return numberInclusiveRangeTest(c, 0, OKLCH_CHROMA_MAX, `c`);\n\t}, () => {\n\t\tif (typeof h === `number`) return numberInclusiveRangeTest(h, 0, 360, `h`);\n\t}, percentTest(opacity ?? 1, `opacity`));\n\telse if (unit === `scalar`) resultThrow(percentTest(l, `l`), percentTest(c, `c`), percentTest(h, `h`), percentTest(lch.opacity ?? 1, `opacity`));\n\telse throw new Error(`Unit is expected to be 'absolute' or 'scalar'. Got: ${unit}`);\n}\nfunction fromLibrary(lch, parsingOptions = {}) {\n\tif (typeof lch === `undefined` || lch === null) {\n\t\tif (parsingOptions.fallbackColour) return parsingOptions.fallbackColour;\n\t}\n\tconst scalarReturn = parsingOptions.scalar ?? true;\n\tresultThrow(percentTest(lch.l, `l`), percentTest(lch.c, `c`), numberInclusiveRangeTest(lch.h, 0, 360, `h`), percentTest(lch.alpha ?? 1, `alpha`));\n\tif (scalarReturn) return scalar$1(lch.l, lch.c / OKLCH_CHROMA_MAX, lch.h / 360, lch.alpha ?? 1);\n\telse return absolute(lch.l, lch.c, lch.h, lch.alpha ?? 1);\n}\n/**\n* Parse a HEX-formatted colour into OkLch structured format\n* @param hexString\n* @param options\n*/\nfunction fromHexString$1(hexString, options = {}) {\n\treturn fromLibrary(hex2oklch(hexString), options);\n}\nconst oklchTransparent = Object.freeze({\n\tl: 0,\n\tc: 0,\n\th: 0,\n\topacity: 0,\n\tunit: `absolute`,\n\tspace: `oklch`\n});\nfunction fromCss$1(value, options = {}) {\n\tvalue = value.toLowerCase();\n\tif (value.startsWith(`#`)) return fromHexString$1(value, options);\n\tif (value === `transparent`) return oklchTransparent;\n\tif (typeof cssDefinedHexColours[value] !== `undefined`) return fromHexString$1(cssDefinedHexColours[value], options);\n\tif (value.startsWith(`rgb(`)) {\n\t\tconst rgb = to8bit$1(parseCssRgbFunction(value));\n\t\treturn fromLibrary(rgb2oklch({\n\t\t\tr: rgb.r,\n\t\t\tg: rgb.g,\n\t\t\tb: rgb.b\n\t\t}), options);\n\t}\n\tif (!value.startsWith(`hsl(`) && !value.startsWith(`oklch(`)) try {\n\t\tvalue = convert$1(value, `oklch`);\n\t} catch (error) {\n\t\tif (options.fallbackString) value = options.fallbackString;\n\t\telse throw error;\n\t}\n\tconst lch = new Colorizr(value).oklch;\n\treturn fromLibrary(lch, options);\n}\n/**\n* Returns a string or {@link OkLch} value to absolute form.\n*\n* This means ranges are:\n* lightness: 0..1\n* chroma: 0...CHROMA_MAX (0.4)\n* hue: 0..360\n* @param lchOrString\n*/\nfunction toAbsolute(lchOrString) {\n\tif (typeof lchOrString === `string`) return toAbsolute(fromCss$1(lchOrString, { scalar: true }));\n\tguard$2(lchOrString);\n\tif (lchOrString.unit === `absolute`) return lchOrString;\n\treturn {\n\t\tspace: `oklch`,\n\t\tunit: `absolute`,\n\t\tl: lchOrString.l,\n\t\tc: lchOrString.c * OKLCH_CHROMA_MAX,\n\t\th: lchOrString.h * 360,\n\t\topacity: lchOrString.opacity\n\t};\n}\nfunction toScalar$1(lchOrString) {\n\tif (typeof lchOrString === `string`) return toScalar$1(fromCss$1(lchOrString, { scalar: true }));\n\tconst lch = lchOrString;\n\tguard$2(lch);\n\tif (lch.unit === `scalar`) return lch;\n\treturn {\n\t\tl: lch.l,\n\t\tc: lch.c / OKLCH_CHROMA_MAX,\n\t\th: lch.h / 360,\n\t\topacity: lch.opacity ?? 1,\n\t\tunit: `scalar`,\n\t\tspace: `oklch`\n\t};\n}\nfunction toLibrary(lch) {\n\tconst abs = toAbsolute(lch);\n\treturn {\n\t\tl: abs.l,\n\t\tc: abs.c,\n\t\th: abs.h,\n\t\talpha: abs.opacity\n\t};\n}\n/**\n* Returns the colour as a CSS colour string: `oklch(l c h / opacity)`.\n*\n* @param lch Colour\n* @param precision Set precision of numbers, defaults to 3\n* @returns CSS colour string\n*/\nfunction toCssString(lch, precision = 3) {\n\tguard$2(lch);\n\tconst { l, c, h, opacity } = lch;\n\tlet css = ``;\n\tswitch (lch.unit) {\n\t\tcase `absolute`:\n\t\t\tcss = `oklch(${(l * 100).toFixed(precision)}% ${c.toFixed(precision)} ${h.toFixed(precision)}`;\n\t\t\tbreak;\n\t\tcase `scalar`:\n\t\t\tcss = `oklch(${l.toFixed(precision)} ${(c * OKLCH_CHROMA_MAX).toFixed(precision)} ${(h * 360).toFixed(precision)}`;\n\t\t\tbreak;\n\t}\n\tif (typeof opacity !== `undefined` && opacity !== 1) css += ` / ${opacity.toFixed(precision)}`;\n\tcss += `)`;\n\treturn css;\n}\nfunction toHexString$1(lch) {\n\treturn libraryRgbToHexString(oklch2rgb(toLibrary(lch)));\n}\nfunction generateScalar(absoluteHslOrVariable, chroma = 1, lightness = .5, opacity = 1) {\n\tif (typeof absoluteHslOrVariable === `string`) {\n\t\tif (absoluteHslOrVariable.startsWith(`--`)) absoluteHslOrVariable = getComputedStyle(document.body).getPropertyValue(absoluteHslOrVariable).trim();\n\t}\n\tif (lightness > 1) throw new TypeError(`Param 'lightness' must be between 0..1`);\n\tif (chroma > 1) throw new TypeError(`Param 'chroma' must be between 0..1`);\n\tconst hueDeg = angleConvert(angleParse(absoluteHslOrVariable), `deg`).value / 360;\n\tif (opacity > 1) throw new TypeError(`Param 'opacity' must be between 0..1`);\n\treturn {\n\t\tl: lightness,\n\t\tc: chroma,\n\t\th: hueDeg,\n\t\topacity,\n\t\tunit: `scalar`,\n\t\tspace: `oklch`\n\t};\n}\n/**\n* Scales the opacity value of an input Oklch value\n* ```js\n* withOpacity()\n* ```\n* @param value\n* @param fn\n*/\nfunction withOpacity$1(value, fn) {\n\tswitch (value.unit) {\n\t\tcase `absolute`: return {\n\t\t\t...value,\n\t\t\topacity: fn((value.opacity ?? 100) / 100, value) * 100\n\t\t};\n\t\tcase `scalar`: return {\n\t\t\t...value,\n\t\t\topacity: fn(value.opacity ?? 1, value)\n\t\t};\n\t}\n}\nfunction interpolator$1(a, b, direction = `shorter`) {\n\ta = toScalar$1(a);\n\tb = toScalar$1(b);\n\tconst aOpacity = a.opacity ?? 1;\n\tconst distanceCalc = calculateHueDistance(a.h, b.h, 1);\n\tconst hueDistance = direction === `longer` ? distanceCalc.long : distanceCalc.short;\n\tconst chromaDistance = b.c - a.c;\n\tconst lightDistance = b.l - a.l;\n\tconst opacityDistance = (b.opacity ?? 1) - aOpacity;\n\treturn (amount) => {\n\t\tamount = clamp(amount);\n\t\tlet h = interpolate(amount, 0, Math.abs(hueDistance));\n\t\tif (hueDistance < 0) h = a.h - h;\n\t\telse h = a.h + h;\n\t\tconst c = interpolate(amount, 0, chromaDistance);\n\t\tconst l = interpolate(amount, 0, lightDistance);\n\t\tconst o = interpolate(amount, 0, opacityDistance);\n\t\treturn scalar$1(l + a.l, c + a.c, wrapScalarHue(h), o + aOpacity);\n\t};\n}\nfunction scalar$1(lightness = .7, chroma = .1, hue = .5, opacity = 1) {\n\tconst lch = {\n\t\tunit: `scalar`,\n\t\tspace: `oklch`,\n\t\tl: lightness,\n\t\tc: chroma,\n\t\th: hue,\n\t\topacity\n\t};\n\tguard$2(lch);\n\treturn lch;\n}\n/**\n* Create an LCH colour using absolute hue\n* @param l Lightness 0..1\n* @param c Chroma 0..4\n* @param h Hue 0..360\n* @param opacity\n*/\nfunction absolute(l, c, h, opacity = 1) {\n\tconst lch = {\n\t\tspace: `oklch`,\n\t\tunit: `absolute`,\n\t\topacity,\n\t\tl,\n\t\tc,\n\t\th\n\t};\n\tguard$2(lch);\n\treturn lch;\n}\n//#endregion\n//#region src/colour/css-colours.ts\n/**\n* Converts from some kind of colour that is legal in CSS\n* into a structured Colour type.\n* \n* Handles: hex format, CSS variables, colour names\n* ```js\n* fromCssColour(`#ffffff`);\n* fromCssColour(`blue`);\n* fromCssColour(`--some-variable`);\n* fromCssColour(`hsl(50, 50%, 50%)`);\n* fromCssColour(`rgb(50, 100, 100)`);\n* ```\n* @param colour \n* @returns \n*/\nconst fromCssColour = (colour) => {\n\tif (colour.startsWith(`#`)) return fromHexString$2(colour, true);\n\tif (colour.startsWith(`--`)) {\n\t\tconst fromCss = getComputedStyle(document.body).getPropertyValue(colour).trim();\n\t\tif (fromCss.length === 0 || fromCss === null) throw new Error(`Variable missing: ${colour}`);\n\t\treturn fromCssColour(fromCss);\n\t}\n\tconst colourLower = colour.toLowerCase();\n\tif (typeof cssDefinedHexColours[colourLower] !== `undefined`) return fromHexString$2(cssDefinedHexColours[colourLower], true);\n\tif (colourLower.startsWith(`hsl(`)) return fromCss$3(colour, { scalar: true });\n\tif (colourLower.startsWith(`rgb(`)) return fromCss$2(colour, { scalar: true });\n\tif (colourLower.startsWith(`oklch(`)) return fromCss$1(colour, { scalar: true });\n\tthrow new Error(`String colour is not a hex colour, CSS variable nor well-defined colour. Input: '${colour}'`);\n};\n/**\n* Resolves a named colour or CSS variable to a colour string.\n* Doesn't do conversion or parsing.\n* \n* ```js\n* resolveCss(`red`);\n* resolveCss(`my-var`);\n* ```\n* @param colour Colour\n* @param fallback Fallback if CSS variable is missing\n* @returns \n*/\nfunction resolveCss(colour, fallback) {\n\tif (colour.startsWith(`--`)) {\n\t\tconst fromCss = getComputedStyle(document.body).getPropertyValue(colour).trim();\n\t\tif (fromCss.length === 0 || fromCss === null) {\n\t\t\tif (typeof fallback !== `undefined`) return fallback;\n\t\t\tthrow new Error(`CSS variable missing: '${colour}'`);\n\t\t}\n\t\treturn resolveCss(fromCss);\n\t}\n\tif (typeof cssDefinedHexColours[colour] !== `undefined`) return cssDefinedHexColours[colour];\n\treturn colour;\n}\nconst cssDefinedHexColours = Object.freeze({\n\t\"aliceblue\": \"#f0f8ff\",\n\t\"antiquewhite\": \"#faebd7\",\n\t\"aqua\": \"#00ffff\",\n\t\"aquamarine\": \"#7fffd4\",\n\t\"azure\": \"#f0ffff\",\n\t\"beige\": \"#f5f5dc\",\n\t\"bisque\": \"#ffe4c4\",\n\t\"black\": \"#000000\",\n\t\"blanchedalmond\": \"#ffebcd\",\n\t\"blue\": \"#0000ff\",\n\t\"blueviolet\": \"#8a2be2\",\n\t\"brown\": \"#a52a2a\",\n\t\"burlywood\": \"#deb887\",\n\t\"cadetblue\": \"#5f9ea0\",\n\t\"chartreuse\": \"#7fff00\",\n\t\"chocolate\": \"#d2691e\",\n\t\"coral\": \"#ff7f50\",\n\t\"cornflowerblue\": \"#6495ed\",\n\t\"cornsilk\": \"#fff8dc\",\n\t\"crimson\": \"#dc143c\",\n\t\"cyan\": \"#00ffff\",\n\t\"darkblue\": \"#00008b\",\n\t\"darkcyan\": \"#008b8b\",\n\t\"darkgoldenrod\": \"#b8860b\",\n\t\"darkgray\": \"#a9a9a9\",\n\t\"darkgreen\": \"#006400\",\n\t\"darkkhaki\": \"#bdb76b\",\n\t\"darkmagenta\": \"#8b008b\",\n\t\"darkolivegreen\": \"#556b2f\",\n\t\"darkorange\": \"#ff8c00\",\n\t\"darkorchid\": \"#9932cc\",\n\t\"darkred\": \"#8b0000\",\n\t\"darksalmon\": \"#e9967a\",\n\t\"darkseagreen\": \"#8fbc8f\",\n\t\"darkslateblue\": \"#483d8b\",\n\t\"darkslategray\": \"#2f4f4f\",\n\t\"darkturquoise\": \"#00ced1\",\n\t\"darkviolet\": \"#9400d3\",\n\t\"deeppink\": \"#ff1493\",\n\t\"deepskyblue\": \"#00bfff\",\n\t\"dimgray\": \"#696969\",\n\t\"dodgerblue\": \"#1e90ff\",\n\t\"firebrick\": \"#b22222\",\n\t\"floralwhite\": \"#fffaf0\",\n\t\"forestgreen\": \"#228b22\",\n\t\"fuchsia\": \"#ff00ff\",\n\t\"gainsboro\": \"#dcdcdc\",\n\t\"ghostwhite\": \"#f8f8ff\",\n\t\"gold\": \"#ffd700\",\n\t\"goldenrod\": \"#daa520\",\n\t\"gray\": \"#808080\",\n\t\"green\": \"#008000\",\n\t\"greenyellow\": \"#adff2f\",\n\t\"honeydew\": \"#f0fff0\",\n\t\"hotpink\": \"#ff69b4\",\n\t\"indianred\": \"#cd5c5c\",\n\t\"indigo\": \"#4b0082\",\n\t\"ivory\": \"#fffff0\",\n\t\"khaki\": \"#f0e68c\",\n\t\"lavender\": \"#e6e6fa\",\n\t\"lavenderblush\": \"#fff0f5\",\n\t\"lawngreen\": \"#7cfc00\",\n\t\"lemonchiffon\": \"#fffacd\",\n\t\"lightblue\": \"#add8e6\",\n\t\"lightcoral\": \"#f08080\",\n\t\"lightcyan\": \"#e0ffff\",\n\t\"lightgoldenrodyellow\": \"#fafad2\",\n\t\"lightgray\": \"#d3d3d3\",\n\t\"lightgreen\": \"#90ee90\",\n\t\"lightpink\": \"#ffb6c1\",\n\t\"lightsalmon\": \"#ffa07a\",\n\t\"lightseagreen\": \"#20b2aa\",\n\t\"lightskyblue\": \"#87cefa\",\n\t\"lightslategray\": \"#778899\",\n\t\"lightsteelblue\": \"#b0c4de\",\n\t\"lightyellow\": \"#ffffe0\",\n\t\"lime\": \"#00ff00\",\n\t\"limegreen\": \"#32cd32\",\n\t\"linen\": \"#faf0e6\",\n\t\"magenta\": \"#ff00ff\",\n\t\"maroon\": \"#800000\",\n\t\"mediumaquamarine\": \"#66cdaa\",\n\t\"mediumblue\": \"#0000cd\",\n\t\"mediumorchid\": \"#ba55d3\",\n\t\"mediumpurple\": \"#9370db\",\n\t\"mediumseagreen\": \"#3cb371\",\n\t\"mediumslateblue\": \"#7b68ee\",\n\t\"mediumspringgreen\": \"#00fa9a\",\n\t\"mediumturquoise\": \"#48d1cc\",\n\t\"mediumvioletred\": \"#c71585\",\n\t\"midnightblue\": \"#191970\",\n\t\"mintcream\": \"#f5fffa\",\n\t\"mistyrose\": \"#ffe4e1\",\n\t\"moccasin\": \"#ffe4b5\",\n\t\"navajowhite\": \"#ffdead\",\n\t\"navy\": \"#000080\",\n\t\"oldlace\": \"#fdf5e6\",\n\t\"olive\": \"#808000\",\n\t\"olivedrab\": \"#6b8e23\",\n\t\"orange\": \"#ffa500\",\n\t\"orangered\": \"#ff4500\",\n\t\"orchid\": \"#da70d6\",\n\t\"palegoldenrod\": \"#eee8aa\",\n\t\"palegreen\": \"#98fb98\",\n\t\"paleturquoise\": \"#afeeee\",\n\t\"palevioletred\": \"#db7093\",\n\t\"papayawhip\": \"#ffefd5\",\n\t\"peachpuff\": \"#ffdab9\",\n\t\"peru\": \"#cd853f\",\n\t\"pink\": \"#ffc0cb\",\n\t\"plum\": \"#dda0dd\",\n\t\"powderblue\": \"#b0e0e6\",\n\t\"purple\": \"#800080\",\n\t\"rebeccapurple\": \"#663399\",\n\t\"red\": \"#ff0000\",\n\t\"rosybrown\": \"#bc8f8f\",\n\t\"royalblue\": \"#4169e1\",\n\t\"saddlebrown\": \"#8b4513\",\n\t\"salmon\": \"#fa8072\",\n\t\"sandybrown\": \"#f4a460\",\n\t\"seagreen\": \"#2e8b57\",\n\t\"seashell\": \"#fff5ee\",\n\t\"sienna\": \"#a0522d\",\n\t\"silver\": \"#c0c0c0\",\n\t\"skyblue\": \"#87ceeb\",\n\t\"slateblue\": \"#6a5acd\",\n\t\"slategray\": \"#708090\",\n\t\"snow\": \"#fffafa\",\n\t\"springgreen\": \"#00ff7f\",\n\t\"steelblue\": \"#4682b4\",\n\t\"tan\": \"#d2b48c\",\n\t\"teal\": \"#008080\",\n\t\"thistle\": \"#d8bfd8\",\n\t\"tomato\": \"#ff6347\",\n\t\"turquoise\": \"#40e0d0\",\n\t\"violet\": \"#ee82ee\",\n\t\"wheat\": \"#f5deb3\",\n\t\"white\": \"#ffffff\",\n\t\"whitesmoke\": \"#f5f5f5\",\n\t\"yellow\": \"#ffff00\",\n\t\"yellowgreen\": \"#9acd32\",\n\t\"transparent\": \"#00000000\"\n});\n//#endregion\n//#region src/colour/conversion.ts\n/**\n* Converts an object or string representation of colour to ixfx's\n* structured colour.\n* Use {@link convertToString} if you want a CSS colour string instead.\n* @param colour\n* @param destination\n*/\nfunction convert(colour, destination) {\n\tif (destination === `hsl-scalar`) {\n\t\tif (typeof colour === `string` || isHsl(colour) || isRgb(colour)) return toScalar$3(colour);\n\t} else if (destination === `hsl-absolute`) {\n\t\tif (typeof colour === `string` || isHsl(colour)) return toAbsolute$1(colour);\n\t} else if (destination === `oklch-scalar`) {\n\t\tif (typeof colour === `string` || isOkLch(colour)) return toScalar$1(colour);\n\t} else if (destination === `oklch-absolute`) {\n\t\tif (typeof colour === `string` || isOkLch(colour)) return toAbsolute(colour);\n\t} else if (destination === `srgb-8bit`) {\n\t\tif (typeof colour === `string` || isRgb(colour)) return to8bit$1(colour);\n\t} else if (destination === `srgb-scalar`) {\n\t\tif (typeof colour === `string` || isRgb(colour)) return toScalar$2(colour);\n\t} else throw new Error(`Destination '${destination}' not supported for input: ${JSON.stringify(colour)}`);\n\treturn convert(toCssColour(colour), destination);\n}\n/**\n* Like {@link convert}, but result is a CSS colour string\n* @param colour\n* @param destination\n*/\nfunction convertToString(colour, destination) {\n\treturn toCssColour(convert(colour, destination));\n}\n/**\n* Converts some kind of colour into a scalar representation. Supports oklch, hsl and srgb.\n* @param colour Colour to convert\n* @param destination Destination colour format\n*/\nfunction convertScalar(colour, destination) {\n\tif (destination === `oklch`) return convert(colour, `oklch-scalar`);\n\tif (destination === `srgb`) return convert(colour, `srgb-scalar`);\n\tif (destination === `hsl`) return convert(colour, `hsl-scalar`);\n\tthrow new Error(`Unknown destination: '${destination}'`);\n}\nfunction toCssColour(colour) {\n\tif (typeof colour === `string`) return colour;\n\tif (isHsl(colour)) return toCssString$2(colour);\n\tif (isRgb(colour)) return toCssString$1(colour);\n\tif (isOkLch(colour)) return toCssString(colour);\n\tconst asRgb = tryParseObjectToRgb(colour);\n\tif (asRgb) return toCssString$1(asRgb);\n\tconst asHsl = tryParseObjectToHsl(colour);\n\tif (asHsl) return toCssString$2(asHsl);\n\tthrow new Error(`Unknown colour format: '${JSON.stringify(colour)}'`);\n}\nfunction toHexColour(colour) {\n\tif (isHsl(colour)) return toHexString$3(colour);\n\tif (isRgb(colour)) return toHexString$2(colour);\n\tif (isOkLch(colour)) return toHexString$1(colour);\n\tif (typeof colour === `string`) {\n\t\tif (colour.startsWith(`#`)) return colour;\n\t\treturn toHexString$2(convert(colour, `srgb-8bit`));\n\t}\n\tconst asRgb = tryParseObjectToRgb(colour);\n\tif (asRgb) return toHexString$2(asRgb);\n\tconst asHsl = tryParseObjectToHsl(colour);\n\tif (asHsl) return toHexString$3(asHsl);\n\tthrow new Error(`Unknown colour format: '${JSON.stringify(colour)}'`);\n}\nfunction toLibraryColour(colour) {\n\treturn new Colorizr(toCssColour(colour));\n}\nfunction guard$1(colour) {\n\tswitch (colour.space) {\n\t\tcase `hsl`:\n\t\t\tguard$4(colour);\n\t\t\tbreak;\n\t\tcase `srgb`:\n\t\t\tguard$3(colour);\n\t\t\tbreak;\n\t\tcase `oklch`:\n\t\t\tguard$2(colour);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Unsupported colour space: '${colour.space}'`);\n\t}\n}\nfunction toColour(colourish) {\n\tif (!isColourish(colourish)) throw new Error(`Could not parse input. Expected CSS colour string or structured colour {r,g,b}, {h,s,l} etc. Got: ${JSON.stringify(colourish)}`);\n\tlet c;\n\tif (typeof colourish === `string`) c = fromCssColour(colourish);\n\telse c = colourish;\n\tif (c === void 0) throw new Error(`Could not parse input. Expected CSS colour string or structured colour {r,g,b}, {h,s,l} etc.`);\n\tguard$1(c);\n\treturn c;\n}\n/**\n* Returns a CSS-ready string\n* representation.\n* ```js\n* element.style.backgroundColor = resolveToString(`red`);\n* ```\n*\n* Tries each parameter in turn, returning the value\n* for the first that resolves. This can be useful for\n* having fallback values.\n*\n* ```js\n* // Try a CSS variable, a object property or finally fallback to red.\n* element.style.backgroundColor = toStringFirst('--some-var', opts.background, `red`);\n* ```\n* @param colours Array of colours to resolve\n*/\nfunction toStringFirst(...colours) {\n\tfor (const colour of colours) {\n\t\tif (colour === void 0) continue;\n\t\tif (colour === null) continue;\n\t\ttry {\n\t\t\treturn toCssColour(toColour(colour));\n\t\t} catch {}\n\t}\n\treturn `rebeccapurple`;\n}\nfunction rgbToHsl(rgb, scalarResult) {\n\tlet { r, g, b } = rgb;\n\tconst opacity = rgb.opacity ?? 1;\n\tif (rgb.unit === `8bit`) {\n\t\tr /= 255;\n\t\tg /= 255;\n\t\tb /= 255;\n\t}\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tlet h = (max + min) / 2;\n\tlet s = h;\n\tconst l = h;\n\tif (max === min) if (scalarResult) return scalar$3(0, 0, 0, opacity);\n\telse return absolute$1(0, 0, 0, opacity);\n\tconst d = max - min;\n\ts = l >= .5 ? d / (2 - (max + min)) : d / (max + min);\n\tswitch (max) {\n\t\tcase r:\n\t\t\th = ((g - b) / d + 0) * 60;\n\t\t\tbreak;\n\t\tcase g:\n\t\t\th = ((b - r) / d + 2) * 60;\n\t\t\tbreak;\n\t\tcase b:\n\t\t\th = ((r - g) / d + 4) * 60;\n\t\t\tbreak;\n\t}\n\tif (scalarResult) return scalar$3(h / 360, s, l, opacity);\n\telse return absolute$1(h, s * 100, l * 100, opacity);\n}\n//#endregion\n//#region src/colour/generate.ts\n/**\n* Returns a full HSL colour string (eg `hsl(20,50%,75%)`) based on a index.\n* It's useful for generating perceptually different shades as the index increments.\n*\n* ```\n* el.style.backgroundColor = goldenAgeColour(10);\n* ```\n*\n* Saturation and lightness can be specified, as numeric ranges of 0-1.\n*\n* @param saturation Saturation (0-1), defaults to 0.5\n* @param lightness Lightness (0-1), defaults to 0.75\n* @param alpha Opacity (0-1), defaults to 1.0\n* @returns HSL colour string eg `hsl(20,50%,75%)`\n*/\nconst goldenAngleColour = (index, saturation = .5, lightness = .75, alpha = 1) => {\n\tresultThrow(numberTest(index, `positive`, `index`), numberTest(saturation, `percentage`, `saturation`), numberTest(lightness, `percentage`, `lightness`), numberTest(alpha, `percentage`, `alpha`));\n\treturn toCssString$2(scalar$3(index * 137.508 % 360 / 360, saturation, lightness, alpha));\n};\n/**\n* Returns a random hue component (0..359)\n* \n* ```\n* // Generate hue\n* const h = randomHue(); // 0-359\n*\n* // Generate hue and assign as part of a HSL string\n* el.style.backgroundColor = `hsl(${randomHue(), 50%, 75%})`;\n* ```\n* @param rand\n* @returns\n*/\nconst randomHue = (rand = Math.random) => rand() * 360;\n//#endregion\n//#region src/colour/interpolate.ts\n/**\n* Returns a function to interpolate between colours, with results as a structured {@link Colour} object.\n* ```js\n* const i = interpolator([`orange`, `yellow`, `red`]);\n*\n* // Get a random colour on the above spectrum\n* i(Math.random());\n* ```\n*\n* Results will vary depending on the colour space used, play with the options.\n* When using a hue-based colour space, the `hue` option sets the logic for how hue values wrap.\n*\n* ```js\n* interpolator([`orange`, `yellow`, `red`], { space: `hsl`, hue: `longer })\n* ```\n*\n* Example: Draw the interpolation as a spectrum on a canvas, where each pixel is one step\n* ```js\n* let v = 0;\n* let incrementBy = 0.01;\n* while (v <= 1) {\n* // Get colour at this interpolation point 0..1\n* const colour = fn(v);\n* // Convert to a CSS string\n* ctx.fillStyle = Colour.toCssColour(colour);\n* // Draw a 1px wide rect, and shuffle along to the next x position\n* ctx.fillRect(x, y, 1, h);\n* x += 1;\n* v += incrementBy;\n* }\n* ```\n* @param colours Colours to interpolate between\n* @param opts Options for interpolation\n* @returns Function that interpolates based on an amount, returning a structured Colour\n*/\nfunction interpolator(colours, opts = {}) {\n\tconst direction = opts.direction ?? `shorter`;\n\tconst destination = opts.destination ?? `oklch-scalar`;\n\tconst space = opts.space ?? `oklch`;\n\tconst ranges = interpolateInit(colours, space);\n\tconst rangeInterpolators = ranges.map((range) => interpolatorDual(range[0], range[1], {\n\t\tspace,\n\t\tdirection,\n\t\tdestination\n\t}));\n\tconst asTargetDestination = colours.map((c) => convert(c, destination));\n\treturn (amt) => {\n\t\tif (amt >= 1) return asTargetDestination.at(-1);\n\t\tif (amt <= 0) return asTargetDestination.at(0);\n\t\tconst s = scaleClamped(amt, 0, 1, 0, ranges.length);\n\t\tconst index = Math.floor(s);\n\t\tconst amtAdjusted = s - index;\n\t\tconst ri = rangeInterpolators[index];\n\t\treturn ri(amtAdjusted);\n\t};\n}\n/**\n* Returns a set of pairwise colours, convert to the destination colour space in scalar form\n* @param colours\n* @param destination\n* @returns Array of pairwise colours, converted to destination scalar\n*/\nfunction interpolateInit(colours, destination = `hsl`) {\n\tif (!Array.isArray(colours)) throw new Error(`Param 'colours' is not an array as expected. Got: ${typeof colours}`);\n\tif (colours.length < 2) throw new Error(`Param 'colours' should be at least two in length. Got: ${colours.length}`);\n\treturn [...pairwise(colours.map((colour) => convertScalar(colour, destination)))];\n}\n/**\n* Returns a CSS `linear-gradient` with stops corresponding to the given list of `colours`.\n* ```js\n* element.style.background = Colour.cssLinearGradient(['red','green','blue']);\n* ```\n* @param colours\n* @returns A 'linear-gradient' string for use in CSS, eg for background.\n*/\nfunction cssLinearGradient(colours) {\n\treturn `linear-gradient(to right, ${colours.map((c) => toCssColour(c)).join(`, `)})`;\n}\n/**\n* Returns a function that interpolates between two colours. Returns string colour values.\n* If you want the result as a structured colour, use {@link interpolatorDual} instead.\n*\n* By default takes a shorter direction and uses the OkLCH colourspace.\n* ```js\n* const i = interpolator(`blue`, `red`);\n* i(0.5); // Get the colour at 50%, as a string.\n* ```\n*\n* To work with structured colour values, use one of the space's `interpolate` functions.\n*\n* If you want to create discrete steps, consider {@link createSteps} or {@link scale}.\n*\n* @param colourA First colour\n* @param colourB Second colour\n* @param options Interpolation options. By default uses shorter direction and OkLCH colour space.\n*/\nfunction interpolatorDualToString(colourA, colourB, options = {}) {\n\tconst f = interpolatorDual(colourA, colourB, options);\n\treturn (amount) => toCssColour(f(amount));\n}\n/**\n* Returns a function that interpolates between two colours. Returns structured colour values.\n* If you want the result as a ready-to-use CSS string, use {@link interpolatorDualToString} instead.\n*\n* By default takes a shorter direction and uses the OkLCH colourspace.\n* ```js\n* const i = interpolator(`blue`, `red`);\n* i(0.5); // Get the colour at 50%, as a Colour structure.\n* ```\n*\n* If you want to create discrete steps, consider {@link createSteps} or {@link scale}.\n* @param colourA First colour\n* @param colourB Second colour\n* @param options Interpolation options. By default uses shorter direction and OkLCH colour space.\n* @returns Function that interpolates between two colours, returning a structured Colour\n*/\nfunction interpolatorDual(colourA, colourB, options = {}) {\n\tconst space = options.space ?? `oklch`;\n\tconst direction = options.direction ?? `shorter`;\n\tconst destination = options.destination ?? `oklch-scalar`;\n\tlet inter;\n\tswitch (space) {\n\t\tcase `hsl`: {\n\t\t\tconst hslInter = interpolator$3(convert(colourA, `hsl-scalar`), convert(colourB, `hsl-scalar`), direction);\n\t\t\tinter = (amount) => {\n\t\t\t\treturn convert(hslInter(amount), destination);\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase `srgb`: {\n\t\t\tconst srgbInter = interpolator$2(convert(colourA, `srgb-scalar`), convert(colourB, `srgb-scalar`));\n\t\t\tinter = (amount) => {\n\t\t\t\treturn convert(srgbInter(amount), destination);\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tconst oklchInter = interpolator$1(convert(colourA, `oklch-scalar`), convert(colourB, `oklch-scalar`), direction);\n\t\t\tinter = (amount) => {\n\t\t\t\treturn convert(oklchInter(amount), destination);\n\t\t\t};\n\t\t}\n\t}\n\treturn (amount) => inter(amount);\n}\n/**\n* Produces a stepped scale of colours.\n*\n* Builds off {@link createSteps} which can only step between two colours.\n*\n* ```js\n* // A scale of from red to green, with three colours in-between\n* const steps = Colour.scale([ `red`, `green` ], { stepsBetween: 3 });\n* for (const step of steps) {\n* // A CSS colour string\n* }\n* ```\n*\n* {@link cssLinearGradient} can produce a smooth gradient in CSS on the basis\n* of the stepped colours.\n* @param colours\n* @param opts\n* @returns Array of colours in string form\n*/\nfunction scale(colours, opts = {}) {\n\tconst direction = opts.direction ?? `shorter`;\n\tconst space = opts.space ?? `oklch`;\n\tconst pieces = interpolateInit(colours, space);\n\tlet stepsBetween = 0;\n\tif (typeof opts.stepsBetween === `number`) {\n\t\tstepsBetween = opts.stepsBetween;\n\t\tif (stepsBetween < 1) throw new Error(`Param 'stepsBetween' must be at least 1`);\n\t} else if (typeof opts.stepsTotal === `number`) {\n\t\tif (opts.stepsTotal <= colours.length) throw new Error(`Param 'stepsTotal' must be greater than number of provided colour stops (${colours.length}) +1 per stop`);\n\t\tconst totalSteps = opts.stepsTotal - colours.length;\n\t\tstepsBetween = Math.floor(totalSteps / pieces.length);\n\t}\n\tconst steps = pieces.map((piece) => {\n\t\tconst pieceSteps = createSteps(piece[0], piece[1], {\n\t\t\tsteps: stepsBetween,\n\t\t\tspace,\n\t\t\tdirection,\n\t\t\texclusive: true\n\t\t});\n\t\tpieceSteps.push(piece[1]);\n\t\treturn pieceSteps;\n\t});\n\tconst firstPiece = pieces[0];\n\tsteps.unshift([firstPiece[0]]);\n\treturn steps.flat().map((c) => toCssColour(c));\n}\nfunction createSteps(a, b, options = {}) {\n\tconst exclusive = options.exclusive ?? false;\n\tconst steps = options.steps ?? 5;\n\tconst space = options.space ?? `oklch`;\n\tconst direction = options.direction ?? `shorter`;\n\tif (!exclusive && steps < 2) throw new Error(`Param 'steps' should be at least 2 when 'exclusive' is false`);\n\tif (exclusive && steps < 1) throw new Error(`Param 'steps' should be at least 1 when 'exlusive' is true`);\n\tconst aa = convertScalar(a, space);\n\tconst bb = convertScalar(b, space);\n\tlet inter;\n\tswitch (space) {\n\t\tcase `hsl`:\n\t\t\tinter = interpolator$3(aa, bb, direction);\n\t\t\tbreak;\n\t\tcase `oklch`:\n\t\t\tinter = interpolator$1(aa, bb, direction);\n\t\t\tbreak;\n\t\tcase `srgb`:\n\t\t\tinter = interpolator$2(aa, bb);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Colour space '${space}' not supported for interpolation.`);\n\t}\n\tif (!inter) throw new Error(`Could not create interpolator for space: ${space}`);\n\tlet stepBy = 0;\n\tlet startAt = 0;\n\tlet endAt = 1;\n\tif (exclusive) {\n\t\tstepBy = 1 / (steps + 1);\n\t\tstartAt = stepBy;\n\t\tendAt = 1 - stepBy;\n\t} else stepBy = 1 / (steps - 1);\n\tconst results = [];\n\tfor (let interpolateAmount = startAt; interpolateAmount <= endAt; interpolateAmount += stepBy) results.push(inter(interpolateAmount));\n\treturn results;\n}\n//#endregion\n//#region src/colour/math.ts\n/**\n* Multiplies the opacity of a colour by `amount`, returning a computed CSS colour.\n*\n* ```js\n* multiplyOpacity(`red`, 0.5); // Returns a colour string\n* ```\n*\n* For example, to half the opacity, use `amount: 0.5`.\n* Clamps the result to ensure it's between 0..1\n* @param colourish Colour\n* @param amount Amount\n*/\nfunction multiplyOpacity(colourish, amount) {\n\treturn withOpacity(colourish, (o) => clamp(o * amount));\n}\n/**\n* Does a computation with the opacity of a colour, returning colour.\n*\n* Passes operation to `HslSpace` or `SrgbSpace` depending on space of `colourish`.\n* @param colourish Colour\n* @param fn Function that takes original opacity as input and returns output opacity\n*/\nfunction withOpacity(colourish, fn) {\n\tconst colour = toColour(colourish);\n\tlet result;\n\tswitch (colour.space) {\n\t\tcase `hsl`:\n\t\t\tresult = withOpacity$3(colour, fn);\n\t\t\tbreak;\n\t\tcase `srgb`:\n\t\t\tresult = withOpacity$2(colour, fn);\n\t\t\tbreak;\n\t\tcase `oklch`:\n\t\t\tresult = withOpacity$1(colour, fn);\n\t\t\tbreak;\n\t\tdefault: throw new Error(`Unknown space: '${colour.space}'. Expected hsl, srgb, oklch`);\n\t}\n\tif (!result) throw new Error(`Is colour in correct form?`);\n\tif (typeof colourish === `string`) return toCssColour(result);\n\treturn result;\n}\nfunction setOpacity(colourish, opacity) {\n\tconst colour = toColour(colourish);\n\tcolour.opacity = opacity;\n\tif (typeof colourish === `string`) return toCssColour(colour);\n\treturn colour;\n}\n//#endregion\n//#region src/colour/to-integer.ts\n/**\n* Encode 8-bit RGB values into a 24-bit value (0...16_777_215)\n* \n* Assumes RGB values are within 0..255 range\n* @param rgb \n* @returns \n*/\nfunction encodeRgbTo24Bit(rgb) {\n\treturn rgb.r << 16 | rgb.g << 8 | rgb.b;\n}\n/**\n* Decode a 24-bit number (0...16_777_215) into 8-bit RGB\n* @param colour \n* @returns \n*/\nfunction decodeRgbFrom24Bit(colour) {\n\tif (colour > 16777215) throw new TypeError(`Param 'colour' is out of range. Expected max value of 16_777_215, got ${colour}`);\n\treturn {\n\t\tr: colour >> 16 & 255,\n\t\tg: colour >> 8 & 255,\n\t\tb: colour & 255,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\n/**\n* Encodes 8-bit RGB value into 16-bit RGB565 (0..65_535)\n* 5-bit are used for R & B channels, 6 bits for G\n* \n* Read more: https://rgbcolorpicker.com/565\n* @param rgb \n* @returns \n*/\nfunction encodeRgbTo16Bit565(rgb) {\n\tconst r = rgb.r >> 3 & 31;\n\tconst g = rgb.g >> 2 & 63;\n\tconst b = rgb.b >> 3 & 31;\n\treturn r << 11 | g << 5 | b;\n}\n/**\n* Decodes 8-bit RGB value from a 16-bit RGB565 value (0...65_535)\n* Read more: https://rgbcolorpicker.com/565\n* @param colour \n* @returns \n*/\nfunction decodeRgbFrom16Bit565(colour) {\n\tif (colour > 65535) throw new TypeError(`Param 'colour' is out of range. Expected max: 65_535. Got: ${colour}`);\n\treturn {\n\t\tr: (colour >> 11 & 31) << 3,\n\t\tg: (colour >> 5 & 63) << 2,\n\t\tb: (colour & 31) << 3,\n\t\tunit: `8bit`,\n\t\tspace: `srgb`\n\t};\n}\n//#endregion\n//#region src/colour/ycbcr.ts\nvar ycbcr_exports = /* @__PURE__ */ __exportAll({\n\teightBit: () => eightBit,\n\tfromCss: () => fromCss,\n\tfromHexString: () => fromHexString,\n\tfromSrgTo8bit: () => fromSrgTo8bit,\n\tguard: () => guard,\n\tscalar: () => scalar,\n\tto8bit: () => to8bit,\n\ttoHexString: () => toHexString,\n\ttoScalar: () => toScalar,\n\ttoSrgb8bit: () => toSrgb8bit\n});\n/**\n* Creates a YCbCr8bit value from 8bit (0..255) values\n* @param y Luma 0..255\n* @param cb Chroma blue 0..255\n* @param cr Chroma red 0..255\n* @param opacity 0..255\n* @returns YCbCr8bit\n*/\nfunction eightBit(y = 100, cb = 100, cr = 100, opacity = 255) {\n\tconst rgb = {\n\t\tunit: `8bit`,\n\t\tspace: `ycbcr`,\n\t\ty,\n\t\tcb,\n\t\tcr,\n\t\topacity\n\t};\n\tguard(rgb);\n\treturn rgb;\n}\n/**\n* Creates a YCbCr8bit value from scalar (0..1) values\n* @param y Luma 0..1\n* @param cb Chroma blue 0..1\n* @param cr Chroma red 0..1\n* @param opacity 0..1\n* @returns YCbCrScalar\n*/\nfunction scalar(y = .5, cb = .5, cr = .5, opacity = 1) {\n\tconst rgb = {\n\t\tunit: `scalar`,\n\t\tspace: `ycbcr`,\n\t\ty,\n\t\tcb,\n\t\tcr,\n\t\topacity\n\t};\n\tguard(rgb);\n\treturn rgb;\n}\n/**\n* Converts from scalar or 8bit RGB to YCbCr8bit\n* @param rgb\n* @returns\n*/\nfunction fromSrgTo8bit(rgb) {\n\tconst { r, g, b, opacity } = to8bit$1(rgb);\n\treturn eightBit(.299 * r + .587 * g + .114 * b + 0, -.169 * r + -.331 * g + .5 * b + 128, .5 * r + -.419 * g + -.081 * b + 128, opacity);\n}\nfunction toSrgb8bit(ycbcr) {\n\tconst { y, cb, cr, opacity } = to8bit(ycbcr);\n\treturn {\n\t\tunit: `8bit`,\n\t\tspace: `srgb`,\n\t\tr: 1 * y + 0 * (cb - 128) + 1.4 * (cr - 128),\n\t\tg: 1 * y + -.343 * (cb - 128) + -.711 * (cr - 128),\n\t\tb: 1 * y + 1.765 * (cb - 128) + 0 * (cr - 128),\n\t\topacity\n\t};\n}\n/**\n* Returns a YCbCr8bit format from either scalar or 8bit.\n* If the input is already 8bit, it is returned as-is.\n* @param ycbcr 8bit or scalar YCbCr value\n* @returns YCbCr8bit\n*/\nfunction to8bit(ycbcr) {\n\tguard(ycbcr);\n\tif (ycbcr.unit === `8bit`) return ycbcr;\n\tconst { y, cb, cr, opacity } = ycbcr;\n\treturn eightBit(y * 255, cb * 255, cr * 255, typeof opacity === `number` ? opacity * 255 : 255);\n}\nfunction fromHexString(hexString, options = {}) {\n\treturn fromSrgTo8bit(fromHexString$2(hexString, false));\n}\nfunction fromCss(value, options = {}) {\n\tconst scalar = options.scalar ?? false;\n\tconst rgb = fromCss$2(value, {\n\t\tfallbackString: options.fallbackString,\n\t\tscalar: false,\n\t\tensureSafe: options.ensureSafe\n\t});\n\tif (scalar) return toScalar(fromSrgTo8bit(rgb));\n\telse return fromSrgTo8bit(rgb);\n}\nfunction toScalar(colour) {\n\tif (typeof colour === `string`) return fromCss(colour, { scalar: true });\n\tif (isHsl(colour) || isRgb(colour)) return toScalar(fromSrgTo8bit(toScalar$2(colour)));\n\tguard(colour);\n\tif (colour.unit === `scalar`) return colour;\n\tconst { y, cb, cr, opacity } = colour;\n\treturn scalar(y / 255, cb / 255, cr / 255, typeof opacity === `number` ? opacity / 255 : 1);\n}\nfunction guard(rgb) {\n\tconst { y, cb, cr, opacity, space, unit } = rgb;\n\tif (space !== `ycbcr`) throw new Error(`Space is expected to be 'ycbcr'. Got: ${space}`);\n\tif (unit === `8bit`) resultThrow(numberInclusiveRangeTest(y, 0, 255, `y`), numberInclusiveRangeTest(cb, 0, 255, `cb`), numberInclusiveRangeTest(cr, 0, 255, `cr`), () => {\n\t\tif (typeof opacity === `number`) return numberInclusiveRangeTest(opacity, 0, 255, `opacity`);\n\t});\n\telse if (unit === `scalar`) resultThrow(numberTest(y, `percentage`, `y`), numberTest(cb, `percentage`, `cb`), numberTest(cr, `percentage`, `cr`), () => {\n\t\tif (typeof opacity === `number`) return numberTest(opacity, `percentage`, `opacity`);\n\t});\n\telse throw new Error(`Unit is expected to be '8bit' or 'scalar'. Got: ${unit}`);\n}\n/**\n* Converts a YCbCr colour to a RGB hex string.\n* @param ycbcr\n* @returns\n*/\nfunction toHexString(ycbcr) {\n\treturn toHexString$2(toSrgb8bit(ycbcr));\n}\n//#endregion\n//#region src/colour/index.ts\nvar colour_exports = /* @__PURE__ */ __exportAll({\n\tHslSpace: () => hsl_exports,\n\tOklchSpace: () => oklch_exports,\n\tSrgbSpace: () => srgb_exports,\n\tYCbCrSpace: () => ycbcr_exports,\n\tconvert: () => convert,\n\tconvertScalar: () => convertScalar,\n\tconvertToString: () => convertToString,\n\tcreateSteps: () => createSteps,\n\tcssDefinedHexColours: () => cssDefinedHexColours,\n\tcssLinearGradient: () => cssLinearGradient,\n\tdecodeRgbFrom16Bit565: () => decodeRgbFrom16Bit565,\n\tdecodeRgbFrom24Bit: () => decodeRgbFrom24Bit,\n\tencodeRgbTo16Bit565: () => encodeRgbTo16Bit565,\n\tencodeRgbTo24Bit: () => encodeRgbTo24Bit,\n\tfromCssColour: () => fromCssColour,\n\tgoldenAngleColour: () => goldenAngleColour,\n\tguard: () => guard$1,\n\tinterpolator: () => interpolator,\n\tinterpolatorDual: () => interpolatorDual,\n\tinterpolatorDualToString: () => interpolatorDualToString,\n\tisColourish: () => isColourish,\n\tisHsl: () => isHsl,\n\tisOkLch: () => isOkLch,\n\tisRgb: () => isRgb,\n\tmultiplyOpacity: () => multiplyOpacity,\n\trandomHue: () => randomHue,\n\tresolveCss: () => resolveCss,\n\trgbToHsl: () => rgbToHsl,\n\tscale: () => scale,\n\tsetOpacity: () => setOpacity,\n\ttoColour: () => toColour,\n\ttoCssColour: () => toCssColour,\n\ttoHexColour: () => toHexColour,\n\ttoLibraryColour: () => toLibraryColour,\n\ttoStringFirst: () => toStringFirst,\n\ttryParseObjectToHsl: () => tryParseObjectToHsl,\n\ttryParseObjectToRgb: () => tryParseObjectToRgb,\n\twithOpacity: () => withOpacity\n});\n//#endregion\nexport { resolveCss as A, tryParseObjectToRgb as B, toColour as C, toStringFirst as D, toLibraryColour as E, isColourish as F, isHsl as I, isOkLch as L, srgb_exports as M, to8bit$1 as N, cssDefinedHexColours as O, hsl_exports as P, isRgb as R, rgbToHsl as S, toHexColour as T, randomHue as _, encodeRgbTo16Bit565 as a, convertToString as b, setOpacity as c, cssLinearGradient as d, interpolator as f, goldenAngleColour as g, scale as h, decodeRgbFrom24Bit as i, oklch_exports as j, fromCssColour as k, withOpacity as l, interpolatorDualToString as m, ycbcr_exports as n, encodeRgbTo24Bit as o, interpolatorDual as p, decodeRgbFrom16Bit565 as r, multiplyOpacity as s, colour_exports as t, createSteps as u, convert as v, toCssColour as w, guard$1 as x, convertScalar as y, tryParseObjectToHsl as z };\n"],"x_google_ignoreList":[0,1,2,3,4,5],"mappings":"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"}