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,164 @@
1
+ import ColorElement from "../common/color-element.js";
2
+ import "../color-swatch/color-swatch.js";
3
+
4
+ const Self = class ColorScale extends ColorElement {
5
+ static tagName = "color-scale";
6
+ static url = import.meta.url;
7
+ static dependencies = new Set(["color-swatch"]);
8
+ static shadowStyle = true;
9
+ static shadowTemplate = `
10
+ <div id=swatches></div>
11
+ <slot></slot>`;
12
+
13
+ constructor () {
14
+ super();
15
+
16
+ this._el = {
17
+ slot: this.shadowRoot.querySelector("slot"),
18
+ swatches: this.shadowRoot.getElementById("swatches"),
19
+ };
20
+ }
21
+
22
+ connectedCallback () {
23
+ super.connectedCallback?.();
24
+ this._el.swatches.addEventListener("colorchange", this, {capture: true});
25
+ }
26
+
27
+ disconnectedCallback () {
28
+ this.#swatches = [];
29
+ this._el.swatches.removeEventListener("colorchange", this, {capture: true});
30
+ }
31
+
32
+ handleEvent (event) {
33
+ this.dispatchEvent(new event.constructor(event.type, {...event}));
34
+ }
35
+
36
+ propChangedCallback ({name, prop, detail: change}) {
37
+ if (name === "computedColors") {
38
+ // Re-render swatches
39
+ this.render();
40
+ }
41
+ }
42
+
43
+ #swatches = [];
44
+
45
+ render () {
46
+ let colors = this.computedColors;
47
+
48
+ if (!colors) {
49
+ return;
50
+ }
51
+
52
+ let colorCount = colors.length;
53
+
54
+ let i = 0;
55
+ let newSwatches = [];
56
+ for (let {name, color} of colors) {
57
+ let swatch = this.#swatches[i] = this._el.swatches.children[i];
58
+
59
+ if (!swatch) {
60
+ this.#swatches[i] = swatch = document.createElement("color-swatch");
61
+ swatch.setAttribute("size", "large");
62
+ swatch.setAttribute("part", "color-swatch");
63
+ swatch.setAttribute("exportparts", "swatch, info, gamut");
64
+ newSwatches.push(swatch);
65
+ }
66
+
67
+ swatch.color = color;
68
+ swatch.label = name;
69
+ if (this.info) {
70
+ swatch.info = this.info;
71
+ }
72
+ i++;
73
+ }
74
+
75
+ if (newSwatches.length > 0) {
76
+ this._el.swatches.append(...newSwatches);
77
+ }
78
+ else if (colorCount < this._el.swatches.children.length) {
79
+ // Remove but keep them around in this.#swatches
80
+ [...this._el.swatches.children].slice(colorCount).forEach(child => child.remove());
81
+ }
82
+ }
83
+
84
+ static props = {
85
+ colors: {
86
+ type: {
87
+ is: Object,
88
+ // Support overriding the Color object
89
+ get values () {
90
+ return ColorScale.Color;
91
+ },
92
+ defaultKey: (v, i) => v,
93
+ },
94
+ },
95
+ space: {
96
+ default: "oklch",
97
+ parse (value) {
98
+ let ColorSpace = ColorScale.Color.Space;
99
+ if (value instanceof ColorSpace || value === null || value === undefined) {
100
+ return value;
101
+ }
102
+
103
+ value += "";
104
+
105
+ return ColorSpace.get(value);
106
+ },
107
+ stringify (value) {
108
+ return value?.id;
109
+ },
110
+ },
111
+ steps: {
112
+ type: Number,
113
+ default: 0,
114
+ },
115
+ computedColors: {
116
+ get () {
117
+ if (!this.colors) {
118
+ return null;
119
+ }
120
+
121
+ let colors = Object.entries(this.colors).map(([name, color]) => ({name, color}));
122
+
123
+ if (this.steps > 0) {
124
+ // Insert intermediate steps
125
+ let tessellated = [];
126
+
127
+ for (let i = 1; i < colors.length; i++) {
128
+ let start = colors[i - 1];
129
+ let end = colors[i];
130
+ let steps = ColorScale.Color.steps(start.color, end.color, { space: this.space, steps: this.steps + 2 });
131
+
132
+ steps.shift();
133
+ steps.pop();
134
+ steps = steps.map(color => ({name: color + "", color}));
135
+
136
+ tessellated.push(start, ...steps);
137
+
138
+ if (i === colors.length - 1) {
139
+ // Only add the last color at the end
140
+ // In all other iterations, it’s the same as the start of the next pair
141
+ tessellated.push(end);
142
+ }
143
+ }
144
+
145
+ colors = tessellated;
146
+ }
147
+
148
+ return colors;
149
+ },
150
+ additionalDependencies: ["info"],
151
+ },
152
+ info: {},
153
+ };
154
+
155
+ static events = {
156
+ colorschange: {
157
+ propchange: "computedColors",
158
+ },
159
+ };
160
+ };
161
+
162
+ Self.define();
163
+
164
+ export default Self;
Binary file
@@ -6,7 +6,7 @@ Creates a slider with a gradient background, primarily intended for color pickin
6
6
 
7
7
  There are many ways to use this component, depending on what you need.
8
8
  E.g. if all you need is styling sliders with arbitrary gradients you don’t even need a component,
9
- you can just [use the CSS file](#css-only) and a few classes and CSS variables to style regular HTML sliders.
9
+ you can just [use the CSS file](#css-only-usage) and a few classes and CSS variables to style regular HTML sliders.
10
10
 
11
11
  The actual component does a lot more:
12
12
  - It provides a `color` property with the actual color value
@@ -142,13 +142,20 @@ Then use a `color-slider` class on your slider element, and use [CSS variables](
142
142
 
143
143
  ## Reference
144
144
 
145
+ ### Slots
146
+
147
+ | Name | Description |
148
+ |------|-------------|
149
+ | _(default)_ | Content placed after the color slider. |
150
+ | `tooltip` | An element used as a tooltip. |
151
+
145
152
  ### Attributes & Properties
146
153
 
147
154
  | Attribute | Property | Property type | Default value | Description |
148
155
  |-----------|----------|---------------|---------------|-------------|
149
156
  | `space` | `space` | `ColorSpace` &#124; `string` | `oklch` | The color space to use for interpolation. |
150
- | `color` | `color` | `Color` &#124; `string` | `oklch(50 50% 180)` | The current color value. |
151
- | `stops` | `stops` | `String` &#124; `Array<Color>` | - | Comma-separated list of color stops |
157
+ | `color` | `color` | `Color` &#124; `string` | `oklch(50% 50% 180)` | The current color value. |
158
+ | `stops` | `stops` | `String` &#124; `Array<Color>` | - | Comma-separated list of color stops. |
152
159
  | `min` | `min` | `number` | 0 | The minimum value for the slider. |
153
160
  | `max` | `max` | `number` | 1 | The maximum value for the slider. |
154
161
  | `step` | `step` | `number` | Computed automatically based on `this.min` and `this.max`. | The granularity that the slider's current value must adhere to. |
@@ -163,7 +170,11 @@ If you’re only using the CSS file, you should set these yourself.
163
170
  |----------|---------------|-------------|
164
171
  | `--slider-color-stops` | `<color>#` | Comma-separated list of color stops. |
165
172
  | `--color-space` | `<ident>` | The color space to use for interpolation. |
166
- | `--hue-interpolation` | `[shorter` &#124; `longer` &#124; `increasing` &#124; `decreasing] hue` | The color space to use for interpolation. |
173
+ | `--hue-interpolation` | `[shorter` &#124; `longer` &#124; `increasing` &#124; `decreasing] hue` | The hue interpolation method to use. |
174
+ | `--transparency-grid` | `<image>` | Gradient used as a background for transparent parts of the slider. |
175
+ | `--transparency-cell-size` | `<length>` | The size of the cells of the transparency gradient. |
176
+ | `--transparcency-background` | `<color>` | The background color of the transparency gradient. |
177
+ | `--transparency-darkness` | `<percentage>` | The opacity of the black color used for dark parts of the transparency gradient. |
167
178
  | `--slider-gradient` | `<image>` | The gradient to use as the background. |
168
179
  | `--slider-height` | `<length>` | Height of the slider track. |
169
180
  | `--slider-thumb-width` | `<length>` | Width of the slider thumb. |
@@ -179,6 +190,15 @@ If you’re only using the CSS file, you should set these yourself.
179
190
  | `--tooltip-pointer-height` | `<length>` | Height of the tooltip pointer triangle. |
180
191
  | `--tooltip-pointer-angle` | `<angle>` | Angle of the tooltip pointer triangle. |
181
192
 
193
+ ### Getters
194
+
195
+ These properties are read-only.
196
+
197
+ | Property | Type | Description |
198
+ |----------|------|-------------|
199
+ | `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. |
200
+
201
+
182
202
  ### Events
183
203
 
184
204
  | Name | Description |
@@ -188,6 +208,13 @@ If you’re only using the CSS file, you should set these yourself.
188
208
  | `valuechange` | Fired when the value changes for any reason, and once during initialization. |
189
209
  | `colorchange` | Fired when the color changes for any reason, and once during initialization. |
190
210
 
211
+ ### Parts
212
+
213
+ | Name | Description |
214
+ |------|-------------|
215
+ | `slider` | The internal `<input type="range">` element. |
216
+ | `spinner` | The default `tooltip` slot content (an `<input type="number">` element). Please note that if an element is slotted in the `tooltip` slot, this will not match anyhing. |
217
+
191
218
  ## Planned features
192
219
 
193
220
  - Discrete scales & steps
@@ -5,7 +5,15 @@
5
5
 
6
6
  .color-slider,
7
7
  .slider-tooltip {
8
- --transparency: repeating-conic-gradient(transparent 0 25%, rgb(0 0 0 / .05) 0 50%) 0 0 / 1.5em 1.5em content-box border-box;
8
+ --transparency-cell-size: 1.5em;
9
+ --_transparency-cell-size: var(--transparency-cell-size, .5em);
10
+ --_transparency-background: var(--transparency-background, transparent);
11
+ --_transparency-darkness: var(--transparency-darkness, 5%);
12
+ --_transparency-grid: var(--transparency-grid,
13
+ repeating-conic-gradient(transparent 0 25%, rgb(0 0 0 / var(--_transparency-darkness)) 0 50%)
14
+ 0 0 / calc(2 * var(--_transparency-cell-size)) calc(2 * var(--_transparency-cell-size))
15
+ content-box border-box var(--_transparency-background)
16
+ );
9
17
 
10
18
  --_slider-color-stops: var(--slider-color-stops, transparent 0% 100%);
11
19
  --_slider-gradient: var(--slider-gradient, linear-gradient(to right var(--in-space, ), var(--_slider-color-stops)));
@@ -36,7 +44,7 @@
36
44
  width: 100%;
37
45
  -moz-appearance: none;
38
46
  -webkit-appearance: none;
39
- background: var(--_slider-gradient), var(--transparency);
47
+ background: var(--_slider-gradient), var(--_transparency-grid);
40
48
  background-origin: border-box;
41
49
  background-clip: border-box;
42
50
  height: var(--_slider-height);
@@ -66,11 +74,6 @@
66
74
  transition: 200ms, 0s background;
67
75
  }
68
76
 
69
- &::-webkit-slider-thumb:active {
70
- border: var(--_slider-thumb-border-active);
71
- scale: var(--_slider-thumb-scale-active);
72
- }
73
-
74
77
  &::-moz-range-thumb:active {
75
78
  border: var(--_slider-thumb-border-active);
76
79
  scale: var(--_slider-thumb-scale-active);
@@ -81,6 +84,13 @@
81
84
  }
82
85
  }
83
86
 
87
+ /* For some reason, the &::-webkit-slider-thumb:active rule (previously used inside the above rule) doesn't work 🤷‍♂️ */
88
+ /* DO NOT MOVE IT BACK! :) */
89
+ .color-slider::-webkit-slider-thumb:active {
90
+ border: var(--_slider-thumb-border-active);
91
+ scale: var(--_slider-thumb-scale-active);
92
+ }
93
+
84
94
  .slider-tooltip {
85
95
  position: absolute;
86
96
  left: clamp(-20%,
@@ -1,6 +1,4 @@
1
-
2
- import Color from "../common/color.js";
3
- import NudeElement from "../../node_modules/nude-element/src/Element.js";
1
+ import ColorElement from "../common/color-element.js";
4
2
  import { getStep } from "../common/util.js";
5
3
 
6
4
  let supports = {
@@ -8,23 +6,19 @@ let supports = {
8
6
  fieldSizing: CSS?.supports("field-sizing", "content"),
9
7
  };
10
8
 
11
- const Self = class ColorSlider extends NudeElement {
12
- static postConstruct = [];
9
+ const Self = class ColorSlider extends ColorElement {
13
10
  static tagName = "color-slider";
14
-
15
- constructor () {
16
- super();
17
- this.attachShadow({mode: "open"});
18
-
19
- let styleURL = new URL(`./${this.constructor.tagName}.css`, import.meta.url);
20
- this.shadowRoot.innerHTML = `
21
- <style>@import url("${ styleURL }")</style>
22
- <input type="range" class="color-slider" part="slider" min="0" max="1" step="0.01" part="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" />
23
15
  <slot name="tooltip" class="slider-tooltip">
24
16
  <input type="number" part="spinner" min="0" max="1" step="0.01" />
25
17
  </slot>
26
- <slot></slot>
27
- `;
18
+ <slot></slot>`;
19
+
20
+ constructor () {
21
+ super();
28
22
 
29
23
  this._el = {
30
24
  slider: this.shadowRoot.querySelector(".color-slider"),
@@ -32,14 +26,14 @@ const Self = class ColorSlider extends NudeElement {
32
26
  };
33
27
  }
34
28
 
35
- connectedCallback() {
29
+ connectedCallback () {
36
30
  super.connectedCallback?.();
37
31
 
38
32
  this._el.slider.addEventListener("input", this);
39
33
  this._el.spinner.addEventListener("input", this);
40
34
  }
41
35
 
42
- disconnectedCallback() {
36
+ disconnectedCallback () {
43
37
  this._el.slider.removeEventListener("input", this);
44
38
  this._el.spinner.removeEventListener("input", this);
45
39
  }
@@ -63,8 +57,17 @@ const Self = class ColorSlider extends NudeElement {
63
57
  if (["min", "max", "step", "value", "defaultValue"].includes(name)) {
64
58
  prop.applyChange(this._el.slider, change);
65
59
 
66
- let spinnerValue = this.tooltip === "progress" ? +(this.progress * 100).toPrecision(4) : this.value;
67
- prop.applyChange(this._el.spinner, {...change, value: spinnerValue});
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)});
68
71
  }
69
72
 
70
73
  if (name === "stops") {
@@ -72,7 +75,27 @@ const Self = class ColorSlider extends NudeElement {
72
75
  let stops = this.stops;
73
76
  let supported = stops.every(color => CSS.supports("color", color));
74
77
 
75
- if (!supported) {
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) {
76
99
  stops = this.tessellateStops({ steps: 3 });
77
100
  }
78
101
 
@@ -99,21 +122,36 @@ const Self = class ColorSlider extends NudeElement {
99
122
  this.style.setProperty("--color", displayedColor);
100
123
  }
101
124
  }
102
- else if (name === "value") {
125
+ else if (name === "value" || name === "min" || name === "max") {
103
126
  this.style.setProperty("--progress", this.progress);
104
127
 
105
- if (!supports.fieldSizing) {
128
+ if (name === "value" && !supports.fieldSizing) {
106
129
  let valueStr = this.value + "";
107
130
  this._el.spinner.style.setProperty("--value-length", valueStr.length);
108
131
  }
109
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
+ }
110
148
  }
111
149
 
112
150
  tessellateStops (options = {}) {
113
151
  let stops = this.stops;
114
152
  let tessellated = [];
115
153
 
116
- for (let i=1; i<stops.length; i++) {
154
+ for (let i = 1; i < stops.length; i++) {
117
155
  let start = stops[i - 1];
118
156
  let end = stops[i];
119
157
  let steps = start.steps(end, { space: this.space, ...options });
@@ -183,11 +221,13 @@ const Self = class ColorSlider extends NudeElement {
183
221
  },
184
222
  },
185
223
  stops: {
186
- type: Array,
187
- typeOptions: {
188
- itemType: Color,
224
+ type: {
225
+ is: Array,
226
+ get values () {
227
+ return Self.Color;
228
+ },
189
229
  },
190
- default: el => []
230
+ default: el => [],
191
231
  },
192
232
  defaultValue: {
193
233
  type: Number,
@@ -209,13 +249,13 @@ const Self = class ColorSlider extends NudeElement {
209
249
  return this.stops[0]?.space ?? "oklab";
210
250
  },
211
251
  parse (value) {
212
- if (value instanceof Color.Space || value === null || value === undefined) {
252
+ if (value instanceof Self.Color.Space || value === null || value === undefined) {
213
253
  return value;
214
254
  }
215
255
 
216
256
  value += "";
217
257
 
218
- return Color.Space.get(value);
258
+ return Self.Color.Space.get(value);
219
259
  },
220
260
  stringify (value) {
221
261
  return value?.id;
@@ -223,7 +263,9 @@ const Self = class ColorSlider extends NudeElement {
223
263
  },
224
264
 
225
265
  color: {
226
- type: Color,
266
+ get type () {
267
+ return Self.Color;
268
+ },
227
269
  get () {
228
270
  return this.colorAt(this.value);
229
271
  },
@@ -234,10 +276,10 @@ const Self = class ColorSlider extends NudeElement {
234
276
  let stops = this.stops;
235
277
  let scales = [];
236
278
 
237
- for (let i=1; i<stops.length; i++) {
279
+ for (let i = 1; i < stops.length; i++) {
238
280
  let start = stops[i - 1];
239
281
  let end = stops[i];
240
- let range = start.range(end, { space: this.space, hue: "raw" });
282
+ let range = start.range(end, { space: this.space });
241
283
  scales.push(range);
242
284
  }
243
285
 
@@ -255,7 +297,7 @@ const Self = class ColorSlider extends NudeElement {
255
297
  change: {
256
298
  from () {
257
299
  return this._el.slider;
258
- }
300
+ },
259
301
  },
260
302
  valuechange: {
261
303
  propchange: "value",
@@ -266,13 +308,13 @@ const Self = class ColorSlider extends NudeElement {
266
308
  };
267
309
 
268
310
  static formAssociated = {
269
- getSource: el => el._el.slider,
311
+ like: el => el._el.slider,
270
312
  role: "slider",
271
313
  valueProp: "value",
272
314
  changeEvent: "valuechange",
273
315
  };
274
- }
316
+ };
275
317
 
276
- customElements.define(Self.tagName, Self);
318
+ Self.define();
277
319
 
278
- export default Self;
320
+ export default Self;