color-elements 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +49 -12
  2. package/_build/copy-config.js +11 -1
  3. package/_build/copy-config.json +2 -2
  4. package/_build/eleventy.js +27 -1
  5. package/_build/filters-extra.js +3 -0
  6. package/_includes/component.njk +69 -0
  7. package/_includes/partials/_nav-links.njk +19 -0
  8. package/_redirects +9 -2
  9. package/assets/css/style.css +78 -1
  10. package/assets/js/index.js +11 -10
  11. package/data/components.json +12 -0
  12. package/debug.html +447 -0
  13. package/eslint.config.js +316 -0
  14. package/index.js +10 -4
  15. package/logo.svg +22 -44
  16. package/package.json +12 -5
  17. package/src/channel-picker/README.md +103 -0
  18. package/src/channel-picker/channel-picker.css +31 -0
  19. package/src/channel-picker/channel-picker.js +168 -0
  20. package/src/channel-picker/channel-picker.webp +0 -0
  21. package/src/channel-slider/README.md +165 -0
  22. package/src/channel-slider/channel-slider.css +61 -0
  23. package/src/channel-slider/channel-slider.js +287 -0
  24. package/src/channel-slider/channel-slider.webp +0 -0
  25. package/src/color-chart/README.md +129 -0
  26. package/src/color-chart/color-chart-global.css +97 -0
  27. package/src/color-chart/color-chart.css +112 -0
  28. package/src/color-chart/color-chart.js +441 -0
  29. package/src/color-chart/color-chart.webp +0 -0
  30. package/src/color-inline/README.md +72 -0
  31. package/{color-swatch/color-swatch.css → src/color-inline/color-inline.css} +11 -4
  32. package/src/color-inline/color-inline.js +85 -0
  33. package/src/color-inline/color-inline.webp +0 -0
  34. package/src/color-inline/style.css +14 -0
  35. package/src/color-picker/README.md +150 -0
  36. package/src/color-picker/color-picker.css +35 -0
  37. package/src/color-picker/color-picker.js +251 -0
  38. package/src/color-picker/color-picker.webp +0 -0
  39. package/src/color-scale/README.md +75 -0
  40. package/src/color-scale/color-scale.css +40 -0
  41. package/src/color-scale/color-scale.js +164 -0
  42. package/src/color-scale/color-scale.webp +0 -0
  43. package/src/color-slider/README.md +220 -0
  44. package/src/color-slider/color-slider.css +174 -0
  45. package/src/color-slider/color-slider.js +320 -0
  46. package/src/color-slider/color-slider.webp +0 -0
  47. package/src/color-swatch/README.md +359 -0
  48. package/src/color-swatch/color-swatch.css +230 -0
  49. package/src/color-swatch/color-swatch.js +252 -0
  50. package/src/color-swatch/color-swatch.webp +0 -0
  51. package/src/common/color-element.js +86 -0
  52. package/src/common/dom.js +61 -0
  53. package/src/common/util.js +55 -0
  54. package/src/gamut-badge/README.md +145 -0
  55. package/src/gamut-badge/gamut-badge.css +78 -0
  56. package/src/gamut-badge/gamut-badge.js +121 -0
  57. package/src/gamut-badge/gamut-badge.webp +0 -0
  58. package/src/index.js.njk +7 -0
  59. package/src/space-picker/README.md +121 -0
  60. package/src/space-picker/space-picker.css +23 -0
  61. package/src/space-picker/space-picker.js +213 -0
  62. package/src/space-picker/space-picker.webp +0 -0
  63. package/src/src.json +3 -0
  64. package/_data/eleventyComputed.11tydata.js +0 -29
  65. package/color-gamut/README.md +0 -75
  66. package/color-gamut/color-gamut.js +0 -172
  67. package/color-gamut/style.css +0 -32
  68. package/color-slider/README.md +0 -84
  69. package/color-slider/color-slider.js +0 -79
  70. package/color-slider/style.css +0 -65
  71. package/color-swatch/color-swatch.js +0 -79
  72. package/color-swatch/index.njk +0 -40
  73. package/common/attributes.js +0 -68
  74. package/common/color.js +0 -10
  75. package/css-color/css-color.js +0 -256
  76. package/css-color/index.njk +0 -43
  77. package/css-color/style.css +0 -67
  78. package/lib/README.md +0 -4
  79. package/lib/colorjs.io/LICENSE +0 -21
  80. package/lib/colorjs.io/README.json +0 -3
  81. package/lib/colorjs.io/README.md +0 -257
  82. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  83. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  84. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  85. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  86. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  88. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  90. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  94. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  96. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  98. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  100. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  101. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  102. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  103. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  104. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  105. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  106. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  107. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  108. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  109. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  110. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  111. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  112. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  113. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  114. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  115. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  116. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  117. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  118. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  119. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  120. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  121. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  122. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  123. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  124. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  125. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  126. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  127. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  129. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  130. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  131. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  133. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  134. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  135. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  136. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  137. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  138. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  139. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  140. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  141. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  142. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  143. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  144. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  145. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  147. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  148. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  149. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  150. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  151. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  152. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  153. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  154. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  155. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  156. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  157. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  158. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  159. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  160. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  161. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  162. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  163. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  164. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  165. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  166. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  167. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  168. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  169. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  170. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  171. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  172. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  173. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  174. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  175. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  176. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  177. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  178. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  179. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  180. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  181. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  182. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  183. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  184. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  185. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  186. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  187. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  188. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  189. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  190. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  191. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  192. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  193. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  194. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  195. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  196. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  197. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  198. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  199. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  200. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  201. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  202. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  203. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  204. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  205. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  206. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  207. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  208. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  209. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  210. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  211. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  212. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  213. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  214. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  215. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  216. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  217. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  218. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  219. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  220. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  221. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  222. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  223. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  224. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  225. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  226. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  227. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  228. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  229. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  230. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  231. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  232. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  233. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  234. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  235. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  236. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  237. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  238. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  239. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  240. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  241. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  242. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  243. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  244. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  246. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  247. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  248. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  249. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  250. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  251. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  252. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  271. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  272. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  273. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  274. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  275. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  276. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  277. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  278. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  279. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  280. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  281. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  282. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  283. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  284. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  285. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  286. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  287. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  288. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  289. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  290. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  291. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  292. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  293. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  294. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  295. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  297. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  298. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.cjs +0 -5759
  301. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  302. package/lib/colorjs.io/dist/color.global.js +0 -5760
  303. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  304. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  305. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  306. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  307. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  308. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  309. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  310. package/lib/colorjs.io/dist/color.js +0 -5755
  311. package/lib/colorjs.io/dist/color.js.map +0 -1
  312. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  313. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  314. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  315. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  316. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  317. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  318. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  319. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  320. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  321. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  322. package/lib/colorjs.io/dist/color.min.js +0 -2
  323. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  324. package/lib/colorjs.io/package.json +0 -113
  325. package/lib/colorjs.io/src/CATs.js +0 -131
  326. package/lib/colorjs.io/src/adapt.js +0 -62
  327. package/lib/colorjs.io/src/angles.js +0 -44
  328. package/lib/colorjs.io/src/chromaticity.js +0 -33
  329. package/lib/colorjs.io/src/clone.js +0 -7
  330. package/lib/colorjs.io/src/color.js +0 -201
  331. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  332. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  333. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  334. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  335. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  336. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  337. package/lib/colorjs.io/src/contrast/index.js +0 -6
  338. package/lib/colorjs.io/src/contrast.js +0 -28
  339. package/lib/colorjs.io/src/defaults.js +0 -12
  340. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  341. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  342. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  343. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  344. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  345. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  346. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  347. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  348. package/lib/colorjs.io/src/deltaE.js +0 -19
  349. package/lib/colorjs.io/src/display.js +0 -83
  350. package/lib/colorjs.io/src/distance.js +0 -21
  351. package/lib/colorjs.io/src/equals.js +0 -10
  352. package/lib/colorjs.io/src/get.js +0 -11
  353. package/lib/colorjs.io/src/getAll.js +0 -20
  354. package/lib/colorjs.io/src/getColor.js +0 -36
  355. package/lib/colorjs.io/src/hooks.js +0 -37
  356. package/lib/colorjs.io/src/inGamut.js +0 -25
  357. package/lib/colorjs.io/src/index-fn.js +0 -28
  358. package/lib/colorjs.io/src/index.js +0 -38
  359. package/lib/colorjs.io/src/interpolation.js +0 -222
  360. package/lib/colorjs.io/src/keywords.js +0 -158
  361. package/lib/colorjs.io/src/luminance.js +0 -27
  362. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  363. package/lib/colorjs.io/src/parse.js +0 -198
  364. package/lib/colorjs.io/src/rgbspace.js +0 -64
  365. package/lib/colorjs.io/src/serialize.js +0 -86
  366. package/lib/colorjs.io/src/set.js +0 -33
  367. package/lib/colorjs.io/src/setAll.js +0 -12
  368. package/lib/colorjs.io/src/space-accessors.js +0 -86
  369. package/lib/colorjs.io/src/space.js +0 -440
  370. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  371. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  372. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  373. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  374. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  375. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  376. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  377. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  378. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  379. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  380. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  381. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  382. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  383. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  384. package/lib/colorjs.io/src/spaces/index.js +0 -8
  385. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  386. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  387. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  388. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  389. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  390. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  391. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  392. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  393. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  394. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  395. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  396. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  397. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  398. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  399. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  400. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  401. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  402. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  403. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  404. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  405. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  406. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  407. package/lib/colorjs.io/src/to.js +0 -26
  408. package/lib/colorjs.io/src/toGamut.js +0 -310
  409. package/lib/colorjs.io/src/util.js +0 -254
  410. package/lib/colorjs.io/src/variations.js +0 -14
  411. package/lib/colorjs.io/types/index.d.cts +0 -4
  412. package/lib/colorjs.io/types/index.d.ts +0 -42
  413. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  414. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  415. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  416. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  417. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  418. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  419. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  420. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  421. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  422. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  423. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  424. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  425. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  426. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  427. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  428. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  429. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  430. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  431. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  432. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  433. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  434. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  435. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  436. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  437. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  438. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  439. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  440. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  441. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  442. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  443. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  444. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  445. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  446. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  447. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  448. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  449. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  450. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  451. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  453. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  454. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  455. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  456. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  457. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  458. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  459. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  460. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  471. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  472. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  473. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  478. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  479. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  480. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  481. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  482. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  483. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  484. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  485. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  486. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  487. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  488. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  489. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  490. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  491. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  492. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  493. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  494. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  495. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  496. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  497. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  498. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
@@ -0,0 +1,441 @@
1
+ import "../color-scale/color-scale.js";
2
+ import "../channel-picker/channel-picker.js";
3
+ import ColorElement from "../common/color-element.js";
4
+
5
+ const Self = class ColorChart extends ColorElement {
6
+ static tagName = "color-chart";
7
+ static url = import.meta.url;
8
+ static shadowStyle = true;
9
+ static shadowTemplate = `
10
+ <slot name="color-channel">
11
+ <channel-picker id="channel_picker" part="color-channel"></channel-picker>
12
+ </slot>
13
+ <div id="chart-container">
14
+ <div id="chart">
15
+ <slot></slot>
16
+ </div>
17
+ </div>
18
+ <div class="axis" id="y_axis">
19
+ <div class="label" part="y label"></div>
20
+ <div class="ticks" part="y ticks"></div>
21
+ </div>
22
+ <div class="axis" id="x_axis">
23
+ <div class="label" part="x label"></div>
24
+ <div class="ticks" part="x ticks"></div>
25
+ </div>`;
26
+ static dependencies = new Set(["color-scale"]);
27
+ static globalStyle = new URL("color-chart-global.css", import.meta.url);
28
+
29
+ constructor () {
30
+ super();
31
+
32
+ this._el = {
33
+ slot: this.shadowRoot.querySelector("slot:not([name])"),
34
+ channel_picker: this.shadowRoot.getElementById("channel_picker"),
35
+ chart: this.shadowRoot.getElementById("chart"),
36
+ xTicks: this.shadowRoot.querySelector("#x_axis .ticks"),
37
+ yTicks: this.shadowRoot.querySelector("#y_axis .ticks"),
38
+ xLabel: this.shadowRoot.querySelector("#x_axis .label"),
39
+ yLabel: this.shadowRoot.querySelector("#y_axis .label"),
40
+ };
41
+
42
+ this._slots = {
43
+ color_channel: this.shadowRoot.querySelector("slot[name=color-channel]"),
44
+ };
45
+ }
46
+
47
+ connectedCallback () {
48
+ super.connectedCallback();
49
+ this._el.chart.addEventListener("colorschange", this, {capture: true});
50
+ this._slots.color_channel.addEventListener("input", this);
51
+ }
52
+
53
+ disconnectedCallback () {
54
+ this._el.chart.removeEventListener("colorschange", this, {capture: true});
55
+ this._slots.color_channel.removeEventListener("input", this);
56
+ }
57
+
58
+ handleEvent (evt) {
59
+ let source = evt.target;
60
+ if (source.tagName === "COLOR-SCALE" && evt.name === "computedColors") {
61
+ this.render(evt);
62
+ }
63
+
64
+ if (this._el.channel_picker === source || this._slots.color_channel.assignedElements().includes(source)) {
65
+ this.y = source.value;
66
+ }
67
+ }
68
+
69
+ series = new WeakMap();
70
+
71
+ render (evt) {
72
+ let colorScales = this.querySelectorAll("color-scale");
73
+
74
+ if (colorScales.length === 0) {
75
+ return;
76
+ }
77
+
78
+ let minX = Infinity, maxX = -Infinity;
79
+ let minY = Infinity, maxY = -Infinity;
80
+
81
+ for (let colorScale of colorScales) {
82
+ let scale = this.series.get(colorScale);
83
+
84
+ if (!scale || !evt || evt.target === colorScale || evt.target.nodeName !== "COLOR-SCALE") {
85
+ scale = this.renderScale(colorScale);
86
+ }
87
+
88
+ if (!scale) {
89
+ continue;
90
+ }
91
+
92
+ minX = Math.min(scale.x.min, minX);
93
+ maxX = Math.max(scale.x.max, maxX);
94
+ minY = Math.min(scale.y.min, minY);
95
+ maxY = Math.max(scale.y.max, maxY);
96
+ }
97
+
98
+ if (isFinite(minX) && isFinite(maxX)) {
99
+ let xAxis = getAxis(minX, maxX, 10);
100
+ this._el.chart.style.setProperty("--min-x", xAxis.min);
101
+ this._el.chart.style.setProperty("--max-x", xAxis.max);
102
+ this._el.chart.style.setProperty("--steps-x", xAxis.steps);
103
+ this._el.xTicks.innerHTML = Array(xAxis.steps).fill().map((_, i) => "<div part='x tick'>" + +(xAxis.min + i * xAxis.step).toPrecision(15) + "</div>").join("\n");
104
+ }
105
+
106
+ minY = this.yMin === "auto" || this.yMinAsNumber === undefined || Number.isNaN(this.yMinAsNumber) ? minY : this.yMinAsNumber;
107
+ maxY = this.yMax === "auto" || this.yMaxAsNumber === undefined || Number.isNaN(this.yMaxAsNumber) ? maxY : this.yMaxAsNumber;
108
+
109
+ if (isFinite(minY) && isFinite(maxY)) {
110
+ let yAxis = getAxis(minY, maxY, 10);
111
+
112
+ this._el.chart.style.setProperty("--min-y", yAxis.min);
113
+ this._el.chart.style.setProperty("--max-y", yAxis.max);
114
+ this._el.chart.style.setProperty("--steps-y", yAxis.steps);
115
+ this._el.yTicks.innerHTML = Array(yAxis.steps).fill().map((_, i) => "<div part='y tick'>" + +(yAxis.min + i * yAxis.step).toPrecision(15) + "</div>").reverse().join("\n");
116
+ this._el.yLabel.textContent = this.space.name + " " + this.yResolved.name;
117
+ }
118
+ }
119
+
120
+ renderScale (colorScale) {
121
+ if (!colorScale.computedColors) {
122
+ // Not yet initialized
123
+ return;
124
+ }
125
+
126
+ let ret = {
127
+ element: colorScale,
128
+ swatches: new WeakMap(),
129
+ x: {min: Infinity, max: -Infinity, values: new WeakMap() },
130
+ y: {min: Infinity, max: -Infinity, values: new WeakMap()},
131
+ colors: colorScale.computedColors?.slice() ?? [],
132
+ };
133
+
134
+ colorScale.style.setProperty("--color-count", ret.colors.length);
135
+
136
+ let yAll = ret.colors.map(({color}) => color.to(this.space).get(this.y));
137
+ let yMin = this.yMin === "auto" || this.yMinAsNumber === undefined || Number.isNaN(this.yMinAsNumber) ? -Infinity : this.yMinAsNumber;
138
+ let yMax = this.yMax === "auto" || this.yMaxAsNumber === undefined || Number.isNaN(this.yMaxAsNumber) ? Infinity : this.yMaxAsNumber;
139
+
140
+ if (this.yResolved.type === "angle") {
141
+ // First, normalize
142
+ yAll = normalizeAngles(yAll);
143
+ }
144
+
145
+ let index = 0;
146
+ for (let {name, color} of ret.colors) {
147
+ let swatch = colorScale._el.swatches.children[index];
148
+ ret.colors[index] = color = color.to(this.space);
149
+ ret.swatches.set(color, swatch);
150
+
151
+ // It's not always possible to use the last number in the color label as the X-coord;
152
+ // for example, the number “9” can't be interpreted as the X-coord in the “#90caf9” label.
153
+ // It might cause bugs with color order (see https://github.com/color-js/elements/issues/103).
154
+ // We expect the valid X-coord to be the only number in the color label (e.g., 50)
155
+ // or separated from the previous text with a space (e.g., Red 50 or Red / 50).
156
+ let x = name.match(/(?:^|\s)-?\d*\.?\d+$/)?.[0];
157
+ if (x !== undefined) {
158
+ // Transform `Label / X-coord` to `Label`
159
+ // (there should be at least one space before and after the slash so the number is treated as an X-coord)
160
+ let label = name.slice(0, -x.length).trim();
161
+ if (label.endsWith("/")) {
162
+ name = label.slice(0, -1).trim();
163
+ }
164
+
165
+ swatch.label = name;
166
+
167
+ x = Number(x);
168
+ }
169
+ else {
170
+ x = index;
171
+ }
172
+
173
+ let y = yAll[index];
174
+
175
+ ret.x.values.set(color, x);
176
+ ret.y.values.set(color, y);
177
+
178
+ let outOfRange = (isFinite(yMin) && y < yMin) || (isFinite(yMax) && y > yMax);
179
+ if (!outOfRange) {
180
+ // Only swatches that are in range participate in the min/max calculation
181
+ ret.x.min = Math.min(ret.x.min, x);
182
+ ret.x.max = Math.max(ret.x.max, x);
183
+ ret.y.min = Math.min(ret.y.min, y);
184
+ ret.y.max = Math.max(ret.y.max, y);
185
+ }
186
+
187
+ swatch.style.setProperty("--x", x);
188
+ swatch.style.setProperty("--y", y);
189
+ swatch.style.setProperty("--index", index);
190
+
191
+ if (HTMLElement.prototype.hasOwnProperty("popover") && !swatch._el.wrapper.hasAttribute("popover")) {
192
+ // The Popover API is supported
193
+ let popover = swatch._el.wrapper;
194
+ popover.setAttribute("popover", "");
195
+
196
+ // We need these for the popover to be correctly activated and positioned,
197
+ // otherwise, it won't be on the top layer
198
+ swatch.addEventListener("pointerenter", evt => {
199
+ // Position the popover relative to the parent swatch
200
+ // (instead of the center of the viewport by default)
201
+ let rect = swatch.getBoundingClientRect();
202
+ popover.style.setProperty("--_popover-left", rect.left + rect.width / 2 + "px");
203
+ popover.style.setProperty("--_popover-top", rect.top - rect.height / 2 + "px");
204
+
205
+ popover.showPopover();
206
+ });
207
+ swatch.addEventListener("pointerleave", evt => popover.hidePopover());
208
+ }
209
+
210
+ index++;
211
+ }
212
+
213
+ // Sort colors by X (ascending)
214
+ ret.colors.sort((a, b) => ret.x.values.get(a) - ret.x.values.get(b));
215
+
216
+ let prevColor;
217
+ for (let color of ret.colors) {
218
+ let swatch = ret.swatches.get(color);
219
+
220
+ if (prevColor !== undefined) {
221
+ prevColor.style.setProperty("--next-color", swatch.style.getPropertyValue("--color"));
222
+ prevColor.style.setProperty("--next-x", ret.x.values.get(color));
223
+ prevColor.style.setProperty("--next-y", ret.y.values.get(color));
224
+ }
225
+
226
+ prevColor = swatch;
227
+ }
228
+
229
+ if (prevColor !== undefined) {
230
+ // When we update colors, and we have fewer colors than before,
231
+ // we need to make sure the last swatch is not connected to the non-existent next swatch
232
+ ["--next-color", "--next-x", "--next-y"].forEach(prop => prevColor.style.removeProperty(prop));
233
+ }
234
+
235
+ this.series.set(colorScale, ret);
236
+
237
+ return ret;
238
+ }
239
+
240
+ propChangedCallback (evt) {
241
+ let {name, prop, detail: change} = evt;
242
+
243
+ if (["yResolved", "yMinAsNumber", "yMaxAsNumber"].includes(name)) {
244
+ // Re-render swatches
245
+ this.render(evt);
246
+ }
247
+
248
+ if (name === "info") {
249
+ for (let colorScale of this.children) {
250
+ colorScale.info = this.info;
251
+ }
252
+ }
253
+ }
254
+
255
+ static props = {
256
+ y: {
257
+ default: "oklch.l",
258
+ convert (value) {
259
+ // Try setting the value to the channel picker. The picker will handle possible erroneous values.
260
+ this._el.channel_picker.value = value;
261
+
262
+ // If the value is not set, that means it's invalid.
263
+ // In that case, we are falling back to the picker's current value.
264
+ if (this._el.channel_picker.value !== value) {
265
+ return this._el.channel_picker.value;
266
+ }
267
+
268
+ return value;
269
+ },
270
+ },
271
+
272
+ yResolved: {
273
+ get () {
274
+ return Self.Color.Space.resolveCoord(this.y, "oklch");
275
+ },
276
+ // rawProp: "coord",
277
+ },
278
+
279
+ yMin: {
280
+ default: "auto",
281
+ changed (change) {
282
+ let { value } = change;
283
+
284
+ if (value === "auto") {
285
+ // `this.yMinAsNumber` will become `undefined` (i.e., get a new value), and the chart will be re-rendered
286
+ this._el.chart.style.removeProperty("--min-y");
287
+ }
288
+ },
289
+ reflect: {
290
+ from: "ymin",
291
+ },
292
+ },
293
+
294
+ yMinAsNumber: {
295
+ get () {
296
+ if (this.yMin === "coord") {
297
+ let range = this.yResolved.refRange ?? this.yResolved.range ?? [0, 100];
298
+ return range[0];
299
+ }
300
+ else if (this.yMin === "auto") {
301
+ let minY = this._el.chart.style.getPropertyValue("--min-y");
302
+
303
+ if (minY !== "") {
304
+ return Number(minY);
305
+ }
306
+
307
+ // Intermediate state (the chart is not rendered yet)
308
+ return;
309
+ }
310
+
311
+ return Number(this.yMin);
312
+ },
313
+ set (value) {
314
+ value = Number(value);
315
+
316
+ if (Number.isNaN(value)) {
317
+ this.yMin = "auto";
318
+ }
319
+ else {
320
+ this.yMin = value.toString();
321
+ }
322
+
323
+ },
324
+ },
325
+
326
+ yMax: {
327
+ default: "auto",
328
+ changed (change) {
329
+ let { value } = change;
330
+
331
+ if (value === "auto") {
332
+ // `this.yMaxAsNumber` will become `undefined` (i.e., get a new value), and the chart will be re-rendered
333
+ this._el.chart.style.removeProperty("--max-y");
334
+ }
335
+ },
336
+ reflect: {
337
+ from: "ymax",
338
+ },
339
+ },
340
+
341
+ yMaxAsNumber: {
342
+ get () {
343
+ if (this.yMax === "coord") {
344
+ let range = this.yResolved.refRange ?? this.yResolved.range ?? [0, 100];
345
+ return range[1];
346
+ }
347
+ else if (this.yMax === "auto") {
348
+ let maxY = this._el.chart.style.getPropertyValue("--max-y");
349
+
350
+ if (maxY !== "") {
351
+ return Number(maxY);
352
+ }
353
+
354
+ // Intermediate state (the chart is not rendered yet)
355
+ return;
356
+ }
357
+
358
+ return Number(this.yMax);
359
+
360
+ },
361
+ set (value) {
362
+ value = Number(value);
363
+
364
+ if (Number.isNaN(value)) {
365
+ this.yMax = "auto";
366
+ }
367
+ else {
368
+ this.yMax = value.toString();
369
+ }
370
+
371
+ },
372
+ },
373
+
374
+ space: {
375
+ default: "oklch",
376
+ get () {
377
+ return this.yResolved.space;
378
+ },
379
+ },
380
+
381
+ info: {},
382
+ };
383
+ };
384
+
385
+ Self.define();
386
+
387
+ export default Self;
388
+
389
+ function getAxis (min, max, initialSteps) {
390
+ let range = max - min;
391
+ let step = range / initialSteps;
392
+ let magnitude = Math.floor(Math.log10(step));
393
+ let base = Math.pow(10, magnitude);
394
+ let candidates = [base, base * 2, base * 5, base * 10];
395
+
396
+ for (let i = 0; i < candidates.length; i++) {
397
+ if (candidates[i] > step) {
398
+ step = candidates[i];
399
+ break;
400
+ }
401
+ }
402
+
403
+ let start = Math.floor(min / step) * step;
404
+ let end = Math.ceil(max / step) * step;
405
+ let steps = Math.round((end - start) / step);
406
+
407
+ let ret = {min: start, max: end, step, steps};
408
+ for (let prop in ret) {
409
+ ret[prop] = +ret[prop].toPrecision(15);
410
+ }
411
+ return ret;
412
+ }
413
+
414
+ function normalizeAngles (angles) {
415
+ // First, normalize
416
+ angles = angles.map(h => ((h % 360) + 360) % 360);
417
+
418
+ // Remove top and bottom 25% and find average
419
+ let averageHue = angles.toSorted((a, b) => a - b).slice(angles.length / 4, -angles.length / 4).reduce((a, b) => a + b, 0) / angles.length;
420
+
421
+ for (let i = 0; i < angles.length; i++) {
422
+ let h = angles[i];
423
+ let prevHue = angles[i - 1];
424
+ let delta = h - prevHue;
425
+
426
+ if (Math.abs(delta) > 180) {
427
+ let equivalent = [h + 360, h - 360];
428
+ // Offset hue to minimize difference in the direction that brings it closer to the average
429
+ let delta = h - averageHue;
430
+
431
+ if (Math.abs(equivalent[0] - prevHue) <= Math.abs(equivalent[1] - prevHue)) {
432
+ angles[i] = equivalent[0];
433
+ }
434
+ else {
435
+ angles[i] = equivalent[1];
436
+ }
437
+ }
438
+ }
439
+
440
+ return angles;
441
+ }
Binary file
@@ -0,0 +1,72 @@
1
+ ---
2
+ layout: component
3
+ css: "style.css"
4
+ ---
5
+
6
+ # `<color-inline>`
7
+
8
+ Basic use:
9
+
10
+ <html-demo adjust="font-size">
11
+
12
+ ```html
13
+ <color-inline>lch(50% 40 30)</color-inline>
14
+ ```
15
+ </html-demo>
16
+
17
+ You can use `value` to set the color swatch while displaying something else as the content (or even nothing at all):
18
+
19
+ ```html
20
+ <color-inline value="lch(50% 40 30)"></color-inline>
21
+ ```
22
+
23
+ Editable:
24
+ ```html
25
+ <color-inline contentEditable>lch(50% 40 30)</color-inline>
26
+ ```
27
+
28
+ Semi-transparent color:
29
+ ```html
30
+ <color-inline>hsl(340 90% 50% / .25)</color-inline>
31
+ ```
32
+
33
+ Invalid color:
34
+
35
+ ```html
36
+ <color-inline>foobar</color-inline>
37
+ ```
38
+
39
+ ## Reference
40
+
41
+ ### Slots
42
+
43
+ | Name | Description |
44
+ |------|-------------|
45
+ | _(default)_ | The element's main content—the color to be shown. Placed next to the color swatch. |
46
+
47
+ ### Attributes & Properties
48
+
49
+ | Attribute | Property | Property type | Default value | Description |
50
+ |-----------|----------|---------------|---------------|-------------|
51
+ | `color` | `color` | `Color` &#124; `null` | - | The current color value. `null` for invalid colors. |
52
+ | `value` | `value` | `string` | - | The textual form of the color. Will have a value even if the color is invalid. |
53
+
54
+
55
+ ### CSS variables
56
+
57
+ | Variable | Type | Description |
58
+ |----------|---------------|-------------|
59
+ | `--transparency-grid` | `<image>` | Gradient used as a background for transparent parts of the swatch. |
60
+ | `--transparency-cell-size` | `<length>` | The size of the tiles in the transparency grid. This will not be used if you are overriding `--transparency-grid`. |
61
+ | `--transparcency-background` | `<color>` | The background color of the transparency gradient. |
62
+ | `--transparency-darkness` | `<percentage>` | The opacity of the black color used for dark parts of the transparency gradient. |
63
+ | `--border-width` | `<length>` | The width of the border around the swatch. |
64
+ | `--box-shadow-blur` | `<length>` | The blur radius of the box shadow around the swatch. |
65
+ | `--box-shadow-color` | `<color>` | The color of the box shadow around the swatch. |
66
+
67
+ ### Parts
68
+
69
+ | Name | Description |
70
+ |------|-------------|
71
+ | `swatch-wrapper` | The component’s base wrapper. |
72
+ | `swatch` | An internal element used to provide a visual preview of the current color. |
@@ -6,9 +6,16 @@
6
6
  }
7
7
 
8
8
  #swatch {
9
+ --_transparency-cell-size: var(--transparency-cell-size, clamp(6px, .5em, 30px));
10
+ --_transparency-background: var(--transparency-background, transparent);
11
+ --_transparency-darkness: var(--transparency-darkness, 5%);
12
+ --_transparency-grid: var(--transparency-grid,
13
+ repeating-conic-gradient(transparent 0 25%, rgb(0 0 0 / var(--_transparency-darkness)) 0 50%)
14
+ 0 0 / calc(2 * var(--_transparency-cell-size)) calc(2 * var(--_transparency-cell-size))
15
+ content-box border-box var(--_transparency-background)
16
+ );
17
+
9
18
  --color-image: linear-gradient(var(--color), var(--color));
10
- --transparency-tile-size: clamp(6px, .5em, 30px);
11
- --transparency-grid: repeating-conic-gradient(hsl(0 0% 85%) 0 25%, hsl(0 0% 98%) 0 50%) 0 0 / var(--transparency-tile-size) var(--transparency-tile-size);
12
19
  --border-width: clamp(2px, .15em, 16px);
13
20
  --box-shadow-blur: clamp(2px, .1em, 5px);
14
21
  --box-shadow-color: rgb(0 0 0 / .3);
@@ -19,7 +26,7 @@
19
26
  height: 1.2em;
20
27
  border: var(--border-width) solid white;
21
28
  box-sizing: border-box;
22
- background: var(--color-image, 0), var(--transparency-grid, canvas);
29
+ background: var(--color-image, 0), var(--_transparency-grid, canvas);
23
30
  box-shadow: calc(var(--box-shadow-blur) * .2) calc(var(--box-shadow-blur) * .2) var(--box-shadow-blur) var(--box-shadow-color);
24
31
  border-radius: clamp(1px, .1em, 10px);
25
32
  }
@@ -31,7 +38,7 @@
31
38
 
32
39
  #swatch.invalid {
33
40
  --color-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y=".9em" font-size="90">⚠️</text></svg>');
34
- --transparency-grid: initial;
41
+ --_transparency-grid: initial;
35
42
  }
36
43
 
37
44
  @media (prefers-color-scheme: dark) {
@@ -0,0 +1,85 @@
1
+ import ColorElement from "../common/color-element.js";
2
+
3
+ const Self = class ColorInline extends ColorElement {
4
+ static tagName = "color-inline";
5
+ static url = import.meta.url;
6
+ static shadowStyle = true;
7
+ static shadowTemplate = `
8
+ <div part="swatch-wrapper">
9
+ <div id="swatch" part="swatch"></div>
10
+ <slot></slot>
11
+ </div>`;
12
+
13
+ constructor () {
14
+ super();
15
+
16
+ this._el = {};
17
+ this._el.swatch = this.shadowRoot.querySelector("#swatch");
18
+ }
19
+
20
+ connectedCallback () {
21
+ super.connectedCallback?.();
22
+ Self.#mo.observe(this, {childList: true, subtree: true, characterData: true});
23
+ }
24
+
25
+ propChangedCallback ({name, prop, detail: change}) {
26
+ if (name === "color") {
27
+ let isValid = this.color !== null;
28
+ this._el.swatch.classList.toggle("invalid", !isValid);
29
+
30
+ let colorString = this.color?.display();
31
+ this._el.swatch.style.setProperty("--color", colorString);
32
+ }
33
+ }
34
+
35
+ static #mo = new MutationObserver(mutations => {
36
+ for (let mutation of mutations) {
37
+ let target = mutation.target;
38
+
39
+ while (target && !(target instanceof ColorInline)) {
40
+ target = target.parentNode;
41
+ }
42
+
43
+ if (target) {
44
+ target.value = target.textContent.trim();
45
+ }
46
+ }
47
+ });
48
+
49
+ static props = {
50
+ value: {
51
+ type: String,
52
+ default () {
53
+ return this.textContent.trim();
54
+ },
55
+ },
56
+ color: {
57
+ get type () {
58
+ return Self.Color;
59
+ },
60
+ defaultProp: "value",
61
+ parse (value) {
62
+ if (!value) {
63
+ return null;
64
+ }
65
+
66
+ return Self.Color.get(value);
67
+ },
68
+ reflect: false,
69
+ },
70
+ };
71
+
72
+ static events = {
73
+ colorchange: {
74
+ propchange: "color",
75
+ },
76
+ valuechange: {
77
+ propchange: "value",
78
+ },
79
+ };
80
+ };
81
+
82
+
83
+ Self.define();
84
+
85
+ export default Self;
@@ -0,0 +1,14 @@
1
+ html {
2
+ color-scheme: light dark;
3
+ }
4
+
5
+ @media (prefers-color-scheme: dark) {
6
+ html {
7
+ background: hsl(220 5% 20%);
8
+ }
9
+ }
10
+
11
+ color-inline {
12
+ display: block;
13
+ margin: 1em 0;
14
+ }