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
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import ColorElement from "../common/color-element.js";
|
|
2
|
+
import "../space-picker/space-picker.js";
|
|
3
|
+
import * as dom from "../common/dom.js";
|
|
4
|
+
|
|
5
|
+
const Self = class ChannelPicker extends ColorElement {
|
|
6
|
+
static tagName = "channel-picker";
|
|
7
|
+
static url = import.meta.url;
|
|
8
|
+
static shadowStyle = true;
|
|
9
|
+
static shadowTemplate = `
|
|
10
|
+
<space-picker part="color-space" exportparts="base: color-space-base" id="space_picker"></space-picker>
|
|
11
|
+
<select id="picker" part="color-channel-base"></select>`;
|
|
12
|
+
|
|
13
|
+
constructor () {
|
|
14
|
+
super();
|
|
15
|
+
|
|
16
|
+
this._el = dom.named(this);
|
|
17
|
+
|
|
18
|
+
// We need to start listening for this event as soon as the <space-picker> is created
|
|
19
|
+
this._el.space_picker.addEventListener("spacechange", this);
|
|
20
|
+
|
|
21
|
+
// We need to render the picker as soon as possible so as not to choke on invalid initial values
|
|
22
|
+
this.#render();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
connectedCallback () {
|
|
26
|
+
super.connectedCallback?.();
|
|
27
|
+
|
|
28
|
+
this._el.picker.addEventListener("input", this);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
disconnectedCallback () {
|
|
32
|
+
super.disconnectedCallback?.();
|
|
33
|
+
|
|
34
|
+
this._el.space_picker.removeEventListener("spacechange", this);
|
|
35
|
+
this._el.picker.removeEventListener("input", this);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get selectedSpace () {
|
|
39
|
+
return this._el.space_picker.selectedSpace;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
get selectedChannel () {
|
|
43
|
+
return this.selectedSpace.coords?.[this._el.picker.value];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Previously selected channels for each space.
|
|
48
|
+
* Keys are space IDs. Values are coords.
|
|
49
|
+
*/
|
|
50
|
+
#history = {};
|
|
51
|
+
|
|
52
|
+
#render () {
|
|
53
|
+
let space = this.selectedSpace;
|
|
54
|
+
let coords = space.coords;
|
|
55
|
+
|
|
56
|
+
if (space && !coords) {
|
|
57
|
+
console.warn(`Color space "${ space.name }" has no coordinates.`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
this._el.picker.innerHTML = Object.entries(coords)
|
|
62
|
+
.map(([id, coord]) => `<option value="${ id }">${ coord.name }</option>`)
|
|
63
|
+
.join("\n");
|
|
64
|
+
|
|
65
|
+
let [prevSpace, prevChannel] = this.value?.split(".") ?? [];
|
|
66
|
+
if (prevSpace && prevChannel) {
|
|
67
|
+
let prevChannelName = this._el.space_picker.spaces[prevSpace].coords[prevChannel].name;
|
|
68
|
+
let currentChannelName = coords[prevChannel]?.name;
|
|
69
|
+
if (prevChannelName === currentChannelName) {
|
|
70
|
+
// Preserve the channel if it exists in the new space and has the same name ("b" in "oklab" is not the same as "b" in "p3")
|
|
71
|
+
this._el.picker.value = prevChannel;
|
|
72
|
+
}
|
|
73
|
+
else if (this.#history?.[space.id]) {
|
|
74
|
+
// Otherwise, try to restore the last channel used
|
|
75
|
+
this._el.picker.value = this.#history[space.id];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
handleEvent (event) {
|
|
81
|
+
if (event.type === "spacechange") {
|
|
82
|
+
this.#render();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if ([this._el.space_picker, this._el.picker].includes(event.target)) {
|
|
86
|
+
let value = `${ this._el.space_picker.value }.${ this._el.picker.value }`;
|
|
87
|
+
if (value !== this.value) {
|
|
88
|
+
this.value = value;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
propChangedCallback ({name, prop, detail: change}) {
|
|
94
|
+
if (name === "value" && this.value) {
|
|
95
|
+
let [space, channel] = (this.value + "").split(".");
|
|
96
|
+
|
|
97
|
+
let currentSpace = this._el.space_picker.value;
|
|
98
|
+
let currentCoord = this._el.picker.value;
|
|
99
|
+
let currentValue = `${ currentSpace }.${ currentCoord }`;
|
|
100
|
+
|
|
101
|
+
if (!space || !channel) {
|
|
102
|
+
console.warn(`Invalid value "${ this.value }". Expected format: "space.channel". Falling back to "${ currentValue }".`);
|
|
103
|
+
this.value = currentValue;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
let spaces = Object.keys(this._el.space_picker.spaces);
|
|
107
|
+
|
|
108
|
+
if (!spaces.includes(space)) {
|
|
109
|
+
console.warn(`No "${ space }" color space found. Choose one of the following: ${ spaces.join(", ") }. Falling back to "${ currentSpace }".`);
|
|
110
|
+
this.value = currentValue;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
if (currentSpace !== space) {
|
|
114
|
+
this._el.space_picker.value = space;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (currentCoord && currentCoord !== channel) {
|
|
118
|
+
let coords = Object.keys(this.selectedSpace.coords ?? {});
|
|
119
|
+
|
|
120
|
+
if (coords.includes(channel)) {
|
|
121
|
+
this._el.picker.value = channel;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
currentCoord = coords.includes(currentCoord) ? currentCoord : coords[0];
|
|
125
|
+
|
|
126
|
+
let message = `Color space "${ space }" has no coordinate "${ channel }".`;
|
|
127
|
+
if (coords.length) {
|
|
128
|
+
message += ` Choose one of the following: ${ coords.join(", ") }.`;
|
|
129
|
+
}
|
|
130
|
+
message += ` Falling back to "${ currentCoord }".`;
|
|
131
|
+
console.warn(message);
|
|
132
|
+
this.value = `${ space }.${ currentCoord }`;
|
|
133
|
+
channel = currentCoord;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
this.#history[space] = channel;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
static props = {
|
|
144
|
+
value: {
|
|
145
|
+
default: "oklch.l",
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
static events = {
|
|
150
|
+
change: {
|
|
151
|
+
from () {
|
|
152
|
+
return [this._el.space_picker, this._el.picker];
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
input: {
|
|
156
|
+
from () {
|
|
157
|
+
return [this._el.space_picker, this._el.picker];
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
valuechange: {
|
|
161
|
+
propchange: "value",
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
Self.define();
|
|
167
|
+
|
|
168
|
+
export default Self;
|
|
Binary file
|
|
@@ -6,8 +6,8 @@ A [`<color-slider>`](../color-slider) for a specific channel, intended for color
|
|
|
6
6
|
|
|
7
7
|
This is a higher level component than `<color-slider>` for the cases where you want to control a single channel of a color space.
|
|
8
8
|
It offers many conveniences for these cases:
|
|
9
|
-
- It takes care of applying the right `min` and `
|
|
10
|
-
- It automatically generates the start and end colors
|
|
9
|
+
- It takes care of applying the right `min`, `max`, and `step` values to the slider
|
|
10
|
+
- It automatically generates the start and end colors
|
|
11
11
|
- It can provide an editable tooltip as a tooltip that both shows and edits the current value
|
|
12
12
|
- Already includes a suitable label
|
|
13
13
|
|
|
@@ -19,6 +19,12 @@ Basic example:
|
|
|
19
19
|
<channel-slider space="oklch" channel="h"></channel-slider>
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
+
The alpha channel is also supported:
|
|
23
|
+
|
|
24
|
+
```html
|
|
25
|
+
<channel-slider space="oklch" channel="alpha"></channel-slider>
|
|
26
|
+
```
|
|
27
|
+
|
|
22
28
|
In most cases you’d also want to set a color to set the other channels and the initial value:
|
|
23
29
|
|
|
24
30
|
```html
|
|
@@ -81,6 +87,7 @@ All attributes are reactive:
|
|
|
81
87
|
<option>l</option>
|
|
82
88
|
<option>c</option>
|
|
83
89
|
<option>h</option>
|
|
90
|
+
<option>alpha</option>
|
|
84
91
|
</select>
|
|
85
92
|
</label>
|
|
86
93
|
|
|
@@ -90,13 +97,13 @@ All attributes are reactive:
|
|
|
90
97
|
<script>
|
|
91
98
|
function fromSlider () {
|
|
92
99
|
space_select.value = dynamic_slider.space.id;
|
|
93
|
-
channel_select.innerHTML = Object.keys(dynamic_slider.space.coords).map(c => `<option>${c}</option>`).join('\n');
|
|
94
|
-
channel_select.value = dynamic_slider.channel;
|
|
100
|
+
channel_select.innerHTML = [...Object.keys(dynamic_slider.space.coords).map(c => `<option>${c}</option>`), "<option>alpha</option>"].join('\n');
|
|
101
|
+
channel_select.value = dynamic_slider.channel || channel_select.options[0].value;
|
|
95
102
|
}
|
|
96
103
|
|
|
97
104
|
function fromSelects () {
|
|
98
105
|
dynamic_slider.space = space_select.value;
|
|
99
|
-
dynamic_slider.channel = channel_select.value;
|
|
106
|
+
dynamic_slider.channel = channel_select.value || channel_select.options[0].value;
|
|
100
107
|
}
|
|
101
108
|
|
|
102
109
|
space_select.oninput = channel_select.oninput = fromSelects;
|
|
@@ -109,6 +116,12 @@ All attributes are reactive:
|
|
|
109
116
|
|
|
110
117
|
## Reference
|
|
111
118
|
|
|
119
|
+
### Slots
|
|
120
|
+
|
|
121
|
+
| Name | Description |
|
|
122
|
+
|------|-------------|
|
|
123
|
+
| _(default)_ | The channel slider's label. |
|
|
124
|
+
|
|
112
125
|
### Attributes & Properties
|
|
113
126
|
|
|
114
127
|
| Attribute | Property | Property type | Default value | Description |
|
|
@@ -117,7 +130,36 @@ All attributes are reactive:
|
|
|
117
130
|
| `channel` | `channel` | `string` | `h` | The component to use for the gradient. |
|
|
118
131
|
| `min` | `min` | `number` | `this.refRange[0]` | The minimum value for the slider. |
|
|
119
132
|
| `max` | `max` | `number` | `this.refRange[1]` | The maximum value for the slider. |
|
|
133
|
+
| `step` | `step` | `number` | Computed automatically based on `this.min` and `this.max`. | The granularity that the slider's current value must adhere to. |
|
|
120
134
|
| `value` | `value` | `number` | `(this.min + this.max) / 2` | The current value of the slider. |
|
|
121
|
-
| `color` | `color` | `Color` | `string` | `oklch(50 50% 180)` | The current color value. |
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
| `color` | `color` | `Color` | `string` | `oklch(50% 50% 180)` | The current color value. |
|
|
136
|
+
|
|
137
|
+
### Getters
|
|
138
|
+
|
|
139
|
+
These properties are read-only.
|
|
140
|
+
|
|
141
|
+
| Property | Type | Description |
|
|
142
|
+
|----------|------|-------------|
|
|
143
|
+
| `minColor` | `Color` | The color corresponding to the minimum value of the slider. |
|
|
144
|
+
| `maxColor` | `Color` | The color corresponding to the maximum value of the slider. |
|
|
145
|
+
| `stops` | `Array<Color>` | The array of the slider color stops used for rendering. Unsupported color spaces or angular channels (hues) will have more color stops, while other channels may have as little as two: `minColor` and `maxColor`. |
|
|
146
|
+
| `progress` | `number` | The slider value converted to a 0-1 number with `0` corresponding to the min of the range and `1` to the max. |
|
|
147
|
+
| `channelName` | `string` | The name of the channel (e.g. `Hue` or `Alpha`). |
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
### Events
|
|
151
|
+
|
|
152
|
+
| Name | Description |
|
|
153
|
+
|------|-------------|
|
|
154
|
+
| `input` | Fired when the color changes due to user action. |
|
|
155
|
+
| `change` | Fired when the color changes due to user action. |
|
|
156
|
+
| `valuechange` | Fired when the value changes for any reason, and once during initialization. |
|
|
157
|
+
| `colorchange` | Fired when the color changes for any reason, and once during initialization. |
|
|
158
|
+
|
|
159
|
+
### Parts
|
|
160
|
+
|
|
161
|
+
| Name | Description |
|
|
162
|
+
|------|-------------|
|
|
163
|
+
| `color_slider` | The internal `<color-slider>` element. |
|
|
164
|
+
| `slider` | The `slider` part of the internal [`<color-slider>`](../color-slider/#parts) element. |
|
|
165
|
+
| `label` | The internal `<label>` element used as a wrapper around the default slot and the slider. |
|
|
@@ -1,19 +1,61 @@
|
|
|
1
1
|
.color-slider-label {
|
|
2
|
+
--_transition-duration: var(--transition-duration, 200ms);
|
|
3
|
+
|
|
2
4
|
display: grid;
|
|
3
5
|
grid-template-columns: 1fr auto;
|
|
4
6
|
gap: .3em;
|
|
5
|
-
|
|
7
|
+
align-items: center;
|
|
6
8
|
|
|
7
9
|
em {
|
|
8
10
|
opacity: 60%;
|
|
11
|
+
transition: opacity var(--_transition-duration);
|
|
9
12
|
}
|
|
10
|
-
}
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
14
|
+
&:not(:hover, :focus-within) em {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
input[type=number] {
|
|
19
|
+
--_border-color: var(--border-color, color-mix(in oklab, currentcolor calc(var(--_current-color-percent, 30) * 1%), oklab(none none none / 0%)));
|
|
20
|
+
|
|
21
|
+
all: unset;
|
|
15
22
|
|
|
23
|
+
--content-width: calc(var(--value-length) * 1ch);
|
|
24
|
+
width: calc(var(--content-width, 2ch) + 1.2em);
|
|
25
|
+
min-width: calc(2ch + 1.2em);
|
|
26
|
+
box-sizing: content-box;
|
|
27
|
+
padding: .1em .2em;
|
|
28
|
+
border-radius: .2em;
|
|
29
|
+
border: 1px solid var(--_border-color);
|
|
30
|
+
text-align: center;
|
|
31
|
+
font-size: 90%;
|
|
32
|
+
transition: var(--_transition-duration) allow-discrete;
|
|
33
|
+
transition-property: opacity, border-color;
|
|
16
34
|
|
|
35
|
+
&::-webkit-textfield-decoration-container {
|
|
36
|
+
gap: .2em;
|
|
37
|
+
}
|
|
17
38
|
|
|
39
|
+
&:not(:hover, :focus) {
|
|
40
|
+
--_current-color-percent: 10;
|
|
18
41
|
|
|
42
|
+
opacity: 60%;
|
|
43
|
+
border-color: var(--_border-color);
|
|
19
44
|
|
|
45
|
+
&::-webkit-inner-spin-button {
|
|
46
|
+
/* Fade out the spin buttons in Chrome and Safari */
|
|
47
|
+
opacity: .35;
|
|
48
|
+
filter: contrast(2);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@supports (field-sizing: content) {
|
|
53
|
+
field-sizing: content;
|
|
54
|
+
width: auto;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
color-slider {
|
|
60
|
+
grid-column: 1 / -1;
|
|
61
|
+
}
|
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
import "../color-slider/color-slider.js";
|
|
2
2
|
import * as dom from "../common/dom.js";
|
|
3
|
-
import
|
|
4
|
-
import NudeElement from "../../node_modules/nude-element/src/Element.js";
|
|
3
|
+
import ColorElement from "../common/color-element.js";
|
|
5
4
|
import { getStep } from "../common/util.js";
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
const Self = class ChannelSlider extends ColorElement {
|
|
7
|
+
static tagName = "channel-slider";
|
|
8
|
+
static url = import.meta.url;
|
|
9
|
+
static shadowStyle = true;
|
|
10
|
+
static shadowTemplate = `
|
|
11
|
+
<label class="color-slider-label" part="label">
|
|
12
|
+
<slot>
|
|
13
|
+
<span id="channel_info" part="channel-info"></span>
|
|
14
|
+
<input type="number" part="spinner" min="0" max="1" step="0.01" id="spinner" />
|
|
15
|
+
</slot>
|
|
16
|
+
<color-slider part="color_slider" exportparts="slider" id="slider"></color-slider>
|
|
17
|
+
</label>`;
|
|
8
18
|
|
|
9
|
-
export default class ChannelSlider extends NudeElement {
|
|
10
19
|
constructor () {
|
|
11
20
|
super();
|
|
12
21
|
|
|
13
|
-
this.attachShadow({mode: "open"});
|
|
14
|
-
let styleURL = new URL(`./${tagName}.css`, import.meta.url);
|
|
15
|
-
this.shadowRoot.innerHTML = `
|
|
16
|
-
<style>@import url("${ styleURL }")</style>
|
|
17
|
-
<label class="color-slider-label" part="label">
|
|
18
|
-
<slot></slot>
|
|
19
|
-
<color-slider part="color_slider" exportparts="slider" id="slider" tooltip></color-slider>
|
|
20
|
-
</label>
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
22
|
this._el = dom.named(this);
|
|
24
23
|
this._el.slot = this.shadowRoot.querySelector("slot");
|
|
25
24
|
}
|
|
26
25
|
|
|
27
|
-
connectedCallback() {
|
|
26
|
+
connectedCallback () {
|
|
28
27
|
super.connectedCallback?.();
|
|
29
28
|
|
|
30
29
|
this._el.slider.addEventListener("input", this);
|
|
30
|
+
this._el.slot.addEventListener("input", this);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
disconnectedCallback() {
|
|
33
|
+
disconnectedCallback () {
|
|
34
34
|
this._el.slider.removeEventListener("input", this);
|
|
35
|
+
this._el.slot.removeEventListener("input", this);
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
handleEvent(event) {
|
|
38
|
+
handleEvent (event) {
|
|
38
39
|
if (event.type === "input") {
|
|
39
40
|
this.value = event.target.value;
|
|
40
41
|
}
|
|
@@ -42,12 +43,14 @@ export default class ChannelSlider extends NudeElement {
|
|
|
42
43
|
|
|
43
44
|
colorAt (value) {
|
|
44
45
|
let color = this.defaultColor.clone();
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
if (this.channel === "alpha") {
|
|
48
|
+
color.alpha = value / 100;
|
|
47
49
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
else if (this.channel in color.space.coords) {
|
|
51
|
+
color.set(this.channel, value);
|
|
50
52
|
}
|
|
53
|
+
|
|
51
54
|
return color;
|
|
52
55
|
}
|
|
53
56
|
|
|
@@ -86,19 +89,30 @@ export default class ChannelSlider extends NudeElement {
|
|
|
86
89
|
propChangedCallback ({name, prop, detail: change}) {
|
|
87
90
|
if (["space", "min", "max", "step", "value", "defaultValue"].includes(name)) {
|
|
88
91
|
prop.applyChange(this._el.slider, change);
|
|
89
|
-
|
|
92
|
+
|
|
93
|
+
if (["min", "max", "step", "value", "defaultValue"].includes(name)) {
|
|
94
|
+
prop.applyChange(this._el.spinner, change);
|
|
95
|
+
|
|
96
|
+
if (name === "value" && this.value !== undefined) {
|
|
97
|
+
this._el.spinner.value = Number(this.value.toPrecision(4));
|
|
98
|
+
|
|
99
|
+
if (!CSS.supports("field-sizing", "content")) {
|
|
100
|
+
let valueStr = this._el.spinner.value;
|
|
101
|
+
this._el.spinner.style.setProperty("--value-length", valueStr.length);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
90
106
|
|
|
91
107
|
if (name === "defaultColor" || name === "space" || name === "channel" || name === "min" || name === "max") {
|
|
92
108
|
this._el.slider.stops = this.stops;
|
|
93
109
|
|
|
94
110
|
if (name === "space" || name === "channel" || name === "min" || name === "max") {
|
|
95
|
-
this._el.
|
|
111
|
+
this._el.channel_info.innerHTML = `${ this.channelName } <em>(${ this.min } – ${ this.max })</em>`;
|
|
96
112
|
}
|
|
97
113
|
}
|
|
98
114
|
}
|
|
99
115
|
|
|
100
|
-
|
|
101
|
-
|
|
102
116
|
get channelName () {
|
|
103
117
|
return this.channelSpec?.name ?? this.channel;
|
|
104
118
|
}
|
|
@@ -107,13 +121,13 @@ export default class ChannelSlider extends NudeElement {
|
|
|
107
121
|
space: {
|
|
108
122
|
default: "oklch",
|
|
109
123
|
parse (value) {
|
|
110
|
-
if (value instanceof Color.Space || value === null || value === undefined) {
|
|
124
|
+
if (value instanceof Self.Color.Space || value === null || value === undefined) {
|
|
111
125
|
return value;
|
|
112
126
|
}
|
|
113
127
|
|
|
114
128
|
value += "";
|
|
115
129
|
|
|
116
|
-
return Color.Space.get(value);
|
|
130
|
+
return Self.Color.Space.get(value);
|
|
117
131
|
},
|
|
118
132
|
stringify (value) {
|
|
119
133
|
return value?.id;
|
|
@@ -140,6 +154,12 @@ export default class ChannelSlider extends NudeElement {
|
|
|
140
154
|
},
|
|
141
155
|
channelSpec: {
|
|
142
156
|
get () {
|
|
157
|
+
if (this.channel === "alpha") {
|
|
158
|
+
return {
|
|
159
|
+
name: "Alpha",
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
143
163
|
let channelSpec = this.space?.coords[this.channel];
|
|
144
164
|
|
|
145
165
|
if (!channelSpec && this.space) {
|
|
@@ -148,7 +168,7 @@ export default class ChannelSlider extends NudeElement {
|
|
|
148
168
|
}
|
|
149
169
|
|
|
150
170
|
return channelSpec;
|
|
151
|
-
}
|
|
171
|
+
},
|
|
152
172
|
},
|
|
153
173
|
refRange: {
|
|
154
174
|
get () {
|
|
@@ -178,7 +198,16 @@ export default class ChannelSlider extends NudeElement {
|
|
|
178
198
|
defaultValue: {
|
|
179
199
|
type: Number,
|
|
180
200
|
default () {
|
|
181
|
-
|
|
201
|
+
if (this.channel === "alpha") {
|
|
202
|
+
return this.defaultColor.alpha * 100;
|
|
203
|
+
}
|
|
204
|
+
else if (this.channel in this.defaultColor.space.coords) {
|
|
205
|
+
return this.defaultColor.get(this.channel);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
let firstChannel = Object.keys(this.defaultColor.space.coords)[0];
|
|
209
|
+
return this.defaultColor.get(firstChannel);
|
|
210
|
+
}
|
|
182
211
|
},
|
|
183
212
|
reflect: {
|
|
184
213
|
from: "value",
|
|
@@ -191,7 +220,9 @@ export default class ChannelSlider extends NudeElement {
|
|
|
191
220
|
},
|
|
192
221
|
|
|
193
222
|
defaultColor: {
|
|
194
|
-
type
|
|
223
|
+
get type () {
|
|
224
|
+
return Self.Color;
|
|
225
|
+
},
|
|
195
226
|
convert (color) {
|
|
196
227
|
return color.to(this.space);
|
|
197
228
|
},
|
|
@@ -199,18 +230,20 @@ export default class ChannelSlider extends NudeElement {
|
|
|
199
230
|
let coords = [];
|
|
200
231
|
for (let channel in this.space.coords) {
|
|
201
232
|
let spec = this.space.coords[channel];
|
|
202
|
-
let range = spec.refRange ?? spec.range;
|
|
233
|
+
let range = spec.refRange ?? spec.range ?? [0, 100];
|
|
203
234
|
coords.push((range[0] + range[1]) / 2);
|
|
204
235
|
}
|
|
205
236
|
|
|
206
|
-
return new Color(this.space, coords);
|
|
237
|
+
return new Self.Color(this.space, coords);
|
|
207
238
|
},
|
|
208
239
|
reflect: {
|
|
209
240
|
from: "color",
|
|
210
241
|
},
|
|
211
242
|
},
|
|
212
243
|
color: {
|
|
213
|
-
type
|
|
244
|
+
get type () {
|
|
245
|
+
return Self.Color;
|
|
246
|
+
},
|
|
214
247
|
get () {
|
|
215
248
|
return this.colorAt(this.value);
|
|
216
249
|
},
|
|
@@ -220,18 +253,18 @@ export default class ChannelSlider extends NudeElement {
|
|
|
220
253
|
this.value = this.defaultValue;
|
|
221
254
|
},
|
|
222
255
|
},
|
|
223
|
-
}
|
|
256
|
+
};
|
|
224
257
|
|
|
225
258
|
static events = {
|
|
226
259
|
change: {
|
|
227
260
|
from () {
|
|
228
261
|
return this._el.slider;
|
|
229
|
-
}
|
|
262
|
+
},
|
|
230
263
|
},
|
|
231
264
|
input: {
|
|
232
265
|
from () {
|
|
233
266
|
return this._el.slider;
|
|
234
|
-
}
|
|
267
|
+
},
|
|
235
268
|
},
|
|
236
269
|
valuechange: {
|
|
237
270
|
propchange: "value",
|
|
@@ -242,11 +275,13 @@ export default class ChannelSlider extends NudeElement {
|
|
|
242
275
|
};
|
|
243
276
|
|
|
244
277
|
static formAssociated = {
|
|
245
|
-
|
|
278
|
+
like: el => el._el.slider,
|
|
246
279
|
role: "slider",
|
|
247
280
|
valueProp: "value",
|
|
248
281
|
changeEvent: "valuechange",
|
|
249
282
|
};
|
|
250
|
-
}
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
Self.define();
|
|
251
286
|
|
|
252
|
-
|
|
287
|
+
export default Self;
|
|
Binary file
|