color-elements 0.0.2 → 0.0.4
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 +12 -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/index.js +5 -1
- package/package.json +9 -3
- 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 +101 -0
- package/src/color-chart/color-chart.css +112 -0
- package/src/color-chart/color-chart.js +439 -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 +35 -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 +171 -27
- package/src/color-swatch/color-swatch.js +193 -217
- package/src/color-swatch/color-swatch.webp +0 -0
- package/src/common/color-element.js +140 -0
- package/src/common/dom.js +1 -1
- package/src/common/util.js +62 -84
- 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
package/src/common/util.js
CHANGED
|
@@ -1,104 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* @param {string} name
|
|
5
|
-
* @param {function} getValue
|
|
6
|
-
*/
|
|
7
|
-
export function defineInstanceProperty (
|
|
8
|
-
Class, name, getValue,
|
|
9
|
-
{writable = true, configurable = true, enumerable = false} = {}) {
|
|
10
|
-
let setter = function (value) {
|
|
11
|
-
Object.defineProperty(this, name, { value, writable, configurable, enumerable });
|
|
1
|
+
export async function wait (ms) {
|
|
2
|
+
if (ms === undefined) {
|
|
3
|
+
return new Promise(resolve => requestAnimationFrame(resolve));
|
|
12
4
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
let value = getValue.call(this, this);
|
|
16
|
-
setter.call(this, value);
|
|
17
|
-
return value;
|
|
18
|
-
},
|
|
19
|
-
set (value) { // Blind set
|
|
20
|
-
setter.call(this, value);
|
|
21
|
-
},
|
|
22
|
-
configurable: true,
|
|
23
|
-
});
|
|
5
|
+
|
|
6
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
24
7
|
}
|
|
25
8
|
|
|
26
|
-
export function
|
|
27
|
-
|
|
28
|
-
options = { get: options };
|
|
29
|
-
}
|
|
9
|
+
export function defer (executor) {
|
|
10
|
+
let res, rej;
|
|
30
11
|
|
|
31
|
-
let
|
|
12
|
+
let promise = new Promise((resolve, reject) => {
|
|
13
|
+
res = resolve;
|
|
14
|
+
rej = reject;
|
|
32
15
|
|
|
33
|
-
|
|
34
|
-
Object.defineProperty(this, name, { value, writable, configurable, enumerable });
|
|
35
|
-
}
|
|
36
|
-
Object.defineProperty(object, name, {
|
|
37
|
-
get () {
|
|
38
|
-
let value = get.call(this);
|
|
39
|
-
setter.call(this, value);
|
|
40
|
-
return value;
|
|
41
|
-
},
|
|
42
|
-
set (value) { // Blind set
|
|
43
|
-
setter.call(this, value);
|
|
44
|
-
},
|
|
45
|
-
configurable: true,
|
|
16
|
+
executor?.(res, rej);
|
|
46
17
|
});
|
|
47
|
-
}
|
|
48
18
|
|
|
49
|
-
|
|
50
|
-
|
|
19
|
+
promise.resolve = res;
|
|
20
|
+
promise.reject = rej;
|
|
51
21
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
defineInstanceProperty(Class, name, spec.get);
|
|
22
|
+
return promise;
|
|
23
|
+
}
|
|
55
24
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Wait for all promises to resolve. Supports dynamically adding promises to the list after the initial call.
|
|
27
|
+
* @param {Promise[] | Set<Promise>} promises
|
|
28
|
+
* @returns {Promise}
|
|
29
|
+
*/
|
|
30
|
+
export async function dynamicAll (promises) {
|
|
31
|
+
let all = new Set([...promises]);
|
|
32
|
+
let unresolved = new Set();
|
|
33
|
+
|
|
34
|
+
for (let promise of promises) {
|
|
35
|
+
if (promise?.then) {
|
|
36
|
+
unresolved.add(promise);
|
|
37
|
+
promise.then(() => {
|
|
38
|
+
// Remove the promise from the list
|
|
39
|
+
unresolved.delete(promise);
|
|
40
|
+
});
|
|
62
41
|
}
|
|
63
42
|
}
|
|
64
43
|
|
|
65
|
-
|
|
66
|
-
|
|
44
|
+
return Promise.all(unresolved).then(resolved => {
|
|
45
|
+
// Check if the array has new items
|
|
46
|
+
for (let promise of promises) {
|
|
47
|
+
if (!all.has(promise)) {
|
|
48
|
+
all.add(promise);
|
|
67
49
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
for (let prop of dependencies.get(name)) {
|
|
71
|
-
this[prop] = computed[prop].get.call(this, this);
|
|
50
|
+
if (promise?.then) {
|
|
51
|
+
unresolved.add(promise);
|
|
72
52
|
}
|
|
73
53
|
}
|
|
74
|
-
|
|
75
|
-
_propChangedCallback?.call(this, name, change);
|
|
76
54
|
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function inferDependencies (fn) {
|
|
81
|
-
if (!fn || typeof fn !== "function") {
|
|
82
|
-
return [];
|
|
83
|
-
}
|
|
84
55
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export async function wait (ms) {
|
|
91
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export async function nextTick (refreshRate = 20) {
|
|
95
|
-
let now = performance.now();
|
|
96
|
-
let remainder = now % refreshRate;
|
|
97
|
-
let delay = refreshRate - remainder;
|
|
98
|
-
let nextAt = now + delay;
|
|
99
|
-
nextTick.start ??= now - remainder;
|
|
56
|
+
if (unresolved.size > 0) {
|
|
57
|
+
return dynamicAll(unresolved).then(r => [...resolved, ...r]);
|
|
58
|
+
}
|
|
100
59
|
|
|
101
|
-
|
|
60
|
+
return resolved;
|
|
61
|
+
});
|
|
102
62
|
}
|
|
103
63
|
|
|
104
64
|
/**
|
|
@@ -139,4 +99,22 @@ export function pick (obj, properties) {
|
|
|
139
99
|
}
|
|
140
100
|
|
|
141
101
|
return Object.fromEntries(Object.entries(obj).filter(([key]) => properties.includes(key)));
|
|
142
|
-
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function getType (value) {
|
|
105
|
+
if (value === null || value === undefined) {
|
|
106
|
+
return value + "";
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return Object.prototype.toString.call(value).slice(8, -1);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Template tag that does nothing. Useful for importing under different names (e.g. `css`) for syntax highlighting.
|
|
114
|
+
* @param {string[]} strings
|
|
115
|
+
* @param {...any} values
|
|
116
|
+
* @returns {string}
|
|
117
|
+
*/
|
|
118
|
+
export function noOpTemplateTag (strings, ...values) {
|
|
119
|
+
return strings.reduce((acc, string, i) => acc + string + (values[i] ?? ""), "");
|
|
120
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
<script src="gamut-badge.js" type="module"></script>
|
|
2
|
+
# <gamut-badge>
|
|
3
|
+
|
|
4
|
+
Gamut indicator. Used internally by `<color-swatch>`
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
Static (only read once):
|
|
9
|
+
```html
|
|
10
|
+
<gamut-badge color="red"></gamut-badge>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Invalid color:
|
|
14
|
+
```html
|
|
15
|
+
<gamut-badge color="poop"></gamut-badge>
|
|
16
|
+
```
|
|
17
|
+
Missing color:
|
|
18
|
+
```html
|
|
19
|
+
<gamut-badge></gamut-badge>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Dynamic:
|
|
23
|
+
```html
|
|
24
|
+
<gamut-badge id="cg_1" color="red"></gamut-badge>
|
|
25
|
+
<script>cg_1.color = "oklch(50% 0.5 180)";</script>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Demo
|
|
29
|
+
<style>
|
|
30
|
+
#params {
|
|
31
|
+
background: linear-gradient(to right, var(--start-color), var(--end-color)) no-repeat top / 100% 1em;
|
|
32
|
+
padding-top: 1.5em;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#colors_container_h {
|
|
36
|
+
display: flex;
|
|
37
|
+
height: 1em;
|
|
38
|
+
margin-bottom: 1em;
|
|
39
|
+
|
|
40
|
+
gamut-badge {
|
|
41
|
+
flex: 1;
|
|
42
|
+
border-radius: 0;
|
|
43
|
+
|
|
44
|
+
&::part(label) {
|
|
45
|
+
display: none;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
50
|
+
<form id=params>
|
|
51
|
+
<code>oklch(<input type=number id=l value=50>% <input type=number id=min_c value=30>–<input type=number id=max_c value=40>% <input type=number id=h value=50>)</code>
|
|
52
|
+
<p><label>Chroma increments: <input type=number id=c_step value="0.2" min="0">%</label>
|
|
53
|
+
</form>
|
|
54
|
+
|
|
55
|
+
<script type=module>
|
|
56
|
+
params.addEventListener("input", e => {
|
|
57
|
+
let c_range = {min: Number(min_c.value), max: Number(max_c.value)};
|
|
58
|
+
let step = Number(c_step.value);
|
|
59
|
+
if (step <= 0) {
|
|
60
|
+
step = 1;
|
|
61
|
+
}
|
|
62
|
+
let colors = [];
|
|
63
|
+
let start = `oklch(${l.value}% ${c_range.min.toLocaleString("en")}% ${h.value})`;
|
|
64
|
+
let end = `oklch(${l.value}% ${c_range.max.toLocaleString("en")}% ${h.value})`;
|
|
65
|
+
|
|
66
|
+
params.style.setProperty("--start-color", start);
|
|
67
|
+
params.style.setProperty("--end-color", end);
|
|
68
|
+
|
|
69
|
+
for (let c = c_range.min; c<= c_range.max; c+=step) {
|
|
70
|
+
colors.push(`oklch(${l.value}% ${c.toLocaleString("en")}% ${h.value})`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let html = colors.map(color => `
|
|
74
|
+
<gamut-badge title="${color}" color="${color}"></gamut-badge>`).join("\n");
|
|
75
|
+
colors_container_h.innerHTML = html;
|
|
76
|
+
colors_container.innerHTML = html;
|
|
77
|
+
});
|
|
78
|
+
params.dispatchEvent(new Event("input"));
|
|
79
|
+
</script>
|
|
80
|
+
|
|
81
|
+
No label:
|
|
82
|
+
|
|
83
|
+
<div id=colors_container_h></div>
|
|
84
|
+
|
|
85
|
+
Default display:
|
|
86
|
+
<div id=colors_container></div>
|
|
87
|
+
|
|
88
|
+
## Reference
|
|
89
|
+
|
|
90
|
+
### Attributes & Properties
|
|
91
|
+
|
|
92
|
+
| Attribute | Property | Property type | Default value | Description |
|
|
93
|
+
|-----------|----------|---------------|---------------|-------------|
|
|
94
|
+
| `gamuts` | `gamuts` | `string` | `Array<string>` | `object` | `["srgb", "p3", "rec2020", "prophoto"]` | A list of gamuts to use. |
|
|
95
|
+
| `color` | `color` | `Color` | `string` | - | The current color value. |
|
|
96
|
+
|
|
97
|
+
### Getters
|
|
98
|
+
|
|
99
|
+
These properties are read-only.
|
|
100
|
+
|
|
101
|
+
| Property | Type | Description |
|
|
102
|
+
|----------|------|-------------|
|
|
103
|
+
| `gamut` | `string` | The id of the current gamut (e.g. `srgb`). |
|
|
104
|
+
| `gamutLabel` | `string` | The label of the current gamut (e.g. `sRGB`). |
|
|
105
|
+
| `gamutInfo` | `object` | Metadata about the current gamut (label, id, level). |
|
|
106
|
+
|
|
107
|
+
### Events
|
|
108
|
+
|
|
109
|
+
| Name | Description |
|
|
110
|
+
|------|-------------|
|
|
111
|
+
| `gamutchange` | Fired when the gamut changes for any reason, and once during initialization. |
|
|
112
|
+
|
|
113
|
+
### Slots
|
|
114
|
+
|
|
115
|
+
| Slot | Description |
|
|
116
|
+
|------|-------------|
|
|
117
|
+
| _(default)_ | Custom content |
|
|
118
|
+
|
|
119
|
+
### CSS variables
|
|
120
|
+
|
|
121
|
+
| Variable | Type | Default value | Description |
|
|
122
|
+
|----------|------|---------------|-------------|
|
|
123
|
+
| `--color-green` | `<color>` | | Starting color of the background color scale. Used when the color is within the first gamut. |
|
|
124
|
+
| `--color-yellow` | `<color>` | | Yellow color to be used at around 33.3% of the color scale Will be used for the second gamut if there are four total. |
|
|
125
|
+
| `--color-orange` | `<color>` | | Orange color to be used at around 66.6% of the color scale. Will be used for the third gamut if there are four total. |
|
|
126
|
+
| `--color-red` | `<color>` | | Red color to be used as the last stop of the color scale. Used when the color is within the last gamut. |
|
|
127
|
+
| `--color-red-dark` | `<color>` | | Dark red background color of gamut indicator. Used when the provided color fits none of the specified gamuts. |
|
|
128
|
+
| `--color-invalid` | `<color>` | | Background color of gamut indicator when the provided color is invalid. |
|
|
129
|
+
|
|
130
|
+
#### Output-only CSS variables
|
|
131
|
+
|
|
132
|
+
These variables are set by the component.
|
|
133
|
+
You can write CSS that reacts to them, but you should not set them yourself unless you *really* know what you’re doing.
|
|
134
|
+
|
|
135
|
+
| Variable | Type | Default value | Description |
|
|
136
|
+
|----------|------|---------------|-------------|
|
|
137
|
+
| `--gamut-color` | `<color>` | | Background color of gamut indicator. Will override the color that depends on the actual gamut, so you should rarely use this directly. |
|
|
138
|
+
| `--gamut-level` | `<integer>` | - | The index of the gamut the current color fits in, starting from 0. You can use this in styling, but don’t overwrite it. |
|
|
139
|
+
|
|
140
|
+
### CSS Parts
|
|
141
|
+
|
|
142
|
+
| Part | Description |
|
|
143
|
+
|------|-------------|
|
|
144
|
+
| `label` | The label of the gamut indicator. Does not apply if the element has content. |
|
|
145
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
--_color-green: var(--color-green, yellowgreen);
|
|
3
|
+
--_color-yellow: var(--color-yellow, gold);
|
|
4
|
+
--_color-orange: var(--color-orange, orange);
|
|
5
|
+
--_color-red: var(--color-red, red);
|
|
6
|
+
--_color-red-dark: var(--color-red-dark, #a00);
|
|
7
|
+
--_color-invalid: var(--color-invalid, hsl(220 10% 60%));
|
|
8
|
+
|
|
9
|
+
/* Low-level scales, i.e. between pairs of our core colors */
|
|
10
|
+
--color-scale-1: color-mix(in oklch, var(--_color-green), var(--_color-yellow) var(--progress-1));
|
|
11
|
+
--color-scale-2: color-mix(in oklch, var(--_color-yellow), var(--_color-orange) var(--progress-2));
|
|
12
|
+
--color-scale-3: color-mix(in oklch, var(--_color-orange), var(--_color-red) var(--progress-3));
|
|
13
|
+
|
|
14
|
+
/* Recursive scales: their only purpose is to select one of the low-level scales, and will only ever have 0%/100% positions
|
|
15
|
+
For N colors there are N-2 + N-3 + ... + 1 = (N-1)(N-2) / 2 of these
|
|
16
|
+
*/
|
|
17
|
+
--color-scale-12: color-mix(in oklch, var(--color-scale-1), var(--color-scale-2) var(--progress-12));
|
|
18
|
+
--color-scale-23: color-mix(in oklch, var(--color-scale-2), var(--color-scale-3) var(--progress-23));
|
|
19
|
+
--color-scale-123: color-mix(in oklch, var(--color-scale-12), var(--color-scale-23) var(--progress-123));
|
|
20
|
+
|
|
21
|
+
--gamut-progress: calc(var(--gamut-level) / (var(--gamut-count) - 1));
|
|
22
|
+
--progress-ext: calc(var(--gamut-progress) * 300%);
|
|
23
|
+
|
|
24
|
+
--progress-123: clamp(0%, (var(--progress-ext) - 150%) * infinity, 100%);
|
|
25
|
+
--progress-12: clamp(0%, (var(--progress-ext) - 150% + 75%) * infinity, 100%);
|
|
26
|
+
--progress-23: clamp(0%, (var(--progress-ext) - 150% - 75%) * infinity, 100%);
|
|
27
|
+
|
|
28
|
+
--progress-1: clamp(0%, var(--progress-ext), 100%);
|
|
29
|
+
--progress-2: calc(clamp(100%, var(--progress-ext), 200%) - 100%);
|
|
30
|
+
--progress-3: calc(clamp(200%, var(--progress-ext), 300%) - 200%);
|
|
31
|
+
|
|
32
|
+
--color-level-infinity: var(--_color-red-dark);
|
|
33
|
+
--color: var(--color-scale-123, var(--_color-invalid));
|
|
34
|
+
|
|
35
|
+
display: inline-flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
justify-content: center;
|
|
38
|
+
border-radius: .2em;
|
|
39
|
+
color: white;
|
|
40
|
+
background-color: var(--color);
|
|
41
|
+
font-weight: bold;
|
|
42
|
+
padding-inline: .4em;
|
|
43
|
+
line-height: 1.4;
|
|
44
|
+
|
|
45
|
+
/* See https://lea.verou.me/blog/2024/contrast-color/ */
|
|
46
|
+
--l: clamp(0, (l / var(--l-threshold, 0.7) - 1) * -infinity, 1);
|
|
47
|
+
color: oklch(from var(--color) var(--l) 0 h);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:host([gamut="none"]) {
|
|
51
|
+
background-color: var(--color-level-infinity);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
#label {
|
|
55
|
+
&::before {
|
|
56
|
+
content: var(--gamut-label, "N/A");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@supports not (color: color(from red xyz-d65 y y y)) {
|
|
60
|
+
/* https://miunau.com/posts/dynamic-text-contrast-in-css/ */
|
|
61
|
+
filter: invert(1) grayscale(1) brightness(1.3) contrast(9000);
|
|
62
|
+
mix-blend-mode: luminosity;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@supports (color: color(from red xyz-d65 y y y)) {
|
|
66
|
+
/* https://lea.verou.me/blog/2024/contrast-color/ */
|
|
67
|
+
--y-threshold: 0.36;
|
|
68
|
+
--y: clamp(0, (var(--y-threshold) - y) * infinity, 1);
|
|
69
|
+
|
|
70
|
+
color: color(from var(--color) xyz-d65 var(--y) var(--y) var(--y));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@property --color {
|
|
75
|
+
syntax: "<color>";
|
|
76
|
+
inherits: true;
|
|
77
|
+
initial-value: transparent;
|
|
78
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import ColorElement from "../common/color-element.js";
|
|
2
|
+
|
|
3
|
+
const Self = class GamutBadge extends ColorElement {
|
|
4
|
+
static tagName = "gamut-badge";
|
|
5
|
+
static url = import.meta.url;
|
|
6
|
+
static styles = "./gamut-badge.css";
|
|
7
|
+
static shadowTemplate = `
|
|
8
|
+
<slot>
|
|
9
|
+
<span id="label" part="label"></span>
|
|
10
|
+
</slot>`;
|
|
11
|
+
|
|
12
|
+
#label;
|
|
13
|
+
|
|
14
|
+
constructor () {
|
|
15
|
+
super();
|
|
16
|
+
|
|
17
|
+
if (!this.#label) {
|
|
18
|
+
this.#label = this.shadowRoot.querySelector("#label");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get gamutLabel () {
|
|
23
|
+
return this.gamutInfo?.label ?? "";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
propChangedCallback ({name, prop, detail: change}) {
|
|
27
|
+
if (name === "gamuts") {
|
|
28
|
+
this.style.setProperty("--gamut-count", this.gamuts.length - 1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (name === "gamutInfo") {
|
|
32
|
+
if (this.gamutInfo) {
|
|
33
|
+
this.style.setProperty("--gamut-level", this.gamutInfo.level);
|
|
34
|
+
this.style.setProperty("--gamut-label", `"${ this.gamutInfo.label }"`);
|
|
35
|
+
this.style.setProperty("--gamut-id", `"${ this.gamutInfo.id }"`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.style.removeProperty("--gamut-level");
|
|
39
|
+
this.style.removeProperty("--gamut-label");
|
|
40
|
+
this.style.removeProperty("--gamut-id");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static props = {
|
|
46
|
+
color: {
|
|
47
|
+
get type () {
|
|
48
|
+
return Self.Color;
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
gamuts: {
|
|
52
|
+
type: Array,
|
|
53
|
+
default: "srgb, p3, rec2020, prophoto",
|
|
54
|
+
parse (gamuts) {
|
|
55
|
+
if (!gamuts) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (typeof gamuts === "string") {
|
|
60
|
+
gamuts = gamuts.trim().split(/\s*,\s*/);
|
|
61
|
+
}
|
|
62
|
+
else if (!Array.isArray(gamuts) && typeof gamuts === "object") {
|
|
63
|
+
// Object
|
|
64
|
+
return Object.entries(gamuts).map(([id, label]) => ({id, label}));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let ret = gamuts.map((gamut, level) => {
|
|
68
|
+
if (gamut?.id && "label" in gamut) {
|
|
69
|
+
// Already in the correct format
|
|
70
|
+
return gamut;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
gamut = gamut.trim().split(/\s*:\s*/);
|
|
74
|
+
let id = gamut[0];
|
|
75
|
+
let label = gamut[1] ?? Self.Color.spaces[id]?.name ?? id;
|
|
76
|
+
return {id, label, level};
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
if (!ret.find(gamut => gamut.id === "none")) {
|
|
80
|
+
ret.push({
|
|
81
|
+
id: "none",
|
|
82
|
+
get label () {
|
|
83
|
+
return ret[this.level - 1].label + "+";
|
|
84
|
+
},
|
|
85
|
+
level: ret.length,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return ret;
|
|
90
|
+
},
|
|
91
|
+
stringify (gamuts) {
|
|
92
|
+
return gamuts.map(({id, label}) => `${ id }: ${ label }`).join(", ");
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
gamutInfo: {
|
|
96
|
+
get () {
|
|
97
|
+
if (!this.color) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return this.gamuts?.find(gamut => gamut.id === "none" || this.color?.inGamut(gamut.id));
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
gamut: {
|
|
105
|
+
type: String,
|
|
106
|
+
get () {
|
|
107
|
+
return this.gamutInfo?.id;
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
static events = {
|
|
113
|
+
gamutchange: {
|
|
114
|
+
propchange: "gamut",
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
Self.define();
|
|
120
|
+
|
|
121
|
+
export default Self;
|
|
Binary file
|
package/src/index.js.njk
CHANGED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# `<space-picker>`
|
|
2
|
+
|
|
3
|
+
## Usage
|
|
4
|
+
|
|
5
|
+
### Basic usage
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<space-picker value="oklab"></space-picker>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
If no color space is provided (via the `value` attribute/property),
|
|
12
|
+
the first one will be used:
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<space-picker></space-picker>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
You can specify what color spaces to use:
|
|
19
|
+
```html
|
|
20
|
+
<space-picker spaces="oklch, p3, srgb" value="p3"></space-picker>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Unknown color spaces also work:
|
|
24
|
+
```html
|
|
25
|
+
<space-picker spaces="bar, oklch, p3, srgb, foo" value="foo"></space-picker>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Custom labels
|
|
29
|
+
|
|
30
|
+
Do you need the picker to show something other than the default color space names, such as color space ids?
|
|
31
|
+
Simply define the `getSpaceLabel()` method on the picker instance, and you are done.
|
|
32
|
+
The method takes a color space object as an argument and returns a string that will be used as the space label.
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<space-picker id="custom_labels"></space-picker>
|
|
36
|
+
|
|
37
|
+
<script>
|
|
38
|
+
custom_labels.getSpaceLabel = space => space.id;
|
|
39
|
+
</script>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Grouping the color spaces
|
|
43
|
+
|
|
44
|
+
You can group the color spaces the way you like by specifying the `groupBy` property. Its value is a function
|
|
45
|
+
accepting a color space as an argument and returning the name of a group the color space should be added to:
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<space-picker id="space_picker" spaces="oklch, p3, srgb" value="p3"></space-picker>
|
|
49
|
+
<script>
|
|
50
|
+
space_picker.groupBy = (space) => {
|
|
51
|
+
let isPolar = space.coords.h?.type === "angle";
|
|
52
|
+
return isPolar ? "Polar" : "Rectangular";
|
|
53
|
+
};
|
|
54
|
+
</script>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Events
|
|
58
|
+
|
|
59
|
+
You can listen to the `spacechange` event to get either the id of the current color space (the `value` property)
|
|
60
|
+
or the color space object itself (the `selectedSpace` property):
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<space-picker onspacechange="this.nextElementSibling.textContent = this.value"></space-picker>
|
|
64
|
+
<output></output>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Dynamic
|
|
68
|
+
|
|
69
|
+
All properties are reactive and can be set programmatically:
|
|
70
|
+
```html
|
|
71
|
+
<button onclick="this.nextElementSibling.value = 'oklch'">Switch to OKLCh</button>
|
|
72
|
+
<space-picker value="p3"></space-picker>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`<space-picker>` plays nicely with other color elements:
|
|
76
|
+
```html
|
|
77
|
+
<label style="display: block; margin-block-end: .5em">
|
|
78
|
+
Space:
|
|
79
|
+
<space-picker value="oklch" oninput="this.parentElement.nextElementSibling.space = this.selectedSpace"></space-picker>
|
|
80
|
+
</label>
|
|
81
|
+
<color-slider space="oklch"
|
|
82
|
+
stops="oklch(80% 50% 70), oklch(65% 50% 180)"
|
|
83
|
+
oncolorchange="this.nextElementSibling.textContent = this.color"></color-slider>
|
|
84
|
+
<color-inline></color-inline>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Reference
|
|
88
|
+
|
|
89
|
+
### Attributes & Properties
|
|
90
|
+
|
|
91
|
+
| Attribute | Property | Property type | Default value | Description |
|
|
92
|
+
|-----------|-----------|-------------------------------------|-----------------------------------------|-----------------------------------------------------------------------------------------------------------|
|
|
93
|
+
| `value` | `value` | `string` | The first color space in `this.spaces`. | The current value of the picker. |
|
|
94
|
+
| `spaces` | `spaces` | `string` | `Array<ColorSpace>` | All known color spaces. | Comma-separated list of color spaces to use. |
|
|
95
|
+
| — | `groupBy` | `Function` | — | Function to group the color spaces. Takes a color space object as an argument and returns the group name. |
|
|
96
|
+
| – | `getSpaceLabel` | `Function` | `space => space.name` | Function to get the label for a color space. Takes a color space object as an argument and returns its label. |
|
|
97
|
+
|
|
98
|
+
### Getters
|
|
99
|
+
|
|
100
|
+
These properties are read-only.
|
|
101
|
+
|
|
102
|
+
| Property | Type | Description |
|
|
103
|
+
|-----------------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
104
|
+
| `selectedSpace` | `ColorSpace` | Color space object corresponding to the picker current value. |
|
|
105
|
+
| `groups` | `Object` | Object containing the color spaces grouped by the `groupBy()` function. Keys are group names, values are objects with space ids as keys, and corresponding color space objects are values. |
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
### Events
|
|
109
|
+
|
|
110
|
+
| Name | Description |
|
|
111
|
+
|---------------|------------------------------------------------------------------------------|
|
|
112
|
+
| `input` | Fired when the space changes due to user action. |
|
|
113
|
+
| `change` | Fired when the space changes due to user action. |
|
|
114
|
+
| `valuechange` | Fired when the value changes for any reason, and once during initialization. |
|
|
115
|
+
| `spacechange` | Fired when the space changes for any reason, and once during initialization. |
|
|
116
|
+
|
|
117
|
+
### Parts
|
|
118
|
+
|
|
119
|
+
| Name | Description |
|
|
120
|
+
|----------|----------------------------------|
|
|
121
|
+
| `base` | The internal `<select>` element. |
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
--border-width: 1px;
|
|
3
|
+
--border-color: rgb(0 0 0 / .2);
|
|
4
|
+
--border-radius: .2em;
|
|
5
|
+
|
|
6
|
+
padding: .3em .5em;
|
|
7
|
+
|
|
8
|
+
border-radius: var(--border-radius);
|
|
9
|
+
border: var(--border-width) solid var(--border-color);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
#picker {
|
|
13
|
+
font: inherit;
|
|
14
|
+
color: inherit;
|
|
15
|
+
background: inherit;
|
|
16
|
+
border: none;
|
|
17
|
+
field-sizing: content;
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
|
|
20
|
+
&:focus:not(:focus-visible) {
|
|
21
|
+
outline: none;
|
|
22
|
+
}
|
|
23
|
+
}
|