color-elements 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +49 -12
  2. package/_build/copy-config.js +11 -1
  3. package/_build/copy-config.json +2 -2
  4. package/_build/eleventy.js +27 -1
  5. package/_build/filters-extra.js +3 -0
  6. package/_includes/component.njk +69 -0
  7. package/_includes/partials/_nav-links.njk +19 -0
  8. package/_redirects +9 -2
  9. package/assets/css/style.css +78 -1
  10. package/assets/js/index.js +11 -10
  11. package/data/components.json +12 -0
  12. package/debug.html +447 -0
  13. package/eslint.config.js +316 -0
  14. package/index.js +10 -4
  15. package/logo.svg +22 -44
  16. package/package.json +12 -5
  17. package/src/channel-picker/README.md +103 -0
  18. package/src/channel-picker/channel-picker.css +31 -0
  19. package/src/channel-picker/channel-picker.js +168 -0
  20. package/src/channel-picker/channel-picker.webp +0 -0
  21. package/src/channel-slider/README.md +165 -0
  22. package/src/channel-slider/channel-slider.css +61 -0
  23. package/src/channel-slider/channel-slider.js +287 -0
  24. package/src/channel-slider/channel-slider.webp +0 -0
  25. package/src/color-chart/README.md +129 -0
  26. package/src/color-chart/color-chart-global.css +97 -0
  27. package/src/color-chart/color-chart.css +112 -0
  28. package/src/color-chart/color-chart.js +441 -0
  29. package/src/color-chart/color-chart.webp +0 -0
  30. package/src/color-inline/README.md +72 -0
  31. package/{color-swatch/color-swatch.css → src/color-inline/color-inline.css} +11 -4
  32. package/src/color-inline/color-inline.js +85 -0
  33. package/src/color-inline/color-inline.webp +0 -0
  34. package/src/color-inline/style.css +14 -0
  35. package/src/color-picker/README.md +150 -0
  36. package/src/color-picker/color-picker.css +35 -0
  37. package/src/color-picker/color-picker.js +251 -0
  38. package/src/color-picker/color-picker.webp +0 -0
  39. package/src/color-scale/README.md +75 -0
  40. package/src/color-scale/color-scale.css +40 -0
  41. package/src/color-scale/color-scale.js +164 -0
  42. package/src/color-scale/color-scale.webp +0 -0
  43. package/src/color-slider/README.md +220 -0
  44. package/src/color-slider/color-slider.css +174 -0
  45. package/src/color-slider/color-slider.js +320 -0
  46. package/src/color-slider/color-slider.webp +0 -0
  47. package/src/color-swatch/README.md +359 -0
  48. package/src/color-swatch/color-swatch.css +230 -0
  49. package/src/color-swatch/color-swatch.js +252 -0
  50. package/src/color-swatch/color-swatch.webp +0 -0
  51. package/src/common/color-element.js +86 -0
  52. package/src/common/dom.js +61 -0
  53. package/src/common/util.js +55 -0
  54. package/src/gamut-badge/README.md +145 -0
  55. package/src/gamut-badge/gamut-badge.css +78 -0
  56. package/src/gamut-badge/gamut-badge.js +121 -0
  57. package/src/gamut-badge/gamut-badge.webp +0 -0
  58. package/src/index.js.njk +7 -0
  59. package/src/space-picker/README.md +121 -0
  60. package/src/space-picker/space-picker.css +23 -0
  61. package/src/space-picker/space-picker.js +213 -0
  62. package/src/space-picker/space-picker.webp +0 -0
  63. package/src/src.json +3 -0
  64. package/_data/eleventyComputed.11tydata.js +0 -29
  65. package/color-gamut/README.md +0 -75
  66. package/color-gamut/color-gamut.js +0 -172
  67. package/color-gamut/style.css +0 -32
  68. package/color-slider/README.md +0 -84
  69. package/color-slider/color-slider.js +0 -79
  70. package/color-slider/style.css +0 -65
  71. package/color-swatch/color-swatch.js +0 -79
  72. package/color-swatch/index.njk +0 -40
  73. package/common/attributes.js +0 -68
  74. package/common/color.js +0 -10
  75. package/css-color/css-color.js +0 -256
  76. package/css-color/index.njk +0 -43
  77. package/css-color/style.css +0 -67
  78. package/lib/README.md +0 -4
  79. package/lib/colorjs.io/LICENSE +0 -21
  80. package/lib/colorjs.io/README.json +0 -3
  81. package/lib/colorjs.io/README.md +0 -257
  82. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  83. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  84. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  85. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  86. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  88. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  90. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  94. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  96. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  98. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  100. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  101. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  102. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  103. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  104. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  105. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  106. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  107. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  108. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  109. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  110. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  111. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  112. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  113. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  114. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  115. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  116. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  117. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  118. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  119. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  120. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  121. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  122. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  123. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  124. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  125. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  126. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  127. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  129. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  130. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  131. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  133. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  134. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  135. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  136. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  137. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  138. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  139. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  140. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  141. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  142. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  143. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  144. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  145. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  147. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  148. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  149. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  150. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  151. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  152. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  153. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  154. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  155. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  156. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  157. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  158. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  159. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  160. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  161. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  162. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  163. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  164. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  165. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  166. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  167. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  168. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  169. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  170. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  171. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  172. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  173. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  174. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  175. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  176. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  177. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  178. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  179. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  180. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  181. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  182. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  183. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  184. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  185. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  186. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  187. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  188. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  189. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  190. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  191. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  192. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  193. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  194. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  195. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  196. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  197. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  198. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  199. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  200. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  201. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  202. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  203. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  204. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  205. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  206. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  207. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  208. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  209. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  210. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  211. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  212. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  213. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  214. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  215. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  216. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  217. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  218. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  219. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  220. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  221. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  222. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  223. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  224. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  225. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  226. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  227. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  228. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  229. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  230. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  231. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  232. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  233. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  234. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  235. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  236. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  237. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  238. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  239. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  240. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  241. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  242. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  243. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  244. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  246. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  247. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  248. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  249. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  250. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  251. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  252. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  271. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  272. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  273. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  274. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  275. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  276. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  277. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  278. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  279. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  280. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  281. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  282. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  283. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  284. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  285. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  286. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  287. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  288. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  289. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  290. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  291. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  292. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  293. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  294. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  295. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  297. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  298. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.cjs +0 -5759
  301. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  302. package/lib/colorjs.io/dist/color.global.js +0 -5760
  303. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  304. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  305. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  306. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  307. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  308. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  309. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  310. package/lib/colorjs.io/dist/color.js +0 -5755
  311. package/lib/colorjs.io/dist/color.js.map +0 -1
  312. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  313. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  314. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  315. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  316. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  317. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  318. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  319. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  320. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  321. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  322. package/lib/colorjs.io/dist/color.min.js +0 -2
  323. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  324. package/lib/colorjs.io/package.json +0 -113
  325. package/lib/colorjs.io/src/CATs.js +0 -131
  326. package/lib/colorjs.io/src/adapt.js +0 -62
  327. package/lib/colorjs.io/src/angles.js +0 -44
  328. package/lib/colorjs.io/src/chromaticity.js +0 -33
  329. package/lib/colorjs.io/src/clone.js +0 -7
  330. package/lib/colorjs.io/src/color.js +0 -201
  331. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  332. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  333. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  334. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  335. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  336. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  337. package/lib/colorjs.io/src/contrast/index.js +0 -6
  338. package/lib/colorjs.io/src/contrast.js +0 -28
  339. package/lib/colorjs.io/src/defaults.js +0 -12
  340. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  341. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  342. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  343. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  344. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  345. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  346. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  347. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  348. package/lib/colorjs.io/src/deltaE.js +0 -19
  349. package/lib/colorjs.io/src/display.js +0 -83
  350. package/lib/colorjs.io/src/distance.js +0 -21
  351. package/lib/colorjs.io/src/equals.js +0 -10
  352. package/lib/colorjs.io/src/get.js +0 -11
  353. package/lib/colorjs.io/src/getAll.js +0 -20
  354. package/lib/colorjs.io/src/getColor.js +0 -36
  355. package/lib/colorjs.io/src/hooks.js +0 -37
  356. package/lib/colorjs.io/src/inGamut.js +0 -25
  357. package/lib/colorjs.io/src/index-fn.js +0 -28
  358. package/lib/colorjs.io/src/index.js +0 -38
  359. package/lib/colorjs.io/src/interpolation.js +0 -222
  360. package/lib/colorjs.io/src/keywords.js +0 -158
  361. package/lib/colorjs.io/src/luminance.js +0 -27
  362. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  363. package/lib/colorjs.io/src/parse.js +0 -198
  364. package/lib/colorjs.io/src/rgbspace.js +0 -64
  365. package/lib/colorjs.io/src/serialize.js +0 -86
  366. package/lib/colorjs.io/src/set.js +0 -33
  367. package/lib/colorjs.io/src/setAll.js +0 -12
  368. package/lib/colorjs.io/src/space-accessors.js +0 -86
  369. package/lib/colorjs.io/src/space.js +0 -440
  370. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  371. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  372. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  373. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  374. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  375. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  376. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  377. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  378. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  379. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  380. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  381. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  382. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  383. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  384. package/lib/colorjs.io/src/spaces/index.js +0 -8
  385. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  386. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  387. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  388. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  389. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  390. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  391. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  392. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  393. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  394. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  395. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  396. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  397. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  398. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  399. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  400. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  401. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  402. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  403. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  404. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  405. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  406. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  407. package/lib/colorjs.io/src/to.js +0 -26
  408. package/lib/colorjs.io/src/toGamut.js +0 -310
  409. package/lib/colorjs.io/src/util.js +0 -254
  410. package/lib/colorjs.io/src/variations.js +0 -14
  411. package/lib/colorjs.io/types/index.d.cts +0 -4
  412. package/lib/colorjs.io/types/index.d.ts +0 -42
  413. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  414. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  415. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  416. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  417. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  418. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  419. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  420. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  421. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  422. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  423. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  424. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  425. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  426. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  427. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  428. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  429. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  430. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  431. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  432. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  433. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  434. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  435. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  436. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  437. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  438. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  439. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  440. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  441. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  442. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  443. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  444. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  445. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  446. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  447. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  448. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  449. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  450. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  451. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  453. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  454. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  455. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  456. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  457. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  458. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  459. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  460. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  471. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  472. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  473. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  478. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  479. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  480. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  481. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  482. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  483. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  484. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  485. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  486. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  487. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  488. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  489. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  490. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  491. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  492. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  493. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  494. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  495. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  496. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  497. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  498. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
@@ -0,0 +1,320 @@
1
+ import ColorElement from "../common/color-element.js";
2
+ import { getStep } from "../common/util.js";
3
+
4
+ let supports = {
5
+ inSpace: CSS?.supports("background", "linear-gradient(in oklab, red, tan)"),
6
+ fieldSizing: CSS?.supports("field-sizing", "content"),
7
+ };
8
+
9
+ const Self = class ColorSlider extends ColorElement {
10
+ static tagName = "color-slider";
11
+ static url = import.meta.url;
12
+ static shadowStyle = true;
13
+ static shadowTemplate = `
14
+ <input type="range" class="color-slider" part="slider" min="0" max="1" step="0.01" />
15
+ <slot name="tooltip" class="slider-tooltip">
16
+ <input type="number" part="spinner" min="0" max="1" step="0.01" />
17
+ </slot>
18
+ <slot></slot>`;
19
+
20
+ constructor () {
21
+ super();
22
+
23
+ this._el = {
24
+ slider: this.shadowRoot.querySelector(".color-slider"),
25
+ spinner: this.shadowRoot.querySelector("input[type=number]"),
26
+ };
27
+ }
28
+
29
+ connectedCallback () {
30
+ super.connectedCallback?.();
31
+
32
+ this._el.slider.addEventListener("input", this);
33
+ this._el.spinner.addEventListener("input", this);
34
+ }
35
+
36
+ disconnectedCallback () {
37
+ this._el.slider.removeEventListener("input", this);
38
+ this._el.spinner.removeEventListener("input", this);
39
+ }
40
+
41
+ handleEvent (event) {
42
+ if (event.type === "input") {
43
+ if (this.tooltip === "progress" && event.target === this._el.spinner) {
44
+ // Convert to value
45
+ let value = this._el.spinner.value;
46
+ this.value = this.valueAt(value / 100);
47
+ }
48
+ else {
49
+ this.value = event.target.value;
50
+ }
51
+
52
+ this.dispatchEvent(new event.constructor(event.type, {...event}));
53
+ }
54
+ }
55
+
56
+ propChangedCallback ({name, prop, detail: change}) {
57
+ if (["min", "max", "step", "value", "defaultValue"].includes(name)) {
58
+ prop.applyChange(this._el.slider, change);
59
+
60
+ let value = change.value;
61
+ if (this.tooltip === "progress") {
62
+ if (name === "value" || name === "defaultValue") {
63
+ value = +(this.progress * 100).toPrecision(4);
64
+ }
65
+ else {
66
+ // Spinner values when tooltip is "progress"
67
+ value = ({ min: 1, max: 100, step: 1 })[name];
68
+ }
69
+ }
70
+ prop.applyChange(this._el.spinner, {...change, value: +(+value).toPrecision(4)});
71
+ }
72
+
73
+ if (name === "stops") {
74
+ // FIXME will fail if there are none values
75
+ let stops = this.stops;
76
+ let supported = stops.every(color => CSS.supports("color", color));
77
+
78
+ // CSS does not support (yet?) a raw hue interpolation,
79
+ // so we need to fake it with tessellateStops() in cases of polar space and far-apart stops.
80
+ let farApart = false;
81
+ let space = this.space;
82
+ if (space.isPolar) {
83
+ for (let i = 1; i < stops.length; i++) {
84
+ // Even though space is polar, color stops might be in non-polar spaces
85
+ let first = stops[i - 1].to(space);
86
+ let second = stops[i].to(space);
87
+
88
+ let firstHue = first.get("h");
89
+ let secondHue = second.get("h");
90
+
91
+ if (Math.abs(firstHue - secondHue) >= 180) {
92
+ farApart = true;
93
+ break;
94
+ }
95
+ }
96
+ }
97
+
98
+ if (!supported || farApart) {
99
+ stops = this.tessellateStops({ steps: 3 });
100
+ }
101
+
102
+ stops = stops.map(color => color.display()).join(", ");
103
+
104
+ this.style.setProperty("--slider-color-stops", stops);
105
+ }
106
+ else if (name === "space" && supports.inSpace) {
107
+ let space = this.space;
108
+ let spaceId = space.id;
109
+ let supported = CSS.supports("background", `linear-gradient(in ${ spaceId }, red, tan)`);
110
+
111
+ if (!supported) {
112
+ spaceId = this.space.isPolar ? "oklch" : "oklab";
113
+ }
114
+
115
+ this.style.setProperty("--color-space", spaceId);
116
+ }
117
+ else if (name === "color" || name === "defaultColor") {
118
+ let color = this.color;
119
+
120
+ if (color) {
121
+ let displayedColor = color.display();
122
+ this.style.setProperty("--color", displayedColor);
123
+ }
124
+ }
125
+ else if (name === "value" || name === "min" || name === "max") {
126
+ this.style.setProperty("--progress", this.progress);
127
+
128
+ if (name === "value" && !supports.fieldSizing) {
129
+ let valueStr = this.value + "";
130
+ this._el.spinner.style.setProperty("--value-length", valueStr.length);
131
+ }
132
+ }
133
+ else if (name === "tooltip") {
134
+ if (change.value !== undefined) {
135
+ let values = this;
136
+ if (change.value === "progress") {
137
+ values = {
138
+ min: 1, max: 100, step: 1,
139
+ value: +(this.progress * 100).toPrecision(4),
140
+ };
141
+ }
142
+
143
+ ["min", "max", "step", "value"].forEach(name => {
144
+ this._el.spinner[name] = values[name];
145
+ });
146
+ }
147
+ }
148
+ }
149
+
150
+ tessellateStops (options = {}) {
151
+ let stops = this.stops;
152
+ let tessellated = [];
153
+
154
+ for (let i = 1; i < stops.length; i++) {
155
+ let start = stops[i - 1];
156
+ let end = stops[i];
157
+ let steps = start.steps(end, { space: this.space, ...options });
158
+ tessellated.push(...steps);
159
+
160
+ if (i < stops.length - 1) {
161
+ tessellated.pop();
162
+ }
163
+ }
164
+
165
+ return tessellated;
166
+ }
167
+
168
+ get progress () {
169
+ return this.progressAt(this.value);
170
+ }
171
+
172
+ progressAt (value) {
173
+ return (value - this.min) / (this.max - this.min);
174
+ }
175
+
176
+ valueAt (progress) {
177
+ return this.min + progress * (this.max - this.min);
178
+ }
179
+
180
+ colorAt (value) {
181
+ let progress = this.progressAt(value);
182
+ return this.colorAtProgress(progress);
183
+ }
184
+
185
+ colorAtProgress (progress) {
186
+ let bands = this.scales?.length;
187
+
188
+ if (bands <= 0) {
189
+ return null;
190
+ }
191
+
192
+ // FIXME the values outside of [0, 1] should be scaled
193
+ if (progress >= 1) {
194
+ return this.scales.at(-1)(progress);
195
+ }
196
+ else if (progress <= 0) {
197
+ return this.scales[0](progress);
198
+ }
199
+
200
+ let band = 1 / bands;
201
+ let scaleIndex = Math.max(0, Math.min(Math.floor(progress / band), bands - 1));
202
+ let scale = this.scales[scaleIndex];
203
+ let color = scale((progress % band) * bands);
204
+
205
+ return color;
206
+ }
207
+
208
+ static props = {
209
+ min: {
210
+ type: Number,
211
+ default: 0,
212
+ },
213
+ max: {
214
+ type: Number,
215
+ default: 1,
216
+ },
217
+ step: {
218
+ type: Number,
219
+ default () {
220
+ return getStep(this.max, this.min, { minSteps: 100 });
221
+ },
222
+ },
223
+ stops: {
224
+ type: {
225
+ is: Array,
226
+ get values () {
227
+ return Self.Color;
228
+ },
229
+ },
230
+ default: el => [],
231
+ },
232
+ defaultValue: {
233
+ type: Number,
234
+ default () {
235
+ return (this.min + this.max) / 2;
236
+ },
237
+ reflect: {
238
+ from: "value",
239
+ },
240
+ },
241
+ value: {
242
+ type: Number,
243
+ defaultProp: "defaultValue",
244
+ reflect: false,
245
+ },
246
+
247
+ space: {
248
+ default () {
249
+ return this.stops[0]?.space ?? "oklab";
250
+ },
251
+ parse (value) {
252
+ if (value instanceof Self.Color.Space || value === null || value === undefined) {
253
+ return value;
254
+ }
255
+
256
+ value += "";
257
+
258
+ return Self.Color.Space.get(value);
259
+ },
260
+ stringify (value) {
261
+ return value?.id;
262
+ },
263
+ },
264
+
265
+ color: {
266
+ get type () {
267
+ return Self.Color;
268
+ },
269
+ get () {
270
+ return this.colorAt(this.value);
271
+ },
272
+ dependencies: ["scales", "value"],
273
+ },
274
+ scales: {
275
+ get () {
276
+ let stops = this.stops;
277
+ let scales = [];
278
+
279
+ for (let i = 1; i < stops.length; i++) {
280
+ let start = stops[i - 1];
281
+ let end = stops[i];
282
+ let range = start.range(end, { space: this.space });
283
+ scales.push(range);
284
+ }
285
+
286
+ return scales;
287
+ },
288
+ dependencies: ["stops", "space"],
289
+ },
290
+
291
+ tooltip: {
292
+ type: String,
293
+ },
294
+ };
295
+
296
+ static events = {
297
+ change: {
298
+ from () {
299
+ return this._el.slider;
300
+ },
301
+ },
302
+ valuechange: {
303
+ propchange: "value",
304
+ },
305
+ colorchange: {
306
+ propchange: "color",
307
+ },
308
+ };
309
+
310
+ static formAssociated = {
311
+ like: el => el._el.slider,
312
+ role: "slider",
313
+ valueProp: "value",
314
+ changeEvent: "valuechange",
315
+ };
316
+ };
317
+
318
+ Self.define();
319
+
320
+ export default Self;
@@ -0,0 +1,359 @@
1
+ # `<color-swatch>`
2
+
3
+ ## Examples
4
+
5
+ ### Basic usage
6
+
7
+ <table>
8
+ <thead>
9
+ <tr>
10
+ <th></th>
11
+ <th>Default</th>
12
+ <th>Large</th>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <tr>
17
+ <th>Static</th>
18
+ <td>
19
+
20
+ ```html
21
+ <color-swatch>oklch(70% 0.25 138)</color-swatch>
22
+ ```
23
+ </td>
24
+ <td>
25
+
26
+ ```html
27
+ <color-swatch size="large">oklch(70% 0.25 138)</color-swatch>
28
+ ```
29
+ </td>
30
+ </tr>
31
+ <tr>
32
+ <th>Editable</th>
33
+ <td>
34
+
35
+ ```html
36
+ <color-swatch>
37
+ <input value="oklch(70% 0.25 138)" />
38
+ </color-swatch>
39
+ ```
40
+ </td>
41
+ <td>
42
+
43
+ ```html
44
+ <color-swatch size="large">
45
+ <input value="oklch(70% 0.25 138)" />
46
+ </color-swatch>
47
+ ```
48
+ </td>
49
+ </tr>
50
+ </tbody>
51
+ </table>
52
+
53
+ You can use a `--details-style: compact` CSS property to only show the details on user interaction:
54
+
55
+ ```html
56
+ <color-swatch style="--details-style: compact">oklch(70% 0.25 138)</color-swatch>
57
+ <color-swatch size="large" style="--details-style: compact">oklch(70% 0.25 138)</color-swatch>
58
+ ```
59
+
60
+ Warning: This is not keyboard accessible by default.
61
+ To make the element focusable and also show the popup when it is focused, you need to add `tabindex="0"` to your element:
62
+
63
+ ```html
64
+ <color-swatch size="large" style="--details-style: compact" tabindex="0">oklch(70% 0.25 138)</color-swatch>
65
+ ```
66
+
67
+ By default, the popup will be shown when the element is hovered, focused, `:active`, or the target of the URL hash.
68
+ To circumvent user interaction and force the popup to be open use the `open` attribute.
69
+ You can also use `open="false"` to force it to be closed regardless of interaction:
70
+
71
+ ```html
72
+ <div style="--details-style: compact">
73
+ <color-swatch size="large">oklch(70% 0.25 138)</color-swatch>
74
+ <color-swatch size="large" open>oklch(70% 0.25 138)</color-swatch>
75
+ <color-swatch size="large" open="false">oklch(70% 0.25 138)</color-swatch>
76
+ </div>
77
+ ```
78
+
79
+ ### The `value` attribute
80
+
81
+ You can provide the color via the `value` attribute,
82
+ which can be more convenient when you have slotted content.
83
+
84
+ In that case, the content of the element is merely presentational
85
+ (unless it’s an `<input>`).
86
+ If you don’t specify any content, no text will be shown.
87
+
88
+ <table>
89
+ <thead>
90
+ <tr>
91
+ <th>Static</th>
92
+ <th>Editable</th>
93
+ </tr>
94
+ </thead>
95
+ <tbody>
96
+ <tr>
97
+
98
+ <td>
99
+
100
+ ```html
101
+ <color-swatch value="oklch(70% 0.25 138)" size="large">red</color-swatch>
102
+ ```
103
+
104
+ </td>
105
+ <td>
106
+
107
+ ```html
108
+ <color-swatch value="oklch(70% 0.25 138)" size="large">
109
+ <input />
110
+ </color-swatch>
111
+ ```
112
+ </td>
113
+
114
+ </tr>
115
+ </tbody>
116
+ </table>
117
+
118
+ You can also use this as a property when creating color swatches dynamically:
119
+
120
+ ```html
121
+ <div id="future_swatch_container"></div>
122
+ <script>
123
+ let swatch = document.createElement("color-swatch");
124
+ swatch.value = "oklch(65% 0.15 210)";
125
+ swatch.setAttribute("size", "large");
126
+ swatch.textContent = "Turquoise";
127
+ future_swatch_container.append(swatch);
128
+ </script>
129
+ ```
130
+
131
+ ### The `label` attribute
132
+
133
+ You can provide the color label via the `label` attribute.
134
+
135
+ <table>
136
+ <thead>
137
+ <tr>
138
+ <th></th>
139
+ <th>Default</th>
140
+ <th>Large</th>
141
+ </tr>
142
+ </thead>
143
+ <tbody>
144
+ <tr>
145
+ <th>Static</th>
146
+ <td>
147
+
148
+ ```html
149
+ <color-swatch label="Turquoise">oklch(65% 0.15 210)</color-swatch>
150
+ ```
151
+ </td>
152
+ <td>
153
+
154
+ ```html
155
+ <color-swatch label="Turquoise" size="large">oklch(65% 0.15 210)</color-swatch>
156
+ ```
157
+ </td>
158
+ </tr>
159
+ <tr>
160
+ <th>Editable</th>
161
+ <td>
162
+
163
+ ```html
164
+ <color-swatch label="Turquoise">
165
+ <input value="oklch(65% 0.15 210)" />
166
+ </color-swatch>
167
+ ```
168
+ </td>
169
+ <td>
170
+
171
+ ```html
172
+ <color-swatch label="Turquoise" size="large">
173
+ <input value="oklch(65% 0.15 210)" />
174
+ </color-swatch>
175
+ ```
176
+ </td>
177
+ </tr>
178
+ </tbody>
179
+ </table>
180
+
181
+ If the attribute's value matches the element's content, no additional text with the label will be shown.
182
+
183
+ ```html
184
+ <color-swatch label="Turquoise" value="oklch(65% 0.15 210)" size="large">Turquoise</color-swatch>
185
+ ```
186
+
187
+ If used as a property and is not defined via the `label` attribute, its value is that of the element text content.
188
+
189
+ ### The `info` attribute
190
+
191
+ You can use the `info` attribute to show information about the color.
192
+ Currently, the only type of information supported is color coords (in any color space), but more will be added in the future.
193
+
194
+ ```html
195
+ <color-swatch info="oklch.l, oklch.c, oklch.h" size="large">
196
+ oklch(70% 0.25 138)
197
+ </color-swatch>
198
+ ```
199
+
200
+ By default, the label for each value will be determined automatically from the type of information (e.g. the full coord name if a coord),
201
+ but you can customize this by adding a label before the description of the data:
202
+
203
+ ```html
204
+ <color-swatch info="L: oklch.l, C: oklch.c, H: oklch.h" size="large">
205
+ oklch(70% 0.25 138)
206
+ </color-swatch>
207
+ ```
208
+
209
+
210
+ The `info` attribute plays quite nicely with the `--details-style: compact` style:
211
+
212
+ ```html
213
+ <color-swatch size="large" info="oklch.l, oklch.c, oklch.h" style="--details-style: compact">oklch(70% 0.25 138)</color-swatch>
214
+ ```
215
+
216
+ ### With slot content
217
+
218
+ Before and after:
219
+
220
+ ```html
221
+ <color-swatch>
222
+ <label slot="before" for=c1>Accent color:</label>
223
+ <input value="oklch(70% 0.25 138)" id=c1 />
224
+ </color-swatch>
225
+ ```
226
+
227
+ ```html
228
+ <color-swatch>
229
+ <label slot="before" for=c1>Accent color:</label>
230
+ oklch(70% 0.25 138)
231
+ </color-swatch>
232
+ ```
233
+
234
+ ```html
235
+ <color-swatch size="large">
236
+ <label slot="before" for=c2>Accent color:</label>
237
+ <input value="oklch(70% 0.25 138)" id=c2 />
238
+ <small slot="after">Tip: Pick a bright medium color.</small>
239
+ </color-swatch>
240
+ ```
241
+
242
+ Adding text within the default swatch:
243
+
244
+ ```html
245
+ <color-swatch size="large">
246
+ <div slot="swatch-content">Some text</div>
247
+ <input value="oklch(70% 0.25 138)" id=c1 />
248
+ </color-swatch>
249
+ ```
250
+
251
+ Note that the text color will automatically switch from black to white to remain readable (using [this technique](https://lea.verou.me/blog/2024/contrast-color/)).
252
+
253
+ ----
254
+
255
+ Replacing the whole swatch with a custom element:
256
+
257
+ ```html
258
+ <color-swatch size="large">
259
+ <div slot="swatch">Some text</div>
260
+ <input value="oklch(70% 0.25 138)" id=c1 />
261
+ </color-swatch>
262
+ ```
263
+
264
+ <!--
265
+ ### Bound to CSS property
266
+
267
+ You can automatically bind the color swatch to a CSS property by setting the `property` attribute.
268
+ Then you don’t need to provide an initial value, it will be read from the CSS property,
269
+ and updating the color will update the CSS property.
270
+
271
+ ```html
272
+ <color-swatch size="large" property="--color-red">
273
+ <input />
274
+ </color-swatch>
275
+ ```
276
+
277
+ You can use `scope` to select the closest ancestor (via a CSS selector) on which the CSS property will be read from and written to.
278
+ If you don’t, the `<html>` element will be used.
279
+ -->
280
+
281
+ ### Events
282
+
283
+ ```html
284
+ <color-swatch size="large" oncolorchange="this.nextElementSibling.textContent = this.color">
285
+ <input value="oklch(70% 0.25 138)" />
286
+ </color-swatch>
287
+ <color-inline></color-inline>
288
+ ```
289
+
290
+ ### Update via JS
291
+
292
+ #### Static
293
+
294
+ ```html
295
+ <color-swatch id="dynamic_static">oklch(70% 0.25 138)</color-swatch>
296
+ <button onclick='dynamic_static.color = "oklch(60% 0.15 0)"'>Change color</button>
297
+ ```
298
+
299
+ ### Editable
300
+
301
+ ```html
302
+ <color-swatch id="dynamic_editable">
303
+ <input value="oklch(70% 0.25 138)" />
304
+ </color-swatch>
305
+ <button onclick='dynamic_editable.color = "oklch(60% 0.15 0)"'>Change color</button>
306
+ ```
307
+
308
+ ## Reference
309
+
310
+ ### Attributes & Properties
311
+
312
+ | Attribute | Property | Property type | Default value | Description |
313
+ |-----------|----------|---------------|---------------|-------------|
314
+ | `color` | `color` | `Color` &#124; `string` | - | The current color value. |
315
+ | `info` | `info` | `string` | - | Comma-separated list of coords of the current color to be shown. |
316
+ | `value` | `value` | `string` | - | The current value of the swatch. |
317
+ | `label` | `label` | `string` | - | The label of the swatch (e.g., color name). Defaults to the element text content. |
318
+ | `size` | - | `large` | - | The size of the swatch. Currently, it is used only to make a large swatch. |
319
+ | `property` | `property` | `string` | - | CSS property to bind to. |
320
+ | `scope` | `scope` | `string` | `:root` | CSS selector to use as the scope for the specified CSS property. |
321
+ | `gamuts` | `gamuts` | `string` | `srgb, p3, rec2020: P3+, prophoto: PP` | Comma-separated list of gamuts to be used by the gamut indicator. |
322
+ | `open` | `open` | | `null` | Force the details popup open or closed. |
323
+
324
+ ### Getters
325
+
326
+ These properties are read-only.
327
+
328
+ | Name | Type | Description |
329
+ |----------|------|-------------|
330
+ | `gamut` | `string` | The id of the current gamut (e.g. `srgb`). |
331
+
332
+ ### CSS variables
333
+
334
+ | Name | Type | Description |
335
+ |----------|---------------|-------------|
336
+ | `--details-style` | `compact` &#124; `normal` (default) | |
337
+ | `--transparency-grid` | `<image>` | Gradient used as a background for transparent parts of the swatch. |
338
+ | `--transparency-cell-size` | `<length>` | The size of the cells of the transparency gradient. |
339
+ | `--transparcency-background` | `<color>` | The background color of the transparency gradient. |
340
+ | `--transparency-darkness` | `<percentage>` | The opacity of the black color used for dark parts of the transparency gradient. |
341
+
342
+ ### Parts
343
+
344
+ | Name | Description |
345
+ |------|-------------|
346
+ | `swatch` | The swatch used to render the color. |
347
+ | `details` | Wrapper around all non-swatch content (color name, info, etc) |
348
+ | `label` | The label of the swatch |
349
+ | `color-wrapper` | Wrapper around the color name itself |
350
+ | `gamut` | Gamut indicator |
351
+ | `info` | Any info generateed by the `info` attribute |
352
+
353
+ ### Events
354
+
355
+ | Name | Description |
356
+ |------|-------------|
357
+ | `valuechange` | Fired when the value changes for any reason, and once during initialization. |
358
+ | `colorchange` | Fired when the color changes for any reason, and once during initialization. |
359
+ | `gamutchange` | Fired when the gamut changes for any reason, and once during initialization. |