color-elements 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +49 -12
  2. package/_build/copy-config.js +11 -1
  3. package/_build/copy-config.json +2 -2
  4. package/_build/eleventy.js +27 -1
  5. package/_build/filters-extra.js +3 -0
  6. package/_includes/component.njk +69 -0
  7. package/_includes/partials/_nav-links.njk +19 -0
  8. package/_redirects +9 -2
  9. package/assets/css/style.css +78 -1
  10. package/assets/js/index.js +11 -10
  11. package/data/components.json +12 -0
  12. package/debug.html +447 -0
  13. package/eslint.config.js +316 -0
  14. package/index.js +10 -4
  15. package/logo.svg +22 -44
  16. package/package.json +12 -5
  17. package/src/channel-picker/README.md +103 -0
  18. package/src/channel-picker/channel-picker.css +31 -0
  19. package/src/channel-picker/channel-picker.js +168 -0
  20. package/src/channel-picker/channel-picker.webp +0 -0
  21. package/src/channel-slider/README.md +165 -0
  22. package/src/channel-slider/channel-slider.css +61 -0
  23. package/src/channel-slider/channel-slider.js +287 -0
  24. package/src/channel-slider/channel-slider.webp +0 -0
  25. package/src/color-chart/README.md +129 -0
  26. package/src/color-chart/color-chart-global.css +97 -0
  27. package/src/color-chart/color-chart.css +112 -0
  28. package/src/color-chart/color-chart.js +441 -0
  29. package/src/color-chart/color-chart.webp +0 -0
  30. package/src/color-inline/README.md +72 -0
  31. package/{color-swatch/color-swatch.css → src/color-inline/color-inline.css} +11 -4
  32. package/src/color-inline/color-inline.js +85 -0
  33. package/src/color-inline/color-inline.webp +0 -0
  34. package/src/color-inline/style.css +14 -0
  35. package/src/color-picker/README.md +150 -0
  36. package/src/color-picker/color-picker.css +35 -0
  37. package/src/color-picker/color-picker.js +251 -0
  38. package/src/color-picker/color-picker.webp +0 -0
  39. package/src/color-scale/README.md +75 -0
  40. package/src/color-scale/color-scale.css +40 -0
  41. package/src/color-scale/color-scale.js +164 -0
  42. package/src/color-scale/color-scale.webp +0 -0
  43. package/src/color-slider/README.md +220 -0
  44. package/src/color-slider/color-slider.css +174 -0
  45. package/src/color-slider/color-slider.js +320 -0
  46. package/src/color-slider/color-slider.webp +0 -0
  47. package/src/color-swatch/README.md +359 -0
  48. package/src/color-swatch/color-swatch.css +230 -0
  49. package/src/color-swatch/color-swatch.js +252 -0
  50. package/src/color-swatch/color-swatch.webp +0 -0
  51. package/src/common/color-element.js +86 -0
  52. package/src/common/dom.js +61 -0
  53. package/src/common/util.js +55 -0
  54. package/src/gamut-badge/README.md +145 -0
  55. package/src/gamut-badge/gamut-badge.css +78 -0
  56. package/src/gamut-badge/gamut-badge.js +121 -0
  57. package/src/gamut-badge/gamut-badge.webp +0 -0
  58. package/src/index.js.njk +7 -0
  59. package/src/space-picker/README.md +121 -0
  60. package/src/space-picker/space-picker.css +23 -0
  61. package/src/space-picker/space-picker.js +213 -0
  62. package/src/space-picker/space-picker.webp +0 -0
  63. package/src/src.json +3 -0
  64. package/_data/eleventyComputed.11tydata.js +0 -29
  65. package/color-gamut/README.md +0 -75
  66. package/color-gamut/color-gamut.js +0 -172
  67. package/color-gamut/style.css +0 -32
  68. package/color-slider/README.md +0 -84
  69. package/color-slider/color-slider.js +0 -79
  70. package/color-slider/style.css +0 -65
  71. package/color-swatch/color-swatch.js +0 -79
  72. package/color-swatch/index.njk +0 -40
  73. package/common/attributes.js +0 -68
  74. package/common/color.js +0 -10
  75. package/css-color/css-color.js +0 -256
  76. package/css-color/index.njk +0 -43
  77. package/css-color/style.css +0 -67
  78. package/lib/README.md +0 -4
  79. package/lib/colorjs.io/LICENSE +0 -21
  80. package/lib/colorjs.io/README.json +0 -3
  81. package/lib/colorjs.io/README.md +0 -257
  82. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  83. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  84. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  85. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  86. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  88. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  90. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  94. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  96. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  98. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  100. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  101. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  102. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  103. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  104. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  105. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  106. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  107. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  108. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  109. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  110. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  111. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  112. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  113. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  114. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  115. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  116. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  117. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  118. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  119. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  120. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  121. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  122. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  123. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  124. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  125. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  126. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  127. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  129. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  130. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  131. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  133. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  134. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  135. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  136. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  137. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  138. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  139. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  140. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  141. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  142. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  143. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  144. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  145. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  147. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  148. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  149. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  150. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  151. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  152. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  153. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  154. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  155. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  156. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  157. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  158. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  159. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  160. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  161. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  162. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  163. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  164. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  165. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  166. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  167. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  168. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  169. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  170. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  171. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  172. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  173. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  174. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  175. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  176. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  177. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  178. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  179. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  180. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  181. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  182. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  183. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  184. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  185. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  186. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  187. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  188. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  189. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  190. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  191. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  192. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  193. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  194. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  195. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  196. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  197. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  198. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  199. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  200. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  201. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  202. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  203. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  204. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  205. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  206. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  207. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  208. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  209. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  210. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  211. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  212. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  213. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  214. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  215. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  216. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  217. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  218. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  219. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  220. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  221. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  222. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  223. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  224. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  225. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  226. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  227. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  228. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  229. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  230. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  231. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  232. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  233. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  234. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  235. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  236. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  237. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  238. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  239. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  240. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  241. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  242. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  243. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  244. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  246. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  247. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  248. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  249. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  250. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  251. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  252. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  271. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  272. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  273. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  274. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  275. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  276. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  277. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  278. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  279. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  280. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  281. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  282. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  283. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  284. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  285. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  286. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  287. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  288. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  289. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  290. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  291. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  292. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  293. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  294. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  295. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  297. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  298. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.cjs +0 -5759
  301. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  302. package/lib/colorjs.io/dist/color.global.js +0 -5760
  303. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  304. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  305. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  306. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  307. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  308. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  309. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  310. package/lib/colorjs.io/dist/color.js +0 -5755
  311. package/lib/colorjs.io/dist/color.js.map +0 -1
  312. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  313. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  314. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  315. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  316. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  317. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  318. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  319. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  320. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  321. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  322. package/lib/colorjs.io/dist/color.min.js +0 -2
  323. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  324. package/lib/colorjs.io/package.json +0 -113
  325. package/lib/colorjs.io/src/CATs.js +0 -131
  326. package/lib/colorjs.io/src/adapt.js +0 -62
  327. package/lib/colorjs.io/src/angles.js +0 -44
  328. package/lib/colorjs.io/src/chromaticity.js +0 -33
  329. package/lib/colorjs.io/src/clone.js +0 -7
  330. package/lib/colorjs.io/src/color.js +0 -201
  331. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  332. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  333. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  334. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  335. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  336. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  337. package/lib/colorjs.io/src/contrast/index.js +0 -6
  338. package/lib/colorjs.io/src/contrast.js +0 -28
  339. package/lib/colorjs.io/src/defaults.js +0 -12
  340. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  341. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  342. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  343. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  344. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  345. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  346. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  347. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  348. package/lib/colorjs.io/src/deltaE.js +0 -19
  349. package/lib/colorjs.io/src/display.js +0 -83
  350. package/lib/colorjs.io/src/distance.js +0 -21
  351. package/lib/colorjs.io/src/equals.js +0 -10
  352. package/lib/colorjs.io/src/get.js +0 -11
  353. package/lib/colorjs.io/src/getAll.js +0 -20
  354. package/lib/colorjs.io/src/getColor.js +0 -36
  355. package/lib/colorjs.io/src/hooks.js +0 -37
  356. package/lib/colorjs.io/src/inGamut.js +0 -25
  357. package/lib/colorjs.io/src/index-fn.js +0 -28
  358. package/lib/colorjs.io/src/index.js +0 -38
  359. package/lib/colorjs.io/src/interpolation.js +0 -222
  360. package/lib/colorjs.io/src/keywords.js +0 -158
  361. package/lib/colorjs.io/src/luminance.js +0 -27
  362. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  363. package/lib/colorjs.io/src/parse.js +0 -198
  364. package/lib/colorjs.io/src/rgbspace.js +0 -64
  365. package/lib/colorjs.io/src/serialize.js +0 -86
  366. package/lib/colorjs.io/src/set.js +0 -33
  367. package/lib/colorjs.io/src/setAll.js +0 -12
  368. package/lib/colorjs.io/src/space-accessors.js +0 -86
  369. package/lib/colorjs.io/src/space.js +0 -440
  370. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  371. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  372. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  373. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  374. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  375. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  376. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  377. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  378. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  379. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  380. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  381. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  382. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  383. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  384. package/lib/colorjs.io/src/spaces/index.js +0 -8
  385. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  386. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  387. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  388. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  389. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  390. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  391. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  392. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  393. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  394. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  395. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  396. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  397. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  398. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  399. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  400. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  401. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  402. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  403. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  404. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  405. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  406. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  407. package/lib/colorjs.io/src/to.js +0 -26
  408. package/lib/colorjs.io/src/toGamut.js +0 -310
  409. package/lib/colorjs.io/src/util.js +0 -254
  410. package/lib/colorjs.io/src/variations.js +0 -14
  411. package/lib/colorjs.io/types/index.d.cts +0 -4
  412. package/lib/colorjs.io/types/index.d.ts +0 -42
  413. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  414. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  415. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  416. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  417. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  418. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  419. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  420. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  421. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  422. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  423. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  424. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  425. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  426. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  427. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  428. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  429. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  430. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  431. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  432. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  433. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  434. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  435. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  436. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  437. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  438. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  439. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  440. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  441. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  442. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  443. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  444. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  445. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  446. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  447. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  448. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  449. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  450. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  451. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  453. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  454. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  455. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  456. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  457. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  458. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  459. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  460. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  471. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  472. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  473. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  478. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  479. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  480. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  481. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  482. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  483. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  484. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  485. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  486. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  487. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  488. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  489. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  490. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  491. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  492. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  493. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  494. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  495. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  496. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  497. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  498. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
@@ -1,362 +0,0 @@
1
- import ColorSpace from "../space.js";
2
- import {multiplyMatrices, interpolate, copySign, spow, zdiv, bisectLeft} from "../util.js";
3
- import {constrain} from "../angles.js";
4
- import xyz_d65 from "./xyz-d65.js";
5
- import {WHITES} from "../adapt.js";
6
-
7
- const white = WHITES.D65;
8
- const adaptedCoef = 0.42;
9
- const adaptedCoefInv = 1 / adaptedCoef;
10
- const tau = 2 * Math.PI;
11
-
12
- const cat16 = [
13
- [ 0.401288, 0.650173, -0.051461 ],
14
- [ -0.250268, 1.204414, 0.045854 ],
15
- [ -0.002079, 0.048952, 0.953127 ],
16
- ];
17
-
18
- const cat16Inv = [
19
- [1.8620678550872327, -1.0112546305316843, 0.14918677544445175],
20
- [0.38752654323613717, 0.6214474419314753, -0.008973985167612518],
21
- [-0.015841498849333856, -0.03412293802851557, 1.0499644368778496],
22
- ];
23
-
24
- const m1 = [
25
- [460.0, 451.0, 288.0],
26
- [460.0, -891.0, -261.0],
27
- [460.0, -220.0, -6300.0],
28
- ];
29
-
30
- const surroundMap = {
31
- dark: [0.8, 0.525, 0.8],
32
- dim: [0.9, 0.59, 0.9],
33
- average: [1, 0.69, 1],
34
- };
35
-
36
- const hueQuadMap = {
37
- // Red, Yellow, Green, Blue, Red
38
- h: [20.14, 90.00, 164.25, 237.53, 380.14],
39
- e: [0.8, 0.7, 1.0, 1.2, 0.8],
40
- H: [0.0, 100.0, 200.0, 300.0, 400.0],
41
- };
42
-
43
- const rad2deg = 180 / Math.PI;
44
- const deg2rad = Math.PI / 180;
45
-
46
- export function adapt (coords, fl) {
47
- const temp = coords.map(c => {
48
- const x = spow(fl * Math.abs(c) * 0.01, adaptedCoef);
49
- return 400 * copySign(x, c) / (x + 27.13);
50
- });
51
- return temp;
52
- }
53
-
54
- export function unadapt (adapted, fl) {
55
- const constant = 100 / fl * (27.13 ** adaptedCoefInv);
56
- return adapted.map(c => {
57
- const cabs = Math.abs(c);
58
- return copySign(constant * spow(cabs / (400 - cabs), adaptedCoefInv), c);
59
- });
60
- }
61
-
62
- export function hueQuadrature (h) {
63
- let hp = constrain(h);
64
- if (hp <= hueQuadMap.h[0]) {
65
- hp += 360;
66
- }
67
-
68
- const i = bisectLeft(hueQuadMap.h, hp) - 1;
69
- const [hi, hii] = hueQuadMap.h.slice(i, i + 2);
70
- const [ei, eii] = hueQuadMap.e.slice(i, i + 2);
71
- const Hi = hueQuadMap.H[i];
72
-
73
- const t = (hp - hi) / ei;
74
- return Hi + (100 * t) / (t + (hii - hp) / eii);
75
- }
76
-
77
- export function invHueQuadrature (H) {
78
- let Hp = ((H % 400 + 400) % 400);
79
- const i = Math.floor(0.01 * Hp);
80
- Hp = Hp % 100;
81
- const [hi, hii] = hueQuadMap.h.slice(i, i + 2);
82
- const [ei, eii] = hueQuadMap.e.slice(i, i + 2);
83
-
84
- return constrain(
85
- (Hp * (eii * hi - ei * hii) - 100 * hi * eii) /
86
- (Hp * (eii - ei) - 100 * eii),
87
- );
88
- }
89
-
90
- export function environment (
91
- refWhite,
92
- adaptingLuminance,
93
- backgroundLuminance,
94
- surround,
95
- discounting,
96
- ) {
97
-
98
- const env = {};
99
-
100
- env.discounting = discounting;
101
- env.refWhite = refWhite;
102
- env.surround = surround;
103
- const xyzW = refWhite.map(c => {
104
- return c * 100;
105
- });
106
-
107
- // The average luminance of the environment in `cd/m^2cd/m` (a.k.a. nits)
108
- env.la = adaptingLuminance;
109
- // The relative luminance of the nearby background
110
- env.yb = backgroundLuminance;
111
- // Absolute luminance of the reference white.
112
- const yw = xyzW[1];
113
-
114
- // Cone response for reference white
115
- const rgbW = multiplyMatrices(cat16, xyzW);
116
-
117
- // Surround: dark, dim, and average
118
- surround = surroundMap[env.surround];
119
- const f = surround[0];
120
- env.c = surround[1];
121
- env.nc = surround[2];
122
-
123
- const k = 1 / (5 * env.la + 1);
124
- const k4 = k ** 4;
125
-
126
- // Factor of luminance level adaptation
127
- env.fl = (k4 * env.la + 0.1 * (1 - k4) * (1 - k4) * Math.cbrt(5 * env.la));
128
- env.flRoot = env.fl ** 0.25;
129
-
130
- env.n = env.yb / yw;
131
- env.z = 1.48 + Math.sqrt(env.n);
132
- env.nbb = 0.725 * (env.n ** -0.2);
133
- env.ncb = env.nbb;
134
-
135
- // Degree of adaptation calculating if not discounting
136
- // illuminant (assumed eye is fully adapted)
137
- const d = (discounting) ?
138
- 1 :
139
- Math.max(
140
- Math.min(f * (1 - 1 / 3.6 * Math.exp((-env.la - 42) / 92)), 1),
141
- 0,
142
- );
143
- env.dRgb = rgbW.map(c => {
144
- return interpolate(1, yw / c, d);
145
- });
146
- env.dRgbInv = env.dRgb.map(c => {
147
- return 1 / c;
148
- });
149
-
150
- // Achromatic response
151
- const rgbCW = rgbW.map((c, i) => {
152
- return c * env.dRgb[i];
153
- });
154
- const rgbAW = adapt(rgbCW, env.fl);
155
- env.aW = env.nbb * (2 * rgbAW[0] + rgbAW[1] + 0.05 * rgbAW[2]);
156
-
157
- // console.log(env);
158
-
159
- return env;
160
- }
161
-
162
- // Pre-calculate everything we can with the viewing conditions
163
- const viewingConditions = environment(
164
- white,
165
- 64 / Math.PI * 0.2, 20,
166
- "average",
167
- false,
168
- );
169
-
170
- export function fromCam16 (cam16, env) {
171
-
172
- // These check ensure one, and only one attribute for a
173
- // given category is provided.
174
- if (!((cam16.J !== undefined) ^ (cam16.Q !== undefined))) {
175
- throw new Error("Conversion requires one and only one: 'J' or 'Q'");
176
- }
177
-
178
- if (!((cam16.C !== undefined) ^ (cam16.M !== undefined) ^ (cam16.s !== undefined))) {
179
- throw new Error("Conversion requires one and only one: 'C', 'M' or 's'");
180
- }
181
-
182
- // Hue is absolutely required
183
- if (!((cam16.h !== undefined) ^ (cam16.H !== undefined))) {
184
- throw new Error("Conversion requires one and only one: 'h' or 'H'");
185
- }
186
-
187
- // Black
188
- if (cam16.J === 0.0 || cam16.Q === 0.0) {
189
- return [0.0, 0.0, 0.0];
190
- }
191
-
192
- // Break hue into Cartesian components
193
- let hRad = 0.0;
194
- if (cam16.h !== undefined) {
195
- hRad = constrain(cam16.h) * deg2rad;
196
- }
197
- else {
198
- hRad = invHueQuadrature(cam16.H) * deg2rad;
199
- }
200
-
201
- const cosh = Math.cos(hRad);
202
- const sinh = Math.sin(hRad);
203
-
204
- // Calculate `Jroot` from one of the lightness derived coordinates.
205
- let Jroot = 0.0;
206
- if (cam16.J !== undefined) {
207
- Jroot = spow(cam16.J, 1 / 2) * 0.1;
208
- }
209
- else if (cam16.Q !== undefined) {
210
- Jroot = 0.25 * env.c * cam16.Q / ((env.aW + 4) * env.flRoot);
211
- }
212
-
213
- // Calculate the `t` value from one of the chroma derived coordinates
214
- let alpha = 0.0;
215
- if (cam16.C !== undefined) {
216
- alpha = cam16.C / Jroot;
217
- }
218
- else if (cam16.M !== undefined) {
219
- alpha = (cam16.M / env.flRoot) / Jroot;
220
- }
221
- else if (cam16.s !== undefined) {
222
- alpha = 0.0004 * (cam16.s ** 2) * (env.aW + 4) / env.c;
223
- }
224
- const t = spow(
225
- alpha * Math.pow(1.64 - Math.pow(0.29, env.n), -0.73),
226
- 10 / 9,
227
- );
228
-
229
- // Eccentricity
230
- const et = 0.25 * (Math.cos(hRad + 2) + 3.8);
231
-
232
- // Achromatic response
233
- const A = env.aW * spow(Jroot, 2 / env.c / env.z);
234
-
235
- // Calculate red-green and yellow-blue components
236
- const p1 = 5e4 / 13 * env.nc * env.ncb * et;
237
- const p2 = A / env.nbb;
238
- const r = (
239
- 23 * (p2 + 0.305) *
240
- zdiv(t, 23 * p1 + t * (11 * cosh + 108 * sinh))
241
- );
242
- const a = r * cosh;
243
- const b = r * sinh;
244
-
245
- // Calculate back from cone response to XYZ
246
- const rgb_c = unadapt(
247
- multiplyMatrices(m1, [p2, a, b]).map(c => {
248
- return c * 1 / 1403;
249
- }),
250
- env.fl,
251
- );
252
- return multiplyMatrices(
253
- cat16Inv,
254
- rgb_c.map((c, i) => {
255
- return c * env.dRgbInv[i];
256
- }),
257
- ).map(c => {
258
- return c / 100;
259
- });
260
- }
261
-
262
-
263
- export function toCam16 (xyzd65, env) {
264
- // Cone response
265
- const xyz100 = xyzd65.map(c => {
266
- return c * 100;
267
- });
268
- const rgbA = adapt(
269
- multiplyMatrices(cat16, xyz100).map((c, i) => {
270
- return c * env.dRgb[i];
271
- }),
272
- env.fl,
273
- );
274
-
275
- // Calculate hue from red-green and yellow-blue components
276
- const a = rgbA[0] + (-12 * rgbA[1] + rgbA[2]) / 11;
277
- const b = (rgbA[0] + rgbA[1] - 2 * rgbA[2]) / 9;
278
- const hRad = ((Math.atan2(b, a) % tau) + tau) % tau;
279
-
280
- // Eccentricity
281
- const et = 0.25 * (Math.cos(hRad + 2) + 3.8);
282
-
283
- const t = (
284
- 5e4 / 13 * env.nc * env.ncb *
285
- zdiv(
286
- et * Math.sqrt(a ** 2 + b ** 2),
287
- rgbA[0] + rgbA[1] + 1.05 * rgbA[2] + 0.305,
288
- )
289
- );
290
- const alpha = spow(t, 0.9) * Math.pow(1.64 - Math.pow(0.29, env.n), 0.73);
291
-
292
- // Achromatic response
293
- const A = env.nbb * (2 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]);
294
-
295
- const Jroot = spow(A / env.aW, 0.5 * env.c * env.z);
296
-
297
- // Lightness
298
- const J = 100 * spow(Jroot, 2);
299
-
300
- // Brightness
301
- const Q = (4 / env.c * Jroot * (env.aW + 4) * env.flRoot);
302
-
303
- // Chroma
304
- const C = alpha * Jroot;
305
-
306
- // Colorfulness
307
- const M = C * env.flRoot;
308
-
309
- // Hue
310
- const h = constrain(hRad * rad2deg);
311
-
312
- // Hue quadrature
313
- const H = hueQuadrature(h);
314
-
315
- // Saturation
316
- const s = 50 * spow(env.c * alpha / (env.aW + 4), 1 / 2);
317
-
318
- // console.log({J: J, C: C, h: h, s: s, Q: Q, M: M, H: H});
319
-
320
- return {J: J, C: C, h: h, s: s, Q: Q, M: M, H: H};
321
- }
322
-
323
-
324
- // Provided as a way to directly evaluate the CAM16 model
325
- // https://observablehq.com/@jrus/cam16: reference implementation
326
- // https://arxiv.org/pdf/1802.06067.pdf: Nico Schlömer
327
- // https://onlinelibrary.wiley.com/doi/pdf/10.1002/col.22324: hue quadrature
328
- // https://www.researchgate.net/publication/318152296_Comprehensive_color_solutions_CAM16_CAT16_and_CAM16-UCS
329
- // Results compared against: https://github.com/colour-science/colour
330
- export default new ColorSpace({
331
- id: "cam16-jmh",
332
- cssId: "--cam16-jmh",
333
- name: "CAM16-JMh",
334
- coords: {
335
- j: {
336
- refRange: [0, 100],
337
- name: "J",
338
- },
339
- m: {
340
- refRange: [0, 105.0],
341
- name: "Colorfulness",
342
- },
343
- h: {
344
- refRange: [0, 360],
345
- type: "angle",
346
- name: "Hue",
347
- },
348
- },
349
-
350
- base: xyz_d65,
351
-
352
- fromBase (xyz) {
353
- const cam16 = toCam16(xyz, viewingConditions);
354
- return [cam16.J, cam16.M, cam16.h];
355
- },
356
- toBase (cam16) {
357
- return fromCam16(
358
- {J: cam16[0], M: cam16[1], h: cam16[2]},
359
- viewingConditions,
360
- );
361
- },
362
- });
@@ -1,157 +0,0 @@
1
- import ColorSpace from "../space.js";
2
- import {constrain} from "../angles.js";
3
- import xyz_d65 from "./xyz-d65.js";
4
- import {fromCam16, toCam16, environment} from "./cam16.js";
5
- import {WHITES} from "../adapt.js";
6
-
7
- const white = WHITES.D65;
8
- const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
9
- const κ = 24389 / 27; // 29^3/3^3
10
-
11
- function toLstar (y) {
12
- // Convert XYZ Y to L*
13
-
14
- const fy = (y > ε) ? Math.cbrt(y) : (κ * y + 16) / 116;
15
- return (116.0 * fy) - 16.0;
16
- }
17
-
18
- function fromLstar (lstar) {
19
- // Convert L* back to XYZ Y
20
-
21
- return (lstar > 8) ? Math.pow((lstar + 16) / 116, 3) : lstar / κ;
22
- }
23
-
24
- function fromHct (coords, env) {
25
- // Use Newton's method to try and converge as quick as possible or
26
- // converge as close as we can. While the requested precision is achieved
27
- // most of the time, it may not always be achievable. Especially past the
28
- // visible spectrum, the algorithm will likely struggle to get the same
29
- // precision. If, for whatever reason, we cannot achieve the accuracy we
30
- // seek in the allotted iterations, just return the closest we were able to
31
- // get.
32
-
33
- let [h, c, t] = coords;
34
- let xyz = [];
35
- let j = 0;
36
-
37
- // Shortcut out for black
38
- if (t === 0) {
39
- return [0.0, 0.0, 0.0];
40
- }
41
-
42
- // Calculate the Y we need to target
43
- let y = fromLstar(t);
44
-
45
- // A better initial guess yields better results. Polynomials come from
46
- // curve fitting the T vs J response.
47
- if (t > 0) {
48
- j = 0.00379058511492914 * t ** 2 + 0.608983189401032 * t + 0.9155088574762233;
49
- }
50
- else {
51
- j = 9.514440756550361e-06 * t ** 2 + 0.08693057439788597 * t - 21.928975842194614;
52
- }
53
-
54
- // Threshold of how close is close enough, and max number of attempts.
55
- // More precision and more attempts means more time spent iterating. Higher
56
- // required precision gives more accuracy but also increases the chance of
57
- // not hitting the goal. 2e-12 allows us to convert round trip with
58
- // reasonable accuracy of six decimal places or more.
59
- const threshold = 2e-12;
60
- const max_attempts = 15;
61
-
62
- let attempt = 0;
63
- let last = Infinity;
64
- let best = j;
65
-
66
- // Try to find a J such that the returned y matches the returned y of the L*
67
- while (attempt <= max_attempts) {
68
- xyz = fromCam16({J: j, C: c, h: h}, env);
69
-
70
- // If we are within range, return XYZ
71
- // If we are closer than last time, save the values
72
- const delta = Math.abs(xyz[1] - y);
73
- if (delta < last) {
74
- if (delta <= threshold) {
75
- return xyz;
76
- }
77
- best = j;
78
- last = delta;
79
- }
80
-
81
- // f(j_root) = (j ** (1 / 2)) * 0.1
82
- // f(j) = ((f(j_root) * 100) ** 2) / j - 1 = 0
83
- // f(j_root) = Y = y / 100
84
- // f(j) = (y ** 2) / j - 1
85
- // f'(j) = (2 * y) / j
86
- j = j - (xyz[1] - y) * j / (2 * xyz[1]);
87
-
88
- attempt += 1;
89
- }
90
-
91
- // We could not acquire the precision we desired,
92
- // return our closest attempt.
93
- return fromCam16({J: j, C: c, h: h}, env);
94
- }
95
-
96
- function toHct (xyz, env) {
97
- // Calculate HCT by taking the L* of CIE LCh D65 and CAM16 chroma and hue.
98
-
99
- const t = toLstar(xyz[1]);
100
- if (t === 0.0) {
101
- return [0.0, 0.0, 0.0];
102
- }
103
- const cam16 = toCam16(xyz, viewingConditions);
104
- return [constrain(cam16.h), cam16.C, t];
105
- }
106
-
107
- // Pre-calculate everything we can with the viewing conditions
108
- export const viewingConditions = environment(
109
- white, 200 / Math.PI * fromLstar(50.0),
110
- fromLstar(50.0) * 100,
111
- "average",
112
- false,
113
- );
114
-
115
- // https://material.io/blog/science-of-color-design
116
- // This is not a port of the material-color-utilities,
117
- // but instead implements the full color space as described,
118
- // combining CAM16 JCh and Lab D65. This does not clamp conversion
119
- // to HCT to specific chroma bands and provides support for wider
120
- // gamuts than Google currently supports and does so at a greater
121
- // precision (> 8 bits back to sRGB).
122
- // This implementation comes from https://github.com/facelessuser/coloraide
123
- // which is licensed under MIT.
124
- export default new ColorSpace({
125
- id: "hct",
126
- name: "HCT",
127
- coords: {
128
- h: {
129
- refRange: [0, 360],
130
- type: "angle",
131
- name: "Hue",
132
- },
133
- c: {
134
- refRange: [0, 145],
135
- name: "Colorfulness",
136
- },
137
- t: {
138
- refRange: [0, 100],
139
- name: "Tone",
140
- },
141
- },
142
-
143
- base: xyz_d65,
144
-
145
- fromBase (xyz) {
146
- return toHct(xyz, viewingConditions);
147
- },
148
- toBase (hct) {
149
- return fromHct(hct, viewingConditions);
150
- },
151
- formats: {
152
- color: {
153
- id: "--hct",
154
- coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
155
- },
156
- },
157
- });
@@ -1,130 +0,0 @@
1
- /*
2
- Adapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts
3
-
4
- Copyright (c) 2012-2022 Alexei Boronine
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in all
14
- copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
23
- */
24
-
25
- import ColorSpace from "../space.js";
26
- import LCHuv from "./lchuv.js";
27
- import {fromXYZ_M} from "./srgb-linear.js";
28
- import {skipNone} from "../util.js";
29
- import {calculateBoundingLines} from "./hsluv.js";
30
-
31
- const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
32
- const κ = 24389 / 27; // 29^3/3^3
33
-
34
- const m_r0 = fromXYZ_M[0][0];
35
- const m_r1 = fromXYZ_M[0][1];
36
- const m_r2 = fromXYZ_M[0][2];
37
- const m_g0 = fromXYZ_M[1][0];
38
- const m_g1 = fromXYZ_M[1][1];
39
- const m_g2 = fromXYZ_M[1][2];
40
- const m_b0 = fromXYZ_M[2][0];
41
- const m_b1 = fromXYZ_M[2][1];
42
- const m_b2 = fromXYZ_M[2][2];
43
-
44
- function distanceFromOrigin (slope, intercept) {
45
- return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);
46
- }
47
-
48
- function calcMaxChromaHpluv (lines) {
49
- let r0 = distanceFromOrigin(lines.r0s, lines.r0i);
50
- let r1 = distanceFromOrigin(lines.r1s, lines.r1i);
51
- let g0 = distanceFromOrigin(lines.g0s, lines.g0i);
52
- let g1 = distanceFromOrigin(lines.g1s, lines.g1i);
53
- let b0 = distanceFromOrigin(lines.b0s, lines.b0i);
54
- let b1 = distanceFromOrigin(lines.b1s, lines.b1i);
55
-
56
- return Math.min(r0, r1, g0, g1, b0, b1);
57
- }
58
-
59
- export default new ColorSpace({
60
- id: "hpluv",
61
- name: "HPLuv",
62
- coords: {
63
- h: {
64
- refRange: [0, 360],
65
- type: "angle",
66
- name: "Hue",
67
- },
68
- s: {
69
- range: [0, 100],
70
- name: "Saturation",
71
- },
72
- l: {
73
- range: [0, 100],
74
- name: "Lightness",
75
- },
76
- },
77
-
78
- base: LCHuv,
79
- gamutSpace: "self",
80
-
81
- // Convert LCHuv to HPLuv
82
- fromBase (lch) {
83
- let [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];
84
- let s;
85
-
86
- if (l > 99.9999999) {
87
- s = 0;
88
- l = 100;
89
- }
90
- else if (l < 0.00000001) {
91
- s = 0;
92
- l = 0;
93
- }
94
- else {
95
- let lines = calculateBoundingLines(l);
96
- let max = calcMaxChromaHpluv(lines);
97
- s = c / max * 100;
98
- }
99
- return [h, s, l];
100
- },
101
-
102
- // Convert HPLuv to LCHuv
103
- toBase (hsl) {
104
- let [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];
105
- let c;
106
-
107
- if (l > 99.9999999) {
108
- l = 100;
109
- c = 0;
110
- }
111
- else if (l < 0.00000001) {
112
- l = 0;
113
- c = 0;
114
- }
115
- else {
116
- let lines = calculateBoundingLines(l);
117
- let max = calcMaxChromaHpluv(lines, h);
118
- c = max / 100 * s;
119
- }
120
-
121
- return [l, c, h];
122
- },
123
-
124
- formats: {
125
- color: {
126
- id: "--hpluv",
127
- coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
128
- },
129
- },
130
- });