color-elements 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -15
- package/_build/copy-config.json +1 -1
- package/_build/eleventy.js +7 -2
- package/_build/filters-extra.js +1 -1
- package/_includes/component.njk +9 -1
- package/_includes/partials/_nav-links.njk +11 -4
- package/_redirects +8 -1
- package/assets/css/style.css +78 -1
- package/assets/js/index.js +6 -6
- package/data/components.json +12 -0
- package/debug.html +447 -0
- package/index.js +5 -1
- package/package.json +2 -1
- 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 +50 -8
- package/src/channel-slider/channel-slider.css +47 -5
- package/src/channel-slider/channel-slider.js +74 -39
- 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 +42 -1
- package/src/color-inline/color-inline.css +11 -4
- package/src/color-inline/color-inline.js +56 -50
- package/src/color-inline/color-inline.webp +0 -0
- package/src/color-picker/README.md +107 -5
- package/src/color-picker/color-picker.css +21 -6
- package/src/color-picker/color-picker.js +147 -60
- 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 +31 -4
- package/src/color-slider/color-slider.css +17 -7
- package/src/color-slider/color-slider.js +80 -38
- package/src/color-slider/color-slider.webp +0 -0
- package/src/color-swatch/README.md +265 -6
- package/src/color-swatch/color-swatch.css +162 -27
- package/src/color-swatch/color-swatch.js +191 -217
- package/src/color-swatch/color-swatch.webp +0 -0
- package/src/common/color-element.js +86 -0
- package/src/common/dom.js +1 -1
- package/src/common/util.js +12 -99
- 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 +1 -1
- 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/_data/components.json +0 -8
- 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
- package/src/color-gamut/README.md +0 -75
- package/src/color-gamut/color-gamut.css +0 -32
- package/src/color-gamut/color-gamut.js +0 -172
- package/src/common/color.js +0 -12
|
@@ -14,6 +14,20 @@ Color spaces not supported by the browser also work:
|
|
|
14
14
|
<color-picker space="okhsl" color="color(--okhsl 180 50% 50%)"></color-picker>
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
If no color space or color is provided, the default ones will be used: `oklch` for the space and `oklch(50% 50% 180)` for the color.
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<color-picker></color-picker>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### The `alpha` attribute
|
|
24
|
+
|
|
25
|
+
Colors with the alpha channel are also supported. Add the `alpha` boolean attribute to show the alpha channel:
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<color-picker space="oklch" color="oklch(60% 30% 180 / 0.6)" alpha></color-picker>
|
|
29
|
+
```
|
|
30
|
+
|
|
17
31
|
### Slots
|
|
18
32
|
|
|
19
33
|
```html
|
|
@@ -22,6 +36,29 @@ Color spaces not supported by the browser also work:
|
|
|
22
36
|
</color-picker>
|
|
23
37
|
```
|
|
24
38
|
|
|
39
|
+
You can use your component instead of the default color swatch:
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<color-picker space="oklch" color="oklch(50% 50% 180)"
|
|
43
|
+
oncolorchange="this.firstElementChild.textContent = this.color">
|
|
44
|
+
<color-inline slot="swatch" style="place-self: center; min-inline-size: fit-content"></color-inline>
|
|
45
|
+
</color-picker>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
or your own form element instead of the default space picker:
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<color-picker space="oklab" color="oklab(60% -0.12 0)">
|
|
52
|
+
<select slot="color-space" size="4">
|
|
53
|
+
<optgroup label="Rectangular Spaces">
|
|
54
|
+
<option value="lab">Lab</option>
|
|
55
|
+
<option value="oklab" selected>Oklab</option>
|
|
56
|
+
<option value="prophoto">ProPhoto</option>
|
|
57
|
+
</optgroup>
|
|
58
|
+
</select>
|
|
59
|
+
</color-picker>
|
|
60
|
+
```
|
|
61
|
+
|
|
25
62
|
### Events
|
|
26
63
|
|
|
27
64
|
As with other components, you can listen to the `colorchange` event:
|
|
@@ -29,20 +66,85 @@ As with other components, you can listen to the `colorchange` event:
|
|
|
29
66
|
```html
|
|
30
67
|
<color-picker space="oklch" color="oklch(50% 50% 180)"
|
|
31
68
|
oncolorchange="this.firstElementChild.textContent = this.color.oklch.join(' ')">
|
|
32
|
-
<div class="coords"
|
|
69
|
+
<div class="coords"></div>
|
|
33
70
|
</color-picker>
|
|
34
71
|
```
|
|
35
72
|
|
|
73
|
+
### Dynamic
|
|
74
|
+
|
|
75
|
+
All attributes are reactive:
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<color-picker space="oklch" color="oklch(60% 30% 180)" id="dynamic_picker">
|
|
79
|
+
<fieldset slot="color-space">
|
|
80
|
+
<legend>Polar Spaces</legend>
|
|
81
|
+
|
|
82
|
+
<label>
|
|
83
|
+
<input type="radio" name="space" value="oklch" checked /> OKLCh
|
|
84
|
+
</label>
|
|
85
|
+
<label>
|
|
86
|
+
<input type="radio" name="space" value="hwb" /> HWB
|
|
87
|
+
</label>
|
|
88
|
+
<label>
|
|
89
|
+
<input type="radio" name="space" value="hsl" /> HSL
|
|
90
|
+
</label>
|
|
91
|
+
</fieldset>
|
|
92
|
+
</color-picker>
|
|
93
|
+
|
|
94
|
+
<script>
|
|
95
|
+
let radios = dynamic_picker.querySelectorAll("input[name=space]");
|
|
96
|
+
radios.forEach(radio => radio.addEventListener("change", evt => dynamic_picker.spaceId = evt.target.value));
|
|
97
|
+
</script>
|
|
98
|
+
|
|
99
|
+
<style>
|
|
100
|
+
label + label {
|
|
101
|
+
margin-inline-start: .3em;
|
|
102
|
+
}
|
|
103
|
+
</style>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<label>
|
|
108
|
+
<input type="checkbox" onchange="this.parentElement.nextElementSibling.alpha = this.checked" /> Alpha channel
|
|
109
|
+
</label>
|
|
110
|
+
<color-picker></color-picker>
|
|
111
|
+
```
|
|
36
112
|
|
|
37
113
|
## Reference
|
|
38
114
|
|
|
115
|
+
### Slots
|
|
116
|
+
|
|
117
|
+
| Name | Description |
|
|
118
|
+
|------|-------------|
|
|
119
|
+
| (default) | The color picker's main content. Goes into the swatch. |
|
|
120
|
+
| `color-space` | An element to display (and if writable, also set) the current color space. If not provided, a [`<space-picker>`](../space-picker/) is used. |
|
|
121
|
+
| `swatch` | An element used to provide a visual preview of the current color. |
|
|
122
|
+
|
|
39
123
|
### Attributes & Properties
|
|
40
124
|
|
|
41
125
|
| Attribute | Property | Property type | Default value | Description |
|
|
42
126
|
|-----------|----------|---------------|---------------|-------------|
|
|
43
|
-
| `space` | `
|
|
44
|
-
|
|
|
127
|
+
| `space` | `spaceId` | `string` | `oklch` | The color space to use for interpolation. |
|
|
128
|
+
| – | `space` | `ColorSpace` | `OKLCh` | Color space object corresponding to the `space` attribute. |
|
|
129
|
+
| `color` | `color` | `Color` | `string` | `oklch(50% 50% 180)` | The current color value. |
|
|
130
|
+
| `alpha` | `alpha` | `boolean` | `undefined` | `undefined` | Whether to show the alpha channel slider or not. |
|
|
131
|
+
|
|
132
|
+
### Events
|
|
133
|
+
|
|
134
|
+
| Name | Description |
|
|
135
|
+
|------|-------------|
|
|
136
|
+
| `input` | Fired when the color changes due to user action, such as adjusting the sliders, entering a color in the swatch's text field, or choosing a different color space. |
|
|
137
|
+
| `change` | Fired when the color changes due to user action, such as adjusting the sliders, entering a color in the swatch's text field, or choosing a different color space. |
|
|
138
|
+
| `colorchange` | Fired when the color changes for any reason, and once during initialization. |
|
|
139
|
+
|
|
140
|
+
### CSS variables
|
|
141
|
+
|
|
142
|
+
The styling of `<color-picker>` is fully customizable via CSS variables provided by the [`<color-slider>`](../color-slider/#css-variables) and [`<color-swatch>`](../color-swatch/#css-variables).
|
|
45
143
|
|
|
46
|
-
|
|
144
|
+
### Parts
|
|
47
145
|
|
|
48
|
-
|
|
146
|
+
| Name | Description |
|
|
147
|
+
|------|-------------|
|
|
148
|
+
| `color-space` | The default [`<space-picker>`](../space-picker/) element, used if the `color-space` slot has no slotted elements. |
|
|
149
|
+
| `color-space-base` | The internal `<select>` element of the default [`<space-picker>`](../space-picker/) element. |
|
|
150
|
+
| `swatch` | The default [`<color-swatch>`](../color-swatch/) element, used if the `swatch` slot has no slotted elements. |
|
|
@@ -4,17 +4,32 @@
|
|
|
4
4
|
gap: 1em;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
#space_picker {
|
|
8
|
+
margin-inline-start: -.7em; /* align with the channel names */
|
|
9
|
+
font-size: 150%;
|
|
10
|
+
transition: border-color .2s;
|
|
11
|
+
|
|
12
|
+
&:not(:hover) {
|
|
13
|
+
border-color: transparent;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
[part="color-space"],
|
|
18
|
+
slot[name="color-space"]::slotted(*) {
|
|
19
|
+
grid-column: 1 / -1;
|
|
20
|
+
justify-self: start;
|
|
21
|
+
}
|
|
22
|
+
|
|
7
23
|
#sliders {
|
|
8
24
|
display: flex;
|
|
9
25
|
flex-flow: column;
|
|
26
|
+
justify-content: space-between;
|
|
10
27
|
gap: .3em;
|
|
28
|
+
min-inline-size: 10em;
|
|
11
29
|
}
|
|
12
30
|
|
|
13
|
-
|
|
31
|
+
[part="swatch"],
|
|
32
|
+
slot[name="swatch"]::slotted(*) {
|
|
14
33
|
width: auto;
|
|
15
|
-
|
|
16
|
-
&::part(swatch) {
|
|
17
|
-
flex: 1;
|
|
18
|
-
}
|
|
34
|
+
margin: 0;
|
|
19
35
|
}
|
|
20
|
-
|
|
@@ -1,58 +1,61 @@
|
|
|
1
|
+
import ColorElement from "../common/color-element.js";
|
|
1
2
|
import "../channel-slider/channel-slider.js";
|
|
2
3
|
import "../color-swatch/color-swatch.js";
|
|
3
|
-
import
|
|
4
|
+
import "../space-picker/space-picker.js";
|
|
4
5
|
import * as dom from "../common/dom.js";
|
|
5
|
-
import Color from "../common/color.js";
|
|
6
6
|
|
|
7
|
-
const Self = class ColorPicker extends
|
|
7
|
+
const Self = class ColorPicker extends ColorElement {
|
|
8
8
|
static tagName = "color-picker";
|
|
9
|
+
static url = import.meta.url;
|
|
10
|
+
static dependencies = new Set(["channel-slider"]);
|
|
11
|
+
static shadowStyle = true;
|
|
12
|
+
static shadowTemplate = `
|
|
13
|
+
<slot name="color-space">
|
|
14
|
+
<space-picker id="space_picker" part="color-space" exportparts="base: color-space-base"></space-picker>
|
|
15
|
+
</slot>
|
|
16
|
+
<div id="sliders" part="sliders"></div>
|
|
17
|
+
<slot name="swatch">
|
|
18
|
+
<color-swatch size="large" id="swatch" part="swatch" exportparts="swatch: swatch-base, gamut, details, info, color-wrapper">
|
|
19
|
+
<slot slot="swatch-content"></slot>
|
|
20
|
+
<input value="oklch(70% 0.25 138)" id="color" />
|
|
21
|
+
</color-swatch>
|
|
22
|
+
</slot>`;
|
|
9
23
|
|
|
10
24
|
constructor () {
|
|
11
25
|
super();
|
|
12
26
|
|
|
13
|
-
this.attachShadow({mode: "open"});
|
|
14
|
-
let styleURL = new URL(`./${Self.tagName}.css`, import.meta.url);
|
|
15
|
-
this.shadowRoot.innerHTML = `
|
|
16
|
-
<style>@import url("${ styleURL }")</style>
|
|
17
|
-
<div id=sliders></div>
|
|
18
|
-
<slot name="swatch">
|
|
19
|
-
<color-swatch size="large" id="swatch">
|
|
20
|
-
<slot slot="swatch-content"></slot>
|
|
21
|
-
<input value="oklch(70% 0.25 138)" id="color" />
|
|
22
|
-
</color-swatch>
|
|
23
|
-
</slot>
|
|
24
|
-
`;
|
|
25
|
-
|
|
26
27
|
this._el = dom.named(this);
|
|
28
|
+
this._slots = {
|
|
29
|
+
color_space: this.shadowRoot.querySelector("slot[name=color-space]"),
|
|
30
|
+
};
|
|
27
31
|
}
|
|
28
32
|
|
|
29
|
-
connectedCallback() {
|
|
33
|
+
connectedCallback () {
|
|
30
34
|
super.connectedCallback?.();
|
|
31
35
|
this._el.sliders.addEventListener("input", this);
|
|
32
36
|
this._el.swatch.addEventListener("input", this);
|
|
33
|
-
|
|
34
|
-
this.render();
|
|
37
|
+
this._slots.color_space.addEventListener("input", this);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
disconnectedCallback() {
|
|
40
|
+
disconnectedCallback () {
|
|
38
41
|
this._el.sliders.removeEventListener("input", this);
|
|
39
42
|
this._el.swatch.removeEventListener("input", this);
|
|
43
|
+
this._slots.color_space.removeEventListener("input", this);
|
|
40
44
|
}
|
|
41
45
|
|
|
42
|
-
handleEvent(event) {
|
|
43
|
-
|
|
46
|
+
handleEvent (event) {
|
|
47
|
+
let source = event.target;
|
|
44
48
|
|
|
45
|
-
this.
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
render (source) {
|
|
49
|
-
if (!source || this._el.sliders.contains(source)) {
|
|
49
|
+
if (this._el.sliders.contains(source)) {
|
|
50
50
|
// From sliders
|
|
51
51
|
let coords = [...this._el.sliders.children].map(el => el.value);
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
let alpha = this.color.alpha;
|
|
53
|
+
if (coords.length > 3) {
|
|
54
|
+
alpha = coords.pop() / 100;
|
|
55
|
+
}
|
|
56
|
+
this.color = new Self.Color(this.space, coords, alpha);
|
|
54
57
|
}
|
|
55
|
-
else if (
|
|
58
|
+
else if (this._el.swatch.contains(source)) {
|
|
56
59
|
// From swatch
|
|
57
60
|
if (!this._el.swatch.color) {
|
|
58
61
|
// Invalid color, or still typing
|
|
@@ -60,26 +63,46 @@ const Self = class ColorPicker extends NudeElement {
|
|
|
60
63
|
}
|
|
61
64
|
this.color = this._el.swatch.color;
|
|
62
65
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
slider.defaultColor = this.color;
|
|
66
|
+
else if (this._el.space_picker.contains(source) || this._slots.color_space.assignedElements().includes(source)) {
|
|
67
|
+
this.spaceId = event.target.value;
|
|
66
68
|
}
|
|
69
|
+
|
|
70
|
+
this.dispatchEvent(new event.constructor(event.type, {...event}));
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
propChangedCallback ({name, prop, detail: change}) {
|
|
70
|
-
if (name === "space") {
|
|
74
|
+
if (name === "space" || name === "alpha") {
|
|
75
|
+
let space = this.space;
|
|
76
|
+
|
|
77
|
+
if (this.color.space !== space) {
|
|
78
|
+
this.color = this.color.to(space);
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
let i = 0;
|
|
72
|
-
|
|
82
|
+
let channels = [...Object.keys(this.space.coords)];
|
|
83
|
+
if (this.alpha) {
|
|
84
|
+
channels.push("alpha");
|
|
85
|
+
}
|
|
86
|
+
for (let channel of channels) {
|
|
73
87
|
let slider = this._el.sliders.children[i++];
|
|
74
88
|
|
|
75
89
|
if (slider) {
|
|
76
|
-
slider.space =
|
|
90
|
+
slider.space = space;
|
|
77
91
|
slider.channel = channel;
|
|
78
92
|
}
|
|
79
93
|
else {
|
|
80
|
-
this._el.sliders.insertAdjacentHTML("beforeend", `<channel-slider space="${
|
|
94
|
+
this._el.sliders.insertAdjacentHTML("beforeend", `<channel-slider space="${ space.id }" channel="${ channel }" part="channel-slider"></channel-slider>`);
|
|
81
95
|
}
|
|
82
96
|
}
|
|
97
|
+
|
|
98
|
+
if (this._el.sliders.children.length > channels.length) {
|
|
99
|
+
// Remove the slider for alpha
|
|
100
|
+
this._el.sliders.children[channels.length].remove();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
for (let slider of this._el.sliders.children) {
|
|
104
|
+
slider.color = this.color;
|
|
105
|
+
}
|
|
83
106
|
}
|
|
84
107
|
|
|
85
108
|
if (name === "color") {
|
|
@@ -87,7 +110,7 @@ const Self = class ColorPicker extends NudeElement {
|
|
|
87
110
|
slider.color = this.color;
|
|
88
111
|
}
|
|
89
112
|
|
|
90
|
-
if (
|
|
113
|
+
if (!this._el.swatch.color || !this.color.equals(this._el.swatch.color)) {
|
|
91
114
|
// Avoid typing e.g. "red" and having it replaced with "rgb(100% 0% 0%)" under your caret
|
|
92
115
|
prop.applyChange(this._el.swatch, change);
|
|
93
116
|
}
|
|
@@ -95,24 +118,70 @@ const Self = class ColorPicker extends NudeElement {
|
|
|
95
118
|
}
|
|
96
119
|
|
|
97
120
|
static props = {
|
|
98
|
-
|
|
121
|
+
spaceId: {
|
|
99
122
|
default: "oklch",
|
|
100
|
-
|
|
101
|
-
if (value
|
|
123
|
+
convert (value) {
|
|
124
|
+
if (value === null || value === undefined) {
|
|
102
125
|
return value;
|
|
103
126
|
}
|
|
127
|
+
else if (value instanceof Self.Color.Space) {
|
|
128
|
+
return value.id;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return value + "";
|
|
132
|
+
},
|
|
133
|
+
changed ({parsedValue, source, ...change}) {
|
|
134
|
+
if (!parsedValue && source !== "default") {
|
|
135
|
+
// Something went wrong. We should always have a value. Falling back to the current space
|
|
136
|
+
this.spaceId = this.space.id;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
104
139
|
|
|
105
|
-
|
|
140
|
+
if (this.props.space && this.props.space.id !== parsedValue) {
|
|
141
|
+
// The space object we have in the cache is outdated. We need to delete it so that the space getter returns the updated one
|
|
142
|
+
delete this.props.space;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
reflect: {
|
|
146
|
+
from: "space",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
106
149
|
|
|
107
|
-
|
|
150
|
+
space: {
|
|
151
|
+
get () {
|
|
152
|
+
return this._el.space_picker.selectedSpace;
|
|
108
153
|
},
|
|
109
|
-
|
|
110
|
-
|
|
154
|
+
set: true,
|
|
155
|
+
changed ({parsedValue, ...change}) {
|
|
156
|
+
if (parsedValue === undefined) {
|
|
157
|
+
// this.spaceId changed
|
|
158
|
+
if (this._el.space_picker.value !== this.spaceId) {
|
|
159
|
+
this._el.space_picker.value = this.spaceId;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
else if (!parsedValue) {
|
|
165
|
+
// Something went wrong. We should always have a value. Falling back to the current space
|
|
166
|
+
this.space = this._el.space_picker.selectedSpace;
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
parsedValue = parsedValue instanceof Self.Color.Space ? parsedValue.id : parsedValue;
|
|
171
|
+
if (this.spaceId !== parsedValue) {
|
|
172
|
+
this._el.space_picker.value = parsedValue;
|
|
173
|
+
this.spaceId = parsedValue;
|
|
174
|
+
}
|
|
111
175
|
},
|
|
176
|
+
dependencies: ["spaceId"],
|
|
177
|
+
defaultProp: "spaceId",
|
|
178
|
+
reflect: false,
|
|
112
179
|
},
|
|
113
180
|
|
|
114
181
|
defaultColor: {
|
|
115
|
-
type
|
|
182
|
+
get type () {
|
|
183
|
+
return Self.Color;
|
|
184
|
+
},
|
|
116
185
|
convert (color) {
|
|
117
186
|
return color.to(this.space);
|
|
118
187
|
},
|
|
@@ -124,7 +193,7 @@ const Self = class ColorPicker extends NudeElement {
|
|
|
124
193
|
coords.push((range[0] + range[1]) / 2);
|
|
125
194
|
}
|
|
126
195
|
|
|
127
|
-
return new Color(this.space, coords);
|
|
196
|
+
return new Self.Color(this.space, coords);
|
|
128
197
|
},
|
|
129
198
|
reflect: {
|
|
130
199
|
from: "color",
|
|
@@ -132,9 +201,30 @@ const Self = class ColorPicker extends NudeElement {
|
|
|
132
201
|
},
|
|
133
202
|
|
|
134
203
|
color: {
|
|
135
|
-
type
|
|
136
|
-
|
|
137
|
-
|
|
204
|
+
get type () {
|
|
205
|
+
return Self.Color;
|
|
206
|
+
},
|
|
207
|
+
defaultProp: "defaultColor",
|
|
208
|
+
reflect: false,
|
|
209
|
+
},
|
|
210
|
+
|
|
211
|
+
alpha: {
|
|
212
|
+
parse (value) {
|
|
213
|
+
if (value === undefined || value === null) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (value === false || value === "false") {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (value === "" || value === "alpha" || value === true || value === "true") {
|
|
222
|
+
// Boolean attribute
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
reflect: {
|
|
227
|
+
from: true,
|
|
138
228
|
},
|
|
139
229
|
},
|
|
140
230
|
};
|
|
@@ -142,23 +232,20 @@ const Self = class ColorPicker extends NudeElement {
|
|
|
142
232
|
static events = {
|
|
143
233
|
change: {
|
|
144
234
|
from () {
|
|
145
|
-
return [this._el.sliders, this._el.swatch];
|
|
146
|
-
}
|
|
235
|
+
return [this._el.space_picker, this._el.sliders, this._el.swatch];
|
|
236
|
+
},
|
|
147
237
|
},
|
|
148
238
|
input: {
|
|
149
239
|
from () {
|
|
150
|
-
return [this._el.sliders, this._el.swatch];
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
valuechange: {
|
|
154
|
-
propchange: "value",
|
|
240
|
+
return [this._el.space_picker, this._el.sliders, this._el.swatch];
|
|
241
|
+
},
|
|
155
242
|
},
|
|
156
243
|
colorchange: {
|
|
157
244
|
propchange: "color",
|
|
158
245
|
},
|
|
159
246
|
};
|
|
160
|
-
}
|
|
247
|
+
};
|
|
161
248
|
|
|
162
|
-
|
|
249
|
+
Self.define();
|
|
163
250
|
|
|
164
|
-
export default Self;
|
|
251
|
+
export default Self;
|
|
Binary file
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# `<color-scale>`
|
|
2
|
+
|
|
3
|
+
Display a list of colors.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Specify colors directly, via interpolation in any color space, or a mix of both
|
|
8
|
+
- Display color coordinates, in any color space (or multiple!)
|
|
9
|
+
- Coming soon: display deltas between consecutive colors
|
|
10
|
+
|
|
11
|
+
## Examples
|
|
12
|
+
|
|
13
|
+
### Basic usage
|
|
14
|
+
|
|
15
|
+
Colors via attribute:
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<color-scale space="oklch" colors="#e3fafc, #c5f6fa, #99e9f2, #66d9e8, #3bc9db"></color-scale>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
You can also give them optional names:
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<color-scale space="oklch" colors="
|
|
25
|
+
Gray 50: #f9fafb,
|
|
26
|
+
Gray 100: #f3f4f6,
|
|
27
|
+
Gray 200: #e5e7eb,
|
|
28
|
+
Gray 300: #d1d5db,
|
|
29
|
+
Gray 400: #9ca3af,
|
|
30
|
+
Gray 500: #6b7280,
|
|
31
|
+
Gray 600: #4b5563,
|
|
32
|
+
Gray 700: #374151,
|
|
33
|
+
Gray 800: #1f2937,
|
|
34
|
+
Gray 900: #111827,
|
|
35
|
+
Gray 850: #1a202c
|
|
36
|
+
"></color-scale>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
You can only specify your core colors, and insert steps via interpolation:
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<color-scale colors="#e3fafc, #0b7285" steps="4" space="oklch"></color-scale>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If you have more than 2 colors listed, this will insert steps between each pair.
|
|
47
|
+
|
|
48
|
+
### Customizing the color swatches
|
|
49
|
+
|
|
50
|
+
Under the hood, `<color-scale>` generates and uses a series of [`<color-swatch>`](../color-swatch/) elements.
|
|
51
|
+
|
|
52
|
+
You can specify the `info` attribute to show additional information about the colors, and it will be passed to the generated `<color-swatch`> instances:
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<color-scale space="oklch" info="L: oklch.l, C: oklch.c, H: oklch.h"
|
|
56
|
+
colors="#e3fafc, #c5f6fa, #99e9f2, #66d9e8, #3bc9db"></color-scale>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
You can also create compact color scales, by simply setting `--details-style: compact`:
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<color-scale space="oklch" info="L: oklch.l, C: oklch.c, H: oklch.h"
|
|
64
|
+
style="--details-style: compact"
|
|
65
|
+
colors="#e3fafc, #c5f6fa, #99e9f2, #66d9e8, #3bc9db"></color-scale>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Issue: How to make them focusable??
|
|
69
|
+
|
|
70
|
+
<!--
|
|
71
|
+
If you want to insert interpolated colors only in specific places, you can use empty values:
|
|
72
|
+
|
|
73
|
+
```html
|
|
74
|
+
<color-scale space="oklch" colors="#e3fafc, , , , , , , , , #0b7285"></color-scale>
|
|
75
|
+
``` -->
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
gap: .3em;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
#swatches {
|
|
6
|
+
display: flex;
|
|
7
|
+
gap: inherit;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
color-swatch {
|
|
11
|
+
margin: 0;
|
|
12
|
+
flex: 1;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@supports (grid-template-columns: subgrid) {
|
|
16
|
+
/* Avoid uneven swatch heights */
|
|
17
|
+
#swatches {
|
|
18
|
+
display: grid;
|
|
19
|
+
grid-auto-flow: row;
|
|
20
|
+
grid-template-rows: auto auto;
|
|
21
|
+
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
color-swatch {
|
|
25
|
+
width: 100%;
|
|
26
|
+
grid-row: 1 / span 2;
|
|
27
|
+
display: grid;
|
|
28
|
+
grid-template-rows: subgrid;
|
|
29
|
+
/*
|
|
30
|
+
Container queries don't play well together with subgrid in Chrome 129.
|
|
31
|
+
See https://issues.chromium.org/issues/369331413
|
|
32
|
+
This is a workaround to avoid the issue until the new Chrome version is released.
|
|
33
|
+
*/
|
|
34
|
+
contain: inline-size layout;
|
|
35
|
+
|
|
36
|
+
&::part(swatch) {
|
|
37
|
+
grid-row: 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|