color-elements 0.0.1

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 (448) hide show
  1. package/README.md +33 -0
  2. package/_build/copy-config.js +90 -0
  3. package/_build/copy-config.json +18 -0
  4. package/_build/eleventy.js +16 -0
  5. package/_data/eleventyComputed.11tydata.js +29 -0
  6. package/_headers +2 -0
  7. package/_redirects +2 -0
  8. package/assets/css/style.css +1 -0
  9. package/assets/js/index.js +15 -0
  10. package/color-gamut/README.md +75 -0
  11. package/color-gamut/color-gamut.js +172 -0
  12. package/color-gamut/style.css +32 -0
  13. package/color-slider/README.md +84 -0
  14. package/color-slider/color-slider.js +79 -0
  15. package/color-slider/style.css +65 -0
  16. package/color-swatch/color-swatch.css +41 -0
  17. package/color-swatch/color-swatch.js +79 -0
  18. package/color-swatch/index.njk +40 -0
  19. package/common/attributes.js +68 -0
  20. package/common/color.js +10 -0
  21. package/css-color/css-color.js +256 -0
  22. package/css-color/index.njk +43 -0
  23. package/css-color/style.css +67 -0
  24. package/elements.11tydata.json +5 -0
  25. package/index.js +4 -0
  26. package/lib/README.md +4 -0
  27. package/lib/colorjs.io/LICENSE +21 -0
  28. package/lib/colorjs.io/README.json +3 -0
  29. package/lib/colorjs.io/README.md +257 -0
  30. package/lib/colorjs.io/colorjs.io/LICENSE +21 -0
  31. package/lib/colorjs.io/colorjs.io/README.json +3 -0
  32. package/lib/colorjs.io/colorjs.io/README.md +257 -0
  33. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +5437 -0
  34. package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +1 -0
  35. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +7048 -0
  36. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +1 -0
  37. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +2 -0
  38. package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +1 -0
  39. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +2 -0
  40. package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +1 -0
  41. package/lib/colorjs.io/colorjs.io/dist/color.cjs +5759 -0
  42. package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +1 -0
  43. package/lib/colorjs.io/colorjs.io/dist/color.global.js +5760 -0
  44. package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +1 -0
  45. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +7400 -0
  46. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +1 -0
  47. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +2 -0
  48. package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +1 -0
  49. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +2 -0
  50. package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +1 -0
  51. package/lib/colorjs.io/colorjs.io/dist/color.js +5755 -0
  52. package/lib/colorjs.io/colorjs.io/dist/color.js.map +1 -0
  53. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +7399 -0
  54. package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +1 -0
  55. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +7395 -0
  56. package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +1 -0
  57. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +2 -0
  58. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +1 -0
  59. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +2 -0
  60. package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +1 -0
  61. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +2 -0
  62. package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +1 -0
  63. package/lib/colorjs.io/colorjs.io/dist/color.min.js +2 -0
  64. package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +1 -0
  65. package/lib/colorjs.io/colorjs.io/package.json +113 -0
  66. package/lib/colorjs.io/colorjs.io/src/CATs.js +131 -0
  67. package/lib/colorjs.io/colorjs.io/src/adapt.js +62 -0
  68. package/lib/colorjs.io/colorjs.io/src/angles.js +44 -0
  69. package/lib/colorjs.io/colorjs.io/src/chromaticity.js +33 -0
  70. package/lib/colorjs.io/colorjs.io/src/clone.js +7 -0
  71. package/lib/colorjs.io/colorjs.io/src/color.js +201 -0
  72. package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +102 -0
  73. package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +17 -0
  74. package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +22 -0
  75. package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +20 -0
  76. package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +27 -0
  77. package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +25 -0
  78. package/lib/colorjs.io/colorjs.io/src/contrast/index.js +6 -0
  79. package/lib/colorjs.io/colorjs.io/src/contrast.js +28 -0
  80. package/lib/colorjs.io/colorjs.io/src/defaults.js +12 -0
  81. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +179 -0
  82. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +7 -0
  83. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +114 -0
  84. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +51 -0
  85. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +24 -0
  86. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +43 -0
  87. package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +19 -0
  88. package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +27 -0
  89. package/lib/colorjs.io/colorjs.io/src/deltaE.js +19 -0
  90. package/lib/colorjs.io/colorjs.io/src/display.js +83 -0
  91. package/lib/colorjs.io/colorjs.io/src/distance.js +21 -0
  92. package/lib/colorjs.io/colorjs.io/src/equals.js +10 -0
  93. package/lib/colorjs.io/colorjs.io/src/get.js +11 -0
  94. package/lib/colorjs.io/colorjs.io/src/getAll.js +20 -0
  95. package/lib/colorjs.io/colorjs.io/src/getColor.js +36 -0
  96. package/lib/colorjs.io/colorjs.io/src/hooks.js +37 -0
  97. package/lib/colorjs.io/colorjs.io/src/inGamut.js +25 -0
  98. package/lib/colorjs.io/colorjs.io/src/index-fn.js +28 -0
  99. package/lib/colorjs.io/colorjs.io/src/index.js +38 -0
  100. package/lib/colorjs.io/colorjs.io/src/interpolation.js +222 -0
  101. package/lib/colorjs.io/colorjs.io/src/keywords.js +158 -0
  102. package/lib/colorjs.io/colorjs.io/src/luminance.js +27 -0
  103. package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +44 -0
  104. package/lib/colorjs.io/colorjs.io/src/parse.js +198 -0
  105. package/lib/colorjs.io/colorjs.io/src/rgbspace.js +64 -0
  106. package/lib/colorjs.io/colorjs.io/src/serialize.js +86 -0
  107. package/lib/colorjs.io/colorjs.io/src/set.js +33 -0
  108. package/lib/colorjs.io/colorjs.io/src/setAll.js +12 -0
  109. package/lib/colorjs.io/colorjs.io/src/space-accessors.js +86 -0
  110. package/lib/colorjs.io/colorjs.io/src/space.js +440 -0
  111. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +28 -0
  112. package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +11 -0
  113. package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +76 -0
  114. package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +54 -0
  115. package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +362 -0
  116. package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +157 -0
  117. package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +130 -0
  118. package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +91 -0
  119. package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +162 -0
  120. package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +65 -0
  121. package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +58 -0
  122. package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +133 -0
  123. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +7 -0
  124. package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +29 -0
  125. package/lib/colorjs.io/colorjs.io/src/spaces/index.js +8 -0
  126. package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +118 -0
  127. package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +53 -0
  128. package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +74 -0
  129. package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +74 -0
  130. package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +67 -0
  131. package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +68 -0
  132. package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +85 -0
  133. package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +74 -0
  134. package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +68 -0
  135. package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +22 -0
  136. package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +13 -0
  137. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +28 -0
  138. package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +19 -0
  139. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +27 -0
  140. package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +31 -0
  141. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +49 -0
  142. package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +37 -0
  143. package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +30 -0
  144. package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +127 -0
  145. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +40 -0
  146. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +12 -0
  147. package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +18 -0
  148. package/lib/colorjs.io/colorjs.io/src/to.js +26 -0
  149. package/lib/colorjs.io/colorjs.io/src/toGamut.js +310 -0
  150. package/lib/colorjs.io/colorjs.io/src/util.js +254 -0
  151. package/lib/colorjs.io/colorjs.io/src/variations.js +14 -0
  152. package/lib/colorjs.io/colorjs.io/types/index.d.cts +4 -0
  153. package/lib/colorjs.io/colorjs.io/types/index.d.ts +42 -0
  154. package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +13 -0
  155. package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +12 -0
  156. package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +7 -0
  157. package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +7 -0
  158. package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +3 -0
  159. package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +160 -0
  160. package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +5 -0
  161. package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +5 -0
  162. package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +5 -0
  163. package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +5 -0
  164. package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +5 -0
  165. package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +5 -0
  166. package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +11 -0
  167. package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +12 -0
  168. package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +2 -0
  169. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +11 -0
  170. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +5 -0
  171. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +9 -0
  172. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +5 -0
  173. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +5 -0
  174. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +5 -0
  175. package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +5 -0
  176. package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +14 -0
  177. package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +12 -0
  178. package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +17 -0
  179. package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +8 -0
  180. package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +3 -0
  181. package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +4 -0
  182. package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +7 -0
  183. package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +4 -0
  184. package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +52 -0
  185. package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +8 -0
  186. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +1 -0
  187. package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +63 -0
  188. package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +125 -0
  189. package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +77 -0
  190. package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +2 -0
  191. package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +10 -0
  192. package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +9 -0
  193. package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +16 -0
  194. package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +10 -0
  195. package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +13 -0
  196. package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +18 -0
  197. package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +14 -0
  198. package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +1 -0
  199. package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +69 -0
  200. package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +143 -0
  201. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +3 -0
  202. package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +3 -0
  203. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +3 -0
  204. package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +3 -0
  205. package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +3 -0
  206. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +3 -0
  207. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +3 -0
  208. package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +3 -0
  209. package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +3 -0
  210. package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +3 -0
  211. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +9 -0
  212. package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +29 -0
  213. package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +4 -0
  214. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +3 -0
  215. package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +3 -0
  216. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +3 -0
  217. package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +3 -0
  218. package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +3 -0
  219. package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +3 -0
  220. package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +3 -0
  221. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +3 -0
  222. package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +3 -0
  223. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +3 -0
  224. package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +3 -0
  225. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +3 -0
  226. package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +3 -0
  227. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +3 -0
  228. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +3 -0
  229. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +3 -0
  230. package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +3 -0
  231. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +3 -0
  232. package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +3 -0
  233. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +3 -0
  234. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +3 -0
  235. package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +3 -0
  236. package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +14 -0
  237. package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +45 -0
  238. package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +58 -0
  239. package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +5 -0
  240. package/lib/colorjs.io/dist/color-fn.cjs +5437 -0
  241. package/lib/colorjs.io/dist/color-fn.cjs.map +1 -0
  242. package/lib/colorjs.io/dist/color-fn.legacy.cjs +7048 -0
  243. package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +1 -0
  244. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +2 -0
  245. package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +1 -0
  246. package/lib/colorjs.io/dist/color-fn.min.cjs +2 -0
  247. package/lib/colorjs.io/dist/color-fn.min.cjs.map +1 -0
  248. package/lib/colorjs.io/dist/color.cjs +5759 -0
  249. package/lib/colorjs.io/dist/color.cjs.map +1 -0
  250. package/lib/colorjs.io/dist/color.global.js +5760 -0
  251. package/lib/colorjs.io/dist/color.global.js.map +1 -0
  252. package/lib/colorjs.io/dist/color.global.legacy.js +7400 -0
  253. package/lib/colorjs.io/dist/color.global.legacy.js.map +1 -0
  254. package/lib/colorjs.io/dist/color.global.legacy.min.js +2 -0
  255. package/lib/colorjs.io/dist/color.global.legacy.min.js.map +1 -0
  256. package/lib/colorjs.io/dist/color.global.min.js +2 -0
  257. package/lib/colorjs.io/dist/color.global.min.js.map +1 -0
  258. package/lib/colorjs.io/dist/color.js +5755 -0
  259. package/lib/colorjs.io/dist/color.js.map +1 -0
  260. package/lib/colorjs.io/dist/color.legacy.cjs +7399 -0
  261. package/lib/colorjs.io/dist/color.legacy.cjs.map +1 -0
  262. package/lib/colorjs.io/dist/color.legacy.js +7395 -0
  263. package/lib/colorjs.io/dist/color.legacy.js.map +1 -0
  264. package/lib/colorjs.io/dist/color.legacy.min.cjs +2 -0
  265. package/lib/colorjs.io/dist/color.legacy.min.cjs.map +1 -0
  266. package/lib/colorjs.io/dist/color.legacy.min.js +2 -0
  267. package/lib/colorjs.io/dist/color.legacy.min.js.map +1 -0
  268. package/lib/colorjs.io/dist/color.min.cjs +2 -0
  269. package/lib/colorjs.io/dist/color.min.cjs.map +1 -0
  270. package/lib/colorjs.io/dist/color.min.js +2 -0
  271. package/lib/colorjs.io/dist/color.min.js.map +1 -0
  272. package/lib/colorjs.io/package.json +113 -0
  273. package/lib/colorjs.io/src/CATs.js +131 -0
  274. package/lib/colorjs.io/src/adapt.js +62 -0
  275. package/lib/colorjs.io/src/angles.js +44 -0
  276. package/lib/colorjs.io/src/chromaticity.js +33 -0
  277. package/lib/colorjs.io/src/clone.js +7 -0
  278. package/lib/colorjs.io/src/color.js +201 -0
  279. package/lib/colorjs.io/src/contrast/APCA.js +102 -0
  280. package/lib/colorjs.io/src/contrast/Lstar.js +17 -0
  281. package/lib/colorjs.io/src/contrast/Michelson.js +22 -0
  282. package/lib/colorjs.io/src/contrast/WCAG21.js +20 -0
  283. package/lib/colorjs.io/src/contrast/Weber.js +27 -0
  284. package/lib/colorjs.io/src/contrast/deltaPhi.js +25 -0
  285. package/lib/colorjs.io/src/contrast/index.js +6 -0
  286. package/lib/colorjs.io/src/contrast.js +28 -0
  287. package/lib/colorjs.io/src/defaults.js +12 -0
  288. package/lib/colorjs.io/src/deltaE/deltaE2000.js +179 -0
  289. package/lib/colorjs.io/src/deltaE/deltaE76.js +7 -0
  290. package/lib/colorjs.io/src/deltaE/deltaECMC.js +114 -0
  291. package/lib/colorjs.io/src/deltaE/deltaEHCT.js +51 -0
  292. package/lib/colorjs.io/src/deltaE/deltaEITP.js +24 -0
  293. package/lib/colorjs.io/src/deltaE/deltaEJz.js +43 -0
  294. package/lib/colorjs.io/src/deltaE/deltaEOK.js +19 -0
  295. package/lib/colorjs.io/src/deltaE/index.js +27 -0
  296. package/lib/colorjs.io/src/deltaE.js +19 -0
  297. package/lib/colorjs.io/src/display.js +83 -0
  298. package/lib/colorjs.io/src/distance.js +21 -0
  299. package/lib/colorjs.io/src/equals.js +10 -0
  300. package/lib/colorjs.io/src/get.js +11 -0
  301. package/lib/colorjs.io/src/getAll.js +20 -0
  302. package/lib/colorjs.io/src/getColor.js +36 -0
  303. package/lib/colorjs.io/src/hooks.js +37 -0
  304. package/lib/colorjs.io/src/inGamut.js +25 -0
  305. package/lib/colorjs.io/src/index-fn.js +28 -0
  306. package/lib/colorjs.io/src/index.js +38 -0
  307. package/lib/colorjs.io/src/interpolation.js +222 -0
  308. package/lib/colorjs.io/src/keywords.js +158 -0
  309. package/lib/colorjs.io/src/luminance.js +27 -0
  310. package/lib/colorjs.io/src/multiply-matrices.js +44 -0
  311. package/lib/colorjs.io/src/parse.js +198 -0
  312. package/lib/colorjs.io/src/rgbspace.js +64 -0
  313. package/lib/colorjs.io/src/serialize.js +86 -0
  314. package/lib/colorjs.io/src/set.js +33 -0
  315. package/lib/colorjs.io/src/setAll.js +12 -0
  316. package/lib/colorjs.io/src/space-accessors.js +86 -0
  317. package/lib/colorjs.io/src/space.js +440 -0
  318. package/lib/colorjs.io/src/spaces/a98rgb-linear.js +28 -0
  319. package/lib/colorjs.io/src/spaces/a98rgb.js +11 -0
  320. package/lib/colorjs.io/src/spaces/acescc.js +76 -0
  321. package/lib/colorjs.io/src/spaces/acescg.js +54 -0
  322. package/lib/colorjs.io/src/spaces/cam16.js +362 -0
  323. package/lib/colorjs.io/src/spaces/hct.js +157 -0
  324. package/lib/colorjs.io/src/spaces/hpluv.js +130 -0
  325. package/lib/colorjs.io/src/spaces/hsl.js +91 -0
  326. package/lib/colorjs.io/src/spaces/hsluv.js +162 -0
  327. package/lib/colorjs.io/src/spaces/hsv.js +65 -0
  328. package/lib/colorjs.io/src/spaces/hwb.js +58 -0
  329. package/lib/colorjs.io/src/spaces/ictcp.js +133 -0
  330. package/lib/colorjs.io/src/spaces/index-fn-hdr.js +7 -0
  331. package/lib/colorjs.io/src/spaces/index-fn.js +29 -0
  332. package/lib/colorjs.io/src/spaces/index.js +8 -0
  333. package/lib/colorjs.io/src/spaces/jzazbz.js +118 -0
  334. package/lib/colorjs.io/src/spaces/jzczhz.js +53 -0
  335. package/lib/colorjs.io/src/spaces/lab-d65.js +74 -0
  336. package/lib/colorjs.io/src/spaces/lab.js +74 -0
  337. package/lib/colorjs.io/src/spaces/lch.js +67 -0
  338. package/lib/colorjs.io/src/spaces/lchuv.js +68 -0
  339. package/lib/colorjs.io/src/spaces/luv.js +85 -0
  340. package/lib/colorjs.io/src/spaces/oklab.js +74 -0
  341. package/lib/colorjs.io/src/spaces/oklch.js +68 -0
  342. package/lib/colorjs.io/src/spaces/p3-linear.js +22 -0
  343. package/lib/colorjs.io/src/spaces/p3.js +13 -0
  344. package/lib/colorjs.io/src/spaces/prophoto-linear.js +28 -0
  345. package/lib/colorjs.io/src/spaces/prophoto.js +19 -0
  346. package/lib/colorjs.io/src/spaces/rec2020-linear.js +27 -0
  347. package/lib/colorjs.io/src/spaces/rec2020.js +31 -0
  348. package/lib/colorjs.io/src/spaces/rec2100-hlg.js +49 -0
  349. package/lib/colorjs.io/src/spaces/rec2100-pq.js +37 -0
  350. package/lib/colorjs.io/src/spaces/srgb-linear.js +30 -0
  351. package/lib/colorjs.io/src/spaces/srgb.js +127 -0
  352. package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +40 -0
  353. package/lib/colorjs.io/src/spaces/xyz-d50.js +12 -0
  354. package/lib/colorjs.io/src/spaces/xyz-d65.js +18 -0
  355. package/lib/colorjs.io/src/to.js +26 -0
  356. package/lib/colorjs.io/src/toGamut.js +310 -0
  357. package/lib/colorjs.io/src/util.js +254 -0
  358. package/lib/colorjs.io/src/variations.js +14 -0
  359. package/lib/colorjs.io/types/index.d.cts +4 -0
  360. package/lib/colorjs.io/types/index.d.ts +42 -0
  361. package/lib/colorjs.io/types/src/CATs.d.ts +13 -0
  362. package/lib/colorjs.io/types/src/adapt.d.ts +12 -0
  363. package/lib/colorjs.io/types/src/angles.d.ts +7 -0
  364. package/lib/colorjs.io/types/src/chromaticity.d.ts +7 -0
  365. package/lib/colorjs.io/types/src/clone.d.ts +3 -0
  366. package/lib/colorjs.io/types/src/color.d.ts +160 -0
  367. package/lib/colorjs.io/types/src/contrast/APCA.d.ts +5 -0
  368. package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +5 -0
  369. package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +5 -0
  370. package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +5 -0
  371. package/lib/colorjs.io/types/src/contrast/Weber.d.ts +5 -0
  372. package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +5 -0
  373. package/lib/colorjs.io/types/src/contrast/index.d.ts +11 -0
  374. package/lib/colorjs.io/types/src/contrast.d.ts +12 -0
  375. package/lib/colorjs.io/types/src/defaults.d.ts +2 -0
  376. package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +11 -0
  377. package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +5 -0
  378. package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +9 -0
  379. package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +5 -0
  380. package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +5 -0
  381. package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +5 -0
  382. package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +5 -0
  383. package/lib/colorjs.io/types/src/deltaE/index.d.ts +14 -0
  384. package/lib/colorjs.io/types/src/deltaE.d.ts +12 -0
  385. package/lib/colorjs.io/types/src/display.d.ts +17 -0
  386. package/lib/colorjs.io/types/src/distance.d.ts +8 -0
  387. package/lib/colorjs.io/types/src/equals.d.ts +3 -0
  388. package/lib/colorjs.io/types/src/get.d.ts +4 -0
  389. package/lib/colorjs.io/types/src/getAll.d.ts +7 -0
  390. package/lib/colorjs.io/types/src/getColor.d.ts +4 -0
  391. package/lib/colorjs.io/types/src/hooks.d.ts +52 -0
  392. package/lib/colorjs.io/types/src/inGamut.d.ts +8 -0
  393. package/lib/colorjs.io/types/src/index-fn.d.cts +1 -0
  394. package/lib/colorjs.io/types/src/index-fn.d.ts +63 -0
  395. package/lib/colorjs.io/types/src/index.d.ts +125 -0
  396. package/lib/colorjs.io/types/src/interpolation.d.ts +77 -0
  397. package/lib/colorjs.io/types/src/keywords.d.ts +2 -0
  398. package/lib/colorjs.io/types/src/luminance.d.ts +10 -0
  399. package/lib/colorjs.io/types/src/multiply-matrices.d.ts +9 -0
  400. package/lib/colorjs.io/types/src/parse.d.ts +16 -0
  401. package/lib/colorjs.io/types/src/rgbspace.d.ts +10 -0
  402. package/lib/colorjs.io/types/src/serialize.d.ts +13 -0
  403. package/lib/colorjs.io/types/src/set.d.ts +18 -0
  404. package/lib/colorjs.io/types/src/setAll.d.ts +14 -0
  405. package/lib/colorjs.io/types/src/space-accessors.d.ts +1 -0
  406. package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +69 -0
  407. package/lib/colorjs.io/types/src/space.d.ts +143 -0
  408. package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +3 -0
  409. package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +3 -0
  410. package/lib/colorjs.io/types/src/spaces/acescc.d.ts +3 -0
  411. package/lib/colorjs.io/types/src/spaces/acescg.d.ts +3 -0
  412. package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +3 -0
  413. package/lib/colorjs.io/types/src/spaces/hsl.d.ts +3 -0
  414. package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +3 -0
  415. package/lib/colorjs.io/types/src/spaces/hsv.d.ts +3 -0
  416. package/lib/colorjs.io/types/src/spaces/hwb.d.ts +3 -0
  417. package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +3 -0
  418. package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +9 -0
  419. package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +29 -0
  420. package/lib/colorjs.io/types/src/spaces/index.d.ts +4 -0
  421. package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +3 -0
  422. package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +3 -0
  423. package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +3 -0
  424. package/lib/colorjs.io/types/src/spaces/lab.d.ts +3 -0
  425. package/lib/colorjs.io/types/src/spaces/lch.d.ts +3 -0
  426. package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +3 -0
  427. package/lib/colorjs.io/types/src/spaces/luv.d.ts +3 -0
  428. package/lib/colorjs.io/types/src/spaces/oklab.d.ts +3 -0
  429. package/lib/colorjs.io/types/src/spaces/oklch.d.ts +3 -0
  430. package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +3 -0
  431. package/lib/colorjs.io/types/src/spaces/p3.d.ts +3 -0
  432. package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +3 -0
  433. package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +3 -0
  434. package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +3 -0
  435. package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +3 -0
  436. package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +3 -0
  437. package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +3 -0
  438. package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +3 -0
  439. package/lib/colorjs.io/types/src/spaces/srgb.d.ts +3 -0
  440. package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +3 -0
  441. package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +3 -0
  442. package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +3 -0
  443. package/lib/colorjs.io/types/src/to.d.ts +14 -0
  444. package/lib/colorjs.io/types/src/toGamut.d.ts +45 -0
  445. package/lib/colorjs.io/types/src/util.d.ts +58 -0
  446. package/lib/colorjs.io/types/src/variations.d.ts +5 -0
  447. package/logo.svg +159 -0
  448. package/package.json +41 -0
@@ -0,0 +1,65 @@
1
+ .color-slider {
2
+ display: block;
3
+ margin: 0 1em auto 0;
4
+ width: 100%;
5
+ -moz-appearance: none;
6
+ -webkit-appearance: none;
7
+ background: linear-gradient(to right, var(--stops)), var(--transparency);
8
+ height: 2.2em;
9
+ border-radius: .3em;
10
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.5);
11
+
12
+
13
+ &::-webkit-slider-thumb {
14
+ width: 1em;
15
+ height: 2.3em;
16
+ -webkit-appearance: none;
17
+ border-radius: .15em;
18
+ border: 1px solid black;
19
+ box-shadow: 0 0 0 1px white;
20
+ }
21
+
22
+ &::-moz-range-thumb {
23
+ width: 1em;
24
+ height: 2.3em;
25
+ border-radius: .15em;
26
+ border: 1px solid black;
27
+ box-shadow: 0 0 0 1px white;
28
+ background: transparent;
29
+ }
30
+
31
+ &::-moz-range-track {
32
+ background: none;
33
+ }
34
+
35
+ & + input[type=number] {
36
+ position: absolute;
37
+ margin-top: -4em;
38
+ left: calc(100% * var(--percentage));
39
+ transform: translateX(-50%);
40
+ padding: .2em .5em;
41
+ width: 3em;
42
+ border: 0;
43
+ border-radius: .3em;
44
+ text-align: center;
45
+ color: white;
46
+ background: rgba(0,0,0,.8);
47
+ font: inherit;
48
+ font-size: 120%;
49
+ transition: .3s left cubic-bezier(.17,.67,.49,1.48) ;
50
+ }
51
+
52
+ /* Prevent input from moving all over the place as we type */
53
+ & + input[type=number]:focus {
54
+ transition-delay: .5s;
55
+ }
56
+
57
+ label:not(:focus-within):not(:hover) > .color-slider + input[type=number] {
58
+ display: none;
59
+ }
60
+
61
+ }
62
+
63
+ .color-slider-label {
64
+ position: relative;
65
+ }
@@ -0,0 +1,41 @@
1
+ [part="swatch-wrapper"] {
2
+ display: inline-flex;
3
+ align-items: baseline;
4
+ gap: .2em;
5
+ margin-inline: .1em;
6
+ }
7
+
8
+ #swatch {
9
+ --color-image: linear-gradient(var(--color), var(--color));
10
+ --transparency-tile-size: clamp(6px, .5em, 30px);
11
+ --transparency-grid: repeating-conic-gradient(hsl(0 0% 85%) 0 25%, hsl(0 0% 98%) 0 50%) 0 0 / var(--transparency-tile-size) var(--transparency-tile-size);
12
+ --border-width: clamp(2px, .15em, 16px);
13
+ --box-shadow-blur: clamp(2px, .1em, 5px);
14
+ --box-shadow-color: rgb(0 0 0 / .3);
15
+
16
+ position: relative;
17
+ bottom: calc(-1 * var(--border-width) - .1em);
18
+ width: 1.2em;
19
+ height: 1.2em;
20
+ border: var(--border-width) solid white;
21
+ box-sizing: border-box;
22
+ background: var(--color-image, 0), var(--transparency-grid, canvas);
23
+ box-shadow: calc(var(--box-shadow-blur) * .2) calc(var(--box-shadow-blur) * .2) var(--box-shadow-blur) var(--box-shadow-color);
24
+ border-radius: clamp(1px, .1em, 10px);
25
+ }
26
+
27
+ #swatch:hover {
28
+ transform: scale(1.5);
29
+ transition: .4s;
30
+ }
31
+
32
+ #swatch.invalid {
33
+ --color-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y=".9em" font-size="90">⚠️</text></svg>');
34
+ --transparency-grid: initial;
35
+ }
36
+
37
+ @media (prefers-color-scheme: dark) {
38
+ #swatch {
39
+ --box-shadow-color: rgb(0 0 0 / .8);
40
+ }
41
+ }
@@ -0,0 +1,79 @@
1
+ import Color from "../../src/index.js";
2
+
3
+ let styleURL = new URL("./color-swatch.css", import.meta.url);
4
+
5
+ export default class ColorSwatch extends HTMLElement {
6
+ #swatch;
7
+
8
+ constructor () {
9
+ super();
10
+ this.attachShadow({mode: "open"});
11
+ this.shadowRoot.innerHTML = `<style>@import url("${ styleURL }");</style>
12
+ <div part="swatch-wrapper">
13
+ <div id="swatch" part="swatch"></div>
14
+ <slot></slot>
15
+ </div>`;
16
+ this.#swatch = this.shadowRoot.querySelector("#swatch");
17
+ this.attributeChangedCallback();
18
+ }
19
+
20
+ connectedCallback () {
21
+ this.#render();
22
+ ColorSwatch.#mo.observe(this, {childList: true, subtree: true, characterData: true});
23
+ }
24
+
25
+ #value;
26
+ get value () {
27
+ return this.#value;
28
+ }
29
+ set value (value) {
30
+ this.#value = value;
31
+ this.#render();
32
+ }
33
+
34
+ #color;
35
+ get color () {
36
+ return this.#color;
37
+ }
38
+
39
+ #render () {
40
+ let colorText = this.value || this.textContent;
41
+
42
+ try {
43
+ this.#color = new Color(colorText);
44
+ this.#swatch.style.cssText = `--color: ${this.#color.display()}`;
45
+ this.#swatch.classList.remove("invalid");
46
+ }
47
+ catch (e) {
48
+ this.#color = null;
49
+ this.#swatch.classList.add("invalid");
50
+ }
51
+ }
52
+
53
+ static get observedAttributes () {
54
+ return ["value"];
55
+ }
56
+
57
+ attributeChangedCallback (name, newValue) {
58
+ if (!name && this.hasAttribute("value") || name === "value") {
59
+ this.value = this.getAttribute("value");
60
+ }
61
+ }
62
+
63
+ static #mo = new MutationObserver(mutations => {
64
+ for (let mutation of mutations) {
65
+ let target = mutation.target;
66
+
67
+ while (target && !(target instanceof ColorSwatch)) {
68
+ target = target.parentNode;
69
+ }
70
+
71
+ if (target) {
72
+ target.#render();
73
+ }
74
+ }
75
+ });
76
+ }
77
+
78
+
79
+ customElements.define("color-swatch", ColorSwatch);
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: &lt;color-swatch>
3
+ ---
4
+
5
+
6
+ <script src="color-swatch.js" type="module"></script>
7
+ <style>
8
+ html {
9
+ color-scheme: light dark;
10
+ }
11
+
12
+ @media (prefers-color-scheme: dark) {
13
+ html {
14
+ background: hsl(220 5% 20%);
15
+ }
16
+ }
17
+
18
+ color-swatch {
19
+ display: block;
20
+ margin: 1em 0;
21
+ }
22
+ </style>
23
+
24
+
25
+ <h1>&lt;color-swatch></h1>
26
+
27
+ <section>
28
+ <h2>Different font sizes</h2>
29
+ <color-swatch style="font-size: 70%" contentEditable>lch(50% 40 30)</color-swatch>
30
+ <color-swatch contentEditable>lch(50% 40 30)</color-swatch>
31
+ <color-swatch style="font-size: 200%" contentEditable>lch(50% 40 30)</color-swatch>
32
+ <color-swatch style="font-size: 400%" contentEditable>lch(50% 40 30)</color-swatch>
33
+ <color-swatch style="font-size: 800%" contentEditable>lch(50% 40 30)</color-swatch>
34
+ </section>
35
+
36
+ <p>Semi-transparent color</p>
37
+ <color-swatch>hsl(340 90% 50% / .25)</color-swatch>
38
+
39
+ <p>Invalid color</p>
40
+ <color-swatch>foobar</color-swatch>
@@ -0,0 +1,68 @@
1
+ export default function (Class, attributes = Class.attributes) {
2
+ Object.defineProperty(Class.prototype, "_props", {
3
+ get () {
4
+ let value = {};
5
+ Object.defineProperty(this, "_props", {
6
+ value,
7
+ writable: true,
8
+ configurable: true,
9
+ enumerable: false,
10
+ });
11
+ return value;
12
+ },
13
+ writable: true,
14
+ configurable: true,
15
+ });
16
+
17
+ // Define getters and setters for each attribute
18
+ for (let name in attributes) {
19
+ let spec = Class.attributes[name] ?? {};
20
+ let {type, default: defaultValue} = spec;
21
+
22
+ Object.defineProperty(Class.prototype, name, {
23
+ get () {
24
+ let value = this._props[name];
25
+
26
+ if (value === undefined && defaultValue !== undefined) {
27
+ return defaultValue;
28
+ }
29
+
30
+ return value;
31
+ },
32
+ set (value) {
33
+ let oldValue = this._props[name];
34
+ let oldAttributeValue = this.getAttribute(name);
35
+ let originalValue = value;
36
+ let originalClass = value.constructor;
37
+ let originalType = typeof value;
38
+
39
+ if (type && type !== String) {
40
+ if (type === Number) {
41
+ value = Number(value);
42
+ }
43
+ else if (type === Boolean) {
44
+ value = value !== null;
45
+ }
46
+ else {
47
+ // Assume it's a class
48
+ value = new type(value);
49
+ }
50
+ }
51
+
52
+ this._props[name] = value;
53
+
54
+ if (value !== oldValue && oldAttributeValue !== originalValue) {
55
+ if (type === Boolean) {
56
+ this.toggleAttribute(name, value);
57
+ }
58
+ else {
59
+ this.setAttribute(name, value);
60
+ }
61
+ }
62
+ },
63
+ enumerable: true,
64
+ });
65
+ }
66
+
67
+ // Class.prototype._initializeProps = function () {};
68
+ }
@@ -0,0 +1,10 @@
1
+ let specifier;
2
+
3
+ if (import.meta.resolve("colorjs.io")) {
4
+ specifier = "colorjs.io";
5
+ }
6
+ else {
7
+ specifier = "../node_modules/colorjs.io/dist/color.js";
8
+ }
9
+
10
+ export default await import(specifier);
@@ -0,0 +1,256 @@
1
+ import Color from "../common/color.js";
2
+ import "../color-gamut/color-gamut.js";
3
+ // const styles = await fetch("./style.css").then(r => r.text());
4
+
5
+ const gamuts = ["srgb", "p3", "rec2020"];
6
+
7
+ let styleURL = new URL("./style.css", import.meta.url);
8
+ let importIncrementable = import("https://incrementable.verou.me/incrementable.mjs").then(m => m.default);
9
+
10
+ export default class CSSColor extends HTMLElement {
11
+ #dom = {};
12
+
13
+ constructor () {
14
+ super();
15
+ this.attachShadow({mode: "open"});
16
+ this.shadowRoot.innerHTML = `
17
+ <style>@import url("${ styleURL }")</style>
18
+ <slot name="swatch">
19
+ <div id="swatch" part="swatch"></div>
20
+ </slot>
21
+ <div id="wrapper">
22
+ <slot name="before"></slot>
23
+ <div part="color-wrapper">
24
+ <slot></slot>
25
+ </div>
26
+ <slot name="after"></slot>
27
+ </div>
28
+ `;
29
+ }
30
+
31
+ #initialized;
32
+
33
+ connectedCallback () {
34
+ if (!this.#initialized) {
35
+ this.#initialize();
36
+ }
37
+
38
+ // This should eventually be a custom state
39
+ this.#dom.wrapper.classList.toggle("static", !this.#dom.input);
40
+
41
+ if (this.#dom.input) {
42
+ if (!this.#dom.input.incrementable) {
43
+ // Increment numbers by keyboard arrow keys
44
+ importIncrementable.then(Incrementable => new Incrementable(this.#dom.input));
45
+ }
46
+ }
47
+
48
+ this.#render();
49
+ }
50
+
51
+ #errorTimeout;
52
+ #cs;
53
+ #scopeRoot;
54
+
55
+ // Gets called when the element is connected for the first time
56
+ #initialize ({force} = {}) {
57
+ if (!force && this.#initialized) {
58
+ return;
59
+ }
60
+
61
+ this.#initialized = true;
62
+
63
+ this.#dom.wrapper = this.shadowRoot.querySelector("#wrapper");
64
+ this.#dom.colorWrapper = this.shadowRoot.querySelector("[part=color-wrapper]");
65
+ this.#dom.input = this.querySelector("input");
66
+
67
+ if (this.#dom.input) {
68
+ this.#dom.input.addEventListener("input", evt => {
69
+ this.#render(evt);
70
+ });
71
+ }
72
+
73
+ this.verbatim = this.hasAttribute("verbatim");
74
+
75
+ if (this.verbatim) {
76
+ // Cannot display gamut info without parsing the color
77
+ this.setAttribute("gamuts", "none");
78
+ }
79
+
80
+ this.gamuts = null;
81
+ if (!this.matches('[gamuts="none"]')) {
82
+ this.gamuts = this.getAttribute("gamuts") ?? "srgb, p3, rec2020: P3+, prophoto: PP";
83
+ this.#dom.gamutIndicator = document.createElement("color-gamut");
84
+
85
+ Object.assign(this.#dom.gamutIndicator, {
86
+ gamuts: this.gamuts,
87
+ id: "gamut",
88
+ part: "gamut",
89
+ exportparts: "label: gamutlabel",
90
+ });
91
+
92
+ this.#dom.colorWrapper.appendChild(this.#dom.gamutIndicator);
93
+
94
+ this.#dom.gamutIndicator.addEventListener("gamutchange", evt => {
95
+ this.setAttribute("gamut", evt.detail.gamut);
96
+ this.dispatchEvent(new CustomEvent("gamutchange", {
97
+ detail: evt.detail,
98
+ }));
99
+ });
100
+ }
101
+
102
+ if (this.hasAttribute("property")) {
103
+ this.property = this.getAttribute("property");
104
+ this.scope = this.getAttribute("scope") ?? ":root";
105
+ this.#dom.style = document.createElement("style");
106
+ document.head.appendChild(this.#dom.style);
107
+
108
+ let varRef = `var(${this.property})`;
109
+ if (this.verbatim) {
110
+ this.style.setProperty("--color", varRef);
111
+ this.value ||= varRef;
112
+ }
113
+ else {
114
+ let scopeRoot = this.closest(this.scope);
115
+
116
+ // Is contained within scope root
117
+ if (scopeRoot) {
118
+ this.style.setProperty("--color", varRef);
119
+ }
120
+
121
+ scopeRoot ??= document.querySelector(this.scope);
122
+
123
+ if (scopeRoot) {
124
+ let cs = getComputedStyle(scopeRoot);
125
+ this.value = cs.getPropertyValue(this.property);
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ #render (evt) {
132
+ if (!this.#initialized) {
133
+ return;
134
+ }
135
+
136
+ clearTimeout(this.#errorTimeout);
137
+
138
+ if (!this.isConnected) {
139
+ return;
140
+ }
141
+
142
+ let value = this.value;
143
+ this.#color = null;
144
+
145
+ if (value) {
146
+ try {
147
+ this.#color = new Color(value);
148
+ }
149
+ catch (e) {
150
+ // Why a timeout? We don't want to produce errors for intermediate states while typing,
151
+ // but if this is a genuine error, we do want to communicate it.
152
+ this.#errorTimeout = setTimeout(_ => this.#dom.input?.setCustomValidity(e.message), 500);
153
+ }
154
+
155
+ if (this.#color) {
156
+ this.#setColor(this.#color);
157
+ this.#dom.input?.setCustomValidity("");
158
+ }
159
+
160
+ this.dispatchEvent(new CustomEvent("colorchange", {
161
+ detail: {
162
+ color: this.#color,
163
+ },
164
+ }));
165
+ }
166
+ }
167
+
168
+ get gamut () {
169
+ return this.#dom.gamutIndicator.gamut;
170
+ }
171
+
172
+ get value () {
173
+ return this.#dom.input?.value ?? this.textContent.trim();
174
+ }
175
+
176
+ set value (value) {
177
+ let oldValue = this.value;
178
+ if (value === oldValue) {
179
+ return;
180
+ }
181
+
182
+ this.#setValue(value);
183
+ this.#render();
184
+ }
185
+
186
+ #setValue (value) {
187
+ if (!this.#initialized) {
188
+ this.#initialize();
189
+ }
190
+
191
+ if (this.#dom.input) {
192
+ this.#dom.input.value = value;
193
+ }
194
+ else {
195
+ this.textContent = value;
196
+ }
197
+ }
198
+
199
+ #color;
200
+ get color () {
201
+ return this.#color;
202
+ }
203
+
204
+ set color (color) {
205
+ if (typeof color === "string") {
206
+ color = new Color(color);
207
+ }
208
+
209
+ this.#setColor(color);
210
+
211
+ let colorString;
212
+ if (this.verbatim && this.property) {
213
+ colorString = `var(${this.property})`;
214
+ }
215
+ else {
216
+ colorString = color.toString({ precision: 2, inGamut: false });
217
+ }
218
+ this.#setValue(colorString);
219
+ }
220
+
221
+ #setColor (color) {
222
+ this.#color = color;
223
+ let colorString;
224
+
225
+ if (this.verbatim && this.property) {
226
+ colorString = `var(${this.property})`;
227
+ }
228
+ else {
229
+ try {
230
+ colorString = this.#color.display({inGamut: false});
231
+
232
+ }
233
+ catch (e) {
234
+ colorString = this.value;
235
+ }
236
+ }
237
+
238
+ if (this.value === colorString) {
239
+ return;
240
+ }
241
+
242
+ this.style.setProperty("--color", colorString);
243
+
244
+ if (this.property) {
245
+ this.#dom.style.textContent = `${this.scope} { ${this.property}: ${colorString}; }`;
246
+ }
247
+
248
+ if (this.#dom.gamutIndicator) {
249
+ this.#dom.gamutIndicator.color = this.#color;
250
+ }
251
+ }
252
+
253
+ static observedAttributes = ["for", "property"];
254
+ }
255
+
256
+ customElements.define("css-color", CSSColor);
@@ -0,0 +1,43 @@
1
+ <h1>&lt;css-color></h1>
2
+
3
+ <script src="./css-color.js" type="module"></script>
4
+ <h2>Static</h2>
5
+ <css-color>oklch(70% 0.25 138)</css-color>
6
+ <css-color swatch="large">oklch(70% 0.25 138)</css-color>
7
+
8
+ <h2>Editable</h2>
9
+ <css-color>
10
+ <input value="oklch(70% 0.25 138)" />
11
+ </css-color>
12
+ <css-color swatch="large">
13
+ <input value="oklch(70% 0.25 138)" />
14
+ </css-color>
15
+
16
+ <h2>With name</h2>
17
+ <css-color>
18
+ <label slot="before" for=c1>Accent color:</label>
19
+ <input value="oklch(70% 0.25 138)" id=c1 />
20
+ </css-color>
21
+ <css-color swatch="large">
22
+ <label slot="before" id=c2>Accent color:</label>
23
+ <input value="oklch(70% 0.25 138)" id=c2 />
24
+ </css-color>
25
+
26
+ <h2>Bound to CSS property</h2>
27
+ <css-color swatch="large" property="--color-red">
28
+ <input />
29
+ </css-color>
30
+
31
+ <h2>Update via JS</h2>
32
+ <h3>Static</h3>
33
+ <css-color id="dynamic_static">oklch(70% 0.25 138)</css-color>
34
+ <script type="module">
35
+ dynamic_static.color = "oklch(60% 0.15 0)"
36
+ </script>
37
+ <h3>Editable</h3>
38
+ <css-color id="dynamic_editable">
39
+ <input value="oklch(70% 0.25 138)" />
40
+ </css-color>
41
+ <script type="module">
42
+ dynamic_editable.color = "oklch(60% 0.15 0)"
43
+ </script>
@@ -0,0 +1,67 @@
1
+ :host {
2
+ display: inline-flex;
3
+ gap: .3em;
4
+ width: min-content;
5
+ white-space: nowrap;
6
+ --background-checkerboard: repeating-conic-gradient(rgb(0 0 0 / .12) 0 25%, transparent 0 50%) 0 0 / 1em 1em;
7
+ }
8
+
9
+ #gamut {
10
+ font-size: 80%;
11
+ }
12
+
13
+ #wrapper {
14
+ display: flex;
15
+ flex-flow: inherit;
16
+
17
+ &.static {
18
+ gap: .4em;
19
+ }
20
+ }
21
+
22
+ [part="color-wrapper"] {
23
+ position: relative;
24
+ display: flex;
25
+ gap: .2em;
26
+
27
+ &:not(.static *) {
28
+ #gamut {
29
+ position: absolute;
30
+ inset: .3em;
31
+ inset-inline-start: auto;
32
+ }
33
+ }
34
+
35
+ ::slotted(input) {
36
+ padding-inline-end: 2em;
37
+ }
38
+ }
39
+
40
+ :host(:not([for])) #swatch {
41
+ display: block;
42
+ inline-size: 2em;
43
+ border-radius: .2em;
44
+ background: linear-gradient(var(--color, transparent) 0 100%), var(--background-checkerboard);
45
+ }
46
+
47
+ :host([swatch="none"]) #swatch {
48
+ display: none;
49
+ }
50
+
51
+ :host(:not([for])):host([swatch="large"]) {
52
+ flex-flow: column;
53
+
54
+ #wrapper {
55
+ flex-flow: column;
56
+ }
57
+ }
58
+
59
+ :host(:not([for])):host([swatch="large"]) #swatch {
60
+ inline-size: auto;
61
+ block-size: 5em;
62
+ }
63
+
64
+ :host(:not([for])):host([swatch="large"]) #wrapper.static slot {
65
+ display: flex;
66
+ flex: 1;
67
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "layout": "page",
3
+ "permalink": "{{ page.filePathStem | replace('README', '') | replace('index', '') }}/index.html",
4
+ "body_classes": "cn-ignore"
5
+ }
package/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { default as ColorSlider } from './color-slider/color-slider.js';
2
+ export { default as ColorSwatch } from './color-swatch/color-swatch.js';
3
+ export { default as CSSColor } from './css-color/css-color.js';
4
+ export { default as ColorGamut } from './color-gamut/color-gamut.js';
package/lib/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # `lib`
2
+
3
+ Dependencies from `node_modules` are automatically copied here.
4
+ This directory is included in the `.gitignore` file.