color-elements 0.0.1

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 (448) hide show
  1. package/README.md +33 -0
  2. package/_build/copy-config.js +90 -0
  3. package/_build/copy-config.json +18 -0
  4. package/_build/eleventy.js +16 -0
  5. package/_data/eleventyComputed.11tydata.js +29 -0
  6. package/_headers +2 -0
  7. package/_redirects +2 -0
  8. package/assets/css/style.css +1 -0
  9. package/assets/js/index.js +15 -0
  10. package/color-gamut/README.md +75 -0
  11. package/color-gamut/color-gamut.js +172 -0
  12. package/color-gamut/style.css +32 -0
  13. package/color-slider/README.md +84 -0
  14. package/color-slider/color-slider.js +79 -0
  15. package/color-slider/style.css +65 -0
  16. package/color-swatch/color-swatch.css +41 -0
  17. package/color-swatch/color-swatch.js +79 -0
  18. package/color-swatch/index.njk +40 -0
  19. package/common/attributes.js +68 -0
  20. package/common/color.js +10 -0
  21. package/css-color/css-color.js +256 -0
  22. package/css-color/index.njk +43 -0
  23. package/css-color/style.css +67 -0
  24. package/elements.11tydata.json +5 -0
  25. package/index.js +4 -0
  26. package/lib/README.md +4 -0
  27. package/lib/colorjs.io/LICENSE +21 -0
  28. package/lib/colorjs.io/README.json +3 -0
  29. package/lib/colorjs.io/README.md +257 -0
  30. package/lib/colorjs.io/colorjs.io/LICENSE +21 -0
  31. package/lib/colorjs.io/colorjs.io/README.json +3 -0
  32. package/lib/colorjs.io/colorjs.io/README.md +257 -0
  33. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +5437 -0
  34. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +1 -0
  35. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +7048 -0
  36. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +1 -0
  37. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +2 -0
  38. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +1 -0
  39. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +2 -0
  40. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +1 -0
  41. package/lib/colorjs.io/colorjs.io/dist/color.cjs +5759 -0
  42. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +1 -0
  43. package/lib/colorjs.io/colorjs.io/dist/color.global.js +5760 -0
  44. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +1 -0
  45. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +7400 -0
  46. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +1 -0
  47. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +2 -0
  48. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +1 -0
  49. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +2 -0
  50. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +1 -0
  51. package/lib/colorjs.io/colorjs.io/dist/color.js +5755 -0
  52. package/lib/colorjs.io/colorjs.io/dist/color.js.map +1 -0
  53. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +7399 -0
  54. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +1 -0
  55. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +7395 -0
  56. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +1 -0
  57. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +2 -0
  58. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +1 -0
  59. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +2 -0
  60. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +1 -0
  61. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +2 -0
  62. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +1 -0
  63. package/lib/colorjs.io/colorjs.io/dist/color.min.js +2 -0
  64. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +1 -0
  65. package/lib/colorjs.io/colorjs.io/package.json +113 -0
  66. package/lib/colorjs.io/colorjs.io/src/CATs.js +131 -0
  67. package/lib/colorjs.io/colorjs.io/src/adapt.js +62 -0
  68. package/lib/colorjs.io/colorjs.io/src/angles.js +44 -0
  69. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +33 -0
  70. package/lib/colorjs.io/colorjs.io/src/clone.js +7 -0
  71. package/lib/colorjs.io/colorjs.io/src/color.js +201 -0
  72. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +102 -0
  73. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +17 -0
  74. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +22 -0
  75. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +20 -0
  76. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +27 -0
  77. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +25 -0
  78. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +6 -0
  79. package/lib/colorjs.io/colorjs.io/src/contrast.js +28 -0
  80. package/lib/colorjs.io/colorjs.io/src/defaults.js +12 -0
  81. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +179 -0
  82. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +7 -0
  83. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +114 -0
  84. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +51 -0
  85. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +24 -0
  86. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +43 -0
  87. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +19 -0
  88. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +27 -0
  89. package/lib/colorjs.io/colorjs.io/src/deltaE.js +19 -0
  90. package/lib/colorjs.io/colorjs.io/src/display.js +83 -0
  91. package/lib/colorjs.io/colorjs.io/src/distance.js +21 -0
  92. package/lib/colorjs.io/colorjs.io/src/equals.js +10 -0
  93. package/lib/colorjs.io/colorjs.io/src/get.js +11 -0
  94. package/lib/colorjs.io/colorjs.io/src/getAll.js +20 -0
  95. package/lib/colorjs.io/colorjs.io/src/getColor.js +36 -0
  96. package/lib/colorjs.io/colorjs.io/src/hooks.js +37 -0
  97. package/lib/colorjs.io/colorjs.io/src/inGamut.js +25 -0
  98. package/lib/colorjs.io/colorjs.io/src/index-fn.js +28 -0
  99. package/lib/colorjs.io/colorjs.io/src/index.js +38 -0
  100. package/lib/colorjs.io/colorjs.io/src/interpolation.js +222 -0
  101. package/lib/colorjs.io/colorjs.io/src/keywords.js +158 -0
  102. package/lib/colorjs.io/colorjs.io/src/luminance.js +27 -0
  103. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +44 -0
  104. package/lib/colorjs.io/colorjs.io/src/parse.js +198 -0
  105. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +64 -0
  106. package/lib/colorjs.io/colorjs.io/src/serialize.js +86 -0
  107. package/lib/colorjs.io/colorjs.io/src/set.js +33 -0
  108. package/lib/colorjs.io/colorjs.io/src/setAll.js +12 -0
  109. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +86 -0
  110. package/lib/colorjs.io/colorjs.io/src/space.js +440 -0
  111. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +28 -0
  112. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +11 -0
  113. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +76 -0
  114. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +54 -0
  115. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +362 -0
  116. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +157 -0
  117. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +130 -0
  118. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +91 -0
  119. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +162 -0
  120. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +65 -0
  121. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +58 -0
  122. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +133 -0
  123. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +7 -0
  124. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +29 -0
  125. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +8 -0
  126. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +118 -0
  127. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +53 -0
  128. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +74 -0
  129. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +74 -0
  130. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +67 -0
  131. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +68 -0
  132. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +85 -0
  133. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +74 -0
  134. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +68 -0
  135. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +22 -0
  136. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +13 -0
  137. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +28 -0
  138. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +19 -0
  139. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +27 -0
  140. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +31 -0
  141. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +49 -0
  142. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +37 -0
  143. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +30 -0
  144. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +127 -0
  145. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +40 -0
  146. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +12 -0
  147. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +18 -0
  148. package/lib/colorjs.io/colorjs.io/src/to.js +26 -0
  149. package/lib/colorjs.io/colorjs.io/src/toGamut.js +310 -0
  150. package/lib/colorjs.io/colorjs.io/src/util.js +254 -0
  151. package/lib/colorjs.io/colorjs.io/src/variations.js +14 -0
  152. package/lib/colorjs.io/colorjs.io/types/index.d.cts +4 -0
  153. package/lib/colorjs.io/colorjs.io/types/index.d.ts +42 -0
  154. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +13 -0
  155. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +12 -0
  156. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +7 -0
  157. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +7 -0
  158. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +3 -0
  159. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +160 -0
  160. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +5 -0
  161. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +5 -0
  162. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +5 -0
  163. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +5 -0
  164. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +5 -0
  165. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +5 -0
  166. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +11 -0
  167. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +12 -0
  168. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +2 -0
  169. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +11 -0
  170. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +5 -0
  171. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +9 -0
  172. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +5 -0
  173. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +5 -0
  174. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +5 -0
  175. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +5 -0
  176. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +14 -0
  177. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +12 -0
  178. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +17 -0
  179. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +8 -0
  180. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +3 -0
  181. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +4 -0
  182. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +7 -0
  183. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +4 -0
  184. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +52 -0
  185. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +8 -0
  186. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +1 -0
  187. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +63 -0
  188. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +125 -0
  189. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +77 -0
  190. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +2 -0
  191. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +10 -0
  192. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +9 -0
  193. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +16 -0
  194. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +10 -0
  195. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +13 -0
  196. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +18 -0
  197. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +14 -0
  198. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +1 -0
  199. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +69 -0
  200. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +143 -0
  201. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +3 -0
  202. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +3 -0
  203. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +3 -0
  204. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +3 -0
  205. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +3 -0
  206. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +3 -0
  207. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +3 -0
  208. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +3 -0
  209. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +3 -0
  210. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +3 -0
  211. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +9 -0
  212. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +29 -0
  213. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +4 -0
  214. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +3 -0
  215. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +3 -0
  216. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +3 -0
  217. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +3 -0
  218. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +3 -0
  219. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +3 -0
  220. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +3 -0
  221. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +3 -0
  222. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +3 -0
  223. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +3 -0
  224. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +3 -0
  225. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +3 -0
  226. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +3 -0
  227. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +3 -0
  228. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +3 -0
  229. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +3 -0
  230. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +3 -0
  231. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +3 -0
  232. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +3 -0
  233. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +3 -0
  234. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +3 -0
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +3 -0
  236. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +14 -0
  237. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +45 -0
  238. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +58 -0
  239. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +5 -0
  240. package/lib/colorjs.io/dist/color-fn.cjs +5437 -0
  241. package/lib/colorjs.io/dist/color-fn.cjs.map +1 -0
  242. package/lib/colorjs.io/dist/color-fn.legacy.cjs +7048 -0
  243. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +1 -0
  244. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +2 -0
  245. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +1 -0
  246. package/lib/colorjs.io/dist/color-fn.min.cjs +2 -0
  247. package/lib/colorjs.io/dist/color-fn.min.cjs.map +1 -0
  248. package/lib/colorjs.io/dist/color.cjs +5759 -0
  249. package/lib/colorjs.io/dist/color.cjs.map +1 -0
  250. package/lib/colorjs.io/dist/color.global.js +5760 -0
  251. package/lib/colorjs.io/dist/color.global.js.map +1 -0
  252. package/lib/colorjs.io/dist/color.global.legacy.js +7400 -0
  253. package/lib/colorjs.io/dist/color.global.legacy.js.map +1 -0
  254. package/lib/colorjs.io/dist/color.global.legacy.min.js +2 -0
  255. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +1 -0
  256. package/lib/colorjs.io/dist/color.global.min.js +2 -0
  257. package/lib/colorjs.io/dist/color.global.min.js.map +1 -0
  258. package/lib/colorjs.io/dist/color.js +5755 -0
  259. package/lib/colorjs.io/dist/color.js.map +1 -0
  260. package/lib/colorjs.io/dist/color.legacy.cjs +7399 -0
  261. package/lib/colorjs.io/dist/color.legacy.cjs.map +1 -0
  262. package/lib/colorjs.io/dist/color.legacy.js +7395 -0
  263. package/lib/colorjs.io/dist/color.legacy.js.map +1 -0
  264. package/lib/colorjs.io/dist/color.legacy.min.cjs +2 -0
  265. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +1 -0
  266. package/lib/colorjs.io/dist/color.legacy.min.js +2 -0
  267. package/lib/colorjs.io/dist/color.legacy.min.js.map +1 -0
  268. package/lib/colorjs.io/dist/color.min.cjs +2 -0
  269. package/lib/colorjs.io/dist/color.min.cjs.map +1 -0
  270. package/lib/colorjs.io/dist/color.min.js +2 -0
  271. package/lib/colorjs.io/dist/color.min.js.map +1 -0
  272. package/lib/colorjs.io/package.json +113 -0
  273. package/lib/colorjs.io/src/CATs.js +131 -0
  274. package/lib/colorjs.io/src/adapt.js +62 -0
  275. package/lib/colorjs.io/src/angles.js +44 -0
  276. package/lib/colorjs.io/src/chromaticity.js +33 -0
  277. package/lib/colorjs.io/src/clone.js +7 -0
  278. package/lib/colorjs.io/src/color.js +201 -0
  279. package/lib/colorjs.io/src/contrast/APCA.js +102 -0
  280. package/lib/colorjs.io/src/contrast/Lstar.js +17 -0
  281. package/lib/colorjs.io/src/contrast/Michelson.js +22 -0
  282. package/lib/colorjs.io/src/contrast/WCAG21.js +20 -0
  283. package/lib/colorjs.io/src/contrast/Weber.js +27 -0
  284. package/lib/colorjs.io/src/contrast/deltaPhi.js +25 -0
  285. package/lib/colorjs.io/src/contrast/index.js +6 -0
  286. package/lib/colorjs.io/src/contrast.js +28 -0
  287. package/lib/colorjs.io/src/defaults.js +12 -0
  288. package/lib/colorjs.io/src/deltaE/deltaE2000.js +179 -0
  289. package/lib/colorjs.io/src/deltaE/deltaE76.js +7 -0
  290. package/lib/colorjs.io/src/deltaE/deltaECMC.js +114 -0
  291. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +51 -0
  292. package/lib/colorjs.io/src/deltaE/deltaEITP.js +24 -0
  293. package/lib/colorjs.io/src/deltaE/deltaEJz.js +43 -0
  294. package/lib/colorjs.io/src/deltaE/deltaEOK.js +19 -0
  295. package/lib/colorjs.io/src/deltaE/index.js +27 -0
  296. package/lib/colorjs.io/src/deltaE.js +19 -0
  297. package/lib/colorjs.io/src/display.js +83 -0
  298. package/lib/colorjs.io/src/distance.js +21 -0
  299. package/lib/colorjs.io/src/equals.js +10 -0
  300. package/lib/colorjs.io/src/get.js +11 -0
  301. package/lib/colorjs.io/src/getAll.js +20 -0
  302. package/lib/colorjs.io/src/getColor.js +36 -0
  303. package/lib/colorjs.io/src/hooks.js +37 -0
  304. package/lib/colorjs.io/src/inGamut.js +25 -0
  305. package/lib/colorjs.io/src/index-fn.js +28 -0
  306. package/lib/colorjs.io/src/index.js +38 -0
  307. package/lib/colorjs.io/src/interpolation.js +222 -0
  308. package/lib/colorjs.io/src/keywords.js +158 -0
  309. package/lib/colorjs.io/src/luminance.js +27 -0
  310. package/lib/colorjs.io/src/multiply-matrices.js +44 -0
  311. package/lib/colorjs.io/src/parse.js +198 -0
  312. package/lib/colorjs.io/src/rgbspace.js +64 -0
  313. package/lib/colorjs.io/src/serialize.js +86 -0
  314. package/lib/colorjs.io/src/set.js +33 -0
  315. package/lib/colorjs.io/src/setAll.js +12 -0
  316. package/lib/colorjs.io/src/space-accessors.js +86 -0
  317. package/lib/colorjs.io/src/space.js +440 -0
  318. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +28 -0
  319. package/lib/colorjs.io/src/spaces/a98rgb.js +11 -0
  320. package/lib/colorjs.io/src/spaces/acescc.js +76 -0
  321. package/lib/colorjs.io/src/spaces/acescg.js +54 -0
  322. package/lib/colorjs.io/src/spaces/cam16.js +362 -0
  323. package/lib/colorjs.io/src/spaces/hct.js +157 -0
  324. package/lib/colorjs.io/src/spaces/hpluv.js +130 -0
  325. package/lib/colorjs.io/src/spaces/hsl.js +91 -0
  326. package/lib/colorjs.io/src/spaces/hsluv.js +162 -0
  327. package/lib/colorjs.io/src/spaces/hsv.js +65 -0
  328. package/lib/colorjs.io/src/spaces/hwb.js +58 -0
  329. package/lib/colorjs.io/src/spaces/ictcp.js +133 -0
  330. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +7 -0
  331. package/lib/colorjs.io/src/spaces/index-fn.js +29 -0
  332. package/lib/colorjs.io/src/spaces/index.js +8 -0
  333. package/lib/colorjs.io/src/spaces/jzazbz.js +118 -0
  334. package/lib/colorjs.io/src/spaces/jzczhz.js +53 -0
  335. package/lib/colorjs.io/src/spaces/lab-d65.js +74 -0
  336. package/lib/colorjs.io/src/spaces/lab.js +74 -0
  337. package/lib/colorjs.io/src/spaces/lch.js +67 -0
  338. package/lib/colorjs.io/src/spaces/lchuv.js +68 -0
  339. package/lib/colorjs.io/src/spaces/luv.js +85 -0
  340. package/lib/colorjs.io/src/spaces/oklab.js +74 -0
  341. package/lib/colorjs.io/src/spaces/oklch.js +68 -0
  342. package/lib/colorjs.io/src/spaces/p3-linear.js +22 -0
  343. package/lib/colorjs.io/src/spaces/p3.js +13 -0
  344. package/lib/colorjs.io/src/spaces/prophoto-linear.js +28 -0
  345. package/lib/colorjs.io/src/spaces/prophoto.js +19 -0
  346. package/lib/colorjs.io/src/spaces/rec2020-linear.js +27 -0
  347. package/lib/colorjs.io/src/spaces/rec2020.js +31 -0
  348. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +49 -0
  349. package/lib/colorjs.io/src/spaces/rec2100-pq.js +37 -0
  350. package/lib/colorjs.io/src/spaces/srgb-linear.js +30 -0
  351. package/lib/colorjs.io/src/spaces/srgb.js +127 -0
  352. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +40 -0
  353. package/lib/colorjs.io/src/spaces/xyz-d50.js +12 -0
  354. package/lib/colorjs.io/src/spaces/xyz-d65.js +18 -0
  355. package/lib/colorjs.io/src/to.js +26 -0
  356. package/lib/colorjs.io/src/toGamut.js +310 -0
  357. package/lib/colorjs.io/src/util.js +254 -0
  358. package/lib/colorjs.io/src/variations.js +14 -0
  359. package/lib/colorjs.io/types/index.d.cts +4 -0
  360. package/lib/colorjs.io/types/index.d.ts +42 -0
  361. package/lib/colorjs.io/types/src/CATs.d.ts +13 -0
  362. package/lib/colorjs.io/types/src/adapt.d.ts +12 -0
  363. package/lib/colorjs.io/types/src/angles.d.ts +7 -0
  364. package/lib/colorjs.io/types/src/chromaticity.d.ts +7 -0
  365. package/lib/colorjs.io/types/src/clone.d.ts +3 -0
  366. package/lib/colorjs.io/types/src/color.d.ts +160 -0
  367. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +5 -0
  368. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +5 -0
  369. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +5 -0
  370. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +5 -0
  371. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +5 -0
  372. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +5 -0
  373. package/lib/colorjs.io/types/src/contrast/index.d.ts +11 -0
  374. package/lib/colorjs.io/types/src/contrast.d.ts +12 -0
  375. package/lib/colorjs.io/types/src/defaults.d.ts +2 -0
  376. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +11 -0
  377. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +5 -0
  378. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +9 -0
  379. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +5 -0
  380. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +5 -0
  381. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +5 -0
  382. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +5 -0
  383. package/lib/colorjs.io/types/src/deltaE/index.d.ts +14 -0
  384. package/lib/colorjs.io/types/src/deltaE.d.ts +12 -0
  385. package/lib/colorjs.io/types/src/display.d.ts +17 -0
  386. package/lib/colorjs.io/types/src/distance.d.ts +8 -0
  387. package/lib/colorjs.io/types/src/equals.d.ts +3 -0
  388. package/lib/colorjs.io/types/src/get.d.ts +4 -0
  389. package/lib/colorjs.io/types/src/getAll.d.ts +7 -0
  390. package/lib/colorjs.io/types/src/getColor.d.ts +4 -0
  391. package/lib/colorjs.io/types/src/hooks.d.ts +52 -0
  392. package/lib/colorjs.io/types/src/inGamut.d.ts +8 -0
  393. package/lib/colorjs.io/types/src/index-fn.d.cts +1 -0
  394. package/lib/colorjs.io/types/src/index-fn.d.ts +63 -0
  395. package/lib/colorjs.io/types/src/index.d.ts +125 -0
  396. package/lib/colorjs.io/types/src/interpolation.d.ts +77 -0
  397. package/lib/colorjs.io/types/src/keywords.d.ts +2 -0
  398. package/lib/colorjs.io/types/src/luminance.d.ts +10 -0
  399. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +9 -0
  400. package/lib/colorjs.io/types/src/parse.d.ts +16 -0
  401. package/lib/colorjs.io/types/src/rgbspace.d.ts +10 -0
  402. package/lib/colorjs.io/types/src/serialize.d.ts +13 -0
  403. package/lib/colorjs.io/types/src/set.d.ts +18 -0
  404. package/lib/colorjs.io/types/src/setAll.d.ts +14 -0
  405. package/lib/colorjs.io/types/src/space-accessors.d.ts +1 -0
  406. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +69 -0
  407. package/lib/colorjs.io/types/src/space.d.ts +143 -0
  408. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +3 -0
  409. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +3 -0
  410. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +3 -0
  411. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +3 -0
  412. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +3 -0
  413. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +3 -0
  414. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +3 -0
  415. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +3 -0
  416. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +3 -0
  417. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +3 -0
  418. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +9 -0
  419. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +29 -0
  420. package/lib/colorjs.io/types/src/spaces/index.d.ts +4 -0
  421. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +3 -0
  422. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +3 -0
  423. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +3 -0
  424. package/lib/colorjs.io/types/src/spaces/lab.d.ts +3 -0
  425. package/lib/colorjs.io/types/src/spaces/lch.d.ts +3 -0
  426. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +3 -0
  427. package/lib/colorjs.io/types/src/spaces/luv.d.ts +3 -0
  428. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +3 -0
  429. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +3 -0
  430. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +3 -0
  431. package/lib/colorjs.io/types/src/spaces/p3.d.ts +3 -0
  432. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +3 -0
  433. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +3 -0
  434. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +3 -0
  435. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +3 -0
  436. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +3 -0
  437. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +3 -0
  438. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +3 -0
  439. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +3 -0
  440. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +3 -0
  441. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +3 -0
  442. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +3 -0
  443. package/lib/colorjs.io/types/src/to.d.ts +14 -0
  444. package/lib/colorjs.io/types/src/toGamut.d.ts +45 -0
  445. package/lib/colorjs.io/types/src/util.d.ts +58 -0
  446. package/lib/colorjs.io/types/src/variations.d.ts +5 -0
  447. package/logo.svg +159 -0
  448. package/package.json +41 -0
@@ -0,0 +1,53 @@
1
+ import ColorSpace from "../space.js";
2
+ import Jzazbz from "./jzazbz.js";
3
+ import {constrain as constrainAngle} from "../angles.js";
4
+
5
+ export default new ColorSpace({
6
+ id: "jzczhz",
7
+ name: "JzCzHz",
8
+ coords: {
9
+ jz: {
10
+ refRange: [0, 1],
11
+ name: "Jz",
12
+ },
13
+ cz: {
14
+ refRange: [0, 1],
15
+ name: "Chroma",
16
+ },
17
+ hz: {
18
+ refRange: [0, 360],
19
+ type: "angle",
20
+ name: "Hue",
21
+ },
22
+ },
23
+
24
+ base: Jzazbz,
25
+ fromBase (jzazbz) {
26
+ // Convert to polar form
27
+ let [Jz, az, bz] = jzazbz;
28
+ let hue;
29
+ const ε = 0.0002; // chromatic components much smaller than a,b
30
+
31
+ if (Math.abs(az) < ε && Math.abs(bz) < ε) {
32
+ hue = NaN;
33
+ }
34
+ else {
35
+ hue = Math.atan2(bz, az) * 180 / Math.PI;
36
+ }
37
+
38
+ return [
39
+ Jz, // Jz is still Jz
40
+ Math.sqrt(az ** 2 + bz ** 2), // Chroma
41
+ constrainAngle(hue), // Hue, in degrees [0 to 360)
42
+ ];
43
+ },
44
+ toBase (jzczhz) {
45
+ // Convert from polar form
46
+ // debugger;
47
+ return [
48
+ jzczhz[0], // Jz is still Jz
49
+ jzczhz[1] * Math.cos(jzczhz[2] * Math.PI / 180), // az
50
+ jzczhz[1] * Math.sin(jzczhz[2] * Math.PI / 180), // bz
51
+ ];
52
+ },
53
+ });
@@ -0,0 +1,74 @@
1
+ import ColorSpace from "../space.js";
2
+ import {WHITES} from "../adapt.js";
3
+ import xyz_d65 from "./xyz-d65.js";
4
+
5
+ // κ * ε = 2^3 = 8
6
+ const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
7
+ const ε3 = 24 / 116;
8
+ const κ = 24389 / 27; // 29^3/3^3
9
+
10
+ let white = WHITES.D65;
11
+
12
+ export default new ColorSpace({
13
+ id: "lab-d65",
14
+ name: "Lab D65",
15
+ coords: {
16
+ l: {
17
+ refRange: [0, 100],
18
+ name: "Lightness",
19
+ },
20
+ a: {
21
+ refRange: [-125, 125],
22
+ },
23
+ b: {
24
+ refRange: [-125, 125],
25
+ },
26
+ },
27
+
28
+ // Assuming XYZ is relative to D65, convert to CIE Lab
29
+ // from CIE standard, which now defines these as a rational fraction
30
+ white,
31
+
32
+ base: xyz_d65,
33
+ // Convert D65-adapted XYZ to Lab
34
+ // CIE 15.3:2004 section 8.2.1.1
35
+ fromBase (XYZ) {
36
+ // compute xyz, which is XYZ scaled relative to reference white
37
+ let xyz = XYZ.map((value, i) => value / white[i]);
38
+
39
+ // now compute f
40
+ let f = xyz.map(value => value > ε ? Math.cbrt(value) : (κ * value + 16) / 116);
41
+
42
+ return [
43
+ (116 * f[1]) - 16, // L
44
+ 500 * (f[0] - f[1]), // a
45
+ 200 * (f[1] - f[2]), // b
46
+ ];
47
+ },
48
+ // Convert Lab to D65-adapted XYZ
49
+ // Same result as CIE 15.3:2004 Appendix D although the derivation is different
50
+ // http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
51
+ toBase (Lab) {
52
+ // compute f, starting with the luminance-related term
53
+ let f = [];
54
+ f[1] = (Lab[0] + 16) / 116;
55
+ f[0] = Lab[1] / 500 + f[1];
56
+ f[2] = f[1] - Lab[2] / 200;
57
+
58
+ // compute xyz
59
+ let xyz = [
60
+ f[0] > ε3 ? Math.pow(f[0], 3) : (116 * f[0] - 16) / κ,
61
+ Lab[0] > 8 ? Math.pow((Lab[0] + 16) / 116, 3) : Lab[0] / κ,
62
+ f[2] > ε3 ? Math.pow(f[2], 3) : (116 * f[2] - 16) / κ,
63
+ ];
64
+
65
+ // Compute XYZ by scaling xyz by reference white
66
+ return xyz.map((value, i) => value * white[i]);
67
+ },
68
+
69
+ formats: {
70
+ "lab-d65": {
71
+ coords: ["<number> | <percentage>", "<number> | <percentage>[-1,1]", "<number> | <percentage>[-1,1]"],
72
+ },
73
+ },
74
+ });
@@ -0,0 +1,74 @@
1
+ import ColorSpace from "../space.js";
2
+ import {WHITES} from "../adapt.js";
3
+ import xyz_d50 from "./xyz-d50.js";
4
+
5
+ // κ * ε = 2^3 = 8
6
+ const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
7
+ const ε3 = 24 / 116;
8
+ const κ = 24389 / 27; // 29^3/3^3
9
+
10
+ let white = WHITES.D50;
11
+
12
+ export default new ColorSpace({
13
+ id: "lab",
14
+ name: "Lab",
15
+ coords: {
16
+ l: {
17
+ refRange: [0, 100],
18
+ name: "Lightness",
19
+ },
20
+ a: {
21
+ refRange: [-125, 125],
22
+ },
23
+ b: {
24
+ refRange: [-125, 125],
25
+ },
26
+ },
27
+
28
+ // Assuming XYZ is relative to D50, convert to CIE Lab
29
+ // from CIE standard, which now defines these as a rational fraction
30
+ white,
31
+
32
+ base: xyz_d50,
33
+ // Convert D50-adapted XYX to Lab
34
+ // CIE 15.3:2004 section 8.2.1.1
35
+ fromBase (XYZ) {
36
+ // compute xyz, which is XYZ scaled relative to reference white
37
+ let xyz = XYZ.map((value, i) => value / white[i]);
38
+
39
+ // now compute f
40
+ let f = xyz.map(value => value > ε ? Math.cbrt(value) : (κ * value + 16) / 116);
41
+
42
+ return [
43
+ (116 * f[1]) - 16, // L
44
+ 500 * (f[0] - f[1]), // a
45
+ 200 * (f[1] - f[2]), // b
46
+ ];
47
+ },
48
+ // Convert Lab to D50-adapted XYZ
49
+ // Same result as CIE 15.3:2004 Appendix D although the derivation is different
50
+ // http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
51
+ toBase (Lab) {
52
+ // compute f, starting with the luminance-related term
53
+ let f = [];
54
+ f[1] = (Lab[0] + 16) / 116;
55
+ f[0] = Lab[1] / 500 + f[1];
56
+ f[2] = f[1] - Lab[2] / 200;
57
+
58
+ // compute xyz
59
+ let xyz = [
60
+ f[0] > ε3 ? Math.pow(f[0], 3) : (116 * f[0] - 16) / κ,
61
+ Lab[0] > 8 ? Math.pow((Lab[0] + 16) / 116, 3) : Lab[0] / κ,
62
+ f[2] > ε3 ? Math.pow(f[2], 3) : (116 * f[2] - 16) / κ,
63
+ ];
64
+
65
+ // Compute XYZ by scaling xyz by reference white
66
+ return xyz.map((value, i) => value * white[i]);
67
+ },
68
+
69
+ formats: {
70
+ "lab": {
71
+ coords: ["<number> | <percentage>", "<number> | <percentage>[-1,1]", "<number> | <percentage>[-1,1]"],
72
+ },
73
+ },
74
+ });
@@ -0,0 +1,67 @@
1
+ import ColorSpace from "../space.js";
2
+ import Lab from "./lab.js";
3
+ import {constrain as constrainAngle} from "../angles.js";
4
+
5
+ export default new ColorSpace({
6
+ id: "lch",
7
+ name: "LCH",
8
+ coords: {
9
+ l: {
10
+ refRange: [0, 100],
11
+ name: "Lightness",
12
+ },
13
+ c: {
14
+ refRange: [0, 150],
15
+ name: "Chroma",
16
+ },
17
+ h: {
18
+ refRange: [0, 360],
19
+ type: "angle",
20
+ name: "Hue",
21
+ },
22
+ },
23
+
24
+ base: Lab,
25
+ fromBase (Lab) {
26
+ // Convert to polar form
27
+ let [L, a, b] = Lab;
28
+ let hue;
29
+ const ε = 0.02;
30
+
31
+ if (Math.abs(a) < ε && Math.abs(b) < ε) {
32
+ hue = NaN;
33
+ }
34
+ else {
35
+ hue = Math.atan2(b, a) * 180 / Math.PI;
36
+ }
37
+
38
+ return [
39
+ L, // L is still L
40
+ Math.sqrt(a ** 2 + b ** 2), // Chroma
41
+ constrainAngle(hue), // Hue, in degrees [0 to 360)
42
+ ];
43
+ },
44
+ toBase (LCH) {
45
+ // Convert from polar form
46
+ let [Lightness, Chroma, Hue] = LCH;
47
+ // Clamp any negative Chroma
48
+ if (Chroma < 0) {
49
+ Chroma = 0;
50
+ }
51
+ // Deal with NaN Hue
52
+ if (isNaN(Hue)) {
53
+ Hue = 0;
54
+ }
55
+ return [
56
+ Lightness, // L is still L
57
+ Chroma * Math.cos(Hue * Math.PI / 180), // a
58
+ Chroma * Math.sin(Hue * Math.PI / 180), // b
59
+ ];
60
+ },
61
+
62
+ formats: {
63
+ "lch": {
64
+ coords: ["<number> | <percentage>", "<number> | <percentage>", "<number> | <angle>"],
65
+ },
66
+ },
67
+ });
@@ -0,0 +1,68 @@
1
+ import ColorSpace from "../space.js";
2
+ import Luv from "./luv.js";
3
+ import {constrain as constrainAngle} from "../angles.js";
4
+
5
+ export default new ColorSpace({
6
+ id: "lchuv",
7
+ name: "LChuv",
8
+ coords: {
9
+ l: {
10
+ refRange: [0, 100],
11
+ name: "Lightness",
12
+ },
13
+ c: {
14
+ refRange: [0, 220],
15
+ name: "Chroma",
16
+ },
17
+ h: {
18
+ refRange: [0, 360],
19
+ type: "angle",
20
+ name: "Hue",
21
+ },
22
+ },
23
+
24
+ base: Luv,
25
+ fromBase (Luv) {
26
+ // Convert to polar form
27
+ let [L, u, v] = Luv;
28
+ let hue;
29
+ const ε = 0.02;
30
+
31
+ if (Math.abs(u) < ε && Math.abs(v) < ε) {
32
+ hue = NaN;
33
+ }
34
+ else {
35
+ hue = Math.atan2(v, u) * 180 / Math.PI;
36
+ }
37
+
38
+ return [
39
+ L, // L is still L
40
+ Math.sqrt(u ** 2 + v ** 2), // Chroma
41
+ constrainAngle(hue), // Hue, in degrees [0 to 360)
42
+ ];
43
+ },
44
+ toBase (LCH) {
45
+ // Convert from polar form
46
+ let [Lightness, Chroma, Hue] = LCH;
47
+ // Clamp any negative Chroma
48
+ if (Chroma < 0) {
49
+ Chroma = 0;
50
+ }
51
+ // Deal with NaN Hue
52
+ if (isNaN(Hue)) {
53
+ Hue = 0;
54
+ }
55
+ return [
56
+ Lightness, // L is still L
57
+ Chroma * Math.cos(Hue * Math.PI / 180), // u
58
+ Chroma * Math.sin(Hue * Math.PI / 180), // v
59
+ ];
60
+ },
61
+
62
+ formats: {
63
+ color: {
64
+ id: "--lchuv",
65
+ coords: ["<number> | <percentage>", "<number> | <percentage>", "<number> | <angle>"],
66
+ },
67
+ },
68
+ });
@@ -0,0 +1,85 @@
1
+ import ColorSpace from "../space.js";
2
+ import {WHITES} from "../adapt.js";
3
+ import xyz_d65 from "./xyz-d65.js";
4
+ import {uv} from "../chromaticity.js";
5
+ import {isNone, skipNone} from "../util.js";
6
+
7
+ let white = WHITES.D65;
8
+
9
+ const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
10
+ const κ = 24389 / 27; // 29^3/3^3
11
+ const [U_PRIME_WHITE, V_PRIME_WHITE] = uv({space: xyz_d65, coords: white});
12
+
13
+ export default new ColorSpace({
14
+ id: "luv",
15
+ name: "Luv",
16
+ coords: {
17
+ l: {
18
+ refRange: [0, 100],
19
+ name: "Lightness",
20
+ },
21
+ // Reference ranges from https://facelessuser.github.io/coloraide/colors/luv/
22
+ u: {
23
+ refRange: [-215, 215],
24
+ },
25
+ v: {
26
+ refRange: [-215, 215],
27
+ },
28
+ },
29
+
30
+ white: white,
31
+ base: xyz_d65,
32
+
33
+ // Convert D65-adapted XYZ to Luv
34
+ // https://en.wikipedia.org/wiki/CIELUV#The_forward_transformation
35
+ fromBase (XYZ) {
36
+ let xyz = [skipNone(XYZ[0]), skipNone(XYZ[1]), skipNone(XYZ[2])];
37
+ let y = xyz[1];
38
+
39
+ let [up, vp] = uv({space: xyz_d65, coords: xyz});
40
+
41
+ // Protect against XYZ of [0, 0, 0]
42
+ if (!Number.isFinite(up) || !Number.isFinite(vp)) {
43
+ return [0, 0, 0];
44
+ }
45
+
46
+ let L = y <= ε ? κ * y : 116 * Math.cbrt(y) - 16;
47
+ return [
48
+ L,
49
+ 13 * L * (up - U_PRIME_WHITE),
50
+ 13 * L * (vp - V_PRIME_WHITE),
51
+ ];
52
+ },
53
+
54
+ // Convert Luv to D65-adapted XYZ
55
+ // https://en.wikipedia.org/wiki/CIELUV#The_reverse_transformation
56
+ toBase (Luv) {
57
+ let [L, u, v] = Luv;
58
+
59
+ // Protect against division by zero and NaN Lightness
60
+ if (L === 0 || isNone(L)) {
61
+ return [0, 0, 0];
62
+ }
63
+
64
+ u = skipNone(u);
65
+ v = skipNone(v);
66
+
67
+ let up = (u / (13 * L)) + U_PRIME_WHITE;
68
+ let vp = (v / (13 * L)) + V_PRIME_WHITE;
69
+
70
+ let y = L <= 8 ? L / κ : Math.pow((L + 16) / 116, 3);
71
+
72
+ return [
73
+ y * ((9 * up) / (4 * vp)),
74
+ y,
75
+ y * ((12 - 3 * up - 20 * vp) / (4 * vp)),
76
+ ];
77
+ },
78
+
79
+ formats: {
80
+ color: {
81
+ id: "--luv",
82
+ coords: ["<number> | <percentage>", "<number> | <percentage>[-1,1]", "<number> | <percentage>[-1,1]"],
83
+ },
84
+ },
85
+ });
@@ -0,0 +1,74 @@
1
+ import ColorSpace from "../space.js";
2
+ import {multiplyMatrices} from "../util.js";
3
+ import XYZ_D65 from "./xyz-d65.js";
4
+
5
+ // Recalculated for consistent reference white
6
+ // see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484
7
+ const XYZtoLMS_M = [
8
+ [ 0.8190224379967030, 0.3619062600528904, -0.1288737815209879 ],
9
+ [ 0.0329836539323885, 0.9292868615863434, 0.0361446663506424 ],
10
+ [ 0.0481771893596242, 0.2642395317527308, 0.6335478284694309 ],
11
+ ];
12
+ // inverse of XYZtoLMS_M
13
+ const LMStoXYZ_M = [
14
+ [ 1.2268798758459243, -0.5578149944602171, 0.2813910456659647 ],
15
+ [ -0.0405757452148008, 1.1122868032803170, -0.0717110580655164 ],
16
+ [ -0.0763729366746601, -0.4214933324022432, 1.5869240198367816 ],
17
+ ];
18
+ const LMStoLab_M = [
19
+ [ 0.2104542683093140, 0.7936177747023054, -0.0040720430116193 ],
20
+ [ 1.9779985324311684, -2.4285922420485799, 0.4505937096174110 ],
21
+ [ 0.0259040424655478, 0.7827717124575296, -0.8086757549230774 ],
22
+ ];
23
+ // LMStoIab_M inverted
24
+ const LabtoLMS_M = [
25
+ [ 1.0000000000000000, 0.3963377773761749, 0.2158037573099136 ],
26
+ [ 1.0000000000000000, -0.1055613458156586, -0.0638541728258133 ],
27
+ [ 1.0000000000000000, -0.0894841775298119, -1.2914855480194092 ],
28
+ ];
29
+
30
+ export default new ColorSpace({
31
+ id: "oklab",
32
+ name: "Oklab",
33
+ coords: {
34
+ l: {
35
+ refRange: [0, 1],
36
+ name: "Lightness",
37
+ },
38
+ a: {
39
+ refRange: [-0.4, 0.4],
40
+ },
41
+ b: {
42
+ refRange: [-0.4, 0.4],
43
+ },
44
+ },
45
+
46
+ // Note that XYZ is relative to D65
47
+ white: "D65",
48
+ base: XYZ_D65,
49
+ fromBase (XYZ) {
50
+ // move to LMS cone domain
51
+ let LMS = multiplyMatrices(XYZtoLMS_M, XYZ);
52
+
53
+ // non-linearity
54
+ let LMSg = LMS.map(val => Math.cbrt(val));
55
+
56
+ return multiplyMatrices(LMStoLab_M, LMSg);
57
+
58
+ },
59
+ toBase (OKLab) {
60
+ // move to LMS cone domain
61
+ let LMSg = multiplyMatrices(LabtoLMS_M, OKLab);
62
+
63
+ // restore linearity
64
+ let LMS = LMSg.map(val => val ** 3);
65
+
66
+ return multiplyMatrices(LMStoXYZ_M, LMS);
67
+ },
68
+
69
+ formats: {
70
+ "oklab": {
71
+ coords: ["<percentage> | <number>", "<number> | <percentage>[-1,1]", "<number> | <percentage>[-1,1]"],
72
+ },
73
+ },
74
+ });
@@ -0,0 +1,68 @@
1
+ import ColorSpace from "../space.js";
2
+ import OKLab from "./oklab.js";
3
+ import {constrain as constrainAngle} from "../angles.js";
4
+
5
+ export default new ColorSpace({
6
+ id: "oklch",
7
+ name: "Oklch",
8
+ coords: {
9
+ l: {
10
+ refRange: [0, 1],
11
+ name: "Lightness",
12
+ },
13
+ c: {
14
+ refRange: [0, 0.4],
15
+ name: "Chroma",
16
+ },
17
+ h: {
18
+ refRange: [0, 360],
19
+ type: "angle",
20
+ name: "Hue",
21
+ },
22
+ },
23
+ white: "D65",
24
+
25
+ base: OKLab,
26
+ fromBase (oklab) {
27
+ // Convert to polar form
28
+ let [L, a, b] = oklab;
29
+ let h;
30
+ const ε = 0.0002; // chromatic components much smaller than a,b
31
+
32
+ if (Math.abs(a) < ε && Math.abs(b) < ε) {
33
+ h = NaN;
34
+ }
35
+ else {
36
+ h = Math.atan2(b, a) * 180 / Math.PI;
37
+ }
38
+
39
+ return [
40
+ L, // OKLab L is still L
41
+ Math.sqrt(a ** 2 + b ** 2), // Chroma
42
+ constrainAngle(h), // Hue, in degrees [0 to 360)
43
+ ];
44
+ },
45
+ // Convert from polar form
46
+ toBase (oklch) {
47
+ let [L, C, h] = oklch;
48
+ let a, b;
49
+
50
+ // check for NaN hue
51
+ if (isNaN(h)) {
52
+ a = 0;
53
+ b = 0;
54
+ }
55
+ else {
56
+ a = C * Math.cos(h * Math.PI / 180);
57
+ b = C * Math.sin(h * Math.PI / 180);
58
+ }
59
+
60
+ return [ L, a, b ];
61
+ },
62
+
63
+ formats: {
64
+ "oklch": {
65
+ coords: ["<percentage> | <number>", "<number> | <percentage>[0,1]", "<number> | <angle>"],
66
+ },
67
+ },
68
+ });
@@ -0,0 +1,22 @@
1
+ import RGBColorSpace from "../rgbspace.js";
2
+
3
+ const toXYZ_M = [
4
+ [0.4865709486482162, 0.26566769316909306, 0.1982172852343625],
5
+ [0.2289745640697488, 0.6917385218365064, 0.079286914093745],
6
+ [0.0000000000000000, 0.04511338185890264, 1.043944368900976],
7
+ ];
8
+
9
+ const fromXYZ_M = [
10
+ [ 2.493496911941425, -0.9313836179191239, -0.40271078445071684],
11
+ [-0.8294889695615747, 1.7626640603183463, 0.023624685841943577],
12
+ [ 0.03584583024378447, -0.07617238926804182, 0.9568845240076872],
13
+ ];
14
+
15
+ export default new RGBColorSpace({
16
+ id: "p3-linear",
17
+ cssId: "--display-p3-linear",
18
+ name: "Linear P3",
19
+ white: "D65",
20
+ toXYZ_M,
21
+ fromXYZ_M,
22
+ });
@@ -0,0 +1,13 @@
1
+ import RGBColorSpace from "../rgbspace.js";
2
+ import P3Linear from "./p3-linear.js";
3
+ import sRGB from "./srgb.js";
4
+
5
+ export default new RGBColorSpace({
6
+ id: "p3",
7
+ cssId: "display-p3",
8
+ name: "P3",
9
+ base: P3Linear,
10
+ // Gamma encoding/decoding is the same as sRGB
11
+ fromBase: sRGB.fromBase,
12
+ toBase: sRGB.toBase,
13
+ });
@@ -0,0 +1,28 @@
1
+ import RGBColorSpace from "../rgbspace.js";
2
+ import XYZ_D50 from "./xyz-d50.js";
3
+
4
+ // convert an array of prophoto-rgb values to CIE XYZ
5
+ // using D50 (so no chromatic adaptation needed afterwards)
6
+ // matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy
7
+ // see https://github.com/w3c/csswg-drafts/issues/7675
8
+ const toXYZ_M = [
9
+ [ 0.79776664490064230, 0.13518129740053308, 0.03134773412839220 ],
10
+ [ 0.28807482881940130, 0.71183523424187300, 0.00008993693872564 ],
11
+ [ 0.00000000000000000, 0.00000000000000000, 0.82510460251046020 ],
12
+ ];
13
+
14
+ const fromXYZ_M = [
15
+ [ 1.34578688164715830, -0.25557208737979464, -0.05110186497554526 ],
16
+ [ -0.54463070512490190, 1.50824774284514680, 0.02052744743642139 ],
17
+ [ 0.00000000000000000, 0.00000000000000000, 1.21196754563894520 ],
18
+ ];
19
+
20
+ export default new RGBColorSpace({
21
+ id: "prophoto-linear",
22
+ cssId: "--prophoto-rgb-linear",
23
+ name: "Linear ProPhoto",
24
+ white: "D50",
25
+ base: XYZ_D50,
26
+ toXYZ_M,
27
+ fromXYZ_M,
28
+ });
@@ -0,0 +1,19 @@
1
+ import RGBColorSpace from "../rgbspace.js";
2
+ import ProPhotoLinear from "./prophoto-linear.js";
3
+
4
+ const Et = 1 / 512;
5
+ const Et2 = 16 / 512;
6
+
7
+ export default new RGBColorSpace({
8
+ id: "prophoto",
9
+ cssId: "prophoto-rgb",
10
+ name: "ProPhoto",
11
+ base: ProPhotoLinear,
12
+ toBase (RGB) {
13
+ // Transfer curve is gamma 1.8 with a small linear portion
14
+ return RGB.map(v => v < Et2 ? v / 16 : v ** 1.8);
15
+ },
16
+ fromBase (RGB) {
17
+ return RGB.map(v => v >= Et ? v ** (1 / 1.8) : 16 * v);
18
+ },
19
+ });
@@ -0,0 +1,27 @@
1
+ import RGBColorSpace from "../rgbspace.js";
2
+
3
+ // convert an array of linear-light rec2020 values to CIE XYZ
4
+ // using D65 (no chromatic adaptation)
5
+ // http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
6
+ // 0 is actually calculated as 4.994106574466076e-17
7
+ const toXYZ_M = [
8
+ [ 0.6369580483012914, 0.14461690358620832, 0.1688809751641721 ],
9
+ [ 0.2627002120112671, 0.6779980715188708, 0.05930171646986196 ],
10
+ [ 0.000000000000000, 0.028072693049087428, 1.060985057710791 ],
11
+ ];
12
+
13
+ // from ITU-R BT.2124-0 Annex 2 p.3
14
+ const fromXYZ_M = [
15
+ [ 1.716651187971268, -0.355670783776392, -0.253366281373660 ],
16
+ [ -0.666684351832489, 1.616481236634939, 0.0157685458139111 ],
17
+ [ 0.017639857445311, -0.042770613257809, 0.942103121235474 ],
18
+ ];
19
+
20
+ export default new RGBColorSpace({
21
+ id: "rec2020-linear",
22
+ cssId: "--rec2020-linear",
23
+ name: "Linear REC.2020",
24
+ white: "D65",
25
+ toXYZ_M,
26
+ fromXYZ_M,
27
+ });