color-elements 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -12
- package/_build/copy-config.js +11 -1
- package/_build/copy-config.json +2 -2
- package/_build/eleventy.js +27 -1
- package/_build/filters-extra.js +3 -0
- package/_includes/component.njk +69 -0
- package/_includes/partials/_nav-links.njk +19 -0
- package/_redirects +9 -2
- package/assets/css/style.css +78 -1
- package/assets/js/index.js +11 -10
- package/data/components.json +12 -0
- package/debug.html +447 -0
- package/eslint.config.js +316 -0
- package/index.js +10 -4
- package/logo.svg +22 -44
- package/package.json +12 -5
- package/src/channel-picker/README.md +103 -0
- package/src/channel-picker/channel-picker.css +31 -0
- package/src/channel-picker/channel-picker.js +168 -0
- package/src/channel-picker/channel-picker.webp +0 -0
- package/src/channel-slider/README.md +165 -0
- package/src/channel-slider/channel-slider.css +61 -0
- package/src/channel-slider/channel-slider.js +287 -0
- package/src/channel-slider/channel-slider.webp +0 -0
- package/src/color-chart/README.md +129 -0
- package/src/color-chart/color-chart-global.css +97 -0
- package/src/color-chart/color-chart.css +112 -0
- package/src/color-chart/color-chart.js +441 -0
- package/src/color-chart/color-chart.webp +0 -0
- package/src/color-inline/README.md +72 -0
- package/{color-swatch/color-swatch.css → src/color-inline/color-inline.css} +11 -4
- package/src/color-inline/color-inline.js +85 -0
- package/src/color-inline/color-inline.webp +0 -0
- package/src/color-inline/style.css +14 -0
- package/src/color-picker/README.md +150 -0
- package/src/color-picker/color-picker.css +35 -0
- package/src/color-picker/color-picker.js +251 -0
- package/src/color-picker/color-picker.webp +0 -0
- package/src/color-scale/README.md +75 -0
- package/src/color-scale/color-scale.css +40 -0
- package/src/color-scale/color-scale.js +164 -0
- package/src/color-scale/color-scale.webp +0 -0
- package/src/color-slider/README.md +220 -0
- package/src/color-slider/color-slider.css +174 -0
- package/src/color-slider/color-slider.js +320 -0
- package/src/color-slider/color-slider.webp +0 -0
- package/src/color-swatch/README.md +359 -0
- package/src/color-swatch/color-swatch.css +230 -0
- package/src/color-swatch/color-swatch.js +252 -0
- package/src/color-swatch/color-swatch.webp +0 -0
- package/src/common/color-element.js +86 -0
- package/src/common/dom.js +61 -0
- package/src/common/util.js +55 -0
- package/src/gamut-badge/README.md +145 -0
- package/src/gamut-badge/gamut-badge.css +78 -0
- package/src/gamut-badge/gamut-badge.js +121 -0
- package/src/gamut-badge/gamut-badge.webp +0 -0
- package/src/index.js.njk +7 -0
- package/src/space-picker/README.md +121 -0
- package/src/space-picker/space-picker.css +23 -0
- package/src/space-picker/space-picker.js +213 -0
- package/src/space-picker/space-picker.webp +0 -0
- package/src/src.json +3 -0
- package/_data/eleventyComputed.11tydata.js +0 -29
- package/color-gamut/README.md +0 -75
- package/color-gamut/color-gamut.js +0 -172
- package/color-gamut/style.css +0 -32
- package/color-slider/README.md +0 -84
- package/color-slider/color-slider.js +0 -79
- package/color-slider/style.css +0 -65
- package/color-swatch/color-swatch.js +0 -79
- package/color-swatch/index.njk +0 -40
- package/common/attributes.js +0 -68
- package/common/color.js +0 -10
- package/css-color/css-color.js +0 -256
- package/css-color/index.njk +0 -43
- package/css-color/style.css +0 -67
- package/lib/README.md +0 -4
- package/lib/colorjs.io/LICENSE +0 -21
- package/lib/colorjs.io/README.json +0 -3
- package/lib/colorjs.io/README.md +0 -257
- package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
- package/lib/colorjs.io/colorjs.io/README.json +0 -3
- package/lib/colorjs.io/colorjs.io/README.md +0 -257
- package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
- package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
- package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
- package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
- package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/package.json +0 -113
- package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
- package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
- package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
- package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
- package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
- package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
- package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
- package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
- package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
- package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
- package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
- package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
- package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
- package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
- package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
- package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
- package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
- package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
- package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
- package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
- package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
- package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
- package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
- package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
- package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
- package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
- package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
- package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
- package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
- package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
- package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
- package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
- package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
- package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
- package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
- package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
- package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
- package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
- package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
- package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
- package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
- package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
- package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
- package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
- package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
- package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
- package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
- package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
- package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
- package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
- package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
- package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
- package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
- package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
- package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
- package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
- package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
- package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
- package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
- package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
- package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
- package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
- package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
- package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
- package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
- package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
- package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
- package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
- package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
- package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
- package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
- package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
- package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
- package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
- package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
- package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
- package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
- package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
- package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
- package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
- package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
- package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
- package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
- package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
- package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
- package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
- package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
- package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
- package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
- package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
- package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
- package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
- package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
- package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
- package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
- package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
- package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
- package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
- package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
- package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
- package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
- package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
- package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
- package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
- package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
- package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
- package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
- package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
- package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
- package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.cjs +0 -5759
- package/lib/colorjs.io/dist/color.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.global.js +0 -5760
- package/lib/colorjs.io/dist/color.global.js.map +0 -1
- package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
- package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
- package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
- package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
- package/lib/colorjs.io/dist/color.global.min.js +0 -2
- package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
- package/lib/colorjs.io/dist/color.js +0 -5755
- package/lib/colorjs.io/dist/color.js.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
- package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.js +0 -7395
- package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
- package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
- package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
- package/lib/colorjs.io/dist/color.min.cjs +0 -2
- package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.min.js +0 -2
- package/lib/colorjs.io/dist/color.min.js.map +0 -1
- package/lib/colorjs.io/package.json +0 -113
- package/lib/colorjs.io/src/CATs.js +0 -131
- package/lib/colorjs.io/src/adapt.js +0 -62
- package/lib/colorjs.io/src/angles.js +0 -44
- package/lib/colorjs.io/src/chromaticity.js +0 -33
- package/lib/colorjs.io/src/clone.js +0 -7
- package/lib/colorjs.io/src/color.js +0 -201
- package/lib/colorjs.io/src/contrast/APCA.js +0 -102
- package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
- package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
- package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
- package/lib/colorjs.io/src/contrast/Weber.js +0 -27
- package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
- package/lib/colorjs.io/src/contrast/index.js +0 -6
- package/lib/colorjs.io/src/contrast.js +0 -28
- package/lib/colorjs.io/src/defaults.js +0 -12
- package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
- package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
- package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
- package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
- package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
- package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
- package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
- package/lib/colorjs.io/src/deltaE/index.js +0 -27
- package/lib/colorjs.io/src/deltaE.js +0 -19
- package/lib/colorjs.io/src/display.js +0 -83
- package/lib/colorjs.io/src/distance.js +0 -21
- package/lib/colorjs.io/src/equals.js +0 -10
- package/lib/colorjs.io/src/get.js +0 -11
- package/lib/colorjs.io/src/getAll.js +0 -20
- package/lib/colorjs.io/src/getColor.js +0 -36
- package/lib/colorjs.io/src/hooks.js +0 -37
- package/lib/colorjs.io/src/inGamut.js +0 -25
- package/lib/colorjs.io/src/index-fn.js +0 -28
- package/lib/colorjs.io/src/index.js +0 -38
- package/lib/colorjs.io/src/interpolation.js +0 -222
- package/lib/colorjs.io/src/keywords.js +0 -158
- package/lib/colorjs.io/src/luminance.js +0 -27
- package/lib/colorjs.io/src/multiply-matrices.js +0 -44
- package/lib/colorjs.io/src/parse.js +0 -198
- package/lib/colorjs.io/src/rgbspace.js +0 -64
- package/lib/colorjs.io/src/serialize.js +0 -86
- package/lib/colorjs.io/src/set.js +0 -33
- package/lib/colorjs.io/src/setAll.js +0 -12
- package/lib/colorjs.io/src/space-accessors.js +0 -86
- package/lib/colorjs.io/src/space.js +0 -440
- package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
- package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
- package/lib/colorjs.io/src/spaces/acescc.js +0 -76
- package/lib/colorjs.io/src/spaces/acescg.js +0 -54
- package/lib/colorjs.io/src/spaces/cam16.js +0 -362
- package/lib/colorjs.io/src/spaces/hct.js +0 -157
- package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
- package/lib/colorjs.io/src/spaces/hsl.js +0 -91
- package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
- package/lib/colorjs.io/src/spaces/hsv.js +0 -65
- package/lib/colorjs.io/src/spaces/hwb.js +0 -58
- package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
- package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
- package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
- package/lib/colorjs.io/src/spaces/index.js +0 -8
- package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
- package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
- package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
- package/lib/colorjs.io/src/spaces/lab.js +0 -74
- package/lib/colorjs.io/src/spaces/lch.js +0 -67
- package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
- package/lib/colorjs.io/src/spaces/luv.js +0 -85
- package/lib/colorjs.io/src/spaces/oklab.js +0 -74
- package/lib/colorjs.io/src/spaces/oklch.js +0 -68
- package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
- package/lib/colorjs.io/src/spaces/p3.js +0 -13
- package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
- package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
- package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
- package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
- package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
- package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
- package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
- package/lib/colorjs.io/src/spaces/srgb.js +0 -127
- package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
- package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
- package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
- package/lib/colorjs.io/src/to.js +0 -26
- package/lib/colorjs.io/src/toGamut.js +0 -310
- package/lib/colorjs.io/src/util.js +0 -254
- package/lib/colorjs.io/src/variations.js +0 -14
- package/lib/colorjs.io/types/index.d.cts +0 -4
- package/lib/colorjs.io/types/index.d.ts +0 -42
- package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
- package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
- package/lib/colorjs.io/types/src/angles.d.ts +0 -7
- package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
- package/lib/colorjs.io/types/src/clone.d.ts +0 -3
- package/lib/colorjs.io/types/src/color.d.ts +0 -160
- package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
- package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
- package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
- package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
- package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
- package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
- package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
- package/lib/colorjs.io/types/src/display.d.ts +0 -17
- package/lib/colorjs.io/types/src/distance.d.ts +0 -8
- package/lib/colorjs.io/types/src/equals.d.ts +0 -3
- package/lib/colorjs.io/types/src/get.d.ts +0 -4
- package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
- package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
- package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
- package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
- package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
- package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
- package/lib/colorjs.io/types/src/index.d.ts +0 -125
- package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
- package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
- package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
- package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
- package/lib/colorjs.io/types/src/parse.d.ts +0 -16
- package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
- package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
- package/lib/colorjs.io/types/src/set.d.ts +0 -18
- package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
- package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
- package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
- package/lib/colorjs.io/types/src/space.d.ts +0 -143
- package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
- package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
- package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
- package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
- package/lib/colorjs.io/types/src/to.d.ts +0 -14
- package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
- package/lib/colorjs.io/types/src/util.d.ts +0 -58
- package/lib/colorjs.io/types/src/variations.d.ts +0 -5
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import ColorElement from "../common/color-element.js";
|
|
2
|
+
import { getStep } from "../common/util.js";
|
|
3
|
+
|
|
4
|
+
let supports = {
|
|
5
|
+
inSpace: CSS?.supports("background", "linear-gradient(in oklab, red, tan)"),
|
|
6
|
+
fieldSizing: CSS?.supports("field-sizing", "content"),
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
const Self = class ColorSlider extends ColorElement {
|
|
10
|
+
static tagName = "color-slider";
|
|
11
|
+
static url = import.meta.url;
|
|
12
|
+
static shadowStyle = true;
|
|
13
|
+
static shadowTemplate = `
|
|
14
|
+
<input type="range" class="color-slider" part="slider" min="0" max="1" step="0.01" />
|
|
15
|
+
<slot name="tooltip" class="slider-tooltip">
|
|
16
|
+
<input type="number" part="spinner" min="0" max="1" step="0.01" />
|
|
17
|
+
</slot>
|
|
18
|
+
<slot></slot>`;
|
|
19
|
+
|
|
20
|
+
constructor () {
|
|
21
|
+
super();
|
|
22
|
+
|
|
23
|
+
this._el = {
|
|
24
|
+
slider: this.shadowRoot.querySelector(".color-slider"),
|
|
25
|
+
spinner: this.shadowRoot.querySelector("input[type=number]"),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
connectedCallback () {
|
|
30
|
+
super.connectedCallback?.();
|
|
31
|
+
|
|
32
|
+
this._el.slider.addEventListener("input", this);
|
|
33
|
+
this._el.spinner.addEventListener("input", this);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
disconnectedCallback () {
|
|
37
|
+
this._el.slider.removeEventListener("input", this);
|
|
38
|
+
this._el.spinner.removeEventListener("input", this);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
handleEvent (event) {
|
|
42
|
+
if (event.type === "input") {
|
|
43
|
+
if (this.tooltip === "progress" && event.target === this._el.spinner) {
|
|
44
|
+
// Convert to value
|
|
45
|
+
let value = this._el.spinner.value;
|
|
46
|
+
this.value = this.valueAt(value / 100);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.value = event.target.value;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
this.dispatchEvent(new event.constructor(event.type, {...event}));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
propChangedCallback ({name, prop, detail: change}) {
|
|
57
|
+
if (["min", "max", "step", "value", "defaultValue"].includes(name)) {
|
|
58
|
+
prop.applyChange(this._el.slider, change);
|
|
59
|
+
|
|
60
|
+
let value = change.value;
|
|
61
|
+
if (this.tooltip === "progress") {
|
|
62
|
+
if (name === "value" || name === "defaultValue") {
|
|
63
|
+
value = +(this.progress * 100).toPrecision(4);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Spinner values when tooltip is "progress"
|
|
67
|
+
value = ({ min: 1, max: 100, step: 1 })[name];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
prop.applyChange(this._el.spinner, {...change, value: +(+value).toPrecision(4)});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (name === "stops") {
|
|
74
|
+
// FIXME will fail if there are none values
|
|
75
|
+
let stops = this.stops;
|
|
76
|
+
let supported = stops.every(color => CSS.supports("color", color));
|
|
77
|
+
|
|
78
|
+
// CSS does not support (yet?) a raw hue interpolation,
|
|
79
|
+
// so we need to fake it with tessellateStops() in cases of polar space and far-apart stops.
|
|
80
|
+
let farApart = false;
|
|
81
|
+
let space = this.space;
|
|
82
|
+
if (space.isPolar) {
|
|
83
|
+
for (let i = 1; i < stops.length; i++) {
|
|
84
|
+
// Even though space is polar, color stops might be in non-polar spaces
|
|
85
|
+
let first = stops[i - 1].to(space);
|
|
86
|
+
let second = stops[i].to(space);
|
|
87
|
+
|
|
88
|
+
let firstHue = first.get("h");
|
|
89
|
+
let secondHue = second.get("h");
|
|
90
|
+
|
|
91
|
+
if (Math.abs(firstHue - secondHue) >= 180) {
|
|
92
|
+
farApart = true;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (!supported || farApart) {
|
|
99
|
+
stops = this.tessellateStops({ steps: 3 });
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
stops = stops.map(color => color.display()).join(", ");
|
|
103
|
+
|
|
104
|
+
this.style.setProperty("--slider-color-stops", stops);
|
|
105
|
+
}
|
|
106
|
+
else if (name === "space" && supports.inSpace) {
|
|
107
|
+
let space = this.space;
|
|
108
|
+
let spaceId = space.id;
|
|
109
|
+
let supported = CSS.supports("background", `linear-gradient(in ${ spaceId }, red, tan)`);
|
|
110
|
+
|
|
111
|
+
if (!supported) {
|
|
112
|
+
spaceId = this.space.isPolar ? "oklch" : "oklab";
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
this.style.setProperty("--color-space", spaceId);
|
|
116
|
+
}
|
|
117
|
+
else if (name === "color" || name === "defaultColor") {
|
|
118
|
+
let color = this.color;
|
|
119
|
+
|
|
120
|
+
if (color) {
|
|
121
|
+
let displayedColor = color.display();
|
|
122
|
+
this.style.setProperty("--color", displayedColor);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (name === "value" || name === "min" || name === "max") {
|
|
126
|
+
this.style.setProperty("--progress", this.progress);
|
|
127
|
+
|
|
128
|
+
if (name === "value" && !supports.fieldSizing) {
|
|
129
|
+
let valueStr = this.value + "";
|
|
130
|
+
this._el.spinner.style.setProperty("--value-length", valueStr.length);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (name === "tooltip") {
|
|
134
|
+
if (change.value !== undefined) {
|
|
135
|
+
let values = this;
|
|
136
|
+
if (change.value === "progress") {
|
|
137
|
+
values = {
|
|
138
|
+
min: 1, max: 100, step: 1,
|
|
139
|
+
value: +(this.progress * 100).toPrecision(4),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
["min", "max", "step", "value"].forEach(name => {
|
|
144
|
+
this._el.spinner[name] = values[name];
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
tessellateStops (options = {}) {
|
|
151
|
+
let stops = this.stops;
|
|
152
|
+
let tessellated = [];
|
|
153
|
+
|
|
154
|
+
for (let i = 1; i < stops.length; i++) {
|
|
155
|
+
let start = stops[i - 1];
|
|
156
|
+
let end = stops[i];
|
|
157
|
+
let steps = start.steps(end, { space: this.space, ...options });
|
|
158
|
+
tessellated.push(...steps);
|
|
159
|
+
|
|
160
|
+
if (i < stops.length - 1) {
|
|
161
|
+
tessellated.pop();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return tessellated;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
get progress () {
|
|
169
|
+
return this.progressAt(this.value);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
progressAt (value) {
|
|
173
|
+
return (value - this.min) / (this.max - this.min);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
valueAt (progress) {
|
|
177
|
+
return this.min + progress * (this.max - this.min);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
colorAt (value) {
|
|
181
|
+
let progress = this.progressAt(value);
|
|
182
|
+
return this.colorAtProgress(progress);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
colorAtProgress (progress) {
|
|
186
|
+
let bands = this.scales?.length;
|
|
187
|
+
|
|
188
|
+
if (bands <= 0) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// FIXME the values outside of [0, 1] should be scaled
|
|
193
|
+
if (progress >= 1) {
|
|
194
|
+
return this.scales.at(-1)(progress);
|
|
195
|
+
}
|
|
196
|
+
else if (progress <= 0) {
|
|
197
|
+
return this.scales[0](progress);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
let band = 1 / bands;
|
|
201
|
+
let scaleIndex = Math.max(0, Math.min(Math.floor(progress / band), bands - 1));
|
|
202
|
+
let scale = this.scales[scaleIndex];
|
|
203
|
+
let color = scale((progress % band) * bands);
|
|
204
|
+
|
|
205
|
+
return color;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
static props = {
|
|
209
|
+
min: {
|
|
210
|
+
type: Number,
|
|
211
|
+
default: 0,
|
|
212
|
+
},
|
|
213
|
+
max: {
|
|
214
|
+
type: Number,
|
|
215
|
+
default: 1,
|
|
216
|
+
},
|
|
217
|
+
step: {
|
|
218
|
+
type: Number,
|
|
219
|
+
default () {
|
|
220
|
+
return getStep(this.max, this.min, { minSteps: 100 });
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
stops: {
|
|
224
|
+
type: {
|
|
225
|
+
is: Array,
|
|
226
|
+
get values () {
|
|
227
|
+
return Self.Color;
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
default: el => [],
|
|
231
|
+
},
|
|
232
|
+
defaultValue: {
|
|
233
|
+
type: Number,
|
|
234
|
+
default () {
|
|
235
|
+
return (this.min + this.max) / 2;
|
|
236
|
+
},
|
|
237
|
+
reflect: {
|
|
238
|
+
from: "value",
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
value: {
|
|
242
|
+
type: Number,
|
|
243
|
+
defaultProp: "defaultValue",
|
|
244
|
+
reflect: false,
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
space: {
|
|
248
|
+
default () {
|
|
249
|
+
return this.stops[0]?.space ?? "oklab";
|
|
250
|
+
},
|
|
251
|
+
parse (value) {
|
|
252
|
+
if (value instanceof Self.Color.Space || value === null || value === undefined) {
|
|
253
|
+
return value;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
value += "";
|
|
257
|
+
|
|
258
|
+
return Self.Color.Space.get(value);
|
|
259
|
+
},
|
|
260
|
+
stringify (value) {
|
|
261
|
+
return value?.id;
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
|
|
265
|
+
color: {
|
|
266
|
+
get type () {
|
|
267
|
+
return Self.Color;
|
|
268
|
+
},
|
|
269
|
+
get () {
|
|
270
|
+
return this.colorAt(this.value);
|
|
271
|
+
},
|
|
272
|
+
dependencies: ["scales", "value"],
|
|
273
|
+
},
|
|
274
|
+
scales: {
|
|
275
|
+
get () {
|
|
276
|
+
let stops = this.stops;
|
|
277
|
+
let scales = [];
|
|
278
|
+
|
|
279
|
+
for (let i = 1; i < stops.length; i++) {
|
|
280
|
+
let start = stops[i - 1];
|
|
281
|
+
let end = stops[i];
|
|
282
|
+
let range = start.range(end, { space: this.space });
|
|
283
|
+
scales.push(range);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return scales;
|
|
287
|
+
},
|
|
288
|
+
dependencies: ["stops", "space"],
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
tooltip: {
|
|
292
|
+
type: String,
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
static events = {
|
|
297
|
+
change: {
|
|
298
|
+
from () {
|
|
299
|
+
return this._el.slider;
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
valuechange: {
|
|
303
|
+
propchange: "value",
|
|
304
|
+
},
|
|
305
|
+
colorchange: {
|
|
306
|
+
propchange: "color",
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
static formAssociated = {
|
|
311
|
+
like: el => el._el.slider,
|
|
312
|
+
role: "slider",
|
|
313
|
+
valueProp: "value",
|
|
314
|
+
changeEvent: "valuechange",
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
Self.define();
|
|
319
|
+
|
|
320
|
+
export default Self;
|
|
Binary file
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# `<color-swatch>`
|
|
2
|
+
|
|
3
|
+
## Examples
|
|
4
|
+
|
|
5
|
+
### Basic usage
|
|
6
|
+
|
|
7
|
+
<table>
|
|
8
|
+
<thead>
|
|
9
|
+
<tr>
|
|
10
|
+
<th></th>
|
|
11
|
+
<th>Default</th>
|
|
12
|
+
<th>Large</th>
|
|
13
|
+
</tr>
|
|
14
|
+
</thead>
|
|
15
|
+
<tbody>
|
|
16
|
+
<tr>
|
|
17
|
+
<th>Static</th>
|
|
18
|
+
<td>
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<color-swatch>oklch(70% 0.25 138)</color-swatch>
|
|
22
|
+
```
|
|
23
|
+
</td>
|
|
24
|
+
<td>
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<color-swatch size="large">oklch(70% 0.25 138)</color-swatch>
|
|
28
|
+
```
|
|
29
|
+
</td>
|
|
30
|
+
</tr>
|
|
31
|
+
<tr>
|
|
32
|
+
<th>Editable</th>
|
|
33
|
+
<td>
|
|
34
|
+
|
|
35
|
+
```html
|
|
36
|
+
<color-swatch>
|
|
37
|
+
<input value="oklch(70% 0.25 138)" />
|
|
38
|
+
</color-swatch>
|
|
39
|
+
```
|
|
40
|
+
</td>
|
|
41
|
+
<td>
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<color-swatch size="large">
|
|
45
|
+
<input value="oklch(70% 0.25 138)" />
|
|
46
|
+
</color-swatch>
|
|
47
|
+
```
|
|
48
|
+
</td>
|
|
49
|
+
</tr>
|
|
50
|
+
</tbody>
|
|
51
|
+
</table>
|
|
52
|
+
|
|
53
|
+
You can use a `--details-style: compact` CSS property to only show the details on user interaction:
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<color-swatch style="--details-style: compact">oklch(70% 0.25 138)</color-swatch>
|
|
57
|
+
<color-swatch size="large" style="--details-style: compact">oklch(70% 0.25 138)</color-swatch>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Warning: This is not keyboard accessible by default.
|
|
61
|
+
To make the element focusable and also show the popup when it is focused, you need to add `tabindex="0"` to your element:
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<color-swatch size="large" style="--details-style: compact" tabindex="0">oklch(70% 0.25 138)</color-swatch>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
By default, the popup will be shown when the element is hovered, focused, `:active`, or the target of the URL hash.
|
|
68
|
+
To circumvent user interaction and force the popup to be open use the `open` attribute.
|
|
69
|
+
You can also use `open="false"` to force it to be closed regardless of interaction:
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<div style="--details-style: compact">
|
|
73
|
+
<color-swatch size="large">oklch(70% 0.25 138)</color-swatch>
|
|
74
|
+
<color-swatch size="large" open>oklch(70% 0.25 138)</color-swatch>
|
|
75
|
+
<color-swatch size="large" open="false">oklch(70% 0.25 138)</color-swatch>
|
|
76
|
+
</div>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### The `value` attribute
|
|
80
|
+
|
|
81
|
+
You can provide the color via the `value` attribute,
|
|
82
|
+
which can be more convenient when you have slotted content.
|
|
83
|
+
|
|
84
|
+
In that case, the content of the element is merely presentational
|
|
85
|
+
(unless it’s an `<input>`).
|
|
86
|
+
If you don’t specify any content, no text will be shown.
|
|
87
|
+
|
|
88
|
+
<table>
|
|
89
|
+
<thead>
|
|
90
|
+
<tr>
|
|
91
|
+
<th>Static</th>
|
|
92
|
+
<th>Editable</th>
|
|
93
|
+
</tr>
|
|
94
|
+
</thead>
|
|
95
|
+
<tbody>
|
|
96
|
+
<tr>
|
|
97
|
+
|
|
98
|
+
<td>
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<color-swatch value="oklch(70% 0.25 138)" size="large">red</color-swatch>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
</td>
|
|
105
|
+
<td>
|
|
106
|
+
|
|
107
|
+
```html
|
|
108
|
+
<color-swatch value="oklch(70% 0.25 138)" size="large">
|
|
109
|
+
<input />
|
|
110
|
+
</color-swatch>
|
|
111
|
+
```
|
|
112
|
+
</td>
|
|
113
|
+
|
|
114
|
+
</tr>
|
|
115
|
+
</tbody>
|
|
116
|
+
</table>
|
|
117
|
+
|
|
118
|
+
You can also use this as a property when creating color swatches dynamically:
|
|
119
|
+
|
|
120
|
+
```html
|
|
121
|
+
<div id="future_swatch_container"></div>
|
|
122
|
+
<script>
|
|
123
|
+
let swatch = document.createElement("color-swatch");
|
|
124
|
+
swatch.value = "oklch(65% 0.15 210)";
|
|
125
|
+
swatch.setAttribute("size", "large");
|
|
126
|
+
swatch.textContent = "Turquoise";
|
|
127
|
+
future_swatch_container.append(swatch);
|
|
128
|
+
</script>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### The `label` attribute
|
|
132
|
+
|
|
133
|
+
You can provide the color label via the `label` attribute.
|
|
134
|
+
|
|
135
|
+
<table>
|
|
136
|
+
<thead>
|
|
137
|
+
<tr>
|
|
138
|
+
<th></th>
|
|
139
|
+
<th>Default</th>
|
|
140
|
+
<th>Large</th>
|
|
141
|
+
</tr>
|
|
142
|
+
</thead>
|
|
143
|
+
<tbody>
|
|
144
|
+
<tr>
|
|
145
|
+
<th>Static</th>
|
|
146
|
+
<td>
|
|
147
|
+
|
|
148
|
+
```html
|
|
149
|
+
<color-swatch label="Turquoise">oklch(65% 0.15 210)</color-swatch>
|
|
150
|
+
```
|
|
151
|
+
</td>
|
|
152
|
+
<td>
|
|
153
|
+
|
|
154
|
+
```html
|
|
155
|
+
<color-swatch label="Turquoise" size="large">oklch(65% 0.15 210)</color-swatch>
|
|
156
|
+
```
|
|
157
|
+
</td>
|
|
158
|
+
</tr>
|
|
159
|
+
<tr>
|
|
160
|
+
<th>Editable</th>
|
|
161
|
+
<td>
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<color-swatch label="Turquoise">
|
|
165
|
+
<input value="oklch(65% 0.15 210)" />
|
|
166
|
+
</color-swatch>
|
|
167
|
+
```
|
|
168
|
+
</td>
|
|
169
|
+
<td>
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<color-swatch label="Turquoise" size="large">
|
|
173
|
+
<input value="oklch(65% 0.15 210)" />
|
|
174
|
+
</color-swatch>
|
|
175
|
+
```
|
|
176
|
+
</td>
|
|
177
|
+
</tr>
|
|
178
|
+
</tbody>
|
|
179
|
+
</table>
|
|
180
|
+
|
|
181
|
+
If the attribute's value matches the element's content, no additional text with the label will be shown.
|
|
182
|
+
|
|
183
|
+
```html
|
|
184
|
+
<color-swatch label="Turquoise" value="oklch(65% 0.15 210)" size="large">Turquoise</color-swatch>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
If used as a property and is not defined via the `label` attribute, its value is that of the element text content.
|
|
188
|
+
|
|
189
|
+
### The `info` attribute
|
|
190
|
+
|
|
191
|
+
You can use the `info` attribute to show information about the color.
|
|
192
|
+
Currently, the only type of information supported is color coords (in any color space), but more will be added in the future.
|
|
193
|
+
|
|
194
|
+
```html
|
|
195
|
+
<color-swatch info="oklch.l, oklch.c, oklch.h" size="large">
|
|
196
|
+
oklch(70% 0.25 138)
|
|
197
|
+
</color-swatch>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
By default, the label for each value will be determined automatically from the type of information (e.g. the full coord name if a coord),
|
|
201
|
+
but you can customize this by adding a label before the description of the data:
|
|
202
|
+
|
|
203
|
+
```html
|
|
204
|
+
<color-swatch info="L: oklch.l, C: oklch.c, H: oklch.h" size="large">
|
|
205
|
+
oklch(70% 0.25 138)
|
|
206
|
+
</color-swatch>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
The `info` attribute plays quite nicely with the `--details-style: compact` style:
|
|
211
|
+
|
|
212
|
+
```html
|
|
213
|
+
<color-swatch size="large" info="oklch.l, oklch.c, oklch.h" style="--details-style: compact">oklch(70% 0.25 138)</color-swatch>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### With slot content
|
|
217
|
+
|
|
218
|
+
Before and after:
|
|
219
|
+
|
|
220
|
+
```html
|
|
221
|
+
<color-swatch>
|
|
222
|
+
<label slot="before" for=c1>Accent color:</label>
|
|
223
|
+
<input value="oklch(70% 0.25 138)" id=c1 />
|
|
224
|
+
</color-swatch>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
```html
|
|
228
|
+
<color-swatch>
|
|
229
|
+
<label slot="before" for=c1>Accent color:</label>
|
|
230
|
+
oklch(70% 0.25 138)
|
|
231
|
+
</color-swatch>
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
```html
|
|
235
|
+
<color-swatch size="large">
|
|
236
|
+
<label slot="before" for=c2>Accent color:</label>
|
|
237
|
+
<input value="oklch(70% 0.25 138)" id=c2 />
|
|
238
|
+
<small slot="after">Tip: Pick a bright medium color.</small>
|
|
239
|
+
</color-swatch>
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Adding text within the default swatch:
|
|
243
|
+
|
|
244
|
+
```html
|
|
245
|
+
<color-swatch size="large">
|
|
246
|
+
<div slot="swatch-content">Some text</div>
|
|
247
|
+
<input value="oklch(70% 0.25 138)" id=c1 />
|
|
248
|
+
</color-swatch>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Note that the text color will automatically switch from black to white to remain readable (using [this technique](https://lea.verou.me/blog/2024/contrast-color/)).
|
|
252
|
+
|
|
253
|
+
----
|
|
254
|
+
|
|
255
|
+
Replacing the whole swatch with a custom element:
|
|
256
|
+
|
|
257
|
+
```html
|
|
258
|
+
<color-swatch size="large">
|
|
259
|
+
<div slot="swatch">Some text</div>
|
|
260
|
+
<input value="oklch(70% 0.25 138)" id=c1 />
|
|
261
|
+
</color-swatch>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
<!--
|
|
265
|
+
### Bound to CSS property
|
|
266
|
+
|
|
267
|
+
You can automatically bind the color swatch to a CSS property by setting the `property` attribute.
|
|
268
|
+
Then you don’t need to provide an initial value, it will be read from the CSS property,
|
|
269
|
+
and updating the color will update the CSS property.
|
|
270
|
+
|
|
271
|
+
```html
|
|
272
|
+
<color-swatch size="large" property="--color-red">
|
|
273
|
+
<input />
|
|
274
|
+
</color-swatch>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
You can use `scope` to select the closest ancestor (via a CSS selector) on which the CSS property will be read from and written to.
|
|
278
|
+
If you don’t, the `<html>` element will be used.
|
|
279
|
+
-->
|
|
280
|
+
|
|
281
|
+
### Events
|
|
282
|
+
|
|
283
|
+
```html
|
|
284
|
+
<color-swatch size="large" oncolorchange="this.nextElementSibling.textContent = this.color">
|
|
285
|
+
<input value="oklch(70% 0.25 138)" />
|
|
286
|
+
</color-swatch>
|
|
287
|
+
<color-inline></color-inline>
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Update via JS
|
|
291
|
+
|
|
292
|
+
#### Static
|
|
293
|
+
|
|
294
|
+
```html
|
|
295
|
+
<color-swatch id="dynamic_static">oklch(70% 0.25 138)</color-swatch>
|
|
296
|
+
<button onclick='dynamic_static.color = "oklch(60% 0.15 0)"'>Change color</button>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Editable
|
|
300
|
+
|
|
301
|
+
```html
|
|
302
|
+
<color-swatch id="dynamic_editable">
|
|
303
|
+
<input value="oklch(70% 0.25 138)" />
|
|
304
|
+
</color-swatch>
|
|
305
|
+
<button onclick='dynamic_editable.color = "oklch(60% 0.15 0)"'>Change color</button>
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Reference
|
|
309
|
+
|
|
310
|
+
### Attributes & Properties
|
|
311
|
+
|
|
312
|
+
| Attribute | Property | Property type | Default value | Description |
|
|
313
|
+
|-----------|----------|---------------|---------------|-------------|
|
|
314
|
+
| `color` | `color` | `Color` | `string` | - | The current color value. |
|
|
315
|
+
| `info` | `info` | `string` | - | Comma-separated list of coords of the current color to be shown. |
|
|
316
|
+
| `value` | `value` | `string` | - | The current value of the swatch. |
|
|
317
|
+
| `label` | `label` | `string` | - | The label of the swatch (e.g., color name). Defaults to the element text content. |
|
|
318
|
+
| `size` | - | `large` | - | The size of the swatch. Currently, it is used only to make a large swatch. |
|
|
319
|
+
| `property` | `property` | `string` | - | CSS property to bind to. |
|
|
320
|
+
| `scope` | `scope` | `string` | `:root` | CSS selector to use as the scope for the specified CSS property. |
|
|
321
|
+
| `gamuts` | `gamuts` | `string` | `srgb, p3, rec2020: P3+, prophoto: PP` | Comma-separated list of gamuts to be used by the gamut indicator. |
|
|
322
|
+
| `open` | `open` | | `null` | Force the details popup open or closed. |
|
|
323
|
+
|
|
324
|
+
### Getters
|
|
325
|
+
|
|
326
|
+
These properties are read-only.
|
|
327
|
+
|
|
328
|
+
| Name | Type | Description |
|
|
329
|
+
|----------|------|-------------|
|
|
330
|
+
| `gamut` | `string` | The id of the current gamut (e.g. `srgb`). |
|
|
331
|
+
|
|
332
|
+
### CSS variables
|
|
333
|
+
|
|
334
|
+
| Name | Type | Description |
|
|
335
|
+
|----------|---------------|-------------|
|
|
336
|
+
| `--details-style` | `compact` | `normal` (default) | |
|
|
337
|
+
| `--transparency-grid` | `<image>` | Gradient used as a background for transparent parts of the swatch. |
|
|
338
|
+
| `--transparency-cell-size` | `<length>` | The size of the cells of the transparency gradient. |
|
|
339
|
+
| `--transparcency-background` | `<color>` | The background color of the transparency gradient. |
|
|
340
|
+
| `--transparency-darkness` | `<percentage>` | The opacity of the black color used for dark parts of the transparency gradient. |
|
|
341
|
+
|
|
342
|
+
### Parts
|
|
343
|
+
|
|
344
|
+
| Name | Description |
|
|
345
|
+
|------|-------------|
|
|
346
|
+
| `swatch` | The swatch used to render the color. |
|
|
347
|
+
| `details` | Wrapper around all non-swatch content (color name, info, etc) |
|
|
348
|
+
| `label` | The label of the swatch |
|
|
349
|
+
| `color-wrapper` | Wrapper around the color name itself |
|
|
350
|
+
| `gamut` | Gamut indicator |
|
|
351
|
+
| `info` | Any info generateed by the `info` attribute |
|
|
352
|
+
|
|
353
|
+
### Events
|
|
354
|
+
|
|
355
|
+
| Name | Description |
|
|
356
|
+
|------|-------------|
|
|
357
|
+
| `valuechange` | Fired when the value changes for any reason, and once during initialization. |
|
|
358
|
+
| `colorchange` | Fired when the color changes for any reason, and once during initialization. |
|
|
359
|
+
| `gamutchange` | Fired when the gamut changes for any reason, and once during initialization. |
|