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,263 +1,243 @@
1
- import Color from "../common/color.js";
2
- import defineEvents from "../../node_modules/nude-element/src/events/defineEvents.js";
3
- import "../color-gamut/color-gamut.js";
1
+ import ColorElement from "../common/color-element.js";
2
+ import "../gamut-badge/gamut-badge.js";
4
3
 
5
4
  let importIncrementable;
6
5
 
7
- const Self = class ColorSwatch extends HTMLElement {
8
- static initQueue = [];
9
-
10
- #dom = {};
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 styles = "./color-swatch.css";
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>`;
11
25
 
12
26
  constructor () {
13
27
  super();
14
- this.attachShadow({mode: "open"});
15
- let styleURL = new URL("./color-swatch.css", import.meta.url);
16
- this.shadowRoot.innerHTML = `
17
- <style>@import url("${ styleURL }")</style>
18
- <slot name="swatch">
19
- <div id="swatch" part="swatch">
20
- <slot name="swatch-content"></slot>
21
- </div>
22
- </slot>
23
- <div id="wrapper">
24
- <slot name="before"></slot>
25
- <div part="color-wrapper">
26
- <slot></slot>
27
- </div>
28
- <slot name="after"></slot>
29
- </div>
30
- `;
31
- }
32
28
 
33
- #initialized;
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
34
 
35
- connectedCallback () {
36
- if (!this.#initialized) {
37
- this.#initialize();
38
- }
39
-
40
- this.constructor.initQueue.forEach(init => init.call(this));
41
-
42
- // This should eventually be a custom state
43
- this.#dom.wrapper.classList.toggle("static", !this.#dom.input);
44
-
45
- if (this.#dom.input) {
46
- if (!this.#dom.input.incrementable) {
47
- // Increment numbers by keyboard arrow keys
48
- importIncrementable.then(Incrementable => new Incrementable(this.#dom.input));
49
- }
50
- }
35
+ this._slots = {
36
+ default: this.shadowRoot.querySelector("slot:not([name])"),
37
+ };
51
38
 
52
- this.#render();
39
+ this.#updateStatic();
40
+ this._slots.default.addEventListener("slotchange", evt => this.#updateStatic());
53
41
  }
54
42
 
55
- #errorTimeout;
56
- #cs;
57
- #scopeRoot;
58
-
59
- // Gets called when the element is connected for the first time
60
- #initialize ({force} = {}) {
61
- if (!force && this.#initialized) {
62
- return;
63
- }
64
-
65
- this.#initialized = true;
43
+ #updateStatic () {
44
+ let previousInput = this._el.input;
45
+ let input = this._el.input = this.querySelector("input");
66
46
 
67
- this.#dom.wrapper = this.shadowRoot.querySelector("#wrapper");
68
- this.#dom.colorWrapper = this.shadowRoot.querySelector("[part=color-wrapper]");
69
- this.#dom.input = this.querySelector("input");
70
- this.#dom.slot = this.shadowRoot.querySelector("slot:not([name])");
47
+ this.static = !input;
71
48
 
72
- this.#dom.slot.addEventListener("slotchange", evt => {
73
- this.#render();
74
- });
49
+ // This should eventually be a custom state
50
+ this._el.wrapper.classList.toggle("static", this.static);
75
51
 
76
- if (this.#dom.input) {
52
+ if (input && input !== previousInput) {
77
53
  importIncrementable ??= import("https://incrementable.verou.me/incrementable.mjs").then(m => m.default);
78
- this.#dom.input.addEventListener("input", evt => {
79
- this.#render(evt);
80
- });
81
- }
82
-
83
- this.verbatim = this.hasAttribute("verbatim");
84
-
85
- if (this.verbatim) {
86
- // Cannot display gamut info without parsing the color
87
- this.setAttribute("gamuts", "none");
88
- }
89
-
90
- this.gamuts = null;
91
- if (!this.matches('[gamuts="none"]')) {
92
- this.gamuts = this.getAttribute("gamuts") ?? "srgb, p3, rec2020: P3+, prophoto: PP";
93
- this.#dom.gamutIndicator = document.createElement("color-gamut");
54
+ importIncrementable?.then(Incrementable => new Incrementable(input));
94
55
 
95
- Object.assign(this.#dom.gamutIndicator, {
96
- gamuts: this.gamuts,
97
- id: "gamut",
98
- part: "gamut",
99
- exportparts: "label: gamutlabel",
56
+ input.addEventListener("input", evt => {
57
+ this.value = evt.target.value;
100
58
  });
59
+ }
60
+ }
101
61
 
102
- this.#dom.colorWrapper.appendChild(this.#dom.gamutIndicator);
62
+ get gamut () {
63
+ return this._el.gamutIndicator.gamut;
64
+ }
103
65
 
104
- this.#dom.gamutIndicator.addEventListener("gamutchange", evt => {
105
- this.setAttribute("gamut", evt.detail.gamut);
106
- this.dispatchEvent(new CustomEvent("gamutchange", {
107
- detail: evt.detail,
108
- }));
109
- });
110
- }
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
+ }
111
70
 
112
- if (this.hasAttribute("property")) {
113
- this.property = this.getAttribute("property");
114
- this.scope = this.getAttribute("scope") ?? ":root";
115
- this.#dom.style = document.createElement("style");
116
- document.head.appendChild(this.#dom.style);
71
+ propChangedCallback ({name, prop, detail: change}) {
72
+ let input = this._el.input;
117
73
 
118
- let varRef = `var(${this.property})`;
119
- if (this.verbatim) {
120
- this.style.setProperty("--color", varRef);
121
- this.value ||= varRef;
74
+ if (name === "gamuts") {
75
+ if (this.gamuts === "none") {
76
+ this._el.gamutIndicator?.remove();
77
+ this._el.gamutIndicator = null;
122
78
  }
123
- else {
124
- let scopeRoot = this.closest(this.scope);
125
-
126
- // Is contained within scope root
127
- if (scopeRoot) {
128
- this.style.setProperty("--color", varRef);
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
+ });
129
98
  }
130
-
131
- scopeRoot ??= document.querySelector(this.scope);
132
-
133
- if (scopeRoot) {
134
- let cs = getComputedStyle(scopeRoot);
135
- this.value = cs.getPropertyValue(this.property);
99
+ else {
100
+ this._el.gamutIndicator.gamuts = this.gamuts;
136
101
  }
137
102
  }
138
103
  }
139
- }
140
-
141
- #render (evt) {
142
- if (!this.#initialized) {
143
- return;
144
- }
145
104
 
146
- clearTimeout(this.#errorTimeout);
147
-
148
- if (!this.isConnected) {
149
- return;
105
+ if (name === "value") {
106
+ if (input && (!input.value || input.value !== this.value)) {
107
+ input.value = this.value;
108
+ }
150
109
  }
151
110
 
152
- let value = this.value;
153
- this.#color = null;
154
-
155
- if (value) {
156
- try {
157
- this.#color = new Color(value);
158
- }
159
- catch (e) {
160
- // Why a timeout? We don't want to produce errors for intermediate states while typing,
161
- // but if this is a genuine error, we do want to communicate it.
162
- this.#errorTimeout = setTimeout(_ => this.#dom.input?.setCustomValidity(e.message), 500);
111
+ if (name === "label") {
112
+ if (this.label.length && this.label !== this.swatchTextContent) {
113
+ this._el.label.textContent = this.label;
114
+ this._el.label.title = this.label;
163
115
  }
164
-
165
- if (this.#color) {
166
- this.#setColor(this.#color);
167
- this.#dom.input?.setCustomValidity("");
116
+ else {
117
+ this._el.label.textContent = "";
118
+ this._el.label.title = "";
168
119
  }
169
-
170
- this.dispatchEvent(new CustomEvent("colorchange", {
171
- detail: {
172
- color: this.#color,
173
- },
174
- }));
175
120
  }
176
- }
177
121
 
178
- get gamut () {
179
- return this.#dom.gamutIndicator.gamut;
180
- }
122
+ if (name === "color") {
123
+ let isValid = this.color !== null || !this.value;
181
124
 
182
- get value () {
183
- return this.#dom.input?.value ?? this.textContent.trim();
184
- }
125
+ input?.setCustomValidity(isValid ? "" : "Invalid color");
185
126
 
186
- set value (value) {
187
- let oldValue = this.value;
188
- if (value === oldValue) {
189
- return;
127
+ if (this._el.gamutIndicator) {
128
+ this._el.gamutIndicator.color = this.color;
129
+ }
130
+
131
+ let colorString = this.color?.display();
132
+ this.style.setProperty("--color", colorString);
190
133
  }
191
134
 
192
- this.#setValue(value);
193
- this.#render();
194
- }
135
+ if (name === "colorInfo") {
136
+ if (!this.colorInfo) {
137
+ return;
138
+ }
195
139
 
196
- #setValue (value) {
197
- if (!this.#initialized) {
198
- this.#initialize();
199
- }
140
+ this._el.info ??= Object.assign(document.createElement("dl"), {part: "info"});
141
+ if (!this._el.info.parentNode) {
142
+ this._el.colorWrapper.after(this._el.info);
143
+ }
200
144
 
201
- if (this.#dom.input) {
202
- this.#dom.input.value = value;
203
- }
204
- else {
205
- this.textContent = value;
206
- }
207
- }
145
+ let info = [];
146
+ for (let coord of this.info) {
147
+ let [label, channel] = Object.entries(coord)[0];
208
148
 
209
- #color;
210
- get color () {
211
- return this.#color;
212
- }
149
+ let value = this.colorInfo[channel];
150
+ if (value === undefined) {
151
+ continue;
152
+ }
213
153
 
214
- set color (color) {
215
- if (typeof color === "string") {
216
- color = new Color(color);
217
- }
154
+ value = typeof value === "number" ? Number(value.toPrecision(4)) : value;
218
155
 
219
- this.#setColor(color);
156
+ info.push(`<div class="coord"><dt>${ label }</dt><dd>${ value }</dd></div>`);
157
+ }
220
158
 
221
- let colorString;
222
- if (this.verbatim && this.property) {
223
- colorString = `var(${this.property})`;
224
- }
225
- else {
226
- colorString = color.toString({ precision: 2, inGamut: false });
159
+ this._el.info.innerHTML = info.join("\n");
227
160
  }
228
- this.#setValue(colorString);
229
161
  }
230
162
 
231
- #setColor (color) {
232
- this.#color = color;
233
- let colorString;
234
-
235
- if (this.verbatim && this.property) {
236
- colorString = `var(${this.property})`;
237
- }
238
- else {
239
- try {
240
- colorString = this.#color.display({inGamut: false});
241
- }
242
- catch (e) {
243
- colorString = this.value;
244
- }
245
- }
163
+ static props = {
164
+ size: {},
165
+ open: {},
166
+ gamuts: {
167
+ default: "srgb, p3, rec2020: P3+, prophoto: PP",
168
+ },
169
+ value: {
170
+ type: String,
171
+ default () {
172
+ if (this._el.input) {
173
+ return this._el.input.value;
174
+ }
246
175
 
247
- if (this.value === colorString) {
248
- return;
249
- }
176
+ return this.swatchTextContent;
177
+ },
178
+ reflect: {
179
+ from: true,
180
+ },
181
+ },
182
+ label: {
183
+ type: String,
184
+ default () {
185
+ return this.swatchTextContent;
186
+ },
187
+ convert (value) {
188
+ return value.trim();
189
+ },
190
+ },
191
+ color: {
192
+ get type () {
193
+ return ColorSwatch.Color;
194
+ },
195
+ get () {
196
+ if (!this.value) {
197
+ return null;
198
+ }
250
199
 
251
- this.style.setProperty("--color", colorString);
200
+ return ColorSwatch.Color.get(this.value);
201
+ },
202
+ set (value) {
203
+ this.value = ColorSwatch.Color.get(value)?.display();
204
+ },
205
+ reflect: false,
206
+ },
207
+ info: {
208
+ type: {
209
+ is: Array,
210
+ values: {
211
+ is: Object,
212
+ defaultKey: (coord, i) => ColorSwatch.Color.Space.resolveCoord(coord)?.name,
213
+ },
214
+ },
215
+ default: [],
216
+ reflect: {
217
+ from: true,
218
+ },
219
+ },
220
+ colorInfo: {
221
+ get () {
222
+ if (!this.info.length || !this.color) {
223
+ return;
224
+ }
252
225
 
253
- if (this.property) {
254
- this.#dom.style.textContent = `${this.scope} { ${this.property}: ${colorString}; }`;
255
- }
226
+ let ret = {};
227
+ for (let coord of this.info) {
228
+ let [label, channel] = Object.entries(coord)[0];
229
+ try {
230
+ ret[channel] = this.color.get(channel);
231
+ }
232
+ catch (e) {
233
+ console.error(e);
234
+ }
235
+ }
256
236
 
257
- if (this.#dom.gamutIndicator) {
258
- this.#dom.gamutIndicator.color = this.#color;
259
- }
260
- }
237
+ return ret;
238
+ },
239
+ },
240
+ };
261
241
 
262
242
  static events = {
263
243
  colorchange: {
@@ -267,12 +247,8 @@ const Self = class ColorSwatch extends HTMLElement {
267
247
  propchange: "value",
268
248
  },
269
249
  };
250
+ };
270
251
 
271
- static observedAttributes = ["for", "property"];
272
- }
273
-
274
- defineEvents(Self);
275
-
276
- customElements.define("color-swatch", Self);
252
+ Self.define();
277
253
 
278
- export default Self;
254
+ export default Self;
@@ -0,0 +1,140 @@
1
+ import NudeElement from "../../node_modules/nude-element/src/Element.js";
2
+ import { getType, defer, wait, dynamicAll, noOpTemplateTag as css } from "./util.js";
3
+
4
+ const baseGlobalStyles = css`
5
+ @keyframes fade-in {
6
+ from { opacity: 0; }
7
+ }
8
+
9
+ :state(color-element) {
10
+ &:state(loading) {
11
+ content-visibility: hidden;
12
+ opacity: 0;
13
+
14
+ &, * {
15
+ transition-property: opacity !important;
16
+ }
17
+ }
18
+
19
+ &:not(:state(loading)) {
20
+ xanimation: fade-in 300ms both;
21
+ }
22
+ }
23
+ `;
24
+
25
+
26
+ const Self = class ColorElement extends NudeElement {
27
+ static url = import.meta.url;
28
+ // TODO make lazy
29
+ static Color;
30
+ static all = {};
31
+ static dependencies = new Set();
32
+
33
+ static globalStyles = [{css: baseGlobalStyles}];
34
+
35
+ constructor () {
36
+ super();
37
+
38
+ let Self = this.constructor;
39
+
40
+ if (Self.shadowTemplate !== undefined) {
41
+ this.attachShadow({mode: "open"});
42
+ this.shadowRoot.innerHTML = Self.shadowTemplate;
43
+ }
44
+
45
+ this._internals ??= this.attachInternals?.();
46
+ if (this._internals.states) {
47
+ this._internals.states.add("color-element");
48
+
49
+ this._internals.states.add("loading");
50
+ Self.whenReady.then(() => {
51
+ this._internals.states.delete("loading");
52
+ });
53
+ }
54
+ }
55
+
56
+ static init () {
57
+ let wasInitialized = super.init();
58
+
59
+ if (!wasInitialized) {
60
+ return wasInitialized;
61
+ }
62
+
63
+ if (this.fetchedStyles) {
64
+ this.ready.push(...this.fetchedStyles);
65
+ }
66
+
67
+ if (this.fetchedGlobalStyles) {
68
+ this.ready.push(...this.fetchedGlobalStyles );
69
+ }
70
+
71
+
72
+ this.ready[0].resolve();
73
+
74
+ return wasInitialized;
75
+ }
76
+
77
+ static ready = [defer()];
78
+ static whenReady = dynamicAll(this.ready);
79
+
80
+ static async define () {
81
+ // Overwrite static properties, otherwise they will be shared across subclasses
82
+ this.ready = [defer()];
83
+ this.whenReady = dynamicAll(this.ready);
84
+
85
+ if (!Object.hasOwn(this, "dependencies")) {
86
+ this.dependencies = new Set();
87
+ }
88
+
89
+ Self.all[this.tagName] = this;
90
+ let colorTags = Object.keys(Self.all);
91
+
92
+ if (this.shadowTemplate) {
93
+ // TODO find dependencies
94
+ let colorTagRegex = RegExp(`(?<=</)(${ colorTags.join("|") })(?=>)`, "g");
95
+ (this.shadowTemplate.match(colorTagRegex) ?? []).forEach(tag => {
96
+ this.dependencies ??= new Set();
97
+ this.dependencies.add(tag);
98
+ });
99
+ }
100
+
101
+ if (this.dependencies.size > 0) {
102
+ let whenDefined = [...this.dependencies].map(tag => customElements.whenDefined(tag).then(Class => Class.whenReady));
103
+ this.ready.push(...whenDefined);
104
+ }
105
+
106
+ // Give other code a chance to overwrite Self.Color
107
+ await wait();
108
+
109
+ if (!Self.Color) {
110
+ let specifier;
111
+
112
+ try {
113
+ // Is already loaded? (e.g. via an import map, or if we're in Node)
114
+ import.meta.resolve("colorjs.io");
115
+ specifier = "colorjs.io";
116
+ }
117
+ catch (e) {
118
+ // specifier = "../../node_modules/colorjs.io/dist/color.js";
119
+ specifier = "https://colorjs.io/dist/color.js";
120
+ }
121
+
122
+ Self.Color = import(specifier).then(module => module.default);
123
+ }
124
+
125
+ // We can't just use top level await, see https://bugs.webkit.org/show_bug.cgi?id=242740
126
+ if (getType(Self.Color) === "Promise") {
127
+ let ColorPending = Self.Color;
128
+ let Color = await ColorPending;
129
+
130
+ if (Self.Color === ColorPending) {
131
+ // Hasn't changed
132
+ Self.Color = Color;
133
+ }
134
+ }
135
+
136
+ customElements.define(this.tagName, this);
137
+ }
138
+ };
139
+
140
+ export default Self;
package/src/common/dom.js CHANGED
@@ -58,4 +58,4 @@ export function toSlots ({
58
58
  let all = assignments.get(slot) ?? new Set();
59
59
  slot.assign(...all);
60
60
  }
61
- }
61
+ }