color-elements 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/README.md +30 -15
  2. package/_build/copy-config.json +1 -1
  3. package/_build/eleventy.js +7 -2
  4. package/_build/filters-extra.js +1 -1
  5. package/_includes/component.njk +9 -1
  6. package/_includes/partials/_nav-links.njk +11 -4
  7. package/_redirects +8 -1
  8. package/assets/css/style.css +78 -1
  9. package/assets/js/index.js +6 -6
  10. package/data/components.json +12 -0
  11. package/debug.html +447 -0
  12. package/index.js +5 -1
  13. package/package.json +2 -1
  14. package/src/channel-picker/README.md +103 -0
  15. package/src/channel-picker/channel-picker.css +31 -0
  16. package/src/channel-picker/channel-picker.js +168 -0
  17. package/src/channel-picker/channel-picker.webp +0 -0
  18. package/src/channel-slider/README.md +50 -8
  19. package/src/channel-slider/channel-slider.css +47 -5
  20. package/src/channel-slider/channel-slider.js +74 -39
  21. package/src/channel-slider/channel-slider.webp +0 -0
  22. package/src/color-chart/README.md +129 -0
  23. package/src/color-chart/color-chart-global.css +97 -0
  24. package/src/color-chart/color-chart.css +112 -0
  25. package/src/color-chart/color-chart.js +441 -0
  26. package/src/color-chart/color-chart.webp +0 -0
  27. package/src/color-inline/README.md +42 -1
  28. package/src/color-inline/color-inline.css +11 -4
  29. package/src/color-inline/color-inline.js +56 -50
  30. package/src/color-inline/color-inline.webp +0 -0
  31. package/src/color-picker/README.md +107 -5
  32. package/src/color-picker/color-picker.css +21 -6
  33. package/src/color-picker/color-picker.js +147 -60
  34. package/src/color-picker/color-picker.webp +0 -0
  35. package/src/color-scale/README.md +75 -0
  36. package/src/color-scale/color-scale.css +40 -0
  37. package/src/color-scale/color-scale.js +164 -0
  38. package/src/color-scale/color-scale.webp +0 -0
  39. package/src/color-slider/README.md +31 -4
  40. package/src/color-slider/color-slider.css +17 -7
  41. package/src/color-slider/color-slider.js +80 -38
  42. package/src/color-slider/color-slider.webp +0 -0
  43. package/src/color-swatch/README.md +265 -6
  44. package/src/color-swatch/color-swatch.css +162 -27
  45. package/src/color-swatch/color-swatch.js +191 -217
  46. package/src/color-swatch/color-swatch.webp +0 -0
  47. package/src/common/color-element.js +86 -0
  48. package/src/common/dom.js +1 -1
  49. package/src/common/util.js +12 -99
  50. package/src/gamut-badge/README.md +145 -0
  51. package/src/gamut-badge/gamut-badge.css +78 -0
  52. package/src/gamut-badge/gamut-badge.js +121 -0
  53. package/src/gamut-badge/gamut-badge.webp +0 -0
  54. package/src/index.js.njk +1 -1
  55. package/src/space-picker/README.md +121 -0
  56. package/src/space-picker/space-picker.css +23 -0
  57. package/src/space-picker/space-picker.js +213 -0
  58. package/src/space-picker/space-picker.webp +0 -0
  59. package/_data/components.json +0 -8
  60. package/lib/README.md +0 -4
  61. package/lib/colorjs.io/LICENSE +0 -21
  62. package/lib/colorjs.io/README.json +0 -3
  63. package/lib/colorjs.io/README.md +0 -257
  64. package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
  65. package/lib/colorjs.io/colorjs.io/README.json +0 -3
  66. package/lib/colorjs.io/colorjs.io/README.md +0 -257
  67. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
  68. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
  69. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  70. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  71. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  72. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  73. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
  74. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  75. package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
  76. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
  77. package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
  78. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
  79. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
  80. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
  81. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
  82. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  83. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
  84. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
  85. package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
  86. package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
  87. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
  88. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
  89. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
  90. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
  91. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
  92. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  93. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
  94. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
  95. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
  96. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
  97. package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
  98. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
  99. package/lib/colorjs.io/colorjs.io/package.json +0 -113
  100. package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
  101. package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
  102. package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
  103. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
  104. package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
  105. package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
  106. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
  107. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
  108. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
  109. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
  110. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
  111. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
  112. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
  113. package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
  114. package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
  115. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  116. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
  117. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  118. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  119. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  120. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  121. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  122. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
  123. package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
  124. package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
  125. package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
  126. package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
  127. package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
  128. package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
  129. package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
  130. package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
  131. package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
  132. package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
  133. package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
  134. package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
  135. package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
  136. package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
  137. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
  138. package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
  139. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
  140. package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
  141. package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
  142. package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
  143. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
  144. package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
  145. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  146. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
  147. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
  148. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
  149. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
  150. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
  151. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
  152. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
  153. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
  154. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
  155. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
  156. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
  157. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  158. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
  159. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
  160. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
  161. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
  162. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
  163. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
  164. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
  165. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
  166. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
  167. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
  168. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
  169. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
  170. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
  171. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  172. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
  173. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  174. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
  175. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  176. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  177. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
  178. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
  179. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  180. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
  181. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
  182. package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
  183. package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
  184. package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
  185. package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
  186. package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
  187. package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
  188. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
  189. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
  190. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
  191. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
  192. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
  193. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
  194. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  195. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  196. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  197. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  198. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  199. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  200. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
  201. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
  202. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
  203. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  204. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  205. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  206. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  207. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  208. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  209. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  210. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  211. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
  212. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
  213. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
  214. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
  215. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
  216. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
  217. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
  218. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
  219. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
  220. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
  221. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
  222. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
  223. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
  224. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
  225. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
  226. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  227. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
  228. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
  229. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
  230. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
  231. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
  232. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
  233. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  234. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  236. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  237. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  238. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  239. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  240. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  241. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  242. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  243. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  244. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  245. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  246. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  247. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
  248. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  249. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  250. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  251. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  252. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  253. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  254. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  255. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  256. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  257. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  258. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  259. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  260. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  261. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  262. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  263. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  264. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  265. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  266. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  267. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  268. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  269. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  270. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
  271. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
  272. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
  273. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
  274. package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
  275. package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
  276. package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
  277. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
  278. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
  279. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
  280. package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
  281. package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
  282. package/lib/colorjs.io/dist/color.cjs +0 -5759
  283. package/lib/colorjs.io/dist/color.cjs.map +0 -1
  284. package/lib/colorjs.io/dist/color.global.js +0 -5760
  285. package/lib/colorjs.io/dist/color.global.js.map +0 -1
  286. package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
  287. package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
  288. package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
  289. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
  290. package/lib/colorjs.io/dist/color.global.min.js +0 -2
  291. package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
  292. package/lib/colorjs.io/dist/color.js +0 -5755
  293. package/lib/colorjs.io/dist/color.js.map +0 -1
  294. package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
  295. package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
  296. package/lib/colorjs.io/dist/color.legacy.js +0 -7395
  297. package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
  298. package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
  299. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
  300. package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
  301. package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
  302. package/lib/colorjs.io/dist/color.min.cjs +0 -2
  303. package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
  304. package/lib/colorjs.io/dist/color.min.js +0 -2
  305. package/lib/colorjs.io/dist/color.min.js.map +0 -1
  306. package/lib/colorjs.io/package.json +0 -113
  307. package/lib/colorjs.io/src/CATs.js +0 -131
  308. package/lib/colorjs.io/src/adapt.js +0 -62
  309. package/lib/colorjs.io/src/angles.js +0 -44
  310. package/lib/colorjs.io/src/chromaticity.js +0 -33
  311. package/lib/colorjs.io/src/clone.js +0 -7
  312. package/lib/colorjs.io/src/color.js +0 -201
  313. package/lib/colorjs.io/src/contrast/APCA.js +0 -102
  314. package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
  315. package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
  316. package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
  317. package/lib/colorjs.io/src/contrast/Weber.js +0 -27
  318. package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
  319. package/lib/colorjs.io/src/contrast/index.js +0 -6
  320. package/lib/colorjs.io/src/contrast.js +0 -28
  321. package/lib/colorjs.io/src/defaults.js +0 -12
  322. package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
  323. package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
  324. package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
  325. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
  326. package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
  327. package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
  328. package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
  329. package/lib/colorjs.io/src/deltaE/index.js +0 -27
  330. package/lib/colorjs.io/src/deltaE.js +0 -19
  331. package/lib/colorjs.io/src/display.js +0 -83
  332. package/lib/colorjs.io/src/distance.js +0 -21
  333. package/lib/colorjs.io/src/equals.js +0 -10
  334. package/lib/colorjs.io/src/get.js +0 -11
  335. package/lib/colorjs.io/src/getAll.js +0 -20
  336. package/lib/colorjs.io/src/getColor.js +0 -36
  337. package/lib/colorjs.io/src/hooks.js +0 -37
  338. package/lib/colorjs.io/src/inGamut.js +0 -25
  339. package/lib/colorjs.io/src/index-fn.js +0 -28
  340. package/lib/colorjs.io/src/index.js +0 -38
  341. package/lib/colorjs.io/src/interpolation.js +0 -222
  342. package/lib/colorjs.io/src/keywords.js +0 -158
  343. package/lib/colorjs.io/src/luminance.js +0 -27
  344. package/lib/colorjs.io/src/multiply-matrices.js +0 -44
  345. package/lib/colorjs.io/src/parse.js +0 -198
  346. package/lib/colorjs.io/src/rgbspace.js +0 -64
  347. package/lib/colorjs.io/src/serialize.js +0 -86
  348. package/lib/colorjs.io/src/set.js +0 -33
  349. package/lib/colorjs.io/src/setAll.js +0 -12
  350. package/lib/colorjs.io/src/space-accessors.js +0 -86
  351. package/lib/colorjs.io/src/space.js +0 -440
  352. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
  353. package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
  354. package/lib/colorjs.io/src/spaces/acescc.js +0 -76
  355. package/lib/colorjs.io/src/spaces/acescg.js +0 -54
  356. package/lib/colorjs.io/src/spaces/cam16.js +0 -362
  357. package/lib/colorjs.io/src/spaces/hct.js +0 -157
  358. package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
  359. package/lib/colorjs.io/src/spaces/hsl.js +0 -91
  360. package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
  361. package/lib/colorjs.io/src/spaces/hsv.js +0 -65
  362. package/lib/colorjs.io/src/spaces/hwb.js +0 -58
  363. package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
  364. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
  365. package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
  366. package/lib/colorjs.io/src/spaces/index.js +0 -8
  367. package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
  368. package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
  369. package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
  370. package/lib/colorjs.io/src/spaces/lab.js +0 -74
  371. package/lib/colorjs.io/src/spaces/lch.js +0 -67
  372. package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
  373. package/lib/colorjs.io/src/spaces/luv.js +0 -85
  374. package/lib/colorjs.io/src/spaces/oklab.js +0 -74
  375. package/lib/colorjs.io/src/spaces/oklch.js +0 -68
  376. package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
  377. package/lib/colorjs.io/src/spaces/p3.js +0 -13
  378. package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
  379. package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
  380. package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
  381. package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
  382. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
  383. package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
  384. package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
  385. package/lib/colorjs.io/src/spaces/srgb.js +0 -127
  386. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
  387. package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
  388. package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
  389. package/lib/colorjs.io/src/to.js +0 -26
  390. package/lib/colorjs.io/src/toGamut.js +0 -310
  391. package/lib/colorjs.io/src/util.js +0 -254
  392. package/lib/colorjs.io/src/variations.js +0 -14
  393. package/lib/colorjs.io/types/index.d.cts +0 -4
  394. package/lib/colorjs.io/types/index.d.ts +0 -42
  395. package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
  396. package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
  397. package/lib/colorjs.io/types/src/angles.d.ts +0 -7
  398. package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
  399. package/lib/colorjs.io/types/src/clone.d.ts +0 -3
  400. package/lib/colorjs.io/types/src/color.d.ts +0 -160
  401. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
  402. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
  403. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
  404. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
  405. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
  406. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
  407. package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
  408. package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
  409. package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
  410. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
  411. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
  412. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
  413. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
  414. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
  415. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
  416. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
  417. package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
  418. package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
  419. package/lib/colorjs.io/types/src/display.d.ts +0 -17
  420. package/lib/colorjs.io/types/src/distance.d.ts +0 -8
  421. package/lib/colorjs.io/types/src/equals.d.ts +0 -3
  422. package/lib/colorjs.io/types/src/get.d.ts +0 -4
  423. package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
  424. package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
  425. package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
  426. package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
  427. package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
  428. package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
  429. package/lib/colorjs.io/types/src/index.d.ts +0 -125
  430. package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
  431. package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
  432. package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
  433. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
  434. package/lib/colorjs.io/types/src/parse.d.ts +0 -16
  435. package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
  436. package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
  437. package/lib/colorjs.io/types/src/set.d.ts +0 -18
  438. package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
  439. package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
  440. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
  441. package/lib/colorjs.io/types/src/space.d.ts +0 -143
  442. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
  443. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
  444. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
  445. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
  446. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
  447. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
  448. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
  449. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
  450. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
  451. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
  452. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
  453. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
  454. package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
  455. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
  456. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
  457. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
  458. package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
  459. package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
  460. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
  461. package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
  462. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
  463. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
  464. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
  465. package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
  466. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
  467. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
  468. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
  469. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
  470. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
  471. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
  472. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
  473. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
  474. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
  475. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
  476. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
  477. package/lib/colorjs.io/types/src/to.d.ts +0 -14
  478. package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
  479. package/lib/colorjs.io/types/src/util.d.ts +0 -58
  480. package/lib/colorjs.io/types/src/variations.d.ts +0 -5
  481. package/src/color-gamut/README.md +0 -75
  482. package/src/color-gamut/color-gamut.css +0 -32
  483. package/src/color-gamut/color-gamut.js +0 -172
  484. package/src/common/color.js +0 -12
@@ -1,263 +1,241 @@
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 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>`;
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;
163
114
  }
164
-
165
- if (this.#color) {
166
- this.#setColor(this.#color);
167
- this.#dom.input?.setCustomValidity("");
115
+ else {
116
+ this._el.label.textContent = "";
168
117
  }
169
-
170
- this.dispatchEvent(new CustomEvent("colorchange", {
171
- detail: {
172
- color: this.#color,
173
- },
174
- }));
175
118
  }
176
- }
177
119
 
178
- get gamut () {
179
- return this.#dom.gamutIndicator.gamut;
180
- }
120
+ if (name === "color") {
121
+ let isValid = this.color !== null || !this.value;
181
122
 
182
- get value () {
183
- return this.#dom.input?.value ?? this.textContent.trim();
184
- }
123
+ input?.setCustomValidity(isValid ? "" : "Invalid color");
185
124
 
186
- set value (value) {
187
- let oldValue = this.value;
188
- if (value === oldValue) {
189
- return;
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);
190
131
  }
191
132
 
192
- this.#setValue(value);
193
- this.#render();
194
- }
133
+ if (name === "colorInfo") {
134
+ if (!this.colorInfo) {
135
+ return;
136
+ }
195
137
 
196
- #setValue (value) {
197
- if (!this.#initialized) {
198
- this.#initialize();
199
- }
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
+ }
200
142
 
201
- if (this.#dom.input) {
202
- this.#dom.input.value = value;
203
- }
204
- else {
205
- this.textContent = value;
206
- }
207
- }
143
+ let info = [];
144
+ for (let coord of this.info) {
145
+ let [label, channel] = Object.entries(coord)[0];
208
146
 
209
- #color;
210
- get color () {
211
- return this.#color;
212
- }
147
+ let value = this.colorInfo[channel];
148
+ if (value === undefined) {
149
+ continue;
150
+ }
213
151
 
214
- set color (color) {
215
- if (typeof color === "string") {
216
- color = new Color(color);
217
- }
152
+ value = typeof value === "number" ? Number(value.toPrecision(4)) : value;
218
153
 
219
- this.#setColor(color);
154
+ info.push(`<div class="coord"><dt>${ label }</dt><dd>${ value }</dd></div>`);
155
+ }
220
156
 
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 });
157
+ this._el.info.innerHTML = info.join("\n");
227
158
  }
228
- this.#setValue(colorString);
229
159
  }
230
160
 
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
- }
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
+ }
246
173
 
247
- if (this.value === colorString) {
248
- return;
249
- }
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
+ }
250
197
 
251
- this.style.setProperty("--color", colorString);
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
+ }
252
223
 
253
- if (this.property) {
254
- this.#dom.style.textContent = `${this.scope} { ${this.property}: ${colorString}; }`;
255
- }
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
+ }
256
234
 
257
- if (this.#dom.gamutIndicator) {
258
- this.#dom.gamutIndicator.color = this.#color;
259
- }
260
- }
235
+ return ret;
236
+ },
237
+ },
238
+ };
261
239
 
262
240
  static events = {
263
241
  colorchange: {
@@ -267,12 +245,8 @@ const Self = class ColorSwatch extends HTMLElement {
267
245
  propchange: "value",
268
246
  },
269
247
  };
248
+ };
270
249
 
271
- static observedAttributes = ["for", "property"];
272
- }
273
-
274
- defineEvents(Self);
275
-
276
- customElements.define("color-swatch", Self);
250
+ Self.define();
277
251
 
278
- export default Self;
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;
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
+ }
@@ -1,106 +1,11 @@
1
- /**
2
- * Defines instance properties by defining an accessor that automatically replaces itself with a writable property when accessed.
3
- * @param {Function} Class
4
- * @param {string} name
5
- * @param {function} getValue
6
- */
7
- export function defineInstanceProperty (
8
- Class, name, getValue,
9
- {writable = true, configurable = true, enumerable = false} = {}) {
10
- let setter = function (value) {
11
- Object.defineProperty(this, name, { value, writable, configurable, enumerable });
12
- }
13
- Object.defineProperty(Class.prototype, name, {
14
- get () {
15
- let value = getValue.call(this, this);
16
- setter.call(this, value);
17
- return value;
18
- },
19
- set (value) { // Blind set
20
- setter.call(this, value);
21
- },
22
- configurable: true,
23
- });
24
- }
25
-
26
- export function defineLazyProperty (object, name, options) {
27
- if (typeof options === "function") {
28
- options = { get: options };
29
- }
30
-
31
- let {get, writable = true, configurable = true, enumerable = false} = options;
32
-
33
- let setter = function (value) {
34
- Object.defineProperty(this, name, { value, writable, configurable, enumerable });
35
- }
36
- Object.defineProperty(object, name, {
37
- get () {
38
- let value = get.call(this);
39
- setter.call(this, value);
40
- return value;
41
- },
42
- set (value) { // Blind set
43
- setter.call(this, value);
44
- },
45
- configurable: true,
46
- });
47
- }
48
-
49
- export function defineComputed (Class, computed = Class.computed) {
50
- let dependencies = new Map();
51
-
52
- for (let name in computed) {
53
- let spec = computed[name];
54
- defineInstanceProperty(Class, name, spec.get);
55
-
56
- if (spec.dependencies) {
57
- for (let prop of spec.dependencies) {
58
- let deps = dependencies.get(prop) ?? [];
59
- deps.push(name);
60
- dependencies.set(prop, deps);
61
- }
62
- }
63
- }
64
-
65
- if (dependencies.size > 0) {
66
- let _propChangedCallback = Class.prototype.propChangedCallback;
67
-
68
- Class.prototype.propChangedCallback = function(name, change) {
69
- if (dependencies.has(name)) {
70
- for (let prop of dependencies.get(name)) {
71
- this[prop] = computed[prop].get.call(this, this);
72
- }
73
- }
74
-
75
- _propChangedCallback?.call(this, name, change);
76
- }
77
- }
78
- }
79
-
80
- export function inferDependencies (fn) {
81
- if (!fn || typeof fn !== "function") {
82
- return [];
1
+ export async function wait (ms) {
2
+ if (ms === undefined) {
3
+ return new Promise(resolve => requestAnimationFrame(resolve));
83
4
  }
84
5
 
85
- let code = fn.toString();
86
-
87
- return [...code.matchAll(/\bthis\.([$\w]+)\b/g)].map(match => match[1]);
88
- }
89
-
90
- export async function wait (ms) {
91
6
  return new Promise(resolve => setTimeout(resolve, ms));
92
7
  }
93
8
 
94
- export async function nextTick (refreshRate = 20) {
95
- let now = performance.now();
96
- let remainder = now % refreshRate;
97
- let delay = refreshRate - remainder;
98
- let nextAt = now + delay;
99
- nextTick.start ??= now - remainder;
100
-
101
- return new Promise(resolve => setTimeout(() => resolve(nextAt - nextTick.start), delay));
102
- }
103
-
104
9
  /**
105
10
  * Compute the ideal step for a range, to be used as a default in spinners and sliders
106
11
  * @param {number} min
@@ -139,4 +44,12 @@ export function pick (obj, properties) {
139
44
  }
140
45
 
141
46
  return Object.fromEntries(Object.entries(obj).filter(([key]) => properties.includes(key)));
142
- }
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
+ }