color-elements 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/README.md +30 -15
  2. package/_build/copy-config.json +1 -1
  3. package/_build/eleventy.js +7 -2
  4. package/_build/filters-extra.js +1 -1
  5. package/_includes/component.njk +9 -1
  6. package/_includes/partials/_nav-links.njk +11 -4
  7. package/_redirects +8 -1
  8. package/assets/css/style.css +78 -1
  9. package/assets/js/index.js +6 -6
  10. package/data/components.json +12 -0
  11. package/debug.html +447 -0
  12. package/index.js +5 -1
  13. package/package.json +2 -1
  14. package/src/channel-picker/README.md +103 -0
  15. package/src/channel-picker/channel-picker.css +31 -0
  16. package/src/channel-picker/channel-picker.js +168 -0
  17. package/src/channel-picker/channel-picker.webp +0 -0
  18. package/src/channel-slider/README.md +50 -8
  19. package/src/channel-slider/channel-slider.css +47 -5
  20. package/src/channel-slider/channel-slider.js +74 -39
  21. package/src/channel-slider/channel-slider.webp +0 -0
  22. package/src/color-chart/README.md +129 -0
  23. package/src/color-chart/color-chart-global.css +97 -0
  24. package/src/color-chart/color-chart.css +112 -0
  25. package/src/color-chart/color-chart.js +441 -0
  26. package/src/color-chart/color-chart.webp +0 -0
  27. package/src/color-inline/README.md +42 -1
  28. package/src/color-inline/color-inline.css +11 -4
  29. package/src/color-inline/color-inline.js +56 -50
  30. package/src/color-inline/color-inline.webp +0 -0
  31. package/src/color-picker/README.md +107 -5
  32. package/src/color-picker/color-picker.css +21 -6
  33. package/src/color-picker/color-picker.js +147 -60
  34. package/src/color-picker/color-picker.webp +0 -0
  35. package/src/color-scale/README.md +75 -0
  36. package/src/color-scale/color-scale.css +40 -0
  37. package/src/color-scale/color-scale.js +164 -0
  38. package/src/color-scale/color-scale.webp +0 -0
  39. package/src/color-slider/README.md +31 -4
  40. package/src/color-slider/color-slider.css +17 -7
  41. package/src/color-slider/color-slider.js +80 -38
  42. package/src/color-slider/color-slider.webp +0 -0
  43. package/src/color-swatch/README.md +265 -6
  44. package/src/color-swatch/color-swatch.css +162 -27
  45. package/src/color-swatch/color-swatch.js +191 -217
  46. package/src/color-swatch/color-swatch.webp +0 -0
  47. package/src/common/color-element.js +86 -0
  48. package/src/common/dom.js +1 -1
  49. package/src/common/util.js +12 -99
  50. package/src/gamut-badge/README.md +145 -0
  51. package/src/gamut-badge/gamut-badge.css +78 -0
  52. package/src/gamut-badge/gamut-badge.js +121 -0
  53. package/src/gamut-badge/gamut-badge.webp +0 -0
  54. package/src/index.js.njk +1 -1
  55. package/src/space-picker/README.md +121 -0
  56. package/src/space-picker/space-picker.css +23 -0
  57. package/src/space-picker/space-picker.js +213 -0
  58. package/src/space-picker/space-picker.webp +0 -0
  59. package/_data/components.json +0 -8
  60. package/lib/README.md +0 -4
  61. package/lib/colorjs.io/LICENSE +0 -21
  62. package/lib/colorjs.io/README.json +0 -3
  63. package/lib/colorjs.io/README.md +0 -257
  64. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  65. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  66. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  67. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  68. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  69. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  70. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  71. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  72. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  73. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  74. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  75. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  76. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  77. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  78. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  79. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  80. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  81. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  82. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  83. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  84. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  85. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  86. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  88. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  90. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  94. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  96. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  98. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  100. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  101. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  102. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  103. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  104. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  105. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  106. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  107. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  108. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  109. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  110. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  111. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  112. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  113. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  114. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  115. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  116. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  117. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  118. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  119. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  120. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  121. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  122. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  123. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  124. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  125. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  126. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  127. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  128. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  129. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  130. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  131. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  132. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  133. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  134. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  135. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  136. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  137. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  138. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  139. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  140. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  141. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  142. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  143. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  144. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  145. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  146. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  147. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  148. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  149. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  150. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  151. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  152. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  153. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  154. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  155. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  156. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  157. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  158. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  159. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  160. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  161. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  162. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  163. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  164. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  165. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  166. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  167. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  168. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  169. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  170. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  171. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  172. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  173. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  174. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  175. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  176. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  177. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  178. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  179. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  180. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  181. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  182. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  183. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  184. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  185. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  186. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  187. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  188. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  189. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  190. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  191. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  192. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  193. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  194. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  195. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  196. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  197. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  198. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  199. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  200. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  201. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  202. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  203. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  204. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  205. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  206. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  207. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  208. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  209. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  210. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  211. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  212. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  213. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  214. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  215. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  216. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  217. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  218. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  219. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  220. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  221. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  222. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  223. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  224. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  225. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  226. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  227. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  228. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  229. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  230. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  231. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  232. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  233. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  234. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  236. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  237. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  238. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  239. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  240. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  241. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  242. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  243. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  244. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  245. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  246. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  247. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  248. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  249. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  250. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  251. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  252. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  271. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  272. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  273. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  274. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  275. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  276. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  277. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  278. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  279. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  280. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  281. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  282. package/lib/colorjs.io/dist/color.cjs +0 -5759
  283. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  284. package/lib/colorjs.io/dist/color.global.js +0 -5760
  285. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  286. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  287. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  288. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  289. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  290. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  291. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  292. package/lib/colorjs.io/dist/color.js +0 -5755
  293. package/lib/colorjs.io/dist/color.js.map +0 -1
  294. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  295. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  297. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  298. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  301. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  302. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  303. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  304. package/lib/colorjs.io/dist/color.min.js +0 -2
  305. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  306. package/lib/colorjs.io/package.json +0 -113
  307. package/lib/colorjs.io/src/CATs.js +0 -131
  308. package/lib/colorjs.io/src/adapt.js +0 -62
  309. package/lib/colorjs.io/src/angles.js +0 -44
  310. package/lib/colorjs.io/src/chromaticity.js +0 -33
  311. package/lib/colorjs.io/src/clone.js +0 -7
  312. package/lib/colorjs.io/src/color.js +0 -201
  313. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  314. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  315. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  316. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  317. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  318. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  319. package/lib/colorjs.io/src/contrast/index.js +0 -6
  320. package/lib/colorjs.io/src/contrast.js +0 -28
  321. package/lib/colorjs.io/src/defaults.js +0 -12
  322. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  323. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  324. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  325. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  326. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  327. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  328. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  329. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  330. package/lib/colorjs.io/src/deltaE.js +0 -19
  331. package/lib/colorjs.io/src/display.js +0 -83
  332. package/lib/colorjs.io/src/distance.js +0 -21
  333. package/lib/colorjs.io/src/equals.js +0 -10
  334. package/lib/colorjs.io/src/get.js +0 -11
  335. package/lib/colorjs.io/src/getAll.js +0 -20
  336. package/lib/colorjs.io/src/getColor.js +0 -36
  337. package/lib/colorjs.io/src/hooks.js +0 -37
  338. package/lib/colorjs.io/src/inGamut.js +0 -25
  339. package/lib/colorjs.io/src/index-fn.js +0 -28
  340. package/lib/colorjs.io/src/index.js +0 -38
  341. package/lib/colorjs.io/src/interpolation.js +0 -222
  342. package/lib/colorjs.io/src/keywords.js +0 -158
  343. package/lib/colorjs.io/src/luminance.js +0 -27
  344. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  345. package/lib/colorjs.io/src/parse.js +0 -198
  346. package/lib/colorjs.io/src/rgbspace.js +0 -64
  347. package/lib/colorjs.io/src/serialize.js +0 -86
  348. package/lib/colorjs.io/src/set.js +0 -33
  349. package/lib/colorjs.io/src/setAll.js +0 -12
  350. package/lib/colorjs.io/src/space-accessors.js +0 -86
  351. package/lib/colorjs.io/src/space.js +0 -440
  352. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  353. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  354. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  355. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  356. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  357. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  358. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  359. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  360. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  361. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  362. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  363. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  364. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  365. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  366. package/lib/colorjs.io/src/spaces/index.js +0 -8
  367. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  368. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  369. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  370. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  371. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  372. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  373. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  374. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  375. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  376. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  377. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  378. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  379. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  380. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  381. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  382. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  383. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  384. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  385. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  386. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  387. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  388. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  389. package/lib/colorjs.io/src/to.js +0 -26
  390. package/lib/colorjs.io/src/toGamut.js +0 -310
  391. package/lib/colorjs.io/src/util.js +0 -254
  392. package/lib/colorjs.io/src/variations.js +0 -14
  393. package/lib/colorjs.io/types/index.d.cts +0 -4
  394. package/lib/colorjs.io/types/index.d.ts +0 -42
  395. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  396. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  397. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  398. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  399. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  400. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  401. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  402. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  403. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  404. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  405. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  406. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  407. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  408. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  409. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  410. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  411. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  412. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  413. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  414. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  415. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  416. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  417. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  418. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  419. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  420. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  421. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  422. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  423. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  424. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  425. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  426. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  427. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  428. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  429. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  430. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  431. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  432. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  433. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  434. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  435. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  436. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  437. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  438. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  439. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  440. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  441. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  442. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  443. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  444. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  445. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  446. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  447. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  448. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  449. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  450. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  451. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  452. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  453. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  454. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  455. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  456. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  457. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  458. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  459. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  460. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  471. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  472. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  473. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  478. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  479. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  480. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
  481. package/src/color-gamut/README.md +0 -75
  482. package/src/color-gamut/color-gamut.css +0 -32
  483. package/src/color-gamut/color-gamut.js +0 -172
  484. package/src/common/color.js +0 -12
@@ -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
@@ -14,6 +14,12 @@ Basic use:
14
14
  ```
15
15
  </html-demo>
16
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
+
17
23
  Editable:
18
24
  ```html
19
25
  <color-inline contentEditable>lch(50% 40 30)</color-inline>
@@ -28,4 +34,39 @@ Invalid color:
28
34
 
29
35
  ```html
30
36
  <color-inline>foobar</color-inline>
31
- ```
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) {
@@ -1,62 +1,34 @@
1
- import Color from "../common/color.js";
1
+ import ColorElement from "../common/color-element.js";
2
2
 
3
- let styleURL = new URL("./color-inline.css", import.meta.url);
4
-
5
- export default class ColorInline extends HTMLElement {
6
- #swatch;
7
-
8
- constructor () {
9
- super();
10
- this.attachShadow({mode: "open"});
11
- this.shadowRoot.innerHTML = `<style>@import url("${ styleURL }");</style>
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 = `
12
8
  <div part="swatch-wrapper">
13
9
  <div id="swatch" part="swatch"></div>
14
10
  <slot></slot>
15
11
  </div>`;
16
- this.#swatch = this.shadowRoot.querySelector("#swatch");
17
- this.attributeChangedCallback();
18
- }
19
12
 
20
- connectedCallback () {
21
- this.#render();
22
- ColorInline.#mo.observe(this, {childList: true, subtree: true, characterData: true});
23
- }
24
-
25
- #value;
26
- get value () {
27
- return this.#value;
28
- }
29
- set value (value) {
30
- this.#value = value;
31
- this.#render();
32
- }
13
+ constructor () {
14
+ super();
33
15
 
34
- #color;
35
- get color () {
36
- return this.#color;
16
+ this._el = {};
17
+ this._el.swatch = this.shadowRoot.querySelector("#swatch");
37
18
  }
38
19
 
39
- #render () {
40
- let colorText = this.value || this.textContent;
41
-
42
- try {
43
- this.#color = new Color(colorText);
44
- this.#swatch.style.cssText = `--color: ${this.#color.display()}`;
45
- this.#swatch.classList.remove("invalid");
46
- }
47
- catch (e) {
48
- this.#color = null;
49
- this.#swatch.classList.add("invalid");
50
- }
20
+ connectedCallback () {
21
+ super.connectedCallback?.();
22
+ Self.#mo.observe(this, {childList: true, subtree: true, characterData: true});
51
23
  }
52
24
 
53
- static get observedAttributes () {
54
- return ["value"];
55
- }
25
+ propChangedCallback ({name, prop, detail: change}) {
26
+ if (name === "color") {
27
+ let isValid = this.color !== null;
28
+ this._el.swatch.classList.toggle("invalid", !isValid);
56
29
 
57
- attributeChangedCallback (name, newValue) {
58
- if (!name && this.hasAttribute("value") || name === "value") {
59
- this.value = this.getAttribute("value");
30
+ let colorString = this.color?.display();
31
+ this._el.swatch.style.setProperty("--color", colorString);
60
32
  }
61
33
  }
62
34
 
@@ -69,11 +41,45 @@ export default class ColorInline extends HTMLElement {
69
41
  }
70
42
 
71
43
  if (target) {
72
- target.#render();
44
+ target.value = target.textContent.trim();
73
45
  }
74
46
  }
75
47
  });
76
- }
77
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();
78
84
 
79
- customElements.define("color-inline", ColorInline);
85
+ export default Self;