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
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
import ColorSpace from "../space.js";
|
|
2
|
-
import {multiplyMatrices, interpolate, copySign, spow, zdiv, bisectLeft} from "../util.js";
|
|
3
|
-
import {constrain} from "../angles.js";
|
|
4
|
-
import xyz_d65 from "./xyz-d65.js";
|
|
5
|
-
import {WHITES} from "../adapt.js";
|
|
6
|
-
|
|
7
|
-
const white = WHITES.D65;
|
|
8
|
-
const adaptedCoef = 0.42;
|
|
9
|
-
const adaptedCoefInv = 1 / adaptedCoef;
|
|
10
|
-
const tau = 2 * Math.PI;
|
|
11
|
-
|
|
12
|
-
const cat16 = [
|
|
13
|
-
[ 0.401288, 0.650173, -0.051461 ],
|
|
14
|
-
[ -0.250268, 1.204414, 0.045854 ],
|
|
15
|
-
[ -0.002079, 0.048952, 0.953127 ],
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
const cat16Inv = [
|
|
19
|
-
[1.8620678550872327, -1.0112546305316843, 0.14918677544445175],
|
|
20
|
-
[0.38752654323613717, 0.6214474419314753, -0.008973985167612518],
|
|
21
|
-
[-0.015841498849333856, -0.03412293802851557, 1.0499644368778496],
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
const m1 = [
|
|
25
|
-
[460.0, 451.0, 288.0],
|
|
26
|
-
[460.0, -891.0, -261.0],
|
|
27
|
-
[460.0, -220.0, -6300.0],
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
const surroundMap = {
|
|
31
|
-
dark: [0.8, 0.525, 0.8],
|
|
32
|
-
dim: [0.9, 0.59, 0.9],
|
|
33
|
-
average: [1, 0.69, 1],
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const hueQuadMap = {
|
|
37
|
-
// Red, Yellow, Green, Blue, Red
|
|
38
|
-
h: [20.14, 90.00, 164.25, 237.53, 380.14],
|
|
39
|
-
e: [0.8, 0.7, 1.0, 1.2, 0.8],
|
|
40
|
-
H: [0.0, 100.0, 200.0, 300.0, 400.0],
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const rad2deg = 180 / Math.PI;
|
|
44
|
-
const deg2rad = Math.PI / 180;
|
|
45
|
-
|
|
46
|
-
export function adapt (coords, fl) {
|
|
47
|
-
const temp = coords.map(c => {
|
|
48
|
-
const x = spow(fl * Math.abs(c) * 0.01, adaptedCoef);
|
|
49
|
-
return 400 * copySign(x, c) / (x + 27.13);
|
|
50
|
-
});
|
|
51
|
-
return temp;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export function unadapt (adapted, fl) {
|
|
55
|
-
const constant = 100 / fl * (27.13 ** adaptedCoefInv);
|
|
56
|
-
return adapted.map(c => {
|
|
57
|
-
const cabs = Math.abs(c);
|
|
58
|
-
return copySign(constant * spow(cabs / (400 - cabs), adaptedCoefInv), c);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export function hueQuadrature (h) {
|
|
63
|
-
let hp = constrain(h);
|
|
64
|
-
if (hp <= hueQuadMap.h[0]) {
|
|
65
|
-
hp += 360;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const i = bisectLeft(hueQuadMap.h, hp) - 1;
|
|
69
|
-
const [hi, hii] = hueQuadMap.h.slice(i, i + 2);
|
|
70
|
-
const [ei, eii] = hueQuadMap.e.slice(i, i + 2);
|
|
71
|
-
const Hi = hueQuadMap.H[i];
|
|
72
|
-
|
|
73
|
-
const t = (hp - hi) / ei;
|
|
74
|
-
return Hi + (100 * t) / (t + (hii - hp) / eii);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export function invHueQuadrature (H) {
|
|
78
|
-
let Hp = ((H % 400 + 400) % 400);
|
|
79
|
-
const i = Math.floor(0.01 * Hp);
|
|
80
|
-
Hp = Hp % 100;
|
|
81
|
-
const [hi, hii] = hueQuadMap.h.slice(i, i + 2);
|
|
82
|
-
const [ei, eii] = hueQuadMap.e.slice(i, i + 2);
|
|
83
|
-
|
|
84
|
-
return constrain(
|
|
85
|
-
(Hp * (eii * hi - ei * hii) - 100 * hi * eii) /
|
|
86
|
-
(Hp * (eii - ei) - 100 * eii),
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export function environment (
|
|
91
|
-
refWhite,
|
|
92
|
-
adaptingLuminance,
|
|
93
|
-
backgroundLuminance,
|
|
94
|
-
surround,
|
|
95
|
-
discounting,
|
|
96
|
-
) {
|
|
97
|
-
|
|
98
|
-
const env = {};
|
|
99
|
-
|
|
100
|
-
env.discounting = discounting;
|
|
101
|
-
env.refWhite = refWhite;
|
|
102
|
-
env.surround = surround;
|
|
103
|
-
const xyzW = refWhite.map(c => {
|
|
104
|
-
return c * 100;
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
// The average luminance of the environment in `cd/m^2cd/m` (a.k.a. nits)
|
|
108
|
-
env.la = adaptingLuminance;
|
|
109
|
-
// The relative luminance of the nearby background
|
|
110
|
-
env.yb = backgroundLuminance;
|
|
111
|
-
// Absolute luminance of the reference white.
|
|
112
|
-
const yw = xyzW[1];
|
|
113
|
-
|
|
114
|
-
// Cone response for reference white
|
|
115
|
-
const rgbW = multiplyMatrices(cat16, xyzW);
|
|
116
|
-
|
|
117
|
-
// Surround: dark, dim, and average
|
|
118
|
-
surround = surroundMap[env.surround];
|
|
119
|
-
const f = surround[0];
|
|
120
|
-
env.c = surround[1];
|
|
121
|
-
env.nc = surround[2];
|
|
122
|
-
|
|
123
|
-
const k = 1 / (5 * env.la + 1);
|
|
124
|
-
const k4 = k ** 4;
|
|
125
|
-
|
|
126
|
-
// Factor of luminance level adaptation
|
|
127
|
-
env.fl = (k4 * env.la + 0.1 * (1 - k4) * (1 - k4) * Math.cbrt(5 * env.la));
|
|
128
|
-
env.flRoot = env.fl ** 0.25;
|
|
129
|
-
|
|
130
|
-
env.n = env.yb / yw;
|
|
131
|
-
env.z = 1.48 + Math.sqrt(env.n);
|
|
132
|
-
env.nbb = 0.725 * (env.n ** -0.2);
|
|
133
|
-
env.ncb = env.nbb;
|
|
134
|
-
|
|
135
|
-
// Degree of adaptation calculating if not discounting
|
|
136
|
-
// illuminant (assumed eye is fully adapted)
|
|
137
|
-
const d = (discounting) ?
|
|
138
|
-
1 :
|
|
139
|
-
Math.max(
|
|
140
|
-
Math.min(f * (1 - 1 / 3.6 * Math.exp((-env.la - 42) / 92)), 1),
|
|
141
|
-
0,
|
|
142
|
-
);
|
|
143
|
-
env.dRgb = rgbW.map(c => {
|
|
144
|
-
return interpolate(1, yw / c, d);
|
|
145
|
-
});
|
|
146
|
-
env.dRgbInv = env.dRgb.map(c => {
|
|
147
|
-
return 1 / c;
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
// Achromatic response
|
|
151
|
-
const rgbCW = rgbW.map((c, i) => {
|
|
152
|
-
return c * env.dRgb[i];
|
|
153
|
-
});
|
|
154
|
-
const rgbAW = adapt(rgbCW, env.fl);
|
|
155
|
-
env.aW = env.nbb * (2 * rgbAW[0] + rgbAW[1] + 0.05 * rgbAW[2]);
|
|
156
|
-
|
|
157
|
-
// console.log(env);
|
|
158
|
-
|
|
159
|
-
return env;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Pre-calculate everything we can with the viewing conditions
|
|
163
|
-
const viewingConditions = environment(
|
|
164
|
-
white,
|
|
165
|
-
64 / Math.PI * 0.2, 20,
|
|
166
|
-
"average",
|
|
167
|
-
false,
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
export function fromCam16 (cam16, env) {
|
|
171
|
-
|
|
172
|
-
// These check ensure one, and only one attribute for a
|
|
173
|
-
// given category is provided.
|
|
174
|
-
if (!((cam16.J !== undefined) ^ (cam16.Q !== undefined))) {
|
|
175
|
-
throw new Error("Conversion requires one and only one: 'J' or 'Q'");
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
if (!((cam16.C !== undefined) ^ (cam16.M !== undefined) ^ (cam16.s !== undefined))) {
|
|
179
|
-
throw new Error("Conversion requires one and only one: 'C', 'M' or 's'");
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Hue is absolutely required
|
|
183
|
-
if (!((cam16.h !== undefined) ^ (cam16.H !== undefined))) {
|
|
184
|
-
throw new Error("Conversion requires one and only one: 'h' or 'H'");
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Black
|
|
188
|
-
if (cam16.J === 0.0 || cam16.Q === 0.0) {
|
|
189
|
-
return [0.0, 0.0, 0.0];
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Break hue into Cartesian components
|
|
193
|
-
let hRad = 0.0;
|
|
194
|
-
if (cam16.h !== undefined) {
|
|
195
|
-
hRad = constrain(cam16.h) * deg2rad;
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
hRad = invHueQuadrature(cam16.H) * deg2rad;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
const cosh = Math.cos(hRad);
|
|
202
|
-
const sinh = Math.sin(hRad);
|
|
203
|
-
|
|
204
|
-
// Calculate `Jroot` from one of the lightness derived coordinates.
|
|
205
|
-
let Jroot = 0.0;
|
|
206
|
-
if (cam16.J !== undefined) {
|
|
207
|
-
Jroot = spow(cam16.J, 1 / 2) * 0.1;
|
|
208
|
-
}
|
|
209
|
-
else if (cam16.Q !== undefined) {
|
|
210
|
-
Jroot = 0.25 * env.c * cam16.Q / ((env.aW + 4) * env.flRoot);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// Calculate the `t` value from one of the chroma derived coordinates
|
|
214
|
-
let alpha = 0.0;
|
|
215
|
-
if (cam16.C !== undefined) {
|
|
216
|
-
alpha = cam16.C / Jroot;
|
|
217
|
-
}
|
|
218
|
-
else if (cam16.M !== undefined) {
|
|
219
|
-
alpha = (cam16.M / env.flRoot) / Jroot;
|
|
220
|
-
}
|
|
221
|
-
else if (cam16.s !== undefined) {
|
|
222
|
-
alpha = 0.0004 * (cam16.s ** 2) * (env.aW + 4) / env.c;
|
|
223
|
-
}
|
|
224
|
-
const t = spow(
|
|
225
|
-
alpha * Math.pow(1.64 - Math.pow(0.29, env.n), -0.73),
|
|
226
|
-
10 / 9,
|
|
227
|
-
);
|
|
228
|
-
|
|
229
|
-
// Eccentricity
|
|
230
|
-
const et = 0.25 * (Math.cos(hRad + 2) + 3.8);
|
|
231
|
-
|
|
232
|
-
// Achromatic response
|
|
233
|
-
const A = env.aW * spow(Jroot, 2 / env.c / env.z);
|
|
234
|
-
|
|
235
|
-
// Calculate red-green and yellow-blue components
|
|
236
|
-
const p1 = 5e4 / 13 * env.nc * env.ncb * et;
|
|
237
|
-
const p2 = A / env.nbb;
|
|
238
|
-
const r = (
|
|
239
|
-
23 * (p2 + 0.305) *
|
|
240
|
-
zdiv(t, 23 * p1 + t * (11 * cosh + 108 * sinh))
|
|
241
|
-
);
|
|
242
|
-
const a = r * cosh;
|
|
243
|
-
const b = r * sinh;
|
|
244
|
-
|
|
245
|
-
// Calculate back from cone response to XYZ
|
|
246
|
-
const rgb_c = unadapt(
|
|
247
|
-
multiplyMatrices(m1, [p2, a, b]).map(c => {
|
|
248
|
-
return c * 1 / 1403;
|
|
249
|
-
}),
|
|
250
|
-
env.fl,
|
|
251
|
-
);
|
|
252
|
-
return multiplyMatrices(
|
|
253
|
-
cat16Inv,
|
|
254
|
-
rgb_c.map((c, i) => {
|
|
255
|
-
return c * env.dRgbInv[i];
|
|
256
|
-
}),
|
|
257
|
-
).map(c => {
|
|
258
|
-
return c / 100;
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
export function toCam16 (xyzd65, env) {
|
|
264
|
-
// Cone response
|
|
265
|
-
const xyz100 = xyzd65.map(c => {
|
|
266
|
-
return c * 100;
|
|
267
|
-
});
|
|
268
|
-
const rgbA = adapt(
|
|
269
|
-
multiplyMatrices(cat16, xyz100).map((c, i) => {
|
|
270
|
-
return c * env.dRgb[i];
|
|
271
|
-
}),
|
|
272
|
-
env.fl,
|
|
273
|
-
);
|
|
274
|
-
|
|
275
|
-
// Calculate hue from red-green and yellow-blue components
|
|
276
|
-
const a = rgbA[0] + (-12 * rgbA[1] + rgbA[2]) / 11;
|
|
277
|
-
const b = (rgbA[0] + rgbA[1] - 2 * rgbA[2]) / 9;
|
|
278
|
-
const hRad = ((Math.atan2(b, a) % tau) + tau) % tau;
|
|
279
|
-
|
|
280
|
-
// Eccentricity
|
|
281
|
-
const et = 0.25 * (Math.cos(hRad + 2) + 3.8);
|
|
282
|
-
|
|
283
|
-
const t = (
|
|
284
|
-
5e4 / 13 * env.nc * env.ncb *
|
|
285
|
-
zdiv(
|
|
286
|
-
et * Math.sqrt(a ** 2 + b ** 2),
|
|
287
|
-
rgbA[0] + rgbA[1] + 1.05 * rgbA[2] + 0.305,
|
|
288
|
-
)
|
|
289
|
-
);
|
|
290
|
-
const alpha = spow(t, 0.9) * Math.pow(1.64 - Math.pow(0.29, env.n), 0.73);
|
|
291
|
-
|
|
292
|
-
// Achromatic response
|
|
293
|
-
const A = env.nbb * (2 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]);
|
|
294
|
-
|
|
295
|
-
const Jroot = spow(A / env.aW, 0.5 * env.c * env.z);
|
|
296
|
-
|
|
297
|
-
// Lightness
|
|
298
|
-
const J = 100 * spow(Jroot, 2);
|
|
299
|
-
|
|
300
|
-
// Brightness
|
|
301
|
-
const Q = (4 / env.c * Jroot * (env.aW + 4) * env.flRoot);
|
|
302
|
-
|
|
303
|
-
// Chroma
|
|
304
|
-
const C = alpha * Jroot;
|
|
305
|
-
|
|
306
|
-
// Colorfulness
|
|
307
|
-
const M = C * env.flRoot;
|
|
308
|
-
|
|
309
|
-
// Hue
|
|
310
|
-
const h = constrain(hRad * rad2deg);
|
|
311
|
-
|
|
312
|
-
// Hue quadrature
|
|
313
|
-
const H = hueQuadrature(h);
|
|
314
|
-
|
|
315
|
-
// Saturation
|
|
316
|
-
const s = 50 * spow(env.c * alpha / (env.aW + 4), 1 / 2);
|
|
317
|
-
|
|
318
|
-
// console.log({J: J, C: C, h: h, s: s, Q: Q, M: M, H: H});
|
|
319
|
-
|
|
320
|
-
return {J: J, C: C, h: h, s: s, Q: Q, M: M, H: H};
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
// Provided as a way to directly evaluate the CAM16 model
|
|
325
|
-
// https://observablehq.com/@jrus/cam16: reference implementation
|
|
326
|
-
// https://arxiv.org/pdf/1802.06067.pdf: Nico Schlömer
|
|
327
|
-
// https://onlinelibrary.wiley.com/doi/pdf/10.1002/col.22324: hue quadrature
|
|
328
|
-
// https://www.researchgate.net/publication/318152296_Comprehensive_color_solutions_CAM16_CAT16_and_CAM16-UCS
|
|
329
|
-
// Results compared against: https://github.com/colour-science/colour
|
|
330
|
-
export default new ColorSpace({
|
|
331
|
-
id: "cam16-jmh",
|
|
332
|
-
cssId: "--cam16-jmh",
|
|
333
|
-
name: "CAM16-JMh",
|
|
334
|
-
coords: {
|
|
335
|
-
j: {
|
|
336
|
-
refRange: [0, 100],
|
|
337
|
-
name: "J",
|
|
338
|
-
},
|
|
339
|
-
m: {
|
|
340
|
-
refRange: [0, 105.0],
|
|
341
|
-
name: "Colorfulness",
|
|
342
|
-
},
|
|
343
|
-
h: {
|
|
344
|
-
refRange: [0, 360],
|
|
345
|
-
type: "angle",
|
|
346
|
-
name: "Hue",
|
|
347
|
-
},
|
|
348
|
-
},
|
|
349
|
-
|
|
350
|
-
base: xyz_d65,
|
|
351
|
-
|
|
352
|
-
fromBase (xyz) {
|
|
353
|
-
const cam16 = toCam16(xyz, viewingConditions);
|
|
354
|
-
return [cam16.J, cam16.M, cam16.h];
|
|
355
|
-
},
|
|
356
|
-
toBase (cam16) {
|
|
357
|
-
return fromCam16(
|
|
358
|
-
{J: cam16[0], M: cam16[1], h: cam16[2]},
|
|
359
|
-
viewingConditions,
|
|
360
|
-
);
|
|
361
|
-
},
|
|
362
|
-
});
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import ColorSpace from "../space.js";
|
|
2
|
-
import {constrain} from "../angles.js";
|
|
3
|
-
import xyz_d65 from "./xyz-d65.js";
|
|
4
|
-
import {fromCam16, toCam16, environment} from "./cam16.js";
|
|
5
|
-
import {WHITES} from "../adapt.js";
|
|
6
|
-
|
|
7
|
-
const white = WHITES.D65;
|
|
8
|
-
const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
|
|
9
|
-
const κ = 24389 / 27; // 29^3/3^3
|
|
10
|
-
|
|
11
|
-
function toLstar (y) {
|
|
12
|
-
// Convert XYZ Y to L*
|
|
13
|
-
|
|
14
|
-
const fy = (y > ε) ? Math.cbrt(y) : (κ * y + 16) / 116;
|
|
15
|
-
return (116.0 * fy) - 16.0;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function fromLstar (lstar) {
|
|
19
|
-
// Convert L* back to XYZ Y
|
|
20
|
-
|
|
21
|
-
return (lstar > 8) ? Math.pow((lstar + 16) / 116, 3) : lstar / κ;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function fromHct (coords, env) {
|
|
25
|
-
// Use Newton's method to try and converge as quick as possible or
|
|
26
|
-
// converge as close as we can. While the requested precision is achieved
|
|
27
|
-
// most of the time, it may not always be achievable. Especially past the
|
|
28
|
-
// visible spectrum, the algorithm will likely struggle to get the same
|
|
29
|
-
// precision. If, for whatever reason, we cannot achieve the accuracy we
|
|
30
|
-
// seek in the allotted iterations, just return the closest we were able to
|
|
31
|
-
// get.
|
|
32
|
-
|
|
33
|
-
let [h, c, t] = coords;
|
|
34
|
-
let xyz = [];
|
|
35
|
-
let j = 0;
|
|
36
|
-
|
|
37
|
-
// Shortcut out for black
|
|
38
|
-
if (t === 0) {
|
|
39
|
-
return [0.0, 0.0, 0.0];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Calculate the Y we need to target
|
|
43
|
-
let y = fromLstar(t);
|
|
44
|
-
|
|
45
|
-
// A better initial guess yields better results. Polynomials come from
|
|
46
|
-
// curve fitting the T vs J response.
|
|
47
|
-
if (t > 0) {
|
|
48
|
-
j = 0.00379058511492914 * t ** 2 + 0.608983189401032 * t + 0.9155088574762233;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
j = 9.514440756550361e-06 * t ** 2 + 0.08693057439788597 * t - 21.928975842194614;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Threshold of how close is close enough, and max number of attempts.
|
|
55
|
-
// More precision and more attempts means more time spent iterating. Higher
|
|
56
|
-
// required precision gives more accuracy but also increases the chance of
|
|
57
|
-
// not hitting the goal. 2e-12 allows us to convert round trip with
|
|
58
|
-
// reasonable accuracy of six decimal places or more.
|
|
59
|
-
const threshold = 2e-12;
|
|
60
|
-
const max_attempts = 15;
|
|
61
|
-
|
|
62
|
-
let attempt = 0;
|
|
63
|
-
let last = Infinity;
|
|
64
|
-
let best = j;
|
|
65
|
-
|
|
66
|
-
// Try to find a J such that the returned y matches the returned y of the L*
|
|
67
|
-
while (attempt <= max_attempts) {
|
|
68
|
-
xyz = fromCam16({J: j, C: c, h: h}, env);
|
|
69
|
-
|
|
70
|
-
// If we are within range, return XYZ
|
|
71
|
-
// If we are closer than last time, save the values
|
|
72
|
-
const delta = Math.abs(xyz[1] - y);
|
|
73
|
-
if (delta < last) {
|
|
74
|
-
if (delta <= threshold) {
|
|
75
|
-
return xyz;
|
|
76
|
-
}
|
|
77
|
-
best = j;
|
|
78
|
-
last = delta;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// f(j_root) = (j ** (1 / 2)) * 0.1
|
|
82
|
-
// f(j) = ((f(j_root) * 100) ** 2) / j - 1 = 0
|
|
83
|
-
// f(j_root) = Y = y / 100
|
|
84
|
-
// f(j) = (y ** 2) / j - 1
|
|
85
|
-
// f'(j) = (2 * y) / j
|
|
86
|
-
j = j - (xyz[1] - y) * j / (2 * xyz[1]);
|
|
87
|
-
|
|
88
|
-
attempt += 1;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// We could not acquire the precision we desired,
|
|
92
|
-
// return our closest attempt.
|
|
93
|
-
return fromCam16({J: j, C: c, h: h}, env);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function toHct (xyz, env) {
|
|
97
|
-
// Calculate HCT by taking the L* of CIE LCh D65 and CAM16 chroma and hue.
|
|
98
|
-
|
|
99
|
-
const t = toLstar(xyz[1]);
|
|
100
|
-
if (t === 0.0) {
|
|
101
|
-
return [0.0, 0.0, 0.0];
|
|
102
|
-
}
|
|
103
|
-
const cam16 = toCam16(xyz, viewingConditions);
|
|
104
|
-
return [constrain(cam16.h), cam16.C, t];
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Pre-calculate everything we can with the viewing conditions
|
|
108
|
-
export const viewingConditions = environment(
|
|
109
|
-
white, 200 / Math.PI * fromLstar(50.0),
|
|
110
|
-
fromLstar(50.0) * 100,
|
|
111
|
-
"average",
|
|
112
|
-
false,
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
// https://material.io/blog/science-of-color-design
|
|
116
|
-
// This is not a port of the material-color-utilities,
|
|
117
|
-
// but instead implements the full color space as described,
|
|
118
|
-
// combining CAM16 JCh and Lab D65. This does not clamp conversion
|
|
119
|
-
// to HCT to specific chroma bands and provides support for wider
|
|
120
|
-
// gamuts than Google currently supports and does so at a greater
|
|
121
|
-
// precision (> 8 bits back to sRGB).
|
|
122
|
-
// This implementation comes from https://github.com/facelessuser/coloraide
|
|
123
|
-
// which is licensed under MIT.
|
|
124
|
-
export default new ColorSpace({
|
|
125
|
-
id: "hct",
|
|
126
|
-
name: "HCT",
|
|
127
|
-
coords: {
|
|
128
|
-
h: {
|
|
129
|
-
refRange: [0, 360],
|
|
130
|
-
type: "angle",
|
|
131
|
-
name: "Hue",
|
|
132
|
-
},
|
|
133
|
-
c: {
|
|
134
|
-
refRange: [0, 145],
|
|
135
|
-
name: "Colorfulness",
|
|
136
|
-
},
|
|
137
|
-
t: {
|
|
138
|
-
refRange: [0, 100],
|
|
139
|
-
name: "Tone",
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
base: xyz_d65,
|
|
144
|
-
|
|
145
|
-
fromBase (xyz) {
|
|
146
|
-
return toHct(xyz, viewingConditions);
|
|
147
|
-
},
|
|
148
|
-
toBase (hct) {
|
|
149
|
-
return fromHct(hct, viewingConditions);
|
|
150
|
-
},
|
|
151
|
-
formats: {
|
|
152
|
-
color: {
|
|
153
|
-
id: "--hct",
|
|
154
|
-
coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
});
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Adapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2012-2022 Alexei Boronine
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
import ColorSpace from "../space.js";
|
|
26
|
-
import LCHuv from "./lchuv.js";
|
|
27
|
-
import {fromXYZ_M} from "./srgb-linear.js";
|
|
28
|
-
import {skipNone} from "../util.js";
|
|
29
|
-
import {calculateBoundingLines} from "./hsluv.js";
|
|
30
|
-
|
|
31
|
-
const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
|
|
32
|
-
const κ = 24389 / 27; // 29^3/3^3
|
|
33
|
-
|
|
34
|
-
const m_r0 = fromXYZ_M[0][0];
|
|
35
|
-
const m_r1 = fromXYZ_M[0][1];
|
|
36
|
-
const m_r2 = fromXYZ_M[0][2];
|
|
37
|
-
const m_g0 = fromXYZ_M[1][0];
|
|
38
|
-
const m_g1 = fromXYZ_M[1][1];
|
|
39
|
-
const m_g2 = fromXYZ_M[1][2];
|
|
40
|
-
const m_b0 = fromXYZ_M[2][0];
|
|
41
|
-
const m_b1 = fromXYZ_M[2][1];
|
|
42
|
-
const m_b2 = fromXYZ_M[2][2];
|
|
43
|
-
|
|
44
|
-
function distanceFromOrigin (slope, intercept) {
|
|
45
|
-
return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function calcMaxChromaHpluv (lines) {
|
|
49
|
-
let r0 = distanceFromOrigin(lines.r0s, lines.r0i);
|
|
50
|
-
let r1 = distanceFromOrigin(lines.r1s, lines.r1i);
|
|
51
|
-
let g0 = distanceFromOrigin(lines.g0s, lines.g0i);
|
|
52
|
-
let g1 = distanceFromOrigin(lines.g1s, lines.g1i);
|
|
53
|
-
let b0 = distanceFromOrigin(lines.b0s, lines.b0i);
|
|
54
|
-
let b1 = distanceFromOrigin(lines.b1s, lines.b1i);
|
|
55
|
-
|
|
56
|
-
return Math.min(r0, r1, g0, g1, b0, b1);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export default new ColorSpace({
|
|
60
|
-
id: "hpluv",
|
|
61
|
-
name: "HPLuv",
|
|
62
|
-
coords: {
|
|
63
|
-
h: {
|
|
64
|
-
refRange: [0, 360],
|
|
65
|
-
type: "angle",
|
|
66
|
-
name: "Hue",
|
|
67
|
-
},
|
|
68
|
-
s: {
|
|
69
|
-
range: [0, 100],
|
|
70
|
-
name: "Saturation",
|
|
71
|
-
},
|
|
72
|
-
l: {
|
|
73
|
-
range: [0, 100],
|
|
74
|
-
name: "Lightness",
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
base: LCHuv,
|
|
79
|
-
gamutSpace: "self",
|
|
80
|
-
|
|
81
|
-
// Convert LCHuv to HPLuv
|
|
82
|
-
fromBase (lch) {
|
|
83
|
-
let [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];
|
|
84
|
-
let s;
|
|
85
|
-
|
|
86
|
-
if (l > 99.9999999) {
|
|
87
|
-
s = 0;
|
|
88
|
-
l = 100;
|
|
89
|
-
}
|
|
90
|
-
else if (l < 0.00000001) {
|
|
91
|
-
s = 0;
|
|
92
|
-
l = 0;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
let lines = calculateBoundingLines(l);
|
|
96
|
-
let max = calcMaxChromaHpluv(lines);
|
|
97
|
-
s = c / max * 100;
|
|
98
|
-
}
|
|
99
|
-
return [h, s, l];
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
// Convert HPLuv to LCHuv
|
|
103
|
-
toBase (hsl) {
|
|
104
|
-
let [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];
|
|
105
|
-
let c;
|
|
106
|
-
|
|
107
|
-
if (l > 99.9999999) {
|
|
108
|
-
l = 100;
|
|
109
|
-
c = 0;
|
|
110
|
-
}
|
|
111
|
-
else if (l < 0.00000001) {
|
|
112
|
-
l = 0;
|
|
113
|
-
c = 0;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
let lines = calculateBoundingLines(l);
|
|
117
|
-
let max = calcMaxChromaHpluv(lines, h);
|
|
118
|
-
c = max / 100 * s;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return [l, c, h];
|
|
122
|
-
},
|
|
123
|
-
|
|
124
|
-
formats: {
|
|
125
|
-
color: {
|
|
126
|
-
id: "--hpluv",
|
|
127
|
-
coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
});
|