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
@@ -14,6 +14,20 @@ Color spaces not supported by the browser also work:
14
14
  <color-picker space="okhsl" color="color(--okhsl 180 50% 50%)"></color-picker>
15
15
  ```
16
16
 
17
+ If no color space or color is provided, the default ones will be used: `oklch` for the space and `oklch(50% 50% 180)` for the color.
18
+
19
+ ```html
20
+ <color-picker></color-picker>
21
+ ```
22
+
23
+ ### The `alpha` attribute
24
+
25
+ Colors with the alpha channel are also supported. Add the `alpha` boolean attribute to show the alpha channel:
26
+
27
+ ```html
28
+ <color-picker space="oklch" color="oklch(60% 30% 180 / 0.6)" alpha></color-picker>
29
+ ```
30
+
17
31
  ### Slots
18
32
 
19
33
  ```html
@@ -22,6 +36,29 @@ Color spaces not supported by the browser also work:
22
36
  </color-picker>
23
37
  ```
24
38
 
39
+ You can use your component instead of the default color swatch:
40
+
41
+ ```html
42
+ <color-picker space="oklch" color="oklch(50% 50% 180)"
43
+ oncolorchange="this.firstElementChild.textContent = this.color">
44
+ <color-inline slot="swatch" style="place-self: center; min-inline-size: fit-content"></color-inline>
45
+ </color-picker>
46
+ ```
47
+
48
+ or your own form element instead of the default space picker:
49
+
50
+ ```html
51
+ <color-picker space="oklab" color="oklab(60% -0.12 0)">
52
+ <select slot="color-space" size="4">
53
+ <optgroup label="Rectangular Spaces">
54
+ <option value="lab">Lab</option>
55
+ <option value="oklab" selected>Oklab</option>
56
+ <option value="prophoto">ProPhoto</option>
57
+ </optgroup>
58
+ </select>
59
+ </color-picker>
60
+ ```
61
+
25
62
  ### Events
26
63
 
27
64
  As with other components, you can listen to the `colorchange` event:
@@ -29,20 +66,85 @@ As with other components, you can listen to the `colorchange` event:
29
66
  ```html
30
67
  <color-picker space="oklch" color="oklch(50% 50% 180)"
31
68
  oncolorchange="this.firstElementChild.textContent = this.color.oklch.join(' ')">
32
- <div class="coords" style="font-weight: bold; text-shadow: 0 0 .1em white, 0 0 .1em white, 0 0 .1em white"></div>
69
+ <div class="coords"></div>
33
70
  </color-picker>
34
71
  ```
35
72
 
73
+ ### Dynamic
74
+
75
+ All attributes are reactive:
76
+
77
+ ```html
78
+ <color-picker space="oklch" color="oklch(60% 30% 180)" id="dynamic_picker">
79
+ <fieldset slot="color-space">
80
+ <legend>Polar Spaces</legend>
81
+
82
+ <label>
83
+ <input type="radio" name="space" value="oklch" checked /> OKLCh
84
+ </label>
85
+ <label>
86
+ <input type="radio" name="space" value="hwb" /> HWB
87
+ </label>
88
+ <label>
89
+ <input type="radio" name="space" value="hsl" /> HSL
90
+ </label>
91
+ </fieldset>
92
+ </color-picker>
93
+
94
+ <script>
95
+ let radios = dynamic_picker.querySelectorAll("input[name=space]");
96
+ radios.forEach(radio => radio.addEventListener("change", evt => dynamic_picker.spaceId = evt.target.value));
97
+ </script>
98
+
99
+ <style>
100
+ label + label {
101
+ margin-inline-start: .3em;
102
+ }
103
+ </style>
104
+ ```
105
+
106
+ ```html
107
+ <label>
108
+ <input type="checkbox" onchange="this.parentElement.nextElementSibling.alpha = this.checked" /> Alpha channel
109
+ </label>
110
+ <color-picker></color-picker>
111
+ ```
36
112
 
37
113
  ## Reference
38
114
 
115
+ ### Slots
116
+
117
+ | Name | Description |
118
+ |------|-------------|
119
+ | (default) | The color picker's main content. Goes into the swatch. |
120
+ | `color-space` | An element to display (and if writable, also set) the current color space. If not provided, a [`<space-picker>`](../space-picker/) is used. |
121
+ | `swatch` | An element used to provide a visual preview of the current color. |
122
+
39
123
  ### Attributes & Properties
40
124
 
41
125
  | Attribute | Property | Property type | Default value | Description |
42
126
  |-----------|----------|---------------|---------------|-------------|
43
- | `space` | `space` | `ColorSpace` &#124; `string` | `oklch` | The color space to use for interpolation. |
44
- | `color` | `color` | `Color` &#124; `string` | `oklch(50 50% 180)` | The current color value. |
127
+ | `space` | `spaceId` | `string` | `oklch` | The color space to use for interpolation. |
128
+ | | `space` | `ColorSpace` | `OKLCh` | Color space object corresponding to the `space` attribute. |
129
+ | `color` | `color` | `Color` &#124; `string` | `oklch(50% 50% 180)` | The current color value. |
130
+ | `alpha` | `alpha` | `boolean` &#124; `undefined` | `undefined` | Whether to show the alpha channel slider or not. |
131
+
132
+ ### Events
133
+
134
+ | Name | Description |
135
+ |------|-------------|
136
+ | `input` | Fired when the color changes due to user action, such as adjusting the sliders, entering a color in the swatch's text field, or choosing a different color space. |
137
+ | `change` | Fired when the color changes due to user action, such as adjusting the sliders, entering a color in the swatch's text field, or choosing a different color space. |
138
+ | `colorchange` | Fired when the color changes for any reason, and once during initialization. |
139
+
140
+ ### CSS variables
141
+
142
+ The styling of `<color-picker>` is fully customizable via CSS variables provided by the [`<color-slider>`](../color-slider/#css-variables) and [`<color-swatch>`](../color-swatch/#css-variables).
45
143
 
46
- ## To-Do
144
+ ### Parts
47
145
 
48
- - Alpha
146
+ | Name | Description |
147
+ |------|-------------|
148
+ | `color-space` | The default [`<space-picker>`](../space-picker/) element, used if the `color-space` slot has no slotted elements. |
149
+ | `color-space-base` | The internal `<select>` element of the default [`<space-picker>`](../space-picker/) element. |
150
+ | `swatch` | The default [`<color-swatch>`](../color-swatch/) element, used if the `swatch` slot has no slotted elements. |
@@ -4,17 +4,32 @@
4
4
  gap: 1em;
5
5
  }
6
6
 
7
+ #space_picker {
8
+ margin-inline-start: -.7em; /* align with the channel names */
9
+ font-size: 150%;
10
+ transition: border-color .2s;
11
+
12
+ &:not(:hover) {
13
+ border-color: transparent;
14
+ }
15
+ }
16
+
17
+ [part="color-space"],
18
+ slot[name="color-space"]::slotted(*) {
19
+ grid-column: 1 / -1;
20
+ justify-self: start;
21
+ }
22
+
7
23
  #sliders {
8
24
  display: flex;
9
25
  flex-flow: column;
26
+ justify-content: space-between;
10
27
  gap: .3em;
28
+ min-inline-size: 10em;
11
29
  }
12
30
 
13
- color-swatch {
31
+ [part="swatch"],
32
+ slot[name="swatch"]::slotted(*) {
14
33
  width: auto;
15
-
16
- &::part(swatch) {
17
- flex: 1;
18
- }
34
+ margin: 0;
19
35
  }
20
-
@@ -1,58 +1,61 @@
1
+ import ColorElement from "../common/color-element.js";
1
2
  import "../channel-slider/channel-slider.js";
2
3
  import "../color-swatch/color-swatch.js";
3
- import NudeElement from "../../node_modules/nude-element/src/Element.js";
4
+ import "../space-picker/space-picker.js";
4
5
  import * as dom from "../common/dom.js";
5
- import Color from "../common/color.js";
6
6
 
7
- const Self = class ColorPicker extends NudeElement {
7
+ const Self = class ColorPicker extends ColorElement {
8
8
  static tagName = "color-picker";
9
+ static url = import.meta.url;
10
+ static dependencies = new Set(["channel-slider"]);
11
+ static shadowStyle = true;
12
+ static shadowTemplate = `
13
+ <slot name="color-space">
14
+ <space-picker id="space_picker" part="color-space" exportparts="base: color-space-base"></space-picker>
15
+ </slot>
16
+ <div id="sliders" part="sliders"></div>
17
+ <slot name="swatch">
18
+ <color-swatch size="large" id="swatch" part="swatch" exportparts="swatch: swatch-base, gamut, details, info, color-wrapper">
19
+ <slot slot="swatch-content"></slot>
20
+ <input value="oklch(70% 0.25 138)" id="color" />
21
+ </color-swatch>
22
+ </slot>`;
9
23
 
10
24
  constructor () {
11
25
  super();
12
26
 
13
- this.attachShadow({mode: "open"});
14
- let styleURL = new URL(`./${Self.tagName}.css`, import.meta.url);
15
- this.shadowRoot.innerHTML = `
16
- <style>@import url("${ styleURL }")</style>
17
- <div id=sliders></div>
18
- <slot name="swatch">
19
- <color-swatch size="large" id="swatch">
20
- <slot slot="swatch-content"></slot>
21
- <input value="oklch(70% 0.25 138)" id="color" />
22
- </color-swatch>
23
- </slot>
24
- `;
25
-
26
27
  this._el = dom.named(this);
28
+ this._slots = {
29
+ color_space: this.shadowRoot.querySelector("slot[name=color-space]"),
30
+ };
27
31
  }
28
32
 
29
- connectedCallback() {
33
+ connectedCallback () {
30
34
  super.connectedCallback?.();
31
35
  this._el.sliders.addEventListener("input", this);
32
36
  this._el.swatch.addEventListener("input", this);
33
-
34
- this.render();
37
+ this._slots.color_space.addEventListener("input", this);
35
38
  }
36
39
 
37
- disconnectedCallback() {
40
+ disconnectedCallback () {
38
41
  this._el.sliders.removeEventListener("input", this);
39
42
  this._el.swatch.removeEventListener("input", this);
43
+ this._slots.color_space.removeEventListener("input", this);
40
44
  }
41
45
 
42
- handleEvent(event) {
43
- this.render(event.target);
46
+ handleEvent (event) {
47
+ let source = event.target;
44
48
 
45
- this.dispatchEvent(new event.constructor(event.type, {...event}));
46
- }
47
-
48
- render (source) {
49
- if (!source || this._el.sliders.contains(source)) {
49
+ if (this._el.sliders.contains(source)) {
50
50
  // From sliders
51
51
  let coords = [...this._el.sliders.children].map(el => el.value);
52
- this.color = new Color(this.space, coords);
53
- this._el.swatch.value = this.color;
52
+ let alpha = this.color.alpha;
53
+ if (coords.length > 3) {
54
+ alpha = coords.pop() / 100;
55
+ }
56
+ this.color = new Self.Color(this.space, coords, alpha);
54
57
  }
55
- else if (!source || this._el.swatch.contains(source)) {
58
+ else if (this._el.swatch.contains(source)) {
56
59
  // From swatch
57
60
  if (!this._el.swatch.color) {
58
61
  // Invalid color, or still typing
@@ -60,26 +63,46 @@ const Self = class ColorPicker extends NudeElement {
60
63
  }
61
64
  this.color = this._el.swatch.color;
62
65
  }
63
-
64
- for (let slider of this._el.sliders.children) {
65
- slider.defaultColor = this.color;
66
+ else if (this._el.space_picker.contains(source) || this._slots.color_space.assignedElements().includes(source)) {
67
+ this.spaceId = event.target.value;
66
68
  }
69
+
70
+ this.dispatchEvent(new event.constructor(event.type, {...event}));
67
71
  }
68
72
 
69
73
  propChangedCallback ({name, prop, detail: change}) {
70
- if (name === "space") {
74
+ if (name === "space" || name === "alpha") {
75
+ let space = this.space;
76
+
77
+ if (this.color.space !== space) {
78
+ this.color = this.color.to(space);
79
+ }
80
+
71
81
  let i = 0;
72
- for (let channel in this.space.coords) {
82
+ let channels = [...Object.keys(this.space.coords)];
83
+ if (this.alpha) {
84
+ channels.push("alpha");
85
+ }
86
+ for (let channel of channels) {
73
87
  let slider = this._el.sliders.children[i++];
74
88
 
75
89
  if (slider) {
76
- slider.space = this.space;
90
+ slider.space = space;
77
91
  slider.channel = channel;
78
92
  }
79
93
  else {
80
- this._el.sliders.insertAdjacentHTML("beforeend", `<channel-slider space="${ this.space.id }" channel="${ channel }"></channel-slider>`);
94
+ this._el.sliders.insertAdjacentHTML("beforeend", `<channel-slider space="${ space.id }" channel="${ channel }" part="channel-slider"></channel-slider>`);
81
95
  }
82
96
  }
97
+
98
+ if (this._el.sliders.children.length > channels.length) {
99
+ // Remove the slider for alpha
100
+ this._el.sliders.children[channels.length].remove();
101
+ }
102
+
103
+ for (let slider of this._el.sliders.children) {
104
+ slider.color = this.color;
105
+ }
83
106
  }
84
107
 
85
108
  if (name === "color") {
@@ -87,7 +110,7 @@ const Self = class ColorPicker extends NudeElement {
87
110
  slider.color = this.color;
88
111
  }
89
112
 
90
- if (this.color && (!this._el.swatch.color || !this.color.equals(this._el.swatch.color))) {
113
+ if (!this._el.swatch.color || !this.color.equals(this._el.swatch.color)) {
91
114
  // Avoid typing e.g. "red" and having it replaced with "rgb(100% 0% 0%)" under your caret
92
115
  prop.applyChange(this._el.swatch, change);
93
116
  }
@@ -95,24 +118,70 @@ const Self = class ColorPicker extends NudeElement {
95
118
  }
96
119
 
97
120
  static props = {
98
- space: {
121
+ spaceId: {
99
122
  default: "oklch",
100
- parse (value) {
101
- if (value instanceof Color.Space || value === null || value === undefined) {
123
+ convert (value) {
124
+ if (value === null || value === undefined) {
102
125
  return value;
103
126
  }
127
+ else if (value instanceof Self.Color.Space) {
128
+ return value.id;
129
+ }
130
+
131
+ return value + "";
132
+ },
133
+ changed ({parsedValue, source, ...change}) {
134
+ if (!parsedValue && source !== "default") {
135
+ // Something went wrong. We should always have a value. Falling back to the current space
136
+ this.spaceId = this.space.id;
137
+ return;
138
+ }
104
139
 
105
- value += "";
140
+ if (this.props.space && this.props.space.id !== parsedValue) {
141
+ // The space object we have in the cache is outdated. We need to delete it so that the space getter returns the updated one
142
+ delete this.props.space;
143
+ }
144
+ },
145
+ reflect: {
146
+ from: "space",
147
+ },
148
+ },
106
149
 
107
- return Color.Space.get(value);
150
+ space: {
151
+ get () {
152
+ return this._el.space_picker.selectedSpace;
108
153
  },
109
- stringify (value) {
110
- return value?.id;
154
+ set: true,
155
+ changed ({parsedValue, ...change}) {
156
+ if (parsedValue === undefined) {
157
+ // this.spaceId changed
158
+ if (this._el.space_picker.value !== this.spaceId) {
159
+ this._el.space_picker.value = this.spaceId;
160
+ }
161
+
162
+ return;
163
+ }
164
+ else if (!parsedValue) {
165
+ // Something went wrong. We should always have a value. Falling back to the current space
166
+ this.space = this._el.space_picker.selectedSpace;
167
+ return;
168
+ }
169
+
170
+ parsedValue = parsedValue instanceof Self.Color.Space ? parsedValue.id : parsedValue;
171
+ if (this.spaceId !== parsedValue) {
172
+ this._el.space_picker.value = parsedValue;
173
+ this.spaceId = parsedValue;
174
+ }
111
175
  },
176
+ dependencies: ["spaceId"],
177
+ defaultProp: "spaceId",
178
+ reflect: false,
112
179
  },
113
180
 
114
181
  defaultColor: {
115
- type: Color,
182
+ get type () {
183
+ return Self.Color;
184
+ },
116
185
  convert (color) {
117
186
  return color.to(this.space);
118
187
  },
@@ -124,7 +193,7 @@ const Self = class ColorPicker extends NudeElement {
124
193
  coords.push((range[0] + range[1]) / 2);
125
194
  }
126
195
 
127
- return new Color(this.space, coords);
196
+ return new Self.Color(this.space, coords);
128
197
  },
129
198
  reflect: {
130
199
  from: "color",
@@ -132,9 +201,30 @@ const Self = class ColorPicker extends NudeElement {
132
201
  },
133
202
 
134
203
  color: {
135
- type: Color,
136
- set (value) {
137
- this.defaultColor = new Color(value).to(this.space);
204
+ get type () {
205
+ return Self.Color;
206
+ },
207
+ defaultProp: "defaultColor",
208
+ reflect: false,
209
+ },
210
+
211
+ alpha: {
212
+ parse (value) {
213
+ if (value === undefined || value === null) {
214
+ return;
215
+ }
216
+
217
+ if (value === false || value === "false") {
218
+ return false;
219
+ }
220
+
221
+ if (value === "" || value === "alpha" || value === true || value === "true") {
222
+ // Boolean attribute
223
+ return true;
224
+ }
225
+ },
226
+ reflect: {
227
+ from: true,
138
228
  },
139
229
  },
140
230
  };
@@ -142,23 +232,20 @@ const Self = class ColorPicker extends NudeElement {
142
232
  static events = {
143
233
  change: {
144
234
  from () {
145
- return [this._el.sliders, this._el.swatch];
146
- }
235
+ return [this._el.space_picker, this._el.sliders, this._el.swatch];
236
+ },
147
237
  },
148
238
  input: {
149
239
  from () {
150
- return [this._el.sliders, this._el.swatch];
151
- }
152
- },
153
- valuechange: {
154
- propchange: "value",
240
+ return [this._el.space_picker, this._el.sliders, this._el.swatch];
241
+ },
155
242
  },
156
243
  colorchange: {
157
244
  propchange: "color",
158
245
  },
159
246
  };
160
- }
247
+ };
161
248
 
162
- customElements.define(Self.tagName, Self);
249
+ Self.define();
163
250
 
164
- export default Self;
251
+ export default Self;
@@ -0,0 +1,75 @@
1
+ # `<color-scale>`
2
+
3
+ Display a list of colors.
4
+
5
+ ## Features
6
+
7
+ - Specify colors directly, via interpolation in any color space, or a mix of both
8
+ - Display color coordinates, in any color space (or multiple!)
9
+ - Coming soon: display deltas between consecutive colors
10
+
11
+ ## Examples
12
+
13
+ ### Basic usage
14
+
15
+ Colors via attribute:
16
+
17
+ ```html
18
+ <color-scale space="oklch" colors="#e3fafc, #c5f6fa, #99e9f2, #66d9e8, #3bc9db"></color-scale>
19
+ ```
20
+
21
+ You can also give them optional names:
22
+
23
+ ```html
24
+ <color-scale space="oklch" colors="
25
+ Gray 50: #f9fafb,
26
+ Gray 100: #f3f4f6,
27
+ Gray 200: #e5e7eb,
28
+ Gray 300: #d1d5db,
29
+ Gray 400: #9ca3af,
30
+ Gray 500: #6b7280,
31
+ Gray 600: #4b5563,
32
+ Gray 700: #374151,
33
+ Gray 800: #1f2937,
34
+ Gray 900: #111827,
35
+ Gray 850: #1a202c
36
+ "></color-scale>
37
+ ```
38
+
39
+
40
+ You can only specify your core colors, and insert steps via interpolation:
41
+
42
+ ```html
43
+ <color-scale colors="#e3fafc, #0b7285" steps="4" space="oklch"></color-scale>
44
+ ```
45
+
46
+ If you have more than 2 colors listed, this will insert steps between each pair.
47
+
48
+ ### Customizing the color swatches
49
+
50
+ Under the hood, `<color-scale>` generates and uses a series of [`<color-swatch>`](../color-swatch/) elements.
51
+
52
+ You can specify the `info` attribute to show additional information about the colors, and it will be passed to the generated `<color-swatch`> instances:
53
+
54
+ ```html
55
+ <color-scale space="oklch" info="L: oklch.l, C: oklch.c, H: oklch.h"
56
+ colors="#e3fafc, #c5f6fa, #99e9f2, #66d9e8, #3bc9db"></color-scale>
57
+ ```
58
+
59
+ You can also create compact color scales, by simply setting `--details-style: compact`:
60
+
61
+
62
+ ```html
63
+ <color-scale space="oklch" info="L: oklch.l, C: oklch.c, H: oklch.h"
64
+ style="--details-style: compact"
65
+ colors="#e3fafc, #c5f6fa, #99e9f2, #66d9e8, #3bc9db"></color-scale>
66
+ ```
67
+
68
+ Issue: How to make them focusable??
69
+
70
+ <!--
71
+ If you want to insert interpolated colors only in specific places, you can use empty values:
72
+
73
+ ```html
74
+ <color-scale space="oklch" colors="#e3fafc, , , , , , , , , #0b7285"></color-scale>
75
+ ``` -->
@@ -0,0 +1,40 @@
1
+ :host {
2
+ gap: .3em;
3
+ }
4
+
5
+ #swatches {
6
+ display: flex;
7
+ gap: inherit;
8
+ }
9
+
10
+ color-swatch {
11
+ margin: 0;
12
+ flex: 1;
13
+ }
14
+
15
+ @supports (grid-template-columns: subgrid) {
16
+ /* Avoid uneven swatch heights */
17
+ #swatches {
18
+ display: grid;
19
+ grid-auto-flow: row;
20
+ grid-template-rows: auto auto;
21
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
22
+ }
23
+
24
+ color-swatch {
25
+ width: 100%;
26
+ grid-row: 1 / span 2;
27
+ display: grid;
28
+ grid-template-rows: subgrid;
29
+ /*
30
+ Container queries don't play well together with subgrid in Chrome 129.
31
+ See https://issues.chromium.org/issues/369331413
32
+ This is a workaround to avoid the issue until the new Chrome version is released.
33
+ */
34
+ contain: inline-size layout;
35
+
36
+ &::part(swatch) {
37
+ grid-row: 1;
38
+ }
39
+ }
40
+ }