color-elements 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +49 -12
  2. package/_build/copy-config.js +11 -1
  3. package/_build/copy-config.json +2 -2
  4. package/_build/eleventy.js +27 -1
  5. package/_build/filters-extra.js +3 -0
  6. package/_includes/component.njk +69 -0
  7. package/_includes/partials/_nav-links.njk +19 -0
  8. package/_redirects +9 -2
  9. package/assets/css/style.css +78 -1
  10. package/assets/js/index.js +11 -10
  11. package/data/components.json +12 -0
  12. package/debug.html +447 -0
  13. package/eslint.config.js +316 -0
  14. package/index.js +10 -4
  15. package/logo.svg +22 -44
  16. package/package.json +12 -5
  17. package/src/channel-picker/README.md +103 -0
  18. package/src/channel-picker/channel-picker.css +31 -0
  19. package/src/channel-picker/channel-picker.js +168 -0
  20. package/src/channel-picker/channel-picker.webp +0 -0
  21. package/src/channel-slider/README.md +165 -0
  22. package/src/channel-slider/channel-slider.css +61 -0
  23. package/src/channel-slider/channel-slider.js +287 -0
  24. package/src/channel-slider/channel-slider.webp +0 -0
  25. package/src/color-chart/README.md +129 -0
  26. package/src/color-chart/color-chart-global.css +97 -0
  27. package/src/color-chart/color-chart.css +112 -0
  28. package/src/color-chart/color-chart.js +441 -0
  29. package/src/color-chart/color-chart.webp +0 -0
  30. package/src/color-inline/README.md +72 -0
  31. package/{color-swatch/color-swatch.css → src/color-inline/color-inline.css} +11 -4
  32. package/src/color-inline/color-inline.js +85 -0
  33. package/src/color-inline/color-inline.webp +0 -0
  34. package/src/color-inline/style.css +14 -0
  35. package/src/color-picker/README.md +150 -0
  36. package/src/color-picker/color-picker.css +35 -0
  37. package/src/color-picker/color-picker.js +251 -0
  38. package/src/color-picker/color-picker.webp +0 -0
  39. package/src/color-scale/README.md +75 -0
  40. package/src/color-scale/color-scale.css +40 -0
  41. package/src/color-scale/color-scale.js +164 -0
  42. package/src/color-scale/color-scale.webp +0 -0
  43. package/src/color-slider/README.md +220 -0
  44. package/src/color-slider/color-slider.css +174 -0
  45. package/src/color-slider/color-slider.js +320 -0
  46. package/src/color-slider/color-slider.webp +0 -0
  47. package/src/color-swatch/README.md +359 -0
  48. package/src/color-swatch/color-swatch.css +230 -0
  49. package/src/color-swatch/color-swatch.js +252 -0
  50. package/src/color-swatch/color-swatch.webp +0 -0
  51. package/src/common/color-element.js +86 -0
  52. package/src/common/dom.js +61 -0
  53. package/src/common/util.js +55 -0
  54. package/src/gamut-badge/README.md +145 -0
  55. package/src/gamut-badge/gamut-badge.css +78 -0
  56. package/src/gamut-badge/gamut-badge.js +121 -0
  57. package/src/gamut-badge/gamut-badge.webp +0 -0
  58. package/src/index.js.njk +7 -0
  59. package/src/space-picker/README.md +121 -0
  60. package/src/space-picker/space-picker.css +23 -0
  61. package/src/space-picker/space-picker.js +213 -0
  62. package/src/space-picker/space-picker.webp +0 -0
  63. package/src/src.json +3 -0
  64. package/_data/eleventyComputed.11tydata.js +0 -29
  65. package/color-gamut/README.md +0 -75
  66. package/color-gamut/color-gamut.js +0 -172
  67. package/color-gamut/style.css +0 -32
  68. package/color-slider/README.md +0 -84
  69. package/color-slider/color-slider.js +0 -79
  70. package/color-slider/style.css +0 -65
  71. package/color-swatch/color-swatch.js +0 -79
  72. package/color-swatch/index.njk +0 -40
  73. package/common/attributes.js +0 -68
  74. package/common/color.js +0 -10
  75. package/css-color/css-color.js +0 -256
  76. package/css-color/index.njk +0 -43
  77. package/css-color/style.css +0 -67
  78. package/lib/README.md +0 -4
  79. package/lib/colorjs.io/LICENSE +0 -21
  80. package/lib/colorjs.io/README.json +0 -3
  81. package/lib/colorjs.io/README.md +0 -257
  82. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  83. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  84. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  85. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  86. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  88. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  90. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  94. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  96. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  98. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  100. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  101. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  102. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  103. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  104. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  105. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  106. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  107. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  108. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  109. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  110. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  111. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  112. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  113. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  114. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  115. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  116. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  117. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  118. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  119. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  120. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  121. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  122. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  123. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  124. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  125. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  126. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  127. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  128. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  129. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  130. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  131. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  132. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  133. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  134. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  135. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  136. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  137. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  138. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  139. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  140. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  141. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  142. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  143. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  144. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  145. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  146. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  147. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  148. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  149. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  150. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  151. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  152. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  153. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  154. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  155. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  156. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  157. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  158. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  159. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  160. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  161. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  162. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  163. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  164. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  165. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  166. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  167. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  168. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  169. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  170. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  171. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  172. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  173. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  174. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  175. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  176. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  177. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  178. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  179. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  180. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  181. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  182. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  183. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  184. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  185. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  186. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  187. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  188. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  189. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  190. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  191. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  192. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  193. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  194. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  195. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  196. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  197. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  198. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  199. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  200. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  201. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  202. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  203. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  204. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  205. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  206. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  207. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  208. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  209. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  210. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  211. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  212. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  213. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  214. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  215. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  216. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  217. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  218. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  219. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  220. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  221. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  222. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  223. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  224. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  225. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  226. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  227. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  228. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  229. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  230. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  231. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  232. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  233. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  234. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  235. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  236. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  237. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  238. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  239. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  240. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  241. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  242. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  243. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  244. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  245. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  246. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  247. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  248. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  249. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  250. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  251. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  252. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  271. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  272. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  273. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  274. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  275. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  276. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  277. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  278. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  279. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  280. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  281. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  282. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  283. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  284. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  285. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  286. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  287. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  288. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  289. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  290. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  291. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  292. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  293. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  294. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  295. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  297. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  298. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.cjs +0 -5759
  301. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  302. package/lib/colorjs.io/dist/color.global.js +0 -5760
  303. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  304. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  305. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  306. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  307. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  308. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  309. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  310. package/lib/colorjs.io/dist/color.js +0 -5755
  311. package/lib/colorjs.io/dist/color.js.map +0 -1
  312. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  313. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  314. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  315. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  316. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  317. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  318. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  319. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  320. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  321. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  322. package/lib/colorjs.io/dist/color.min.js +0 -2
  323. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  324. package/lib/colorjs.io/package.json +0 -113
  325. package/lib/colorjs.io/src/CATs.js +0 -131
  326. package/lib/colorjs.io/src/adapt.js +0 -62
  327. package/lib/colorjs.io/src/angles.js +0 -44
  328. package/lib/colorjs.io/src/chromaticity.js +0 -33
  329. package/lib/colorjs.io/src/clone.js +0 -7
  330. package/lib/colorjs.io/src/color.js +0 -201
  331. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  332. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  333. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  334. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  335. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  336. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  337. package/lib/colorjs.io/src/contrast/index.js +0 -6
  338. package/lib/colorjs.io/src/contrast.js +0 -28
  339. package/lib/colorjs.io/src/defaults.js +0 -12
  340. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  341. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  342. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  343. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  344. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  345. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  346. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  347. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  348. package/lib/colorjs.io/src/deltaE.js +0 -19
  349. package/lib/colorjs.io/src/display.js +0 -83
  350. package/lib/colorjs.io/src/distance.js +0 -21
  351. package/lib/colorjs.io/src/equals.js +0 -10
  352. package/lib/colorjs.io/src/get.js +0 -11
  353. package/lib/colorjs.io/src/getAll.js +0 -20
  354. package/lib/colorjs.io/src/getColor.js +0 -36
  355. package/lib/colorjs.io/src/hooks.js +0 -37
  356. package/lib/colorjs.io/src/inGamut.js +0 -25
  357. package/lib/colorjs.io/src/index-fn.js +0 -28
  358. package/lib/colorjs.io/src/index.js +0 -38
  359. package/lib/colorjs.io/src/interpolation.js +0 -222
  360. package/lib/colorjs.io/src/keywords.js +0 -158
  361. package/lib/colorjs.io/src/luminance.js +0 -27
  362. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  363. package/lib/colorjs.io/src/parse.js +0 -198
  364. package/lib/colorjs.io/src/rgbspace.js +0 -64
  365. package/lib/colorjs.io/src/serialize.js +0 -86
  366. package/lib/colorjs.io/src/set.js +0 -33
  367. package/lib/colorjs.io/src/setAll.js +0 -12
  368. package/lib/colorjs.io/src/space-accessors.js +0 -86
  369. package/lib/colorjs.io/src/space.js +0 -440
  370. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  371. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  372. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  373. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  374. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  375. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  376. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  377. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  378. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  379. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  380. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  381. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  382. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  383. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  384. package/lib/colorjs.io/src/spaces/index.js +0 -8
  385. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  386. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  387. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  388. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  389. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  390. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  391. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  392. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  393. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  394. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  395. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  396. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  397. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  398. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  399. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  400. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  401. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  402. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  403. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  404. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  405. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  406. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  407. package/lib/colorjs.io/src/to.js +0 -26
  408. package/lib/colorjs.io/src/toGamut.js +0 -310
  409. package/lib/colorjs.io/src/util.js +0 -254
  410. package/lib/colorjs.io/src/variations.js +0 -14
  411. package/lib/colorjs.io/types/index.d.cts +0 -4
  412. package/lib/colorjs.io/types/index.d.ts +0 -42
  413. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  414. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  415. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  416. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  417. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  418. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  419. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  420. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  421. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  422. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  423. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  424. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  425. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  426. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  427. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  428. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  429. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  430. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  431. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  432. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  433. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  434. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  435. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  436. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  437. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  438. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  439. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  440. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  441. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  442. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  443. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  444. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  445. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  446. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  447. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  448. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  449. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  450. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  451. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  452. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  453. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  454. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  455. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  456. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  457. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  458. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  459. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  460. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  471. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  472. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  473. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  478. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  479. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  480. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  481. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  482. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  483. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  484. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  485. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  486. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  487. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  488. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  489. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  490. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  491. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  492. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  493. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  494. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  495. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  496. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  497. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  498. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
@@ -0,0 +1,230 @@
1
+ :host {
2
+ --_transparency-cell-size: var(--transparency-cell-size, .5em);
3
+ --_transparency-background: var(--transparency-background, transparent);
4
+ --_transparency-darkness: var(--transparency-darkness, 5%);
5
+ --_transparency-grid: var(--transparency-grid,
6
+ repeating-conic-gradient(transparent 0 25%, rgb(0 0 0 / var(--_transparency-darkness)) 0 50%)
7
+ 0 0 / calc(2 * var(--_transparency-cell-size)) calc(2 * var(--_transparency-cell-size))
8
+ content-box border-box var(--_transparency-background)
9
+ );
10
+
11
+ position: relative;
12
+ display: inline-flex;
13
+ gap: .3em;
14
+ width: fit-content;
15
+ margin: .3em;
16
+ border-radius: .2rem;
17
+ }
18
+
19
+ :host([size="large"]) {
20
+ flex-flow: column;
21
+ inline-size: 11em;
22
+ min-block-size: 6em;
23
+ contain: inline-size;
24
+ container-name: color-swatch;
25
+ container-type: inline-size;
26
+ }
27
+
28
+ slot {
29
+ all: inherit;
30
+ display: contents;
31
+ }
32
+
33
+ #gamut {
34
+ font-size: 80%;
35
+
36
+ &:is(:host([size="large"]) *) {
37
+ position: absolute;
38
+ top: 0;
39
+ right: 0;
40
+ margin: .5rem;
41
+ }
42
+
43
+ &:not(:host([size="large"]) *) {
44
+ @container style(--details-style: compact) {
45
+ position: absolute;
46
+ font-size: 50%;
47
+ top: 0;
48
+ right: 0;
49
+ margin: .2rem;
50
+ }
51
+
52
+ &:is(.static *) {
53
+ align-self: baseline;
54
+ }
55
+ }
56
+
57
+
58
+
59
+ &[style*="--gamut-level: 0"] {
60
+ display: none;
61
+ }
62
+ }
63
+
64
+ [part="info"] {
65
+ margin: 0;
66
+ display: inline-flex;
67
+ display: none;
68
+ gap: .5em;
69
+
70
+ &:is(:host([size="large"]) &) {
71
+ display: grid;
72
+ grid-template-columns: max-content auto;
73
+ gap: .1em .2em;
74
+ font-size: max(9px, 80%);
75
+ justify-content: start;
76
+
77
+ .coord {
78
+ display: contents;
79
+ }
80
+ }
81
+
82
+ .coord {
83
+ display: flex;
84
+ gap: .2em;
85
+
86
+ dd {
87
+ margin: 0;
88
+ font-weight: bold;
89
+ font-variant-numeric: tabular-nums;
90
+ }
91
+ }
92
+ }
93
+
94
+ [part="details"] {
95
+ display: flex;
96
+ flex-flow: inherit;
97
+ gap: inherit;
98
+
99
+ &.static {
100
+ &:is(:host([size="large"]) *) {
101
+ background: white;
102
+ }
103
+ }
104
+
105
+ &:not(:host([size="large"]) *) {
106
+ align-items: baseline;
107
+ }
108
+
109
+ @container color-swatch (width <= 5rem) {
110
+ font-size: 80%;
111
+ }
112
+
113
+ @container style(--details-style: compact) {
114
+ --_border-color: var(--border-color, color-mix(in oklab, buttonborder 20%, oklab(none none none / 0%)));
115
+ --_pointer-height: var(--pointer-height, .5em);
116
+ --_transition-duration: var(--transition-duration, 400ms);
117
+ --_details-popup-width: var(--details-popup-width, max-content);
118
+
119
+ position: absolute;
120
+ left: 50%;
121
+ z-index: 2;
122
+ translate: -50% 0;
123
+ bottom: 100%;
124
+ margin-bottom: calc(var(--_pointer-height) * .8);
125
+ width: var(--_details-popup-width);
126
+ background: canvas;
127
+ border: 1px solid var(--_border-color);
128
+ padding: .6em 1em;
129
+ border-radius: .2rem;
130
+ box-shadow: 0 .05em 1em -.7em black;
131
+ transition: var(--_transition-duration) allow-discrete;
132
+ transition-property: all, display;
133
+ transition-delay: 0s, var(--_transition-duration);
134
+ transform-origin: 50% calc(100% + var(--_pointer-height));
135
+
136
+ &[popover] {
137
+ /* Make the triangle pointer visible */
138
+ overflow: visible;
139
+
140
+ /* Bring the popover back on the screen */
141
+ position: fixed;
142
+ inset: unset;
143
+
144
+ /* And position it relative to the parent swatch */
145
+ left: var(--_popover-left);
146
+ top: var(--_popover-top);
147
+ translate: -50% -100%;
148
+ }
149
+
150
+ /* Triangle pointer */
151
+ &::before {
152
+ content: "";
153
+ position: absolute;
154
+ top: 100%;
155
+ left: 50%;
156
+ translate: -50% -50%;
157
+ aspect-ratio: 1;
158
+ height: calc(var(--_pointer-height) * sqrt(2));
159
+ background: inherit;
160
+ border: inherit;
161
+ rotate: -45deg;
162
+ clip-path: polygon(0 0, 0 100%, 100% 100%);
163
+ }
164
+
165
+ &:not(:is(:host(:hover), :host(:focus-within), :host(:active), :host(:target), :host([open])) *),
166
+ &:is(:host([open=false]) *) {
167
+ display: none;
168
+ opacity: 0;
169
+ scale: 0;
170
+ }
171
+ }
172
+ }
173
+
174
+ [part="color"] {
175
+ display: flex;
176
+ gap: .2em;
177
+ }
178
+
179
+ slot:not([name]) {
180
+ &::slotted(input) {
181
+ display: flex;
182
+ box-sizing: border-box;
183
+ min-width: 10ch;
184
+ font: inherit;
185
+ }
186
+
187
+ &:is(:host([size="large"]) *)::slotted(input) {
188
+ width: 100%;
189
+ }
190
+ }
191
+
192
+ [part="color-wrapper"],
193
+ slot[name=swatch]::slotted(*),
194
+ #swatch {
195
+ border-radius: inherit;
196
+ }
197
+
198
+ slot[name=swatch]::slotted(*),
199
+ #swatch {
200
+ flex: 1;
201
+ display: flex;
202
+ flex-flow: column;
203
+ align-items: center;
204
+ justify-content: center;
205
+ padding: .5em;
206
+ display: flex;
207
+ flex-flow: column;
208
+ flex: 1;
209
+ background:
210
+ linear-gradient(var(--color) 0 100%),
211
+ var(--_transparency-grid);
212
+
213
+ &:is(:host([size="large"]) *) {
214
+ min-block-size: 3em;
215
+ }
216
+
217
+ &:not(:host([size="large"]) *) {
218
+ display: flex;
219
+ min-inline-size: 2em;
220
+ min-block-size: 1em;
221
+ font-size: 65%;
222
+ flex: 1;
223
+ }
224
+ }
225
+
226
+ slot[name=swatch-content] {
227
+ /* See https://lea.verou.me/blog/2024/contrast-color/ */
228
+ --l: clamp(0, (var(--l-threshold, 0.7) / l - 1) * infinity, 1);
229
+ color: oklch(from var(--color) var(--l) 0 h);
230
+ }
@@ -0,0 +1,252 @@
1
+ import ColorElement from "../common/color-element.js";
2
+ import "../gamut-badge/gamut-badge.js";
3
+
4
+ let importIncrementable;
5
+
6
+ const Self = class ColorSwatch extends ColorElement {
7
+ static tagName = "color-swatch";
8
+ static url = import.meta.url;
9
+ static dependencies = new Set(["gamut-badge"]);
10
+ static shadowStyle = true;
11
+ static shadowTemplate = `
12
+ <slot name="swatch">
13
+ <div id="swatch" part="swatch">
14
+ <slot name="swatch-content"></slot>
15
+ </div>
16
+ </slot>
17
+ <div id="wrapper" part="details">
18
+ <slot name="before"></slot>
19
+ <div part="label"></div>
20
+ <div part="color">
21
+ <slot></slot>
22
+ </div>
23
+ <slot name="after"></slot>
24
+ </div>`;
25
+
26
+ constructor () {
27
+ super();
28
+
29
+ this._el = {
30
+ wrapper: this.shadowRoot.querySelector("#wrapper"),
31
+ label: this.shadowRoot.querySelector("[part=label]"),
32
+ colorWrapper: this.shadowRoot.querySelector("[part=color]"),
33
+ };
34
+
35
+ this._slots = {
36
+ default: this.shadowRoot.querySelector("slot:not([name])"),
37
+ };
38
+
39
+ this.#updateStatic();
40
+ this._slots.default.addEventListener("slotchange", evt => this.#updateStatic());
41
+ }
42
+
43
+ #updateStatic () {
44
+ let previousInput = this._el.input;
45
+ let input = this._el.input = this.querySelector("input");
46
+
47
+ this.static = !input;
48
+
49
+ // This should eventually be a custom state
50
+ this._el.wrapper.classList.toggle("static", this.static);
51
+
52
+ if (input && input !== previousInput) {
53
+ importIncrementable ??= import("https://incrementable.verou.me/incrementable.mjs").then(m => m.default);
54
+ importIncrementable?.then(Incrementable => new Incrementable(input));
55
+
56
+ input.addEventListener("input", evt => {
57
+ this.value = evt.target.value;
58
+ });
59
+ }
60
+ }
61
+
62
+ get gamut () {
63
+ return this._el.gamutIndicator.gamut;
64
+ }
65
+
66
+ get swatchTextContent () {
67
+ // Children that are not assigned to another slot
68
+ return [...this.childNodes].filter(n => !n.slot).map(n => n.textContent).join("").trim();
69
+ }
70
+
71
+ propChangedCallback ({name, prop, detail: change}) {
72
+ let input = this._el.input;
73
+
74
+ if (name === "gamuts") {
75
+ if (this.gamuts === "none") {
76
+ this._el.gamutIndicator?.remove();
77
+ this._el.gamutIndicator = null;
78
+ }
79
+ else if (this.gamuts) {
80
+ if (!this._el.gamutIndicator) {
81
+ this._el.gamutIndicator = Object.assign(document.createElement("gamut-badge"), {
82
+ id: "gamut",
83
+ part: "gamut",
84
+ exportparts: "label: gamutLabel",
85
+ gamuts: this.gamuts,
86
+ color: this.color,
87
+ });
88
+
89
+ this.shadowRoot.append(this._el.gamutIndicator);
90
+
91
+ this._el.gamutIndicator.addEventListener("gamutchange", evt => {
92
+ let gamut = this._el.gamutIndicator.gamut;
93
+ this.setAttribute("gamut", gamut);
94
+ this.dispatchEvent(new CustomEvent("gamutchange", {
95
+ detail: gamut,
96
+ }));
97
+ });
98
+ }
99
+ else {
100
+ this._el.gamutIndicator.gamuts = this.gamuts;
101
+ }
102
+ }
103
+ }
104
+
105
+ if (name === "value") {
106
+ if (input && (!input.value || input.value !== this.value)) {
107
+ input.value = this.value;
108
+ }
109
+ }
110
+
111
+ if (name === "label") {
112
+ if (this.label.length && this.label !== this.swatchTextContent) {
113
+ this._el.label.textContent = this.label;
114
+ }
115
+ else {
116
+ this._el.label.textContent = "";
117
+ }
118
+ }
119
+
120
+ if (name === "color") {
121
+ let isValid = this.color !== null || !this.value;
122
+
123
+ input?.setCustomValidity(isValid ? "" : "Invalid color");
124
+
125
+ if (this._el.gamutIndicator) {
126
+ this._el.gamutIndicator.color = this.color;
127
+ }
128
+
129
+ let colorString = this.color?.display();
130
+ this.style.setProperty("--color", colorString);
131
+ }
132
+
133
+ if (name === "colorInfo") {
134
+ if (!this.colorInfo) {
135
+ return;
136
+ }
137
+
138
+ this._el.info ??= Object.assign(document.createElement("dl"), {part: "info"});
139
+ if (!this._el.info.parentNode) {
140
+ this._el.colorWrapper.after(this._el.info);
141
+ }
142
+
143
+ let info = [];
144
+ for (let coord of this.info) {
145
+ let [label, channel] = Object.entries(coord)[0];
146
+
147
+ let value = this.colorInfo[channel];
148
+ if (value === undefined) {
149
+ continue;
150
+ }
151
+
152
+ value = typeof value === "number" ? Number(value.toPrecision(4)) : value;
153
+
154
+ info.push(`<div class="coord"><dt>${ label }</dt><dd>${ value }</dd></div>`);
155
+ }
156
+
157
+ this._el.info.innerHTML = info.join("\n");
158
+ }
159
+ }
160
+
161
+ static props = {
162
+ size: {},
163
+ open: {},
164
+ gamuts: {
165
+ default: "srgb, p3, rec2020: P3+, prophoto: PP",
166
+ },
167
+ value: {
168
+ type: String,
169
+ default () {
170
+ if (this._el.input) {
171
+ return this._el.input.value;
172
+ }
173
+
174
+ return this.swatchTextContent;
175
+ },
176
+ reflect: {
177
+ from: true,
178
+ },
179
+ },
180
+ label: {
181
+ type: String,
182
+ default () {
183
+ return this.swatchTextContent;
184
+ },
185
+ convert (value) {
186
+ return value.trim();
187
+ },
188
+ },
189
+ color: {
190
+ get type () {
191
+ return ColorSwatch.Color;
192
+ },
193
+ get () {
194
+ if (!this.value) {
195
+ return null;
196
+ }
197
+
198
+ return ColorSwatch.Color.get(this.value);
199
+ },
200
+ set (value) {
201
+ this.value = ColorSwatch.Color.get(value)?.display();
202
+ },
203
+ reflect: false,
204
+ },
205
+ info: {
206
+ type: {
207
+ is: Array,
208
+ values: {
209
+ is: Object,
210
+ defaultKey: (coord, i) => ColorSwatch.Color.Space.resolveCoord(coord)?.name,
211
+ },
212
+ },
213
+ default: [],
214
+ reflect: {
215
+ from: true,
216
+ },
217
+ },
218
+ colorInfo: {
219
+ get () {
220
+ if (!this.info.length || !this.color) {
221
+ return;
222
+ }
223
+
224
+ let ret = {};
225
+ for (let coord of this.info) {
226
+ let [label, channel] = Object.entries(coord)[0];
227
+ try {
228
+ ret[channel] = this.color.get(channel);
229
+ }
230
+ catch (e) {
231
+ console.error(e);
232
+ }
233
+ }
234
+
235
+ return ret;
236
+ },
237
+ },
238
+ };
239
+
240
+ static events = {
241
+ colorchange: {
242
+ propchange: "color",
243
+ },
244
+ valuechange: {
245
+ propchange: "value",
246
+ },
247
+ };
248
+ };
249
+
250
+ Self.define();
251
+
252
+ export default Self;
@@ -0,0 +1,86 @@
1
+ import NudeElement from "../../node_modules/nude-element/src/Element.js";
2
+ import { getType, wait } from "./util.js";
3
+
4
+ const Self = class ColorElement extends NudeElement {
5
+ // TODO make lazy
6
+ static Color;
7
+ static all = {};
8
+ static dependencies = new Set();
9
+
10
+ constructor () {
11
+ super();
12
+
13
+ if (this.constructor.shadowTemplate !== undefined) {
14
+ this.attachShadow({mode: "open"});
15
+ this.shadowRoot.innerHTML = this.constructor.shadowTemplate;
16
+ }
17
+ }
18
+
19
+ static async define () {
20
+ Self.all[this.tagName] = this;
21
+ let colorTags = Object.keys(Self.all);
22
+
23
+ if (this.shadowTemplate) {
24
+ // TODO find dependencies
25
+ let colorTagRegex = RegExp(`(?<=</)(${ colorTags.join("|") })(?=>)`, "g");
26
+ (this.shadowTemplate.match(colorTagRegex) ?? []).forEach(tag => {
27
+ this.dependencies ??= new Set();
28
+ this.dependencies.add(tag);
29
+ });
30
+
31
+ if (this.shadowStyle) {
32
+ let url = this.shadowStyle;
33
+ url = url === true ? `./${this.tagName}.css` : url;
34
+ url = new URL(url, this.url);
35
+ this.shadowTemplate = `<style>@import url("${ url }")</style>` + "\n" + this.shadowTemplate;
36
+ }
37
+ }
38
+
39
+ // Hide elements before they are defined
40
+ let style = document.getElementById("color-element-styles")
41
+ ?? Object.assign(document.createElement("style"), {id: "color-element-styles"});
42
+ style.textContent = `:is(${ colorTags.join(", ") }):not(:defined) {display: none}`;
43
+ if (!style.parentNode) {
44
+ document.head.append(style);
45
+ }
46
+
47
+ if (this.dependencies.size > 0) {
48
+ await Promise.all([...this.dependencies].map(tag => customElements.whenDefined(tag)));
49
+ }
50
+ else {
51
+ // Give other code a chance to overwrite Self.Color
52
+ await wait();
53
+ }
54
+
55
+ if (!Self.Color) {
56
+ let specifier;
57
+
58
+ try {
59
+ // Is already loaded? (e.g. via an import map, or if we're in Node)
60
+ import.meta.resolve("colorjs.io");
61
+ specifier = "colorjs.io";
62
+ }
63
+ catch (e) {
64
+ // specifier = "../../node_modules/colorjs.io/dist/color.js";
65
+ specifier = "https://colorjs.io/dist/color.js";
66
+ }
67
+
68
+ Self.Color = import(specifier).then(module => module.default);
69
+ }
70
+
71
+ // We can't just use top level await, see https://bugs.webkit.org/show_bug.cgi?id=242740
72
+ if (getType(Self.Color) === "Promise") {
73
+ let ColorPending = Self.Color;
74
+ let Color = await ColorPending;
75
+
76
+ if (Self.Color === ColorPending) {
77
+ // Hasn't changed
78
+ Self.Color = Color;
79
+ }
80
+ }
81
+
82
+ customElements.define(this.tagName, this);
83
+ }
84
+ };
85
+
86
+ export default Self;
@@ -0,0 +1,61 @@
1
+ export function named (host, attributes = ["id", "part"]) {
2
+ let ret = {};
3
+ let selector = attributes.map(attr => `[${ attr }]`).join(", ");
4
+
5
+ for (let el of host.shadowRoot.querySelectorAll(selector)) {
6
+ // Get the value of the first attribute in attributes that has a value
7
+ let attribute = attributes.find(attr => el.hasAttribute(attr));
8
+ ret[el[attribute]] = el;
9
+ }
10
+
11
+ return ret;
12
+ }
13
+
14
+ export function slots (host) {
15
+ let ret = {};
16
+
17
+ for (let slot of host.shadowRoot.querySelectorAll("slot")) {
18
+ ret[slot.name] = slot;
19
+
20
+ if (!slot.name || slot.dataset.default !== undefined) {
21
+ ret.default = slot;
22
+ }
23
+ }
24
+
25
+ return ret;
26
+ }
27
+
28
+ export function toSlots ({
29
+ slots = this._slots,
30
+ slotElements = slots ? Object.values(slots) : Array.from(this.shadowRoot.querySelectorAll("slot")),
31
+ }) {
32
+ let children = this.childNodes;
33
+ let assignments = new WeakMap();
34
+
35
+ if (!slots && slotElements) {
36
+ slots = Object.fromEntries(slotElements.map(slot => [slot.name, slot]));
37
+ }
38
+
39
+ // Assign to slots
40
+ for (let child of children) {
41
+ let assignedSlot;
42
+
43
+ if (child.slot) {
44
+ // Explicit slot
45
+ assignedSlot = slots[child.slot];
46
+ }
47
+ else if (child.matches) {
48
+ assignedSlot = slotElements.find(slot => child.matches(slot.dataset.assign));
49
+ }
50
+
51
+ assignedSlot ??= slots.default;
52
+ let all = assignments.get(assignedSlot) ?? new Set();
53
+ all.add(child);
54
+ assignments.set(assignedSlot, all);
55
+ }
56
+
57
+ for (let slot of slotElements) {
58
+ let all = assignments.get(slot) ?? new Set();
59
+ slot.assign(...all);
60
+ }
61
+ }
@@ -0,0 +1,55 @@
1
+ export async function wait (ms) {
2
+ if (ms === undefined) {
3
+ return new Promise(resolve => requestAnimationFrame(resolve));
4
+ }
5
+
6
+ return new Promise(resolve => setTimeout(resolve, ms));
7
+ }
8
+
9
+ /**
10
+ * Compute the ideal step for a range, to be used as a default in spinners and sliders
11
+ * @param {number} min
12
+ * @param {number} max
13
+ * @param {options} options
14
+ */
15
+ export function getStep (min, max, {minSteps = 100, maxStep = 1} = {}) {
16
+ let range = Math.abs(max - min);
17
+ let step = range / minSteps;
18
+
19
+ // Find nearest power of 10 that is < step
20
+ step = 10 ** Math.floor(Math.log10(step));
21
+
22
+ return step > maxStep ? maxStep : step;
23
+ }
24
+
25
+ export function sortObject (obj, fn) {
26
+ if (!obj) {
27
+ return obj;
28
+ }
29
+
30
+ return Object.fromEntries(Object.entries(obj).sort(fn));
31
+ }
32
+
33
+ export function mapObject (obj, fn) {
34
+ if (!obj) {
35
+ return obj;
36
+ }
37
+
38
+ return Object.fromEntries(Object.entries(obj).map(fn));
39
+ }
40
+
41
+ export function pick (obj, properties) {
42
+ if (!properties || !obj) {
43
+ return obj;
44
+ }
45
+
46
+ return Object.fromEntries(Object.entries(obj).filter(([key]) => properties.includes(key)));
47
+ }
48
+
49
+ export function getType (value) {
50
+ if (value === null || value === undefined) {
51
+ return value + "";
52
+ }
53
+
54
+ return Object.prototype.toString.call(value).slice(8, -1);
55
+ }