color-elements 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +30 -15
  2. package/_build/copy-config.json +1 -1
  3. package/_build/eleventy.js +7 -2
  4. package/_build/filters-extra.js +1 -1
  5. package/_includes/component.njk +9 -1
  6. package/_includes/partials/_nav-links.njk +12 -4
  7. package/_redirects +8 -1
  8. package/assets/css/style.css +78 -1
  9. package/assets/js/index.js +6 -6
  10. package/data/components.json +12 -0
  11. package/index.js +5 -1
  12. package/package.json +9 -3
  13. package/src/channel-picker/README.md +103 -0
  14. package/src/channel-picker/channel-picker.css +31 -0
  15. package/src/channel-picker/channel-picker.js +168 -0
  16. package/src/channel-picker/channel-picker.webp +0 -0
  17. package/src/channel-slider/README.md +50 -8
  18. package/src/channel-slider/channel-slider.css +47 -5
  19. package/src/channel-slider/channel-slider.js +74 -39
  20. package/src/channel-slider/channel-slider.webp +0 -0
  21. package/src/color-chart/README.md +129 -0
  22. package/src/color-chart/color-chart-global.css +101 -0
  23. package/src/color-chart/color-chart.css +112 -0
  24. package/src/color-chart/color-chart.js +439 -0
  25. package/src/color-chart/color-chart.webp +0 -0
  26. package/src/color-inline/README.md +42 -1
  27. package/src/color-inline/color-inline.css +11 -4
  28. package/src/color-inline/color-inline.js +56 -50
  29. package/src/color-inline/color-inline.webp +0 -0
  30. package/src/color-picker/README.md +107 -5
  31. package/src/color-picker/color-picker.css +21 -6
  32. package/src/color-picker/color-picker.js +147 -60
  33. package/src/color-picker/color-picker.webp +0 -0
  34. package/src/color-scale/README.md +75 -0
  35. package/src/color-scale/color-scale.css +35 -0
  36. package/src/color-scale/color-scale.js +164 -0
  37. package/src/color-scale/color-scale.webp +0 -0
  38. package/src/color-slider/README.md +31 -4
  39. package/src/color-slider/color-slider.css +17 -7
  40. package/src/color-slider/color-slider.js +80 -38
  41. package/src/color-slider/color-slider.webp +0 -0
  42. package/src/color-swatch/README.md +265 -6
  43. package/src/color-swatch/color-swatch.css +171 -27
  44. package/src/color-swatch/color-swatch.js +193 -217
  45. package/src/color-swatch/color-swatch.webp +0 -0
  46. package/src/common/color-element.js +140 -0
  47. package/src/common/dom.js +1 -1
  48. package/src/common/util.js +62 -84
  49. package/src/gamut-badge/README.md +145 -0
  50. package/src/gamut-badge/gamut-badge.css +78 -0
  51. package/src/gamut-badge/gamut-badge.js +121 -0
  52. package/src/gamut-badge/gamut-badge.webp +0 -0
  53. package/src/index.js.njk +1 -1
  54. package/src/space-picker/README.md +121 -0
  55. package/src/space-picker/space-picker.css +23 -0
  56. package/src/space-picker/space-picker.js +213 -0
  57. package/src/space-picker/space-picker.webp +0 -0
  58. package/_data/components.json +0 -8
  59. package/lib/README.md +0 -4
  60. package/lib/colorjs.io/LICENSE +0 -21
  61. package/lib/colorjs.io/README.json +0 -3
  62. package/lib/colorjs.io/README.md +0 -257
  63. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  64. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  65. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  66. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  67. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  68. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  69. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  70. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  71. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  72. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  73. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  74. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  75. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  76. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  77. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  78. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  79. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  80. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  81. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  82. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  83. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  84. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  85. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  86. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  87. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  88. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  89. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  90. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  91. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  92. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  93. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  94. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  95. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  96. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  97. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  98. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  99. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  100. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  101. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  102. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  103. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  104. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  105. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  106. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  107. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  108. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  109. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  110. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  111. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  112. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  113. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  114. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  115. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  116. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  117. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  118. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  119. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  120. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  121. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  122. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  123. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  124. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  125. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  126. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  127. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  129. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  130. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  131. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  133. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  134. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  135. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  136. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  137. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  138. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  139. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  140. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  141. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  142. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  143. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  144. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  145. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  147. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  148. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  149. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  150. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  151. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  152. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  153. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  154. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  155. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  156. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  157. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  158. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  159. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  160. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  161. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  162. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  163. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  164. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  165. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  166. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  167. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  168. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  169. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  170. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  171. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  172. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  173. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  174. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  175. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  176. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  177. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  178. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  179. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  180. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  181. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  182. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  183. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  184. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  185. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  186. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  187. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  188. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  189. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  190. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  191. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  192. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  193. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  194. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  195. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  196. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  197. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  198. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  199. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  200. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  201. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  202. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  203. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  204. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  205. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  206. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  207. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  208. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  209. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  210. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  211. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  212. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  213. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  214. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  215. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  216. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  217. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  218. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  219. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  220. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  221. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  222. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  223. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  224. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  225. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  226. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  227. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  228. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  229. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  230. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  231. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  232. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  233. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  234. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  236. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  237. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  238. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  239. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  240. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  241. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  242. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  243. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  244. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  246. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  247. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  248. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  249. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  250. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  251. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  252. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  270. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  271. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  272. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  273. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  274. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  275. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  276. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  277. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  278. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  279. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  280. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  281. package/lib/colorjs.io/dist/color.cjs +0 -5759
  282. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  283. package/lib/colorjs.io/dist/color.global.js +0 -5760
  284. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  285. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  286. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  287. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  288. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  289. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  290. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  291. package/lib/colorjs.io/dist/color.js +0 -5755
  292. package/lib/colorjs.io/dist/color.js.map +0 -1
  293. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  294. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  295. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  296. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  297. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  298. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  299. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  300. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  301. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  302. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  303. package/lib/colorjs.io/dist/color.min.js +0 -2
  304. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  305. package/lib/colorjs.io/package.json +0 -113
  306. package/lib/colorjs.io/src/CATs.js +0 -131
  307. package/lib/colorjs.io/src/adapt.js +0 -62
  308. package/lib/colorjs.io/src/angles.js +0 -44
  309. package/lib/colorjs.io/src/chromaticity.js +0 -33
  310. package/lib/colorjs.io/src/clone.js +0 -7
  311. package/lib/colorjs.io/src/color.js +0 -201
  312. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  313. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  314. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  315. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  316. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  317. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  318. package/lib/colorjs.io/src/contrast/index.js +0 -6
  319. package/lib/colorjs.io/src/contrast.js +0 -28
  320. package/lib/colorjs.io/src/defaults.js +0 -12
  321. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  322. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  323. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  324. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  325. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  326. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  327. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  328. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  329. package/lib/colorjs.io/src/deltaE.js +0 -19
  330. package/lib/colorjs.io/src/display.js +0 -83
  331. package/lib/colorjs.io/src/distance.js +0 -21
  332. package/lib/colorjs.io/src/equals.js +0 -10
  333. package/lib/colorjs.io/src/get.js +0 -11
  334. package/lib/colorjs.io/src/getAll.js +0 -20
  335. package/lib/colorjs.io/src/getColor.js +0 -36
  336. package/lib/colorjs.io/src/hooks.js +0 -37
  337. package/lib/colorjs.io/src/inGamut.js +0 -25
  338. package/lib/colorjs.io/src/index-fn.js +0 -28
  339. package/lib/colorjs.io/src/index.js +0 -38
  340. package/lib/colorjs.io/src/interpolation.js +0 -222
  341. package/lib/colorjs.io/src/keywords.js +0 -158
  342. package/lib/colorjs.io/src/luminance.js +0 -27
  343. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  344. package/lib/colorjs.io/src/parse.js +0 -198
  345. package/lib/colorjs.io/src/rgbspace.js +0 -64
  346. package/lib/colorjs.io/src/serialize.js +0 -86
  347. package/lib/colorjs.io/src/set.js +0 -33
  348. package/lib/colorjs.io/src/setAll.js +0 -12
  349. package/lib/colorjs.io/src/space-accessors.js +0 -86
  350. package/lib/colorjs.io/src/space.js +0 -440
  351. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  352. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  353. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  354. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  355. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  356. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  357. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  358. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  359. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  360. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  361. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  362. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  363. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  364. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  365. package/lib/colorjs.io/src/spaces/index.js +0 -8
  366. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  367. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  368. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  369. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  370. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  371. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  372. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  373. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  374. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  375. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  376. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  377. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  378. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  379. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  380. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  381. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  382. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  383. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  384. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  385. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  386. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  387. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  388. package/lib/colorjs.io/src/to.js +0 -26
  389. package/lib/colorjs.io/src/toGamut.js +0 -310
  390. package/lib/colorjs.io/src/util.js +0 -254
  391. package/lib/colorjs.io/src/variations.js +0 -14
  392. package/lib/colorjs.io/types/index.d.cts +0 -4
  393. package/lib/colorjs.io/types/index.d.ts +0 -42
  394. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  395. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  396. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  397. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  398. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  399. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  400. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  401. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  402. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  403. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  404. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  405. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  406. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  407. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  408. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  409. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  410. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  411. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  412. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  413. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  414. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  415. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  416. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  417. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  418. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  419. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  420. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  421. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  422. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  423. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  424. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  425. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  426. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  427. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  428. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  429. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  430. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  431. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  432. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  433. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  434. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  435. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  436. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  437. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  438. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  439. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  440. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  441. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  442. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  443. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  444. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  445. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  446. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  447. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  448. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  449. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  450. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  451. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  453. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  454. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  455. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  456. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  457. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  458. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  459. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  460. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  471. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  472. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  473. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  477. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  478. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  479. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
  480. package/src/color-gamut/README.md +0 -75
  481. package/src/color-gamut/color-gamut.css +0 -32
  482. package/src/color-gamut/color-gamut.js +0 -172
  483. package/src/common/color.js +0 -12
@@ -1,104 +1,64 @@
1
- /**
2
- * Defines instance properties by defining an accessor that automatically replaces itself with a writable property when accessed.
3
- * @param {Function} Class
4
- * @param {string} name
5
- * @param {function} getValue
6
- */
7
- export function defineInstanceProperty (
8
- Class, name, getValue,
9
- {writable = true, configurable = true, enumerable = false} = {}) {
10
- let setter = function (value) {
11
- Object.defineProperty(this, name, { value, writable, configurable, enumerable });
1
+ export async function wait (ms) {
2
+ if (ms === undefined) {
3
+ return new Promise(resolve => requestAnimationFrame(resolve));
12
4
  }
13
- Object.defineProperty(Class.prototype, name, {
14
- get () {
15
- let value = getValue.call(this, this);
16
- setter.call(this, value);
17
- return value;
18
- },
19
- set (value) { // Blind set
20
- setter.call(this, value);
21
- },
22
- configurable: true,
23
- });
5
+
6
+ return new Promise(resolve => setTimeout(resolve, ms));
24
7
  }
25
8
 
26
- export function defineLazyProperty (object, name, options) {
27
- if (typeof options === "function") {
28
- options = { get: options };
29
- }
9
+ export function defer (executor) {
10
+ let res, rej;
30
11
 
31
- let {get, writable = true, configurable = true, enumerable = false} = options;
12
+ let promise = new Promise((resolve, reject) => {
13
+ res = resolve;
14
+ rej = reject;
32
15
 
33
- let setter = function (value) {
34
- Object.defineProperty(this, name, { value, writable, configurable, enumerable });
35
- }
36
- Object.defineProperty(object, name, {
37
- get () {
38
- let value = get.call(this);
39
- setter.call(this, value);
40
- return value;
41
- },
42
- set (value) { // Blind set
43
- setter.call(this, value);
44
- },
45
- configurable: true,
16
+ executor?.(res, rej);
46
17
  });
47
- }
48
18
 
49
- export function defineComputed (Class, computed = Class.computed) {
50
- let dependencies = new Map();
19
+ promise.resolve = res;
20
+ promise.reject = rej;
51
21
 
52
- for (let name in computed) {
53
- let spec = computed[name];
54
- defineInstanceProperty(Class, name, spec.get);
22
+ return promise;
23
+ }
55
24
 
56
- if (spec.dependencies) {
57
- for (let prop of spec.dependencies) {
58
- let deps = dependencies.get(prop) ?? [];
59
- deps.push(name);
60
- dependencies.set(prop, deps);
61
- }
25
+ /**
26
+ * Wait for all promises to resolve. Supports dynamically adding promises to the list after the initial call.
27
+ * @param {Promise[] | Set<Promise>} promises
28
+ * @returns {Promise}
29
+ */
30
+ export async function dynamicAll (promises) {
31
+ let all = new Set([...promises]);
32
+ let unresolved = new Set();
33
+
34
+ for (let promise of promises) {
35
+ if (promise?.then) {
36
+ unresolved.add(promise);
37
+ promise.then(() => {
38
+ // Remove the promise from the list
39
+ unresolved.delete(promise);
40
+ });
62
41
  }
63
42
  }
64
43
 
65
- if (dependencies.size > 0) {
66
- let _propChangedCallback = Class.prototype.propChangedCallback;
44
+ return Promise.all(unresolved).then(resolved => {
45
+ // Check if the array has new items
46
+ for (let promise of promises) {
47
+ if (!all.has(promise)) {
48
+ all.add(promise);
67
49
 
68
- Class.prototype.propChangedCallback = function(name, change) {
69
- if (dependencies.has(name)) {
70
- for (let prop of dependencies.get(name)) {
71
- this[prop] = computed[prop].get.call(this, this);
50
+ if (promise?.then) {
51
+ unresolved.add(promise);
72
52
  }
73
53
  }
74
-
75
- _propChangedCallback?.call(this, name, change);
76
54
  }
77
- }
78
- }
79
-
80
- export function inferDependencies (fn) {
81
- if (!fn || typeof fn !== "function") {
82
- return [];
83
- }
84
55
 
85
- let code = fn.toString();
86
-
87
- return [...code.matchAll(/\bthis\.([$\w]+)\b/g)].map(match => match[1]);
88
- }
89
-
90
- export async function wait (ms) {
91
- return new Promise(resolve => setTimeout(resolve, ms));
92
- }
93
-
94
- export async function nextTick (refreshRate = 20) {
95
- let now = performance.now();
96
- let remainder = now % refreshRate;
97
- let delay = refreshRate - remainder;
98
- let nextAt = now + delay;
99
- nextTick.start ??= now - remainder;
56
+ if (unresolved.size > 0) {
57
+ return dynamicAll(unresolved).then(r => [...resolved, ...r]);
58
+ }
100
59
 
101
- return new Promise(resolve => setTimeout(() => resolve(nextAt - nextTick.start), delay));
60
+ return resolved;
61
+ });
102
62
  }
103
63
 
104
64
  /**
@@ -139,4 +99,22 @@ export function pick (obj, properties) {
139
99
  }
140
100
 
141
101
  return Object.fromEntries(Object.entries(obj).filter(([key]) => properties.includes(key)));
142
- }
102
+ }
103
+
104
+ export function getType (value) {
105
+ if (value === null || value === undefined) {
106
+ return value + "";
107
+ }
108
+
109
+ return Object.prototype.toString.call(value).slice(8, -1);
110
+ }
111
+
112
+ /**
113
+ * Template tag that does nothing. Useful for importing under different names (e.g. `css`) for syntax highlighting.
114
+ * @param {string[]} strings
115
+ * @param {...any} values
116
+ * @returns {string}
117
+ */
118
+ export function noOpTemplateTag (strings, ...values) {
119
+ return strings.reduce((acc, string, i) => acc + string + (values[i] ?? ""), "");
120
+ }
@@ -0,0 +1,145 @@
1
+ <script src="gamut-badge.js" type="module"></script>
2
+ # &lt;gamut-badge>
3
+
4
+ Gamut indicator. Used internally by `<color-swatch>`
5
+
6
+ ## Usage
7
+
8
+ Static (only read once):
9
+ ```html
10
+ <gamut-badge color="red"></gamut-badge>
11
+ ```
12
+
13
+ Invalid color:
14
+ ```html
15
+ <gamut-badge color="poop"></gamut-badge>
16
+ ```
17
+ Missing color:
18
+ ```html
19
+ <gamut-badge></gamut-badge>
20
+ ```
21
+
22
+ Dynamic:
23
+ ```html
24
+ <gamut-badge id="cg_1" color="red"></gamut-badge>
25
+ <script>cg_1.color = "oklch(50% 0.5 180)";</script>
26
+ ```
27
+
28
+ ## Demo
29
+ <style>
30
+ #params {
31
+ background: linear-gradient(to right, var(--start-color), var(--end-color)) no-repeat top / 100% 1em;
32
+ padding-top: 1.5em;
33
+ }
34
+
35
+ #colors_container_h {
36
+ display: flex;
37
+ height: 1em;
38
+ margin-bottom: 1em;
39
+
40
+ gamut-badge {
41
+ flex: 1;
42
+ border-radius: 0;
43
+
44
+ &::part(label) {
45
+ display: none;
46
+ }
47
+ }
48
+ }
49
+ </style>
50
+ <form id=params>
51
+ <code>oklch(<input type=number id=l value=50>% <input type=number id=min_c value=30>&ndash;<input type=number id=max_c value=40>% <input type=number id=h value=50>)</code>
52
+ <p><label>Chroma increments: <input type=number id=c_step value="0.2" min="0">%</label>
53
+ </form>
54
+
55
+ <script type=module>
56
+ params.addEventListener("input", e => {
57
+ let c_range = {min: Number(min_c.value), max: Number(max_c.value)};
58
+ let step = Number(c_step.value);
59
+ if (step <= 0) {
60
+ step = 1;
61
+ }
62
+ let colors = [];
63
+ let start = `oklch(${l.value}% ${c_range.min.toLocaleString("en")}% ${h.value})`;
64
+ let end = `oklch(${l.value}% ${c_range.max.toLocaleString("en")}% ${h.value})`;
65
+
66
+ params.style.setProperty("--start-color", start);
67
+ params.style.setProperty("--end-color", end);
68
+
69
+ for (let c = c_range.min; c<= c_range.max; c+=step) {
70
+ colors.push(`oklch(${l.value}% ${c.toLocaleString("en")}% ${h.value})`);
71
+ }
72
+
73
+ let html = colors.map(color => `
74
+ <gamut-badge title="${color}" color="${color}"></gamut-badge>`).join("\n");
75
+ colors_container_h.innerHTML = html;
76
+ colors_container.innerHTML = html;
77
+ });
78
+ params.dispatchEvent(new Event("input"));
79
+ </script>
80
+
81
+ No label:
82
+
83
+ <div id=colors_container_h></div>
84
+
85
+ Default display:
86
+ <div id=colors_container></div>
87
+
88
+ ## Reference
89
+
90
+ ### Attributes & Properties
91
+
92
+ | Attribute | Property | Property type | Default value | Description |
93
+ |-----------|----------|---------------|---------------|-------------|
94
+ | `gamuts` | `gamuts` | `string` &#124; `Array<string>` &#124; `object` | `["srgb", "p3", "rec2020", "prophoto"]` | A list of gamuts to use. |
95
+ | `color` | `color` | `Color` &#124; `string` | - | The current color value. |
96
+
97
+ ### Getters
98
+
99
+ These properties are read-only.
100
+
101
+ | Property | Type | Description |
102
+ |----------|------|-------------|
103
+ | `gamut` | `string` | The id of the current gamut (e.g. `srgb`). |
104
+ | `gamutLabel` | `string` | The label of the current gamut (e.g. `sRGB`). |
105
+ | `gamutInfo` | `object` | Metadata about the current gamut (label, id, level). |
106
+
107
+ ### Events
108
+
109
+ | Name | Description |
110
+ |------|-------------|
111
+ | `gamutchange` | Fired when the gamut changes for any reason, and once during initialization. |
112
+
113
+ ### Slots
114
+
115
+ | Slot | Description |
116
+ |------|-------------|
117
+ | _(default)_ | Custom content |
118
+
119
+ ### CSS variables
120
+
121
+ | Variable | Type | Default value | Description |
122
+ |----------|------|---------------|-------------|
123
+ | `--color-green` | `<color>` | | Starting color of the background color scale. Used when the color is within the first gamut. |
124
+ | `--color-yellow` | `<color>` | | Yellow color to be used at around 33.3% of the color scale Will be used for the second gamut if there are four total. |
125
+ | `--color-orange` | `<color>` | | Orange color to be used at around 66.6% of the color scale. Will be used for the third gamut if there are four total. |
126
+ | `--color-red` | `<color>` | | Red color to be used as the last stop of the color scale. Used when the color is within the last gamut. |
127
+ | `--color-red-dark` | `<color>` | | Dark red background color of gamut indicator. Used when the provided color fits none of the specified gamuts. |
128
+ | `--color-invalid` | `<color>` | | Background color of gamut indicator when the provided color is invalid. |
129
+
130
+ #### Output-only CSS variables
131
+
132
+ These variables are set by the component.
133
+ You can write CSS that reacts to them, but you should not set them yourself unless you *really* know what you’re doing.
134
+
135
+ | Variable | Type | Default value | Description |
136
+ |----------|------|---------------|-------------|
137
+ | `--gamut-color` | `<color>` | | Background color of gamut indicator. Will override the color that depends on the actual gamut, so you should rarely use this directly. |
138
+ | `--gamut-level` | `<integer>` | - | The index of the gamut the current color fits in, starting from 0. You can use this in styling, but don’t overwrite it. |
139
+
140
+ ### CSS Parts
141
+
142
+ | Part | Description |
143
+ |------|-------------|
144
+ | `label` | The label of the gamut indicator. Does not apply if the element has content. |
145
+
@@ -0,0 +1,78 @@
1
+ :host {
2
+ --_color-green: var(--color-green, yellowgreen);
3
+ --_color-yellow: var(--color-yellow, gold);
4
+ --_color-orange: var(--color-orange, orange);
5
+ --_color-red: var(--color-red, red);
6
+ --_color-red-dark: var(--color-red-dark, #a00);
7
+ --_color-invalid: var(--color-invalid, hsl(220 10% 60%));
8
+
9
+ /* Low-level scales, i.e. between pairs of our core colors */
10
+ --color-scale-1: color-mix(in oklch, var(--_color-green), var(--_color-yellow) var(--progress-1));
11
+ --color-scale-2: color-mix(in oklch, var(--_color-yellow), var(--_color-orange) var(--progress-2));
12
+ --color-scale-3: color-mix(in oklch, var(--_color-orange), var(--_color-red) var(--progress-3));
13
+
14
+ /* Recursive scales: their only purpose is to select one of the low-level scales, and will only ever have 0%/100% positions
15
+ For N colors there are N-2 + N-3 + ... + 1 = (N-1)(N-2) / 2 of these
16
+ */
17
+ --color-scale-12: color-mix(in oklch, var(--color-scale-1), var(--color-scale-2) var(--progress-12));
18
+ --color-scale-23: color-mix(in oklch, var(--color-scale-2), var(--color-scale-3) var(--progress-23));
19
+ --color-scale-123: color-mix(in oklch, var(--color-scale-12), var(--color-scale-23) var(--progress-123));
20
+
21
+ --gamut-progress: calc(var(--gamut-level) / (var(--gamut-count) - 1));
22
+ --progress-ext: calc(var(--gamut-progress) * 300%);
23
+
24
+ --progress-123: clamp(0%, (var(--progress-ext) - 150%) * infinity, 100%);
25
+ --progress-12: clamp(0%, (var(--progress-ext) - 150% + 75%) * infinity, 100%);
26
+ --progress-23: clamp(0%, (var(--progress-ext) - 150% - 75%) * infinity, 100%);
27
+
28
+ --progress-1: clamp(0%, var(--progress-ext), 100%);
29
+ --progress-2: calc(clamp(100%, var(--progress-ext), 200%) - 100%);
30
+ --progress-3: calc(clamp(200%, var(--progress-ext), 300%) - 200%);
31
+
32
+ --color-level-infinity: var(--_color-red-dark);
33
+ --color: var(--color-scale-123, var(--_color-invalid));
34
+
35
+ display: inline-flex;
36
+ align-items: center;
37
+ justify-content: center;
38
+ border-radius: .2em;
39
+ color: white;
40
+ background-color: var(--color);
41
+ font-weight: bold;
42
+ padding-inline: .4em;
43
+ line-height: 1.4;
44
+
45
+ /* See https://lea.verou.me/blog/2024/contrast-color/ */
46
+ --l: clamp(0, (l / var(--l-threshold, 0.7) - 1) * -infinity, 1);
47
+ color: oklch(from var(--color) var(--l) 0 h);
48
+ }
49
+
50
+ :host([gamut="none"]) {
51
+ background-color: var(--color-level-infinity);
52
+ }
53
+
54
+ #label {
55
+ &::before {
56
+ content: var(--gamut-label, "N/A");
57
+ }
58
+
59
+ @supports not (color: color(from red xyz-d65 y y y)) {
60
+ /* https://miunau.com/posts/dynamic-text-contrast-in-css/ */
61
+ filter: invert(1) grayscale(1) brightness(1.3) contrast(9000);
62
+ mix-blend-mode: luminosity;
63
+ }
64
+
65
+ @supports (color: color(from red xyz-d65 y y y)) {
66
+ /* https://lea.verou.me/blog/2024/contrast-color/ */
67
+ --y-threshold: 0.36;
68
+ --y: clamp(0, (var(--y-threshold) - y) * infinity, 1);
69
+
70
+ color: color(from var(--color) xyz-d65 var(--y) var(--y) var(--y));
71
+ }
72
+ }
73
+
74
+ @property --color {
75
+ syntax: "<color>";
76
+ inherits: true;
77
+ initial-value: transparent;
78
+ }
@@ -0,0 +1,121 @@
1
+ import ColorElement from "../common/color-element.js";
2
+
3
+ const Self = class GamutBadge extends ColorElement {
4
+ static tagName = "gamut-badge";
5
+ static url = import.meta.url;
6
+ static styles = "./gamut-badge.css";
7
+ static shadowTemplate = `
8
+ <slot>
9
+ <span id="label" part="label"></span>
10
+ </slot>`;
11
+
12
+ #label;
13
+
14
+ constructor () {
15
+ super();
16
+
17
+ if (!this.#label) {
18
+ this.#label = this.shadowRoot.querySelector("#label");
19
+ }
20
+ }
21
+
22
+ get gamutLabel () {
23
+ return this.gamutInfo?.label ?? "";
24
+ }
25
+
26
+ propChangedCallback ({name, prop, detail: change}) {
27
+ if (name === "gamuts") {
28
+ this.style.setProperty("--gamut-count", this.gamuts.length - 1);
29
+ }
30
+
31
+ if (name === "gamutInfo") {
32
+ if (this.gamutInfo) {
33
+ this.style.setProperty("--gamut-level", this.gamutInfo.level);
34
+ this.style.setProperty("--gamut-label", `"${ this.gamutInfo.label }"`);
35
+ this.style.setProperty("--gamut-id", `"${ this.gamutInfo.id }"`);
36
+ }
37
+ else {
38
+ this.style.removeProperty("--gamut-level");
39
+ this.style.removeProperty("--gamut-label");
40
+ this.style.removeProperty("--gamut-id");
41
+ }
42
+ }
43
+ }
44
+
45
+ static props = {
46
+ color: {
47
+ get type () {
48
+ return Self.Color;
49
+ },
50
+ },
51
+ gamuts: {
52
+ type: Array,
53
+ default: "srgb, p3, rec2020, prophoto",
54
+ parse (gamuts) {
55
+ if (!gamuts) {
56
+ return [];
57
+ }
58
+
59
+ if (typeof gamuts === "string") {
60
+ gamuts = gamuts.trim().split(/\s*,\s*/);
61
+ }
62
+ else if (!Array.isArray(gamuts) && typeof gamuts === "object") {
63
+ // Object
64
+ return Object.entries(gamuts).map(([id, label]) => ({id, label}));
65
+ }
66
+
67
+ let ret = gamuts.map((gamut, level) => {
68
+ if (gamut?.id && "label" in gamut) {
69
+ // Already in the correct format
70
+ return gamut;
71
+ }
72
+
73
+ gamut = gamut.trim().split(/\s*:\s*/);
74
+ let id = gamut[0];
75
+ let label = gamut[1] ?? Self.Color.spaces[id]?.name ?? id;
76
+ return {id, label, level};
77
+ });
78
+
79
+ if (!ret.find(gamut => gamut.id === "none")) {
80
+ ret.push({
81
+ id: "none",
82
+ get label () {
83
+ return ret[this.level - 1].label + "+";
84
+ },
85
+ level: ret.length,
86
+ });
87
+ }
88
+
89
+ return ret;
90
+ },
91
+ stringify (gamuts) {
92
+ return gamuts.map(({id, label}) => `${ id }: ${ label }`).join(", ");
93
+ },
94
+ },
95
+ gamutInfo: {
96
+ get () {
97
+ if (!this.color) {
98
+ return null;
99
+ }
100
+
101
+ return this.gamuts?.find(gamut => gamut.id === "none" || this.color?.inGamut(gamut.id));
102
+ },
103
+ },
104
+ gamut: {
105
+ type: String,
106
+ get () {
107
+ return this.gamutInfo?.id;
108
+ },
109
+ },
110
+ };
111
+
112
+ static events = {
113
+ gamutchange: {
114
+ propchange: "gamut",
115
+ },
116
+ };
117
+ };
118
+
119
+ Self.define();
120
+
121
+ export default Self;
Binary file
package/src/index.js.njk CHANGED
@@ -2,6 +2,6 @@
2
2
  permalink: "index.js"
3
3
  layout: null
4
4
  ---
5
- {% for name in components -%}
5
+ {% for name, description in components -%}
6
6
  export { default as {{ name | tag_to_class }} } from "./src/{{ name }}/{{ name }}.js";
7
7
  {% endfor %}
@@ -0,0 +1,121 @@
1
+ # `<space-picker>`
2
+
3
+ ## Usage
4
+
5
+ ### Basic usage
6
+
7
+ ```html
8
+ <space-picker value="oklab"></space-picker>
9
+ ```
10
+
11
+ If no color space is provided (via the `value` attribute/property),
12
+ the first one will be used:
13
+
14
+ ```html
15
+ <space-picker></space-picker>
16
+ ```
17
+
18
+ You can specify what color spaces to use:
19
+ ```html
20
+ <space-picker spaces="oklch, p3, srgb" value="p3"></space-picker>
21
+ ```
22
+
23
+ Unknown color spaces also work:
24
+ ```html
25
+ <space-picker spaces="bar, oklch, p3, srgb, foo" value="foo"></space-picker>
26
+ ```
27
+
28
+ ### Custom labels
29
+
30
+ Do you need the picker to show something other than the default color space names, such as color space ids?
31
+ Simply define the `getSpaceLabel()` method on the picker instance, and you are done.
32
+ The method takes a color space object as an argument and returns a string that will be used as the space label.
33
+
34
+ ```html
35
+ <space-picker id="custom_labels"></space-picker>
36
+
37
+ <script>
38
+ custom_labels.getSpaceLabel = space => space.id;
39
+ </script>
40
+ ```
41
+
42
+ ### Grouping the color spaces
43
+
44
+ You can group the color spaces the way you like by specifying the `groupBy` property. Its value is a function
45
+ accepting a color space as an argument and returning the name of a group the color space should be added to:
46
+
47
+ ```html
48
+ <space-picker id="space_picker" spaces="oklch, p3, srgb" value="p3"></space-picker>
49
+ <script>
50
+ space_picker.groupBy = (space) => {
51
+ let isPolar = space.coords.h?.type === "angle";
52
+ return isPolar ? "Polar" : "Rectangular";
53
+ };
54
+ </script>
55
+ ```
56
+
57
+ ### Events
58
+
59
+ You can listen to the `spacechange` event to get either the id of the current color space (the `value` property)
60
+ or the color space object itself (the `selectedSpace` property):
61
+
62
+ ```html
63
+ <space-picker onspacechange="this.nextElementSibling.textContent = this.value"></space-picker>
64
+ <output></output>
65
+ ```
66
+
67
+ ### Dynamic
68
+
69
+ All properties are reactive and can be set programmatically:
70
+ ```html
71
+ <button onclick="this.nextElementSibling.value = 'oklch'">Switch to OKLCh</button>
72
+ <space-picker value="p3"></space-picker>
73
+ ```
74
+
75
+ `<space-picker>` plays nicely with other color elements:
76
+ ```html
77
+ <label style="display: block; margin-block-end: .5em">
78
+ Space:
79
+ <space-picker value="oklch" oninput="this.parentElement.nextElementSibling.space = this.selectedSpace"></space-picker>
80
+ </label>
81
+ <color-slider space="oklch"
82
+ stops="oklch(80% 50% 70), oklch(65% 50% 180)"
83
+ oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
84
+ <color-inline></color-inline>
85
+ ```
86
+
87
+ ## Reference
88
+
89
+ ### Attributes & Properties
90
+
91
+ | Attribute | Property | Property type | Default value | Description |
92
+ |-----------|-----------|-------------------------------------|-----------------------------------------|-----------------------------------------------------------------------------------------------------------|
93
+ | `value` | `value` | `string` | The first color space in `this.spaces`. | The current value of the picker. |
94
+ | `spaces` | `spaces` | `string` &#124; `Array<ColorSpace>` | All known color spaces. | Comma-separated list of color spaces to use. |
95
+ | — | `groupBy` | `Function` | — | Function to group the color spaces. Takes a color space object as an argument and returns the group name. |
96
+ | – | `getSpaceLabel` | `Function` | `space => space.name` | Function to get the label for a color space. Takes a color space object as an argument and returns its label. |
97
+
98
+ ### Getters
99
+
100
+ These properties are read-only.
101
+
102
+ | Property | Type | Description |
103
+ |-----------------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
104
+ | `selectedSpace` | `ColorSpace` | Color space object corresponding to the picker current value. |
105
+ | `groups` | `Object` | Object containing the color spaces grouped by the `groupBy()` function. Keys are group names, values are objects with space ids as keys, and corresponding color space objects are values. |
106
+
107
+
108
+ ### Events
109
+
110
+ | Name | Description |
111
+ |---------------|------------------------------------------------------------------------------|
112
+ | `input` | Fired when the space changes due to user action. |
113
+ | `change` | Fired when the space changes due to user action. |
114
+ | `valuechange` | Fired when the value changes for any reason, and once during initialization. |
115
+ | `spacechange` | Fired when the space changes for any reason, and once during initialization. |
116
+
117
+ ### Parts
118
+
119
+ | Name | Description |
120
+ |----------|----------------------------------|
121
+ | `base` | The internal `<select>` element. |
@@ -0,0 +1,23 @@
1
+ :host {
2
+ --border-width: 1px;
3
+ --border-color: rgb(0 0 0 / .2);
4
+ --border-radius: .2em;
5
+
6
+ padding: .3em .5em;
7
+
8
+ border-radius: var(--border-radius);
9
+ border: var(--border-width) solid var(--border-color);
10
+ }
11
+
12
+ #picker {
13
+ font: inherit;
14
+ color: inherit;
15
+ background: inherit;
16
+ border: none;
17
+ field-sizing: content;
18
+ cursor: pointer;
19
+
20
+ &:focus:not(:focus-visible) {
21
+ outline: none;
22
+ }
23
+ }