@jesscss/fns 1.0.8-alpha.8 → 2.0.0-alpha.2
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 +15 -5
- package/lib/__tests__/color-adjustments.test.d.ts +1 -0
- package/lib/__tests__/color-adjustments.test.js +137 -0
- package/lib/__tests__/color-adjustments.test.js.map +1 -0
- package/lib/__tests__/color-components.test.d.ts +1 -0
- package/lib/__tests__/color-components.test.js +76 -0
- package/lib/__tests__/color-components.test.js.map +1 -0
- package/lib/__tests__/color.test.d.ts +1 -0
- package/lib/__tests__/color.test.js +41 -0
- package/lib/__tests__/color.test.js.map +1 -0
- package/lib/__tests__/floor.test.d.ts +1 -0
- package/lib/__tests__/floor.test.js +38 -0
- package/lib/__tests__/floor.test.js.map +1 -0
- package/lib/__tests__/iif.d.ts +1 -0
- package/lib/__tests__/iif.js +38 -0
- package/lib/__tests__/iif.test.d.ts +1 -0
- package/lib/__tests__/iif.test.js +34 -0
- package/lib/__tests__/iif.test.js.map +1 -0
- package/lib/__tests__/math.d.ts +1 -0
- package/lib/__tests__/math.js +45 -0
- package/lib/__tests__/math.test.d.ts +1 -0
- package/lib/__tests__/math.test.js +46 -0
- package/lib/__tests__/math.test.js.map +1 -0
- package/lib/conversions.d.ts +46 -0
- package/lib/conversions.js +142 -0
- package/lib/conversions.js.map +1 -0
- package/lib/index.d.ts +1 -5
- package/lib/index.js +3 -17
- package/lib/index.js.map +1 -0
- package/lib/less/__tests__/advanced-blend-modes.test.d.ts +1 -0
- package/lib/less/__tests__/advanced-blend-modes.test.js +29 -0
- package/lib/less/__tests__/advanced-blend-modes.test.js.map +1 -0
- package/lib/less/__tests__/alpha-adjustments.test.d.ts +1 -0
- package/lib/less/__tests__/alpha-adjustments.test.js +36 -0
- package/lib/less/__tests__/alpha-adjustments.test.js.map +1 -0
- package/lib/less/__tests__/argb.test.d.ts +1 -0
- package/lib/less/__tests__/argb.test.js +15 -0
- package/lib/less/__tests__/argb.test.js.map +1 -0
- package/lib/less/__tests__/blend-modes.test.d.ts +1 -0
- package/lib/less/__tests__/blend-modes.test.js +27 -0
- package/lib/less/__tests__/blend-modes.test.js.map +1 -0
- package/lib/less/__tests__/contrast.test.d.ts +1 -0
- package/lib/less/__tests__/contrast.test.js +29 -0
- package/lib/less/__tests__/contrast.test.js.map +1 -0
- package/lib/less/__tests__/convert.test.d.ts +1 -0
- package/lib/less/__tests__/convert.test.js +25 -0
- package/lib/less/__tests__/convert.test.js.map +1 -0
- package/lib/less/__tests__/e.test.d.ts +1 -0
- package/lib/less/__tests__/e.test.js +12 -0
- package/lib/less/__tests__/e.test.js.map +1 -0
- package/lib/less/__tests__/extract.test.d.ts +1 -0
- package/lib/less/__tests__/extract.test.js +32 -0
- package/lib/less/__tests__/extract.test.js.map +1 -0
- package/lib/less/__tests__/format.test.d.ts +1 -0
- package/lib/less/__tests__/format.test.js +20 -0
- package/lib/less/__tests__/format.test.js.map +1 -0
- package/lib/less/__tests__/get-unit.test.d.ts +1 -0
- package/lib/less/__tests__/get-unit.test.js +15 -0
- package/lib/less/__tests__/get-unit.test.js.map +1 -0
- package/lib/less/__tests__/hsl-branches.test.d.ts +1 -0
- package/lib/less/__tests__/hsl-branches.test.js +27 -0
- package/lib/less/__tests__/hsl-branches.test.js.map +1 -0
- package/lib/less/__tests__/hsl-relative-errors.test.d.ts +1 -0
- package/lib/less/__tests__/hsl-relative-errors.test.js +97 -0
- package/lib/less/__tests__/hsl-relative-errors.test.js.map +1 -0
- package/lib/less/__tests__/hsla-fallback.test.d.ts +1 -0
- package/lib/less/__tests__/hsla-fallback.test.js +29 -0
- package/lib/less/__tests__/hsla-fallback.test.js.map +1 -0
- package/lib/less/__tests__/hsv-family.test.d.ts +1 -0
- package/lib/less/__tests__/hsv-family.test.js +43 -0
- package/lib/less/__tests__/hsv-family.test.js.map +1 -0
- package/lib/less/__tests__/isdefined.test.d.ts +1 -0
- package/lib/less/__tests__/isdefined.test.js +18 -0
- package/lib/less/__tests__/isdefined.test.js.map +1 -0
- package/lib/less/__tests__/isruleset.test.d.ts +1 -0
- package/lib/less/__tests__/isruleset.test.js +22 -0
- package/lib/less/__tests__/isruleset.test.js.map +1 -0
- package/lib/less/__tests__/length.test.d.ts +1 -0
- package/lib/less/__tests__/length.test.js +16 -0
- package/lib/less/__tests__/length.test.js.map +1 -0
- package/lib/less/__tests__/luma-luminance-hsv-channels.test.d.ts +1 -0
- package/lib/less/__tests__/luma-luminance-hsv-channels.test.js +35 -0
- package/lib/less/__tests__/luma-luminance-hsv-channels.test.js.map +1 -0
- package/lib/less/__tests__/max.test.d.ts +1 -0
- package/lib/less/__tests__/max.test.js +35 -0
- package/lib/less/__tests__/max.test.js.map +1 -0
- package/lib/less/__tests__/min.test.d.ts +1 -0
- package/lib/less/__tests__/min.test.js +37 -0
- package/lib/less/__tests__/min.test.js.map +1 -0
- package/lib/less/__tests__/mix.test.d.ts +1 -0
- package/lib/less/__tests__/mix.test.js +25 -0
- package/lib/less/__tests__/mix.test.js.map +1 -0
- package/lib/less/__tests__/mod.test.d.ts +1 -0
- package/lib/less/__tests__/mod.test.js +11 -0
- package/lib/less/__tests__/mod.test.js.map +1 -0
- package/lib/less/__tests__/percentage.test.d.ts +1 -0
- package/lib/less/__tests__/percentage.test.js +12 -0
- package/lib/less/__tests__/percentage.test.js.map +1 -0
- package/lib/less/__tests__/pow.test.d.ts +1 -0
- package/lib/less/__tests__/pow.test.js +11 -0
- package/lib/less/__tests__/pow.test.js.map +1 -0
- package/lib/less/__tests__/reexports-smoke.test.d.ts +1 -0
- package/lib/less/__tests__/reexports-smoke.test.js +26 -0
- package/lib/less/__tests__/reexports-smoke.test.js.map +1 -0
- package/lib/less/__tests__/replace.test.d.ts +1 -0
- package/lib/less/__tests__/replace.test.js +22 -0
- package/lib/less/__tests__/replace.test.js.map +1 -0
- package/lib/less/__tests__/rgb-relative-errors.test.d.ts +1 -0
- package/lib/less/__tests__/rgb-relative-errors.test.js +98 -0
- package/lib/less/__tests__/rgb-relative-errors.test.js.map +1 -0
- package/lib/less/__tests__/rgb-rgba-branches.test.d.ts +1 -0
- package/lib/less/__tests__/rgb-rgba-branches.test.js +49 -0
- package/lib/less/__tests__/rgb-rgba-branches.test.js.map +1 -0
- package/lib/less/__tests__/rgba-fallback.test.d.ts +1 -0
- package/lib/less/__tests__/rgba-fallback.test.js +29 -0
- package/lib/less/__tests__/rgba-fallback.test.js.map +1 -0
- package/lib/less/__tests__/shade.test.d.ts +1 -0
- package/lib/less/__tests__/shade.test.js +19 -0
- package/lib/less/__tests__/shade.test.js.map +1 -0
- package/lib/less/__tests__/spin.test.d.ts +1 -0
- package/lib/less/__tests__/spin.test.js +26 -0
- package/lib/less/__tests__/spin.test.js.map +1 -0
- package/lib/less/__tests__/tint.test.d.ts +1 -0
- package/lib/less/__tests__/tint.test.js +19 -0
- package/lib/less/__tests__/tint.test.js.map +1 -0
- package/lib/less/__tests__/types.test.d.ts +1 -0
- package/lib/less/__tests__/types.test.js +28 -0
- package/lib/less/__tests__/types.test.js.map +1 -0
- package/lib/less/__tests__/unit.test.d.ts +1 -0
- package/lib/less/__tests__/unit.test.js +17 -0
- package/lib/less/__tests__/unit.test.js.map +1 -0
- package/lib/less/abs.d.ts +7 -0
- package/lib/less/abs.js +8 -0
- package/lib/less/abs.js.map +1 -0
- package/lib/less/acos.d.ts +440 -0
- package/lib/less/acos.js +3 -0
- package/lib/less/acos.js.map +1 -0
- package/lib/less/alpha.d.ts +7 -0
- package/lib/less/alpha.js +8 -0
- package/lib/less/alpha.js.map +1 -0
- package/lib/less/argb.d.ts +441 -0
- package/lib/less/argb.js +17 -0
- package/lib/less/argb.js.map +1 -0
- package/lib/less/asin.d.ts +440 -0
- package/lib/less/asin.js +3 -0
- package/lib/less/asin.js.map +1 -0
- package/lib/less/atan.d.ts +440 -0
- package/lib/less/atan.js +3 -0
- package/lib/less/atan.js.map +1 -0
- package/lib/less/average.d.ts +601 -0
- package/lib/less/average.js +17 -0
- package/lib/less/average.js.map +1 -0
- package/lib/less/blue.d.ts +7 -0
- package/lib/less/blue.js +8 -0
- package/lib/less/blue.js.map +1 -0
- package/lib/less/ceil.d.ts +7 -0
- package/lib/less/ceil.js +8 -0
- package/lib/less/ceil.js.map +1 -0
- package/lib/less/color.d.ts +441 -0
- package/lib/less/color.js +33 -0
- package/lib/less/color.js.map +1 -0
- package/lib/less/contrast.d.ts +1427 -0
- package/lib/less/contrast.js +57 -0
- package/lib/less/contrast.js.map +1 -0
- package/lib/less/convert.d.ts +600 -0
- package/lib/less/convert.js +45 -0
- package/lib/less/convert.js.map +1 -0
- package/lib/less/cos.d.ts +440 -0
- package/lib/less/cos.js +3 -0
- package/lib/less/cos.js.map +1 -0
- package/lib/less/darken.d.ts +980 -0
- package/lib/less/darken.js +29 -0
- package/lib/less/darken.js.map +1 -0
- package/lib/less/desaturate.d.ts +980 -0
- package/lib/less/desaturate.js +29 -0
- package/lib/less/desaturate.js.map +1 -0
- package/lib/less/difference.d.ts +601 -0
- package/lib/less/difference.js +18 -0
- package/lib/less/difference.js.map +1 -0
- package/lib/less/e.d.ts +444 -0
- package/lib/less/e.js +17 -0
- package/lib/less/e.js.map +1 -0
- package/lib/less/each.d.ts +615 -0
- package/lib/less/each.js +64 -0
- package/lib/less/each.js.map +1 -0
- package/lib/less/exclusion.d.ts +601 -0
- package/lib/less/exclusion.js +18 -0
- package/lib/less/exclusion.js.map +1 -0
- package/lib/less/extract.d.ts +625 -0
- package/lib/less/extract.js +43 -0
- package/lib/less/extract.js.map +1 -0
- package/lib/less/fade.d.ts +600 -0
- package/lib/less/fade.js +28 -0
- package/lib/less/fade.js.map +1 -0
- package/lib/less/fadein.d.ts +980 -0
- package/lib/less/fadein.js +37 -0
- package/lib/less/fadein.js.map +1 -0
- package/lib/less/fadeout.d.ts +980 -0
- package/lib/less/fadeout.js +36 -0
- package/lib/less/fadeout.js.map +1 -0
- package/lib/less/floor.d.ts +7 -0
- package/lib/less/floor.js +8 -0
- package/lib/less/floor.js.map +1 -0
- package/lib/less/format.d.ts +1821 -0
- package/lib/less/format.js +44 -0
- package/lib/less/format.js.map +1 -0
- package/lib/less/get-unit.d.ts +441 -0
- package/lib/less/get-unit.js +11 -0
- package/lib/less/get-unit.js.map +1 -0
- package/lib/less/green.d.ts +7 -0
- package/lib/less/green.js +8 -0
- package/lib/less/green.js.map +1 -0
- package/lib/less/greyscale.d.ts +441 -0
- package/lib/less/greyscale.js +18 -0
- package/lib/less/greyscale.js.map +1 -0
- package/lib/less/hardlight.d.ts +601 -0
- package/lib/less/hardlight.js +19 -0
- package/lib/less/hardlight.js.map +1 -0
- package/lib/less/hsl.d.ts +1063 -0
- package/lib/less/hsl.js +257 -0
- package/lib/less/hsl.js.map +1 -0
- package/lib/less/hsla.d.ts +354 -0
- package/lib/less/hsla.js +31 -0
- package/lib/less/hsla.js.map +1 -0
- package/lib/less/hsv.d.ts +723 -0
- package/lib/less/hsv.js +20 -0
- package/lib/less/hsv.js.map +1 -0
- package/lib/less/hsva.d.ts +991 -0
- package/lib/less/hsva.js +53 -0
- package/lib/less/hsva.js.map +1 -0
- package/lib/less/hsvhue.d.ts +441 -0
- package/lib/less/hsvhue.js +11 -0
- package/lib/less/hsvhue.js.map +1 -0
- package/lib/less/hsvsaturation.d.ts +441 -0
- package/lib/less/hsvsaturation.js +12 -0
- package/lib/less/hsvsaturation.js.map +1 -0
- package/lib/less/hsvvalue.d.ts +441 -0
- package/lib/less/hsvvalue.js +11 -0
- package/lib/less/hsvvalue.js.map +1 -0
- package/lib/less/hue.d.ts +441 -0
- package/lib/less/hue.js +11 -0
- package/lib/less/hue.js.map +1 -0
- package/lib/less/iif.d.ts +1033 -0
- package/lib/less/iif.js +30 -0
- package/lib/less/iif.js.map +1 -0
- package/lib/less/index.d.ts +75 -0
- package/lib/less/index.js +76 -0
- package/lib/less/index.js.map +1 -0
- package/lib/less/isdefined.d.ts +466 -0
- package/lib/less/isdefined.js +21 -0
- package/lib/less/isdefined.js.map +1 -0
- package/lib/less/isruleset.d.ts +466 -0
- package/lib/less/isruleset.js +24 -0
- package/lib/less/isruleset.js.map +1 -0
- package/lib/less/length.d.ts +441 -0
- package/lib/less/length.js +21 -0
- package/lib/less/length.js.map +1 -0
- package/lib/less/lighten.d.ts +980 -0
- package/lib/less/lighten.js +29 -0
- package/lib/less/lighten.js.map +1 -0
- package/lib/less/lightness.d.ts +441 -0
- package/lib/less/lightness.js +11 -0
- package/lib/less/lightness.js.map +1 -0
- package/lib/less/luma.d.ts +441 -0
- package/lib/less/luma.js +14 -0
- package/lib/less/luma.js.map +1 -0
- package/lib/less/luminance.d.ts +441 -0
- package/lib/less/luminance.js +16 -0
- package/lib/less/luminance.js.map +1 -0
- package/lib/less/math-factory.d.ts +774 -0
- package/lib/less/math-factory.js +18 -0
- package/lib/less/math-factory.js.map +1 -0
- package/lib/less/mathv1.d.ts +0 -0
- package/lib/less/mathv1.js +209 -0
- package/lib/less/mathv1.js.map +1 -0
- package/lib/less/max.d.ts +466 -0
- package/lib/less/max.js +85 -0
- package/lib/less/max.js.map +1 -0
- package/lib/less/min.d.ts +466 -0
- package/lib/less/min.js +85 -0
- package/lib/less/min.js.map +1 -0
- package/lib/less/mix.d.ts +980 -0
- package/lib/less/mix.js +39 -0
- package/lib/less/mix.js.map +1 -0
- package/lib/less/mod.d.ts +600 -0
- package/lib/less/mod.js +16 -0
- package/lib/less/mod.js.map +1 -0
- package/lib/less/multiply.d.ts +601 -0
- package/lib/less/multiply.js +18 -0
- package/lib/less/multiply.js.map +1 -0
- package/lib/less/negation.d.ts +601 -0
- package/lib/less/negation.js +18 -0
- package/lib/less/negation.js.map +1 -0
- package/lib/less/overlay.d.ts +601 -0
- package/lib/less/overlay.js +23 -0
- package/lib/less/overlay.js.map +1 -0
- package/lib/less/percentage.d.ts +441 -0
- package/lib/less/percentage.js +11 -0
- package/lib/less/percentage.js.map +1 -0
- package/lib/less/pi.d.ts +332 -0
- package/lib/less/pi.js +3 -0
- package/lib/less/pi.js.map +1 -0
- package/lib/less/pow.d.ts +600 -0
- package/lib/less/pow.js +16 -0
- package/lib/less/pow.js.map +1 -0
- package/lib/less/range.d.ts +1038 -0
- package/lib/less/range.js +40 -0
- package/lib/less/range.js.map +1 -0
- package/lib/less/red.d.ts +7 -0
- package/lib/less/red.js +8 -0
- package/lib/less/red.js.map +1 -0
- package/lib/less/replace.d.ts +1264 -0
- package/lib/less/replace.js +32 -0
- package/lib/less/replace.js.map +1 -0
- package/lib/less/rgb.d.ts +1063 -0
- package/lib/less/rgb.js +266 -0
- package/lib/less/rgb.js.map +1 -0
- package/lib/less/rgba.d.ts +354 -0
- package/lib/less/rgba.js +31 -0
- package/lib/less/rgba.js.map +1 -0
- package/lib/less/round.d.ts +7 -0
- package/lib/less/round.js +8 -0
- package/lib/less/round.js.map +1 -0
- package/lib/less/saturate.d.ts +980 -0
- package/lib/less/saturate.js +29 -0
- package/lib/less/saturate.js.map +1 -0
- package/lib/less/saturation.d.ts +441 -0
- package/lib/less/saturation.js +12 -0
- package/lib/less/saturation.js.map +1 -0
- package/lib/less/screen.d.ts +601 -0
- package/lib/less/screen.js +18 -0
- package/lib/less/screen.js.map +1 -0
- package/lib/less/shade.d.ts +600 -0
- package/lib/less/shade.js +26 -0
- package/lib/less/shade.js.map +1 -0
- package/lib/less/sin.d.ts +440 -0
- package/lib/less/sin.js +3 -0
- package/lib/less/sin.js.map +1 -0
- package/lib/less/softlight.d.ts +601 -0
- package/lib/less/softlight.js +25 -0
- package/lib/less/softlight.js.map +1 -0
- package/lib/less/spin.d.ts +600 -0
- package/lib/less/spin.js +22 -0
- package/lib/less/spin.js.map +1 -0
- package/lib/less/sqrt.d.ts +440 -0
- package/lib/less/sqrt.js +3 -0
- package/lib/less/sqrt.js.map +1 -0
- package/lib/less/tan.d.ts +440 -0
- package/lib/less/tan.js +3 -0
- package/lib/less/tan.js.map +1 -0
- package/lib/less/tint.d.ts +600 -0
- package/lib/less/tint.js +26 -0
- package/lib/less/tint.js.map +1 -0
- package/lib/less/types.d.ts +4112 -0
- package/lib/less/types.js +53 -0
- package/lib/less/types.js.map +1 -0
- package/lib/less/unit.d.ts +753 -0
- package/lib/less/unit.js +20 -0
- package/lib/less/unit.js.map +1 -0
- package/lib/sass/__tests__/hsl-channels.test.d.ts +1 -0
- package/lib/sass/__tests__/hsl-channels.test.js +85 -0
- package/lib/sass/__tests__/hsl-channels.test.js.map +1 -0
- package/lib/sass/__tests__/list-advanced.test.d.ts +1 -0
- package/lib/sass/__tests__/list-advanced.test.js +157 -0
- package/lib/sass/__tests__/list-advanced.test.js.map +1 -0
- package/lib/sass/__tests__/list-functions.test.d.ts +1 -0
- package/lib/sass/__tests__/list-functions.test.js +153 -0
- package/lib/sass/__tests__/list-functions.test.js.map +1 -0
- package/lib/sass/__tests__/map-functions.test.d.ts +1 -0
- package/lib/sass/__tests__/map-functions.test.js +208 -0
- package/lib/sass/__tests__/map-functions.test.js.map +1 -0
- package/lib/sass/__tests__/math-functions.test.d.ts +1 -0
- package/lib/sass/__tests__/math-functions.test.js +73 -0
- package/lib/sass/__tests__/math-functions.test.js.map +1 -0
- package/lib/sass/__tests__/math-remaining.test.d.ts +1 -0
- package/lib/sass/__tests__/math-remaining.test.js +113 -0
- package/lib/sass/__tests__/math-remaining.test.js.map +1 -0
- package/lib/sass/__tests__/opacity.test.d.ts +1 -0
- package/lib/sass/__tests__/opacity.test.js +53 -0
- package/lib/sass/__tests__/opacity.test.js.map +1 -0
- package/lib/sass/__tests__/string-functions.test.d.ts +1 -0
- package/lib/sass/__tests__/string-functions.test.js +109 -0
- package/lib/sass/__tests__/string-functions.test.js.map +1 -0
- package/lib/sass/__tests__/string-remaining.test.d.ts +1 -0
- package/lib/sass/__tests__/string-remaining.test.js +131 -0
- package/lib/sass/__tests__/string-remaining.test.js.map +1 -0
- package/lib/sass/adjust-hue.d.ts +10 -0
- package/lib/sass/adjust-hue.js +11 -0
- package/lib/sass/adjust-hue.js.map +1 -0
- package/lib/sass/color/index.d.ts +22 -0
- package/lib/sass/color/index.js +43 -0
- package/lib/sass/color/index.js.map +1 -0
- package/lib/sass/color/red.d.ts +7 -0
- package/lib/sass/color/red.js +8 -0
- package/lib/sass/color/red.js.map +1 -0
- package/lib/sass/compatible.d.ts +610 -0
- package/lib/sass/compatible.js +62 -0
- package/lib/sass/compatible.js.map +1 -0
- package/lib/sass/complement.d.ts +450 -0
- package/lib/sass/complement.js +28 -0
- package/lib/sass/complement.js.map +1 -0
- package/lib/sass/fade-in.d.ts +10 -0
- package/lib/sass/fade-in.js +11 -0
- package/lib/sass/fade-in.js.map +1 -0
- package/lib/sass/fade-out.d.ts +10 -0
- package/lib/sass/fade-out.js +11 -0
- package/lib/sass/fade-out.js.map +1 -0
- package/lib/sass/grayscale.d.ts +10 -0
- package/lib/sass/grayscale.js +11 -0
- package/lib/sass/grayscale.js.map +1 -0
- package/lib/sass/hue.d.ts +450 -0
- package/lib/sass/hue.js +24 -0
- package/lib/sass/hue.js.map +1 -0
- package/lib/sass/ie-hex-str.d.ts +10 -0
- package/lib/sass/ie-hex-str.js +11 -0
- package/lib/sass/ie-hex-str.js.map +1 -0
- package/lib/sass/index.d.ts +64 -0
- package/lib/sass/index.js +90 -0
- package/lib/sass/index.js.map +1 -0
- package/lib/sass/invert.d.ts +813 -0
- package/lib/sass/invert.js +36 -0
- package/lib/sass/invert.js.map +1 -0
- package/lib/sass/lightness.d.ts +450 -0
- package/lib/sass/lightness.js +24 -0
- package/lib/sass/lightness.js.map +1 -0
- package/lib/sass/list/append.d.ts +989 -0
- package/lib/sass/list/append.js +54 -0
- package/lib/sass/list/append.js.map +1 -0
- package/lib/sass/list/index.d.ts +21 -0
- package/lib/sass/list/index.js +24 -0
- package/lib/sass/list/index.js.map +1 -0
- package/lib/sass/list/is-bracketed.d.ts +450 -0
- package/lib/sass/list/is-bracketed.js +30 -0
- package/lib/sass/list/is-bracketed.js.map +1 -0
- package/lib/sass/list/join.d.ts +1354 -0
- package/lib/sass/list/join.js +66 -0
- package/lib/sass/list/join.js.map +1 -0
- package/lib/sass/list/length.d.ts +450 -0
- package/lib/sass/list/length.js +22 -0
- package/lib/sass/list/length.js.map +1 -0
- package/lib/sass/list/list-index.d.ts +609 -0
- package/lib/sass/list/list-index.js +49 -0
- package/lib/sass/list/list-index.js.map +1 -0
- package/lib/sass/list/nth.d.ts +634 -0
- package/lib/sass/list/nth.js +36 -0
- package/lib/sass/list/nth.js.map +1 -0
- package/lib/sass/list/separator.d.ts +451 -0
- package/lib/sass/list/separator.js +36 -0
- package/lib/sass/list/separator.js.map +1 -0
- package/lib/sass/list/set-nth.d.ts +756 -0
- package/lib/sass/list/set-nth.js +42 -0
- package/lib/sass/list/set-nth.js.map +1 -0
- package/lib/sass/list/zip.d.ts +474 -0
- package/lib/sass/list/zip.js +46 -0
- package/lib/sass/list/zip.js.map +1 -0
- package/lib/sass/map/get.d.ts +757 -0
- package/lib/sass/map/get.js +79 -0
- package/lib/sass/map/get.js.map +1 -0
- package/lib/sass/map/has-key.d.ts +757 -0
- package/lib/sass/map/has-key.js +76 -0
- package/lib/sass/map/has-key.js.map +1 -0
- package/lib/sass/map/index.d.ts +19 -0
- package/lib/sass/map/index.js +23 -0
- package/lib/sass/map/index.js.map +1 -0
- package/lib/sass/map/keys.d.ts +449 -0
- package/lib/sass/map/keys.js +39 -0
- package/lib/sass/map/keys.js.map +1 -0
- package/lib/sass/map/merge.d.ts +608 -0
- package/lib/sass/map/merge.js +54 -0
- package/lib/sass/map/merge.js.map +1 -0
- package/lib/sass/map/remove.d.ts +633 -0
- package/lib/sass/map/remove.js +41 -0
- package/lib/sass/map/remove.js.map +1 -0
- package/lib/sass/map/set.d.ts +731 -0
- package/lib/sass/map/set.js +72 -0
- package/lib/sass/map/set.js.map +1 -0
- package/lib/sass/map/values.d.ts +449 -0
- package/lib/sass/map/values.js +30 -0
- package/lib/sass/map/values.js.map +1 -0
- package/lib/sass/math/abs.d.ts +7 -0
- package/lib/sass/math/abs.js +8 -0
- package/lib/sass/math/abs.js.map +1 -0
- package/lib/sass/math/index.d.ts +18 -0
- package/lib/sass/math/index.js +43 -0
- package/lib/sass/math/index.js.map +1 -0
- package/lib/sass/opacify.d.ts +11 -0
- package/lib/sass/opacify.js +12 -0
- package/lib/sass/opacify.js.map +1 -0
- package/lib/sass/opacity.d.ts +451 -0
- package/lib/sass/opacity.js +33 -0
- package/lib/sass/opacity.js.map +1 -0
- package/lib/sass/percentage.d.ts +449 -0
- package/lib/sass/percentage.js +26 -0
- package/lib/sass/percentage.js.map +1 -0
- package/lib/sass/quote.d.ts +449 -0
- package/lib/sass/quote.js +27 -0
- package/lib/sass/quote.js.map +1 -0
- package/lib/sass/random.d.ts +534 -0
- package/lib/sass/random.js +37 -0
- package/lib/sass/random.js.map +1 -0
- package/lib/sass/saturation.d.ts +450 -0
- package/lib/sass/saturation.js +24 -0
- package/lib/sass/saturation.js.map +1 -0
- package/lib/sass/str-index.d.ts +609 -0
- package/lib/sass/str-index.js +34 -0
- package/lib/sass/str-index.js.map +1 -0
- package/lib/sass/str-insert.d.ts +756 -0
- package/lib/sass/str-insert.js +61 -0
- package/lib/sass/str-insert.js.map +1 -0
- package/lib/sass/str-slice.d.ts +1039 -0
- package/lib/sass/str-slice.js +95 -0
- package/lib/sass/str-slice.js.map +1 -0
- package/lib/sass/string/index.d.ts +18 -0
- package/lib/sass/string/index.js +25 -0
- package/lib/sass/string/index.js.map +1 -0
- package/lib/sass/string/length.d.ts +450 -0
- package/lib/sass/string/length.js +32 -0
- package/lib/sass/string/length.js.map +1 -0
- package/lib/sass/to-lower-case.d.ts +449 -0
- package/lib/sass/to-lower-case.js +23 -0
- package/lib/sass/to-lower-case.js.map +1 -0
- package/lib/sass/to-upper-case.d.ts +449 -0
- package/lib/sass/to-upper-case.js +23 -0
- package/lib/sass/to-upper-case.js.map +1 -0
- package/lib/sass/transparentize.d.ts +11 -0
- package/lib/sass/transparentize.js +12 -0
- package/lib/sass/transparentize.js.map +1 -0
- package/lib/sass/unique-id.d.ts +341 -0
- package/lib/sass/unique-id.js +23 -0
- package/lib/sass/unique-id.js.map +1 -0
- package/lib/sass/unit.d.ts +762 -0
- package/lib/sass/unit.js +37 -0
- package/lib/sass/unit.js.map +1 -0
- package/lib/sass/unitless.d.ts +450 -0
- package/lib/sass/unitless.js +23 -0
- package/lib/sass/unitless.js.map +1 -0
- package/lib/sass/unquote.d.ts +449 -0
- package/lib/sass/unquote.js +27 -0
- package/lib/sass/unquote.js.map +1 -0
- package/lib/shared/color/alpha.d.ts +441 -0
- package/lib/shared/color/alpha.js +10 -0
- package/lib/shared/color/alpha.js.map +1 -0
- package/lib/shared/color/blue.d.ts +441 -0
- package/lib/shared/color/blue.js +10 -0
- package/lib/shared/color/blue.js.map +1 -0
- package/lib/shared/color/green.d.ts +441 -0
- package/lib/shared/color/green.js +10 -0
- package/lib/shared/color/green.js.map +1 -0
- package/lib/shared/color/red.d.ts +441 -0
- package/lib/shared/color/red.js +10 -0
- package/lib/shared/color/red.js.map +1 -0
- package/lib/shared/index.d.ts +16 -0
- package/lib/shared/index.js +19 -0
- package/lib/shared/index.js.map +1 -0
- package/lib/shared/math/__tests__/max.test.d.ts +1 -0
- package/lib/shared/math/__tests__/max.test.js +12 -0
- package/lib/shared/math/__tests__/max.test.js.map +1 -0
- package/lib/shared/math/__tests__/min.test.d.ts +1 -0
- package/lib/shared/math/__tests__/min.test.js +12 -0
- package/lib/shared/math/__tests__/min.test.js.map +1 -0
- package/lib/shared/math/__tests__/round.test.d.ts +1 -0
- package/lib/shared/math/__tests__/round.test.js +10 -0
- package/lib/shared/math/__tests__/round.test.js.map +1 -0
- package/lib/shared/math/abs.d.ts +441 -0
- package/lib/shared/math/abs.js +11 -0
- package/lib/shared/math/abs.js.map +1 -0
- package/lib/shared/math/ceil.d.ts +441 -0
- package/lib/shared/math/ceil.js +11 -0
- package/lib/shared/math/ceil.js.map +1 -0
- package/lib/shared/math/floor.d.ts +441 -0
- package/lib/shared/math/floor.js +11 -0
- package/lib/shared/math/floor.js.map +1 -0
- package/lib/shared/math/max.d.ts +469 -0
- package/lib/shared/math/max.js +22 -0
- package/lib/shared/math/max.js.map +1 -0
- package/lib/shared/math/min.d.ts +469 -0
- package/lib/shared/math/min.js +22 -0
- package/lib/shared/math/min.js.map +1 -0
- package/lib/shared/math/round.d.ts +778 -0
- package/lib/shared/math/round.js +17 -0
- package/lib/shared/math/round.js.map +1 -0
- package/lib/util/colorHelper.d.ts +2 -0
- package/lib/util/colorHelper.js +32 -0
- package/lib/util/colorHelper.js.map +1 -0
- package/lib/util/get-color-func-values.d.ts +5 -0
- package/lib/util/get-color-func-values.js +28 -0
- package/lib/util/get-color-func-values.js.map +1 -0
- package/lib/util/get-hsla.d.ts +10 -0
- package/lib/util/get-hsla.js +38 -0
- package/lib/util/get-hsla.js.map +1 -0
- package/lib/util/get-luma.d.ts +2 -0
- package/lib/util/get-luma.js +10 -0
- package/lib/util/get-luma.js.map +1 -0
- package/lib/util/index.d.ts +5 -0
- package/lib/util/index.js +17 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/mathHelper.d.ts +4 -0
- package/lib/util/mathHelper.js +45 -0
- package/lib/util/mathHelper.js.map +1 -0
- package/lib/util/number.d.ts +4 -0
- package/lib/util/number.js +23 -0
- package/lib/util/number.js.map +1 -0
- package/lib/util/relative-color.d.ts +54 -0
- package/lib/util/relative-color.js +268 -0
- package/lib/util/relative-color.js.map +1 -0
- package/lib/util/serialize-node.d.ts +2 -0
- package/lib/util/serialize-node.js +8 -0
- package/lib/util/serialize-node.js.map +1 -0
- package/lib/util/to-hsl.d.ts +7 -0
- package/lib/util/to-hsl.js +6 -0
- package/lib/util/to-hsl.js.map +1 -0
- package/lib/util/to-hsv.d.ts +7 -0
- package/lib/util/to-hsv.js +73 -0
- package/lib/util/to-hsv.js.map +1 -0
- package/package.json +39 -16
- package/lib/color-blending.d.ts +0 -9
- package/lib/color-blending.js +0 -83
- package/lib/color.d.ts +0 -42
- package/lib/color.js +0 -407
- package/lib/each.d.ts +0 -14
- package/lib/each.js +0 -35
- package/lib/iif.d.ts +0 -4
- package/lib/iif.js +0 -10
- package/lib/math.d.ts +0 -13
- package/lib/math.js +0 -199
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Dimension, defineFunction } from '@jesscss/core';
|
|
2
|
+
import { mathHelper } from '../../util/mathHelper.js';
|
|
3
|
+
import lodashRound from 'lodash-es/round.js';
|
|
4
|
+
export default defineFunction('round', function (value, precision = 0) {
|
|
5
|
+
return mathHelper(lodashRound, ['value', 'precision'], undefined, value, precision);
|
|
6
|
+
}, {
|
|
7
|
+
params: [{
|
|
8
|
+
name: 'value',
|
|
9
|
+
type: [Dimension, 'number']
|
|
10
|
+
}, {
|
|
11
|
+
name: 'precision',
|
|
12
|
+
type: [Dimension, 'number'],
|
|
13
|
+
optional: true,
|
|
14
|
+
default: 0
|
|
15
|
+
}]
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=round.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/shared/math/round.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,eAAe,cAAc,CAC3B,OAAO,EACP,UAAS,KAAyB,EAAE,YAAgC,CAAC;IACnE,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACtF,CAAC,EACD;IACE,MAAM,EAAE,CAAC;YACP,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC5B,EAAE;YACD,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC3B,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC;SACX,CAAC;CACH,CACF,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Color } from '@jesscss/core';
|
|
2
|
+
// Color Blending
|
|
3
|
+
// ref: http://www.w3.org/TR/compositing-1
|
|
4
|
+
export function colorBlend(mode, color1, color2) {
|
|
5
|
+
if (!(color1 instanceof Color) || !(color2 instanceof Color)) {
|
|
6
|
+
throw new Error('Both arguments must be colors.');
|
|
7
|
+
}
|
|
8
|
+
// result
|
|
9
|
+
const ab = color1.alpha;
|
|
10
|
+
let cb; // backdrop
|
|
11
|
+
let cs; // source
|
|
12
|
+
const as = color2.alpha;
|
|
13
|
+
let cr;
|
|
14
|
+
const rgba = [];
|
|
15
|
+
const ar = as + ab * (1 - as);
|
|
16
|
+
for (let i = 0; i < 3; i++) {
|
|
17
|
+
cb = color1.rgb[i] / 255;
|
|
18
|
+
cs = color2.rgb[i] / 255;
|
|
19
|
+
cr = mode(cb, cs);
|
|
20
|
+
if (ar) {
|
|
21
|
+
cr = (as * cs + ab * (cb
|
|
22
|
+
- as * (cb + cs - cr))) / ar;
|
|
23
|
+
}
|
|
24
|
+
rgba[i] = cr * 255;
|
|
25
|
+
}
|
|
26
|
+
rgba[3] = ar;
|
|
27
|
+
const out = new Color(rgba);
|
|
28
|
+
// Preserve color1 style for blend outputs (Less-like form continuity).
|
|
29
|
+
out.options.format = color1.options.format;
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=colorHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorHelper.js","sourceRoot":"","sources":["../../src/util/colorHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,iBAAiB;AACjB,0CAA0C;AAC1C,MAAM,UAAU,UAAU,CAAC,IAAwC,EAAE,MAAa,EAAE,MAAa;IAC/F,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,SAAS;IACT,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAExB,IAAI,EAAU,CAAC,CAAC,WAAW;IAC3B,IAAI,EAAU,CAAC,CAAC,SAAS;IACzB,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAExB,IAAI,EAAU,CAAC;IACf,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC;QAC1B,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC;QAC1B,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;kBACpB,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAEb,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,uEAAuE;IACvE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Operation, Sequence } from '@jesscss/core';
|
|
2
|
+
import { getNumber } from './number.js';
|
|
3
|
+
/**
|
|
4
|
+
* Allows for comma-less syntax
|
|
5
|
+
*/
|
|
6
|
+
export function getColorFunctionValues(one, two, three) {
|
|
7
|
+
/**
|
|
8
|
+
* Comma-less syntax
|
|
9
|
+
* e.g. rgb(0 128 255 / 50%)
|
|
10
|
+
*/
|
|
11
|
+
let alpha = 1;
|
|
12
|
+
if (one instanceof Sequence) {
|
|
13
|
+
const val = one.value;
|
|
14
|
+
one = val[0];
|
|
15
|
+
two = val[1];
|
|
16
|
+
three = val[2];
|
|
17
|
+
/**
|
|
18
|
+
* @todo - should this be normalized in
|
|
19
|
+
* function caller? Or parsed differently?
|
|
20
|
+
*/
|
|
21
|
+
if (three instanceof Operation) {
|
|
22
|
+
const op = three;
|
|
23
|
+
([three, , alpha] = op.value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return [one, two, three, alpha].map(v => getNumber(v, true));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=get-color-func-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-color-func-values.js","sourceRoot":"","sources":["../../src/util/get-color-func-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAGT,QAAQ,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAyB,EAAE,GAAc,EAAE,KAAgB;IAChG;;;OAGG;IACH,IAAI,KAAK,GAAkB,CAAC,CAAC;IAC7B,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAgB,GAAG,CAAC,KAAoB,CAAC;QAClD,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACd,KAAK,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAChB;;;WAGG;QACH,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,KAAkB,CAAC;YAC9B,CAAC,CAAC,KAAK,EAAE,AAAD,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAuC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAsC,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Color, type Dimension, type Node, type Context } from '@jesscss/core';
|
|
2
|
+
interface HSLA {
|
|
3
|
+
h: number;
|
|
4
|
+
s: number;
|
|
5
|
+
l: number;
|
|
6
|
+
a?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function getHsla(this: Context, origColor: Color, hsl: HSLA): Color | undefined;
|
|
9
|
+
export declare function adjustHSL(this: Context, key: 'h' | 's' | 'l' | 'a', dir: '+' | '-', color: Color, amount: Dimension, method?: Node): Color | undefined;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ColorFormat } from '@jesscss/core';
|
|
2
|
+
import { toHSL } from './to-hsl';
|
|
3
|
+
import { clamp } from './number';
|
|
4
|
+
import hsla from '../less/hsla';
|
|
5
|
+
export function getHsla(origColor, hsl) {
|
|
6
|
+
const color = hsla.call(this, hsl.h, hsl.s, hsl.l, hsl.a ?? 1);
|
|
7
|
+
if (color) {
|
|
8
|
+
const value = origColor.value;
|
|
9
|
+
if (typeof value === 'number') {
|
|
10
|
+
color.value = { rgba: [value, value, value, 1], format: ColorFormat.RGB };
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
// Don't overwrite the value if it already has rgba set
|
|
14
|
+
if (!color.value.rgba) {
|
|
15
|
+
color.value = { format: ColorFormat.RGB };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return color;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function adjustHSL(key, dir, color, amount, method) {
|
|
22
|
+
const hsl = toHSL(color);
|
|
23
|
+
if (!(amount.value.unit === '%')) {
|
|
24
|
+
throw new Error('Amount must be a percentage');
|
|
25
|
+
}
|
|
26
|
+
let adjustAmount = amount.value.number / 100;
|
|
27
|
+
if (method && method.value === 'relative') {
|
|
28
|
+
adjustAmount = hsl[key] * adjustAmount;
|
|
29
|
+
}
|
|
30
|
+
if (dir === '-') {
|
|
31
|
+
hsl[key] = clamp(hsl[key] - adjustAmount);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
hsl[key] = clamp(hsl[key] + adjustAmount);
|
|
35
|
+
}
|
|
36
|
+
return getHsla.call(this, color, hsl);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=get-hsla.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-hsla.js","sourceRoot":"","sources":["../../src/util/get-hsla.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,IAAI,MAAM,cAAc,CAAC;AAShC,MAAM,UAAU,OAAO,CAAgB,SAAgB,EAAE,GAAS;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAEvB,GAA0B,EAC1B,GAAc,EACd,KAAY,EACZ,MAAiB,EACjB,MAAa;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IAE7C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1C,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;IACzC,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function getLuma(color) {
|
|
2
|
+
let r = color.rgb[0] / 255;
|
|
3
|
+
let g = color.rgb[1] / 255;
|
|
4
|
+
let b = color.rgb[2] / 255;
|
|
5
|
+
r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);
|
|
6
|
+
g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);
|
|
7
|
+
b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);
|
|
8
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=get-luma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-luma.js","sourceRoot":"","sources":["../../src/util/get-luma.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAC,KAAY;IAClC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3B,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3B,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAE3B,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtE,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function wrapValidate(...args) {
|
|
2
|
+
const success = args.some(([err]) => !err);
|
|
3
|
+
const errors = [];
|
|
4
|
+
if (!success) {
|
|
5
|
+
for (let i = 0; i < args.length; i++) {
|
|
6
|
+
let [err] = args[i];
|
|
7
|
+
if (!err) {
|
|
8
|
+
continue;
|
|
9
|
+
}
|
|
10
|
+
let error = err.failures()[0];
|
|
11
|
+
errors.push(new Error(error.message));
|
|
12
|
+
}
|
|
13
|
+
return errors;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,YAAY,CAC1B,GAAG,IAAmB;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACrB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,SAAS;YACX,CAAC;YAED,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Dimension } from '@jesscss/core';
|
|
2
|
+
export declare function num(values: Dimension | number): number;
|
|
3
|
+
export declare function num(values: Array<Dimension | number>): number[];
|
|
4
|
+
export declare const mathHelper: (fn: (...nums: number[]) => number, params: string[], unit: string | null | undefined, ...input: Array<Dimension | number>) => Dimension;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Dimension, Num } from '@jesscss/core';
|
|
2
|
+
const { isArray } = Array;
|
|
3
|
+
export function num(values) {
|
|
4
|
+
if (isArray(values)) {
|
|
5
|
+
return values.map(n => n instanceof Dimension ? n.value.number : n);
|
|
6
|
+
}
|
|
7
|
+
return values instanceof Dimension ? values.value.number : values;
|
|
8
|
+
}
|
|
9
|
+
export const mathHelper = (fn, params, unit, ...input) => {
|
|
10
|
+
let key = 0;
|
|
11
|
+
for (const n of input) {
|
|
12
|
+
if (!(n instanceof Dimension) && typeof n !== 'number') {
|
|
13
|
+
let name = params[key++];
|
|
14
|
+
name = name ? `"${name}" ` : '';
|
|
15
|
+
throw new TypeError(`${name}argument must be numeric`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const val = input[0];
|
|
19
|
+
if (unit === null) {
|
|
20
|
+
const numberResult = fn(...num(input));
|
|
21
|
+
const preservedUnit = val instanceof Dimension ? val.value.unit : undefined;
|
|
22
|
+
return new Dimension({ number: numberResult, unit: preservedUnit });
|
|
23
|
+
}
|
|
24
|
+
const normalizedInput = input.map(v => {
|
|
25
|
+
if (!(v instanceof Dimension)) {
|
|
26
|
+
return v;
|
|
27
|
+
}
|
|
28
|
+
if (v.value.unit === 'deg') {
|
|
29
|
+
return v.value.number * Math.PI / 180;
|
|
30
|
+
}
|
|
31
|
+
if (v.value.unit === 'grad') {
|
|
32
|
+
return v.value.number * Math.PI / 200;
|
|
33
|
+
}
|
|
34
|
+
if (v.value.unit === 'turn') {
|
|
35
|
+
return v.value.number * 2 * Math.PI;
|
|
36
|
+
}
|
|
37
|
+
return v.value.number;
|
|
38
|
+
});
|
|
39
|
+
unit ??= val instanceof Dimension ? val.value.unit : '';
|
|
40
|
+
if (unit === undefined) {
|
|
41
|
+
return new Num(fn(...normalizedInput));
|
|
42
|
+
}
|
|
43
|
+
return new Dimension({ number: fn(...normalizedInput), unit });
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=mathHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mathHelper.js","sourceRoot":"","sources":["../../src/util/mathHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Dimension } from '@jesscss/core';
|
|
2
|
+
export function clamp(val) {
|
|
3
|
+
return Math.min(1, Math.max(0, val));
|
|
4
|
+
}
|
|
5
|
+
export function getNumber(n, ignoreUnit = false) {
|
|
6
|
+
if (n instanceof Dimension) {
|
|
7
|
+
let unit = n.value.unit;
|
|
8
|
+
if (unit === '%') {
|
|
9
|
+
return n.value.number / 100;
|
|
10
|
+
}
|
|
11
|
+
else if (!unit || ignoreUnit) {
|
|
12
|
+
return n.value.number;
|
|
13
|
+
}
|
|
14
|
+
throw new Error('color functions take numbers as parameters');
|
|
15
|
+
}
|
|
16
|
+
else if (n.constructor === Number) {
|
|
17
|
+
return n;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw new Error('color functions take numbers as parameters');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/util/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,eAAe,CAAC;AAIrD,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAgB,EAAE,UAAU,GAAG,KAAK;IAC5D,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type Node, type List, Color, type Context } from '@jesscss/core';
|
|
2
|
+
/**
|
|
3
|
+
* Detects and parses relative color syntax from rawArgs
|
|
4
|
+
* Returns null if not relative color syntax, otherwise returns parsed data
|
|
5
|
+
*
|
|
6
|
+
* Example: rgb(from color r g b) -> { originColor: <color node>, channels: [r, g, b] }
|
|
7
|
+
* Example: rgb(from color r g b / 0.5) -> { originColor: <color node>, channels: [r, g, b], alpha: <alpha node> }
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseRelativeColorSyntax(rawArgs: List): {
|
|
10
|
+
originColor: Node;
|
|
11
|
+
channels: Node[];
|
|
12
|
+
alpha?: Node;
|
|
13
|
+
} | null;
|
|
14
|
+
/**
|
|
15
|
+
* Gets the normalized channel values from an origin color for RGB context
|
|
16
|
+
* Returns values in the ranges specified by CSS Color Module Level 5:
|
|
17
|
+
* - r, g, b: 0-255 (as numbers)
|
|
18
|
+
* - alpha: 0-1 (as number)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRGBChannelValues(originColor: Color): {
|
|
21
|
+
r: number;
|
|
22
|
+
g: number;
|
|
23
|
+
b: number;
|
|
24
|
+
alpha: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Evaluates an RGB channel reference (r, g, b, alpha) from the origin color
|
|
28
|
+
* Returns the numeric value for that channel in RGB range (0-255)
|
|
29
|
+
* Supports both simple identifiers and calc() expressions
|
|
30
|
+
*/
|
|
31
|
+
export declare function evaluateRGBChannelReference(channel: Node, originColor: Color, context: Context): Promise<number>;
|
|
32
|
+
/**
|
|
33
|
+
* Gets the normalized channel values from an origin color for HSL context
|
|
34
|
+
* Returns values in the ranges specified by CSS Color Module Level 5:
|
|
35
|
+
* - h: 0-360 (as number in degrees)
|
|
36
|
+
* - s, l: 0-1 (as numbers, will be converted to percentages in substitution)
|
|
37
|
+
* - alpha: 0-1 (as number)
|
|
38
|
+
*/
|
|
39
|
+
export declare function getHSLChannelValues(originColor: Color): {
|
|
40
|
+
h: number;
|
|
41
|
+
s: number;
|
|
42
|
+
l: number;
|
|
43
|
+
alpha: number;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Evaluates an HSL channel reference (h, s, l, alpha) from the origin color
|
|
47
|
+
* Returns the numeric value for that channel
|
|
48
|
+
* Supports both simple identifiers and calc() expressions
|
|
49
|
+
*/
|
|
50
|
+
export declare function evaluateHSLChannelReference(channel: Node, originColor: Color, context: Context): Promise<number>;
|
|
51
|
+
/**
|
|
52
|
+
* Evaluates an origin color node to a Color
|
|
53
|
+
*/
|
|
54
|
+
export declare function evaluateOriginColor(originColorNode: Node, context: Context): Promise<Color>;
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { Sequence, Any, Color, Call, Dimension, Operation } from '@jesscss/core';
|
|
2
|
+
/**
|
|
3
|
+
* Detects and parses relative color syntax from rawArgs
|
|
4
|
+
* Returns null if not relative color syntax, otherwise returns parsed data
|
|
5
|
+
*
|
|
6
|
+
* Example: rgb(from color r g b) -> { originColor: <color node>, channels: [r, g, b] }
|
|
7
|
+
* Example: rgb(from color r g b / 0.5) -> { originColor: <color node>, channels: [r, g, b], alpha: <alpha node> }
|
|
8
|
+
*/
|
|
9
|
+
export function parseRelativeColorSyntax(rawArgs) {
|
|
10
|
+
if (!rawArgs || !rawArgs.value || rawArgs.value.length === 0) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const firstArg = rawArgs.value[0];
|
|
14
|
+
// Check if first argument is a Sequence starting with "from"
|
|
15
|
+
if (firstArg instanceof Sequence && firstArg.value && firstArg.value.length > 0) {
|
|
16
|
+
const firstItem = firstArg.value[0];
|
|
17
|
+
// Check if first item is "from" keyword
|
|
18
|
+
if (firstItem instanceof Any && firstItem.value.toLowerCase() === 'from') {
|
|
19
|
+
// This is relative color syntax
|
|
20
|
+
if (firstArg.value.length < 2) {
|
|
21
|
+
throw new Error('Relative color syntax requires an origin color after "from"');
|
|
22
|
+
}
|
|
23
|
+
const originColor = firstArg.value[1];
|
|
24
|
+
const channels = firstArg.value.slice(2) || [];
|
|
25
|
+
// Check if there's an alpha value separated by / (rawArgs.value[1] when sep is '/')
|
|
26
|
+
let alpha;
|
|
27
|
+
if (rawArgs.value.length > 1 && rawArgs.options?.sep === '/') {
|
|
28
|
+
alpha = rawArgs.value[1];
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
originColor,
|
|
32
|
+
channels,
|
|
33
|
+
alpha
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the normalized channel values from an origin color for RGB context
|
|
41
|
+
* Returns values in the ranges specified by CSS Color Module Level 5:
|
|
42
|
+
* - r, g, b: 0-255 (as numbers)
|
|
43
|
+
* - alpha: 0-1 (as number)
|
|
44
|
+
*/
|
|
45
|
+
export function getRGBChannelValues(originColor) {
|
|
46
|
+
const [r, g, b] = originColor._rgb;
|
|
47
|
+
const alpha = originColor._alpha;
|
|
48
|
+
return { r, g, b, alpha };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Substitutes channel variable references (r, g, b, alpha) in a node tree with Dimension nodes
|
|
52
|
+
* This is used to replace channel variables in calc() expressions with their actual values
|
|
53
|
+
*/
|
|
54
|
+
function substituteChannelVariables(node, channelValues, format) {
|
|
55
|
+
// If it's an Any node representing a channel variable, replace it with a Dimension
|
|
56
|
+
if (node instanceof Any && typeof node.value === 'string') {
|
|
57
|
+
const channelName = node.value.toLowerCase();
|
|
58
|
+
// Handle location - it can be undefined, empty array, or proper LocationInfo
|
|
59
|
+
// TypeScript needs explicit narrowing to avoid [] type
|
|
60
|
+
let location = undefined;
|
|
61
|
+
if (node.location && Array.isArray(node.location) && node.location.length >= 6) {
|
|
62
|
+
location = node.location;
|
|
63
|
+
}
|
|
64
|
+
const context = node.context;
|
|
65
|
+
if (format === 'rgb') {
|
|
66
|
+
const values = channelValues;
|
|
67
|
+
switch (channelName) {
|
|
68
|
+
case 'r':
|
|
69
|
+
return new Dimension({ number: values.r, unit: '' }, node.options, location, context);
|
|
70
|
+
case 'g':
|
|
71
|
+
return new Dimension({ number: values.g, unit: '' }, node.options, location, context);
|
|
72
|
+
case 'b':
|
|
73
|
+
return new Dimension({ number: values.b, unit: '' }, node.options, location, context);
|
|
74
|
+
case 'alpha':
|
|
75
|
+
// For RGB context, alpha is 0-1, but when used in calc for r/g/b, it should be 0-255
|
|
76
|
+
// However, according to spec, channel values are resolved first, so alpha stays 0-1
|
|
77
|
+
// The conversion happens when the result is used for r/g/b output
|
|
78
|
+
return new Dimension({ number: values.alpha, unit: '' }, node.options, location, context);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const values = channelValues;
|
|
83
|
+
switch (channelName) {
|
|
84
|
+
case 'h':
|
|
85
|
+
return new Dimension({ number: values.h, unit: 'deg' }, node.options, location, context);
|
|
86
|
+
case 's':
|
|
87
|
+
return new Dimension({ number: values.s * 100, unit: '%' }, node.options, location, context);
|
|
88
|
+
case 'l':
|
|
89
|
+
return new Dimension({ number: values.l * 100, unit: '%' }, node.options, location, context);
|
|
90
|
+
case 'alpha':
|
|
91
|
+
return new Dimension({ number: values.alpha, unit: '' }, node.options, location, context);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// If it's a Call node (like calc()), recursively substitute in its arguments
|
|
96
|
+
if (node instanceof Call && node.value.args) {
|
|
97
|
+
const cloned = node.clone();
|
|
98
|
+
// Recursively substitute in arguments
|
|
99
|
+
if (cloned.value.args) {
|
|
100
|
+
const substitutedArgs = node.value.args.value.map(arg => substituteChannelVariables(arg, channelValues, format));
|
|
101
|
+
cloned.value.args.value = substitutedArgs;
|
|
102
|
+
}
|
|
103
|
+
return cloned;
|
|
104
|
+
}
|
|
105
|
+
// If it's an Operation, recursively substitute in its operands
|
|
106
|
+
if (node instanceof Operation && node.value) {
|
|
107
|
+
const cloned = node.clone();
|
|
108
|
+
const [left, op, right] = node.value;
|
|
109
|
+
cloned.value = [
|
|
110
|
+
substituteChannelVariables(left, channelValues, format),
|
|
111
|
+
op,
|
|
112
|
+
substituteChannelVariables(right, channelValues, format)
|
|
113
|
+
];
|
|
114
|
+
return cloned;
|
|
115
|
+
}
|
|
116
|
+
// If it's a Sequence or List, recursively substitute in its values
|
|
117
|
+
if ('value' in node && Array.isArray(node.value)) {
|
|
118
|
+
const cloned = node.clone();
|
|
119
|
+
cloned.value = node.value.map((item) => substituteChannelVariables(item, channelValues, format));
|
|
120
|
+
return cloned;
|
|
121
|
+
}
|
|
122
|
+
// For other node types, return as-is
|
|
123
|
+
return node;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Evaluates an RGB channel reference (r, g, b, alpha) from the origin color
|
|
127
|
+
* Returns the numeric value for that channel in RGB range (0-255)
|
|
128
|
+
* Supports both simple identifiers and calc() expressions
|
|
129
|
+
*/
|
|
130
|
+
export async function evaluateRGBChannelReference(channel, originColor, context) {
|
|
131
|
+
const channelValues = getRGBChannelValues(originColor);
|
|
132
|
+
// Check if channel is a simple identifier (r, g, b, alpha)
|
|
133
|
+
if (channel instanceof Any && typeof channel.value === 'string') {
|
|
134
|
+
const channelName = channel.value.toLowerCase();
|
|
135
|
+
switch (channelName) {
|
|
136
|
+
case 'r':
|
|
137
|
+
return channelValues.r;
|
|
138
|
+
case 'g':
|
|
139
|
+
return channelValues.g;
|
|
140
|
+
case 'b':
|
|
141
|
+
return channelValues.b;
|
|
142
|
+
case 'alpha':
|
|
143
|
+
// Convert alpha (0-1) to RGB range (0-255) when used for r/g/b
|
|
144
|
+
return channelValues.alpha * 255;
|
|
145
|
+
default:
|
|
146
|
+
throw new Error(`Invalid RGB channel reference: ${channelName}. Must be r, g, b, or alpha`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// If it's a Call node (like calc()), substitute channel variables and evaluate
|
|
150
|
+
if (channel instanceof Call) {
|
|
151
|
+
const substituted = substituteChannelVariables(channel, channelValues, 'rgb');
|
|
152
|
+
const evaluated = await substituted.eval(context);
|
|
153
|
+
// The result should be a Dimension
|
|
154
|
+
if (evaluated instanceof Dimension) {
|
|
155
|
+
const value = evaluated.value.number;
|
|
156
|
+
// Clamp to 0-255 range for RGB
|
|
157
|
+
return Math.max(0, Math.min(255, value));
|
|
158
|
+
}
|
|
159
|
+
throw new Error(`Channel expression must evaluate to a Dimension, got ${evaluated.type}`);
|
|
160
|
+
}
|
|
161
|
+
// For other node types, try to evaluate and extract numeric value
|
|
162
|
+
const evaluated = await channel.eval(context);
|
|
163
|
+
if (evaluated instanceof Dimension) {
|
|
164
|
+
return Math.max(0, Math.min(255, evaluated.value.number));
|
|
165
|
+
}
|
|
166
|
+
throw new Error(`Channel reference must be an identifier or evaluate to a Dimension, got ${channel.type}`);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Gets the normalized channel values from an origin color for HSL context
|
|
170
|
+
* Returns values in the ranges specified by CSS Color Module Level 5:
|
|
171
|
+
* - h: 0-360 (as number in degrees)
|
|
172
|
+
* - s, l: 0-1 (as numbers, will be converted to percentages in substitution)
|
|
173
|
+
* - alpha: 0-1 (as number)
|
|
174
|
+
*/
|
|
175
|
+
export function getHSLChannelValues(originColor) {
|
|
176
|
+
const [h, s, l] = originColor._hsl;
|
|
177
|
+
const alpha = originColor._alpha;
|
|
178
|
+
return { h, s, l, alpha };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Evaluates an HSL channel reference (h, s, l, alpha) from the origin color
|
|
182
|
+
* Returns the numeric value for that channel
|
|
183
|
+
* Supports both simple identifiers and calc() expressions
|
|
184
|
+
*/
|
|
185
|
+
export async function evaluateHSLChannelReference(channel, originColor, context) {
|
|
186
|
+
const channelValues = getHSLChannelValues(originColor);
|
|
187
|
+
// Check if channel is a simple identifier (h, s, l, alpha)
|
|
188
|
+
if (channel instanceof Any && typeof channel.value === 'string') {
|
|
189
|
+
const channelName = channel.value.toLowerCase();
|
|
190
|
+
switch (channelName) {
|
|
191
|
+
case 'h':
|
|
192
|
+
return channelValues.h;
|
|
193
|
+
case 's':
|
|
194
|
+
return channelValues.s;
|
|
195
|
+
case 'l':
|
|
196
|
+
return channelValues.l;
|
|
197
|
+
case 'alpha':
|
|
198
|
+
return channelValues.alpha;
|
|
199
|
+
default:
|
|
200
|
+
throw new Error(`Invalid HSL channel reference: ${channelName}. Must be h, s, l, or alpha`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// If it's a Call node (like calc()), substitute channel variables and evaluate
|
|
204
|
+
if (channel instanceof Call) {
|
|
205
|
+
const substituted = substituteChannelVariables(channel, channelValues, 'hsl');
|
|
206
|
+
const evaluated = await substituted.eval(context);
|
|
207
|
+
// The result should be a Dimension
|
|
208
|
+
if (evaluated instanceof Dimension) {
|
|
209
|
+
const value = evaluated.value.number;
|
|
210
|
+
const unit = evaluated.value.unit;
|
|
211
|
+
// Handle different units for hue (deg, turn, rad, grad)
|
|
212
|
+
if (unit === 'deg' || unit === '' || unit === undefined) {
|
|
213
|
+
// Normalize hue to 0-360
|
|
214
|
+
return ((value % 360) + 360) % 360;
|
|
215
|
+
}
|
|
216
|
+
else if (unit === 'turn') {
|
|
217
|
+
return ((value * 360 % 360) + 360) % 360;
|
|
218
|
+
}
|
|
219
|
+
else if (unit === 'rad') {
|
|
220
|
+
return ((value * 180 / Math.PI % 360) + 360) % 360;
|
|
221
|
+
}
|
|
222
|
+
else if (unit === 'grad') {
|
|
223
|
+
return ((value * 0.9 % 360) + 360) % 360;
|
|
224
|
+
}
|
|
225
|
+
else if (unit === '%') {
|
|
226
|
+
// For s/l, percentage values are 0-100%, convert to 0-1
|
|
227
|
+
return Math.max(0, Math.min(1, value / 100));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// For s/l without unit, assume 0-1 range
|
|
231
|
+
return Math.max(0, Math.min(1, value));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
throw new Error(`Channel expression must evaluate to a Dimension, got ${evaluated.type}`);
|
|
235
|
+
}
|
|
236
|
+
// For other node types, try to evaluate and extract numeric value
|
|
237
|
+
const evaluated = await channel.eval(context);
|
|
238
|
+
if (evaluated instanceof Dimension) {
|
|
239
|
+
const value = evaluated.value.number;
|
|
240
|
+
const unit = evaluated.value.unit;
|
|
241
|
+
// Handle percentage units for s/l
|
|
242
|
+
if (unit === '%') {
|
|
243
|
+
return Math.max(0, Math.min(1, value / 100));
|
|
244
|
+
}
|
|
245
|
+
// For hue, normalize to 0-360
|
|
246
|
+
if (unit === 'deg' || unit === '' || unit === undefined) {
|
|
247
|
+
return ((value % 360) + 360) % 360;
|
|
248
|
+
}
|
|
249
|
+
// For other cases, return as-is (will be clamped by caller if needed)
|
|
250
|
+
return value;
|
|
251
|
+
}
|
|
252
|
+
throw new Error(`Channel reference must be an identifier or evaluate to a Dimension, got ${channel.type}`);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Evaluates an origin color node to a Color
|
|
256
|
+
*/
|
|
257
|
+
export async function evaluateOriginColor(originColorNode, context) {
|
|
258
|
+
// Evaluate the origin color node
|
|
259
|
+
const evaluated = await originColorNode.eval(context);
|
|
260
|
+
// Cast to Color (it should be a Color, but might need conversion)
|
|
261
|
+
if (evaluated instanceof Color) {
|
|
262
|
+
return evaluated;
|
|
263
|
+
}
|
|
264
|
+
// Try to convert to Color if possible
|
|
265
|
+
// This might need to be expanded based on what types can be converted to Color
|
|
266
|
+
throw new Error(`Origin color must evaluate to a Color, got ${evaluated.type}`);
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=relative-color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relative-color.js","sourceRoot":"","sources":["../../src/util/relative-color.ts"],"names":[],"mappings":"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"}
|