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,113 @@
1
+ {
2
+ "name": "colorjs.io",
3
+ "version": "0.5.0",
4
+ "description": "Let’s get serious about color",
5
+ "files": [
6
+ "dist/",
7
+ "src/",
8
+ "types/src/",
9
+ "types/index.d.ts",
10
+ "types/index.d.cts"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "import": {
15
+ "types": "./types/index.d.ts",
16
+ "default": "./dist/color.js"
17
+ },
18
+ "require": {
19
+ "types": "./types/index.d.cts",
20
+ "default": "./dist/color.cjs"
21
+ }
22
+ },
23
+ "./fn": {
24
+ "import": {
25
+ "types": "./types/src/index-fn.d.ts",
26
+ "default": "./src/index-fn.js"
27
+ },
28
+ "require": {
29
+ "types": "./types/src/index-fn.d.cts",
30
+ "default": "./dist/color-fn.cjs"
31
+ }
32
+ },
33
+ "./dist/*": "./dist/*"
34
+ },
35
+ "typesVersions": {
36
+ "*": {
37
+ "fn": [
38
+ "./types/src/index-fn.d.ts"
39
+ ]
40
+ }
41
+ },
42
+ "type": "module",
43
+ "main": "./dist/color.cjs",
44
+ "module": "./dist/color.js",
45
+ "types": "./types",
46
+ "directories": {
47
+ "test": "tests"
48
+ },
49
+ "scripts": {
50
+ "test": "npx htest ./test",
51
+ "dtslint": "dtslint --expectOnly types",
52
+ "eslint": "eslint . --ext .js --ext .ts --ext .cjs",
53
+ "lint": "run-s build:space-accessors \"eslint -- --fix\" dtslint",
54
+ "lint:ci": "run-s build:space-accessors \"eslint -- --max-warnings 0\" dtslint",
55
+ "build:css": "npx postcss \"**/*.postcss\" --base . --dir . --ext .css --config postcss.config.cjs",
56
+ "build:html": "npx @11ty/eleventy --config=.eleventy.cjs",
57
+ "build:js": "rollup -c",
58
+ "build:js:legacy": "rollup -c rollup.legacy.config.js",
59
+ "build:space-accessors": "node ./scripts/generate-space-accessor-types.js",
60
+ "build": "run-s build:html build:css build:js build:js:legacy build:space-accessors",
61
+ "watch:css": "npx postcss \"**/*.postcss\" --base . --dir . --ext .css --config postcss.config.cjs --watch",
62
+ "watch:html": "npx @11ty/eleventy --config=.eleventy.cjs --watch",
63
+ "watch:js": "rollup -c --watch",
64
+ "watch": "run-p watch:*",
65
+ "prepack": "npm run build",
66
+ "release": "release-it"
67
+ },
68
+ "repository": {
69
+ "type": "git",
70
+ "url": "git+https://github.com/LeaVerou/color.js.git"
71
+ },
72
+ "keywords": [
73
+ "color"
74
+ ],
75
+ "contributors": [
76
+ "Lea Verou",
77
+ "Chris Lilley"
78
+ ],
79
+ "license": "MIT",
80
+ "bugs": {
81
+ "url": "https://github.com/LeaVerou/color.js/issues"
82
+ },
83
+ "homepage": "https://colorjs.io",
84
+ "devDependencies": {
85
+ "@11ty/eleventy": "^2.0",
86
+ "@babel/core": "^7.24.0",
87
+ "@babel/preset-env": "^7.24.0",
88
+ "@definitelytyped/dtslint": "0.0.182",
89
+ "@rollup/plugin-babel": "^6.0.4",
90
+ "@rollup/plugin-commonjs": "^25.0.7",
91
+ "@rollup/plugin-node-resolve": "^15.2.3",
92
+ "@rollup/plugin-terser": "^0.4.4",
93
+ "@stylistic/eslint-plugin": "latest",
94
+ "@typescript-eslint/eslint-plugin": "latest",
95
+ "@typescript-eslint/parser": "latest",
96
+ "acorn": "latest",
97
+ "core-js": "^3.36.0",
98
+ "eslint": "latest",
99
+ "htest.dev": "^0.0.9",
100
+ "mathjs": "^12.4.0",
101
+ "npm-run-all": "^4.1.5",
102
+ "postcss": "latest",
103
+ "postcss-cli": "latest",
104
+ "postcss-nesting": "latest",
105
+ "release-it": "^17.1.1",
106
+ "rollup": "^4.12.0",
107
+ "typescript": "^5.3.3"
108
+ },
109
+ "sideEffects": [
110
+ "./src/index.js",
111
+ "./src/spaces/index.js"
112
+ ]
113
+ }
@@ -0,0 +1,131 @@
1
+ import hooks from "./hooks.js";
2
+ import {multiplyMatrices} from "./util.js";
3
+ import {WHITES} from "./adapt.js";
4
+
5
+ export const CATs = {};
6
+
7
+ hooks.add("chromatic-adaptation-start", env => {
8
+ if (env.options.method) {
9
+ env.M = adapt(env.W1, env.W2, env.options.method);
10
+ }
11
+ });
12
+
13
+ hooks.add("chromatic-adaptation-end", env => {
14
+ if (!env.M) {
15
+ env.M = adapt(env.W1, env.W2, env.options.method);
16
+ }
17
+ });
18
+
19
+ export function defineCAT ({id, toCone_M, fromCone_M}) {
20
+ // Use id, toCone_M, fromCone_M like variables
21
+ CATs[id] = arguments[0];
22
+ }
23
+
24
+ export function adapt (W1, W2, id = "Bradford") {
25
+ // adapt from a source whitepoint or illuminant W1
26
+ // to a destination whitepoint or illuminant W2,
27
+ // using the given chromatic adaptation transform (CAT)
28
+ // debugger;
29
+ let method = CATs[id];
30
+
31
+ let [ρs, γs, βs] = multiplyMatrices(method.toCone_M, W1);
32
+ let [ρd, γd, βd] = multiplyMatrices(method.toCone_M, W2);
33
+
34
+ // all practical illuminants have non-zero XYZ so no division by zero can occur below
35
+ let scale = [
36
+ [ρd / ρs, 0, 0 ],
37
+ [0, γd / γs, 0 ],
38
+ [0, 0, βd / βs],
39
+ ];
40
+ // console.log({scale});
41
+
42
+ let scaled_cone_M = multiplyMatrices(scale, method.toCone_M);
43
+ let adapt_M = multiplyMatrices(method.fromCone_M, scaled_cone_M);
44
+ // console.log({scaled_cone_M, adapt_M});
45
+ return adapt_M;
46
+ }
47
+
48
+ defineCAT({
49
+ id: "von Kries",
50
+ toCone_M: [
51
+ [ 0.4002400, 0.7076000, -0.0808100 ],
52
+ [ -0.2263000, 1.1653200, 0.0457000 ],
53
+ [ 0.0000000, 0.0000000, 0.9182200 ],
54
+ ],
55
+ fromCone_M: [
56
+ [ 1.8599363874558397, -1.1293816185800916, 0.21989740959619328 ],
57
+ [ 0.3611914362417676, 0.6388124632850422, -0.000006370596838649899 ],
58
+ [ 0, 0, 1.0890636230968613 ],
59
+ ],
60
+ });
61
+
62
+ defineCAT({
63
+ id: "Bradford",
64
+ // Convert an array of XYZ values in the range 0.0 - 1.0
65
+ // to cone fundamentals
66
+ toCone_M: [
67
+ [ 0.8951000, 0.2664000, -0.1614000 ],
68
+ [ -0.7502000, 1.7135000, 0.0367000 ],
69
+ [ 0.0389000, -0.0685000, 1.0296000 ],
70
+ ],
71
+ // and back
72
+ fromCone_M: [
73
+ [ 0.9869929054667121, -0.14705425642099013, 0.15996265166373122 ],
74
+ [ 0.4323052697233945, 0.5183602715367774, 0.049291228212855594 ],
75
+ [ -0.00852866457517732, 0.04004282165408486, 0.96848669578755 ],
76
+ ],
77
+ });
78
+
79
+ defineCAT({
80
+ id: "CAT02",
81
+ // with complete chromatic adaptation to W2, so D = 1.0
82
+ toCone_M: [
83
+ [ 0.7328000, 0.4296000, -0.1624000 ],
84
+ [ -0.7036000, 1.6975000, 0.0061000 ],
85
+ [ 0.0030000, 0.0136000, 0.9834000 ],
86
+ ],
87
+ fromCone_M: [
88
+ [ 1.0961238208355142, -0.27886900021828726, 0.18274517938277307 ],
89
+ [ 0.4543690419753592, 0.4735331543074117, 0.07209780371722911 ],
90
+ [ -0.009627608738429355, -0.00569803121611342, 1.0153256399545427 ],
91
+ ],
92
+ });
93
+
94
+ defineCAT({
95
+ id: "CAT16",
96
+ toCone_M: [
97
+ [ 0.401288, 0.650173, -0.051461 ],
98
+ [ -0.250268, 1.204414, 0.045854 ],
99
+ [ -0.002079, 0.048952, 0.953127 ],
100
+ ],
101
+ // the extra precision is needed to avoid roundtripping errors
102
+ fromCone_M: [
103
+ [ 1.862067855087233, -1.0112546305316845, 0.14918677544445172 ],
104
+ [ 0.3875265432361372, 0.6214474419314753, -0.008973985167612521 ],
105
+ [ -0.01584149884933386, -0.03412293802851557, 1.0499644368778496 ],
106
+ ],
107
+ });
108
+
109
+ Object.assign(WHITES, {
110
+ // whitepoint values from ASTM E308-01 with 10nm spacing, 1931 2 degree observer
111
+ // all normalized to Y (luminance) = 1.00000
112
+ // Illuminant A is a tungsten electric light, giving a very warm, orange light.
113
+ A: [1.09850, 1.00000, 0.35585],
114
+
115
+ // Illuminant C was an early approximation to daylight: illuminant A with a blue filter.
116
+ C: [0.98074, 1.000000, 1.18232],
117
+
118
+ // The daylight series of illuminants simulate natural daylight.
119
+ // The color temperature (in degrees Kelvin/100) ranges from
120
+ // cool, overcast daylight (D50) to bright, direct sunlight (D65).
121
+ D55: [0.95682, 1.00000, 0.92149],
122
+ D75: [0.94972, 1.00000, 1.22638],
123
+
124
+ // Equal-energy illuminant, used in two-stage CAT16
125
+ E: [1.00000, 1.00000, 1.00000],
126
+
127
+ // The F series of illuminants represent fluorescent lights
128
+ F2: [0.99186, 1.00000, 0.67393],
129
+ F7: [0.95041, 1.00000, 1.08747],
130
+ F11: [1.00962, 1.00000, 0.64350],
131
+ });
@@ -0,0 +1,62 @@
1
+ import hooks from "./hooks.js";
2
+ import {multiplyMatrices} from "./util.js";
3
+
4
+ export const WHITES = {
5
+ // for compatibility, the four-digit chromaticity-derived ones everyone else uses
6
+ D50: [0.3457 / 0.3585, 1.00000, (1.0 - 0.3457 - 0.3585) / 0.3585],
7
+ D65: [0.3127 / 0.3290, 1.00000, (1.0 - 0.3127 - 0.3290) / 0.3290],
8
+ };
9
+
10
+ export function getWhite (name) {
11
+ if (Array.isArray(name)) {
12
+ return name;
13
+ }
14
+
15
+ return WHITES[name];
16
+ }
17
+
18
+ // Adapt XYZ from white point W1 to W2
19
+ export default function adapt (W1, W2, XYZ, options = {}) {
20
+ W1 = getWhite(W1);
21
+ W2 = getWhite(W2);
22
+
23
+ if (!W1 || !W2) {
24
+ throw new TypeError(`Missing white point to convert ${!W1 ? "from" : ""}${!W1 && !W2 ? "/" : ""}${!W2 ? "to" : ""}`);
25
+ }
26
+
27
+ if (W1 === W2) {
28
+ // Same whitepoints, no conversion needed
29
+ return XYZ;
30
+ }
31
+
32
+ let env = {W1, W2, XYZ, options};
33
+
34
+ hooks.run("chromatic-adaptation-start", env);
35
+
36
+ if (!env.M) {
37
+ if (env.W1 === WHITES.D65 && env.W2 === WHITES.D50) {
38
+ env.M = [
39
+ [ 1.0479297925449969, 0.022946870601609652, -0.05019226628920524 ],
40
+ [ 0.02962780877005599, 0.9904344267538799, -0.017073799063418826 ],
41
+ [ -0.009243040646204504, 0.015055191490298152, 0.7518742814281371 ],
42
+ ];
43
+ }
44
+ else if (env.W1 === WHITES.D50 && env.W2 === WHITES.D65) {
45
+
46
+ env.M = [
47
+ [ 0.955473421488075, -0.02309845494876471, 0.06325924320057072 ],
48
+ [ -0.0283697093338637, 1.0099953980813041, 0.021041441191917323 ],
49
+ [ 0.012314014864481998, -0.020507649298898964, 1.330365926242124 ],
50
+ ];
51
+ }
52
+ }
53
+
54
+ hooks.run("chromatic-adaptation-end", env);
55
+
56
+ if (env.M) {
57
+ return multiplyMatrices(env.M, env.XYZ);
58
+ }
59
+ else {
60
+ throw new TypeError("Only Bradford CAT with white points D50 and D65 supported for now.");
61
+ }
62
+ }
@@ -0,0 +1,44 @@
1
+ export function constrain (angle) {
2
+ return ((angle % 360) + 360) % 360;
3
+ }
4
+
5
+ export function adjust (arc, angles) {
6
+ if (arc === "raw") {
7
+ return angles;
8
+ }
9
+
10
+ let [a1, a2] = angles.map(constrain);
11
+
12
+ let angleDiff = a2 - a1;
13
+
14
+ if (arc === "increasing") {
15
+ if (angleDiff < 0) {
16
+ a2 += 360;
17
+ }
18
+ }
19
+ else if (arc === "decreasing") {
20
+ if (angleDiff > 0) {
21
+ a1 += 360;
22
+ }
23
+ }
24
+ else if (arc === "longer") {
25
+ if (-180 < angleDiff && angleDiff < 180) {
26
+ if (angleDiff > 0) {
27
+ a1 += 360;
28
+ }
29
+ else {
30
+ a2 += 360;
31
+ }
32
+ }
33
+ }
34
+ else if (arc === "shorter") {
35
+ if (angleDiff > 180) {
36
+ a1 += 360;
37
+ }
38
+ else if (angleDiff < -180) {
39
+ a2 += 360;
40
+ }
41
+ }
42
+
43
+ return [a1, a2];
44
+ }
@@ -0,0 +1,33 @@
1
+ import xyz_d65 from "./spaces/xyz-d65.js";
2
+ import getAll from "./getAll.js";
3
+
4
+ // Chromaticity coordinates
5
+ export function uv (color) {
6
+ // Assumes getAll() calls getColor() on color
7
+ let [X, Y, Z] = getAll(color, xyz_d65);
8
+ let denom = X + 15 * Y + 3 * Z;
9
+ return [4 * X / denom, 9 * Y / denom];
10
+ }
11
+
12
+ export function xy (color) {
13
+ // Assumes getAll() calls getColor() on color
14
+ let [X, Y, Z] = getAll(color, xyz_d65);
15
+ let sum = X + Y + Z;
16
+ return [X / sum, Y / sum];
17
+ }
18
+
19
+ export function register (Color) {
20
+ // no setters, as lightness information is lost
21
+ // when converting color to chromaticity
22
+ Object.defineProperty(Color.prototype, "uv", {
23
+ get () {
24
+ return uv(this);
25
+ },
26
+ });
27
+
28
+ Object.defineProperty(Color.prototype, "xy", {
29
+ get () {
30
+ return xy(this);
31
+ },
32
+ });
33
+ }
@@ -0,0 +1,7 @@
1
+ export default function clone (color) {
2
+ return {
3
+ space: color.space,
4
+ coords: color.coords.slice(),
5
+ alpha: color.alpha,
6
+ };
7
+ }
@@ -0,0 +1,201 @@
1
+ import * as util from "./util.js";
2
+ import hooks from "./hooks.js";
3
+ import defaults from "./defaults.js";
4
+ import ColorSpace from "./space.js";
5
+ import {WHITES} from "./adapt.js";
6
+ import {
7
+ getColor,
8
+ parse,
9
+ to,
10
+ serialize,
11
+ inGamut,
12
+ toGamut,
13
+ distance,
14
+ equals,
15
+ get,
16
+ getAll,
17
+ set,
18
+ setAll,
19
+ display,
20
+ } from "./index-fn.js";
21
+
22
+
23
+ import "./spaces/xyz-d50.js";
24
+ import "./spaces/srgb.js";
25
+
26
+ /**
27
+ * Class that represents a color
28
+ */
29
+ export default class Color {
30
+ /**
31
+ * Creates an instance of Color.
32
+ * Signatures:
33
+ * - `new Color(stringToParse)`
34
+ * - `new Color(otherColor)`
35
+ * - `new Color({space, coords, alpha})`
36
+ * - `new Color(space, coords, alpha)`
37
+ * - `new Color(spaceId, coords, alpha)`
38
+ */
39
+ constructor (...args) {
40
+ let color;
41
+
42
+ if (args.length === 1) {
43
+ color = getColor(args[0]);
44
+ }
45
+
46
+ let space, coords, alpha;
47
+
48
+ if (color) {
49
+ space = color.space || color.spaceId;
50
+ coords = color.coords;
51
+ alpha = color.alpha;
52
+ }
53
+ else {
54
+ // default signature new Color(ColorSpace, array [, alpha])
55
+ [space, coords, alpha] = args;
56
+ }
57
+
58
+ Object.defineProperty(this, "space", {
59
+ value: ColorSpace.get(space),
60
+ writable: false,
61
+ enumerable: true,
62
+ configurable: true, // see note in https://262.ecma-international.org/8.0/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver
63
+ });
64
+
65
+ this.coords = coords ? coords.slice() : [0, 0, 0];
66
+
67
+ // Clamp alpha to [0, 1]
68
+ this.alpha = alpha > 1 || alpha === undefined ? 1 : (alpha < 0 ? 0 : alpha);
69
+
70
+ // Convert "NaN" to NaN
71
+ for (let i = 0; i < this.coords.length; i++) {
72
+ if (this.coords[i] === "NaN") {
73
+ this.coords[i] = NaN;
74
+ }
75
+ }
76
+
77
+ // Define getters and setters for each coordinate
78
+ for (let id in this.space.coords) {
79
+ Object.defineProperty(this, id, {
80
+ get: () => this.get(id),
81
+ set: value => this.set(id, value),
82
+ });
83
+ }
84
+ }
85
+
86
+ get spaceId () {
87
+ return this.space.id;
88
+ }
89
+
90
+ clone () {
91
+ return new Color(this.space, this.coords, this.alpha);
92
+ }
93
+
94
+ toJSON () {
95
+ return {
96
+ spaceId: this.spaceId,
97
+ coords: this.coords,
98
+ alpha: this.alpha,
99
+ };
100
+ }
101
+
102
+ display (...args) {
103
+ let ret = display(this, ...args);
104
+
105
+ // Convert color object to Color instance
106
+ ret.color = new Color(ret.color);
107
+
108
+ return ret;
109
+ }
110
+
111
+ /**
112
+ * Get a color from the argument passed
113
+ * Basically gets us the same result as new Color(color) but doesn't clone an existing color object
114
+ */
115
+ static get (color, ...args) {
116
+ if (color instanceof Color) {
117
+ return color;
118
+ }
119
+
120
+ return new Color(color, ...args);
121
+ }
122
+
123
+ static defineFunction (name, code, o = code) {
124
+ let {instance = true, returns} = o;
125
+
126
+ let func = function (...args) {
127
+ let ret = code(...args);
128
+
129
+ if (returns === "color") {
130
+ ret = Color.get(ret);
131
+ }
132
+ else if (returns === "function<color>") {
133
+ let f = ret;
134
+ ret = function (...args) {
135
+ let ret = f(...args);
136
+ return Color.get(ret);
137
+ };
138
+ // Copy any function metadata
139
+ Object.assign(ret, f);
140
+ }
141
+ else if (returns === "array<color>") {
142
+ ret = ret.map(c => Color.get(c));
143
+ }
144
+
145
+ return ret;
146
+ };
147
+
148
+ if (!(name in Color)) {
149
+ Color[name] = func;
150
+ }
151
+
152
+ if (instance) {
153
+ Color.prototype[name] = function (...args) {
154
+ return func(this, ...args);
155
+ };
156
+ }
157
+ }
158
+
159
+ static defineFunctions (o) {
160
+ for (let name in o) {
161
+ Color.defineFunction(name, o[name], o[name]);
162
+ }
163
+ }
164
+
165
+ static extend (exports) {
166
+ if (exports.register) {
167
+ exports.register(Color);
168
+ }
169
+ else {
170
+ // No register method, just add the module's functions
171
+ for (let name in exports) {
172
+ Color.defineFunction(name, exports[name]);
173
+ }
174
+ }
175
+ }
176
+ }
177
+
178
+ Color.defineFunctions({
179
+ get,
180
+ getAll,
181
+ set,
182
+ setAll,
183
+ to,
184
+ equals,
185
+ inGamut,
186
+ toGamut,
187
+ distance,
188
+ toString: serialize,
189
+ });
190
+
191
+ Object.assign(Color, {
192
+ util,
193
+ hooks,
194
+ WHITES,
195
+ Space: ColorSpace,
196
+ spaces: ColorSpace.registry,
197
+ parse,
198
+
199
+ // Global defaults one may want to configure
200
+ defaults,
201
+ });
@@ -0,0 +1,102 @@
1
+ // APCA 0.0.98G
2
+ // https://github.com/Myndex/apca-w3
3
+ // see also https://github.com/w3c/silver/issues/643
4
+
5
+ import getColor from "../getColor.js";
6
+ import to from "../to.js";
7
+
8
+ // exponents
9
+ const normBG = 0.56;
10
+ const normTXT = 0.57;
11
+ const revTXT = 0.62;
12
+ const revBG = 0.65;
13
+
14
+ // clamps
15
+ const blkThrs = 0.022;
16
+ const blkClmp = 1.414;
17
+ const loClip = 0.1;
18
+ const deltaYmin = 0.0005;
19
+
20
+ // scalers
21
+ // see https://github.com/w3c/silver/issues/645
22
+ const scaleBoW = 1.14;
23
+ const loBoWoffset = 0.027;
24
+ const scaleWoB = 1.14;
25
+ const loWoBoffset = 0.027;
26
+
27
+ function fclamp (Y) {
28
+ if (Y >= blkThrs) {
29
+ return Y;
30
+ }
31
+ return Y + (blkThrs - Y) ** blkClmp;
32
+ }
33
+
34
+ function linearize (val) {
35
+ let sign = val < 0 ? -1 : 1;
36
+ let abs = Math.abs(val);
37
+ return sign * Math.pow(abs, 2.4);
38
+ }
39
+
40
+ // Not symmetric, requires a foreground (text) color, and a background color
41
+ export default function contrastAPCA (background, foreground) {
42
+ foreground = getColor(foreground);
43
+ background = getColor(background);
44
+
45
+ let S;
46
+ let C;
47
+ let Sapc;
48
+
49
+ // Myndex as-published, assumes sRGB inputs
50
+ let R, G, B;
51
+
52
+ foreground = to(foreground, "srgb");
53
+ // Should these be clamped to in-gamut values?
54
+
55
+ // Calculates "screen luminance" with non-standard simple gamma EOTF
56
+ // weights should be from CSS Color 4, not the ones here which are via Myndex and copied from Lindbloom
57
+ [R, G, B] = foreground.coords;
58
+ let lumTxt = linearize(R) * 0.2126729 + linearize(G) * 0.7151522 + linearize(B) * 0.0721750;
59
+
60
+ background = to(background, "srgb");
61
+ [R, G, B] = background.coords;
62
+ let lumBg = linearize(R) * 0.2126729 + linearize(G) * 0.7151522 + linearize(B) * 0.0721750;
63
+
64
+ // toe clamping of very dark values to account for flare
65
+ let Ytxt = fclamp(lumTxt);
66
+ let Ybg = fclamp(lumBg);
67
+
68
+ // are we "Black on White" (dark on light), or light on dark?
69
+ let BoW = Ybg > Ytxt;
70
+
71
+ // why is this a delta, when Y is not perceptually uniform?
72
+ // Answer: it is a noise gate, see
73
+ // https://github.com/LeaVerou/color.js/issues/208
74
+ if (Math.abs(Ybg - Ytxt) < deltaYmin) {
75
+ C = 0;
76
+ }
77
+ else {
78
+ if (BoW) {
79
+ // dark text on light background
80
+ S = Ybg ** normBG - Ytxt ** normTXT;
81
+ C = S * scaleBoW;
82
+ }
83
+ else {
84
+ // light text on dark background
85
+ S = Ybg ** revBG - Ytxt ** revTXT;
86
+ C = S * scaleWoB;
87
+ }
88
+ }
89
+ if (Math.abs(C) < loClip) {
90
+ Sapc = 0;
91
+ }
92
+ else if (C > 0) {
93
+ // not clear whether Woffset is loBoWoffset or loWoBoffset
94
+ // but they have the same value
95
+ Sapc = C - loBoWoffset;
96
+ }
97
+ else {
98
+ Sapc = C + loBoWoffset;
99
+ }
100
+
101
+ return Sapc * 100;
102
+ }