color-elements 0.0.2 → 0.0.3

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