color-elements 0.0.2 → 0.0.4

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 (483) 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 +12 -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/index.js +5 -1
  12. package/package.json +9 -3
  13. package/src/channel-picker/README.md +103 -0
  14. package/src/channel-picker/channel-picker.css +31 -0
  15. package/src/channel-picker/channel-picker.js +168 -0
  16. package/src/channel-picker/channel-picker.webp +0 -0
  17. package/src/channel-slider/README.md +50 -8
  18. package/src/channel-slider/channel-slider.css +47 -5
  19. package/src/channel-slider/channel-slider.js +74 -39
  20. package/src/channel-slider/channel-slider.webp +0 -0
  21. package/src/color-chart/README.md +129 -0
  22. package/src/color-chart/color-chart-global.css +101 -0
  23. package/src/color-chart/color-chart.css +112 -0
  24. package/src/color-chart/color-chart.js +439 -0
  25. package/src/color-chart/color-chart.webp +0 -0
  26. package/src/color-inline/README.md +42 -1
  27. package/src/color-inline/color-inline.css +11 -4
  28. package/src/color-inline/color-inline.js +56 -50
  29. package/src/color-inline/color-inline.webp +0 -0
  30. package/src/color-picker/README.md +107 -5
  31. package/src/color-picker/color-picker.css +21 -6
  32. package/src/color-picker/color-picker.js +147 -60
  33. package/src/color-picker/color-picker.webp +0 -0
  34. package/src/color-scale/README.md +75 -0
  35. package/src/color-scale/color-scale.css +35 -0
  36. package/src/color-scale/color-scale.js +164 -0
  37. package/src/color-scale/color-scale.webp +0 -0
  38. package/src/color-slider/README.md +31 -4
  39. package/src/color-slider/color-slider.css +17 -7
  40. package/src/color-slider/color-slider.js +80 -38
  41. package/src/color-slider/color-slider.webp +0 -0
  42. package/src/color-swatch/README.md +265 -6
  43. package/src/color-swatch/color-swatch.css +171 -27
  44. package/src/color-swatch/color-swatch.js +193 -217
  45. package/src/color-swatch/color-swatch.webp +0 -0
  46. package/src/common/color-element.js +140 -0
  47. package/src/common/dom.js +1 -1
  48. package/src/common/util.js +62 -84
  49. package/src/gamut-badge/README.md +145 -0
  50. package/src/gamut-badge/gamut-badge.css +78 -0
  51. package/src/gamut-badge/gamut-badge.js +121 -0
  52. package/src/gamut-badge/gamut-badge.webp +0 -0
  53. package/src/index.js.njk +1 -1
  54. package/src/space-picker/README.md +121 -0
  55. package/src/space-picker/space-picker.css +23 -0
  56. package/src/space-picker/space-picker.js +213 -0
  57. package/src/space-picker/space-picker.webp +0 -0
  58. package/_data/components.json +0 -8
  59. package/lib/README.md +0 -4
  60. package/lib/colorjs.io/LICENSE +0 -21
  61. package/lib/colorjs.io/README.json +0 -3
  62. package/lib/colorjs.io/README.md +0 -257
  63. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  64. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  65. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  66. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  67. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  68. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  69. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  70. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  71. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  72. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  73. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  74. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  75. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  76. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  77. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  78. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  79. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  80. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  81. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  82. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  83. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  84. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  85. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  86. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  87. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  88. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  89. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  90. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  91. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  92. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  93. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  94. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  95. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  96. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  97. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  98. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  99. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  100. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  101. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  102. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  103. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  104. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  105. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  106. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  107. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  108. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  109. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  110. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  111. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  112. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  113. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  114. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  115. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  116. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  117. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  118. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  119. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  120. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  121. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  122. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  123. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  124. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  125. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  126. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  127. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  129. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  130. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  131. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  133. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  134. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  135. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  136. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  137. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  138. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  139. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  140. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  141. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  142. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  143. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  144. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  145. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  147. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  148. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  149. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  150. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  151. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  152. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  153. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  154. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  155. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  156. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  157. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  158. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  159. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  160. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  161. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  162. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  163. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  164. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  165. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  166. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  167. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  168. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  169. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  170. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  171. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  172. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  173. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  174. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  175. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  176. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  177. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  178. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  179. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  180. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  181. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  182. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  183. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  184. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  185. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  186. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  187. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  188. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  189. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  190. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  191. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  192. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  193. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  194. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  195. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  196. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  197. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  198. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  199. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  200. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  201. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  202. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  203. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  204. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  205. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  206. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  207. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  208. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  209. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  210. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  211. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  212. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  213. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  214. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  215. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  216. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  217. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  218. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  219. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  220. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  221. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  222. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  223. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  224. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  225. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  226. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  227. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  228. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  229. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  230. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  231. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  232. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  233. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  234. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  236. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  237. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  238. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  239. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  240. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  241. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  242. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  243. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  244. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  246. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  247. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  248. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  249. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  250. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  251. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  252. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  270. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  271. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  272. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  273. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  274. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  275. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  276. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  277. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  278. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  279. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  280. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  281. package/lib/colorjs.io/dist/color.cjs +0 -5759
  282. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  283. package/lib/colorjs.io/dist/color.global.js +0 -5760
  284. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  285. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  286. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  287. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  288. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  289. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  290. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  291. package/lib/colorjs.io/dist/color.js +0 -5755
  292. package/lib/colorjs.io/dist/color.js.map +0 -1
  293. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  294. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  295. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  296. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  297. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  298. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  299. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  300. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  301. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  302. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  303. package/lib/colorjs.io/dist/color.min.js +0 -2
  304. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  305. package/lib/colorjs.io/package.json +0 -113
  306. package/lib/colorjs.io/src/CATs.js +0 -131
  307. package/lib/colorjs.io/src/adapt.js +0 -62
  308. package/lib/colorjs.io/src/angles.js +0 -44
  309. package/lib/colorjs.io/src/chromaticity.js +0 -33
  310. package/lib/colorjs.io/src/clone.js +0 -7
  311. package/lib/colorjs.io/src/color.js +0 -201
  312. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  313. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  314. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  315. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  316. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  317. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  318. package/lib/colorjs.io/src/contrast/index.js +0 -6
  319. package/lib/colorjs.io/src/contrast.js +0 -28
  320. package/lib/colorjs.io/src/defaults.js +0 -12
  321. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  322. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  323. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  324. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  325. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  326. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  327. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  328. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  329. package/lib/colorjs.io/src/deltaE.js +0 -19
  330. package/lib/colorjs.io/src/display.js +0 -83
  331. package/lib/colorjs.io/src/distance.js +0 -21
  332. package/lib/colorjs.io/src/equals.js +0 -10
  333. package/lib/colorjs.io/src/get.js +0 -11
  334. package/lib/colorjs.io/src/getAll.js +0 -20
  335. package/lib/colorjs.io/src/getColor.js +0 -36
  336. package/lib/colorjs.io/src/hooks.js +0 -37
  337. package/lib/colorjs.io/src/inGamut.js +0 -25
  338. package/lib/colorjs.io/src/index-fn.js +0 -28
  339. package/lib/colorjs.io/src/index.js +0 -38
  340. package/lib/colorjs.io/src/interpolation.js +0 -222
  341. package/lib/colorjs.io/src/keywords.js +0 -158
  342. package/lib/colorjs.io/src/luminance.js +0 -27
  343. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  344. package/lib/colorjs.io/src/parse.js +0 -198
  345. package/lib/colorjs.io/src/rgbspace.js +0 -64
  346. package/lib/colorjs.io/src/serialize.js +0 -86
  347. package/lib/colorjs.io/src/set.js +0 -33
  348. package/lib/colorjs.io/src/setAll.js +0 -12
  349. package/lib/colorjs.io/src/space-accessors.js +0 -86
  350. package/lib/colorjs.io/src/space.js +0 -440
  351. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  352. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  353. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  354. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  355. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  356. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  357. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  358. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  359. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  360. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  361. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  362. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  363. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  364. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  365. package/lib/colorjs.io/src/spaces/index.js +0 -8
  366. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  367. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  368. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  369. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  370. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  371. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  372. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  373. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  374. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  375. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  376. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  377. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  378. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  379. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  380. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  381. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  382. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  383. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  384. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  385. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  386. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  387. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  388. package/lib/colorjs.io/src/to.js +0 -26
  389. package/lib/colorjs.io/src/toGamut.js +0 -310
  390. package/lib/colorjs.io/src/util.js +0 -254
  391. package/lib/colorjs.io/src/variations.js +0 -14
  392. package/lib/colorjs.io/types/index.d.cts +0 -4
  393. package/lib/colorjs.io/types/index.d.ts +0 -42
  394. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  395. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  396. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  397. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  398. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  399. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  400. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  401. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  402. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  403. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  404. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  405. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  406. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  407. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  408. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  409. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  410. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  411. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  412. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  413. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  414. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  415. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  416. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  417. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  418. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  419. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  420. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  421. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  422. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  423. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  424. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  425. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  426. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  427. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  428. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  429. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  430. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  431. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  432. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  433. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  434. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  435. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  436. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  437. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  438. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  439. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  440. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  441. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  442. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  443. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  444. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  445. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  446. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  447. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  448. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  449. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  450. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  451. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  453. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  454. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  455. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  456. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  457. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  458. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  459. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  460. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  471. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  472. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  473. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  477. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  478. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  479. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
  480. package/src/color-gamut/README.md +0 -75
  481. package/src/color-gamut/color-gamut.css +0 -32
  482. package/src/color-gamut/color-gamut.js +0 -172
  483. package/src/common/color.js +0 -12
@@ -6,8 +6,8 @@ A [`<color-slider>`](../color-slider) for a specific channel, intended for color
6
6
 
7
7
  This is a higher level component than `<color-slider>` for the cases where you want to control a single channel of a color space.
8
8
  It offers many conveniences for these cases:
9
- - It takes care of applying the right `min` and `max` values to the slider
10
- - It automatically generates the start and end colors,
9
+ - It takes care of applying the right `min`, `max`, and `step` values to the slider
10
+ - It automatically generates the start and end colors
11
11
  - It can provide an editable tooltip as a tooltip that both shows and edits the current value
12
12
  - Already includes a suitable label
13
13
 
@@ -19,6 +19,12 @@ Basic example:
19
19
  <channel-slider space="oklch" channel="h"></channel-slider>
20
20
  ```
21
21
 
22
+ The alpha channel is also supported:
23
+
24
+ ```html
25
+ <channel-slider space="oklch" channel="alpha"></channel-slider>
26
+ ```
27
+
22
28
  In most cases you’d also want to set a color to set the other channels and the initial value:
23
29
 
24
30
  ```html
@@ -81,6 +87,7 @@ All attributes are reactive:
81
87
  <option>l</option>
82
88
  <option>c</option>
83
89
  <option>h</option>
90
+ <option>alpha</option>
84
91
  </select>
85
92
  </label>
86
93
 
@@ -90,13 +97,13 @@ All attributes are reactive:
90
97
  <script>
91
98
  function fromSlider () {
92
99
  space_select.value = dynamic_slider.space.id;
93
- channel_select.innerHTML = Object.keys(dynamic_slider.space.coords).map(c => `<option>${c}</option>`).join('\n');
94
- channel_select.value = dynamic_slider.channel;
100
+ channel_select.innerHTML = [...Object.keys(dynamic_slider.space.coords).map(c => `<option>${c}</option>`), "<option>alpha</option>"].join('\n');
101
+ channel_select.value = dynamic_slider.channel || channel_select.options[0].value;
95
102
  }
96
103
 
97
104
  function fromSelects () {
98
105
  dynamic_slider.space = space_select.value;
99
- dynamic_slider.channel = channel_select.value;
106
+ dynamic_slider.channel = channel_select.value || channel_select.options[0].value;
100
107
  }
101
108
 
102
109
  space_select.oninput = channel_select.oninput = fromSelects;
@@ -109,6 +116,12 @@ All attributes are reactive:
109
116
 
110
117
  ## Reference
111
118
 
119
+ ### Slots
120
+
121
+ | Name | Description |
122
+ |------|-------------|
123
+ | _(default)_ | The channel slider's label. |
124
+
112
125
  ### Attributes & Properties
113
126
 
114
127
  | Attribute | Property | Property type | Default value | Description |
@@ -117,7 +130,36 @@ All attributes are reactive:
117
130
  | `channel` | `channel` | `string` | `h` | The component to use for the gradient. |
118
131
  | `min` | `min` | `number` | `this.refRange[0]` | The minimum value for the slider. |
119
132
  | `max` | `max` | `number` | `this.refRange[1]` | The maximum value for the slider. |
133
+ | `step` | `step` | `number` | Computed automatically based on `this.min` and `this.max`. | The granularity that the slider's current value must adhere to. |
120
134
  | `value` | `value` | `number` | `(this.min + this.max) / 2` | The current value of the slider. |
121
- | `color` | `color` | `Color` &#124; `string` | `oklch(50 50% 180)` | The current color value. |
122
- | - | `minColor` | `Color` | `oklch(0 50% 180)` | The minimum color value _(read-only)_. |
123
- | - | `maxColor` | `Color` | `oklch(100 50% 180)` | The maximum color value _(read-only)_. |
135
+ | `color` | `color` | `Color` &#124; `string` | `oklch(50% 50% 180)` | The current color value. |
136
+
137
+ ### Getters
138
+
139
+ These properties are read-only.
140
+
141
+ | Property | Type | Description |
142
+ |----------|------|-------------|
143
+ | `minColor` | `Color` | The color corresponding to the minimum value of the slider. |
144
+ | `maxColor` | `Color` | The color corresponding to the maximum value of the slider. |
145
+ | `stops` | `Array<Color>` | The array of the slider color stops used for rendering. Unsupported color spaces or angular channels (hues) will have more color stops, while other channels may have as little as two: `minColor` and `maxColor`. |
146
+ | `progress` | `number` | The slider value converted to a 0-1 number with `0` corresponding to the min of the range and `1` to the max. |
147
+ | `channelName` | `string` | The name of the channel (e.g. `Hue` or `Alpha`). |
148
+
149
+
150
+ ### Events
151
+
152
+ | Name | Description |
153
+ |------|-------------|
154
+ | `input` | Fired when the color changes due to user action. |
155
+ | `change` | Fired when the color changes due to user action. |
156
+ | `valuechange` | Fired when the value changes for any reason, and once during initialization. |
157
+ | `colorchange` | Fired when the color changes for any reason, and once during initialization. |
158
+
159
+ ### Parts
160
+
161
+ | Name | Description |
162
+ |------|-------------|
163
+ | `color_slider` | The internal `<color-slider>` element. |
164
+ | `slider` | The `slider` part of the internal [`<color-slider>`](../color-slider/#parts) element. |
165
+ | `label` | The internal `<label>` element used as a wrapper around the default slot and the slider. |
@@ -1,19 +1,61 @@
1
1
  .color-slider-label {
2
+ --_transition-duration: var(--transition-duration, 200ms);
3
+
2
4
  display: grid;
3
5
  grid-template-columns: 1fr auto;
4
6
  gap: .3em;
5
- position: relative;
7
+ align-items: center;
6
8
 
7
9
  em {
8
10
  opacity: 60%;
11
+ transition: opacity var(--_transition-duration);
9
12
  }
10
- }
11
13
 
12
- color-slider {
13
- grid-column: 1 / -1;
14
- }
14
+ &:not(:hover, :focus-within) em {
15
+ opacity: 0;
16
+ }
17
+
18
+ input[type=number] {
19
+ --_border-color: var(--border-color, color-mix(in oklab, currentcolor calc(var(--_current-color-percent, 30) * 1%), oklab(none none none / 0%)));
20
+
21
+ all: unset;
15
22
 
23
+ --content-width: calc(var(--value-length) * 1ch);
24
+ width: calc(var(--content-width, 2ch) + 1.2em);
25
+ min-width: calc(2ch + 1.2em);
26
+ box-sizing: content-box;
27
+ padding: .1em .2em;
28
+ border-radius: .2em;
29
+ border: 1px solid var(--_border-color);
30
+ text-align: center;
31
+ font-size: 90%;
32
+ transition: var(--_transition-duration) allow-discrete;
33
+ transition-property: opacity, border-color;
16
34
 
35
+ &::-webkit-textfield-decoration-container {
36
+ gap: .2em;
37
+ }
17
38
 
39
+ &:not(:hover, :focus) {
40
+ --_current-color-percent: 10;
18
41
 
42
+ opacity: 60%;
43
+ border-color: var(--_border-color);
19
44
 
45
+ &::-webkit-inner-spin-button {
46
+ /* Fade out the spin buttons in Chrome and Safari */
47
+ opacity: .35;
48
+ filter: contrast(2);
49
+ }
50
+ }
51
+
52
+ @supports (field-sizing: content) {
53
+ field-sizing: content;
54
+ width: auto;
55
+ }
56
+ }
57
+ }
58
+
59
+ color-slider {
60
+ grid-column: 1 / -1;
61
+ }
@@ -1,40 +1,41 @@
1
1
  import "../color-slider/color-slider.js";
2
2
  import * as dom from "../common/dom.js";
3
- import Color from "../common/color.js";
4
- import NudeElement from "../../node_modules/nude-element/src/Element.js";
3
+ import ColorElement from "../common/color-element.js";
5
4
  import { getStep } from "../common/util.js";
6
5
 
7
- export const tagName = "channel-slider";
6
+ const Self = class ChannelSlider extends ColorElement {
7
+ static tagName = "channel-slider";
8
+ static url = import.meta.url;
9
+ static styles = "./channel-slider.css";
10
+ static shadowTemplate = `
11
+ <label class="color-slider-label" part="label">
12
+ <slot>
13
+ <span id="channel_info" part="channel-info"></span>
14
+ <input type="number" part="spinner" min="0" max="1" step="0.01" id="spinner" />
15
+ </slot>
16
+ <color-slider part="color_slider" exportparts="slider" id="slider"></color-slider>
17
+ </label>`;
8
18
 
9
- export default class ChannelSlider extends NudeElement {
10
19
  constructor () {
11
20
  super();
12
21
 
13
- this.attachShadow({mode: "open"});
14
- let styleURL = new URL(`./${tagName}.css`, import.meta.url);
15
- this.shadowRoot.innerHTML = `
16
- <style>@import url("${ styleURL }")</style>
17
- <label class="color-slider-label" part="label">
18
- <slot></slot>
19
- <color-slider part="color_slider" exportparts="slider" id="slider" tooltip></color-slider>
20
- </label>
21
- `;
22
-
23
22
  this._el = dom.named(this);
24
23
  this._el.slot = this.shadowRoot.querySelector("slot");
25
24
  }
26
25
 
27
- connectedCallback() {
26
+ connectedCallback () {
28
27
  super.connectedCallback?.();
29
28
 
30
29
  this._el.slider.addEventListener("input", this);
30
+ this._el.slot.addEventListener("input", this);
31
31
  }
32
32
 
33
- disconnectedCallback() {
33
+ disconnectedCallback () {
34
34
  this._el.slider.removeEventListener("input", this);
35
+ this._el.slot.removeEventListener("input", this);
35
36
  }
36
37
 
37
- handleEvent(event) {
38
+ handleEvent (event) {
38
39
  if (event.type === "input") {
39
40
  this.value = event.target.value;
40
41
  }
@@ -42,12 +43,14 @@ export default class ChannelSlider extends NudeElement {
42
43
 
43
44
  colorAt (value) {
44
45
  let color = this.defaultColor.clone();
45
- try {
46
- color.set(this.channel, value);
46
+
47
+ if (this.channel === "alpha") {
48
+ color.alpha = value / 100;
47
49
  }
48
- catch (e) {
49
- console.warn(e);
50
+ else if (this.channel in color.space.coords) {
51
+ color.set(this.channel, value);
50
52
  }
53
+
51
54
  return color;
52
55
  }
53
56
 
@@ -86,19 +89,30 @@ export default class ChannelSlider extends NudeElement {
86
89
  propChangedCallback ({name, prop, detail: change}) {
87
90
  if (["space", "min", "max", "step", "value", "defaultValue"].includes(name)) {
88
91
  prop.applyChange(this._el.slider, change);
89
- };
92
+
93
+ if (["min", "max", "step", "value", "defaultValue"].includes(name)) {
94
+ prop.applyChange(this._el.spinner, change);
95
+
96
+ if (name === "value" && this.value !== undefined) {
97
+ this._el.spinner.value = Number(this.value.toPrecision(4));
98
+
99
+ if (!CSS.supports("field-sizing", "content")) {
100
+ let valueStr = this._el.spinner.value;
101
+ this._el.spinner.style.setProperty("--value-length", valueStr.length);
102
+ }
103
+ }
104
+ }
105
+ }
90
106
 
91
107
  if (name === "defaultColor" || name === "space" || name === "channel" || name === "min" || name === "max") {
92
108
  this._el.slider.stops = this.stops;
93
109
 
94
110
  if (name === "space" || name === "channel" || name === "min" || name === "max") {
95
- this._el.slot.innerHTML = `${ this.channelName } <em>(${ this.min }&thinsp;&ndash;&thinsp;${ this.max })</em>`;
111
+ this._el.channel_info.innerHTML = `${ this.channelName } <em>(${ this.min }&thinsp;&ndash;&thinsp;${ this.max })</em>`;
96
112
  }
97
113
  }
98
114
  }
99
115
 
100
-
101
-
102
116
  get channelName () {
103
117
  return this.channelSpec?.name ?? this.channel;
104
118
  }
@@ -107,13 +121,13 @@ export default class ChannelSlider extends NudeElement {
107
121
  space: {
108
122
  default: "oklch",
109
123
  parse (value) {
110
- if (value instanceof Color.Space || value === null || value === undefined) {
124
+ if (value instanceof Self.Color.Space || value === null || value === undefined) {
111
125
  return value;
112
126
  }
113
127
 
114
128
  value += "";
115
129
 
116
- return Color.Space.get(value);
130
+ return Self.Color.Space.get(value);
117
131
  },
118
132
  stringify (value) {
119
133
  return value?.id;
@@ -140,6 +154,12 @@ export default class ChannelSlider extends NudeElement {
140
154
  },
141
155
  channelSpec: {
142
156
  get () {
157
+ if (this.channel === "alpha") {
158
+ return {
159
+ name: "Alpha",
160
+ };
161
+ }
162
+
143
163
  let channelSpec = this.space?.coords[this.channel];
144
164
 
145
165
  if (!channelSpec && this.space) {
@@ -148,7 +168,7 @@ export default class ChannelSlider extends NudeElement {
148
168
  }
149
169
 
150
170
  return channelSpec;
151
- }
171
+ },
152
172
  },
153
173
  refRange: {
154
174
  get () {
@@ -178,7 +198,16 @@ export default class ChannelSlider extends NudeElement {
178
198
  defaultValue: {
179
199
  type: Number,
180
200
  default () {
181
- return this.defaultColor.get(this.channel);
201
+ if (this.channel === "alpha") {
202
+ return this.defaultColor.alpha * 100;
203
+ }
204
+ else if (this.channel in this.defaultColor.space.coords) {
205
+ return this.defaultColor.get(this.channel);
206
+ }
207
+ else {
208
+ let firstChannel = Object.keys(this.defaultColor.space.coords)[0];
209
+ return this.defaultColor.get(firstChannel);
210
+ }
182
211
  },
183
212
  reflect: {
184
213
  from: "value",
@@ -191,7 +220,9 @@ export default class ChannelSlider extends NudeElement {
191
220
  },
192
221
 
193
222
  defaultColor: {
194
- type: Color,
223
+ get type () {
224
+ return Self.Color;
225
+ },
195
226
  convert (color) {
196
227
  return color.to(this.space);
197
228
  },
@@ -199,18 +230,20 @@ export default class ChannelSlider extends NudeElement {
199
230
  let coords = [];
200
231
  for (let channel in this.space.coords) {
201
232
  let spec = this.space.coords[channel];
202
- let range = spec.refRange ?? spec.range;
233
+ let range = spec.refRange ?? spec.range ?? [0, 100];
203
234
  coords.push((range[0] + range[1]) / 2);
204
235
  }
205
236
 
206
- return new Color(this.space, coords);
237
+ return new Self.Color(this.space, coords);
207
238
  },
208
239
  reflect: {
209
240
  from: "color",
210
241
  },
211
242
  },
212
243
  color: {
213
- type: Color,
244
+ get type () {
245
+ return Self.Color;
246
+ },
214
247
  get () {
215
248
  return this.colorAt(this.value);
216
249
  },
@@ -220,18 +253,18 @@ export default class ChannelSlider extends NudeElement {
220
253
  this.value = this.defaultValue;
221
254
  },
222
255
  },
223
- }
256
+ };
224
257
 
225
258
  static events = {
226
259
  change: {
227
260
  from () {
228
261
  return this._el.slider;
229
- }
262
+ },
230
263
  },
231
264
  input: {
232
265
  from () {
233
266
  return this._el.slider;
234
- }
267
+ },
235
268
  },
236
269
  valuechange: {
237
270
  propchange: "value",
@@ -242,11 +275,13 @@ export default class ChannelSlider extends NudeElement {
242
275
  };
243
276
 
244
277
  static formAssociated = {
245
- getSource: el => el._el.slider,
278
+ like: el => el._el.slider,
246
279
  role: "slider",
247
280
  valueProp: "value",
248
281
  changeEvent: "valuechange",
249
282
  };
250
- }
283
+ };
284
+
285
+ Self.define();
251
286
 
252
- customElements.define(tagName, ChannelSlider);
287
+ export default Self;
@@ -0,0 +1,129 @@
1
+ # `<color-chart>`
2
+
3
+ Display lists of colors as a scatterplot or line chart.
4
+
5
+ ## Features
6
+
7
+ - Plot any coordinate, in any color space
8
+
9
+ ## Examples
10
+
11
+ ### Basic usage
12
+
13
+ Plotting a single color scale:
14
+
15
+ ```html
16
+ <color-chart y="oklch.l">
17
+ <color-scale colors="#e3f2fd, #bbdefb, #90caf9, #64b5f6, #42a5f5, #2196f3, #1e88e5, #1976d2, #1565c0, #0d47a1"></color-scale>
18
+ </color-chart>
19
+ ```
20
+
21
+ By default, the other coordinate would be the index of the color in the list, but you can specify it explicitly:
22
+
23
+ ```html
24
+ <color-chart y="oklch.l">
25
+ <color-scale colors="50: #e3f2fd, 100: #bbdefb, 200: #90caf9, 300: #64b5f6, 400: #42a5f5, 500: #2196f3, 600: #1e88e5, 700: #1976d2, 800: #1565c0, 900: #0d47a1"></color-scale>
26
+ </color-chart>
27
+ ```
28
+
29
+ You can also specify a whole label, and if it contains a number, the number will become the X coordinate:
30
+
31
+ ```html
32
+ <color-chart y="oklch.c">
33
+ <color-scale colors="Red 50: #fef2f2, Red 100: #fee2e2, Red 200: #fecaca, Red 300: #fca5a5, Red 400: #f87171, Red 500: #ef4444, Red 600: #dc2626, Red 700: #b91c1c, Red 800: #991b1b, Red 900: #7f1d1d, Red 950: #450a0a"></color-scale>
34
+ <color-scale colors="Orange 50: #fff7ed, Orange 100: #ffedd5, Orange 200: #fed7aa, Orange 300: #fdba74, Orange 400: #fb923c, Orange 500: #f97316, Orange 600: #ea580c, Orange 700: #c2410c, Orange 800: #9a3412, Orange 900: #7c2d12, Orange 950: #431407"></color-scale>
35
+ <color-scale colors="Yellow 50: #fefce8, Yellow 100: #fef9c3, Yellow 200: #fef08a, Yellow 300: #fde047, Yellow 400: #facc15, Yellow 500: #eab308, Yellow 600: #ca8a04, Yellow 700: #a16207, Yellow 800: #854d0e, Yellow 900: #713f12, Yellow 950: #422006"></color-scale>
36
+ </color-chart>
37
+ ```
38
+
39
+ _(Colors courtesy of Tailwind)_
40
+
41
+ ### Plotting hues { #hues}
42
+
43
+ Hues will be shifted as needed to produce a better result:
44
+
45
+ ```html
46
+ <color-chart y="hsl.h">
47
+ <color-scale colors="hsl(5 50% 50%), hsl(355 50% 50%), hsl(10 50% 50%), hsl(-10 50% 50%)"></color-scale>
48
+ </color-chart>
49
+ ```
50
+
51
+ ```html
52
+ <color-chart y="oklch.h">
53
+ <color-scale colors="05: #2c0110, 10: #41031a, 20: #67082e, 30: #890e3f, 40: #ac1450, 50: #e01d6b, 60: #f2638c, 70: #fb8ea8, 80: #ffb4c5, 90: #ffdce3, 95: #ffeef1"></color-scale>
54
+ <color-scale colors="05 (WA) / 05: #26050c, 10 (WA) / 10: #3e0817, 20 (WA) / 20: #630d29, 30 (WA) / 30: #88123b, 40 (WA) / 40: #ab174e, 50 (WA) / 50: #de1d6a, 60 (WA) / 60: #ee669b, 70 (WA) / 70: #f391b9, 80 (WA) / 80: #f7b8d3, 90 (WA) / 90: #fbdeeb, 95 (WA) / 95: #fdeef5"></color-scale>
55
+ </color-chart>
56
+ ```
57
+
58
+ ### The `info` attribute
59
+
60
+ You can use the `info` attribute to show information about the color scale points. Currently, the only type of information supported is color coords (in any color space), but more will be added in the future.
61
+
62
+ The format of this attribute is analogous to the one of [`<color-swatch>`](../color-swatch/#the-info-attribute).
63
+
64
+ ```html
65
+ <color-chart y="oklch.c" info="L: oklch.l, C: oklch.c, H: oklch.h">
66
+ <color-scale colors="50: #eff6ff, 100: #dbeafe, 200: #bfdbfe, 300: #93c5fd, 400: #60a5fa, 500: #3b82f6, 600: #2563eb, 700: #1d4ed8, 800: #1e40af, 900: #1e3a8a, 950: #172554"></color-scale>
67
+ <color-scale colors="50: #ecfeff, 100: #cffafe, 200: #a5f3fc, 300: #67e8f9, 400: #22d3ee, 500: #06b6d4, 600: #0891b2, 700: #0e7490, 800: #155e75, 900: #164e63, 950: #083344"></color-scale>
68
+ <color-scale colors="50: #f0fdfa, 100: #ccfbf1, 200: #99f6e4, 300: #5eead4, 400: #2dd4bf, 500: #14b8a6, 600: #0d9488, 700: #0f766e, 800: #115e59, 900: #134e4a, 950: #042f2e"></color-scale>
69
+ </color-chart>
70
+ ```
71
+
72
+ Reactively changing the Y coordinate:
73
+
74
+ ```html
75
+ <button onclick="this.nextElementSibling.y = 'hwb.w'">
76
+ Switch to “HWB Whiteness”
77
+ </button>
78
+ <color-chart y="oklch.l">
79
+ <color-scale colors="Red 50: #fef2f2, Red 100: #fee2e2, Red 200: #fecaca, Red 300: #fca5a5, Red 400: #f87171, Red 500: #ef4444, Red 600: #dc2626, Red 700: #b91c1c, Red 800: #991b1b, Red 900: #7f1d1d, Red 950: #450a0a"></color-scale>
80
+ <color-scale colors="Orange 50: #fff7ed, Orange 100: #ffedd5, Orange 200: #fed7aa, Orange 300: #fdba74, Orange 400: #fb923c, Orange 500: #f97316, Orange 600: #ea580c, Orange 700: #c2410c, Orange 800: #9a3412, Orange 900: #7c2d12, Orange 950: #431407"></color-scale>
81
+ <color-scale colors="Yellow 50: #fefce8, Yellow 100: #fef9c3, Yellow 200: #fef08a, Yellow 300: #fde047, Yellow 400: #facc15, Yellow 500: #eab308, Yellow 600: #ca8a04, Yellow 700: #a16207, Yellow 800: #854d0e, Yellow 900: #713f12, Yellow 950: #422006"></color-scale>
82
+ </color-chart>
83
+ ```
84
+
85
+ Reactively setting/changing the colors:
86
+ ```html
87
+ <label>Colors:
88
+ <select onchange="this.parentNode.nextElementSibling.firstElementChild.colors = this.value">
89
+ <option selected value="">None</option>
90
+ <option value="Yellow 50: #fefce8, Yellow 100: #fef9c3, Yellow 200: #fef08a, Yellow 300: #fde047, Yellow 400: #facc15, Yellow 500: #eab308, Yellow 600: #ca8a04, Yellow 700: #a16207, Yellow 800: #854d0e, Yellow 900: #713f12, Yellow 950: #422006">Yellow</option>
91
+ <option value="Orange 50: #fff7ed, Orange 100: #ffedd5, Orange 200: #fed7aa, Orange 300: #fdba74, Orange 400: #fb923c, Orange 500: #f97316, Orange 600: #ea580c, Orange 700: #c2410c, Orange 800: #9a3412, Orange 900: #7c2d12, Orange 950: #431407">Orange</option>
92
+ <option value="Red 50: #fef2f2, Red 100: #fee2e2, Red 200: #fecaca, Red 300: #fca5a5, Red 400: #f87171, Red 500: #ef4444, Red 600: #dc2626, Red 700: #b91c1c, Red 800: #991b1b, Red 900: #7f1d1d, Red 950: #450a0a">Red</option>
93
+ </select>
94
+ </label>
95
+ <color-chart y="oklch.l">
96
+ <color-scale></color-scale>
97
+ </color-chart>
98
+ ```
99
+
100
+ ## Reference
101
+
102
+ ### Attributes & Properties
103
+
104
+ | Attribute | Property | Property type | Default value | Description |
105
+ |-----------|----------|---------------|---------------|-------------|
106
+ | `x` | `x` | `string` | `null` | The coord to plot on the X axis, if any |
107
+ | `y` | `y` | `string` | `"oklch.l"` | The coord to plot on the Y axis, if any |
108
+ | `info` | `info` | `string` | - | Comma-separated list of coords of the color point to be shown. |
109
+
110
+ ### Events
111
+
112
+ | Name | Description |
113
+ |------|-------------|
114
+
115
+ ### CSS variables
116
+
117
+ | Name | Type | Description |
118
+ |------|------|-------------|
119
+ | `--color-scale-type` | `discrete` or `normal` | Whether to draw lines between consecutive points. Works on individual color swatches (to prevent drawing a line to the *next* point), entire color scales, or the entire chart. |
120
+
121
+ ### Parts
122
+
123
+ | Name | Description |
124
+ |------|-------------|
125
+ | `color-channel` | The default [`<channel-picker>`](../channel-picker/) element, used if the `color-channel` slot has no slotted elements. |
126
+ | `axis` | The axis line |
127
+ | `ticks` | The container of ticks |
128
+ | `tick` | A tick mark |
129
+ | `label` | A label on the axis |
@@ -0,0 +1,101 @@
1
+ @property --chart-width {
2
+ syntax: '<length-percentage>';
3
+ initial-value: 100%;
4
+ inherits: true;
5
+ }
6
+
7
+ @property --width {
8
+ syntax: "<length>";
9
+ initial-value: 0px;
10
+ inherits: true;
11
+ }
12
+
13
+ @property --height {
14
+ syntax: "<length>";
15
+ initial-value: 0px;
16
+ inherits: true;
17
+ }
18
+
19
+ @property --angle {
20
+ syntax: "<angle>";
21
+ initial-value: 0deg;
22
+ inherits: true;
23
+ }
24
+
25
+ color-chart {
26
+ --_point-size: var(--point-size, .6em);
27
+ --_line-width: var(--line-width, .2em);
28
+ --color-swatch-width: var(--color-swatch-width, var(--_point-size));
29
+ --color-swatch-radius: var(--color-swatch-radius, 50%);
30
+ }
31
+
32
+ color-chart > color-scale {
33
+ --extent-x: calc(var(--max-x) - var(--min-x));
34
+ --extent-y: calc(var(--max-y) - var(--min-y));
35
+
36
+ &::part(color-swatch) {
37
+ position: absolute;
38
+ top: calc((1 - (var(--y) - var(--min-y)) / (var(--max-y) - var(--min-y))) * 100cqh);
39
+ left: calc( (var(--x) - var(--min-x)) / (var(--max-x) - var(--min-x)) * 100%);
40
+ width: var(--_point-size);
41
+ aspect-ratio: 1;
42
+ border-radius: 50%;
43
+ background: yellow;
44
+ min-block-size: 0;
45
+ translate: -50% -50%;
46
+ transition: 300ms .01ms;
47
+ transition-property: width, opacity;
48
+ }
49
+
50
+ &::part(color-swatch):hover {
51
+ /* Cannot use CSS transforms here because that also affects the line */
52
+ --_point-size: calc(var(--point-size, .6em) * 1.5);
53
+ z-index: 1;
54
+ }
55
+
56
+ /* Lines */
57
+ @container not style(--color-scale-type: discrete) {
58
+ &::part(color-swatch)::before {
59
+ --delta-x: calc(var(--next-x) - var(--x));
60
+ --delta-y: calc(var(--next-y) - var(--y));
61
+ --delta-y-abs: max(var(--delta-y), -1 * var(--delta-y));
62
+ --delta-y-sign: calc(var(--delta-y) / var(--delta-y-abs));
63
+
64
+ --width: calc( var(--chart-width) * var(--delta-x) / var(--extent-x));
65
+ --height: calc( var(--chart-height) * var(--delta-y-abs) / var(--extent-y));
66
+ --angle: atan2(var(--height), var(--width));
67
+
68
+ content: "";
69
+ position: absolute;
70
+ z-index: 1;
71
+ left: calc(50% - var(--_line-width) / 2);
72
+ top: calc(50% - var(--_line-width) / 2);
73
+ width: calc((var(--width) + var(--_line-width)) / cos(var(--angle)));
74
+ height: var(--_line-width);
75
+ transform-origin: calc(var(--_line-width) / 2) calc(var(--_line-width) / 2);
76
+ /* if delta y is negative, this needs to rotate the other way */
77
+ rotate: calc(-1 * var(--delta-y-sign) * var(--angle));
78
+ background: linear-gradient(to right, var(--color), var(--next-color));
79
+
80
+ /* Don't show points tooltips on hovering the line */
81
+ pointer-events: none;
82
+ }
83
+ }
84
+
85
+ &::part(info) {}
86
+
87
+ &::part(swatch) {
88
+ min-block-size: 0;
89
+ padding: .2em;
90
+ }
91
+
92
+ &::part(gamut) {
93
+ font-size: 40%;
94
+ }
95
+ }
96
+
97
+ color-chart:has(> color-scale:hover) {
98
+ > color-scale:not(:hover) {
99
+ opacity: .4;
100
+ }
101
+ }