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,441 @@
|
|
|
1
|
+
import "../color-scale/color-scale.js";
|
|
2
|
+
import "../channel-picker/channel-picker.js";
|
|
3
|
+
import ColorElement from "../common/color-element.js";
|
|
4
|
+
|
|
5
|
+
const Self = class ColorChart extends ColorElement {
|
|
6
|
+
static tagName = "color-chart";
|
|
7
|
+
static url = import.meta.url;
|
|
8
|
+
static shadowStyle = true;
|
|
9
|
+
static shadowTemplate = `
|
|
10
|
+
<slot name="color-channel">
|
|
11
|
+
<channel-picker id="channel_picker" part="color-channel"></channel-picker>
|
|
12
|
+
</slot>
|
|
13
|
+
<div id="chart-container">
|
|
14
|
+
<div id="chart">
|
|
15
|
+
<slot></slot>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="axis" id="y_axis">
|
|
19
|
+
<div class="label" part="y label"></div>
|
|
20
|
+
<div class="ticks" part="y ticks"></div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="axis" id="x_axis">
|
|
23
|
+
<div class="label" part="x label"></div>
|
|
24
|
+
<div class="ticks" part="x ticks"></div>
|
|
25
|
+
</div>`;
|
|
26
|
+
static dependencies = new Set(["color-scale"]);
|
|
27
|
+
static globalStyle = new URL("color-chart-global.css", import.meta.url);
|
|
28
|
+
|
|
29
|
+
constructor () {
|
|
30
|
+
super();
|
|
31
|
+
|
|
32
|
+
this._el = {
|
|
33
|
+
slot: this.shadowRoot.querySelector("slot:not([name])"),
|
|
34
|
+
channel_picker: this.shadowRoot.getElementById("channel_picker"),
|
|
35
|
+
chart: this.shadowRoot.getElementById("chart"),
|
|
36
|
+
xTicks: this.shadowRoot.querySelector("#x_axis .ticks"),
|
|
37
|
+
yTicks: this.shadowRoot.querySelector("#y_axis .ticks"),
|
|
38
|
+
xLabel: this.shadowRoot.querySelector("#x_axis .label"),
|
|
39
|
+
yLabel: this.shadowRoot.querySelector("#y_axis .label"),
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
this._slots = {
|
|
43
|
+
color_channel: this.shadowRoot.querySelector("slot[name=color-channel]"),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
connectedCallback () {
|
|
48
|
+
super.connectedCallback();
|
|
49
|
+
this._el.chart.addEventListener("colorschange", this, {capture: true});
|
|
50
|
+
this._slots.color_channel.addEventListener("input", this);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
disconnectedCallback () {
|
|
54
|
+
this._el.chart.removeEventListener("colorschange", this, {capture: true});
|
|
55
|
+
this._slots.color_channel.removeEventListener("input", this);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
handleEvent (evt) {
|
|
59
|
+
let source = evt.target;
|
|
60
|
+
if (source.tagName === "COLOR-SCALE" && evt.name === "computedColors") {
|
|
61
|
+
this.render(evt);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (this._el.channel_picker === source || this._slots.color_channel.assignedElements().includes(source)) {
|
|
65
|
+
this.y = source.value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
series = new WeakMap();
|
|
70
|
+
|
|
71
|
+
render (evt) {
|
|
72
|
+
let colorScales = this.querySelectorAll("color-scale");
|
|
73
|
+
|
|
74
|
+
if (colorScales.length === 0) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
let minX = Infinity, maxX = -Infinity;
|
|
79
|
+
let minY = Infinity, maxY = -Infinity;
|
|
80
|
+
|
|
81
|
+
for (let colorScale of colorScales) {
|
|
82
|
+
let scale = this.series.get(colorScale);
|
|
83
|
+
|
|
84
|
+
if (!scale || !evt || evt.target === colorScale || evt.target.nodeName !== "COLOR-SCALE") {
|
|
85
|
+
scale = this.renderScale(colorScale);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!scale) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
minX = Math.min(scale.x.min, minX);
|
|
93
|
+
maxX = Math.max(scale.x.max, maxX);
|
|
94
|
+
minY = Math.min(scale.y.min, minY);
|
|
95
|
+
maxY = Math.max(scale.y.max, maxY);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (isFinite(minX) && isFinite(maxX)) {
|
|
99
|
+
let xAxis = getAxis(minX, maxX, 10);
|
|
100
|
+
this._el.chart.style.setProperty("--min-x", xAxis.min);
|
|
101
|
+
this._el.chart.style.setProperty("--max-x", xAxis.max);
|
|
102
|
+
this._el.chart.style.setProperty("--steps-x", xAxis.steps);
|
|
103
|
+
this._el.xTicks.innerHTML = Array(xAxis.steps).fill().map((_, i) => "<div part='x tick'>" + +(xAxis.min + i * xAxis.step).toPrecision(15) + "</div>").join("\n");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
minY = this.yMin === "auto" || this.yMinAsNumber === undefined || Number.isNaN(this.yMinAsNumber) ? minY : this.yMinAsNumber;
|
|
107
|
+
maxY = this.yMax === "auto" || this.yMaxAsNumber === undefined || Number.isNaN(this.yMaxAsNumber) ? maxY : this.yMaxAsNumber;
|
|
108
|
+
|
|
109
|
+
if (isFinite(minY) && isFinite(maxY)) {
|
|
110
|
+
let yAxis = getAxis(minY, maxY, 10);
|
|
111
|
+
|
|
112
|
+
this._el.chart.style.setProperty("--min-y", yAxis.min);
|
|
113
|
+
this._el.chart.style.setProperty("--max-y", yAxis.max);
|
|
114
|
+
this._el.chart.style.setProperty("--steps-y", yAxis.steps);
|
|
115
|
+
this._el.yTicks.innerHTML = Array(yAxis.steps).fill().map((_, i) => "<div part='y tick'>" + +(yAxis.min + i * yAxis.step).toPrecision(15) + "</div>").reverse().join("\n");
|
|
116
|
+
this._el.yLabel.textContent = this.space.name + " " + this.yResolved.name;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
renderScale (colorScale) {
|
|
121
|
+
if (!colorScale.computedColors) {
|
|
122
|
+
// Not yet initialized
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
let ret = {
|
|
127
|
+
element: colorScale,
|
|
128
|
+
swatches: new WeakMap(),
|
|
129
|
+
x: {min: Infinity, max: -Infinity, values: new WeakMap() },
|
|
130
|
+
y: {min: Infinity, max: -Infinity, values: new WeakMap()},
|
|
131
|
+
colors: colorScale.computedColors?.slice() ?? [],
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
colorScale.style.setProperty("--color-count", ret.colors.length);
|
|
135
|
+
|
|
136
|
+
let yAll = ret.colors.map(({color}) => color.to(this.space).get(this.y));
|
|
137
|
+
let yMin = this.yMin === "auto" || this.yMinAsNumber === undefined || Number.isNaN(this.yMinAsNumber) ? -Infinity : this.yMinAsNumber;
|
|
138
|
+
let yMax = this.yMax === "auto" || this.yMaxAsNumber === undefined || Number.isNaN(this.yMaxAsNumber) ? Infinity : this.yMaxAsNumber;
|
|
139
|
+
|
|
140
|
+
if (this.yResolved.type === "angle") {
|
|
141
|
+
// First, normalize
|
|
142
|
+
yAll = normalizeAngles(yAll);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
let index = 0;
|
|
146
|
+
for (let {name, color} of ret.colors) {
|
|
147
|
+
let swatch = colorScale._el.swatches.children[index];
|
|
148
|
+
ret.colors[index] = color = color.to(this.space);
|
|
149
|
+
ret.swatches.set(color, swatch);
|
|
150
|
+
|
|
151
|
+
// It's not always possible to use the last number in the color label as the X-coord;
|
|
152
|
+
// for example, the number “9” can't be interpreted as the X-coord in the “#90caf9” label.
|
|
153
|
+
// It might cause bugs with color order (see https://github.com/color-js/elements/issues/103).
|
|
154
|
+
// We expect the valid X-coord to be the only number in the color label (e.g., 50)
|
|
155
|
+
// or separated from the previous text with a space (e.g., Red 50 or Red / 50).
|
|
156
|
+
let x = name.match(/(?:^|\s)-?\d*\.?\d+$/)?.[0];
|
|
157
|
+
if (x !== undefined) {
|
|
158
|
+
// Transform `Label / X-coord` to `Label`
|
|
159
|
+
// (there should be at least one space before and after the slash so the number is treated as an X-coord)
|
|
160
|
+
let label = name.slice(0, -x.length).trim();
|
|
161
|
+
if (label.endsWith("/")) {
|
|
162
|
+
name = label.slice(0, -1).trim();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
swatch.label = name;
|
|
166
|
+
|
|
167
|
+
x = Number(x);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
x = index;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
let y = yAll[index];
|
|
174
|
+
|
|
175
|
+
ret.x.values.set(color, x);
|
|
176
|
+
ret.y.values.set(color, y);
|
|
177
|
+
|
|
178
|
+
let outOfRange = (isFinite(yMin) && y < yMin) || (isFinite(yMax) && y > yMax);
|
|
179
|
+
if (!outOfRange) {
|
|
180
|
+
// Only swatches that are in range participate in the min/max calculation
|
|
181
|
+
ret.x.min = Math.min(ret.x.min, x);
|
|
182
|
+
ret.x.max = Math.max(ret.x.max, x);
|
|
183
|
+
ret.y.min = Math.min(ret.y.min, y);
|
|
184
|
+
ret.y.max = Math.max(ret.y.max, y);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
swatch.style.setProperty("--x", x);
|
|
188
|
+
swatch.style.setProperty("--y", y);
|
|
189
|
+
swatch.style.setProperty("--index", index);
|
|
190
|
+
|
|
191
|
+
if (HTMLElement.prototype.hasOwnProperty("popover") && !swatch._el.wrapper.hasAttribute("popover")) {
|
|
192
|
+
// The Popover API is supported
|
|
193
|
+
let popover = swatch._el.wrapper;
|
|
194
|
+
popover.setAttribute("popover", "");
|
|
195
|
+
|
|
196
|
+
// We need these for the popover to be correctly activated and positioned,
|
|
197
|
+
// otherwise, it won't be on the top layer
|
|
198
|
+
swatch.addEventListener("pointerenter", evt => {
|
|
199
|
+
// Position the popover relative to the parent swatch
|
|
200
|
+
// (instead of the center of the viewport by default)
|
|
201
|
+
let rect = swatch.getBoundingClientRect();
|
|
202
|
+
popover.style.setProperty("--_popover-left", rect.left + rect.width / 2 + "px");
|
|
203
|
+
popover.style.setProperty("--_popover-top", rect.top - rect.height / 2 + "px");
|
|
204
|
+
|
|
205
|
+
popover.showPopover();
|
|
206
|
+
});
|
|
207
|
+
swatch.addEventListener("pointerleave", evt => popover.hidePopover());
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
index++;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Sort colors by X (ascending)
|
|
214
|
+
ret.colors.sort((a, b) => ret.x.values.get(a) - ret.x.values.get(b));
|
|
215
|
+
|
|
216
|
+
let prevColor;
|
|
217
|
+
for (let color of ret.colors) {
|
|
218
|
+
let swatch = ret.swatches.get(color);
|
|
219
|
+
|
|
220
|
+
if (prevColor !== undefined) {
|
|
221
|
+
prevColor.style.setProperty("--next-color", swatch.style.getPropertyValue("--color"));
|
|
222
|
+
prevColor.style.setProperty("--next-x", ret.x.values.get(color));
|
|
223
|
+
prevColor.style.setProperty("--next-y", ret.y.values.get(color));
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
prevColor = swatch;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (prevColor !== undefined) {
|
|
230
|
+
// When we update colors, and we have fewer colors than before,
|
|
231
|
+
// we need to make sure the last swatch is not connected to the non-existent next swatch
|
|
232
|
+
["--next-color", "--next-x", "--next-y"].forEach(prop => prevColor.style.removeProperty(prop));
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
this.series.set(colorScale, ret);
|
|
236
|
+
|
|
237
|
+
return ret;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
propChangedCallback (evt) {
|
|
241
|
+
let {name, prop, detail: change} = evt;
|
|
242
|
+
|
|
243
|
+
if (["yResolved", "yMinAsNumber", "yMaxAsNumber"].includes(name)) {
|
|
244
|
+
// Re-render swatches
|
|
245
|
+
this.render(evt);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (name === "info") {
|
|
249
|
+
for (let colorScale of this.children) {
|
|
250
|
+
colorScale.info = this.info;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
static props = {
|
|
256
|
+
y: {
|
|
257
|
+
default: "oklch.l",
|
|
258
|
+
convert (value) {
|
|
259
|
+
// Try setting the value to the channel picker. The picker will handle possible erroneous values.
|
|
260
|
+
this._el.channel_picker.value = value;
|
|
261
|
+
|
|
262
|
+
// If the value is not set, that means it's invalid.
|
|
263
|
+
// In that case, we are falling back to the picker's current value.
|
|
264
|
+
if (this._el.channel_picker.value !== value) {
|
|
265
|
+
return this._el.channel_picker.value;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return value;
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
|
|
272
|
+
yResolved: {
|
|
273
|
+
get () {
|
|
274
|
+
return Self.Color.Space.resolveCoord(this.y, "oklch");
|
|
275
|
+
},
|
|
276
|
+
// rawProp: "coord",
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
yMin: {
|
|
280
|
+
default: "auto",
|
|
281
|
+
changed (change) {
|
|
282
|
+
let { value } = change;
|
|
283
|
+
|
|
284
|
+
if (value === "auto") {
|
|
285
|
+
// `this.yMinAsNumber` will become `undefined` (i.e., get a new value), and the chart will be re-rendered
|
|
286
|
+
this._el.chart.style.removeProperty("--min-y");
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
reflect: {
|
|
290
|
+
from: "ymin",
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
|
|
294
|
+
yMinAsNumber: {
|
|
295
|
+
get () {
|
|
296
|
+
if (this.yMin === "coord") {
|
|
297
|
+
let range = this.yResolved.refRange ?? this.yResolved.range ?? [0, 100];
|
|
298
|
+
return range[0];
|
|
299
|
+
}
|
|
300
|
+
else if (this.yMin === "auto") {
|
|
301
|
+
let minY = this._el.chart.style.getPropertyValue("--min-y");
|
|
302
|
+
|
|
303
|
+
if (minY !== "") {
|
|
304
|
+
return Number(minY);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Intermediate state (the chart is not rendered yet)
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return Number(this.yMin);
|
|
312
|
+
},
|
|
313
|
+
set (value) {
|
|
314
|
+
value = Number(value);
|
|
315
|
+
|
|
316
|
+
if (Number.isNaN(value)) {
|
|
317
|
+
this.yMin = "auto";
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
this.yMin = value.toString();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
|
|
326
|
+
yMax: {
|
|
327
|
+
default: "auto",
|
|
328
|
+
changed (change) {
|
|
329
|
+
let { value } = change;
|
|
330
|
+
|
|
331
|
+
if (value === "auto") {
|
|
332
|
+
// `this.yMaxAsNumber` will become `undefined` (i.e., get a new value), and the chart will be re-rendered
|
|
333
|
+
this._el.chart.style.removeProperty("--max-y");
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
reflect: {
|
|
337
|
+
from: "ymax",
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
|
|
341
|
+
yMaxAsNumber: {
|
|
342
|
+
get () {
|
|
343
|
+
if (this.yMax === "coord") {
|
|
344
|
+
let range = this.yResolved.refRange ?? this.yResolved.range ?? [0, 100];
|
|
345
|
+
return range[1];
|
|
346
|
+
}
|
|
347
|
+
else if (this.yMax === "auto") {
|
|
348
|
+
let maxY = this._el.chart.style.getPropertyValue("--max-y");
|
|
349
|
+
|
|
350
|
+
if (maxY !== "") {
|
|
351
|
+
return Number(maxY);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Intermediate state (the chart is not rendered yet)
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
return Number(this.yMax);
|
|
359
|
+
|
|
360
|
+
},
|
|
361
|
+
set (value) {
|
|
362
|
+
value = Number(value);
|
|
363
|
+
|
|
364
|
+
if (Number.isNaN(value)) {
|
|
365
|
+
this.yMax = "auto";
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
this.yMax = value.toString();
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
space: {
|
|
375
|
+
default: "oklch",
|
|
376
|
+
get () {
|
|
377
|
+
return this.yResolved.space;
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
|
|
381
|
+
info: {},
|
|
382
|
+
};
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
Self.define();
|
|
386
|
+
|
|
387
|
+
export default Self;
|
|
388
|
+
|
|
389
|
+
function getAxis (min, max, initialSteps) {
|
|
390
|
+
let range = max - min;
|
|
391
|
+
let step = range / initialSteps;
|
|
392
|
+
let magnitude = Math.floor(Math.log10(step));
|
|
393
|
+
let base = Math.pow(10, magnitude);
|
|
394
|
+
let candidates = [base, base * 2, base * 5, base * 10];
|
|
395
|
+
|
|
396
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
397
|
+
if (candidates[i] > step) {
|
|
398
|
+
step = candidates[i];
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
let start = Math.floor(min / step) * step;
|
|
404
|
+
let end = Math.ceil(max / step) * step;
|
|
405
|
+
let steps = Math.round((end - start) / step);
|
|
406
|
+
|
|
407
|
+
let ret = {min: start, max: end, step, steps};
|
|
408
|
+
for (let prop in ret) {
|
|
409
|
+
ret[prop] = +ret[prop].toPrecision(15);
|
|
410
|
+
}
|
|
411
|
+
return ret;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
function normalizeAngles (angles) {
|
|
415
|
+
// First, normalize
|
|
416
|
+
angles = angles.map(h => ((h % 360) + 360) % 360);
|
|
417
|
+
|
|
418
|
+
// Remove top and bottom 25% and find average
|
|
419
|
+
let averageHue = angles.toSorted((a, b) => a - b).slice(angles.length / 4, -angles.length / 4).reduce((a, b) => a + b, 0) / angles.length;
|
|
420
|
+
|
|
421
|
+
for (let i = 0; i < angles.length; i++) {
|
|
422
|
+
let h = angles[i];
|
|
423
|
+
let prevHue = angles[i - 1];
|
|
424
|
+
let delta = h - prevHue;
|
|
425
|
+
|
|
426
|
+
if (Math.abs(delta) > 180) {
|
|
427
|
+
let equivalent = [h + 360, h - 360];
|
|
428
|
+
// Offset hue to minimize difference in the direction that brings it closer to the average
|
|
429
|
+
let delta = h - averageHue;
|
|
430
|
+
|
|
431
|
+
if (Math.abs(equivalent[0] - prevHue) <= Math.abs(equivalent[1] - prevHue)) {
|
|
432
|
+
angles[i] = equivalent[0];
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
angles[i] = equivalent[1];
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
return angles;
|
|
441
|
+
}
|
|
Binary file
|
|
@@ -14,6 +14,12 @@ Basic use:
|
|
|
14
14
|
```
|
|
15
15
|
</html-demo>
|
|
16
16
|
|
|
17
|
+
You can use `value` to set the color swatch while displaying something else as the content (or even nothing at all):
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<color-inline value="lch(50% 40 30)"></color-inline>
|
|
21
|
+
```
|
|
22
|
+
|
|
17
23
|
Editable:
|
|
18
24
|
```html
|
|
19
25
|
<color-inline contentEditable>lch(50% 40 30)</color-inline>
|
|
@@ -28,4 +34,39 @@ Invalid color:
|
|
|
28
34
|
|
|
29
35
|
```html
|
|
30
36
|
<color-inline>foobar</color-inline>
|
|
31
|
-
```
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Reference
|
|
40
|
+
|
|
41
|
+
### Slots
|
|
42
|
+
|
|
43
|
+
| Name | Description |
|
|
44
|
+
|------|-------------|
|
|
45
|
+
| _(default)_ | The element's main content—the color to be shown. Placed next to the color swatch. |
|
|
46
|
+
|
|
47
|
+
### Attributes & Properties
|
|
48
|
+
|
|
49
|
+
| Attribute | Property | Property type | Default value | Description |
|
|
50
|
+
|-----------|----------|---------------|---------------|-------------|
|
|
51
|
+
| `color` | `color` | `Color` | `null` | - | The current color value. `null` for invalid colors. |
|
|
52
|
+
| `value` | `value` | `string` | - | The textual form of the color. Will have a value even if the color is invalid. |
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### CSS variables
|
|
56
|
+
|
|
57
|
+
| Variable | Type | Description |
|
|
58
|
+
|----------|---------------|-------------|
|
|
59
|
+
| `--transparency-grid` | `<image>` | Gradient used as a background for transparent parts of the swatch. |
|
|
60
|
+
| `--transparency-cell-size` | `<length>` | The size of the tiles in the transparency grid. This will not be used if you are overriding `--transparency-grid`. |
|
|
61
|
+
| `--transparcency-background` | `<color>` | The background color of the transparency gradient. |
|
|
62
|
+
| `--transparency-darkness` | `<percentage>` | The opacity of the black color used for dark parts of the transparency gradient. |
|
|
63
|
+
| `--border-width` | `<length>` | The width of the border around the swatch. |
|
|
64
|
+
| `--box-shadow-blur` | `<length>` | The blur radius of the box shadow around the swatch. |
|
|
65
|
+
| `--box-shadow-color` | `<color>` | The color of the box shadow around the swatch. |
|
|
66
|
+
|
|
67
|
+
### Parts
|
|
68
|
+
|
|
69
|
+
| Name | Description |
|
|
70
|
+
|------|-------------|
|
|
71
|
+
| `swatch-wrapper` | The component’s base wrapper. |
|
|
72
|
+
| `swatch` | An internal element used to provide a visual preview of the current color. |
|
|
@@ -6,9 +6,16 @@
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
#swatch {
|
|
9
|
+
--_transparency-cell-size: var(--transparency-cell-size, clamp(6px, .5em, 30px));
|
|
10
|
+
--_transparency-background: var(--transparency-background, transparent);
|
|
11
|
+
--_transparency-darkness: var(--transparency-darkness, 5%);
|
|
12
|
+
--_transparency-grid: var(--transparency-grid,
|
|
13
|
+
repeating-conic-gradient(transparent 0 25%, rgb(0 0 0 / var(--_transparency-darkness)) 0 50%)
|
|
14
|
+
0 0 / calc(2 * var(--_transparency-cell-size)) calc(2 * var(--_transparency-cell-size))
|
|
15
|
+
content-box border-box var(--_transparency-background)
|
|
16
|
+
);
|
|
17
|
+
|
|
9
18
|
--color-image: linear-gradient(var(--color), var(--color));
|
|
10
|
-
--transparency-tile-size: clamp(6px, .5em, 30px);
|
|
11
|
-
--transparency-grid: repeating-conic-gradient(hsl(0 0% 85%) 0 25%, hsl(0 0% 98%) 0 50%) 0 0 / var(--transparency-tile-size) var(--transparency-tile-size);
|
|
12
19
|
--border-width: clamp(2px, .15em, 16px);
|
|
13
20
|
--box-shadow-blur: clamp(2px, .1em, 5px);
|
|
14
21
|
--box-shadow-color: rgb(0 0 0 / .3);
|
|
@@ -19,7 +26,7 @@
|
|
|
19
26
|
height: 1.2em;
|
|
20
27
|
border: var(--border-width) solid white;
|
|
21
28
|
box-sizing: border-box;
|
|
22
|
-
background: var(--color-image, 0), var(--
|
|
29
|
+
background: var(--color-image, 0), var(--_transparency-grid, canvas);
|
|
23
30
|
box-shadow: calc(var(--box-shadow-blur) * .2) calc(var(--box-shadow-blur) * .2) var(--box-shadow-blur) var(--box-shadow-color);
|
|
24
31
|
border-radius: clamp(1px, .1em, 10px);
|
|
25
32
|
}
|
|
@@ -31,7 +38,7 @@
|
|
|
31
38
|
|
|
32
39
|
#swatch.invalid {
|
|
33
40
|
--color-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y=".9em" font-size="90">⚠️</text></svg>');
|
|
34
|
-
--
|
|
41
|
+
--_transparency-grid: initial;
|
|
35
42
|
}
|
|
36
43
|
|
|
37
44
|
@media (prefers-color-scheme: dark) {
|
|
@@ -1,62 +1,34 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ColorElement from "../common/color-element.js";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
constructor () {
|
|
9
|
-
super();
|
|
10
|
-
this.attachShadow({mode: "open"});
|
|
11
|
-
this.shadowRoot.innerHTML = `<style>@import url("${ styleURL }");</style>
|
|
3
|
+
const Self = class ColorInline extends ColorElement {
|
|
4
|
+
static tagName = "color-inline";
|
|
5
|
+
static url = import.meta.url;
|
|
6
|
+
static shadowStyle = true;
|
|
7
|
+
static shadowTemplate = `
|
|
12
8
|
<div part="swatch-wrapper">
|
|
13
9
|
<div id="swatch" part="swatch"></div>
|
|
14
10
|
<slot></slot>
|
|
15
11
|
</div>`;
|
|
16
|
-
this.#swatch = this.shadowRoot.querySelector("#swatch");
|
|
17
|
-
this.attributeChangedCallback();
|
|
18
|
-
}
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
ColorInline.#mo.observe(this, {childList: true, subtree: true, characterData: true});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
#value;
|
|
26
|
-
get value () {
|
|
27
|
-
return this.#value;
|
|
28
|
-
}
|
|
29
|
-
set value (value) {
|
|
30
|
-
this.#value = value;
|
|
31
|
-
this.#render();
|
|
32
|
-
}
|
|
13
|
+
constructor () {
|
|
14
|
+
super();
|
|
33
15
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return this.#color;
|
|
16
|
+
this._el = {};
|
|
17
|
+
this._el.swatch = this.shadowRoot.querySelector("#swatch");
|
|
37
18
|
}
|
|
38
19
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
this.#color = new Color(colorText);
|
|
44
|
-
this.#swatch.style.cssText = `--color: ${this.#color.display()}`;
|
|
45
|
-
this.#swatch.classList.remove("invalid");
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
this.#color = null;
|
|
49
|
-
this.#swatch.classList.add("invalid");
|
|
50
|
-
}
|
|
20
|
+
connectedCallback () {
|
|
21
|
+
super.connectedCallback?.();
|
|
22
|
+
Self.#mo.observe(this, {childList: true, subtree: true, characterData: true});
|
|
51
23
|
}
|
|
52
24
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
25
|
+
propChangedCallback ({name, prop, detail: change}) {
|
|
26
|
+
if (name === "color") {
|
|
27
|
+
let isValid = this.color !== null;
|
|
28
|
+
this._el.swatch.classList.toggle("invalid", !isValid);
|
|
56
29
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.value = this.getAttribute("value");
|
|
30
|
+
let colorString = this.color?.display();
|
|
31
|
+
this._el.swatch.style.setProperty("--color", colorString);
|
|
60
32
|
}
|
|
61
33
|
}
|
|
62
34
|
|
|
@@ -69,11 +41,45 @@ export default class ColorInline extends HTMLElement {
|
|
|
69
41
|
}
|
|
70
42
|
|
|
71
43
|
if (target) {
|
|
72
|
-
target
|
|
44
|
+
target.value = target.textContent.trim();
|
|
73
45
|
}
|
|
74
46
|
}
|
|
75
47
|
});
|
|
76
|
-
}
|
|
77
48
|
|
|
49
|
+
static props = {
|
|
50
|
+
value: {
|
|
51
|
+
type: String,
|
|
52
|
+
default () {
|
|
53
|
+
return this.textContent.trim();
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
color: {
|
|
57
|
+
get type () {
|
|
58
|
+
return Self.Color;
|
|
59
|
+
},
|
|
60
|
+
defaultProp: "value",
|
|
61
|
+
parse (value) {
|
|
62
|
+
if (!value) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return Self.Color.get(value);
|
|
67
|
+
},
|
|
68
|
+
reflect: false,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
static events = {
|
|
73
|
+
colorchange: {
|
|
74
|
+
propchange: "color",
|
|
75
|
+
},
|
|
76
|
+
valuechange: {
|
|
77
|
+
propchange: "value",
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
Self.define();
|
|
78
84
|
|
|
79
|
-
|
|
85
|
+
export default Self;
|
|
Binary file
|