color-elements 0.0.2 → 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 (484) hide show
  1. package/README.md +30 -15
  2. package/_build/copy-config.json +1 -1
  3. package/_build/eleventy.js +7 -2
  4. package/_build/filters-extra.js +1 -1
  5. package/_includes/component.njk +9 -1
  6. package/_includes/partials/_nav-links.njk +11 -4
  7. package/_redirects +8 -1
  8. package/assets/css/style.css +78 -1
  9. package/assets/js/index.js +6 -6
  10. package/data/components.json +12 -0
  11. package/debug.html +447 -0
  12. package/index.js +5 -1
  13. package/package.json +2 -1
  14. package/src/channel-picker/README.md +103 -0
  15. package/src/channel-picker/channel-picker.css +31 -0
  16. package/src/channel-picker/channel-picker.js +168 -0
  17. package/src/channel-picker/channel-picker.webp +0 -0
  18. package/src/channel-slider/README.md +50 -8
  19. package/src/channel-slider/channel-slider.css +47 -5
  20. package/src/channel-slider/channel-slider.js +74 -39
  21. package/src/channel-slider/channel-slider.webp +0 -0
  22. package/src/color-chart/README.md +129 -0
  23. package/src/color-chart/color-chart-global.css +97 -0
  24. package/src/color-chart/color-chart.css +112 -0
  25. package/src/color-chart/color-chart.js +441 -0
  26. package/src/color-chart/color-chart.webp +0 -0
  27. package/src/color-inline/README.md +42 -1
  28. package/src/color-inline/color-inline.css +11 -4
  29. package/src/color-inline/color-inline.js +56 -50
  30. package/src/color-inline/color-inline.webp +0 -0
  31. package/src/color-picker/README.md +107 -5
  32. package/src/color-picker/color-picker.css +21 -6
  33. package/src/color-picker/color-picker.js +147 -60
  34. package/src/color-picker/color-picker.webp +0 -0
  35. package/src/color-scale/README.md +75 -0
  36. package/src/color-scale/color-scale.css +40 -0
  37. package/src/color-scale/color-scale.js +164 -0
  38. package/src/color-scale/color-scale.webp +0 -0
  39. package/src/color-slider/README.md +31 -4
  40. package/src/color-slider/color-slider.css +17 -7
  41. package/src/color-slider/color-slider.js +80 -38
  42. package/src/color-slider/color-slider.webp +0 -0
  43. package/src/color-swatch/README.md +265 -6
  44. package/src/color-swatch/color-swatch.css +162 -27
  45. package/src/color-swatch/color-swatch.js +191 -217
  46. package/src/color-swatch/color-swatch.webp +0 -0
  47. package/src/common/color-element.js +86 -0
  48. package/src/common/dom.js +1 -1
  49. package/src/common/util.js +12 -99
  50. package/src/gamut-badge/README.md +145 -0
  51. package/src/gamut-badge/gamut-badge.css +78 -0
  52. package/src/gamut-badge/gamut-badge.js +121 -0
  53. package/src/gamut-badge/gamut-badge.webp +0 -0
  54. package/src/index.js.njk +1 -1
  55. package/src/space-picker/README.md +121 -0
  56. package/src/space-picker/space-picker.css +23 -0
  57. package/src/space-picker/space-picker.js +213 -0
  58. package/src/space-picker/space-picker.webp +0 -0
  59. package/_data/components.json +0 -8
  60. package/lib/README.md +0 -4
  61. package/lib/colorjs.io/LICENSE +0 -21
  62. package/lib/colorjs.io/README.json +0 -3
  63. package/lib/colorjs.io/README.md +0 -257
  64. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  65. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  66. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  67. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  68. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  69. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  70. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  71. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  72. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  73. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  74. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  75. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  76. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  77. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  78. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  79. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  80. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  81. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  82. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  83. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  84. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  85. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  86. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  88. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  90. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  94. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  96. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  98. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  100. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  101. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  102. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  103. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  104. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  105. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  106. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  107. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  108. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  109. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  110. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  111. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  112. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  113. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  114. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  115. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  116. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  117. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  118. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  119. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  120. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  121. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  122. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  123. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  124. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  125. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  126. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  127. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  128. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  129. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  130. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  131. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  132. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  133. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  134. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  135. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  136. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  137. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  138. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  139. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  140. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  141. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  142. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  143. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  144. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  145. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  146. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  147. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  148. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  149. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  150. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  151. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  152. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  153. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  154. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  155. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  156. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  157. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  158. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  159. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  160. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  161. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  162. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  163. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  164. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  165. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  166. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  167. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  168. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  169. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  170. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  171. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  172. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  173. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  174. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  175. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  176. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  177. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  178. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  179. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  180. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  181. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  182. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  183. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  184. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  185. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  186. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  187. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  188. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  189. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  190. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  191. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  192. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  193. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  194. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  195. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  196. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  197. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  198. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  199. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  200. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  201. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  202. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  203. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  204. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  205. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  206. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  207. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  208. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  209. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  210. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  211. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  212. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  213. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  214. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  215. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  216. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  217. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  218. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  219. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  220. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  221. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  222. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  223. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  224. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  225. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  226. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  227. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  228. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  229. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  230. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  231. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  232. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  233. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  234. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  236. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  237. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  238. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  239. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  240. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  241. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  242. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  243. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  244. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  245. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  246. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  247. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  248. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  249. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  250. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  251. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  252. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  271. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  272. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  273. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  274. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  275. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  276. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  277. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  278. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  279. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  280. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  281. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  282. package/lib/colorjs.io/dist/color.cjs +0 -5759
  283. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  284. package/lib/colorjs.io/dist/color.global.js +0 -5760
  285. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  286. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  287. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  288. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  289. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  290. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  291. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  292. package/lib/colorjs.io/dist/color.js +0 -5755
  293. package/lib/colorjs.io/dist/color.js.map +0 -1
  294. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  295. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  297. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  298. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  301. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  302. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  303. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  304. package/lib/colorjs.io/dist/color.min.js +0 -2
  305. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  306. package/lib/colorjs.io/package.json +0 -113
  307. package/lib/colorjs.io/src/CATs.js +0 -131
  308. package/lib/colorjs.io/src/adapt.js +0 -62
  309. package/lib/colorjs.io/src/angles.js +0 -44
  310. package/lib/colorjs.io/src/chromaticity.js +0 -33
  311. package/lib/colorjs.io/src/clone.js +0 -7
  312. package/lib/colorjs.io/src/color.js +0 -201
  313. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  314. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  315. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  316. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  317. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  318. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  319. package/lib/colorjs.io/src/contrast/index.js +0 -6
  320. package/lib/colorjs.io/src/contrast.js +0 -28
  321. package/lib/colorjs.io/src/defaults.js +0 -12
  322. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  323. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  324. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  325. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  326. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  327. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  328. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  329. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  330. package/lib/colorjs.io/src/deltaE.js +0 -19
  331. package/lib/colorjs.io/src/display.js +0 -83
  332. package/lib/colorjs.io/src/distance.js +0 -21
  333. package/lib/colorjs.io/src/equals.js +0 -10
  334. package/lib/colorjs.io/src/get.js +0 -11
  335. package/lib/colorjs.io/src/getAll.js +0 -20
  336. package/lib/colorjs.io/src/getColor.js +0 -36
  337. package/lib/colorjs.io/src/hooks.js +0 -37
  338. package/lib/colorjs.io/src/inGamut.js +0 -25
  339. package/lib/colorjs.io/src/index-fn.js +0 -28
  340. package/lib/colorjs.io/src/index.js +0 -38
  341. package/lib/colorjs.io/src/interpolation.js +0 -222
  342. package/lib/colorjs.io/src/keywords.js +0 -158
  343. package/lib/colorjs.io/src/luminance.js +0 -27
  344. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  345. package/lib/colorjs.io/src/parse.js +0 -198
  346. package/lib/colorjs.io/src/rgbspace.js +0 -64
  347. package/lib/colorjs.io/src/serialize.js +0 -86
  348. package/lib/colorjs.io/src/set.js +0 -33
  349. package/lib/colorjs.io/src/setAll.js +0 -12
  350. package/lib/colorjs.io/src/space-accessors.js +0 -86
  351. package/lib/colorjs.io/src/space.js +0 -440
  352. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  353. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  354. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  355. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  356. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  357. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  358. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  359. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  360. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  361. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  362. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  363. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  364. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  365. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  366. package/lib/colorjs.io/src/spaces/index.js +0 -8
  367. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  368. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  369. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  370. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  371. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  372. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  373. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  374. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  375. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  376. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  377. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  378. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  379. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  380. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  381. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  382. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  383. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  384. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  385. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  386. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  387. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  388. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  389. package/lib/colorjs.io/src/to.js +0 -26
  390. package/lib/colorjs.io/src/toGamut.js +0 -310
  391. package/lib/colorjs.io/src/util.js +0 -254
  392. package/lib/colorjs.io/src/variations.js +0 -14
  393. package/lib/colorjs.io/types/index.d.cts +0 -4
  394. package/lib/colorjs.io/types/index.d.ts +0 -42
  395. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  396. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  397. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  398. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  399. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  400. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  401. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  402. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  403. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  404. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  405. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  406. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  407. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  408. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  409. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  410. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  411. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  412. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  413. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  414. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  415. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  416. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  417. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  418. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  419. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  420. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  421. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  422. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  423. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  424. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  425. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  426. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  427. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  428. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  429. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  430. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  431. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  432. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  433. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  434. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  435. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  436. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  437. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  438. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  439. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  440. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  441. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  442. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  443. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  444. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  445. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  446. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  447. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  448. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  449. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  450. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  451. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  452. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  453. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  454. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  455. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  456. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  457. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  458. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  459. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  460. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  471. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  472. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  473. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  478. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  479. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  480. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
  481. package/src/color-gamut/README.md +0 -75
  482. package/src/color-gamut/color-gamut.css +0 -32
  483. package/src/color-gamut/color-gamut.js +0 -172
  484. package/src/common/color.js +0 -12
@@ -1,31 +0,0 @@
1
- import RGBColorSpace from "../rgbspace.js";
2
- import REC2020Linear from "./rec2020-linear.js";
3
- // import sRGB from "./srgb.js";
4
-
5
- const α = 1.09929682680944;
6
- const β = 0.018053968510807;
7
-
8
- export default new RGBColorSpace({
9
- id: "rec2020",
10
- name: "REC.2020",
11
- base: REC2020Linear,
12
- // Non-linear transfer function from Rec. ITU-R BT.2020-2 table 4
13
- toBase (RGB) {
14
- return RGB.map(function (val) {
15
- if (val < β * 4.5) {
16
- return val / 4.5;
17
- }
18
-
19
- return Math.pow((val + α - 1) / α, 1 / 0.45);
20
- });
21
- },
22
- fromBase (RGB) {
23
- return RGB.map(function (val) {
24
- if (val >= β) {
25
- return α * Math.pow(val, 0.45) - (α - 1);
26
- }
27
-
28
- return 4.5 * val;
29
- });
30
- },
31
- });
@@ -1,49 +0,0 @@
1
- import RGBColorSpace from "../rgbspace.js";
2
- import REC2020Linear from "./rec2020-linear.js";
3
-
4
- // FIXME see https://github.com/LeaVerou/color.js/issues/190
5
-
6
- const a = 0.17883277;
7
- const b = 0.28466892; // 1 - (4 * a)
8
- const c = 0.55991073; // 0.5 - a * Math.log(4 *a)
9
-
10
- const scale = 3.7743; // Place 18% grey at HLG 0.38, so media white at 0.75
11
-
12
- export default new RGBColorSpace({
13
- id: "rec2100hlg",
14
- cssId: "rec2100-hlg",
15
- name: "REC.2100-HLG",
16
- referred: "scene",
17
-
18
- base: REC2020Linear,
19
- toBase (RGB) {
20
- // given HLG encoded component in range [0, 1]
21
- // return media-white relative linear-light
22
- return RGB.map(function (val) {
23
- // first the HLG EOTF
24
- // ITU-R BT.2390-10 p.30 section
25
- // 6.3 The hybrid log-gamma electro-optical transfer function (EOTF)
26
- // Then scale by 3 so media white is 1.0
27
- if (val <= 0.5) {
28
- return (val ** 2) / 3 * scale;
29
- }
30
- return ((Math.exp((val - c) / a) + b) / 12) * scale;
31
- });
32
- },
33
- fromBase (RGB) {
34
- // given media-white relative linear-light
35
- // where diffuse white is 1.0,
36
- // return HLG encoded component in range [0, 1]
37
- return RGB.map(function (val) {
38
- // first scale to put linear-light media white at 1/3
39
- val /= scale;
40
- // now the HLG OETF
41
- // ITU-R BT.2390-10 p.23
42
- // 6.1 The hybrid log-gamma opto-electronic transfer function (OETF)
43
- if (val <= 1 / 12) {
44
- return Math.sqrt(3 * val);
45
- }
46
- return a * Math.log(12 * val - b) + c;
47
- });
48
- },
49
- });
@@ -1,37 +0,0 @@
1
- import RGBColorSpace from "../rgbspace.js";
2
- import REC2020Linear from "./rec2020-linear.js";
3
-
4
- const Yw = 203; // absolute luminance of media white, cd/m²
5
- const n = 2610 / (2 ** 14);
6
- const ninv = (2 ** 14) / 2610;
7
- const m = 2523 / (2 ** 5);
8
- const minv = (2 ** 5) / 2523;
9
- const c1 = 3424 / (2 ** 12);
10
- const c2 = 2413 / (2 ** 7);
11
- const c3 = 2392 / (2 ** 7);
12
-
13
- export default new RGBColorSpace({
14
- id: "rec2100pq",
15
- cssId: "rec2100-pq",
16
- name: "REC.2100-PQ",
17
- base: REC2020Linear,
18
- toBase (RGB) {
19
- // given PQ encoded component in range [0, 1]
20
- // return media-white relative linear-light
21
- return RGB.map(function (val) {
22
- let x = ((Math.max(((val ** minv) - c1), 0) / (c2 - (c3 * (val ** minv)))) ** ninv);
23
- return (x * 10000 / Yw); // luminance relative to diffuse white, [0, 70 or so].
24
- });
25
- },
26
- fromBase (RGB) {
27
- // given media-white relative linear-light
28
- // returnPQ encoded component in range [0, 1]
29
- return RGB.map(function (val) {
30
- let x = Math.max(val * Yw / 10000, 0); // absolute luminance of peak white is 10,000 cd/m².
31
- let num = (c1 + (c2 * (x ** n)));
32
- let denom = (1 + (c3 * (x ** n)));
33
-
34
- return ((num / denom) ** m);
35
- });
36
- },
37
- });
@@ -1,30 +0,0 @@
1
- import RGBColorSpace from "../rgbspace.js";
2
-
3
- // This is the linear-light version of sRGB
4
- // as used for example in SVG filters
5
- // or in Canvas
6
-
7
- // This matrix was calculated directly from the RGB and white chromaticities
8
- // when rounded to 8 decimal places, it agrees completely with the official matrix
9
- // see https://github.com/w3c/csswg-drafts/issues/5922
10
- const toXYZ_M = [
11
- [ 0.41239079926595934, 0.357584339383878, 0.1804807884018343 ],
12
- [ 0.21263900587151027, 0.715168678767756, 0.07219231536073371 ],
13
- [ 0.01933081871559182, 0.11919477979462598, 0.9505321522496607 ],
14
- ];
15
-
16
- // This matrix is the inverse of the above;
17
- // again it agrees with the official definition when rounded to 8 decimal places
18
- export const fromXYZ_M = [
19
- [ 3.2409699419045226, -1.537383177570094, -0.4986107602930034 ],
20
- [ -0.9692436362808796, 1.8759675015077202, 0.04155505740717559 ],
21
- [ 0.05563007969699366, -0.20397695888897652, 1.0569715142428786 ],
22
- ];
23
-
24
- export default new RGBColorSpace({
25
- id: "srgb-linear",
26
- name: "Linear sRGB",
27
- white: "D65",
28
- toXYZ_M,
29
- fromXYZ_M,
30
- });
@@ -1,127 +0,0 @@
1
- import RGBColorSpace from "../rgbspace.js";
2
- import sRGBLinear from "./srgb-linear.js";
3
- import KEYWORDS from "../keywords.js";
4
-
5
- let coordGrammar = Array(3).fill("<percentage> | <number>[0, 255]");
6
- let coordGrammarNumber = Array(3).fill("<number>[0, 255]");
7
-
8
- export default new RGBColorSpace({
9
- id: "srgb",
10
- name: "sRGB",
11
- base: sRGBLinear,
12
- fromBase: rgb => {
13
- // convert an array of linear-light sRGB values in the range 0.0-1.0
14
- // to gamma corrected form
15
- // https://en.wikipedia.org/wiki/SRGB
16
- return rgb.map(val => {
17
- let sign = val < 0 ? -1 : 1;
18
- let abs = val * sign;
19
-
20
- if (abs > 0.0031308) {
21
- return sign * (1.055 * (abs ** (1 / 2.4)) - 0.055);
22
- }
23
-
24
- return 12.92 * val;
25
- });
26
- },
27
- toBase: rgb => {
28
- // convert an array of sRGB values in the range 0.0 - 1.0
29
- // to linear light (un-companded) form.
30
- // https://en.wikipedia.org/wiki/SRGB
31
- return rgb.map(val => {
32
- let sign = val < 0 ? -1 : 1;
33
- let abs = val * sign;
34
-
35
- if (abs <= 0.04045) {
36
- return val / 12.92;
37
- }
38
-
39
- return sign * (((abs + 0.055) / 1.055) ** 2.4);
40
- });
41
- },
42
- formats: {
43
- "rgb": {
44
- coords: coordGrammar,
45
- },
46
- "rgb_number": {
47
- name: "rgb",
48
- commas: true,
49
- coords: coordGrammarNumber,
50
- noAlpha: true,
51
- },
52
- "color": { /* use defaults */ },
53
- "rgba": {
54
- coords: coordGrammar,
55
- commas: true,
56
- lastAlpha: true,
57
- },
58
- "rgba_number": {
59
- name: "rgba",
60
- commas: true,
61
- coords: coordGrammarNumber,
62
- },
63
- "hex": {
64
- type: "custom",
65
- toGamut: true,
66
- test: str => /^#([a-f0-9]{3,4}){1,2}$/i.test(str),
67
- parse (str) {
68
- if (str.length <= 5) {
69
- // #rgb or #rgba, duplicate digits
70
- str = str.replace(/[a-f0-9]/gi, "$&$&");
71
- }
72
-
73
- let rgba = [];
74
- str.replace(/[a-f0-9]{2}/gi, component => {
75
- rgba.push(parseInt(component, 16) / 255);
76
- });
77
-
78
- return {
79
- spaceId: "srgb",
80
- coords: rgba.slice(0, 3),
81
- alpha: rgba.slice(3)[0],
82
- };
83
- },
84
- serialize: (coords, alpha, {
85
- collapse = true, // collapse to 3-4 digit hex when possible?
86
- } = {}) => {
87
- if (alpha < 1) {
88
- coords.push(alpha);
89
- }
90
-
91
- coords = coords.map(c => Math.round(c * 255));
92
-
93
- let collapsible = collapse && coords.every(c => c % 17 === 0);
94
-
95
- let hex = coords.map(c => {
96
- if (collapsible) {
97
- return (c / 17).toString(16);
98
- }
99
-
100
- return c.toString(16).padStart(2, "0");
101
- }).join("");
102
-
103
- return "#" + hex;
104
- },
105
- },
106
- "keyword": {
107
- type: "custom",
108
- test: str => /^[a-z]+$/i.test(str),
109
- parse (str) {
110
- str = str.toLowerCase();
111
- let ret = {spaceId: "srgb", coords: null, alpha: 1};
112
-
113
- if (str === "transparent") {
114
- ret.coords = KEYWORDS.black;
115
- ret.alpha = 0;
116
- }
117
- else {
118
- ret.coords = KEYWORDS[str];
119
- }
120
-
121
- if (ret.coords) {
122
- return ret;
123
- }
124
- },
125
- },
126
- },
127
- });
@@ -1,40 +0,0 @@
1
- import ColorSpace from "../space.js";
2
- import XYZ_D65 from "./xyz-d65.js";
3
-
4
- const Yw = 203; // absolute luminance of media white
5
-
6
- export default new ColorSpace({
7
- // Absolute CIE XYZ, with a D65 whitepoint,
8
- // as used in most HDR colorspaces as a starting point.
9
- // SDR spaces are converted per BT.2048
10
- // so that diffuse, media white is 203 cd/m²
11
- id: "xyz-abs-d65",
12
- cssId: "--xyz-abs-d65",
13
- name: "Absolute XYZ D65",
14
- coords: {
15
- x: {
16
- refRange: [0, 9504.7],
17
- name: "Xa",
18
- },
19
- y: {
20
- refRange: [0, 10000],
21
- name: "Ya",
22
- },
23
- z: {
24
- refRange: [0, 10888.3],
25
- name: "Za",
26
- },
27
- },
28
-
29
- base: XYZ_D65,
30
- fromBase (XYZ) {
31
- // Make XYZ absolute, not relative to media white
32
- // Maximum luminance in PQ is 10,000 cd/m²
33
- // Relative XYZ has Y=1 for media white
34
- return XYZ.map (v => Math.max(v * Yw, 0));
35
- },
36
- toBase (AbsXYZ) {
37
- // Convert to media-white relative XYZ
38
- return AbsXYZ.map(v => Math.max(v / Yw, 0));
39
- },
40
- });
@@ -1,12 +0,0 @@
1
- import ColorSpace from "../space.js";
2
- import adapt from "../adapt.js";
3
- import XYZ_D65 from "./xyz-d65.js";
4
-
5
- export default new ColorSpace({
6
- id: "xyz-d50",
7
- name: "XYZ D50",
8
- white: "D50",
9
- base: XYZ_D65,
10
- fromBase: coords => adapt(XYZ_D65.white, "D50", coords),
11
- toBase: coords => adapt("D50", XYZ_D65.white, coords),
12
- });
@@ -1,18 +0,0 @@
1
- import ColorSpace from "../space.js";
2
-
3
- export default new ColorSpace({
4
- id: "xyz-d65",
5
- name: "XYZ D65",
6
- coords: {
7
- x: {name: "X"},
8
- y: {name: "Y"},
9
- z: {name: "Z"},
10
- },
11
- white: "D65",
12
- formats: {
13
- color: {
14
- ids: ["xyz-d65", "xyz"],
15
- },
16
- },
17
- aliases: ["xyz"],
18
- });
@@ -1,26 +0,0 @@
1
- import getColor from "./getColor.js";
2
- import ColorSpace from "./space.js";
3
- import toGamut from "./toGamut.js";
4
-
5
- /**
6
- * Convert to color space and return a new color
7
- * @param {Object|string} space - Color space object or id
8
- * @param {Object} options
9
- * @param {boolean} options.inGamut - Whether to force resulting color in gamut
10
- * @returns {Color}
11
- */
12
- export default function to (color, space, {inGamut} = {}) {
13
- color = getColor(color);
14
- space = ColorSpace.get(space);
15
-
16
- let coords = space.from(color);
17
- let ret = {space, coords, alpha: color.alpha};
18
-
19
- if (inGamut) {
20
- ret = toGamut(ret, inGamut === true ? undefined : inGamut);
21
- }
22
-
23
- return ret;
24
- }
25
-
26
- to.returns = "color";
@@ -1,310 +0,0 @@
1
- import * as util from "./util.js";
2
- import ColorSpace from "./space.js";
3
- import defaults from "./defaults.js";
4
- import deltaE2000 from "./deltaE/deltaE2000.js";
5
- import deltaEOK from "./deltaE/deltaEOK.js";
6
- import inGamut from "./inGamut.js";
7
- import to from "./to.js";
8
- import get from "./get.js";
9
- import oklab from "./spaces/oklab.js";
10
- import set from "./set.js";
11
- import clone from "./clone.js";
12
- import getColor from "./getColor.js";
13
- import deltaEMethods from "./deltaE/index.js";
14
- import {WHITES} from "./adapt.js";
15
-
16
- /**
17
- * Calculate the epsilon to 2 degrees smaller than the specified JND.
18
- * @param {Number} jnd - The target "just noticeable difference".
19
- * @returns {Number}
20
- */
21
- function calcEpsilon (jnd) {
22
- // Calculate the epsilon to 2 degrees smaller than the specified JND.
23
-
24
- const order = (!jnd) ? 0 : Math.floor(Math.log10(Math.abs(jnd)));
25
- // Limit to an arbitrary value to ensure value is never too small and causes infinite loops.
26
- return Math.max(parseFloat(`1e${order - 2}`), 1e-6);
27
- }
28
-
29
- const GMAPPRESET = {
30
- "hct": {
31
- method: "hct.c",
32
- jnd: 2,
33
- deltaEMethod: "hct",
34
- blackWhiteClamp: {},
35
- },
36
- "hct-tonal": {
37
- method: "hct.c",
38
- jnd: 0,
39
- deltaEMethod: "hct",
40
- blackWhiteClamp: { channel: "hct.t", min: 0, max: 100 },
41
- },
42
- };
43
-
44
- /**
45
- * Force coordinates to be in gamut of a certain color space.
46
- * Mutates the color it is passed.
47
- * @param {Object|string} options object or spaceId string
48
- * @param {string} options.method - How to force into gamut.
49
- * If "clip", coordinates are just clipped to their reference range.
50
- * If "css", coordinates are reduced according to the CSS 4 Gamut Mapping Algorithm.
51
- * If in the form [colorSpaceId].[coordName], that coordinate is reduced
52
- * until the color is in gamut. Please note that this may produce nonsensical
53
- * results for certain coordinates (e.g. hue) or infinite loops if reducing the coordinate never brings the color in gamut.
54
- * @param {ColorSpace|string} options.space - The space whose gamut we want to map to
55
- * @param {string} options.deltaEMethod - The delta E method to use while performing gamut mapping.
56
- * If no method is specified, delta E 2000 is used.
57
- * @param {Number} options.jnd - The "just noticeable difference" to target.
58
- * @param {Object} options.blackWhiteClamp - Used to configure SDR black and clamping.
59
- * "channel" indicates the "space.channel" to use for determining when to clamp.
60
- * "min" indicates the lower limit for black clamping and "max" indicates the upper
61
- * limit for white clamping.
62
- */
63
-
64
- export default function toGamut (
65
- color,
66
- {
67
- method = defaults.gamut_mapping,
68
- space = undefined,
69
- deltaEMethod = "",
70
- jnd = 2,
71
- blackWhiteClamp = {},
72
- } = {},
73
- ) {
74
- color = getColor(color);
75
-
76
- if (util.isString(arguments[1])) {
77
- space = arguments[1];
78
- }
79
- else if (!space) {
80
- space = color.space;
81
- }
82
-
83
- space = ColorSpace.get(space);
84
-
85
- // 3 spaces:
86
- // color.space: current color space
87
- // space: space whose gamut we are mapping to
88
- // mapSpace: space with the coord we're reducing
89
-
90
- if (inGamut(color, space, { epsilon: 0 })) {
91
- return color;
92
- }
93
-
94
- let spaceColor;
95
- if (method === "css") {
96
- spaceColor = toGamutCSS(color, { space });
97
- }
98
- else {
99
- if (method !== "clip" && !inGamut(color, space)) {
100
-
101
- if (Object.prototype.hasOwnProperty.call(GMAPPRESET, method)) {
102
- ({method, jnd, deltaEMethod, blackWhiteClamp} = GMAPPRESET[method]);
103
- }
104
-
105
- // Get the correct delta E method
106
- let de = deltaE2000;
107
- if (deltaEMethod !== "") {
108
- for (let m in deltaEMethods) {
109
- if ("deltae" + deltaEMethod.toLowerCase() === m.toLowerCase()) {
110
- de = deltaEMethods[m];
111
- break;
112
- }
113
- }
114
- }
115
-
116
- let clipped = toGamut(to(color, space), { method: "clip", space });
117
- if (de(color, clipped) > jnd) {
118
-
119
- // Clamp to SDR white and black if required
120
- if (Object.keys(blackWhiteClamp).length === 3) {
121
- let channelMeta = ColorSpace.resolveCoord(blackWhiteClamp.channel);
122
- let channel = get(to(color, channelMeta.space), channelMeta.id);
123
- if (util.isNone(channel)) {
124
- channel = 0;
125
- }
126
- if (channel >= blackWhiteClamp.max) {
127
- return to({ space: "xyz-d65", coords: WHITES["D65"] }, color.space);
128
- }
129
- else if (channel <= blackWhiteClamp.min) {
130
- return to({ space: "xyz-d65", coords: [0, 0, 0] }, color.space);
131
- }
132
- }
133
-
134
- // Reduce a coordinate of a certain color space until the color is in gamut
135
- let coordMeta = ColorSpace.resolveCoord(method);
136
- let mapSpace = coordMeta.space;
137
- let coordId = coordMeta.id;
138
-
139
- let mappedColor = to(color, mapSpace);
140
- // If we were already in the mapped color space, we need to resolve undefined channels
141
- mappedColor.coords.forEach((c, i) => {
142
- if (util.isNone(c)) {
143
- mappedColor.coords[i] = 0;
144
- }
145
- });
146
- let bounds = coordMeta.range || coordMeta.refRange;
147
- let min = bounds[0];
148
- let ε = calcEpsilon(jnd);
149
- let low = min;
150
- let high = get(mappedColor, coordId);
151
-
152
- while (high - low > ε) {
153
- let clipped = clone(mappedColor);
154
- clipped = toGamut(clipped, { space, method: "clip" });
155
- let deltaE = de(mappedColor, clipped);
156
-
157
- if (deltaE - jnd < ε) {
158
- low = get(mappedColor, coordId);
159
- }
160
- else {
161
- high = get(mappedColor, coordId);
162
- }
163
-
164
- set(mappedColor, coordId, (low + high) / 2);
165
- }
166
-
167
- spaceColor = to(mappedColor, space);
168
- }
169
- else {
170
- spaceColor = clipped;
171
- }
172
- }
173
- else {
174
- spaceColor = to(color, space);
175
- }
176
-
177
- if (method === "clip" // Dumb coord clipping
178
- // finish off smarter gamut mapping with clip to get rid of ε, see #17
179
- || !inGamut(spaceColor, space, { epsilon: 0 })
180
- ) {
181
- let bounds = Object.values(space.coords).map(c => c.range || []);
182
-
183
- spaceColor.coords = spaceColor.coords.map((c, i) => {
184
- let [min, max] = bounds[i];
185
-
186
- if (min !== undefined) {
187
- c = Math.max(min, c);
188
- }
189
-
190
- if (max !== undefined) {
191
- c = Math.min(c, max);
192
- }
193
-
194
- return c;
195
- });
196
- }
197
- }
198
-
199
- if (space !== color.space) {
200
- spaceColor = to(spaceColor, color.space);
201
- }
202
-
203
- color.coords = spaceColor.coords;
204
- return color;
205
- }
206
-
207
- toGamut.returns = "color";
208
-
209
- // The reference colors to be used if lightness is out of the range 0-1 in the
210
- // `Oklch` space. These are created in the `Oklab` space, as it is used by the
211
- // DeltaEOK calculation, so it is guaranteed to be imported.
212
- const COLORS = {
213
- WHITE: { space: oklab, coords: [1, 0, 0] },
214
- BLACK: { space: oklab, coords: [0, 0, 0] },
215
- };
216
-
217
- /**
218
- * Given a color `origin`, returns a new color that is in gamut using
219
- * the CSS Gamut Mapping Algorithm. If `space` is specified, it will be in gamut
220
- * in `space`, and returned in `space`. Otherwise, it will be in gamut and
221
- * returned in the color space of `origin`.
222
- * @param {Object} origin
223
- * @param {Object} options
224
- * @param {ColorSpace|string} options.space
225
- * @returns {Color}
226
- */
227
- export function toGamutCSS (origin, {space} = {}) {
228
- const JND = 0.02;
229
- const ε = 0.0001;
230
-
231
- origin = getColor(origin);
232
-
233
- if (!space) {
234
- space = origin.space;
235
- }
236
-
237
- space = ColorSpace.get(space);
238
- const oklchSpace = ColorSpace.get("oklch");
239
-
240
- if (space.isUnbounded) {
241
- return to(origin, space);
242
- }
243
-
244
- const origin_OKLCH = to(origin, oklchSpace);
245
- let L = origin_OKLCH.coords[0];
246
-
247
- // return media white or black, if lightness is out of range
248
- if (L >= 1) {
249
- const white = to(COLORS.WHITE, space);
250
- white.alpha = origin.alpha;
251
- return to(white, space);
252
- }
253
- if (L <= 0) {
254
- const black = to(COLORS.BLACK, space);
255
- black.alpha = origin.alpha;
256
- return to(black, space);
257
- }
258
-
259
- if (inGamut(origin_OKLCH, space, {epsilon: 0})) {
260
- return to(origin_OKLCH, space);
261
- }
262
-
263
- function clip (_color) {
264
- const destColor = to(_color, space);
265
- const spaceCoords = Object.values(space.coords);
266
- destColor.coords = destColor.coords.map((coord, index) => {
267
- if ("range" in spaceCoords[index]) {
268
- const [min, max] = spaceCoords[index].range;
269
- return util.clamp(min, coord, max);
270
- }
271
- return coord;
272
- });
273
- return destColor;
274
- }
275
- let min = 0;
276
- let max = origin_OKLCH.coords[1];
277
- let min_inGamut = true;
278
- let current = clone(origin_OKLCH);
279
- let clipped = clip(current);
280
-
281
- let E = deltaEOK(clipped, current);
282
- if (E < JND) {
283
- return clipped;
284
- }
285
-
286
- while ((max - min) > ε) {
287
- const chroma = (min + max) / 2;
288
- current.coords[1] = chroma;
289
- if (min_inGamut && inGamut(current, space, {epsilon: 0})) {
290
- min = chroma;
291
- }
292
- else {
293
- clipped = clip(current);
294
- E = deltaEOK(clipped, current);
295
- if (E < JND) {
296
- if ((JND - E < ε)) {
297
- break;
298
- }
299
- else {
300
- min_inGamut = false;
301
- min = chroma;
302
- }
303
- }
304
- else {
305
- max = chroma;
306
- }
307
- }
308
- }
309
- return clipped;
310
- }