@terrazzo/plugin-sass 2.0.0-alpha.2 → 2.0.0-alpha.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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["parseNumber","parseNumber_default","named_default","parseNamed","parseNamed_default","hex","parseHex","parseHex_default","num$1","per","num_per","num_per_none","hue$1","c","rgb_num_old","rgb_per_old","parseRgbLegacy","parseRgbLegacy_default","prepare","parse_default","_prepare_default","converter","converters$1","converter_default","modes","parsers","colorProfiles","identity","useMode","k$3","getMode","useParser","IdentStartCodePoint","IdentCodePoint","Tok","_i","is_num","is_ident","huenits","num","digits","ident","identlike","tokenize","parseColorSyntax","consumeCoords","c$1","parseModernSyntax","parse","parseRgb","r$1","parseRgb_default","parseTransparent","parseTransparent_default","lerp","get_classes","interpolatorPiecewise","interpolatorLinear","fixupAlpha","definition_default$12","linearize$2","convertA98ToXyz65","convertA98ToXyz65_default","gamma$2","convertXyz65ToA98","convertXyz65ToA98_default","fn$3","abs$1","convertRgbToLrgb","convertRgbToLrgb_default","convertRgbToXyz65","convertRgbToXyz65_default","fn$2","convertLrgbToRgb","convertLrgbToRgb_default","convertXyz65ToRgb","convertXyz65ToRgb_default","definition_default","normalizeHue","hue$2","normalizeHue_default","convertHslToRgb","convertRgbToHsl","M$1","hueToDeg","hue_default","hsl_old","parseHslLegacy","parseHslLegacy_default","parseHsl","parseHsl_default","hue","fn$4","fixupHueShorter","differenceHueSaturation","differenceHueNaive","differenceHueChroma","averageAngle","definition_default$1","convertHsvToRgb","f$2","convertRgbToHsv","definition_default$19","convertHwbToRgb","convertRgbToHwb","ParseHwb","definition_default$2","k","e","D50","D65","fn$1","convertLabToXyz50","convertLabToXyz50_default","convertXyz50ToRgb","convertXyz50ToRgb_default","convertLabToRgb","convertLabToRgb_default","convertRgbToXyz50","convertRgbToXyz50_default","f$1","convertXyz50ToLab","convertXyz50ToLab_default","convertRgbToLab","convertRgbToLab_default","parseLab","definition_default$3","k$1","e$1","fn","convertLab65ToXyz65","convertLab65ToXyz65_default","convertLab65ToRgb","convertLab65ToRgb_default","f","convertXyz65ToLab65","convertXyz65ToLab65_default","convertRgbToLab65","convertRgbToLab65_default","definition_default$4","convertLabToLch","convertLabToLch_default","convertLchToLab","convertLchToLab_default","parseLch","definition_default$5","definition_default$23","definition_default$6","convertOklabToLrgb","convertOklabToLrgb_default","convertLrgbToOklab","convertLrgbToOklab_default","convertRgbToOklab","convertRgbToOklab_default","convertOklabToRgb","convertOklabToRgb_default","parseOklab","parseOklab_default","definition_default$7","parseOklch","parseOklch_default","definition_default$8","convertP3ToXyz65","convertP3ToXyz65_default","convertXyz65ToP3","convertXyz65ToP3_default","definition_default$9","gamma$1","convertXyz50ToProphoto","convertXyz50ToProphoto_default","linearize$1","convertProphotoToXyz50","convertProphotoToXyz50_default","definition_default$10","α$1","β$1","gamma","convertXyz65ToRec2020","convertXyz65ToRec2020_default","α","β","linearize","convertRec2020ToXyz65","convertRec2020ToXyz65_default","definition_default$11","definition_default$13","convertXyz65ToXyz50","convertXyz65ToXyz50_default","convertXyz50ToXyz65","definition_default$14","M","degToRad","radToDeg","DE","BE","BCAD","convertRgbToCubehelix","convertRgbToCubehelix_default","convertCubehelixToRgb","definition_default$15","kE","kCH","θ","cosθ","sinθ","factor","convertDlchToLab65","e$3","convertDlchToLab65_default","convertLab65ToDlch","convertLab65ToDlch_default","convertDlabToLab65","convertLab65ToDlab","definition_default$16","definition_default$17","convertHsiToRgb","convertRgbToHsi","definition_default$18","YW","M1","M2","C1","C2","C3","transferPqDecode","transferPqEncode","toRel","convertItpToXyz65","p$2","convertItpToXyz65_default","toAbs","convertXyz65ToItp","convertXyz65ToItp_default","definition_default$20","p$1","d0$1","jabPqEncode","vn$2","abs","convertXyz65ToJab","convertXyz65ToJab_default","p","d0","jabPqDecode","rel","convertJabToXyz65","convertJabToXyz65_default","convertRgbToJab","convertRgbToJab_default","convertJabToRgb","convertJabToRgb_default","definition_default$21","convertJabToJch","convertJabToJch_default","convertJchToJab","convertJchToJab_default","definition_default$22","convertLuvToLchuv","convertLuvToLchuv_default","convertLchuvToLuv","convertLchuvToLuv_default","u_fn$1","v_fn$1","un$1","vn$1","l_fn","convertXyz50ToLuv","convertXyz50ToLuv_default","u_fn","v_fn","un","vn","convertLuvToXyz50","convertLuvToXyz50_default","convertRgbToLchuv","convertLchuvToRgb","definition_default$24","definition_default$25","toe","toe_inv","compute_max_saturation","find_cusp","find_gamut_intersection","C1$1","get_ST_max","get_Cs","convertOklabToOkhsl","convertOkhslToOklab","modeOkhsl_default","convertOklabToOkhsv","convertOkhsvToOklab","modeOkhsv_default","bias","bias_cbrt","transfer$1","convertRgbToXyb","convertRgbToXyb_default","transfer","convertXybToRgb","definition_default$26","convertRgbToYiq","convertRgbToYiq_default","convertYiqToRgb","definition_default$27","r","round","round_default","rgb$1","converters","DEPTH_ROUNDING","FORMAT_ID","parseNumber","named","parseNumber","num","hue","num","parse","prepare","converters","converters","definition","k","converter","c","r","c","definition","parseRgb","parseHex","parseRgbLegacy","parseNamed","parseTransparent","linearize","r","a98","gamma","fn","abs","c","r","convertRgbToLrgb","rgb","r","fn","abs","c","r","convertLrgbToRgb","definition","rgb","convertXyz65ToA98","convertRgbToXyz65","convertXyz65ToRgb","convertA98ToXyz65","hue","normalizeHue","r","M","hue","hueToDeg","hue","normalizeHue","fn","normalizeHue","val","sum","definition","parseHsl","parseHslLegacy","c","normalizeHue","f","r","M","definition","hsv","definition","parseHwb","c","k","e","fn","convertLrgbToRgb","convertXyz50ToRgb","convertLabToXyz50","lab","convertRgbToLrgb","rgb","r","f","convertXyz50ToLab","convertRgbToXyz50","rgb","definition","convertLabToXyz50","convertLabToRgb","convertXyz50ToLab","convertRgbToLab","parseLab","c","k","e","e","k","convertXyz65ToRgb","convertLab65ToXyz65","lab","e","k","convertXyz65ToLab65","convertRgbToXyz65","rgb","definition","lab","convertLab65ToXyz65","convertLab65ToRgb","convertXyz65ToLab65","convertRgbToLab65","c","normalizeHue","c","c","definition","convertLchToLab","convertLabToRgb","c","convertLabToLch","convertRgbToLab","parseLch","definition","lch","convertLchToLab","c","convertLab65ToRgb","convertLabToLch","convertRgbToLab65","definition","rgb","convertLrgbToRgb","convertRgbToLrgb","M","r","M","convertLrgbToOklab","convertRgbToLrgb","rgb","convertLrgbToRgb","convertOklabToLrgb","c","definition","lab","convertOklabToLrgb","convertOklabToRgb","convertLrgbToOklab","convertRgbToOklab","parseOklab","c","c","definition","lch","convertLchToLab","c","convertOklabToRgb","convertLabToLch","convertRgbToOklab","parseOklch","convertRgbToLrgb","rgb","r","convertLrgbToRgb","definition","rgb","convertXyz65ToP3","convertRgbToXyz65","convertXyz65ToRgb","convertP3ToXyz65","gamma","abs","linearize","abs","r","prophoto","definition","rgb","convertXyz50ToProphoto","convertRgbToXyz50","convertProphotoToXyz50","convertXyz50ToRgb","α","β","abs","abs","r","rec2020","definition","rgb","convertXyz65ToRec2020","convertRgbToXyz65","convertRec2020ToXyz65","convertXyz65ToRgb","definition","convertXyz50ToRgb","convertXyz50ToLab","convertRgbToXyz50","convertLabToXyz50","xyz65","xyz50","definition","convertXyz65ToRgb","convertXyz65ToXyz50","convertRgbToXyz65","convertXyz50ToXyz65","a98","modeA98","hsl","modeHsl","hsv","modeHsv","hwb","modeHwb","lab","modeLab","lab65","modeLab65","lch","modeLch","lch65","modeLch65","lrgb","modeLrgb","oklab","modeOklab","oklch","modeOklch","p3","modeP3","prophoto","modeProphoto","rec2020","modeRec2020","rgb","modeRgb","xyz50","modeXyz50","xyz65","modeXyz65","r","definition","convertRgbToCubehelix","convertCubehelixToRgb","c","e","f","e","f","normalizeHue","convertDlchToLab65","convertLabToLch","c","convertLchToLab","convertLab65ToDlch","definition","convertLab65ToRgb","convertRgbToLab65","definition","convertDlchToLab65","convertLchToLab","c","convertLab65ToRgb","convertLab65ToDlch","convertLabToLch","convertRgbToLab65","normalizeHue","f","r","M","definition","c","c","p","c","p","definition","convertItpToXyz65","convertXyz65ToRgb","convertXyz65ToItp","convertRgbToXyz65","p","d0","vn","n","n","convertXyz65ToJab","convertRgbToXyz65","rgb","convertXyz65ToRgb","convertJabToXyz65","definition","convertRgbToJab","convertXyz65ToJab","convertJabToRgb","convertJabToXyz65","c","normalizeHue","c","definition","convertJchToJab","convertJabToRgb","c","convertJabToJch","convertRgbToJab","c","normalizeHue","c","u_fn","v_fn","un","vn","convertLuvToLchuv","convertXyz50ToLuv","convertRgbToXyz50","rgb","convertXyz50ToRgb","convertLuvToXyz50","convertLchuvToLuv","lchuv","definition","definition","convertLuvToXyz50","convertXyz50ToRgb","luv","convertXyz50ToLuv","convertRgbToXyz50","rgb","f","rgb","convertOklabToLrgb","C1","r","b","k","lab","c","normalizeHue","hsl","modeHsl","convertRgbToOklab","c","convertOklabToRgb","lab","c","k","convertOklabToLrgb","normalizeHue","hsv","k","convertOklabToLrgb","modeHsv","convertRgbToOklab","c","convertOklabToRgb","transfer","convertRgbToLrgb","r","convertLrgbToRgb","definition","convertXybToRgb","convertRgbToXyb","r","convertYiqToRgb","convertRgbToYiq","modeA98","modeCubehelix","modeDlab","modeDlch","modeHsi","modeHsl","modeHsv","modeHwb","modeItp","modeJab","modeJch","modeLab","modeLab65","modeLch","modeLch65","modeLchuv","modeLrgb","modeLuv","modeOkhsl","modeOkhsv","modeOklab","modeOklch","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyb","modeXyz50","modeXyz65","modeYiq","modeA98","modeHsl","modeHwb","modeLab","modeLab65","modeLch","modeLrgb","modeOklab","modeOklch","modeOkhsv","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyz50","modeXyz65","round","p","c","fn","CSS_FORMAT_ID","output: string[]","wcmatch","p","CSS_FORMAT_ID"],"sources":["../../plugin-css/dist/index.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNumber.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/colors/named.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNamed.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseHex.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/regex.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgbLegacy.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/_prepare.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/converter.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/modes.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/parse.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseTransparent.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/lerp.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/piecewise.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/linear.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/alpha.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertA98ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertXyz65ToA98.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertRgbToLrgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertRgbToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertLrgbToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/normalizeHue.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertHslToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertRgbToHsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/hue.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHslLegacy.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/hue.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/difference.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/average.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertHsvToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertRgbToHsv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertHwbToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertRgbToHwb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/parseHwb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertRgbToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertXyz50ToLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertRgbToLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/parseLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertXyz65ToLab65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertRgbToLab65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLabToLch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLchToLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/parseLch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch65/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToLrgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertLrgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertRgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/parseOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/parseOklch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertP3ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertXyz65ToP3.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/bootstrap/css.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertRgbToCubehelix.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertCubehelixToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertDlchToLab65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertLab65ToDlch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertHsiToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertRgbToHsi.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/transfer.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertItpToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertXyz65ToItp.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertXyz65ToJab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertRgbToJab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJabToJch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJchToJab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLuvToLchuv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLchuvToLuv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertXyz50ToLuv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertLuvToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/helpers.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOklabToOkhsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOkhslToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/modeOkhsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOklabToOkhsv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOkhsvToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/modeOkhsv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertRgbToXyb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertXybToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertRgbToYiq.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertYiqToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/round.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/index.js","../../token-tools/dist/css.js","../../../node_modules/.pnpm/wildcard-match@5.1.4/node_modules/wildcard-match/build/index.es.mjs","../src/lib.ts","../src/build.ts","../src/index.ts"],"sourcesContent":["//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNumber.js\nconst parseNumber = (color, len) => {\n\tif (typeof color !== \"number\") return;\n\tif (len === 3) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 8 & 15 | color >> 4 & 240) / 255,\n\t\tg: (color >> 4 & 15 | color & 240) / 255,\n\t\tb: (color & 15 | color << 4 & 240) / 255\n\t};\n\tif (len === 4) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 12 & 15 | color >> 8 & 240) / 255,\n\t\tg: (color >> 8 & 15 | color >> 4 & 240) / 255,\n\t\tb: (color >> 4 & 15 | color & 240) / 255,\n\t\talpha: (color & 15 | color << 4 & 240) / 255\n\t};\n\tif (len === 6) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 16 & 255) / 255,\n\t\tg: (color >> 8 & 255) / 255,\n\t\tb: (color & 255) / 255\n\t};\n\tif (len === 8) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 24 & 255) / 255,\n\t\tg: (color >> 16 & 255) / 255,\n\t\tb: (color >> 8 & 255) / 255,\n\t\talpha: (color & 255) / 255\n\t};\n};\nvar parseNumber_default = parseNumber;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/colors/named.js\nconst named = {\n\taliceblue: 15792383,\n\tantiquewhite: 16444375,\n\taqua: 65535,\n\taquamarine: 8388564,\n\tazure: 15794175,\n\tbeige: 16119260,\n\tbisque: 16770244,\n\tblack: 0,\n\tblanchedalmond: 16772045,\n\tblue: 255,\n\tblueviolet: 9055202,\n\tbrown: 10824234,\n\tburlywood: 14596231,\n\tcadetblue: 6266528,\n\tchartreuse: 8388352,\n\tchocolate: 13789470,\n\tcoral: 16744272,\n\tcornflowerblue: 6591981,\n\tcornsilk: 16775388,\n\tcrimson: 14423100,\n\tcyan: 65535,\n\tdarkblue: 139,\n\tdarkcyan: 35723,\n\tdarkgoldenrod: 12092939,\n\tdarkgray: 11119017,\n\tdarkgreen: 25600,\n\tdarkgrey: 11119017,\n\tdarkkhaki: 12433259,\n\tdarkmagenta: 9109643,\n\tdarkolivegreen: 5597999,\n\tdarkorange: 16747520,\n\tdarkorchid: 10040012,\n\tdarkred: 9109504,\n\tdarksalmon: 15308410,\n\tdarkseagreen: 9419919,\n\tdarkslateblue: 4734347,\n\tdarkslategray: 3100495,\n\tdarkslategrey: 3100495,\n\tdarkturquoise: 52945,\n\tdarkviolet: 9699539,\n\tdeeppink: 16716947,\n\tdeepskyblue: 49151,\n\tdimgray: 6908265,\n\tdimgrey: 6908265,\n\tdodgerblue: 2003199,\n\tfirebrick: 11674146,\n\tfloralwhite: 16775920,\n\tforestgreen: 2263842,\n\tfuchsia: 16711935,\n\tgainsboro: 14474460,\n\tghostwhite: 16316671,\n\tgold: 16766720,\n\tgoldenrod: 14329120,\n\tgray: 8421504,\n\tgreen: 32768,\n\tgreenyellow: 11403055,\n\tgrey: 8421504,\n\thoneydew: 15794160,\n\thotpink: 16738740,\n\tindianred: 13458524,\n\tindigo: 4915330,\n\tivory: 16777200,\n\tkhaki: 15787660,\n\tlavender: 15132410,\n\tlavenderblush: 16773365,\n\tlawngreen: 8190976,\n\tlemonchiffon: 16775885,\n\tlightblue: 11393254,\n\tlightcoral: 15761536,\n\tlightcyan: 14745599,\n\tlightgoldenrodyellow: 16448210,\n\tlightgray: 13882323,\n\tlightgreen: 9498256,\n\tlightgrey: 13882323,\n\tlightpink: 16758465,\n\tlightsalmon: 16752762,\n\tlightseagreen: 2142890,\n\tlightskyblue: 8900346,\n\tlightslategray: 7833753,\n\tlightslategrey: 7833753,\n\tlightsteelblue: 11584734,\n\tlightyellow: 16777184,\n\tlime: 65280,\n\tlimegreen: 3329330,\n\tlinen: 16445670,\n\tmagenta: 16711935,\n\tmaroon: 8388608,\n\tmediumaquamarine: 6737322,\n\tmediumblue: 205,\n\tmediumorchid: 12211667,\n\tmediumpurple: 9662683,\n\tmediumseagreen: 3978097,\n\tmediumslateblue: 8087790,\n\tmediumspringgreen: 64154,\n\tmediumturquoise: 4772300,\n\tmediumvioletred: 13047173,\n\tmidnightblue: 1644912,\n\tmintcream: 16121850,\n\tmistyrose: 16770273,\n\tmoccasin: 16770229,\n\tnavajowhite: 16768685,\n\tnavy: 128,\n\toldlace: 16643558,\n\tolive: 8421376,\n\tolivedrab: 7048739,\n\torange: 16753920,\n\torangered: 16729344,\n\torchid: 14315734,\n\tpalegoldenrod: 15657130,\n\tpalegreen: 10025880,\n\tpaleturquoise: 11529966,\n\tpalevioletred: 14381203,\n\tpapayawhip: 16773077,\n\tpeachpuff: 16767673,\n\tperu: 13468991,\n\tpink: 16761035,\n\tplum: 14524637,\n\tpowderblue: 11591910,\n\tpurple: 8388736,\n\trebeccapurple: 6697881,\n\tred: 16711680,\n\trosybrown: 12357519,\n\troyalblue: 4286945,\n\tsaddlebrown: 9127187,\n\tsalmon: 16416882,\n\tsandybrown: 16032864,\n\tseagreen: 3050327,\n\tseashell: 16774638,\n\tsienna: 10506797,\n\tsilver: 12632256,\n\tskyblue: 8900331,\n\tslateblue: 6970061,\n\tslategray: 7372944,\n\tslategrey: 7372944,\n\tsnow: 16775930,\n\tspringgreen: 65407,\n\tsteelblue: 4620980,\n\ttan: 13808780,\n\tteal: 32896,\n\tthistle: 14204888,\n\ttomato: 16737095,\n\tturquoise: 4251856,\n\tviolet: 15631086,\n\twheat: 16113331,\n\twhite: 16777215,\n\twhitesmoke: 16119285,\n\tyellow: 16776960,\n\tyellowgreen: 10145074\n};\nvar named_default = named;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNamed.js\nconst parseNamed = (color) => {\n\treturn parseNumber_default(named_default[color.toLowerCase()], 6);\n};\nvar parseNamed_default = parseNamed;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseHex.js\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\nconst parseHex = (color) => {\n\tlet match;\n\treturn (match = color.match(hex)) ? parseNumber_default(parseInt(match[1], 16), match[1].length) : void 0;\n};\nvar parseHex_default = parseHex;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/regex.js\nconst num$1 = \"([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\";\nconst num_none = `(?:${num$1}|none)`;\nconst per = `${num$1}%`;\nconst per_none = `(?:${num$1}%|none)`;\nconst num_per = `(?:${num$1}%|${num$1})`;\nconst num_per_none = `(?:${num$1}%|${num$1}|none)`;\nconst hue$1 = `(?:${num$1}(deg|grad|rad|turn)|${num$1})`;\nconst hue_none = `(?:${num$1}(deg|grad|rad|turn)|${num$1}|none)`;\nconst c = `\\\\s*,\\\\s*`;\nconst rx_num_per_none = /* @__PURE__ */ new RegExp(\"^\" + num_per_none + \"$\");\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgbLegacy.js\nconst rgb_num_old = /* @__PURE__ */ new RegExp(`^rgba?\\\\(\\\\s*${num$1}${c}${num$1}${c}${num$1}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst rgb_per_old = /* @__PURE__ */ new RegExp(`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst parseRgbLegacy = (color) => {\n\tlet res = { mode: \"rgb\" };\n\tlet match;\n\tif (match = color.match(rgb_num_old)) {\n\t\tif (match[1] !== void 0) res.r = match[1] / 255;\n\t\tif (match[2] !== void 0) res.g = match[2] / 255;\n\t\tif (match[3] !== void 0) res.b = match[3] / 255;\n\t} else if (match = color.match(rgb_per_old)) {\n\t\tif (match[1] !== void 0) res.r = match[1] / 100;\n\t\tif (match[2] !== void 0) res.g = match[2] / 100;\n\t\tif (match[3] !== void 0) res.b = match[3] / 100;\n\t} else return;\n\tif (match[4] !== void 0) res.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\telse if (match[5] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[5]));\n\treturn res;\n};\nvar parseRgbLegacy_default = parseRgbLegacy;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/_prepare.js\nconst prepare = (color, mode) => color === void 0 ? void 0 : typeof color !== \"object\" ? parse_default(color) : color.mode !== void 0 ? color : mode ? {\n\t...color,\n\tmode\n} : void 0;\nvar _prepare_default = prepare;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/converter.js\nconst converter = (target_mode = \"rgb\") => (color) => (color = _prepare_default(color, target_mode)) !== void 0 ? color.mode === target_mode ? color : converters$1[color.mode][target_mode] ? converters$1[color.mode][target_mode](color) : target_mode === \"rgb\" ? converters$1[color.mode].rgb(color) : converters$1.rgb[target_mode](converters$1[color.mode].rgb(color)) : void 0;\nvar converter_default = converter;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/modes.js\nconst converters$1 = {};\nconst modes = {};\nconst parsers = [];\nconst colorProfiles = {};\nconst identity = (v) => v;\nconst useMode = (definition$28) => {\n\tconverters$1[definition$28.mode] = {\n\t\t...converters$1[definition$28.mode],\n\t\t...definition$28.toMode\n\t};\n\tObject.keys(definition$28.fromMode || {}).forEach((k$3) => {\n\t\tif (!converters$1[k$3]) converters$1[k$3] = {};\n\t\tconverters$1[k$3][definition$28.mode] = definition$28.fromMode[k$3];\n\t});\n\tif (!definition$28.ranges) definition$28.ranges = {};\n\tif (!definition$28.difference) definition$28.difference = {};\n\tdefinition$28.channels.forEach((channel) => {\n\t\tif (definition$28.ranges[channel] === void 0) definition$28.ranges[channel] = [0, 1];\n\t\tif (!definition$28.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);\n\t\tif (typeof definition$28.interpolate[channel] === \"function\") definition$28.interpolate[channel] = { use: definition$28.interpolate[channel] };\n\t\tif (!definition$28.interpolate[channel].fixup) definition$28.interpolate[channel].fixup = identity;\n\t});\n\tmodes[definition$28.mode] = definition$28;\n\t(definition$28.parse || []).forEach((parser) => {\n\t\tuseParser(parser, definition$28.mode);\n\t});\n\treturn converter_default(definition$28.mode);\n};\nconst getMode = (mode) => modes[mode];\nconst useParser = (parser, mode) => {\n\tif (typeof parser === \"string\") {\n\t\tif (!mode) throw new Error(`'mode' required when 'parser' is a string`);\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === \"function\") {\n\t\tif (parsers.indexOf(parser) < 0) parsers.push(parser);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/parse.js\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\nconst Tok = {\n\tFunction: \"function\",\n\tIdent: \"ident\",\n\tNumber: \"number\",\n\tPercentage: \"percentage\",\n\tParenClose: \")\",\n\tNone: \"none\",\n\tHue: \"hue\",\n\tAlpha: \"alpha\"\n};\nlet _i = 0;\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === \"-\" || ch === \"+\") return /\\d/.test(ch1) || ch1 === \".\" && /\\d/.test(chars[_i + 2]);\n\tif (ch === \".\") return /\\d/.test(ch1);\n\treturn /\\d/.test(ch);\n}\nfunction is_ident(chars) {\n\tif (_i >= chars.length) return false;\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) return true;\n\tif (ch === \"-\") {\n\t\tif (chars.length - _i < 2) return false;\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === \"-\" || IdentStartCodePoint.test(ch1)) return true;\n\t\treturn false;\n\t}\n\treturn false;\n}\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\nfunction num(chars) {\n\tlet value = \"\";\n\tif (chars[_i] === \"-\" || chars[_i] === \"+\") value += chars[_i++];\n\tvalue += digits(chars);\n\tif (chars[_i] === \".\" && /\\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);\n\tif (chars[_i] === \"e\" || chars[_i] === \"E\") {\n\t\tif ((chars[_i + 1] === \"-\" || chars[_i + 1] === \"+\") && /\\d/.test(chars[_i + 2])) value += chars[_i++] + chars[_i++] + digits(chars);\n\t\telse if (/\\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === \"deg\" || id === \"rad\" || id === \"turn\" || id === \"grad\") return {\n\t\t\ttype: Tok.Hue,\n\t\t\tvalue: value * huenits[id]\n\t\t};\n\t\treturn;\n\t}\n\tif (chars[_i] === \"%\") {\n\t\t_i++;\n\t\treturn {\n\t\t\ttype: Tok.Percentage,\n\t\t\tvalue: +value\n\t\t};\n\t}\n\treturn {\n\t\ttype: Tok.Number,\n\t\tvalue: +value\n\t};\n}\nfunction digits(chars) {\n\tlet v = \"\";\n\twhile (/\\d/.test(chars[_i])) v += chars[_i++];\n\treturn v;\n}\nfunction ident(chars) {\n\tlet v = \"\";\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) v += chars[_i++];\n\treturn v;\n}\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === \"(\") {\n\t\t_i++;\n\t\treturn {\n\t\t\ttype: Tok.Function,\n\t\t\tvalue: v\n\t\t};\n\t}\n\tif (v === \"none\") return {\n\t\ttype: Tok.None,\n\t\tvalue: void 0\n\t};\n\treturn {\n\t\ttype: Tok.Ident,\n\t\tvalue: v\n\t};\n}\nfunction tokenize(str = \"\") {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\t_i = 0;\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\t\tif (ch === \"\\n\" || ch === \"\t\" || ch === \" \") {\n\t\t\twhile (_i < chars.length && (chars[_i] === \"\\n\" || chars[_i] === \"\t\" || chars[_i] === \" \")) _i++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \",\") return;\n\t\tif (ch === \")\") {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"+\") {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (ch === \"-\") {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: Tok.Ident,\n\t\t\t\t\tvalue: ident(chars)\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (ch === \".\") {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (ch === \"/\") {\n\t\t\twhile (_i < chars.length && (chars[_i] === \"\\n\" || chars[_i] === \"\t\" || chars[_i] === \" \")) _i++;\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: alpha\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === \"none\") {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\ttype: Tok.None,\n\t\t\t\t\t\t\tvalue: void 0\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\t\treturn;\n\t}\n\treturn tokens;\n}\nfunction parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== \"color\") return;\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) return;\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) return;\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) return;\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c$1, ch; ii < channels.length; ii++) {\n\t\tc$1 = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c$1.type !== Tok.None) {\n\t\t\tres[ch] = c$1.type === Tok.Number ? c$1.value : c$1.value / 100;\n\t\t\tif (ch === \"alpha\") res[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t}\n\t}\n\treturn res;\n}\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (token.type === Tok.None || token.type === Tok.Number || token.type === Tok.Alpha || token.type === Tok.Percentage || includeHue && token.type === Tok.Hue) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) return;\n\t\t\tcontinue;\n\t\t}\n\t\treturn;\n\t}\n\tif (coords.length < 3 || coords.length > 4) return;\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) return;\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) coords.push({\n\t\ttype: Tok.None,\n\t\tvalue: void 0\n\t});\n\treturn coords.every((c$1) => c$1.type !== Tok.Alpha) ? coords : void 0;\n}\nfunction parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) return;\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) return;\n\tcoords.unshift(token.value);\n\treturn coords;\n}\nconst parse = (color) => {\n\tif (typeof color !== \"string\") return;\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : void 0;\n\tlet result = void 0;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) if ((result = parsers[i++](color, parsed)) !== void 0) return result;\n\treturn tokens ? parseColorSyntax(tokens) : void 0;\n};\nvar parse_default = parse;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgb.js\nfunction parseRgb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"rgb\" && parsed[0] !== \"rgba\") return;\n\tconst res = { mode: \"rgb\" };\n\tconst [, r$1, g, b, alpha] = parsed;\n\tif (r$1.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) return;\n\tif (r$1.type !== Tok.None) res.r = r$1.type === Tok.Number ? r$1.value / 255 : r$1.value / 100;\n\tif (g.type !== Tok.None) res.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\tif (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseRgb_default = parseRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseTransparent.js\nconst parseTransparent = (c$1) => c$1 === \"transparent\" ? {\n\tmode: \"rgb\",\n\tr: 0,\n\tg: 0,\n\tb: 0,\n\talpha: 0\n} : void 0;\nvar parseTransparent_default = parseTransparent;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/lerp.js\nconst lerp = (a, b, t) => a + t * (b - a);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/piecewise.js\nconst get_classes = (arr) => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === void 0 && b === void 0) classes.push(void 0);\n\t\telse if (a !== void 0 && b !== void 0) classes.push([a, b]);\n\t\telse classes.push(a !== void 0 ? [a, a] : [b, b]);\n\t}\n\treturn classes;\n};\nconst interpolatorPiecewise = (interpolator) => (arr) => {\n\tlet classes = get_classes(arr);\n\treturn (t) => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === void 0 ? void 0 : interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/linear.js\nconst interpolatorLinear = interpolatorPiecewise(lerp);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/alpha.js\nconst fixupAlpha = (arr) => {\n\tlet some_defined = false;\n\tlet res = arr.map((v) => {\n\t\tif (v !== void 0) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/definition.js\nconst definition$27 = {\n\tmode: \"rgb\",\n\tchannels: [\n\t\t\"r\",\n\t\t\"g\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tparse: [\n\t\tparseRgb_default,\n\t\tparseHex_default,\n\t\tparseRgbLegacy_default,\n\t\tparseNamed_default,\n\t\tparseTransparent_default,\n\t\t\"srgb\"\n\t],\n\tserialize: \"srgb\",\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tgamut: true,\n\twhite: {\n\t\tr: 1,\n\t\tg: 1,\n\t\tb: 1\n\t},\n\tblack: {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0\n\t}\n};\nvar definition_default$12 = definition$27;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertA98ToXyz65.js\nconst linearize$2 = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\nconst convertA98ToXyz65 = (a98$2) => {\n\tlet r$1 = linearize$2(a98$2.r);\n\tlet g = linearize$2(a98$2.g);\n\tlet b = linearize$2(a98$2.b);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .5766690429101305 * r$1 + .1855582379065463 * g + .1882286462349947 * b,\n\t\ty: .297344975250536 * r$1 + .6273635662554661 * g + .0752914584939979 * b,\n\t\tz: .0270313613864123 * r$1 + .0706888525358272 * g + .9913375368376386 * b\n\t};\n\tif (a98$2.alpha !== void 0) res.alpha = a98$2.alpha;\n\treturn res;\n};\nvar convertA98ToXyz65_default = convertA98ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertXyz65ToA98.js\nconst gamma$2 = (v) => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"a98\",\n\t\tr: gamma$2(x * 2.0415879038107465 - y * .5650069742788597 - .3447313507783297 * z),\n\t\tg: gamma$2(x * -.9692436362808798 + y * 1.8759675015077206 + .0415550574071756 * z),\n\t\tb: gamma$2(x * .0134442806320312 - y * .1183623922310184 + 1.0151749943912058 * z)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToA98_default = convertXyz65ToA98;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertRgbToLrgb.js\nconst fn$3 = (c$1 = 0) => {\n\tconst abs$1 = Math.abs(c$1);\n\tif (abs$1 <= .04045) return c$1 / 12.92;\n\treturn (Math.sign(c$1) || 1) * Math.pow((abs$1 + .055) / 1.055, 2.4);\n};\nconst convertRgbToLrgb = ({ r: r$1, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: \"lrgb\",\n\t\tr: fn$3(r$1),\n\t\tg: fn$3(g),\n\t\tb: fn$3(b)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToLrgb_default = convertRgbToLrgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertRgbToXyz65.js\nconst convertRgbToXyz65 = (rgb$4) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .4123907992659593 * r$1 + .357584339383878 * g + .1804807884018343 * b,\n\t\ty: .2126390058715102 * r$1 + .715168678767756 * g + .0721923153607337 * b,\n\t\tz: .0193308187155918 * r$1 + .119194779794626 * g + .9505321522496607 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToXyz65_default = convertRgbToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertLrgbToRgb.js\nconst fn$2 = (c$1 = 0) => {\n\tconst abs$1 = Math.abs(c$1);\n\tif (abs$1 > .0031308) return (Math.sign(c$1) || 1) * (1.055 * Math.pow(abs$1, 1 / 2.4) - .055);\n\treturn c$1 * 12.92;\n};\nconst convertLrgbToRgb = ({ r: r$1, g, b, alpha }, mode = \"rgb\") => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn$2(r$1),\n\t\tg: fn$2(g),\n\t\tb: fn$2(b)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLrgbToRgb_default = convertLrgbToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToRgb.js\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = convertLrgbToRgb_default({\n\t\tr: x * 3.2409699419045226 - y * 1.537383177570094 - .4986107602930034 * z,\n\t\tg: x * -.9692436362808796 + y * 1.8759675015077204 + .0415550574071756 * z,\n\t\tb: x * .0556300796969936 - y * .2039769588889765 + 1.0569715142428784 * z\n\t});\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToRgb_default = convertXyz65ToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/definition.js\nconst definition$26 = {\n\t...definition_default$12,\n\tmode: \"a98\",\n\tparse: [\"a98-rgb\"],\n\tserialize: \"a98-rgb\",\n\tfromMode: {\n\t\trgb: (color) => convertXyz65ToA98_default(convertRgbToXyz65_default(color)),\n\t\txyz65: convertXyz65ToA98_default\n\t},\n\ttoMode: {\n\t\trgb: (color) => convertXyz65ToRgb_default(convertA98ToXyz65_default(color)),\n\t\txyz65: convertA98ToXyz65_default\n\t}\n};\nvar definition_default = definition$26;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/normalizeHue.js\nconst normalizeHue = (hue$2) => (hue$2 = hue$2 % 360) < 0 ? hue$2 + 360 : hue$2;\nvar normalizeHue_default = normalizeHue;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertHslToRgb.js\nfunction convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue_default(h !== void 0 ? h : 0);\n\tif (s === void 0) s = 0;\n\tif (l === void 0) l = 0;\n\tlet m1 = l + s * (l < .5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(h / 60 % 2 - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: m1,\n\t\t\t\tg: m2,\n\t\t\t\tb: 2 * l - m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: m2,\n\t\t\t\tg: m1,\n\t\t\t\tb: 2 * l - m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: 2 * l - m1,\n\t\t\t\tg: m1,\n\t\t\t\tb: m2\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: 2 * l - m1,\n\t\t\t\tg: m2,\n\t\t\t\tb: m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: m2,\n\t\t\t\tg: 2 * l - m1,\n\t\t\t\tb: m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: m1,\n\t\t\t\tg: 2 * l - m1,\n\t\t\t\tb: m2\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: res = {\n\t\t\tr: 2 * l - m1,\n\t\t\tg: 2 * l - m1,\n\t\t\tb: 2 * l - m1\n\t\t};\n\t}\n\tres.mode = \"rgb\";\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertRgbToHsl.js\nfunction convertRgbToHsl({ r: r$1, g, b, alpha }) {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);\n\tlet res = {\n\t\tmode: \"hsl\",\n\t\ts: M$1 === m ? 0 : (M$1 - m) / (1 - Math.abs(M$1 + m - 1)),\n\t\tl: .5 * (M$1 + m)\n\t};\n\tif (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/hue.js\nconst hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase \"deg\": return +val;\n\t\tcase \"rad\": return val / Math.PI * 180;\n\t\tcase \"grad\": return val / 10 * 9;\n\t\tcase \"turn\": return val * 360;\n\t}\n};\nvar hue_default = hueToDeg;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHslLegacy.js\nconst hsl_old = /* @__PURE__ */ new RegExp(`^hsla?\\\\(\\\\s*${hue$1}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst parseHslLegacy = (color) => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: \"hsl\" };\n\tif (match[3] !== void 0) res.h = +match[3];\n\telse if (match[1] !== void 0 && match[2] !== void 0) res.h = hue_default(match[1], match[2]);\n\tif (match[4] !== void 0) res.s = Math.min(Math.max(0, match[4] / 100), 1);\n\tif (match[5] !== void 0) res.l = Math.min(Math.max(0, match[5] / 100), 1);\n\tif (match[6] !== void 0) res.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\telse if (match[7] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[7]));\n\treturn res;\n};\nvar parseHslLegacy_default = parseHslLegacy;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHsl.js\nfunction parseHsl(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hsl\" && parsed[0] !== \"hsla\") return;\n\tconst res = { mode: \"hsl\" };\n\tconst [, h, s, l, alpha] = parsed;\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) return;\n\t\tres.s = s.value / 100;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return;\n\t\tres.l = l.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseHsl_default = parseHsl;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/hue.js\nconst hue = (hues, fn$4) => {\n\treturn hues.map((hue$2, idx, arr) => {\n\t\tif (hue$2 === void 0) return hue$2;\n\t\tlet normalized = normalizeHue_default(hue$2);\n\t\tif (idx === 0 || hues[idx - 1] === void 0) return normalized;\n\t\treturn fn$4(normalized - normalizeHue_default(arr[idx - 1]));\n\t}).reduce((acc, curr) => {\n\t\tif (!acc.length || curr === void 0 || acc[acc.length - 1] === void 0) {\n\t\t\tacc.push(curr);\n\t\t\treturn acc;\n\t\t}\n\t\tacc.push(curr + acc[acc.length - 1]);\n\t\treturn acc;\n\t}, []);\n};\nconst fixupHueShorter = (arr) => hue(arr, (d) => Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d));\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/difference.js\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === void 0 || smp.h === void 0 || !std.s || !smp.s) return 0;\n\tlet std_h = normalizeHue_default(std.h);\n\tlet smp_h = normalizeHue_default(smp.h);\n\tlet dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === void 0 || smp.h === void 0) return 0;\n\tlet std_h = normalizeHue_default(std.h);\n\tlet smp_h = normalizeHue_default(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) return std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\treturn smp_h - std_h;\n};\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === void 0 || smp.h === void 0 || !std.c || !smp.c) return 0;\n\tlet std_h = normalizeHue_default(std.h);\n\tlet smp_h = normalizeHue_default(smp.h);\n\tlet dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\nconst differenceEuclidean = (mode = \"rgb\", weights = [\n\t1,\n\t1,\n\t1,\n\t0\n]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter_default(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(channels.reduce((sum, k$3, idx) => {\n\t\t\tlet delta = diffs[k$3] ? diffs[k$3](ConvStd, ConvSmp) : ConvStd[k$3] - ConvSmp[k$3];\n\t\t\treturn sum + (weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2);\n\t\t}, 0));\n\t};\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/average.js\nconst averageAngle = (val) => {\n\tlet sum = val.reduce((sum$1, val$1) => {\n\t\tif (val$1 !== void 0) {\n\t\t\tlet rad = val$1 * Math.PI / 180;\n\t\t\tsum$1.sin += Math.sin(rad);\n\t\t\tsum$1.cos += Math.cos(rad);\n\t\t}\n\t\treturn sum$1;\n\t}, {\n\t\tsin: 0,\n\t\tcos: 0\n\t});\n\tlet angle = Math.atan2(sum.sin, sum.cos) * 180 / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/definition.js\nconst definition$25 = {\n\tmode: \"hsl\",\n\ttoMode: { rgb: convertHslToRgb },\n\tfromMode: { rgb: convertRgbToHsl },\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tparse: [parseHsl_default, parseHslLegacy_default],\n\tserialize: (c$1) => `hsl(${c$1.h !== void 0 ? c$1.h : \"none\"} ${c$1.s !== void 0 ? c$1.s * 100 + \"%\" : \"none\"} ${c$1.l !== void 0 ? c$1.l * 100 + \"%\" : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$1 = definition$25;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertHsvToRgb.js\nfunction convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue_default(h !== void 0 ? h : 0);\n\tif (s === void 0) s = 0;\n\tif (v === void 0) v = 0;\n\tlet f$2 = Math.abs(h / 60 % 2 - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: v,\n\t\t\t\tg: v * (1 - s * f$2),\n\t\t\t\tb: v * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s * f$2),\n\t\t\t\tg: v,\n\t\t\t\tb: v * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s),\n\t\t\t\tg: v,\n\t\t\t\tb: v * (1 - s * f$2)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s),\n\t\t\t\tg: v * (1 - s * f$2),\n\t\t\t\tb: v\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s * f$2),\n\t\t\t\tg: v * (1 - s),\n\t\t\t\tb: v\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: v,\n\t\t\t\tg: v * (1 - s),\n\t\t\t\tb: v * (1 - s * f$2)\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: res = {\n\t\t\tr: v * (1 - s),\n\t\t\tg: v * (1 - s),\n\t\t\tb: v * (1 - s)\n\t\t};\n\t}\n\tres.mode = \"rgb\";\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertRgbToHsv.js\nfunction convertRgbToHsv({ r: r$1, g, b, alpha }) {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);\n\tlet res = {\n\t\tmode: \"hsv\",\n\t\ts: M$1 === 0 ? 0 : 1 - m / M$1,\n\t\tv: M$1\n\t};\n\tif (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/definition.js\nconst definition$24 = {\n\tmode: \"hsv\",\n\ttoMode: { rgb: convertHsvToRgb },\n\tparse: [\"--hsv\"],\n\tserialize: \"--hsv\",\n\tfromMode: { rgb: convertRgbToHsv },\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"v\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$19 = definition$24;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertHwbToRgb.js\nfunction convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === void 0) w = 0;\n\tif (b === void 0) b = 0;\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha\n\t});\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertRgbToHwb.js\nfunction convertRgbToHwb(rgba) {\n\tlet hsv$2 = convertRgbToHsv(rgba);\n\tif (hsv$2 === void 0) return void 0;\n\tlet s = hsv$2.s !== void 0 ? hsv$2.s : 0;\n\tlet v = hsv$2.v !== void 0 ? hsv$2.v : 0;\n\tlet res = {\n\t\tmode: \"hwb\",\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv$2.h !== void 0) res.h = hsv$2.h;\n\tif (hsv$2.alpha !== void 0) res.alpha = hsv$2.alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/parseHwb.js\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hwb\") return;\n\tconst res = { mode: \"hwb\" };\n\tconst [, h, w, b, alpha] = parsed;\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) return;\n\t\tres.w = w.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) return;\n\t\tres.b = b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseHwb_default = ParseHwb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/definition.js\nconst definition$23 = {\n\tmode: \"hwb\",\n\ttoMode: { rgb: convertHwbToRgb },\n\tfromMode: { rgb: convertRgbToHwb },\n\tchannels: [\n\t\t\"h\",\n\t\t\"w\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tparse: [parseHwb_default],\n\tserialize: (c$1) => `hwb(${c$1.h !== void 0 ? c$1.h : \"none\"} ${c$1.w !== void 0 ? c$1.w * 100 + \"%\" : \"none\"} ${c$1.b !== void 0 ? c$1.b * 100 + \"%\" : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueNaive },\n\taverage: { h: averageAngle }\n};\nvar definition_default$2 = definition$23;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/constants.js\nconst k = Math.pow(29, 3) / Math.pow(3, 3);\nconst e = Math.pow(6, 3) / Math.pow(29, 3);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/constants.js\nconst D50 = {\n\tX: .3457 / .3585,\n\tY: 1,\n\tZ: .2958 / .3585\n};\nconst D65 = {\n\tX: .3127 / .329,\n\tY: 1,\n\tZ: .3583 / .329\n};\nconst k$2 = Math.pow(29, 3) / Math.pow(3, 3);\nconst e$2 = Math.pow(6, 3) / Math.pow(29, 3);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToXyz50.js\nlet fn$1 = (v) => Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k;\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: fn$1(fx) * D50.X,\n\t\ty: fn$1(fy) * D50.Y,\n\t\tz: fn$1(fz) * D50.Z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLabToXyz50_default = convertLabToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertXyz50ToRgb.js\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = convertLrgbToRgb_default({\n\t\tr: x * 3.1341359569958707 - y * 1.6173863321612538 - .4906619460083532 * z,\n\t\tg: x * -.978795502912089 + y * 1.916254567259524 + .03344273116131949 * z,\n\t\tb: x * .07195537988411677 - y * .2289768264158322 + 1.405386058324125 * z\n\t});\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToRgb_default = convertXyz50ToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToRgb.js\nconst convertLabToRgb = (lab$2) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab$2));\nvar convertLabToRgb_default = convertLabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertRgbToXyz50.js\nconst convertRgbToXyz50 = (rgb$4) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: .436065742824811 * r$1 + .3851514688337912 * g + .14307845442264197 * b,\n\t\ty: .22249319175623702 * r$1 + .7168870538238823 * g + .06061979053616537 * b,\n\t\tz: .013923904500943465 * r$1 + .09708128566574634 * g + .7140993584005155 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToXyz50_default = convertRgbToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertXyz50ToLab.js\nconst f$1 = (value) => value > e ? Math.cbrt(value) : (k * value + 16) / 116;\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet f0 = f$1(x / D50.X);\n\tlet f1 = f$1(y / D50.Y);\n\tlet f2 = f$1(z / D50.Z);\n\tlet res = {\n\t\tmode: \"lab\",\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToLab_default = convertXyz50ToLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertRgbToLab.js\nconst convertRgbToLab = (rgb$4) => {\n\tlet res = convertXyz50ToLab_default(convertRgbToXyz50_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToLab_default = convertRgbToLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/parseLab.js\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lab\") return;\n\tconst res = { mode: \"lab\" };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return;\n\tif (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.value), 100);\n\tif (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * 125 / 100;\n\tif (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * 125 / 100;\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseLab_default = parseLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/definition.js\nconst definition$22 = {\n\tmode: \"lab\",\n\ttoMode: {\n\t\txyz50: convertLabToXyz50_default,\n\t\trgb: convertLabToRgb_default\n\t},\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab_default,\n\t\trgb: convertRgbToLab_default\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"a\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\tparse: [parseLab_default],\n\tserialize: (c$1) => `lab(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.a !== void 0 ? c$1.a : \"none\"} ${c$1.b !== void 0 ? c$1.b : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$3 = definition$22;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/constants.js\nconst k$1 = Math.pow(29, 3) / Math.pow(3, 3);\nconst e$1 = Math.pow(6, 3) / Math.pow(29, 3);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToXyz65.js\nlet fn = (v) => Math.pow(v, 3) > e$1 ? Math.pow(v, 3) : (116 * v - 16) / k$1;\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLab65ToXyz65_default = convertLab65ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToRgb.js\nconst convertLab65ToRgb = (lab$2) => convertXyz65ToRgb_default(convertLab65ToXyz65_default(lab$2));\nvar convertLab65ToRgb_default = convertLab65ToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertXyz65ToLab65.js\nconst f = (value) => value > e$1 ? Math.cbrt(value) : (k$1 * value + 16) / 116;\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\tlet res = {\n\t\tmode: \"lab65\",\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToLab65_default = convertXyz65ToLab65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertRgbToLab65.js\nconst convertRgbToLab65 = (rgb$4) => {\n\tlet res = convertXyz65ToLab65_default(convertRgbToXyz65_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToLab65_default = convertRgbToLab65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/definition.js\nconst definition$21 = {\n\t...definition_default$3,\n\tmode: \"lab65\",\n\tparse: [\"--lab-d65\"],\n\tserialize: \"--lab-d65\",\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65_default,\n\t\trgb: convertLab65ToRgb_default\n\t},\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65_default,\n\t\trgb: convertRgbToLab65_default\n\t},\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\nvar definition_default$4 = definition$21;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLabToLch.js\nconst convertLabToLch = ({ l, a, b, alpha }, mode = \"lch\") => {\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\tc: c$1\n\t};\n\tif (c$1) res.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLabToLch_default = convertLabToLch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLchToLab.js\nconst convertLchToLab = ({ l, c: c$1, h, alpha }, mode = \"lab\") => {\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,\n\t\tb: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLchToLab_default = convertLchToLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/parseLch.js\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lch\") return;\n\tconst res = { mode: \"lch\" };\n\tconst [, l, c$1, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return;\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * 150 / 100);\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseLch_default = parseLch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/definition.js\nconst definition$20 = {\n\tmode: \"lch\",\n\ttoMode: {\n\t\tlab: convertLchToLab_default,\n\t\trgb: (c$1) => convertLabToRgb_default(convertLchToLab_default(c$1))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertLabToLch_default(convertRgbToLab_default(c$1)),\n\t\tlab: convertLabToLch_default\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\tparse: [parseLch_default],\n\tserialize: (c$1) => `lch(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.c !== void 0 ? c$1.c : \"none\"} ${c$1.h !== void 0 ? c$1.h : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$5 = definition$20;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch65/definition.js\nconst definition$19 = {\n\t...definition_default$5,\n\tmode: \"lch65\",\n\tparse: [\"--lch-d65\"],\n\tserialize: \"--lch-d65\",\n\ttoMode: {\n\t\tlab65: (c$1) => convertLchToLab_default(c$1, \"lab65\"),\n\t\trgb: (c$1) => convertLab65ToRgb_default(convertLchToLab_default(c$1, \"lab65\"))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertLabToLch_default(convertRgbToLab65_default(c$1), \"lch65\"),\n\t\tlab65: (c$1) => convertLabToLch_default(c$1, \"lch65\")\n\t},\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\nvar definition_default$23 = definition$19;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/definition.js\nconst definition$18 = {\n\t...definition_default$12,\n\tmode: \"lrgb\",\n\ttoMode: { rgb: convertLrgbToRgb_default },\n\tfromMode: { rgb: convertRgbToLrgb_default },\n\tparse: [\"srgb-linear\"],\n\tserialize: \"srgb-linear\"\n};\nvar definition_default$6 = definition$18;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToLrgb.js\nconst convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet L = Math.pow(l + .3963377773761749 * a + .2158037573099136 * b, 3);\n\tlet M$1 = Math.pow(l - .1055613458156586 * a - .0638541728258133 * b, 3);\n\tlet S = Math.pow(l - .0894841775298119 * a - 1.2914855480194092 * b, 3);\n\tlet res = {\n\t\tmode: \"lrgb\",\n\t\tr: 4.076741636075957 * L - 3.3077115392580616 * M$1 + .2309699031821044 * S,\n\t\tg: -1.2684379732850317 * L + 2.6097573492876887 * M$1 - .3413193760026573 * S,\n\t\tb: -.0041960761386756 * L - .7034186179359362 * M$1 + 1.7076146940746117 * S\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertOklabToLrgb_default = convertOklabToLrgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertLrgbToOklab.js\nconst convertLrgbToOklab = ({ r: r$1, g, b, alpha }) => {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet L = Math.cbrt(.412221469470763 * r$1 + .5363325372617348 * g + .0514459932675022 * b);\n\tlet M$1 = Math.cbrt(.2119034958178252 * r$1 + .6806995506452344 * g + .1073969535369406 * b);\n\tlet S = Math.cbrt(.0883024591900564 * r$1 + .2817188391361215 * g + .6299787016738222 * b);\n\tlet res = {\n\t\tmode: \"oklab\",\n\t\tl: .210454268309314 * L + .7936177747023054 * M$1 - .0040720430116193 * S,\n\t\ta: 1.9779985324311684 * L - 2.42859224204858 * M$1 + .450593709617411 * S,\n\t\tb: .0259040424655478 * L + .7827717124575296 * M$1 - .8086757549230774 * S\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLrgbToOklab_default = convertLrgbToOklab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertRgbToOklab.js\nconst convertRgbToOklab = (rgb$4) => {\n\tlet res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToOklab_default = convertRgbToOklab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToRgb.js\nconst convertOklabToRgb = (c$1) => convertLrgbToRgb_default(convertOklabToLrgb_default(c$1));\nvar convertOklabToRgb_default = convertOklabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/parseOklab.js\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklab\") return;\n\tconst res = { mode: \"oklab\" };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return;\n\tif (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);\n\tif (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * .4 / 100;\n\tif (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * .4 / 100;\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseOklab_default = parseOklab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/definition.js\nconst definition$17 = {\n\t...definition_default$3,\n\tmode: \"oklab\",\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb_default,\n\t\trgb: convertOklabToRgb_default\n\t},\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab_default,\n\t\trgb: convertRgbToOklab_default\n\t},\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-.4, .4],\n\t\tb: [-.4, .4]\n\t},\n\tparse: [parseOklab_default],\n\tserialize: (c$1) => `oklab(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.a !== void 0 ? c$1.a : \"none\"} ${c$1.b !== void 0 ? c$1.b : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`\n};\nvar definition_default$7 = definition$17;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/parseOklch.js\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklch\") return;\n\tconst res = { mode: \"oklch\" };\n\tconst [, l, c$1, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return;\n\t\tres.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);\n\t}\n\tif (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * .4 / 100);\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseOklch_default = parseOklch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/definition.js\nconst definition$16 = {\n\t...definition_default$5,\n\tmode: \"oklch\",\n\ttoMode: {\n\t\toklab: (c$1) => convertLchToLab_default(c$1, \"oklab\"),\n\t\trgb: (c$1) => convertOklabToRgb_default(convertLchToLab_default(c$1, \"oklab\"))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertLabToLch_default(convertRgbToOklab_default(c$1), \"oklch\"),\n\t\toklab: (c$1) => convertLabToLch_default(c$1, \"oklch\")\n\t},\n\tparse: [parseOklch_default],\n\tserialize: (c$1) => `oklch(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.c !== void 0 ? c$1.c : \"none\"} ${c$1.h !== void 0 ? c$1.h : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, .4],\n\t\th: [0, 360]\n\t}\n};\nvar definition_default$8 = definition$16;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertP3ToXyz65.js\nconst convertP3ToXyz65 = (rgb$4) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .486570948648216 * r$1 + .265667693169093 * g + .1982172852343625 * b,\n\t\ty: .2289745640697487 * r$1 + .6917385218365062 * g + .079286914093745 * b,\n\t\tz: 0 * r$1 + .0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertP3ToXyz65_default = convertP3ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertXyz65ToP3.js\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = convertLrgbToRgb_default({\n\t\tr: x * 2.4934969119414263 - y * .9313836179191242 - .402710784450717 * z,\n\t\tg: x * -.8294889695615749 + y * 1.7626640603183465 + .0236246858419436 * z,\n\t\tb: x * .0358458302437845 - y * .0761723892680418 + .9568845240076871 * z\n\t}, \"p3\");\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToP3_default = convertXyz65ToP3;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/definition.js\nconst definition$15 = {\n\t...definition_default$12,\n\tmode: \"p3\",\n\tparse: [\"display-p3\"],\n\tserialize: \"display-p3\",\n\tfromMode: {\n\t\trgb: (color) => convertXyz65ToP3_default(convertRgbToXyz65_default(color)),\n\t\txyz65: convertXyz65ToP3_default\n\t},\n\ttoMode: {\n\t\trgb: (color) => convertXyz65ToRgb_default(convertP3ToXyz65_default(color)),\n\t\txyz65: convertP3ToXyz65_default\n\t}\n};\nvar definition_default$9 = definition$15;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js\nconst gamma$1 = (v) => {\n\tlet abs$1 = Math.abs(v);\n\tif (abs$1 >= 1 / 512) return Math.sign(v) * Math.pow(abs$1, 1 / 1.8);\n\treturn 16 * v;\n};\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"prophoto\",\n\t\tr: gamma$1(x * 1.3457868816471585 - y * .2555720873797946 - .0511018649755453 * z),\n\t\tg: gamma$1(x * -.5446307051249019 + y * 1.5082477428451466 + .0205274474364214 * z),\n\t\tb: gamma$1(x * 0 + y * 0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToProphoto_default = convertXyz50ToProphoto;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertProphotoToXyz50.js\nconst linearize$1 = (v = 0) => {\n\tlet abs$1 = Math.abs(v);\n\tif (abs$1 >= 16 / 512) return Math.sign(v) * Math.pow(abs$1, 1.8);\n\treturn v / 16;\n};\nconst convertProphotoToXyz50 = (prophoto$2) => {\n\tlet r$1 = linearize$1(prophoto$2.r);\n\tlet g = linearize$1(prophoto$2.g);\n\tlet b = linearize$1(prophoto$2.b);\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: .7977666449006423 * r$1 + .1351812974005331 * g + .0313477341283922 * b,\n\t\ty: .2880748288194013 * r$1 + .7118352342418731 * g + 899369387256e-16 * b,\n\t\tz: 0 * r$1 + 0 * g + .8251046025104602 * b\n\t};\n\tif (prophoto$2.alpha !== void 0) res.alpha = prophoto$2.alpha;\n\treturn res;\n};\nvar convertProphotoToXyz50_default = convertProphotoToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/definition.js\nconst definition$14 = {\n\t...definition_default$12,\n\tmode: \"prophoto\",\n\tparse: [\"prophoto-rgb\"],\n\tserialize: \"prophoto-rgb\",\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto_default,\n\t\trgb: (color) => convertXyz50ToProphoto_default(convertRgbToXyz50_default(color))\n\t},\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50_default,\n\t\trgb: (color) => convertXyz50ToRgb_default(convertProphotoToXyz50_default(color))\n\t}\n};\nvar definition_default$10 = definition$14;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js\nconst α$1 = 1.09929682680944;\nconst β$1 = .018053968510807;\nconst gamma = (v) => {\n\tconst abs$1 = Math.abs(v);\n\tif (abs$1 > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs$1, .45) - (α$1 - 1));\n\treturn 4.5 * v;\n};\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"rec2020\",\n\t\tr: gamma(x * 1.7166511879712683 - y * .3556707837763925 - .2533662813736599 * z),\n\t\tg: gamma(x * -.6666843518324893 + y * 1.6164812366349395 + .0157685458139111 * z),\n\t\tb: gamma(x * .0176398574453108 - y * .0427706132578085 + .9421031212354739 * z)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToRec2020_default = convertXyz65ToRec2020;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js\nconst α = 1.09929682680944;\nconst β = .018053968510807;\nconst linearize = (v = 0) => {\n\tlet abs$1 = Math.abs(v);\n\tif (abs$1 < β * 4.5) return v / 4.5;\n\treturn (Math.sign(v) || 1) * Math.pow((abs$1 + α - 1) / α, 1 / .45);\n};\nconst convertRec2020ToXyz65 = (rec2020$2) => {\n\tlet r$1 = linearize(rec2020$2.r);\n\tlet g = linearize(rec2020$2.g);\n\tlet b = linearize(rec2020$2.b);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .6369580483012911 * r$1 + .1446169035862083 * g + .1688809751641721 * b,\n\t\ty: .262700212011267 * r$1 + .6779980715188708 * g + .059301716469862 * b,\n\t\tz: 0 * r$1 + .0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020$2.alpha !== void 0) res.alpha = rec2020$2.alpha;\n\treturn res;\n};\nvar convertRec2020ToXyz65_default = convertRec2020ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/definition.js\nconst definition$13 = {\n\t...definition_default$12,\n\tmode: \"rec2020\",\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020_default,\n\t\trgb: (color) => convertXyz65ToRec2020_default(convertRgbToXyz65_default(color))\n\t},\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65_default,\n\t\trgb: (color) => convertXyz65ToRgb_default(convertRec2020ToXyz65_default(color))\n\t},\n\tparse: [\"rec2020\"],\n\tserialize: \"rec2020\"\n};\nvar definition_default$11 = definition$13;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/definition.js\nconst definition$12 = {\n\tmode: \"xyz50\",\n\tparse: [\"xyz-d50\"],\n\tserialize: \"xyz-d50\",\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb_default,\n\t\tlab: convertXyz50ToLab_default\n\t},\n\tfromMode: {\n\t\trgb: convertRgbToXyz50_default,\n\t\tlab: convertLabToXyz50_default\n\t},\n\tchannels: [\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"z\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tx: [0, .964],\n\t\ty: [0, .999],\n\t\tz: [0, .825]\n\t},\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$13 = definition$12;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js\nconst convertXyz65ToXyz50 = (xyz65$2) => {\n\tlet { x, y, z, alpha } = xyz65$2;\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: 1.0479298208405488 * x + .0229467933410191 * y - .0501922295431356 * z,\n\t\ty: .0296278156881593 * x + .990434484573249 * y - .0170738250293851 * z,\n\t\tz: -.0092430581525912 * x + .0150551448965779 * y + .7518742899580008 * z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToXyz50_default = convertXyz65ToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js\nconst convertXyz50ToXyz65 = (xyz50$2) => {\n\tlet { x, y, z, alpha } = xyz50$2;\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .9554734527042182 * x - .0230985368742614 * y + .0632593086610217 * z,\n\t\ty: -.0283697069632081 * x + 1.0099954580058226 * y + .021041398966943 * z,\n\t\tz: .0123140016883199 * x - .0205076964334779 * y + 1.3303659366080753 * z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToXyz65_default = convertXyz50ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/definition.js\nconst definition$11 = {\n\tmode: \"xyz65\",\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb_default,\n\t\txyz50: convertXyz65ToXyz50_default\n\t},\n\tfromMode: {\n\t\trgb: convertRgbToXyz65_default,\n\t\txyz50: convertXyz50ToXyz65_default\n\t},\n\tranges: {\n\t\tx: [0, .95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\tchannels: [\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"z\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"xyz\", \"xyz-d65\"],\n\tserialize: \"xyz-d65\",\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$14 = definition$11;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/bootstrap/css.js\nconst a98$1 = useMode(definition_default);\nconst hsl$2 = useMode(definition_default$1);\nconst hsv$1 = useMode(definition_default$19);\nconst hwb$1 = useMode(definition_default$2);\nconst lab$1 = useMode(definition_default$3);\nconst lab65$1 = useMode(definition_default$4);\nconst lch$1 = useMode(definition_default$5);\nconst lch65$1 = useMode(definition_default$23);\nconst lrgb$1 = useMode(definition_default$6);\nconst oklab$1 = useMode(definition_default$7);\nconst oklch$1 = useMode(definition_default$8);\nconst p3$1 = useMode(definition_default$9);\nconst prophoto$1 = useMode(definition_default$10);\nconst rec2020$1 = useMode(definition_default$11);\nconst rgb$3 = useMode(definition_default$12);\nconst xyz50$1 = useMode(definition_default$13);\nconst xyz65$1 = useMode(definition_default$14);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/constants.js\nconst M = [\n\t-.14861,\n\t1.78277,\n\t-.29227,\n\t-.90649,\n\t1.97294,\n\t0\n];\nconst degToRad = Math.PI / 180;\nconst radToDeg = 180 / Math.PI;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertRgbToCubehelix.js\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\nconst convertRgbToCubehelix = ({ r: r$1, g, b, alpha }) => {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet l = (BCAD * b + r$1 * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\tlet res = {\n\t\tmode: \"cubehelix\",\n\t\tl,\n\t\ts: l === 0 || l === 1 ? void 0 : Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToCubehelix_default = convertRgbToCubehelix;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertCubehelixToRgb.js\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: \"rgb\" };\n\th = (h === void 0 ? 0 : h + 120) * degToRad;\n\tif (l === void 0) l = 0;\n\tlet amp = s === void 0 ? 0 : s * l * (1 - l);\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertCubehelixToRgb_default = convertCubehelixToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/definition.js\nconst definition$10 = {\n\tmode: \"cubehelix\",\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--cubehelix\"],\n\tserialize: \"--cubehelix\",\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\tfromMode: { rgb: convertRgbToCubehelix_default },\n\ttoMode: { rgb: convertCubehelixToRgb_default },\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$15 = definition$10;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/constants.js\nconst kE = 1;\nconst kCH = 1;\nconst θ = 26 / 180 * Math.PI;\nconst cosθ = Math.cos(θ);\nconst sinθ = Math.sin(θ);\nconst factor = 100 / Math.log(139 / 100);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertDlchToLab65.js\nconst convertDlchToLab65 = ({ l, c: c$1, h, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (c$1 === void 0) c$1 = 0;\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode: \"lab65\",\n\t\tl: (Math.exp(l * kE / factor) - 1) / .0039\n\t};\n\tlet G = (Math.exp(.0435 * c$1 * kCH * kE) - 1) / .075;\n\tlet e$3 = G * Math.cos(h / 180 * Math.PI - θ);\n\tlet f$2 = G * Math.sin(h / 180 * Math.PI - θ);\n\tres.a = e$3 * cosθ - f$2 / .83 * sinθ;\n\tres.b = e$3 * sinθ + f$2 / .83 * cosθ;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertDlchToLab65_default = convertDlchToLab65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertLab65ToDlch.js\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet e$3 = a * cosθ + b * sinθ;\n\tlet f$2 = .83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e$3 * e$3 + f$2 * f$2);\n\tlet res = {\n\t\tmode: \"dlch\",\n\t\tl: factor / kE * Math.log(1 + .0039 * l),\n\t\tc: Math.log(1 + .075 * G) / (.0435 * kCH * kE)\n\t};\n\tif (res.c) res.h = normalizeHue_default((Math.atan2(f$2, e$3) + θ) / Math.PI * 180);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLab65ToDlch_default = convertLab65ToDlch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlab/definition.js\nconst convertDlabToLab65 = (c$1) => convertDlchToLab65_default(convertLabToLch_default(c$1, \"dlch\"));\nconst convertLab65ToDlab = (c$1) => convertLchToLab_default(convertLab65ToDlch_default(c$1), \"dlab\");\nconst definition$9 = {\n\tmode: \"dlab\",\n\tparse: [\"--din99o-lab\"],\n\tserialize: \"--din99o-lab\",\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: (c$1) => convertLab65ToRgb_default(convertDlabToLab65(c$1))\n\t},\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: (c$1) => convertLab65ToDlab(convertRgbToLab65_default(c$1))\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"a\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$16 = definition$9;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/definition.js\nconst definition$8 = {\n\tmode: \"dlch\",\n\tparse: [\"--din99o-lch\"],\n\tserialize: \"--din99o-lch\",\n\ttoMode: {\n\t\tlab65: convertDlchToLab65_default,\n\t\tdlab: (c$1) => convertLchToLab_default(c$1, \"dlab\"),\n\t\trgb: (c$1) => convertLab65ToRgb_default(convertDlchToLab65_default(c$1))\n\t},\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch_default,\n\t\tdlab: (c$1) => convertLabToLch_default(c$1, \"dlch\"),\n\t\trgb: (c$1) => convertLab65ToDlch_default(convertRgbToLab65_default(c$1))\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$17 = definition$8;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertHsiToRgb.js\nfunction convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue_default(h !== void 0 ? h : 0);\n\tif (s === void 0) s = 0;\n\tif (i === void 0) i = 0;\n\tlet f$2 = Math.abs(h / 60 % 2 - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: res = {\n\t\t\tr: i * (1 - s),\n\t\t\tg: i * (1 - s),\n\t\t\tb: i * (1 - s)\n\t\t};\n\t}\n\tres.mode = \"rgb\";\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertRgbToHsi.js\nfunction convertRgbToHsi({ r: r$1, g, b, alpha }) {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);\n\tlet res = {\n\t\tmode: \"hsi\",\n\t\ts: r$1 + g + b === 0 ? 0 : 1 - 3 * m / (r$1 + g + b),\n\t\ti: (r$1 + g + b) / 3\n\t};\n\tif (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/definition.js\nconst definition$7 = {\n\tmode: \"hsi\",\n\ttoMode: { rgb: convertHsiToRgb },\n\tparse: [\"--hsi\"],\n\tserialize: \"--hsi\",\n\tfromMode: { rgb: convertRgbToHsi },\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"i\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$18 = definition$7;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/constants.js\nconst YW = 203;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/transfer.js\nconst M1 = .1593017578125;\nconst M2 = 78.84375;\nconst C1 = .8359375;\nconst C2 = 18.8515625;\nconst C3 = 18.6875;\nfunction transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c$1 = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c$1 - C1) / (C2 - C3 * c$1), 1 / M1);\n}\nfunction transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c$1 = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c$1) / (1 + C3 * c$1), M2);\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertItpToXyz65.js\nconst toRel = (c$1) => Math.max(c$1 / YW, 0);\nconst convertItpToXyz65 = ({ i, t, p: p$2, alpha }) => {\n\tif (i === void 0) i = 0;\n\tif (t === void 0) t = 0;\n\tif (p$2 === void 0) p$2 = 0;\n\tconst l = transferPqDecode(i + .008609037037932761 * t + .11102962500302593 * p$2);\n\tconst m = transferPqDecode(i - .00860903703793275 * t - .11102962500302599 * p$2);\n\tconst s = transferPqDecode(i + .5600313357106791 * t - .32062717498731885 * p$2);\n\tconst res = {\n\t\tmode: \"xyz65\",\n\t\tx: toRel(2.070152218389422 * l - 1.3263473389671556 * m + .2066510476294051 * s),\n\t\ty: toRel(.3647385209748074 * l + .680566024947227 * m - .0453045459220346 * s),\n\t\tz: toRel(-.049747207535812 * l - .0492609666966138 * m + 1.1880659249923042 * s)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertItpToXyz65_default = convertItpToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertXyz65ToItp.js\nconst toAbs = (c$1 = 0) => Math.max(c$1 * YW, 0);\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(.3592832590121217 * absX + .6976051147779502 * absY - .0358915932320289 * absZ);\n\tconst m = transferPqEncode(-.1920808463704995 * absX + 1.1004767970374323 * absY + .0753748658519118 * absZ);\n\tconst s = transferPqEncode(.0070797844607477 * absX + .0748396662186366 * absY + .8433265453898765 * absZ);\n\tconst i = .5 * l + .5 * m;\n\tconst t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;\n\tconst p$2 = 4.378173828125 * l - 4.24560546875 * m - .132568359375 * s;\n\tconst res = {\n\t\tmode: \"itp\",\n\t\ti,\n\t\tt,\n\t\tp: p$2\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToItp_default = convertXyz65ToItp;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/definition.js\nconst definition$6 = {\n\tmode: \"itp\",\n\tchannels: [\n\t\t\"i\",\n\t\t\"t\",\n\t\t\"p\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--ictcp\"],\n\tserialize: \"--ictcp\",\n\ttoMode: {\n\t\txyz65: convertItpToXyz65_default,\n\t\trgb: (color) => convertXyz65ToRgb_default(convertItpToXyz65_default(color))\n\t},\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp_default,\n\t\trgb: (color) => convertXyz65ToItp_default(convertRgbToXyz65_default(color))\n\t},\n\tranges: {\n\t\ti: [0, .581],\n\t\tt: [-.369, .272],\n\t\tp: [-.164, .331]\n\t},\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$20 = definition$6;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertXyz65ToJab.js\nconst p$1 = 134.03437499999998;\nconst d0$1 = 16295499532821565e-27;\nconst jabPqEncode = (v) => {\n\tif (v < 0) return 0;\n\tlet vn$2 = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * vn$2) / (1 + C3 * vn$2), p$1);\n};\nconst abs = (v = 0) => Math.max(v * 203, 0);\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\tlet xp = 1.15 * x - .15 * z;\n\tlet yp = .66 * y + .34 * x;\n\tlet l = jabPqEncode(.41478972 * xp + .579999 * yp + .014648 * z);\n\tlet m = jabPqEncode(-.20151 * xp + 1.120649 * yp + .0531008 * z);\n\tlet s = jabPqEncode(-.0166008 * xp + .2648 * yp + .6684799 * z);\n\tlet i = (l + m) / 2;\n\tlet res = {\n\t\tmode: \"jab\",\n\t\tj: .44 * i / (1 - .56 * i) - d0$1,\n\t\ta: 3.524 * l - 4.066708 * m + .542708 * s,\n\t\tb: .199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToJab_default = convertXyz65ToJab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToXyz65.js\nconst p = 134.03437499999998;\nconst d0 = 16295499532821565e-27;\nconst jabPqDecode = (v) => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 1e4 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / M1);\n};\nconst rel = (v) => v / 203;\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === void 0) j = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet i = (j + d0) / (.44 + .56 * (j + d0));\n\tlet l = jabPqDecode(i + .13860504 * a + .058047316 * b);\n\tlet m = jabPqDecode(i - .13860504 * a - .058047316 * b);\n\tlet s = jabPqDecode(i - .096019242 * a - .8118919 * b);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: rel(1.661373024652174 * l - .914523081304348 * m + .23136208173913045 * s),\n\t\ty: rel(-.3250758611844533 * l + 1.571847026732543 * m - .21825383453227928 * s),\n\t\tz: rel(-.090982811 * l - .31272829 * m + 1.5227666 * s)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertJabToXyz65_default = convertJabToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertRgbToJab.js\nconst convertRgbToJab = (rgb$4) => {\n\tlet res = convertXyz65ToJab_default(convertRgbToXyz65_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToJab_default = convertRgbToJab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToRgb.js\nconst convertJabToRgb = (color) => convertXyz65ToRgb_default(convertJabToXyz65_default(color));\nvar convertJabToRgb_default = convertJabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/definition.js\nconst definition$5 = {\n\tmode: \"jab\",\n\tchannels: [\n\t\t\"j\",\n\t\t\"a\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--jzazbz\"],\n\tserialize: \"--jzazbz\",\n\tfromMode: {\n\t\trgb: convertRgbToJab_default,\n\t\txyz65: convertXyz65ToJab_default\n\t},\n\ttoMode: {\n\t\trgb: convertJabToRgb_default,\n\t\txyz65: convertJabToXyz65_default\n\t},\n\tranges: {\n\t\tj: [0, .222],\n\t\ta: [-.109, .129],\n\t\tb: [-.185, .134]\n\t},\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$21 = definition$5;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJabToJch.js\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: \"jch\",\n\t\tj,\n\t\tc: c$1\n\t};\n\tif (c$1) res.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertJabToJch_default = convertJabToJch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJchToJab.js\nconst convertJchToJab = ({ j, c: c$1, h, alpha }) => {\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode: \"jab\",\n\t\tj,\n\t\ta: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,\n\t\tb: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertJchToJab_default = convertJchToJab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/definition.js\nconst definition$4 = {\n\tmode: \"jch\",\n\tparse: [\"--jzczhz\"],\n\tserialize: \"--jzczhz\",\n\ttoMode: {\n\t\tjab: convertJchToJab_default,\n\t\trgb: (c$1) => convertJabToRgb_default(convertJchToJab_default(c$1))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertJabToJch_default(convertRgbToJab_default(c$1)),\n\t\tjab: convertJabToJch_default\n\t},\n\tchannels: [\n\t\t\"j\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tj: [0, .221],\n\t\tc: [0, .19],\n\t\th: [0, 360]\n\t},\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$22 = definition$4;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLuvToLchuv.js\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === void 0) u = 0;\n\tif (v === void 0) v = 0;\n\tlet c$1 = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: \"lchuv\",\n\t\tl,\n\t\tc: c$1\n\t};\n\tif (c$1) res.h = normalizeHue_default(Math.atan2(v, u) * 180 / Math.PI);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLuvToLchuv_default = convertLuvToLchuv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLchuvToLuv.js\nconst convertLchuvToLuv = ({ l, c: c$1, h, alpha }) => {\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode: \"luv\",\n\t\tl,\n\t\tu: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,\n\t\tv: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLchuvToLuv_default = convertLchuvToLuv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertXyz50ToLuv.js\nconst u_fn$1 = (x, y, z) => 4 * x / (x + 15 * y + 3 * z);\nconst v_fn$1 = (x, y, z) => 9 * y / (x + 15 * y + 3 * z);\nconst un$1 = u_fn$1(D50.X, D50.Y, D50.Z);\nconst vn$1 = v_fn$1(D50.X, D50.Y, D50.Z);\nconst l_fn = (value) => value <= e ? k * value : 116 * Math.cbrt(value) - 16;\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn$1(x, y, z);\n\tlet v = v_fn$1(x, y, z);\n\tif (!isFinite(u) || !isFinite(v)) l = u = v = 0;\n\telse {\n\t\tu = 13 * l * (u - un$1);\n\t\tv = 13 * l * (v - vn$1);\n\t}\n\tlet res = {\n\t\tmode: \"luv\",\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToLuv_default = convertXyz50ToLuv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertLuvToXyz50.js\nconst u_fn = (x, y, z) => 4 * x / (x + 15 * y + 3 * z);\nconst v_fn = (x, y, z) => 9 * y / (x + 15 * y + 3 * z);\nconst un = u_fn(D50.X, D50.Y, D50.Z);\nconst vn = v_fn(D50.X, D50.Y, D50.Z);\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (l === 0) return {\n\t\tmode: \"xyz50\",\n\t\tx: 0,\n\t\ty: 0,\n\t\tz: 0\n\t};\n\tif (u === void 0) u = 0;\n\tif (v === void 0) v = 0;\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet x = y * (9 * up) / (4 * vp);\n\tlet z = y * (12 - 3 * up - 20 * vp) / (4 * vp);\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx,\n\t\ty,\n\t\tz\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLuvToXyz50_default = convertLuvToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/definition.js\nconst convertRgbToLchuv = (rgb$4) => convertLuvToLchuv_default(convertXyz50ToLuv_default(convertRgbToXyz50_default(rgb$4)));\nconst convertLchuvToRgb = (lchuv$1) => convertXyz50ToRgb_default(convertLuvToXyz50_default(convertLchuvToLuv_default(lchuv$1)));\nconst definition$3 = {\n\tmode: \"lchuv\",\n\ttoMode: {\n\t\tluv: convertLchuvToLuv_default,\n\t\trgb: convertLchuvToRgb\n\t},\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv_default\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--lchuv\"],\n\tserialize: \"--lchuv\",\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$24 = definition$3;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/definition.js\nconst definition$2 = {\n\tmode: \"luv\",\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50_default,\n\t\trgb: (luv$1) => convertXyz50ToRgb_default(convertLuvToXyz50_default(luv$1))\n\t},\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv_default,\n\t\trgb: (rgb$4) => convertXyz50ToLuv_default(convertRgbToXyz50_default(rgb$4))\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"u\",\n\t\t\"v\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--luv\"],\n\tserialize: \"--luv\",\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$25 = definition$2;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/helpers.js\nfunction toe(x) {\n\tconst k_1 = .206;\n\tconst k_2 = .03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn .5 * (k_3 * x - k_1 + Math.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x));\n}\nfunction toe_inv(x) {\n\tconst k_1 = .206;\n\tconst k_2 = .03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\nfunction compute_max_saturation(a, b) {\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\tif (-1.88170328 * a - .80936493 * b > 1) {\n\t\tk0 = 1.19086277;\n\t\tk1 = 1.76576728;\n\t\tk2 = .59662641;\n\t\tk3 = .75515197;\n\t\tk4 = .56771245;\n\t\twl = 4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = .2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\tk0 = .73956515;\n\t\tk1 = -.45954404;\n\t\tk2 = .08285427;\n\t\tk3 = .1254107;\n\t\tk4 = .14503204;\n\t\twl = -1.2684380046;\n\t\twm = 2.6097574011;\n\t\tws = -.3413193965;\n\t} else {\n\t\tk0 = 1.35733652;\n\t\tk1 = -.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -.50559606;\n\t\tk4 = .00692167;\n\t\twl = -.0041960863;\n\t\twm = -.7034186147;\n\t\tws = 1.707614701;\n\t}\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\tlet k_l = .3963377774 * a + .2158037573 * b;\n\tlet k_m = -.1055613458 * a - .0638541728 * b;\n\tlet k_s = -.0894841775 * a - 1.291485548 * b;\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\t\tlet f$2 = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\t\tS = S - f$2 * f1 / (f1 * f1 - .5 * f$2 * f2);\n\t}\n\treturn S;\n}\nfunction find_cusp(a, b) {\n\tlet S_cusp = compute_max_saturation(a, b);\n\tlet rgb$4 = convertOklabToLrgb_default({\n\t\tl: 1,\n\t\ta: S_cusp * a,\n\t\tb: S_cusp * b\n\t});\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb$4.r, rgb$4.g, rgb$4.b));\n\tlet C_cusp = L_cusp * S_cusp;\n\treturn [L_cusp, C_cusp];\n}\nfunction find_gamut_intersection(a, b, L1, C1$1, L0, cusp = null) {\n\tif (!cusp) cusp = find_cusp(a, b);\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1$1 <= 0) t = cusp[1] * L0 / (C1$1 * cusp[0] + cusp[1] * (L0 - L1));\n\telse {\n\t\tt = cusp[1] * (L0 - 1) / (C1$1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1$1;\n\t\t\tlet k_l = .3963377774 * a + .2158037573 * b;\n\t\t\tlet k_m = -.1055613458 * a - .0638541728 * b;\n\t\t\tlet k_s = -.0894841775 * a - 1.291485548 * b;\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1$1;\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\t\t\t\tlet r$1 = 4.0767416621 * l - 3.3077115913 * m + .2309699292 * s - 1;\n\t\t\t\tlet r1 = 4.0767416621 * ldt - 3.3077115913 * mdt + .2309699292 * sdt;\n\t\t\t\tlet r2 = 4.0767416621 * ldt2 - 3.3077115913 * mdt2 + .2309699292 * sdt2;\n\t\t\t\tlet u_r = r1 / (r1 * r1 - .5 * r$1 * r2);\n\t\t\t\tlet t_r = -r$1 * u_r;\n\t\t\t\tlet g = -1.2684380046 * l + 2.6097574011 * m - .3413193965 * s - 1;\n\t\t\t\tlet g1 = -1.2684380046 * ldt + 2.6097574011 * mdt - .3413193965 * sdt;\n\t\t\t\tlet g2 = -1.2684380046 * ldt2 + 2.6097574011 * mdt2 - .3413193965 * sdt2;\n\t\t\t\tlet u_g = g1 / (g1 * g1 - .5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\t\t\t\tlet b$1 = -.0041960863 * l - .7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 = -.0041960863 * ldt - .7034186147 * mdt + 1.707614701 * sdt;\n\t\t\t\tlet b2 = -.0041960863 * ldt2 - .7034186147 * mdt2 + 1.707614701 * sdt2;\n\t\t\t\tlet u_b = b1 / (b1 * b1 - .5 * b$1 * b2);\n\t\t\t\tlet t_b = -b$1 * u_b;\n\t\t\t\tt_r = u_r >= 0 ? t_r : 1e6;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 1e6;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 1e6;\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\treturn t;\n}\nfunction get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) cusp = find_cusp(a_, b_);\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\nfunction get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\tlet S_mid = .11516993 + 1 / (7.4477897 + 4.1590124 * b_ + a_ * (-2.19557347 + 1.75198401 * b_ + a_ * (-2.13704948 - 10.02301043 * b_ + a_ * (-4.24894561 + 5.38770819 * b_ + 4.69891013 * a_))));\n\tlet T_mid = .11239642 + 1 / (1.6132032 - .68124379 * b_ + a_ * (.40370612 + .90148123 * b_ + a_ * (-.27087943 + .6122399 * b_ + a_ * (.00299215 - .45399568 * b_ - .14661872 * a_))));\n\tlet k$3 = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid = .9 * k$3 * Math.sqrt(Math.sqrt(1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))));\n\tC_a = L * .4;\n\tC_b = (1 - L) * .8;\n\treturn [\n\t\tMath.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b))),\n\t\tC_mid,\n\t\tC_max\n\t];\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOklabToOkhsl.js\nfunction convertOklabToOkhsl(lab$2) {\n\tconst l = lab$2.l !== void 0 ? lab$2.l : 0;\n\tconst a = lab$2.a !== void 0 ? lab$2.a : 0;\n\tconst b = lab$2.b !== void 0 ? lab$2.b : 0;\n\tconst ret = {\n\t\tmode: \"okhsl\",\n\t\tl: toe(l)\n\t};\n\tif (lab$2.alpha !== void 0) ret.alpha = lab$2.alpha;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tif (!c$1) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c$1, b / c$1);\n\tlet s;\n\tif (c$1 < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = .8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\ts = (c$1 - k_0) / (k_1 + k_2 * (c$1 - k_0)) * .8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = .2 * C_mid * C_mid * 1.25 * 1.25 / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\ts = .8 + .2 * ((c$1 - k_0) / (k_1 + k_2 * (c$1 - k_0)));\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\t}\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOkhslToOklab.js\nfunction convertOkhslToOklab(hsl$3) {\n\tlet h = hsl$3.h !== void 0 ? hsl$3.h : 0;\n\tlet s = hsl$3.s !== void 0 ? hsl$3.s : 0;\n\tlet l = hsl$3.l !== void 0 ? hsl$3.l : 0;\n\tconst ret = {\n\t\tmode: \"oklab\",\n\t\tl: toe_inv(l)\n\t};\n\tif (hsl$3.alpha !== void 0) ret.alpha = hsl$3.alpha;\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\tlet a_ = Math.cos(h / 180 * Math.PI);\n\tlet b_ = Math.sin(h / 180 * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < .8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = .8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - .8);\n\t\tk_0 = C_mid;\n\t\tk_1 = .2 * C_mid * C_mid * 1.25 * 1.25 / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + t * k_1 / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/modeOkhsl.js\nconst modeOkhsl = {\n\t...definition_default$1,\n\tmode: \"okhsl\",\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--okhsl\"],\n\tserialize: \"--okhsl\",\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: (c$1) => convertOklabToOkhsl(convertRgbToOklab_default(c$1))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: (c$1) => convertOklabToRgb_default(convertOkhslToOklab(c$1))\n\t}\n};\nvar modeOkhsl_default = modeOkhsl;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOklabToOkhsv.js\nfunction convertOklabToOkhsv(lab$2) {\n\tlet l = lab$2.l !== void 0 ? lab$2.l : 0;\n\tlet a = lab$2.a !== void 0 ? lab$2.a : 0;\n\tlet b = lab$2.b !== void 0 ? lab$2.b : 0;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tlet a_ = c$1 ? a / c$1 : 1;\n\tlet b_ = c$1 ? b / c$1 : 1;\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = .5;\n\tlet k$3 = 1 - S_0 / S_max;\n\tlet t = T / (c$1 + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c$1;\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = C_v * L_vt / L_v;\n\tlet rgb_scale = convertOklabToLrgb_default({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tlet scale_L = Math.cbrt(1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0));\n\tl = l / scale_L;\n\tc$1 = c$1 / scale_L * toe(l) / l;\n\tl = toe(l);\n\tconst ret = {\n\t\tmode: \"okhsv\",\n\t\ts: c$1 ? (S_0 + T) * C_v / (T * S_0 + T * k$3 * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) ret.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\tif (lab$2.alpha !== void 0) ret.alpha = lab$2.alpha;\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOkhsvToOklab.js\nfunction convertOkhsvToOklab(hsv$2) {\n\tconst ret = { mode: \"oklab\" };\n\tif (hsv$2.alpha !== void 0) ret.alpha = hsv$2.alpha;\n\tconst h = hsv$2.h !== void 0 ? hsv$2.h : 0;\n\tconst s = hsv$2.s !== void 0 ? hsv$2.s : 0;\n\tconst v = hsv$2.v !== void 0 ? hsv$2.v : 0;\n\tconst a_ = Math.cos(h / 180 * Math.PI);\n\tconst b_ = Math.sin(h / 180 * Math.PI);\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = .5;\n\tconst k$3 = 1 - S_0 / S_max;\n\tconst L_v = 1 - s * S_0 / (S_0 + T - T * k$3 * s);\n\tconst C_v = s * T * S_0 / (S_0 + T - T * k$3 * s);\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = C_v * L_vt / L_v;\n\tconst rgb_scale = convertOklabToLrgb_default({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0));\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = C_v * L_new / L_v;\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/modeOkhsv.js\nconst modeOkhsv = {\n\t...definition_default$19,\n\tmode: \"okhsv\",\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"v\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--okhsv\"],\n\tserialize: \"--okhsv\",\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: (c$1) => convertOklabToOkhsv(convertRgbToOklab_default(c$1))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: (c$1) => convertOklabToRgb_default(convertOkhsvToOklab(c$1))\n\t}\n};\nvar modeOkhsv_default = modeOkhsv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/constants.js\nconst bias = .0037930732552754493;\nconst bias_cbrt = Math.cbrt(bias);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertRgbToXyb.js\nconst transfer$1 = (v) => Math.cbrt(v) - bias_cbrt;\nconst convertRgbToXyb = (color) => {\n\tconst { r: r$1, g, b, alpha } = convertRgbToLrgb_default(color);\n\tconst l = transfer$1(.3 * r$1 + .622 * g + .078 * b + bias);\n\tconst m = transfer$1(.23 * r$1 + .692 * g + .078 * b + bias);\n\tconst s = transfer$1(.2434226892454782 * r$1 + .2047674442449682 * g + .5518098665095535 * b + bias);\n\tconst res = {\n\t\tmode: \"xyb\",\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToXyb_default = convertRgbToXyb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertXybToRgb.js\nconst transfer = (v) => Math.pow(v + bias_cbrt, 3);\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (b === void 0) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\tconst s = transfer(b + y) - bias;\n\tconst res = convertLrgbToRgb_default({\n\t\tr: 11.031566904639861 * l - 9.866943908131562 * m - .16462299650829934 * s,\n\t\tg: -3.2541473810744237 * l + 4.418770377582723 * m - .16462299650829934 * s,\n\t\tb: -3.6588512867136815 * l + 2.7129230459360922 * m + 1.9459282407775895 * s\n\t});\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXybToRgb_default = convertXybToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/definition.js\nconst definition$1 = {\n\tmode: \"xyb\",\n\tchannels: [\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--xyb\"],\n\tserialize: \"--xyb\",\n\ttoMode: { rgb: convertXybToRgb_default },\n\tfromMode: { rgb: convertRgbToXyb_default },\n\tranges: {\n\t\tx: [-.0154, .0281],\n\t\ty: [0, .8453],\n\t\tb: [-.2778, .388]\n\t},\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$26 = definition$1;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertRgbToYiq.js\nconst convertRgbToYiq = ({ r: r$1, g, b, alpha }) => {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tconst res = {\n\t\tmode: \"yiq\",\n\t\ty: .29889531 * r$1 + .58662247 * g + .11448223 * b,\n\t\ti: .59597799 * r$1 - .2741761 * g - .32180189 * b,\n\t\tq: .21147017 * r$1 - .52261711 * g + .31114694 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToYiq_default = convertRgbToYiq;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertYiqToRgb.js\nconst convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === void 0) y = 0;\n\tif (i === void 0) i = 0;\n\tif (q === void 0) q = 0;\n\tconst res = {\n\t\tmode: \"rgb\",\n\t\tr: y + .95608445 * i + .6208885 * q,\n\t\tg: y - .27137664 * i - .6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertYiqToRgb_default = convertYiqToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/definition.js\nconst definition = {\n\tmode: \"yiq\",\n\ttoMode: { rgb: convertYiqToRgb_default },\n\tfromMode: { rgb: convertRgbToYiq_default },\n\tchannels: [\n\t\t\"y\",\n\t\t\"i\",\n\t\t\"q\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--yiq\"],\n\tserialize: \"--yiq\",\n\tranges: {\n\t\ti: [-.595, .595],\n\t\tq: [-.522, .522]\n\t},\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$27 = definition;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/round.js\nconst r = (value, precision) => Math.round(value * (precision = Math.pow(10, precision))) / precision;\nconst round = (precision = 4) => (value) => typeof value === \"number\" ? r(value, precision) : value;\nvar round_default = round;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/formatter.js\nlet twoDecimals = round_default(2);\nconst clamp = (value) => Math.max(0, Math.min(1, value || 0));\nconst fixup = (value) => Math.round(clamp(value) * 255);\nconst rgb$2 = converter_default(\"rgb\");\nconst hsl$1 = converter_default(\"hsl\");\nconst serializeHex = (color) => {\n\tif (color === void 0) return;\n\tlet r$1 = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\treturn \"#\" + (1 << 24 | r$1 << 16 | g << 8 | b).toString(16).slice(1);\n};\nconst serializeHex8 = (color) => {\n\tif (color === void 0) return;\n\tlet a = fixup(color.alpha !== void 0 ? color.alpha : 1);\n\treturn serializeHex(color) + (256 | a).toString(16).slice(1);\n};\nconst formatCss = (c$1) => {\n\tconst color = _prepare_default(c$1);\n\tif (!color) return;\n\tconst def = getMode(color.mode);\n\tif (!def.serialize || typeof def.serialize === \"string\") {\n\t\tlet res = `color(${def.serialize || `--${color.mode}`} `;\n\t\tdef.channels.forEach((ch, i) => {\n\t\t\tif (ch !== \"alpha\") res += (i ? \" \" : \"\") + (color[ch] !== void 0 ? color[ch] : \"none\");\n\t\t});\n\t\tif (color.alpha !== void 0 && color.alpha < 1) res += ` / ${color.alpha}`;\n\t\treturn res + \")\";\n\t}\n\tif (typeof def.serialize === \"function\") return def.serialize(color);\n};\nconst formatHex = (c$1) => serializeHex(rgb$2(c$1));\nconst formatHex8 = (c$1) => serializeHex8(rgb$2(c$1));\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/clamp.js\nconst rgb$1 = converter_default(\"rgb\");\nconst fixup_rgb = (c$1) => {\n\tconst res = {\n\t\tmode: c$1.mode,\n\t\tr: Math.max(0, Math.min(c$1.r !== void 0 ? c$1.r : 0, 1)),\n\t\tg: Math.max(0, Math.min(c$1.g !== void 0 ? c$1.g : 0, 1)),\n\t\tb: Math.max(0, Math.min(c$1.b !== void 0 ? c$1.b : 0, 1))\n\t};\n\tif (c$1.alpha !== void 0) res.alpha = c$1.alpha;\n\treturn res;\n};\nconst inrange_rgb = (c$1) => {\n\treturn c$1 !== void 0 && (c$1.r === void 0 || c$1.r >= 0 && c$1.r <= 1) && (c$1.g === void 0 || c$1.g >= 0 && c$1.g <= 1) && (c$1.b === void 0 || c$1.b >= 0 && c$1.b <= 1);\n};\nfunction displayable(color) {\n\treturn inrange_rgb(rgb$1(color));\n}\nfunction inGamut(mode = \"rgb\") {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) return (color) => true;\n\tconst conv = converter_default(typeof gamut === \"string\" ? gamut : mode);\n\treturn (color) => inrange_rgb(conv(color));\n}\nfunction clampGamut(mode = \"rgb\") {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) return (color) => _prepare_default(color);\n\tconst destMode = typeof gamut === \"string\" ? gamut : mode;\n\tconst destConv = converter_default(destMode);\n\tconst inDestGamut = inGamut(destMode);\n\treturn (color) => {\n\t\tconst original = _prepare_default(color);\n\t\tif (!original) return;\n\t\tconst converted = destConv(original);\n\t\tif (inDestGamut(converted)) return original;\n\t\tconst clamped = fixup_rgb(converted);\n\t\tif (original.mode === clamped.mode) return clamped;\n\t\treturn converter_default(original.mode)(clamped);\n\t};\n}\nfunction toGamut(dest = \"rgb\", mode = \"oklch\", delta = differenceEuclidean(\"oklch\"), jnd = .02) {\n\tconst destConv = converter_default(dest);\n\tconst destMode = getMode(dest);\n\tif (!destMode.gamut) return (color) => destConv(color);\n\tconst inDestinationGamut = inGamut(dest);\n\tconst clipToGamut = clampGamut(dest);\n\tconst ucs = converter_default(mode);\n\tconst { ranges } = getMode(mode);\n\tif (!ranges.l || !ranges.c) throw new Error(\"LCH-like space expected\");\n\treturn (color) => {\n\t\tcolor = _prepare_default(color);\n\t\tif (color === void 0) return;\n\t\tconst candidate = { ...ucs(color) };\n\t\tif (candidate.l === void 0) candidate.l = 0;\n\t\tif (candidate.c === void 0) candidate.c = 0;\n\t\tif (candidate.l >= ranges.l[1]) {\n\t\t\tconst res = {\n\t\t\t\t...destMode.white,\n\t\t\t\tmode: dest\n\t\t\t};\n\t\t\tif (color.alpha !== void 0) res.alpha = color.alpha;\n\t\t\treturn res;\n\t\t}\n\t\tif (candidate.l <= ranges.l[0]) {\n\t\t\tconst res = {\n\t\t\t\t...destMode.black,\n\t\t\t\tmode: dest\n\t\t\t};\n\t\t\tif (color.alpha !== void 0) res.alpha = color.alpha;\n\t\t\treturn res;\n\t\t}\n\t\tif (inDestinationGamut(candidate)) return destConv(candidate);\n\t\tlet start = 0;\n\t\tlet end = candidate.c;\n\t\tlet epsilon = (ranges.c[1] - ranges.c[0]) / 4e3;\n\t\tlet clipped = clipToGamut(candidate);\n\t\twhile (end - start > epsilon) {\n\t\t\tcandidate.c = (start + end) * .5;\n\t\t\tclipped = clipToGamut(candidate);\n\t\t\tif (inDestinationGamut(candidate) || delta && jnd > 0 && delta(candidate, clipped) <= jnd) start = candidate.c;\n\t\t\telse end = candidate.c;\n\t\t}\n\t\treturn destConv(inDestinationGamut(candidate) ? candidate : clipped);\n\t};\n}\n\n//#endregion\n//#region ../token-tools/dist/string-D3-qmBT2.js\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\nconst CULORI_TO_CSS = {\n\ta98: \"a98-rgb\",\n\thsl: \"hsl\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlab65: \"lab-d65\",\n\tlch: \"lch\",\n\tlrgb: \"srgb-linear\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\tokhsv: \"okhsv\",\n\tp3: \"display-p3\",\n\tprophoto: \"prophoto-rgb\",\n\trec2020: \"rec2020\",\n\trgb: \"srgb\",\n\txyz50: \"xyz-d50\",\n\txyz65: \"xyz-d65\"\n};\nconst CSS_TO_CULORI = {\n\t\"a98-rgb\": \"a98\",\n\t\"display-p3\": \"p3\",\n\thsl: \"hsl\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\t\"lab-d65\": \"lab65\",\n\tlch: \"lch\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\tokhsv: \"okhsv\",\n\t\"prophoto-rgb\": \"prophoto\",\n\trec2020: \"rec2020\",\n\tsrgb: \"rgb\",\n\t\"srgb-linear\": \"lrgb\",\n\txyz: \"xyz65\",\n\t\"xyz-d50\": \"xyz50\",\n\t\"xyz-d65\": \"xyz65\"\n};\n/** Parse any color */\nfunction parseColor(color) {\n\tconst result = parse_default(color);\n\tif (!result) throw new Error(`Unable to parse color \"${color}\"`);\n\tif (!(result.mode in CULORI_TO_CSS)) throw new Error(`Unsupported color space: ${result.mode}`);\n\tconst colorSpace = CULORI_TO_CSS[result.mode];\n\tlet components = [\n\t\t0,\n\t\t0,\n\t\t0\n\t];\n\tswitch (result.mode) {\n\t\tcase \"a98\":\n\t\tcase \"rec2020\":\n\t\tcase \"p3\":\n\t\tcase \"prophoto\":\n\t\tcase \"lrgb\":\n\t\tcase \"rgb\":\n\t\t\tcomponents = [\n\t\t\t\tresult.r,\n\t\t\t\tresult.g,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"hsl\": {\n\t\t\tconst maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s * maxS,\n\t\t\t\tresult.l * maxL\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"hwb\": {\n\t\t\tconst maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.w * maxW,\n\t\t\t\tresult.b * maxB\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"lab65\":\n\t\tcase \"oklab\":\n\t\t\tcomponents = [\n\t\t\t\tresult.l,\n\t\t\t\tresult.a,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"lch\":\n\t\tcase \"oklch\":\n\t\t\tcomponents = [\n\t\t\t\tresult.l,\n\t\t\t\tresult.c,\n\t\t\t\tresult.h ?? 0\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"okhsv\":\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s,\n\t\t\t\tresult.v\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"xyz50\":\n\t\tcase \"xyz65\":\n\t\t\tcomponents = [\n\t\t\t\tresult.x,\n\t\t\t\tresult.y,\n\t\t\t\tresult.z\n\t\t\t];\n\t\t\tbreak;\n\t}\n\tconst value = {\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha: result.alpha ?? 1\n\t};\n\tif (HEX_RE.test(color)) value.hex = formatHex(result);\n\treturn value;\n}\n/** Convert a color token to a Culori color */\nfunction tokenToCulori(value) {\n\tswitch (value.colorSpace) {\n\t\tcase \"a98-rgb\":\n\t\tcase \"display-p3\":\n\t\tcase \"prophoto-rgb\":\n\t\tcase \"rec2020\":\n\t\tcase \"srgb\":\n\t\tcase \"srgb-linear\": {\n\t\t\tconst [r$1, g, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n\t\t\t\tr: r$1,\n\t\t\t\tg,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hsl\": {\n\t\t\tconst [h, s, l] = value.components;\n\t\t\tconst maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\treturn {\n\t\t\t\tmode: \"hsl\",\n\t\t\t\th,\n\t\t\t\ts: s / maxS,\n\t\t\t\tl: l / maxL,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hwb\": {\n\t\t\tconst [h, w, b] = value.components;\n\t\t\tconst maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\treturn {\n\t\t\t\tmode: \"hwb\",\n\t\t\t\th,\n\t\t\t\tw: w / maxW,\n\t\t\t\tb: b / maxB,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"lab-d65\":\n\t\tcase \"oklab\": {\n\t\t\tconst [l = 0, a = 0, b = 0] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace === \"lab-d65\" ? \"lab65\" : value.colorSpace,\n\t\t\t\tl,\n\t\t\t\ta,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lch\":\n\t\tcase \"oklch\": {\n\t\t\tconst [l, c$1, h] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace,\n\t\t\t\tl,\n\t\t\t\tc: c$1,\n\t\t\t\th,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"okhsv\": {\n\t\t\tconst [h, s, v] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace,\n\t\t\t\th,\n\t\t\t\ts,\n\t\t\t\tv,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"xyz\":\n\t\tcase \"xyz-d50\":\n\t\tcase \"xyz-d65\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: CSS_TO_CULORI[value.colorSpace],\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tz,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Invalid colorSpace \"${value.colorSpace}\". Expected one of ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\t}\n}\n/** Complete list of CSS Module 4 Colorspaces */\nconst COLORSPACE = {\n\t\"a98-rgb\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"display-p3\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\thsl: { ranges: [\n\t\t[0, 360],\n\t\t[0, 100],\n\t\t[0, 100]\n\t] },\n\thwb: { ranges: [\n\t\t[0, 360],\n\t\t[0, 100],\n\t\t[0, 100]\n\t] },\n\tlab: { ranges: [\n\t\t[0, 100],\n\t\t[-125, 125],\n\t\t[-125, 125]\n\t] },\n\t\"lab-d65\": { ranges: [\n\t\t[0, 100],\n\t\t[-125, 125],\n\t\t[-125, 125]\n\t] },\n\tlch: { ranges: [\n\t\t[0, 100],\n\t\t[0, 150],\n\t\t[0, 360]\n\t] },\n\toklab: { ranges: [\n\t\t[0, 1],\n\t\t[-.4, .4],\n\t\t[-.4, .4]\n\t] },\n\toklch: { ranges: [\n\t\t[0, 1],\n\t\t[0, .4],\n\t\t[0, 360]\n\t] },\n\tokhsv: { ranges: [\n\t\t[0, 360],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"prophoto-rgb\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\trec2020: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\tsrgb: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"srgb-linear\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"xyz-d50\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\txyz: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"xyz-d65\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] }\n};\n/** Turn a string into kebab-case */\nfunction kebabCase(str) {\n\tlet output = \"\";\n\tfor (const c$1 of str.split(\"\")) {\n\t\tif (c$1 === \".\") {\n\t\t\toutput += \"-\";\n\t\t\tcontinue;\n\t\t}\n\t\tlet isFirstUppercase = true;\n\t\tif (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c$1)) {\n\t\t\toutput += `-${c$1.toLocaleLowerCase()}`;\n\t\t\tisFirstUppercase = false;\n\t\t\tcontinue;\n\t\t} else isFirstUppercase = true;\n\t\toutput += c$1;\n\t}\n\treturn output;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/wildcard-match@5.1.4/node_modules/wildcard-match/build/index.es.mjs\n/**\n* Escapes a character if it has a special meaning in regular expressions\n* and returns the character as is if it doesn't\n*/\nfunction escapeRegExpChar(char) {\n\tif (char === \"-\" || char === \"^\" || char === \"$\" || char === \"+\" || char === \".\" || char === \"(\" || char === \")\" || char === \"|\" || char === \"[\" || char === \"]\" || char === \"{\" || char === \"}\" || char === \"*\" || char === \"?\" || char === \"\\\\\") return \"\\\\\".concat(char);\n\telse return char;\n}\n/**\n* Escapes all characters in a given string that have a special meaning in regular expressions\n*/\nfunction escapeRegExpString(str) {\n\tvar result = \"\";\n\tfor (var i = 0; i < str.length; i++) result += escapeRegExpChar(str[i]);\n\treturn result;\n}\n/**\n* Transforms one or more glob patterns into a RegExp pattern\n*/\nfunction transform(pattern, separator) {\n\tif (separator === void 0) separator = true;\n\tif (Array.isArray(pattern)) {\n\t\tvar regExpPatterns = pattern.map(function(p$2) {\n\t\t\treturn \"^\".concat(transform(p$2, separator), \"$\");\n\t\t});\n\t\treturn \"(?:\".concat(regExpPatterns.join(\"|\"), \")\");\n\t}\n\tvar separatorSplitter = \"\";\n\tvar separatorMatcher = \"\";\n\tvar wildcard = \".\";\n\tif (separator === true) {\n\t\tseparatorSplitter = \"/\";\n\t\tseparatorMatcher = \"[/\\\\\\\\]\";\n\t\twildcard = \"[^/\\\\\\\\]\";\n\t} else if (separator) {\n\t\tseparatorSplitter = separator;\n\t\tseparatorMatcher = escapeRegExpString(separatorSplitter);\n\t\tif (separatorMatcher.length > 1) {\n\t\t\tseparatorMatcher = \"(?:\".concat(separatorMatcher, \")\");\n\t\t\twildcard = \"((?!\".concat(separatorMatcher, \").)\");\n\t\t} else wildcard = \"[^\".concat(separatorMatcher, \"]\");\n\t}\n\tvar requiredSeparator = separator ? \"\".concat(separatorMatcher, \"+?\") : \"\";\n\tvar optionalSeparator = separator ? \"\".concat(separatorMatcher, \"*?\") : \"\";\n\tvar segments = separator ? pattern.split(separatorSplitter) : [pattern];\n\tvar result = \"\";\n\tfor (var s = 0; s < segments.length; s++) {\n\t\tvar segment = segments[s];\n\t\tvar nextSegment = segments[s + 1];\n\t\tvar currentSeparator = \"\";\n\t\tif (!segment && s > 0) continue;\n\t\tif (separator) if (s === segments.length - 1) currentSeparator = optionalSeparator;\n\t\telse if (nextSegment !== \"**\") currentSeparator = requiredSeparator;\n\t\telse currentSeparator = \"\";\n\t\tif (separator && segment === \"**\") {\n\t\t\tif (currentSeparator) {\n\t\t\t\tresult += s === 0 ? \"\" : s === segments.length - 1 ? \"(?:\".concat(requiredSeparator, \"|$)\") : requiredSeparator;\n\t\t\t\tresult += \"(?:\".concat(wildcard, \"*?\").concat(currentSeparator, \")*?\");\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tfor (var c$1 = 0; c$1 < segment.length; c$1++) {\n\t\t\tvar char = segment[c$1];\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tif (c$1 < segment.length - 1) {\n\t\t\t\t\tresult += escapeRegExpChar(segment[c$1 + 1]);\n\t\t\t\t\tc$1++;\n\t\t\t\t}\n\t\t\t} else if (char === \"?\") result += wildcard;\n\t\t\telse if (char === \"*\") result += \"\".concat(wildcard, \"*?\");\n\t\t\telse result += escapeRegExpChar(char);\n\t\t}\n\t\tresult += currentSeparator;\n\t}\n\treturn result;\n}\nfunction isMatch(regexp, sample) {\n\tif (typeof sample !== \"string\") throw new TypeError(\"Sample must be a string, but \".concat(typeof sample, \" given\"));\n\treturn regexp.test(sample);\n}\n/**\n* Compiles one or more glob patterns into a RegExp and returns an isMatch function.\n* The isMatch function takes a sample string as its only argument and returns `true`\n* if the string matches the pattern(s).\n*\n* ```js\n* wildcardMatch('src/*.js')('src/index.js') //=> true\n* ```\n*\n* ```js\n* const isMatch = wildcardMatch('*.example.com', '.')\n* isMatch('foo.example.com') //=> true\n* isMatch('foo.bar.com') //=> false\n* ```\n*/\nfunction wildcardMatch(pattern, options) {\n\tif (typeof pattern !== \"string\" && !Array.isArray(pattern)) throw new TypeError(\"The first argument must be a single pattern string or an array of patterns, but \".concat(typeof pattern, \" given\"));\n\tif (typeof options === \"string\" || typeof options === \"boolean\") options = { separator: options };\n\tif (arguments.length === 2 && !(typeof options === \"undefined\" || typeof options === \"object\" && options !== null && !Array.isArray(options))) throw new TypeError(\"The second argument must be an options object or a string/boolean separator, but \".concat(typeof options, \" given\"));\n\toptions = options || {};\n\tif (options.separator === \"\\\\\") throw new Error(\"\\\\ is not a valid separator because it is used for escaping. Try setting the separator to `true` instead\");\n\tvar regexpPattern = transform(pattern, options.separator);\n\tvar regexp = new RegExp(\"^\".concat(regexpPattern, \"$\"), options.flags);\n\tvar fn$4 = isMatch.bind(null, regexp);\n\tfn$4.options = options;\n\tfn$4.pattern = pattern;\n\tfn$4.regexp = regexp;\n\treturn fn$4;\n}\n\n//#endregion\n//#region ../token-tools/dist/index.js\n/** Give a user pertinent feedback if they override a transform incorrectly */\nfunction validateCustomTransform(value, { $type }) {\n\tif (value) {\n\t\tif (typeof value !== \"string\" && typeof value !== \"object\" || Array.isArray(value)) throw new Error(`transform(): expected string or Object of strings, received ${Array.isArray(value) ? \"Array\" : typeof value}`);\n\t\tswitch ($type) {\n\t\t\tcase \"typography\":\n\t\t\t\tif (typeof value !== \"object\") throw new Error(\"transform(): typography tokens must be an object of keys\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/index.js\nconst a98 = useMode(definition_default);\nconst cubehelix = useMode(definition_default$15);\nconst dlab = useMode(definition_default$16);\nconst dlch = useMode(definition_default$17);\nconst hsi = useMode(definition_default$18);\nconst hsl = useMode(definition_default$1);\nconst hsv = useMode(definition_default$19);\nconst hwb = useMode(definition_default$2);\nconst itp = useMode(definition_default$20);\nconst jab = useMode(definition_default$21);\nconst jch = useMode(definition_default$22);\nconst lab = useMode(definition_default$3);\nconst lab65 = useMode(definition_default$4);\nconst lch = useMode(definition_default$5);\nconst lch65 = useMode(definition_default$23);\nconst lchuv = useMode(definition_default$24);\nconst lrgb = useMode(definition_default$6);\nconst luv = useMode(definition_default$25);\nconst okhsl = useMode(modeOkhsl_default);\nconst okhsv = useMode(modeOkhsv_default);\nconst oklab = useMode(definition_default$7);\nconst oklch = useMode(definition_default$8);\nconst p3 = useMode(definition_default$9);\nconst prophoto = useMode(definition_default$10);\nconst rec2020 = useMode(definition_default$11);\nconst rgb = useMode(definition_default$12);\nconst xyb = useMode(definition_default$26);\nconst xyz50 = useMode(definition_default$13);\nconst xyz65 = useMode(definition_default$14);\nconst yiq = useMode(definition_default$27);\n\n//#endregion\n//#region ../token-tools/dist/css.js\nfunction defaultAliasTransform(token) {\n\tif (!token) throw new Error(\"Undefined token\");\n\treturn `var(${makeCSSVar(token.id)})`;\n}\n/** Generate shorthand CSS for select token types */\nfunction generateShorthand({ $type, localID }) {\n\tswitch ($type) {\n\t\tcase \"transition\": return [\n\t\t\t\"duration\",\n\t\t\t\"delay\",\n\t\t\t\"timing-function\"\n\t\t].map((p$2) => makeCSSVar(`${localID}-${p$2}`, { wrapVar: true })).join(\" \");\n\t}\n}\nconst CSS_VAR_RE = /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n/**\n* Generate a valid CSS variable from any string\n* Code by @dfrankland\n*/\nfunction makeCSSVar(name, { prefix, wrapVar = false } = {}) {\n\tif (typeof name !== \"string\") throw new Error(`makeCSSVar() Expected string, received ${name}`);\n\tlet property = name.split(CSS_VAR_RE).filter(Boolean).join(\"-\");\n\tif (prefix && !property.startsWith(`${prefix}-`)) property = `${prefix}-${property}`;\n\tconst finalProperty = `--${property}`.toLocaleLowerCase();\n\treturn wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n/** Convert boolean value to CSS string */\nfunction transformBoolean(token, { tokensSet, transformAlias = defaultAliasTransform }) {\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value === true ? \"1\" : \"0\";\n}\n/** Convert color value to CSS string */\nfunction transformColor(token, options) {\n\tconst { transformAlias = defaultAliasTransform, tokensSet } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst { colorSpace, components, alpha = 1 } = typeof token.$value === \"string\" ? parseColor(token.$value) : token.$value;\n\tconst color = tokenToCulori({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t});\n\tif (!color) throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n\tlet formatColor = formatCss;\n\tif (options.color?.legacyHex) formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n\treturn displayable(color) ? formatColor(color) : downsample({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t}, color, options.color?.depth);\n}\nconst converters = {\n\ta98: useMode(definition_default),\n\thsl: useMode(definition_default$1),\n\thwb: useMode(definition_default$2),\n\tlab: useMode(definition_default$3),\n\tlab65: useMode(definition_default$4),\n\tlch: useMode(definition_default$5),\n\tlrgb: useMode(definition_default$6),\n\toklab: useMode(definition_default$7),\n\toklch: useMode(definition_default$8),\n\tokhsv: useMode(modeOkhsv_default),\n\tp3: useMode(definition_default$9),\n\tprophoto: useMode(definition_default$10),\n\trec2020: useMode(definition_default$11),\n\trgb: useMode(definition_default$12),\n\txyz50: useMode(definition_default$13),\n\txyz65: useMode(definition_default$14)\n};\nconst DEPTH_ROUNDING = {\n\t24: round_default(4),\n\t30: round_default(4),\n\t36: round_default(5),\n\t48: round_default(6)\n};\n/**\n* Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n* Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n* we have to do an additional step of converting back. So we’re not really converting;\n* we’re just preserving the original colorspace.\n*/\nfunction downsample($value, culoriColor, depth = 30) {\n\tif (!($value.colorSpace in CSS_TO_CULORI)) throw new Error(`Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tlet gamutSpace = conversionSpace;\n\tif (gamutSpace === \"lab\" || gamutSpace === \"lab65\") gamutSpace = \"lch\";\n\telse if (gamutSpace === \"oklab\") gamutSpace = \"oklch\";\n\tlet srgb = converters[conversionSpace](toGamut(\"rgb\", gamutSpace)(culoriColor));\n\tlet p3$2 = converters[conversionSpace](toGamut(\"p3\", gamutSpace)(culoriColor));\n\tlet rec2020$2 = converters[conversionSpace](toGamut(\"rec2020\", gamutSpace)(culoriColor));\n\tif (typeof depth === \"number\") {\n\t\tif (!DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(\", \")}`);\n\t\tsrgb = roundColor(srgb, depth);\n\t\tp3$2 = roundColor(p3$2, depth);\n\t\trec2020$2 = roundColor(rec2020$2, depth);\n\t}\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(srgb),\n\t\tp3: formatCss(p3$2),\n\t\trec2020: formatCss(rec2020$2)\n\t};\n}\n/** Round color to certain depth. */\nfunction roundColor(color, depth = 30) {\n\tif (depth === \"unlimited\") return color;\n\tconst newColor = { ...color };\n\tfor (const [k$3, v] of Object.entries(color)) {\n\t\tif (typeof v !== \"number\" || k$3 === \"mode\") continue;\n\t\tnewColor[k$3] = DEPTH_ROUNDING[depth](v);\n\t}\n\treturn newColor;\n}\n/** Convert dimension value to CSS */\nfunction transformDimension(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.value === 0 ? \"0\" : `${token.$value.value}${token.$value.unit}`;\n}\n/** Convert strokeStyle value to CSS */\nfunction transformStrokeStyle(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn typeof token.$value === \"string\" ? token.$value : \"dashed\";\n}\n/** Convert border value to multiple CSS values */\nfunction transformBorder(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst width = token.partialAliasOf?.width ? transformAlias(tokensSet[token.partialAliasOf.width]) : transformDimension({ $value: token.$value.width }, options);\n\tconst color = token.partialAliasOf?.color ? transformAlias(tokensSet[token.partialAliasOf.color]) : transformColor({ $value: token.$value.color }, options);\n\tconst style = token.partialAliasOf?.style ? transformAlias(tokensSet[token.partialAliasOf.style]) : transformStrokeStyle({ $value: token.$value.style }, options);\n\tconst formatBorder = (colorKey) => [\n\t\twidth,\n\t\tstyle,\n\t\ttypeof color === \"string\" ? color : color[colorKey]\n\t].join(\" \");\n\treturn typeof color === \"string\" || displayable(color.p3) ? formatBorder(\".\") : {\n\t\t\".\": formatBorder(\".\"),\n\t\tsrgb: formatBorder(\"srgb\"),\n\t\tp3: formatBorder(\"p3\"),\n\t\trec2020: formatBorder(\"rec2020\")\n\t};\n}\n/** Convert cubicBezier value to CSS */\nfunction transformCubicBezier(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `cubic-bezier(${token.$value.map((v, i) => token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]) : v).join(\", \")})`;\n}\n/** Convert duration value to CSS */\nfunction transformDuration(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `${token.$value.value}${token.$value.unit}`;\n}\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\nfunction transformFontFamily(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.map((fontName) => FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`).join(\", \");\n}\n/** Convert fontWeight value to CSS */\nfunction transformFontWeight(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n/** Convert gradient value to CSS */\nfunction transformGradient(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tlet isHDR = false;\n\tconst colors = [];\n\tconst positions = [];\n\tfor (let i = 0; i < token.$value.length; i++) {\n\t\tconst { color, position } = token.$value[i];\n\t\tconst colorValue = token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: color }, options);\n\t\tif (typeof colorValue !== \"string\") isHDR = true;\n\t\tcolors.push(colorValue);\n\t\tpositions.push(token.partialAliasOf?.[i]?.position ? transformAlias(tokensSet[token.partialAliasOf[i].position]) : `${100 * position}%`);\n\t}\n\tfunction formatStop(i, colorKey = \".\") {\n\t\treturn `${typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey]} ${positions[i]}`;\n\t}\n\treturn !isHDR ? token.$value.map((_, i) => formatStop(i, positions[i])).join(\", \") : {\n\t\t\".\": token.$value.map((_, i) => formatStop(i, \".\")).join(\", \"),\n\t\tsrgb: token.$value.map((_, i) => formatStop(i, \"srgb\")).join(\", \"),\n\t\tp3: token.$value.map((_, i) => formatStop(i, \"p3\")).join(\", \"),\n\t\trec2020: token.$value.map((_, i) => formatStop(i, \"rec2020\")).join(\", \")\n\t};\n}\n/** Convert link value to CSS */\nfunction transformLink(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `url(\"${token.$value}\")`;\n}\n/** Convert number value to CSS */\nfunction transformNumber(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n/** Convert shadow subvalue to CSS */\nfunction transformShadowLayer(value, options) {\n\tconst { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n\tconst offsetX = partialAliasOf?.offsetX ? transformAlias(tokensSet[partialAliasOf.offsetX]) : transformDimension({ $value: value.offsetX }, options);\n\tconst offsetY = partialAliasOf?.offsetY ? transformAlias(tokensSet[partialAliasOf.offsetY]) : transformDimension({ $value: value.offsetY }, options);\n\tconst blur = partialAliasOf?.blur ? transformAlias(tokensSet[partialAliasOf.blur]) : transformDimension({ $value: value.blur }, options);\n\tconst spread = partialAliasOf?.spread ? transformAlias(tokensSet[partialAliasOf.spread]) : transformDimension({ $value: value.spread }, options);\n\treturn [\n\t\tvalue?.inset === true ? \"inset\" : void 0,\n\t\toffsetX,\n\t\toffsetY,\n\t\tblur,\n\t\tspread,\n\t\tcolorValue\n\t].filter(Boolean).join(\" \");\n}\n/** Convert shadow value to CSS */\nfunction transformShadow(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst colors = token.$value.map((v, i) => token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: v.color }, options));\n\tconst isHDR = colors.some((c$1) => typeof c$1 === \"object\");\n\tconst formatShadow = (colorKey) => token.$value.map((v, i) => transformShadowLayer(v, {\n\t\ttokensSet,\n\t\tcolorValue: typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey],\n\t\tpartialAliasOf: token.partialAliasOf?.[i],\n\t\ttransformAlias\n\t})).join(\", \");\n\treturn !isHDR ? formatShadow(\".\") : {\n\t\t\".\": formatShadow(\".\"),\n\t\tsrgb: formatShadow(\"srgb\"),\n\t\tp3: formatShadow(\"p3\"),\n\t\trec2020: formatShadow(\"rec2020\")\n\t};\n}\n/** Convert string value to CSS */\nfunction transformString(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n/** Convert transition value to shorthand */\nfunction transformTransition(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst duration = token.partialAliasOf?.duration ? transformAlias(tokensSet[token.partialAliasOf.duration]) : transformDuration({ $value: token.$value.duration }, options);\n\tconst delay = token.partialAliasOf?.delay ? transformAlias(tokensSet[token.partialAliasOf.delay]) : transformDuration({ $value: token.$value.delay }, options);\n\tconst timingFunction = token.partialAliasOf?.timingFunction ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]) : transformCubicBezier({ $value: token.$value.timingFunction }, options);\n\treturn `${duration} ${delay} ${timingFunction}`;\n}\n/** Convert typography value to multiple CSS values */\nfunction transformTypography(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tconst output = {};\n\tfor (const [property, subvalue] of Object.entries(token.$value)) {\n\t\tlet transformedValue;\n\t\tconst aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n\t\tif (aliasedID) {\n\t\t\tconst resolvedToken = tokensSet[aliasedID];\n\t\t\ttransformedValue = transformAlias(resolvedToken.$type === \"typography\" ? { id: `${aliasedID}-${property}` } : resolvedToken);\n\t\t} else switch (property) {\n\t\t\tcase \"fontFamily\":\n\t\t\t\ttransformedValue = transformFontFamily({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontSize\":\n\t\t\tcase \"letterSpacing\":\n\t\t\t\ttransformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontWeight\":\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"lineHeight\":\n\t\t\t\tif (typeof subvalue === \"number\") transformedValue = transformNumber({ $value: subvalue }, options);\n\t\t\t\telse transformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t}\n\t\toutput[kebabCase(property)] = transformedValue;\n\t}\n\treturn output;\n}\n/** Main CSS Transform */\nfunction transformCSSValue(token, { mode,...options }) {\n\tconst selectedMode = token.mode[mode];\n\tif (!selectedMode) return;\n\tconst tokenWithModeValue = {\n\t\tid: token.id,\n\t\t$type: token.$type,\n\t\t...selectedMode\n\t};\n\tswitch (tokenWithModeValue.$type) {\n\t\tcase \"boolean\": return transformBoolean(tokenWithModeValue, options);\n\t\tcase \"border\": return transformBorder(tokenWithModeValue, options);\n\t\tcase \"color\": return transformColor(tokenWithModeValue, options);\n\t\tcase \"cubicBezier\": return transformCubicBezier(tokenWithModeValue, options);\n\t\tcase \"dimension\": return transformDimension(tokenWithModeValue, options);\n\t\tcase \"duration\": return transformDuration(tokenWithModeValue, options);\n\t\tcase \"fontFamily\": return transformFontFamily(tokenWithModeValue, options);\n\t\tcase \"fontWeight\": return transformFontWeight(tokenWithModeValue, options);\n\t\tcase \"gradient\": return transformGradient(tokenWithModeValue, options);\n\t\tcase \"link\": return transformLink(tokenWithModeValue, options);\n\t\tcase \"number\": return transformNumber(tokenWithModeValue, options);\n\t\tcase \"shadow\": return transformShadow(tokenWithModeValue, options);\n\t\tcase \"string\": return transformString(tokenWithModeValue, options);\n\t\tcase \"strokeStyle\": return transformStrokeStyle(tokenWithModeValue, options);\n\t\tcase \"transition\": return transformTransition(tokenWithModeValue, options);\n\t\tcase \"typography\": return transformTypography(tokenWithModeValue, options);\n\t}\n}\n\n//#endregion\n//#region src/lib.ts\nconst FORMAT_ID = \"css\";\nconst FILE_PREFIX = `/* -------------------------------------------\n * Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n * ------------------------------------------- */`;\n/** Convert CSSRules into a formatted, indented CSS string */\nfunction printRules(rules) {\n\tconst output = [];\n\tfor (const rule of rules) {\n\t\tif (!rule.selectors.length || !Object.keys(rule.declarations).length) continue;\n\t\tconst mqSelectors = [];\n\t\tconst joinableSelectors = [];\n\t\tfor (const s of rule.selectors) (s.startsWith(\"@\") ? mqSelectors : joinableSelectors).push(s);\n\t\tfor (const s of mqSelectors) output.push(_printRule({\n\t\t\t...rule,\n\t\t\tselectors: [s]\n\t\t}));\n\t\tif (joinableSelectors.length) output.push(_printRule({\n\t\t\t...rule,\n\t\t\tselectors: joinableSelectors\n\t\t}));\n\t}\n\treturn output.join(\"\\n\\n\");\n}\nfunction _printRule(rule) {\n\tconst output = [];\n\tconst isMediaQuery = rule.selectors.some((s) => s.startsWith(\"@\"));\n\tlet indent = \"\";\n\tif (rule.nestedQuery && isMediaQuery) {\n\t\toutput.push(`${indent}${rule.selectors.join(`,\\n${indent}`)} {`);\n\t\tindent += \" \";\n\t\toutput.push(`${indent}${rule.nestedQuery} {`);\n\t} else if (rule.nestedQuery && !isMediaQuery) {\n\t\toutput.push(`${indent}${rule.nestedQuery} {`);\n\t\tindent += \" \";\n\t\toutput.push(`${indent}${rule.selectors.join(`,\\n${indent}`)} {`);\n\t} else output.push(`${indent}${rule.selectors.join(`,\\n${indent}`)} {`);\n\tindent += \" \";\n\tif (isMediaQuery) {\n\t\toutput.push(`${indent}:root {`);\n\t\tindent += \" \";\n\t}\n\tconst declarations = Object.entries(rule.declarations);\n\tdeclarations.sort((a, b) => a[0].localeCompare(b[0], \"en-us\", { numeric: true }));\n\tfor (const [k$3, d] of declarations) output.push(`${indent}${k$3}: ${d.value};${d.description ? ` /* ${d.description} */` : \"\"}`);\n\twhile (indent !== \"\") {\n\t\tindent = indent.substring(0, indent.length - 2);\n\t\toutput.push(`${indent}}`);\n\t}\n\treturn output.join(\"\\n\");\n}\n\n//#endregion\n//#region src/build/utility-css.ts\nconst GROUP_REGEX = {\n\tbg: /(^bg-|-bg-)/,\n\tborder: /(^border-|-border-)/,\n\tfont: /(^font-|-font-)/,\n\tgap: /(^gap-|-gap-)/,\n\tm: /(^margin-|-margin-|)/,\n\tp: /(^padding-|-padding-|)/,\n\tshadow: /(^shadow-|-shadow-)/,\n\ttext: /(^text-|-text-)/\n};\n/** Make CSS class name from transformed token */\nfunction makeSelector(token, prefix, subgroup) {\n\treturn `.${prefix}${subgroup || \"\"}-${kebabCase(token.token.id).replace(GROUP_REGEX[prefix], \"\")}`;\n}\nfunction makeVarValue(token) {\n\treturn { value: makeCSSVar(token.localID ?? token.token.id, { wrapVar: true }) };\n}\nfunction generateUtilityCSS(groups, tokens) {\n\tconst output = [];\n\tconst groupEntries = Object.entries(groups);\n\tgroupEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\tfor (const [group, selectors] of groupEntries) {\n\t\tconst selectorMatcher = wildcardMatch(selectors);\n\t\tconst matchingTokens = tokens.filter((token) => selectorMatcher(token.token.id));\n\t\tif (!matchingTokens.length) {\n\t\t\tconsole.warn(`[@terrazzo/plugin-css] utility group \"${group}\" matched 0 tokens: ${JSON.stringify(selectors)}`);\n\t\t\tbreak;\n\t\t}\n\t\tswitch (group) {\n\t\t\tcase \"bg\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst selector = makeSelector(token, \"bg\");\n\t\t\t\t\tswitch (token.token.$type) {\n\t\t\t\t\t\tcase \"color\":\n\t\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\t\tdeclarations: { \"background-color\": makeVarValue(token) }\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"gradient\": output.push({\n\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\tdeclarations: { \"background-image\": { value: `linear-gradient(${makeCSSVar(token.localID ?? token.token.id, { wrapVar: true })})` } }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"border\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst property = {\n\t\t\t\t\t\tborder: \"border\",\n\t\t\t\t\t\tcolor: \"border-color\",\n\t\t\t\t\t\tdimension: \"border-width\",\n\t\t\t\t\t\tstrokeStyle: \"border-style\"\n\t\t\t\t\t}[token.token.$type];\n\t\t\t\t\tif (property) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, \"border\")],\n\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor (const token of matchingTokens) for (const side of [\n\t\t\t\t\t\"top\",\n\t\t\t\t\t\"right\",\n\t\t\t\t\t\"bottom\",\n\t\t\t\t\t\"left\"\n\t\t\t\t]) {\n\t\t\t\t\tconst property = {\n\t\t\t\t\t\tborder: `border-${side}`,\n\t\t\t\t\t\tcolor: `border-${side}-color`,\n\t\t\t\t\t\tdimension: `border-${side}-width`,\n\t\t\t\t\t\tstrokeStyle: `border-${side}-style`\n\t\t\t\t\t}[token.token.$type];\n\t\t\t\t\tif (property) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, \"border\", `-${side}`)],\n\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"font\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst selector = makeSelector(token, \"font\");\n\t\t\t\t\tif (token.token.$type === \"typography\" && token.type === \"MULTI_VALUE\") {\n\t\t\t\t\t\tconst declarations = {};\n\t\t\t\t\t\tfor (const k$3 of Object.keys(token.value)) declarations[k$3] = { value: makeCSSVar(`${token.localID ?? token.token.id}-${k$3}`, { wrapVar: true }) };\n\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\tdeclarations\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst property = {\n\t\t\t\t\t\t\tdimension: \"font-size\",\n\t\t\t\t\t\t\tfontFamily: \"font-family\",\n\t\t\t\t\t\t\tfontWeight: \"font-weight\"\n\t\t\t\t\t\t}[token.token.$type];\n\t\t\t\t\t\tif (property) output.push({\n\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"layout\": {\n\t\t\t\tconst filteredTokens = matchingTokens.filter((t) => t.token.$type === \"dimension\");\n\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"gap\")],\n\t\t\t\t\tdeclarations: { gap: makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"gap\", \"-col\")],\n\t\t\t\t\tdeclarations: { \"column-gap\": makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"gap\", \"-row\")],\n\t\t\t\t\tdeclarations: { \"row-gap\": makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tfor (const prefix of [\"m\", \"p\"]) {\n\t\t\t\t\tconst property = prefix === \"m\" ? \"margin\" : \"padding\";\n\t\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"a\")],\n\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t\tfor (const token of filteredTokens) {\n\t\t\t\t\t\tconst value = makeVarValue(token);\n\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"x\")],\n\t\t\t\t\t\t\tdeclarations: {\n\t\t\t\t\t\t\t\t[`${property}-left`]: value,\n\t\t\t\t\t\t\t\t[`${property}-right`]: value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"y\")],\n\t\t\t\t\t\t\tdeclarations: {\n\t\t\t\t\t\t\t\t[`${property}-bottom`]: value,\n\t\t\t\t\t\t\t\t[`${property}-top`]: value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tfor (const side of [\n\t\t\t\t\t\t\"top\",\n\t\t\t\t\t\t\"right\",\n\t\t\t\t\t\t\"bottom\",\n\t\t\t\t\t\t\"left\"\n\t\t\t\t\t]) for (const token of filteredTokens) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, prefix, side[0])],\n\t\t\t\t\t\tdeclarations: { [`${property}-${side}`]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t\tfor (const token of filteredTokens) {\n\t\t\t\t\t\tconst value = makeVarValue(token);\n\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"s\")],\n\t\t\t\t\t\t\tdeclarations: { [`${property}-inline-start`]: value }\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"e\")],\n\t\t\t\t\t\t\tdeclarations: { [`${property}-inline-end`]: value }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"shadow\":\n\t\t\t\tfor (const token of matchingTokens) if (token.token.$type === \"shadow\") output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"shadow\")],\n\t\t\t\t\tdeclarations: { \"box-shadow\": makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"text\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst selector = makeSelector(token, \"text\");\n\t\t\t\t\tconst value = makeVarValue(token);\n\t\t\t\t\tswitch (token.token.$type) {\n\t\t\t\t\t\tcase \"color\":\n\t\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\t\tdeclarations: { color: value }\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"gradient\":\n\t\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\t\tdeclarations: {\n\t\t\t\t\t\t\t\t\tbackground: { value: `-webkit-linear-gradient(${value.value})` },\n\t\t\t\t\t\t\t\t\t\"-webkit-background-clip\": { value: \"text\" },\n\t\t\t\t\t\t\t\t\t\"-webkit-text-fill-color\": { value: \"transparent\" }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.warn(`[@terrazzo/plugin-css] unknown utility CSS group \"${group}\", ignoring`);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn output;\n}\n\n//#endregion\n//#region src/build/index.ts\nconst P3_MQ = \"@media (color-gamut: p3)\";\nconst REC2020_MQ = \"@media (color-gamut: rec2020)\";\nfunction buildFormat({ getTransforms, exclude, utility, modeSelectors, baseSelector, baseScheme }) {\n\tconst rules = [];\n\tconst rootTokens = getTransforms({\n\t\tformat: FORMAT_ID,\n\t\tmode: \".\"\n\t});\n\tif (rootTokens.length) {\n\t\tconst rootRule = {\n\t\t\tselectors: [baseSelector],\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst p3Rule = {\n\t\t\tselectors: [baseSelector],\n\t\t\tnestedQuery: P3_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst rec2020Rule = {\n\t\t\tselectors: [baseSelector],\n\t\t\tnestedQuery: REC2020_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\trules.push(rootRule, p3Rule, rec2020Rule);\n\t\tconst shouldExclude = wildcardMatch(exclude ?? []);\n\t\tif (baseScheme) rootRule.declarations[\"color-scheme\"] = { value: baseScheme };\n\t\tfor (const token of rootTokens) {\n\t\t\tif (shouldExclude(token.token.id)) continue;\n\t\t\tconst localID = token.localID ?? token.token.id;\n\t\t\tconst aliasTokens = token.token.aliasedBy?.length ? getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: token.token.aliasedBy\n\t\t\t}) : [];\n\t\t\tif (token.type === \"SINGLE_VALUE\") rootRule.declarations[localID] = {\n\t\t\t\tvalue: token.value,\n\t\t\t\tdescription: token.token.$description\n\t\t\t};\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\trootRule.declarations[localID] = {\n\t\t\t\t\tvalue: token.value.srgb,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tp3Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.p3,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\trec2020Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.rec2020,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") {\n\t\t\t\t\t\tp3Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t\trec2020Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (token.type === \"MULTI_VALUE\") {\n\t\t\t\tconst shorthand = generateShorthand({\n\t\t\t\t\t$type: token.token.$type,\n\t\t\t\t\tlocalID\n\t\t\t\t});\n\t\t\t\tif (shorthand) rootRule.declarations[token.localID ?? token.token.id] = {\n\t\t\t\t\tvalue: shorthand,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tfor (const [name, value] of Object.entries(token.value)) rootRule.declarations[name === \".\" ? localID : [localID, name].join(\"-\")] = {\n\t\t\t\t\tvalue,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tfor (const { selectors, tokens, mode, scheme } of modeSelectors ?? []) {\n\t\tif (!selectors.length) continue;\n\t\tconst selectorTokens = getTransforms({\n\t\t\tformat: FORMAT_ID,\n\t\t\tid: tokens,\n\t\t\tmode\n\t\t});\n\t\tif (!selectorTokens.length) continue;\n\t\tconst selectorRule = {\n\t\t\tselectors,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst selectorP3Rule = {\n\t\t\tselectors,\n\t\t\tnestedQuery: P3_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst selectorRec2020Rule = {\n\t\t\tselectors,\n\t\t\tnestedQuery: REC2020_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst selectorAliasDeclarations = {};\n\t\trules.push(selectorRule, selectorP3Rule, selectorRec2020Rule);\n\t\tif (scheme) selectorRule.declarations[\"color-scheme\"] = { value: scheme };\n\t\tfor (const token of selectorTokens) {\n\t\t\tconst localID = token.localID ?? token.token.id;\n\t\t\tconst aliasTokens = token.token.aliasedBy?.length ? getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: token.token.aliasedBy\n\t\t\t}) : [];\n\t\t\tif (token.type === \"SINGLE_VALUE\") selectorRule.declarations[localID] = {\n\t\t\t\tvalue: token.value,\n\t\t\t\tdescription: token.token.$description\n\t\t\t};\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\tselectorRule.declarations[localID] = {\n\t\t\t\t\tvalue: token.value.srgb,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tselectorP3Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.p3,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\tselectorRec2020Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.rec2020,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") {\n\t\t\t\t\t\tselectorP3Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t\tselectorRec2020Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst shorthand = generateShorthand({\n\t\t\t\t\t$type: token.token.$type,\n\t\t\t\t\tlocalID\n\t\t\t\t});\n\t\t\t\tif (shorthand) selectorRule.declarations[localID] = {\n\t\t\t\t\tvalue: shorthand,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tfor (const [name, subvalue] of Object.entries(token.value)) selectorRule.declarations[`${localID}-${name}`] = {\n\t\t\t\t\tvalue: subvalue,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t}\n\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") selectorAliasDeclarations[alias.localID] = {\n\t\t\t\tvalue: alias.value,\n\t\t\t\tdescription: token.token.$description\n\t\t\t};\n\t\t}\n\t\tfor (const [name, { value, description }] of Object.entries(selectorAliasDeclarations)) selectorRule.declarations[name] ??= {\n\t\t\tvalue,\n\t\t\tdescription\n\t\t};\n\t}\n\tif (utility && Object.keys(utility).length) rules.push(...generateUtilityCSS(utility, getTransforms({\n\t\tformat: FORMAT_ID,\n\t\tmode: \".\"\n\t})));\n\treturn printRules(rules);\n}\n\n//#endregion\n//#region src/index.ts\nfunction cssPlugin(options) {\n\tconst { exclude, variableName, modeSelectors, transform: customTransform, utility, legacyHex, skipBuild, baseScheme } = options ?? {};\n\tconst filename = options?.filename ?? options?.fileName ?? \"index.css\";\n\tconst baseSelector = options?.baseSelector ?? \":root\";\n\tfunction transformName(token) {\n\t\tconst customName = variableName?.(token);\n\t\tif (customName !== void 0) {\n\t\t\tif (typeof customName !== \"string\") throw new Error(`variableName() must return a string; received ${customName}`);\n\t\t\treturn customName;\n\t\t}\n\t\treturn makeCSSVar(token.id);\n\t}\n\tconst transformAlias = (token) => `var(${transformName(token)})`;\n\treturn {\n\t\tname: \"@terrazzo/plugin-css\",\n\t\tasync transform({ tokens, getTransforms, setTransform }) {\n\t\t\tif (getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: \"*\",\n\t\t\t\tmode: \"*\"\n\t\t\t}).length) return;\n\t\t\tfor (const [id, token] of Object.entries(tokens)) {\n\t\t\t\tconst localID = transformName(token);\n\t\t\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\t\t\tif (customTransform) {\n\t\t\t\t\t\tconst value = customTransform(token, mode);\n\t\t\t\t\t\tif (value !== void 0 && value !== null) {\n\t\t\t\t\t\t\tvalidateCustomTransform(value, { $type: token.$type });\n\t\t\t\t\t\t\tsetTransform(id, {\n\t\t\t\t\t\t\t\tformat: FORMAT_ID,\n\t\t\t\t\t\t\t\tlocalID,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\tmeta: { \"token-listing\": { name: localID } }\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst transformedValue = transformCSSValue(token, {\n\t\t\t\t\t\tmode,\n\t\t\t\t\t\ttokensSet: tokens,\n\t\t\t\t\t\ttransformAlias,\n\t\t\t\t\t\tcolor: { legacyHex }\n\t\t\t\t\t});\n\t\t\t\t\tif (transformedValue !== void 0) {\n\t\t\t\t\t\tlet listingName = localID;\n\t\t\t\t\t\tif (typeof transformedValue === \"object\" && generateShorthand({\n\t\t\t\t\t\t\t$type: token.$type,\n\t\t\t\t\t\t\tlocalID\n\t\t\t\t\t\t}) === void 0) listingName = void 0;\n\t\t\t\t\t\tsetTransform(id, {\n\t\t\t\t\t\t\tformat: FORMAT_ID,\n\t\t\t\t\t\t\tlocalID,\n\t\t\t\t\t\t\tvalue: transformedValue,\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\tmeta: { \"token-listing\": { name: listingName } }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync build({ getTransforms, outputFile }) {\n\t\t\tif (skipBuild === true) return;\n\t\t\tconst output = [FILE_PREFIX, \"\"];\n\t\t\toutput.push(buildFormat({\n\t\t\t\texclude,\n\t\t\t\tgetTransforms,\n\t\t\t\tmodeSelectors,\n\t\t\t\tutility,\n\t\t\t\tbaseSelector,\n\t\t\t\tbaseScheme\n\t\t\t}), \"\\n\");\n\t\t\toutputFile(filename, output.join(\"\\n\"));\n\t\t}\n\t};\n}\n\n//#endregion\nexport { FILE_PREFIX, FORMAT_ID, cssPlugin as default, printRules };\n//# sourceMappingURL=index.js.map","const parseNumber = (color, len) => {\n\tif (typeof color !== 'number') return;\n\n\t// hex3: #c93 -> #cc9933\n\tif (len === 3) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tg: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\tb: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex4: #c931 -> #cc993311\n\tif (len === 4) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 12) & 0xf) | ((color >> 8) & 0xf0)) / 255,\n\t\t\tg: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tb: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\talpha: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex6: #f0f1f2\n\tif (len === 6) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 16) & 0xff) / 255,\n\t\t\tg: ((color >> 8) & 0xff) / 255,\n\t\t\tb: (color & 0xff) / 255\n\t\t};\n\t}\n\n\t// hex8: #f0f1f2ff\n\tif (len === 8) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 24) & 0xff) / 255,\n\t\t\tg: ((color >> 16) & 0xff) / 255,\n\t\t\tb: ((color >> 8) & 0xff) / 255,\n\t\t\talpha: (color & 0xff) / 255\n\t\t};\n\t}\n};\n\nexport default parseNumber;\n","const named = {\n\taliceblue: 0xf0f8ff,\n\tantiquewhite: 0xfaebd7,\n\taqua: 0x00ffff,\n\taquamarine: 0x7fffd4,\n\tazure: 0xf0ffff,\n\tbeige: 0xf5f5dc,\n\tbisque: 0xffe4c4,\n\tblack: 0x000000,\n\tblanchedalmond: 0xffebcd,\n\tblue: 0x0000ff,\n\tblueviolet: 0x8a2be2,\n\tbrown: 0xa52a2a,\n\tburlywood: 0xdeb887,\n\tcadetblue: 0x5f9ea0,\n\tchartreuse: 0x7fff00,\n\tchocolate: 0xd2691e,\n\tcoral: 0xff7f50,\n\tcornflowerblue: 0x6495ed,\n\tcornsilk: 0xfff8dc,\n\tcrimson: 0xdc143c,\n\tcyan: 0x00ffff,\n\tdarkblue: 0x00008b,\n\tdarkcyan: 0x008b8b,\n\tdarkgoldenrod: 0xb8860b,\n\tdarkgray: 0xa9a9a9,\n\tdarkgreen: 0x006400,\n\tdarkgrey: 0xa9a9a9,\n\tdarkkhaki: 0xbdb76b,\n\tdarkmagenta: 0x8b008b,\n\tdarkolivegreen: 0x556b2f,\n\tdarkorange: 0xff8c00,\n\tdarkorchid: 0x9932cc,\n\tdarkred: 0x8b0000,\n\tdarksalmon: 0xe9967a,\n\tdarkseagreen: 0x8fbc8f,\n\tdarkslateblue: 0x483d8b,\n\tdarkslategray: 0x2f4f4f,\n\tdarkslategrey: 0x2f4f4f,\n\tdarkturquoise: 0x00ced1,\n\tdarkviolet: 0x9400d3,\n\tdeeppink: 0xff1493,\n\tdeepskyblue: 0x00bfff,\n\tdimgray: 0x696969,\n\tdimgrey: 0x696969,\n\tdodgerblue: 0x1e90ff,\n\tfirebrick: 0xb22222,\n\tfloralwhite: 0xfffaf0,\n\tforestgreen: 0x228b22,\n\tfuchsia: 0xff00ff,\n\tgainsboro: 0xdcdcdc,\n\tghostwhite: 0xf8f8ff,\n\tgold: 0xffd700,\n\tgoldenrod: 0xdaa520,\n\tgray: 0x808080,\n\tgreen: 0x008000,\n\tgreenyellow: 0xadff2f,\n\tgrey: 0x808080,\n\thoneydew: 0xf0fff0,\n\thotpink: 0xff69b4,\n\tindianred: 0xcd5c5c,\n\tindigo: 0x4b0082,\n\tivory: 0xfffff0,\n\tkhaki: 0xf0e68c,\n\tlavender: 0xe6e6fa,\n\tlavenderblush: 0xfff0f5,\n\tlawngreen: 0x7cfc00,\n\tlemonchiffon: 0xfffacd,\n\tlightblue: 0xadd8e6,\n\tlightcoral: 0xf08080,\n\tlightcyan: 0xe0ffff,\n\tlightgoldenrodyellow: 0xfafad2,\n\tlightgray: 0xd3d3d3,\n\tlightgreen: 0x90ee90,\n\tlightgrey: 0xd3d3d3,\n\tlightpink: 0xffb6c1,\n\tlightsalmon: 0xffa07a,\n\tlightseagreen: 0x20b2aa,\n\tlightskyblue: 0x87cefa,\n\tlightslategray: 0x778899,\n\tlightslategrey: 0x778899,\n\tlightsteelblue: 0xb0c4de,\n\tlightyellow: 0xffffe0,\n\tlime: 0x00ff00,\n\tlimegreen: 0x32cd32,\n\tlinen: 0xfaf0e6,\n\tmagenta: 0xff00ff,\n\tmaroon: 0x800000,\n\tmediumaquamarine: 0x66cdaa,\n\tmediumblue: 0x0000cd,\n\tmediumorchid: 0xba55d3,\n\tmediumpurple: 0x9370db,\n\tmediumseagreen: 0x3cb371,\n\tmediumslateblue: 0x7b68ee,\n\tmediumspringgreen: 0x00fa9a,\n\tmediumturquoise: 0x48d1cc,\n\tmediumvioletred: 0xc71585,\n\tmidnightblue: 0x191970,\n\tmintcream: 0xf5fffa,\n\tmistyrose: 0xffe4e1,\n\tmoccasin: 0xffe4b5,\n\tnavajowhite: 0xffdead,\n\tnavy: 0x000080,\n\toldlace: 0xfdf5e6,\n\tolive: 0x808000,\n\tolivedrab: 0x6b8e23,\n\torange: 0xffa500,\n\torangered: 0xff4500,\n\torchid: 0xda70d6,\n\tpalegoldenrod: 0xeee8aa,\n\tpalegreen: 0x98fb98,\n\tpaleturquoise: 0xafeeee,\n\tpalevioletred: 0xdb7093,\n\tpapayawhip: 0xffefd5,\n\tpeachpuff: 0xffdab9,\n\tperu: 0xcd853f,\n\tpink: 0xffc0cb,\n\tplum: 0xdda0dd,\n\tpowderblue: 0xb0e0e6,\n\tpurple: 0x800080,\n\n\t// Added in CSS Colors Level 4:\n\t// https://drafts.csswg.org/css-color/#changes-from-3\n\trebeccapurple: 0x663399,\n\n\tred: 0xff0000,\n\trosybrown: 0xbc8f8f,\n\troyalblue: 0x4169e1,\n\tsaddlebrown: 0x8b4513,\n\tsalmon: 0xfa8072,\n\tsandybrown: 0xf4a460,\n\tseagreen: 0x2e8b57,\n\tseashell: 0xfff5ee,\n\tsienna: 0xa0522d,\n\tsilver: 0xc0c0c0,\n\tskyblue: 0x87ceeb,\n\tslateblue: 0x6a5acd,\n\tslategray: 0x708090,\n\tslategrey: 0x708090,\n\tsnow: 0xfffafa,\n\tspringgreen: 0x00ff7f,\n\tsteelblue: 0x4682b4,\n\ttan: 0xd2b48c,\n\tteal: 0x008080,\n\tthistle: 0xd8bfd8,\n\ttomato: 0xff6347,\n\tturquoise: 0x40e0d0,\n\tviolet: 0xee82ee,\n\twheat: 0xf5deb3,\n\twhite: 0xffffff,\n\twhitesmoke: 0xf5f5f5,\n\tyellow: 0xffff00,\n\tyellowgreen: 0x9acd32\n};\n\nexport default named;\n","import parseNumber from './parseNumber.js';\nimport named from '../colors/named.js';\n\n// Also supports the `transparent` color as defined in:\n// https://drafts.csswg.org/css-color/#transparent-black\nconst parseNamed = color => {\n\treturn parseNumber(named[color.toLowerCase()], 6);\n};\n\nexport default parseNamed;\n","import parseNumber from './parseNumber.js';\n\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nconst parseHex = color => {\n\tlet match;\n\t// eslint-disable-next-line no-cond-assign\n\treturn (match = color.match(hex))\n\t\t? parseNumber(parseInt(match[1], 16), match[1].length)\n\t\t: undefined;\n};\n\nexport default parseHex;\n","/*\n\tBasic building blocks for color regexes\n\t---------------------------------------\n\n\tThese regexes are expressed as strings\n\tto be interpolated in the color regexes.\n */\n\n// <number>\nexport const num = '([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)';\n\n// <number> or 'none'\nexport const num_none = `(?:${num}|none)`;\n\n// <percentage>\nexport const per = `${num}%`;\n\n// <percent> or 'none'\nexport const per_none = `(?:${num}%|none)`;\n\n// <number-percentage> (<alpha-value>)\nexport const num_per = `(?:${num}%|${num})`;\n\n// <number-percentage> (<alpha-value>) or 'none'\nexport const num_per_none = `(?:${num}%|${num}|none)`;\n\n// <hue>\nexport const hue = `(?:${num}(deg|grad|rad|turn)|${num})`;\n\n// <hue> or 'none'\nexport const hue_none = `(?:${num}(deg|grad|rad|turn)|${num}|none)`;\n\nexport const c = `\\\\s*,\\\\s*`; // comma\nexport const so = '\\\\s*'; // space, optional\nexport const s = `\\\\s+`; // space\n\nexport const rx_num_per_none = new RegExp('^' + num_per_none + '$');\n","import { num, per, num_per, c } from '../util/regex.js';\n\n/*\n\trgb() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#rgb-functions\n */\nconst rgb_num_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${num}${c}${num}${c}${num}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst rgb_per_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseRgbLegacy = color => {\n\tlet res = { mode: 'rgb' };\n\tlet match;\n\tif ((match = color.match(rgb_num_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 255;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 255;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 255;\n\t\t}\n\t} else if ((match = color.match(rgb_per_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 100;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 100;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 100;\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\t} else if (match[5] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[5]));\n\t}\n\n\treturn res;\n};\n\nexport default parseRgbLegacy;\n","import parse from './parse.js';\n\nconst prepare = (color, mode) =>\n\tcolor === undefined\n\t\t? undefined\n\t\t: typeof color !== 'object'\n\t\t? parse(color)\n\t\t: color.mode !== undefined\n\t\t? color\n\t\t: mode\n\t\t? { ...color, mode }\n\t\t: undefined;\n\nexport default prepare;\n","import { converters } from './modes.js';\nimport prepare from './_prepare.js';\n\nconst converter =\n\t(target_mode = 'rgb') =>\n\tcolor =>\n\t\t(color = prepare(color, target_mode)) !== undefined\n\t\t\t? // if the color's mode corresponds to our target mode\n\t\t\t color.mode === target_mode\n\t\t\t\t? // then just return the color\n\t\t\t\t color\n\t\t\t\t: // otherwise check to see if we have a dedicated\n\t\t\t\t// converter for the target mode\n\t\t\t\tconverters[color.mode][target_mode]\n\t\t\t\t? // and return its result...\n\t\t\t\t converters[color.mode][target_mode](color)\n\t\t\t\t: // ...otherwise pass through RGB as an intermediary step.\n\t\t\t\t// if the target mode is RGB...\n\t\t\t\ttarget_mode === 'rgb'\n\t\t\t\t? // just return the RGB\n\t\t\t\t converters[color.mode].rgb(color)\n\t\t\t\t: // otherwise convert color.mode -> RGB -> target_mode\n\t\t\t\t converters.rgb[target_mode](converters[color.mode].rgb(color))\n\t\t\t: undefined;\n\nexport default converter;\n","import converter from './converter.js';\n\nconst converters = {};\nconst modes = {};\n\nconst parsers = [];\nconst colorProfiles = {};\n\nconst identity = v => v;\n\nconst useMode = definition => {\n\tconverters[definition.mode] = {\n\t\t...converters[definition.mode],\n\t\t...definition.toMode\n\t};\n\n\tObject.keys(definition.fromMode || {}).forEach(k => {\n\t\tif (!converters[k]) {\n\t\t\tconverters[k] = {};\n\t\t}\n\t\tconverters[k][definition.mode] = definition.fromMode[k];\n\t});\n\n\t// Color space channel ranges\n\tif (!definition.ranges) {\n\t\tdefinition.ranges = {};\n\t}\n\n\tif (!definition.difference) {\n\t\tdefinition.difference = {};\n\t}\n\n\tdefinition.channels.forEach(channel => {\n\t\t// undefined channel ranges default to the [0, 1] interval\n\t\tif (definition.ranges[channel] === undefined) {\n\t\t\tdefinition.ranges[channel] = [0, 1];\n\t\t}\n\n\t\tif (!definition.interpolate[channel]) {\n\t\t\tthrow new Error(`Missing interpolator for: ${channel}`);\n\t\t}\n\n\t\tif (typeof definition.interpolate[channel] === 'function') {\n\t\t\tdefinition.interpolate[channel] = {\n\t\t\t\tuse: definition.interpolate[channel]\n\t\t\t};\n\t\t}\n\n\t\tif (!definition.interpolate[channel].fixup) {\n\t\t\tdefinition.interpolate[channel].fixup = identity;\n\t\t}\n\t});\n\n\tmodes[definition.mode] = definition;\n\t(definition.parse || []).forEach(parser => {\n\t\tuseParser(parser, definition.mode);\n\t});\n\n\treturn converter(definition.mode);\n};\n\nconst getMode = mode => modes[mode];\n\nconst useParser = (parser, mode) => {\n\tif (typeof parser === 'string') {\n\t\tif (!mode) {\n\t\t\tthrow new Error(`'mode' required when 'parser' is a string`);\n\t\t}\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === 'function') {\n\t\tif (parsers.indexOf(parser) < 0) {\n\t\t\tparsers.push(parser);\n\t\t}\n\t}\n};\n\nconst removeParser = parser => {\n\tif (typeof parser === 'string') {\n\t\tdelete colorProfiles[parser];\n\t} else if (typeof parser === 'function') {\n\t\tconst idx = parsers.indexOf(parser);\n\t\tif (idx > 0) {\n\t\t\tparsers.splice(idx, 1);\n\t\t}\n\t}\n};\n\nexport {\n\tuseMode,\n\tgetMode,\n\tuseParser,\n\tremoveParser,\n\tconverters,\n\tparsers,\n\tcolorProfiles\n};\n","import { parsers, colorProfiles, getMode } from './modes.js';\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\n\nexport const Tok = {\n\tFunction: 'function',\n\tIdent: 'ident',\n\tNumber: 'number',\n\tPercentage: 'percentage',\n\tParenClose: ')',\n\tNone: 'none',\n\tHue: 'hue',\n\tAlpha: 'alpha'\n};\n\nlet _i = 0;\n\n/*\n\t4.3.10. Check if three code points would start a number\n\thttps://drafts.csswg.org/css-syntax/#starts-with-a-number\n */\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === '-' || ch === '+') {\n\t\treturn /\\d/.test(ch1) || (ch1 === '.' && /\\d/.test(chars[_i + 2]));\n\t}\n\tif (ch === '.') {\n\t\treturn /\\d/.test(ch1);\n\t}\n\treturn /\\d/.test(ch);\n}\n\n/*\n\tCheck if the stream starts with an identifier.\n */\n\nfunction is_ident(chars) {\n\tif (_i >= chars.length) {\n\t\treturn false;\n\t}\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) {\n\t\treturn true;\n\t}\n\tif (ch === '-') {\n\t\tif (chars.length - _i < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === '-' || IdentStartCodePoint.test(ch1)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n}\n\n/*\n\t4.3.3. Consume a numeric token\n\thttps://drafts.csswg.org/css-syntax/#consume-numeric-token\n */\n\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\n\nfunction num(chars) {\n\tlet value = '';\n\tif (chars[_i] === '-' || chars[_i] === '+') {\n\t\tvalue += chars[_i++];\n\t}\n\tvalue += digits(chars);\n\tif (chars[_i] === '.' && /\\d/.test(chars[_i + 1])) {\n\t\tvalue += chars[_i++] + digits(chars);\n\t}\n\tif (chars[_i] === 'e' || chars[_i] === 'E') {\n\t\tif (\n\t\t\t(chars[_i + 1] === '-' || chars[_i + 1] === '+') &&\n\t\t\t/\\d/.test(chars[_i + 2])\n\t\t) {\n\t\t\tvalue += chars[_i++] + chars[_i++] + digits(chars);\n\t\t} else if (/\\d/.test(chars[_i + 1])) {\n\t\t\tvalue += chars[_i++] + digits(chars);\n\t\t}\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === 'deg' || id === 'rad' || id === 'turn' || id === 'grad') {\n\t\t\treturn { type: Tok.Hue, value: value * huenits[id] };\n\t\t}\n\t\treturn undefined;\n\t}\n\tif (chars[_i] === '%') {\n\t\t_i++;\n\t\treturn { type: Tok.Percentage, value: +value };\n\t}\n\treturn { type: Tok.Number, value: +value };\n}\n\n/*\n\tConsume digits.\n */\nfunction digits(chars) {\n\tlet v = '';\n\twhile (/\\d/.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an identifier.\n */\nfunction ident(chars) {\n\tlet v = '';\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an ident-like token.\n */\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === '(') {\n\t\t_i++;\n\t\treturn { type: Tok.Function, value: v };\n\t}\n\tif (v === 'none') {\n\t\treturn { type: Tok.None, value: undefined };\n\t}\n\treturn { type: Tok.Ident, value: v };\n}\n\nexport function tokenize(str = '') {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\n\t/* reset counter */\n\t_i = 0;\n\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\n\t\t/*\n\t\t\tConsume whitespace without emitting it\n\t\t */\n\t\tif (ch === '\\n' || ch === '\\t' || ch === ' ') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === ',') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === ')') {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '+') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '-') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({ type: Tok.Ident, value: ident(chars) });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '.') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '/') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({ type: Tok.Alpha, value: alpha });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === 'none') {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: { type: Tok.None, value: undefined }\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\t/*\n\t\t\tTreat everything not already handled as an error.\n\t\t */\n\t\treturn undefined;\n\t}\n\n\treturn tokens;\n}\n\nexport function parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== 'color') {\n\t\treturn undefined;\n\t}\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) {\n\t\treturn undefined;\n\t}\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c, ch; ii < channels.length; ii++) {\n\t\tc = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c.type !== Tok.None) {\n\t\t\tres[ch] = c.type === Tok.Number ? c.value : c.value / 100;\n\t\t\tif (ch === 'alpha') {\n\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t\t}\n\t\t}\n\t}\n\treturn res;\n}\n\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (\n\t\t\ttoken.type === Tok.None ||\n\t\t\ttoken.type === Tok.Number ||\n\t\t\ttoken.type === Tok.Alpha ||\n\t\t\ttoken.type === Tok.Percentage ||\n\t\t\t(includeHue && token.type === Tok.Hue)\n\t\t) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tif (coords.length < 3 || coords.length > 4) {\n\t\treturn undefined;\n\t}\n\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) {\n\t\tcoords.push({ type: Tok.None, value: undefined });\n\t}\n\n\treturn coords.every(c => c.type !== Tok.Alpha) ? coords : undefined;\n}\n\nexport function parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) {\n\t\treturn undefined;\n\t}\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tcoords.unshift(token.value);\n\treturn coords;\n}\n\nconst parse = color => {\n\tif (typeof color !== 'string') {\n\t\treturn undefined;\n\t}\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : undefined;\n\tlet result = undefined;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) {\n\t\tif ((result = parsers[i++](color, parsed)) !== undefined) {\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn tokens ? parseColorSyntax(tokens) : undefined;\n};\n\nexport default parse;\n","import { Tok } from '../parse.js';\n\nfunction parseRgb(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'rgb' && parsed[0] !== 'rgba')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'rgb' };\n\tconst [, r, g, b, alpha] = parsed;\n\tif (r.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (r.type !== Tok.None) {\n\t\tres.r = r.type === Tok.Number ? r.value / 255 : r.value / 100;\n\t}\n\tif (g.type !== Tok.None) {\n\t\tres.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseRgb;\n","const parseTransparent = c =>\n\tc === 'transparent'\n\t\t? { mode: 'rgb', r: 0, g: 0, b: 0, alpha: 0 }\n\t\t: undefined;\n\nexport default parseTransparent;\n","const lerp = (a, b, t) => a + t * (b - a);\nconst unlerp = (a, b, v) => (v - a) / (b - a);\n\nconst blerp = (a00, a01, a10, a11, tx, ty) => {\n\treturn lerp(lerp(a00, a01, tx), lerp(a10, a11, tx), ty);\n};\n\nconst trilerp = (\n\ta000,\n\ta010,\n\ta100,\n\ta110,\n\ta001,\n\ta011,\n\ta101,\n\ta111,\n\ttx,\n\tty,\n\ttz\n) => {\n\treturn lerp(\n\t\tblerp(a000, a010, a100, a110, tx, ty),\n\t\tblerp(a001, a011, a101, a111, tx, ty),\n\t\ttz\n\t);\n};\n\nexport { lerp, blerp, trilerp, unlerp };\n","const get_classes = arr => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === undefined && b === undefined) {\n\t\t\tclasses.push(undefined);\n\t\t} else if (a !== undefined && b !== undefined) {\n\t\t\tclasses.push([a, b]);\n\t\t} else {\n\t\t\tclasses.push(a !== undefined ? [a, a] : [b, b]);\n\t\t}\n\t}\n\treturn classes;\n};\n\nconst interpolatorPiecewise = interpolator => arr => {\n\tlet classes = get_classes(arr);\n\treturn t => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === undefined\n\t\t\t? undefined\n\t\t\t: interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\nexport { interpolatorPiecewise };\n","import { lerp } from './lerp.js';\nimport { interpolatorPiecewise } from './piecewise.js';\n\nexport const interpolatorLinear = interpolatorPiecewise(lerp);\n","const fixupAlpha = arr => {\n\tlet some_defined = false;\n\tlet res = arr.map(v => {\n\t\tif (v !== undefined) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\nexport { fixupAlpha };\n","import parseNamed from './parseNamed.js';\nimport parseHex from './parseHex.js';\nimport parseRgbLegacy from './parseRgbLegacy.js';\nimport parseRgb from './parseRgb.js';\nimport parseTransparent from './parseTransparent.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tsRGB color space\n */\n\nconst definition = {\n\tmode: 'rgb',\n\tchannels: ['r', 'g', 'b', 'alpha'],\n\tparse: [\n\t\tparseRgb,\n\t\tparseHex,\n\t\tparseRgbLegacy,\n\t\tparseNamed,\n\t\tparseTransparent,\n\t\t'srgb'\n\t],\n\tserialize: 'srgb',\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\tgamut: true,\n\twhite: { r: 1, g: 1, b: 1 },\n\tblack: { r: 0, g: 0, b: 0 }\n};\n\nexport default definition;\n","/*\n\tConvert A98 RGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n*/\n\nconst linearize = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\n\nconst convertA98ToXyz65 = a98 => {\n\tlet r = linearize(a98.r);\n\tlet g = linearize(a98.g);\n\tlet b = linearize(a98.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.5766690429101305 * r +\n\t\t\t0.1855582379065463 * g +\n\t\t\t0.1882286462349947 * b,\n\t\ty:\n\t\t\t0.297344975250536 * r +\n\t\t\t0.6273635662554661 * g +\n\t\t\t0.0752914584939979 * b,\n\t\tz:\n\t\t\t0.0270313613864123 * r +\n\t\t\t0.0706888525358272 * g +\n\t\t\t0.9913375368376386 * b\n\t};\n\tif (a98.alpha !== undefined) {\n\t\tres.alpha = a98.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertA98ToXyz65;\n","/*\n\tConvert CIE XYZ D65 values to A98 RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\n\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'a98',\n\t\tr: gamma(\n\t\t\tx * 2.0415879038107465 -\n\t\t\t\ty * 0.5650069742788597 -\n\t\t\t\t0.3447313507783297 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.9692436362808798 +\n\t\t\t\ty * 1.8759675015077206 +\n\t\t\t\t0.0415550574071756 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0134442806320312 -\n\t\t\t\ty * 0.1183623922310184 +\n\t\t\t\t1.0151749943912058 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToA98;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs <= 0.04045) {\n\t\treturn c / 12.92;\n\t}\n\treturn (Math.sign(c) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n};\n\nconst convertRgbToLrgb = ({ r, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToLrgb;\n","/*\n\tConvert sRGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.4123907992659593 * r +\n\t\t\t0.357584339383878 * g +\n\t\t\t0.1804807884018343 * b,\n\t\ty:\n\t\t\t0.2126390058715102 * r +\n\t\t\t0.715168678767756 * g +\n\t\t\t0.0721923153607337 * b,\n\t\tz:\n\t\t\t0.0193308187155918 * r +\n\t\t\t0.119194779794626 * g +\n\t\t\t0.9505321522496607 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz65;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs > 0.0031308) {\n\t\treturn (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);\n\t}\n\treturn c * 12.92;\n};\n\nconst convertLrgbToRgb = ({ r, g, b, alpha }, mode = 'rgb') => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLrgbToRgb;\n","/*\n\tCIE XYZ D65 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.2409699419045226 -\n\t\t\ty * 1.5373831775700939 -\n\t\t\t0.4986107602930034 * z,\n\t\tg:\n\t\t\tx * -0.9692436362808796 +\n\t\t\ty * 1.8759675015077204 +\n\t\t\t0.0415550574071756 * z,\n\t\tb:\n\t\t\tx * 0.0556300796969936 -\n\t\t\ty * 0.2039769588889765 +\n\t\t\t1.0569715142428784 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRgb;\n","import rgb from '../rgb/definition.js';\n\nimport convertA98ToXyz65 from './convertA98ToXyz65.js';\nimport convertXyz65ToA98 from './convertXyz65ToA98.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'a98',\n\tparse: ['a98-rgb'],\n\tserialize: 'a98-rgb',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToA98(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToA98\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertA98ToXyz65(color)),\n\t\txyz65: convertA98ToXyz65\n\t}\n};\n\nexport default definition;\n","const normalizeHue = hue => ((hue = hue % 360) < 0 ? hue + 360 : hue);\n\nexport default normalizeHue;\n","import normalizeHue from '../util/normalizeHue.js';\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (l === undefined) l = 0;\n\tlet m1 = l + s * (l < 0.5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: m1, g: m2, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: m2, g: m1, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: 2 * l - m1, g: m1, b: m2 };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: 2 * l - m1, g: m2, b: m1 };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: m2, g: 2 * l - m1, b: m1 };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: m1, g: 2 * l - m1, b: m2 };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: 2 * l - m1, g: 2 * l - m1, b: 2 * l - m1 };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsl({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsl',\n\t\ts: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),\n\t\tl: 0.5 * (M + m)\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","const hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase 'deg':\n\t\t\treturn +val;\n\t\tcase 'rad':\n\t\t\treturn (val / Math.PI) * 180;\n\t\tcase 'grad':\n\t\t\treturn (val / 10) * 9;\n\t\tcase 'turn':\n\t\t\treturn val * 360;\n\t}\n};\n\nexport default hueToDeg;\n","import hueToDeg from '../util/hue.js';\nimport { hue, per, num_per, c } from '../util/regex.js';\n\n/*\n\thsl() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#the-hsl-notation\n */\nconst hsl_old = new RegExp(\n\t`^hsla?\\\\(\\\\s*${hue}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseHslLegacy = color => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: 'hsl' };\n\n\tif (match[3] !== undefined) {\n\t\tres.h = +match[3];\n\t} else if (match[1] !== undefined && match[2] !== undefined) {\n\t\tres.h = hueToDeg(match[1], match[2]);\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.s = Math.min(Math.max(0, match[4] / 100), 1);\n\t}\n\n\tif (match[5] !== undefined) {\n\t\tres.l = Math.min(Math.max(0, match[5] / 100), 1);\n\t}\n\n\tif (match[6] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\t} else if (match[7] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[7]));\n\t}\n\treturn res;\n};\n\nexport default parseHslLegacy;\n","import { Tok } from '../parse.js';\n\nfunction parseHsl(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'hsl' && parsed[0] !== 'hsla')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hsl' };\n\tconst [, h, s, l, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.s = s.value / 100;\n\t}\n\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = l.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseHsl;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst hue = (hues, fn) => {\n\treturn hues\n\t\t.map((hue, idx, arr) => {\n\t\t\tif (hue === undefined) {\n\t\t\t\treturn hue;\n\t\t\t}\n\t\t\tlet normalized = normalizeHue(hue);\n\t\t\tif (idx === 0 || hues[idx - 1] === undefined) {\n\t\t\t\treturn normalized;\n\t\t\t}\n\t\t\treturn fn(normalized - normalizeHue(arr[idx - 1]));\n\t\t})\n\t\t.reduce((acc, curr) => {\n\t\t\tif (\n\t\t\t\t!acc.length ||\n\t\t\t\tcurr === undefined ||\n\t\t\t\tacc[acc.length - 1] === undefined\n\t\t\t) {\n\t\t\t\tacc.push(curr);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tacc.push(curr + acc[acc.length - 1]);\n\t\t\treturn acc;\n\t\t}, []);\n};\n\nconst fixupHueShorter = arr =>\n\thue(arr, d => (Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d)));\nconst fixupHueLonger = arr =>\n\thue(arr, d => (Math.abs(d) >= 180 || d === 0 ? d : d - 360 * Math.sign(d)));\nconst fixupHueIncreasing = arr => hue(arr, d => (d >= 0 ? d : d + 360));\nconst fixupHueDecreasing = arr => hue(arr, d => (d <= 0 ? d : d - 360));\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n};\n","import { getMode } from './modes.js';\nimport converter from './converter.js';\nimport normalizeHue from './util/normalizeHue.js';\n\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.s || !smp.s) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\n\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) {\n\t\t// todo should this be normalized once again?\n\t\treturn std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\t}\n\treturn smp_h - std_h;\n};\n\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.c || !smp.c) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\n\nconst differenceEuclidean = (mode = 'rgb', weights = [1, 1, 1, 0]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(\n\t\t\tchannels.reduce((sum, k, idx) => {\n\t\t\t\tlet delta = diffs[k]\n\t\t\t\t\t? diffs[k](ConvStd, ConvSmp)\n\t\t\t\t\t: ConvStd[k] - ConvSmp[k];\n\t\t\t\treturn (\n\t\t\t\t\tsum +\n\t\t\t\t\t(weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2)\n\t\t\t\t);\n\t\t\t}, 0)\n\t\t);\n\t};\n};\n\nconst differenceCie76 = () => differenceEuclidean('lab65');\n\nconst differenceCie94 = (kL = 1, K1 = 0.045, K2 = 0.015) => {\n\tlet lab = converter('lab65');\n\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\t// Extract Lab values, and compute Chroma\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(kL, 2) +\n\t\t\t\tdC2 / Math.pow(1 + K1 * cStd, 2) +\n\t\t\t\tdH2 / Math.pow(1 + K2 * cStd, 2)\n\t\t);\n\t};\n};\n\n/*\n\tCIEDE2000 color difference, original Matlab implementation by Gaurav Sharma\n\tBased on \"The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations\" \n\tby Gaurav Sharma, Wencheng Wu, Edul N. Dalal in Color Research and Application, vol. 30. No. 1, pp. 21-30, February 2005.\n\thttp://www2.ece.rochester.edu/~gsharma/ciede2000/\n */\n\nconst differenceCiede2000 = (Kl = 1, Kc = 1, Kh = 1) => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet cAvg = (cStd + cSmp) / 2;\n\n\t\tlet G =\n\t\t\t0.5 *\n\t\t\t(1 -\n\t\t\t\tMath.sqrt(\n\t\t\t\t\tMath.pow(cAvg, 7) / (Math.pow(cAvg, 7) + Math.pow(25, 7))\n\t\t\t\t));\n\n\t\tlet apStd = aStd * (1 + G);\n\t\tlet apSmp = aSmp * (1 + G);\n\n\t\tlet cpStd = Math.sqrt(apStd * apStd + bStd * bStd);\n\t\tlet cpSmp = Math.sqrt(apSmp * apSmp + bSmp * bSmp);\n\n\t\tlet hpStd =\n\t\t\tMath.abs(apStd) + Math.abs(bStd) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bStd, apStd);\n\t\thpStd += (hpStd < 0) * 2 * Math.PI;\n\n\t\tlet hpSmp =\n\t\t\tMath.abs(apSmp) + Math.abs(bSmp) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bSmp, apSmp);\n\t\thpSmp += (hpSmp < 0) * 2 * Math.PI;\n\n\t\tlet dL = lSmp - lStd;\n\t\tlet dC = cpSmp - cpStd;\n\n\t\tlet dhp = cpStd * cpSmp === 0 ? 0 : hpSmp - hpStd;\n\t\tdhp -= (dhp > Math.PI) * 2 * Math.PI;\n\t\tdhp += (dhp < -Math.PI) * 2 * Math.PI;\n\n\t\tlet dH = 2 * Math.sqrt(cpStd * cpSmp) * Math.sin(dhp / 2);\n\n\t\tlet Lp = (lStd + lSmp) / 2;\n\t\tlet Cp = (cpStd + cpSmp) / 2;\n\n\t\tlet hp;\n\t\tif (cpStd * cpSmp === 0) {\n\t\t\thp = hpStd + hpSmp;\n\t\t} else {\n\t\t\thp = (hpStd + hpSmp) / 2;\n\t\t\thp -= (Math.abs(hpStd - hpSmp) > Math.PI) * Math.PI;\n\t\t\thp += (hp < 0) * 2 * Math.PI;\n\t\t}\n\n\t\tlet Lpm50 = Math.pow(Lp - 50, 2);\n\t\tlet T =\n\t\t\t1 -\n\t\t\t0.17 * Math.cos(hp - Math.PI / 6) +\n\t\t\t0.24 * Math.cos(2 * hp) +\n\t\t\t0.32 * Math.cos(3 * hp + Math.PI / 30) -\n\t\t\t0.2 * Math.cos(4 * hp - (63 * Math.PI) / 180);\n\n\t\tlet Sl = 1 + (0.015 * Lpm50) / Math.sqrt(20 + Lpm50);\n\t\tlet Sc = 1 + 0.045 * Cp;\n\t\tlet Sh = 1 + 0.015 * Cp * T;\n\n\t\tlet deltaTheta =\n\t\t\t((30 * Math.PI) / 180) *\n\t\t\tMath.exp(-1 * Math.pow(((180 / Math.PI) * hp - 275) / 25, 2));\n\t\tlet Rc =\n\t\t\t2 *\n\t\t\tMath.sqrt(Math.pow(Cp, 7) / (Math.pow(Cp, 7) + Math.pow(25, 7)));\n\n\t\tlet Rt = -1 * Math.sin(2 * deltaTheta) * Rc;\n\n\t\treturn Math.sqrt(\n\t\t\tMath.pow(dL / (Kl * Sl), 2) +\n\t\t\t\tMath.pow(dC / (Kc * Sc), 2) +\n\t\t\t\tMath.pow(dH / (Kh * Sh), 2) +\n\t\t\t\t(((Rt * dC) / (Kc * Sc)) * dH) / (Kh * Sh)\n\t\t);\n\t};\n};\n\n/*\n\tCMC (l:c) difference formula\n\n\tReferences:\n\t\thttps://en.wikipedia.org/wiki/Color_difference#CMC_l:c_(1984)\n\t\thttp://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n */\nconst differenceCmc = (l = 1, c = 1) => {\n\tlet lab = converter('lab65');\n\n\t/*\n\t\tComparte two colors:\n\t\tstd - standard (first) color\n\t\tsmp - sample (second) color\n\t */\n\treturn (std, smp) => {\n\t\t// convert standard color to Lab\n\t\tlet LabStd = lab(std);\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\n\t\t// Obtain hue/chroma\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\t\tlet hStd = Math.atan2(bStd, aStd);\n\t\thStd = hStd + 2 * Math.PI * (hStd < 0);\n\n\t\t// convert sample color to Lab, obtain LCh\n\t\tlet LabSmp = lab(smp);\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\n\t\t// Obtain chroma\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\t// lightness delta squared\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\n\t\t// chroma delta squared\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\n\t\t// hue delta squared\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\tlet F = Math.sqrt(Math.pow(cStd, 4) / (Math.pow(cStd, 4) + 1900));\n\t\tlet T =\n\t\t\thStd >= (164 / 180) * Math.PI && hStd <= (345 / 180) * Math.PI\n\t\t\t\t? 0.56 + Math.abs(0.2 * Math.cos(hStd + (168 / 180) * Math.PI))\n\t\t\t\t: 0.36 + Math.abs(0.4 * Math.cos(hStd + (35 / 180) * Math.PI));\n\n\t\tlet Sl = lStd < 16 ? 0.511 : (0.040975 * lStd) / (1 + 0.01765 * lStd);\n\t\tlet Sc = (0.0638 * cStd) / (1 + 0.0131 * cStd) + 0.638;\n\t\tlet Sh = Sc * (F * T + 1 - F);\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(l * Sl, 2) +\n\t\t\t\tdC2 / Math.pow(c * Sc, 2) +\n\t\t\t\tdH2 / Math.pow(Sh, 2)\n\t\t);\n\t};\n};\n\n/*\n\n\tHyAB color difference formula, introduced in:\n\n\t\tAbasi S, Amani Tehran M, Fairchild MD. \n\t\t\"Distance metrics for very large color differences.\"\n\t\tColor Res Appl. 2019; 1–16. \n\t\thttps://doi.org/10.1002/col.22451\n\n\tPDF available at:\n\t\n\t\thttp://markfairchild.org/PDFs/PAP40.pdf\n */\nconst differenceHyab = () => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\t\tlet dL = LabStd.l - LabSmp.l;\n\t\tlet dA = LabStd.a - LabSmp.a;\n\t\tlet dB = LabStd.b - LabSmp.b;\n\t\treturn Math.abs(dL) + Math.sqrt(dA * dA + dB * dB);\n\t};\n};\n\n/*\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\nconst differenceKotsarenkoRamos = () =>\n\tdifferenceEuclidean('yiq', [0.5053, 0.299, 0.1957]);\n\n/*\n\tΔE_ITP, as defined in Rec. ITU-R BT.2124:\n\n\thttps://www.itu.int/rec/R-REC-BT.2124/en\n*/\nconst differenceItp = () =>\n\tdifferenceEuclidean('itp', [518400, 129600, 518400]);\n\nexport {\n\tdifferenceHueChroma,\n\tdifferenceHueSaturation,\n\tdifferenceHueNaive,\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n};\n","import converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst averageAngle = val => {\n\t// See: https://en.wikipedia.org/wiki/Mean_of_circular_quantities\n\tlet sum = val.reduce(\n\t\t(sum, val) => {\n\t\t\tif (val !== undefined) {\n\t\t\t\tlet rad = (val * Math.PI) / 180;\n\t\t\t\tsum.sin += Math.sin(rad);\n\t\t\t\tsum.cos += Math.cos(rad);\n\t\t\t}\n\t\t\treturn sum;\n\t\t},\n\t\t{ sin: 0, cos: 0 }\n\t);\n\tlet angle = (Math.atan2(sum.sin, sum.cos) * 180) / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\nconst averageNumber = val => {\n\tlet a = val.filter(v => v !== undefined);\n\treturn a.length ? a.reduce((sum, v) => sum + v, 0) / a.length : undefined;\n};\n\nconst isfn = o => typeof o === 'function';\n\nfunction average(colors, mode = 'rgb', overrides) {\n\tlet def = getMode(mode);\n\tlet cc = colors.map(converter(mode));\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\tlet arr = cc.map(c => c[ch]).filter(val => val !== undefined);\n\t\t\tif (arr.length) {\n\t\t\t\tlet fn;\n\t\t\t\tif (isfn(overrides)) {\n\t\t\t\t\tfn = overrides;\n\t\t\t\t} else if (overrides && isfn(overrides[ch])) {\n\t\t\t\t\tfn = overrides[ch];\n\t\t\t\t} else if (def.average && isfn(def.average[ch])) {\n\t\t\t\t\tfn = def.average[ch];\n\t\t\t\t} else {\n\t\t\t\t\tfn = averageNumber;\n\t\t\t\t}\n\t\t\t\tres[ch] = fn(arr, ch);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n}\n\nexport { average, averageAngle, averageNumber };\n","import convertHslToRgb from './convertHslToRgb.js';\nimport convertRgbToHsl from './convertRgbToHsl.js';\nimport parseHslLegacy from './parseHslLegacy.js';\nimport parseHsl from './parseHsl.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsl',\n\n\ttoMode: {\n\t\trgb: convertHslToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHsl\n\t},\n\n\tchannels: ['h', 's', 'l', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHsl, parseHslLegacy],\n\tserialize: c =>\n\t\t`hsl(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.s !== undefined ? c.s * 100 + '%' : 'none'\n\t\t} ${c.l !== undefined ? c.l * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (v === undefined) v = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: v, g: v * (1 - s * f), b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: v * (1 - s * f), g: v, b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: v * (1 - s), g: v, b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s * f), b: v };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: v * (1 - s * f), g: v * (1 - s), b: v };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: v, g: v * (1 - s), b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s) };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsv({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsv',\n\t\ts: M === 0 ? 0 : 1 - m / M,\n\t\tv: M\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsvToRgb from './convertHsvToRgb.js';\nimport convertRgbToHsv from './convertRgbToHsv.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsv',\n\n\ttoMode: {\n\t\trgb: convertHsvToRgb\n\t},\n\n\tparse: ['--hsv'],\n\tserialize: '--hsv',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsv\n\t},\n\n\tchannels: ['h', 's', 'v', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tHWB to RGB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertHsvToRgb from '../hsv/convertHsvToRgb.js';\n\nexport default function convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === undefined) w = 0;\n\tif (b === undefined) b = 0;\n\t// normalize w + b to 1\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th: h,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha: alpha\n\t});\n}\n","/*\n\tRGB to HWB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertRgbToHsv from '../hsv/convertRgbToHsv.js';\n\nexport default function convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === undefined) return undefined;\n\tlet s = hsv.s !== undefined ? hsv.s : 0;\n\tlet v = hsv.v !== undefined ? hsv.v : 0;\n\tlet res = {\n\t\tmode: 'hwb',\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv.h !== undefined) res.h = hsv.h;\n\tif (hsv.alpha !== undefined) res.alpha = hsv.alpha;\n\treturn res;\n}\n","import { Tok } from '../parse.js';\n\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== 'hwb') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hwb' };\n\tconst [, h, w, b, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.w = w.value / 100;\n\t}\n\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.b = b.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default ParseHwb;\n","import convertHwbToRgb from './convertHwbToRgb.js';\nimport convertRgbToHwb from './convertRgbToHwb.js';\nimport parseHwb from './parseHwb.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueNaive } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hwb',\n\n\ttoMode: {\n\t\trgb: convertHwbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHwb\n\t},\n\n\tchannels: ['h', 'w', 'b', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHwb],\n\tserialize: c =>\n\t\t`hwb(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.w !== undefined ? c.w * 100 + '%' : 'none'\n\t\t} ${c.b !== undefined ? c.b * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueNaive\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","/*\n\tThe XYZ tristimulus values (white point)\n\tof standard illuminants for the CIE 1931 2° \n\tstandard observer.\n\n\tSee: https://en.wikipedia.org/wiki/Standard_illuminant\n */\n\nexport const D50 = {\n\tX: 0.3457 / 0.3585,\n\tY: 1,\n\tZ: (1 - 0.3457 - 0.3585) / 0.3585\n};\n\nexport const D65 = {\n\tX: 0.3127 / 0.329,\n\tY: 1,\n\tZ: (1 - 0.3127 - 0.329) / 0.329\n};\n\nexport const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx: fn(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(fz) * D50.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLabToXyz50;\n","/*\n\tCIE XYZ D50 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.1341359569958707 -\n\t\t\ty * 1.6173863321612538 -\n\t\t\t0.4906619460083532 * z,\n\t\tg:\n\t\t\tx * -0.978795502912089 +\n\t\t\ty * 1.916254567259524 +\n\t\t\t0.03344273116131949 * z,\n\t\tb:\n\t\t\tx * 0.07195537988411677 -\n\t\t\ty * 0.2289768264158322 +\n\t\t\t1.405386058324125 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToRgb;\n","import convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\n\nconst convertLabToRgb = lab => convertXyz50ToRgb(convertLabToXyz50(lab));\n\nexport default convertLabToRgb;\n","/*\n\tConvert sRGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz50 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.436065742824811 * r +\n\t\t\t0.3851514688337912 * g +\n\t\t\t0.14307845442264197 * b,\n\t\ty:\n\t\t\t0.22249319175623702 * r +\n\t\t\t0.7168870538238823 * g +\n\t\t\t0.06061979053616537 * b,\n\t\tz:\n\t\t\t0.013923904500943465 * r +\n\t\t\t0.09708128566574634 * g +\n\t\t\t0.7140993584005155 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz50;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(z / D50.Z);\n\n\tlet res = {\n\t\tmode: 'lab',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLab;\n","import convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\n\nconst convertRgbToLab = rgb => {\n\tlet res = convertXyz50ToLab(convertRgbToXyz50(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 125) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 125) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLab;\n","import convertLabToRgb from './convertLabToRgb.js';\nimport convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertRgbToLab from './convertRgbToLab.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\nimport parseLab from './parseLab.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'lab',\n\n\ttoMode: {\n\t\txyz50: convertLabToXyz50,\n\t\trgb: convertLabToRgb\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab,\n\t\trgb: convertRgbToLab\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\n\tparse: [parseLab],\n\tserialize: c =>\n\t\t`lab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLab65ToXyz65;\n","import convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst convertLab65ToRgb = lab => convertXyz65ToRgb(convertLab65ToXyz65(lab));\n\nexport default convertLab65ToRgb;\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToLab65;\n","import convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\n\nconst convertRgbToLab65 = rgb => {\n\tlet res = convertXyz65ToLab65(convertRgbToXyz65(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab65;\n","import convertLab65ToRgb from './convertLab65ToRgb.js';\nimport convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertRgbToLab65 from './convertRgbToLab65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\nimport lab from '../lab/definition.js';\n\nconst definition = {\n\t...lab,\n\tmode: 'lab65',\n\n\tparse: ['--lab-d65'],\n\tserialize: '--lab-d65',\n\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65,\n\t\trgb: convertLab65ToRgb\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65,\n\t\trgb: convertRgbToLab65\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lab-to-lch\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLabToLch = ({ l, a, b, alpha }, mode = 'lch') => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = { mode, l, c };\n\tif (c) res.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLabToLch;\n","/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lch-to-lab\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLchToLab = ({ l, c, h, alpha }, mode = 'lab') => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLchToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 150) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLch;\n","import convertLabToLch from './convertLabToLch.js';\nimport convertLchToLab from './convertLchToLab.js';\nimport convertLabToRgb from '../lab/convertLabToRgb.js';\nimport convertRgbToLab from '../lab/convertRgbToLab.js';\nimport parseLch from './parseLch.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'lch',\n\n\ttoMode: {\n\t\tlab: convertLchToLab,\n\t\trgb: c => convertLabToRgb(convertLchToLab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab(c)),\n\t\tlab: convertLabToLch\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\n\tparse: [parseLch],\n\tserialize: c =>\n\t\t`lch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport lch from '../lch/definition.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'lch65',\n\n\tparse: ['--lch-d65'],\n\tserialize: '--lch-d65',\n\n\ttoMode: {\n\t\tlab65: c => convertLchToLab(c, 'lab65'),\n\t\trgb: c => convertLab65ToRgb(convertLchToLab(c, 'lab65'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab65(c), 'lch65'),\n\t\tlab65: c => convertLabToLch(c, 'lch65')\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","import rgb from '../rgb/definition.js';\nimport convertRgbToLrgb from './convertRgbToLrgb.js';\nimport convertLrgbToRgb from './convertLrgbToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'lrgb',\n\n\ttoMode: {\n\t\trgb: convertLrgbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLrgb\n\t},\n\n\tparse: ['srgb-linear'],\n\tserialize: 'srgb-linear'\n};\n\nexport default definition;\n","const convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.pow(l + 0.3963377773761749 * a + 0.2158037573099136 * b, 3);\n\tlet M = Math.pow(l - 0.1055613458156586 * a - 0.0638541728258133 * b, 3);\n\tlet S = Math.pow(l - 0.0894841775298119 * a - 1.2914855480194092 * b, 3);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t4.0767416360759574 * L -\n\t\t\t3.3077115392580616 * M +\n\t\t\t0.2309699031821044 * S,\n\t\tg:\n\t\t\t-1.2684379732850317 * L +\n\t\t\t2.6097573492876887 * M -\n\t\t\t0.3413193760026573 * S,\n\t\tb:\n\t\t\t-0.0041960761386756 * L -\n\t\t\t0.7034186179359362 * M +\n\t\t\t1.7076146940746117 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertOklabToLrgb;\n","const convertLrgbToOklab = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.cbrt(\n\t\t0.412221469470763 * r + 0.5363325372617348 * g + 0.0514459932675022 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034958178252 * r + 0.6806995506452344 * g + 0.1073969535369406 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.0883024591900564 * r + 0.2817188391361215 * g + 0.6299787016738222 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl:\n\t\t\t0.210454268309314 * L +\n\t\t\t0.7936177747023054 * M -\n\t\t\t0.0040720430116193 * S,\n\t\ta:\n\t\t\t1.9779985324311684 * L -\n\t\t\t2.4285922420485799 * M +\n\t\t\t0.450593709617411 * S,\n\t\tb:\n\t\t\t0.0259040424655478 * L +\n\t\t\t0.7827717124575296 * M -\n\t\t\t0.8086757549230774 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLrgbToOklab;\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\n\nconst convertRgbToOklab = rgb => {\n\tlet res = convertLrgbToOklab(convertRgbToLrgb(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToOklab;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport convertOklabToLrgb from './convertOklabToLrgb.js';\n\nconst convertOklabToRgb = c => convertLrgbToRgb(convertOklabToLrgb(c));\n\nexport default convertOklabToRgb;\n","import { Tok } from '../parse.js';\n\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 0.4) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 0.4) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklab;\n","import convertOklabToLrgb from './convertOklabToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\nimport convertRgbToOklab from './convertRgbToOklab.js';\nimport convertOklabToRgb from './convertOklabToRgb.js';\nimport parseOklab from './parseOklab.js';\n\nimport lab from '../lab/definition.js';\n\n/*\n\tOklab, a perceptual color space for image processing by Björn Ottosson\n\tReference: https://bottosson.github.io/posts/oklab/\n */\n\nconst definition = {\n\t...lab,\n\tmode: 'oklab',\n\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb,\n\t\trgb: convertOklabToRgb\n\t},\n\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab,\n\t\trgb: convertRgbToOklab\n\t},\n\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-0.4, 0.4],\n\t\tb: [-0.4, 0.4]\n\t},\n\n\tparse: [parseOklab],\n\tserialize: c =>\n\t\t`oklab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 0.4) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklch;\n","import lch from '../lch/definition.js';\nimport convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport parseOklch from './parseOklch.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'oklch',\n\n\ttoMode: {\n\t\toklab: c => convertLchToLab(c, 'oklab'),\n\t\trgb: c => convertOklabToRgb(convertLchToLab(c, 'oklab'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToOklab(c), 'oklch'),\n\t\toklab: c => convertLabToLch(c, 'oklch')\n\t},\n\n\tparse: [parseOklch],\n\tserialize: c =>\n\t\t`oklch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, 0.4],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert Display P3 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertP3ToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.486570948648216 * r +\n\t\t\t0.265667693169093 * g +\n\t\t\t0.1982172852343625 * b,\n\t\ty:\n\t\t\t0.2289745640697487 * r +\n\t\t\t0.6917385218365062 * g +\n\t\t\t0.079286914093745 * b,\n\t\tz: 0.0 * r + 0.0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertP3ToXyz65;\n","/*\n\tCIE XYZ D65 values to Display P3.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb(\n\t\t{\n\t\t\tr:\n\t\t\t\tx * 2.4934969119414263 -\n\t\t\t\ty * 0.9313836179191242 -\n\t\t\t\t0.402710784450717 * z,\n\t\t\tg:\n\t\t\t\tx * -0.8294889695615749 +\n\t\t\t\ty * 1.7626640603183465 +\n\t\t\t\t0.0236246858419436 * z,\n\t\t\tb:\n\t\t\t\tx * 0.0358458302437845 -\n\t\t\t\ty * 0.0761723892680418 +\n\t\t\t\t0.9568845240076871 * z\n\t\t},\n\t\t'p3'\n\t);\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToP3;\n","import rgb from '../rgb/definition.js';\nimport convertP3ToXyz65 from './convertP3ToXyz65.js';\nimport convertXyz65ToP3 from './convertXyz65ToP3.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'p3',\n\tparse: ['display-p3'],\n\tserialize: 'display-p3',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToP3(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToP3\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertP3ToXyz65(color)),\n\t\txyz65: convertP3ToXyz65\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D50 values to ProPhoto RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1 / 1.8);\n\t}\n\treturn 16 * v;\n};\n\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'prophoto',\n\t\tr: gamma(\n\t\t\tx * 1.3457868816471585 -\n\t\t\t\ty * 0.2555720873797946 -\n\t\t\t\t0.0511018649755453 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.5446307051249019 +\n\t\t\t\ty * 1.5082477428451466 +\n\t\t\t\t0.0205274474364214 * z\n\t\t),\n\t\tb: gamma(x * 0.0 + y * 0.0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToProphoto;\n","/*\n\tConvert ProPhoto RGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1.8);\n\t}\n\treturn v / 16;\n};\n\nconst convertProphotoToXyz50 = prophoto => {\n\tlet r = linearize(prophoto.r);\n\tlet g = linearize(prophoto.g);\n\tlet b = linearize(prophoto.b);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.7977666449006423 * r +\n\t\t\t0.1351812974005331 * g +\n\t\t\t0.0313477341283922 * b,\n\t\ty:\n\t\t\t0.2880748288194013 * r +\n\t\t\t0.7118352342418731 * g +\n\t\t\t0.0000899369387256 * b,\n\t\tz: 0 * r + 0 * g + 0.8251046025104602 * b\n\t};\n\tif (prophoto.alpha !== undefined) {\n\t\tres.alpha = prophoto.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertProphotoToXyz50;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz50ToProphoto from './convertXyz50ToProphoto.js';\nimport convertProphotoToXyz50 from './convertProphotoToXyz50.js';\n\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\n/*\n\tProPhoto RGB Color space\n\n\tReferences:\n\t\t* https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space\n */\n\nconst definition = {\n\t...rgb,\n\tmode: 'prophoto',\n\tparse: ['prophoto-rgb'],\n\tserialize: 'prophoto-rgb',\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto,\n\t\trgb: color => convertXyz50ToProphoto(convertRgbToXyz50(color))\n\t},\n\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50,\n\t\trgb: color => convertXyz50ToRgb(convertProphotoToXyz50(color))\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D65 values to Rec. 2020\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\nconst gamma = v => {\n\tconst abs = Math.abs(v);\n\tif (abs > β) {\n\t\treturn (Math.sign(v) || 1) * (α * Math.pow(abs, 0.45) - (α - 1));\n\t}\n\treturn 4.5 * v;\n};\n\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'rec2020',\n\t\tr: gamma(\n\t\t\tx * 1.7166511879712683 -\n\t\t\t\ty * 0.3556707837763925 -\n\t\t\t\t0.2533662813736599 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.6666843518324893 +\n\t\t\t\ty * 1.6164812366349395 +\n\t\t\t\t0.0157685458139111 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0176398574453108 -\n\t\t\t\ty * 0.0427706132578085 +\n\t\t\t\t0.9421031212354739 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRec2020;\n","/*\n\tConvert Rec. 2020 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) {\n\t\treturn v / 4.5;\n\t}\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / 0.45);\n};\n\nconst convertRec2020ToXyz65 = rec2020 => {\n\tlet r = linearize(rec2020.r);\n\tlet g = linearize(rec2020.g);\n\tlet b = linearize(rec2020.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.6369580483012911 * r +\n\t\t\t0.1446169035862083 * g +\n\t\t\t0.1688809751641721 * b,\n\t\ty:\n\t\t\t0.262700212011267 * r +\n\t\t\t0.6779980715188708 * g +\n\t\t\t0.059301716469862 * b,\n\t\tz: 0 * r + 0.0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020.alpha !== undefined) {\n\t\tres.alpha = rec2020.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRec2020ToXyz65;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz65ToRec2020 from './convertXyz65ToRec2020.js';\nimport convertRec2020ToXyz65 from './convertRec2020ToXyz65.js';\n\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'rec2020',\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020,\n\t\trgb: color => convertXyz65ToRec2020(convertRgbToXyz65(color))\n\t},\n\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertRec2020ToXyz65(color))\n\t},\n\n\tparse: ['rec2020'],\n\tserialize: 'rec2020'\n};\n\nexport default definition;\n","/*\n\tThe XYZ D50 color space\n\t-----------------------\n */\n\nimport convertXyz50ToRgb from './convertXyz50ToRgb.js';\nimport convertXyz50ToLab from '../lab/convertXyz50ToLab.js';\nimport convertRgbToXyz50 from './convertRgbToXyz50.js';\nimport convertLabToXyz50 from '../lab/convertLabToXyz50.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz50',\n\tparse: ['xyz-d50'],\n\tserialize: 'xyz-d50',\n\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb,\n\t\tlab: convertXyz50ToLab\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz50,\n\t\tlab: convertLabToXyz50\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tranges: {\n\t\tx: [0, 0.964],\n\t\ty: [0, 0.999],\n\t\tz: [0, 0.825]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tChromatic adaptation of CIE XYZ from D65 to D50 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz65ToXyz50 = xyz65 => {\n\tlet { x, y, z, alpha } = xyz65;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t1.0479298208405488 * x +\n\t\t\t0.0229467933410191 * y -\n\t\t\t0.0501922295431356 * z,\n\t\ty:\n\t\t\t0.0296278156881593 * x +\n\t\t\t0.990434484573249 * y -\n\t\t\t0.0170738250293851 * z,\n\t\tz:\n\t\t\t-0.0092430581525912 * x +\n\t\t\t0.0150551448965779 * y +\n\t\t\t0.7518742899580008 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToXyz50;\n","/*\n\tChromatic adaptation of CIE XYZ from D50 to D65 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz50ToXyz65 = xyz50 => {\n\tlet { x, y, z, alpha } = xyz50;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.9554734527042182 * x -\n\t\t\t0.0230985368742614 * y +\n\t\t\t0.0632593086610217 * z,\n\t\ty:\n\t\t\t-0.0283697069632081 * x +\n\t\t\t1.0099954580058226 * y +\n\t\t\t0.021041398966943 * z,\n\t\tz:\n\t\t\t0.0123140016883199 * x -\n\t\t\t0.0205076964334779 * y +\n\t\t\t1.3303659366080753 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToXyz65;\n","/*\n\tThe XYZ D65 color space\n\t-----------------------\n */\n\nimport convertXyz65ToRgb from './convertXyz65ToRgb.js';\nimport convertRgbToXyz65 from './convertRgbToXyz65.js';\n\nimport convertXyz65ToXyz50 from './convertXyz65ToXyz50.js';\nimport convertXyz50ToXyz65 from './convertXyz50ToXyz65.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz65',\n\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb,\n\t\txyz50: convertXyz65ToXyz50\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz65,\n\t\txyz50: convertXyz50ToXyz65\n\t},\n\n\tranges: {\n\t\tx: [0, 0.95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tparse: ['xyz', 'xyz-d65'],\n\tserialize: 'xyz-d65',\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// Color space definitions\nimport modeA98 from '../a98/definition.js';\nimport modeHsl from '../hsl/definition.js';\nimport modeHsv from '../hsv/definition.js';\nimport modeHwb from '../hwb/definition.js';\nimport modeLab from '../lab/definition.js';\nimport modeLab65 from '../lab65/definition.js';\nimport modeLch from '../lch/definition.js';\nimport modeLch65 from '../lch65/definition.js';\nimport modeLrgb from '../lrgb/definition.js';\nimport modeOklab from '../oklab/definition.js';\nimport modeOklch from '../oklch/definition.js';\nimport modeP3 from '../p3/definition.js';\nimport modeProphoto from '../prophoto/definition.js';\nimport modeRec2020 from '../rec2020/definition.js';\nimport modeRgb from '../rgb/definition.js';\nimport modeXyz50 from '../xyz50/definition.js';\nimport modeXyz65 from '../xyz65/definition.js';\nimport { useMode } from '../modes.js';\n\nexport const a98 = useMode(modeA98);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lrgb = useMode(modeLrgb);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\n","export const M = [-0.14861, 1.78277, -0.29227, -0.90649, 1.97294, 0];\n\nexport const degToRad = Math.PI / 180;\nexport const radToDeg = 180 / Math.PI;\n","/*\n\tConvert a RGB color to the Cubehelix HSL color space.\n\n\tThis computation is not present in Green's paper:\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\t...but can be derived from the inverse, HSL to RGB conversion.\n\n\tIt matches the math in Mike Bostock's D3 implementation:\n\n\thttps://github.com/d3/d3-color/blob/master/src/cubehelix.js\n */\n\nimport { radToDeg, M } from './constants.js';\n\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\n\nconst convertRgbToCubehelix = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet l = (BCAD * b + r * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\n\tlet res = {\n\t\tmode: 'cubehelix',\n\t\tl: l,\n\t\ts:\n\t\t\tl === 0 || l === 1\n\t\t\t\t? undefined\n\t\t\t\t: Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== undefined) res.alpha = alpha;\n\n\treturn res;\n};\n\nexport default convertRgbToCubehelix;\n","import { degToRad, M } from './constants.js';\n\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: 'rgb' };\n\n\th = (h === undefined ? 0 : h + 120) * degToRad;\n\tif (l === undefined) l = 0;\n\n\tlet amp = s === undefined ? 0 : s * l * (1 - l);\n\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertCubehelixToRgb;\n","/* \n\tDave Green's Cubehelix\n\t----------------------\n\n\tGreen, D. A., 2011, \"A colour scheme for the display of astronomical intensity images\", \n\tBulletin of the Astronomical Society of India, 39, 289. (2011BASI...39..289G at ADS.) \n\n\thttps://www.mrao.cam.ac.uk/%7Edag/CUBEHELIX/\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\tAlthough Cubehelix was defined to be a method to obtain a colour scheme,\n\tit actually contains a definition of a colour space, as identified by \n\tMike Bostock and implemented in D3.js.\n\n\tGreen's paper introduces the following terminology:\n\n\t* \ta `lightness` dimension in the interval [0, 1] \n\t\ton which we interpolate to obtain the colour scheme\n\t*\ta `start` colour that is analogous to a Hue in HSL space\n\t*\ta number of `rotations` around the Hue cylinder.\n\t*\ta `hue` parameter which should more appropriately be called `saturation`\n\t\n\tAs such, the original definition of the Cubehelix scheme is actually an\n\tinterpolation between two colors in the Cubehelix space:\n\n\tH: start \t\t\t\tH: start + 360 * rotations\n\tS: hue \t\t\t->\t\tS: hue\n\tL: 0\t\t\t\t\tL: 1\n\n\tWe can therefore extend the interpolation to any two colors in this space,\n\twith a variable Saturation and a Lightness interval other than the fixed 0 -> 1.\n*/\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport convertRgbToCubehelix from './convertRgbToCubehelix.js';\nimport convertCubehelixToRgb from './convertCubehelixToRgb.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'cubehelix',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--cubehelix'],\n\tserialize: '--cubehelix',\n\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToCubehelix\n\t},\n\n\ttoMode: {\n\t\trgb: convertCubehelixToRgb\n\t},\n\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const kE = 1;\nexport const kCH = 1;\nexport const θ = (26 / 180) * Math.PI;\nexport const cosθ = Math.cos(θ);\nexport const sinθ = Math.sin(θ);\nexport const factor = 100 / Math.log(139 / 100); // ~ 303.67\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\n\n/*\n\tConvert DIN99o LCh to CIELab D65\n\t--------------------------------\n */\n\nconst convertDlchToLab65 = ({ l, c, h, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (c === undefined) c = 0;\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: (Math.exp((l * kE) / factor) - 1) / 0.0039\n\t};\n\n\tlet G = (Math.exp(0.0435 * c * kCH * kE) - 1) / 0.075;\n\tlet e = G * Math.cos((h / 180) * Math.PI - θ);\n\tlet f = G * Math.sin((h / 180) * Math.PI - θ);\n\tres.a = e * cosθ - (f / 0.83) * sinθ;\n\tres.b = e * sinθ + (f / 0.83) * cosθ;\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertDlchToLab65;\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\nimport normalizeHue from '../util/normalizeHue.js';\n\n/*\n\tConvert CIELab D65 to DIN99o LCh\n\t================================\n */\n\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet e = a * cosθ + b * sinθ;\n\tlet f = 0.83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e * e + f * f);\n\tlet res = {\n\t\tmode: 'dlch',\n\t\tl: (factor / kE) * Math.log(1 + 0.0039 * l),\n\t\tc: Math.log(1 + 0.075 * G) / (0.0435 * kCH * kE)\n\t};\n\n\tif (res.c) {\n\t\tres.h = normalizeHue(((Math.atan2(f, e) + θ) / Math.PI) * 180);\n\t}\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLab65ToDlch;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport convertDlchToLab65 from '../dlch/convertDlchToLab65.js';\nimport convertLab65ToDlch from '../dlch/convertLab65ToDlch.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst convertDlabToLab65 = c => convertDlchToLab65(convertLabToLch(c, 'dlch'));\nconst convertLab65ToDlab = c => convertLchToLab(convertLab65ToDlch(c), 'dlab');\n\nconst definition = {\n\tmode: 'dlab',\n\n\tparse: ['--din99o-lab'],\n\tserialize: '--din99o-lab',\n\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: c => convertLab65ToRgb(convertDlabToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: c => convertLab65ToDlab(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertDlchToLab65 from './convertDlchToLab65.js';\nimport convertLab65ToDlch from './convertLab65ToDlch.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'dlch',\n\n\tparse: ['--din99o-lch'],\n\tserialize: '--din99o-lch',\n\n\ttoMode: {\n\t\tlab65: convertDlchToLab65,\n\t\tdlab: c => convertLchToLab(c, 'dlab'),\n\t\trgb: c => convertLab65ToRgb(convertDlchToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch,\n\t\tdlab: c => convertLabToLch(c, 'dlch'),\n\t\trgb: c => convertLab65ToDlch(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (i === undefined) i = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: i * (1 - s), g: i * (1 - s), b: i * (1 - s) };\n\t}\n\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsi({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsi',\n\t\ts: r + g + b === 0 ? 0 : 1 - (3 * m) / (r + g + b),\n\t\ti: (r + g + b) / 3\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsiToRgb from './convertHsiToRgb.js';\nimport convertRgbToHsi from './convertRgbToHsi.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsi',\n\n\ttoMode: {\n\t\trgb: convertHsiToRgb\n\t},\n\n\tparse: ['--hsi'],\n\tserialize: '--hsi',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsi\n\t},\n\n\tchannels: ['h', 's', 'i', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tRelative XYZ has Y=1 for media white,\n\tBT.2048 says media white Y=203 (at PQ 58).\n\tSee: https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2408-3-2019-PDF-E.pdf\n*/\nexport const YW = 203;\n","/*\n\thttps://en.wikipedia.org/wiki/Transfer_functions_in_imaging\n*/\n\nexport const M1 = 0.1593017578125;\nexport const M2 = 78.84375;\nexport const C1 = 0.8359375;\nexport const C2 = 18.8515625;\nexport const C3 = 18.6875;\n\n/*\n\tPerceptual Quantizer, as defined in Rec. BT 2100-2 (2018)\n\n\t* https://www.itu.int/rec/R-REC-BT.2100-2-201807-I/en\n\t* https://en.wikipedia.org/wiki/Perceptual_quantizer\n*/\n\n/* PQ EOTF, defined for `v` in [0,1]. */\nexport function transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c - C1) / (C2 - C3 * c), 1 / M1);\n}\n\n/* PQ EOTF^-1, defined for `v` in [0, 1e4]. */\nexport function transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c) / (1 + C3 * c), M2);\n}\n","import { YW } from '../hdr/constants.js';\nimport { transferPqDecode } from '../hdr/transfer.js';\n\nconst toRel = c => Math.max(c / YW, 0);\n\nconst convertItpToXyz65 = ({ i, t, p, alpha }) => {\n\tif (i === undefined) i = 0;\n\tif (t === undefined) t = 0;\n\tif (p === undefined) p = 0;\n\n\tconst l = transferPqDecode(\n\t\ti + 0.008609037037932761 * t + 0.11102962500302593 * p\n\t);\n\tconst m = transferPqDecode(\n\t\ti - 0.00860903703793275 * t - 0.11102962500302599 * p\n\t);\n\tconst s = transferPqDecode(\n\t\ti + 0.5600313357106791 * t - 0.32062717498731885 * p\n\t);\n\n\tconst res = {\n\t\tmode: 'xyz65',\n\t\tx: toRel(\n\t\t\t2.0701522183894219 * l -\n\t\t\t\t1.3263473389671556 * m +\n\t\t\t\t0.2066510476294051 * s\n\t\t),\n\t\ty: toRel(\n\t\t\t0.3647385209748074 * l +\n\t\t\t\t0.680566024947227 * m -\n\t\t\t\t0.0453045459220346 * s\n\t\t),\n\t\tz: toRel(\n\t\t\t-0.049747207535812 * l -\n\t\t\t\t0.0492609666966138 * m +\n\t\t\t\t1.1880659249923042 * s\n\t\t)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertItpToXyz65;\n","import { YW } from '../hdr/constants.js';\nimport { transferPqEncode } from '../hdr/transfer.js';\n\nconst toAbs = (c = 0) => Math.max(c * YW, 0);\n\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(\n\t\t0.3592832590121217 * absX +\n\t\t\t0.6976051147779502 * absY -\n\t\t\t0.0358915932320289 * absZ\n\t);\n\tconst m = transferPqEncode(\n\t\t-0.1920808463704995 * absX +\n\t\t\t1.1004767970374323 * absY +\n\t\t\t0.0753748658519118 * absZ\n\t);\n\tconst s = transferPqEncode(\n\t\t0.0070797844607477 * absX +\n\t\t\t0.0748396662186366 * absY +\n\t\t\t0.8433265453898765 * absZ\n\t);\n\n\tconst i = 0.5 * l + 0.5 * m;\n\tconst t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;\n\tconst p = 4.378173828125 * l - 4.24560546875 * m - 0.132568359375 * s;\n\n\tconst res = { mode: 'itp', i, t, p };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToItp;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertItpToXyz65 from './convertItpToXyz65.js';\nimport convertXyz65ToItp from './convertXyz65ToItp.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\n/*\n ICtCp (or ITP) color space, as defined in ITU-R Recommendation BT.2100.\n\n ICtCp is drafted to be supported in CSS within\n [CSS Color HDR Module Level 1](https://drafts.csswg.org/css-color-hdr/#ICtCp) spec.\n*/\n\nconst definition = {\n\tmode: 'itp',\n\tchannels: ['i', 't', 'p', 'alpha'],\n\tparse: ['--ictcp'],\n\tserialize: '--ictcp',\n\n\ttoMode: {\n\t\txyz65: convertItpToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertItpToXyz65(color))\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp,\n\t\trgb: color => convertXyz65ToItp(convertRgbToXyz65(color))\n\t},\n\n\tranges: {\n\t\ti: [0, 0.581],\n\t\tt: [-0.369, 0.272],\n\t\tp: [-0.164, 0.331]\n\t},\n\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqEncode = v => {\n\tif (v < 0) return 0;\n\tlet vn = Math.pow(v / 10000, n);\n\treturn Math.pow((C1 + C2 * vn) / (1 + C3 * vn), p);\n};\n\n// Convert to Absolute XYZ\nconst abs = (v = 0) => Math.max(v * 203, 0);\n\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\n\tlet xp = 1.15 * x - 0.15 * z;\n\tlet yp = 0.66 * y + 0.34 * x;\n\n\tlet l = jabPqEncode(0.41478972 * xp + 0.579999 * yp + 0.014648 * z);\n\tlet m = jabPqEncode(-0.20151 * xp + 1.120649 * yp + 0.0531008 * z);\n\tlet s = jabPqEncode(-0.0166008 * xp + 0.2648 * yp + 0.6684799 * z);\n\n\tlet i = (l + m) / 2;\n\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj: (0.44 * i) / (1 - 0.56 * i) - d0,\n\t\ta: 3.524 * l - 4.066708 * m + 0.542708 * s,\n\t\tb: 0.199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToJab;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqDecode = v => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 10000 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / n);\n};\n\nconst rel = v => v / 203;\n\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === undefined) j = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet i = (j + d0) / (0.44 + 0.56 * (j + d0));\n\n\tlet l = jabPqDecode(i + 0.13860504 * a + 0.058047316 * b);\n\tlet m = jabPqDecode(i - 0.13860504 * a - 0.058047316 * b);\n\tlet s = jabPqDecode(i - 0.096019242 * a - 0.8118919 * b);\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: rel(\n\t\t\t1.661373024652174 * l -\n\t\t\t\t0.914523081304348 * m +\n\t\t\t\t0.23136208173913045 * s\n\t\t),\n\t\ty: rel(\n\t\t\t-0.3250758611844533 * l +\n\t\t\t\t1.571847026732543 * m -\n\t\t\t\t0.21825383453227928 * s\n\t\t),\n\t\tz: rel(-0.090982811 * l - 0.31272829 * m + 1.5227666 * s)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertJabToXyz65;\n","/*\n\tConvert sRGB to JzAzBz.\n\n\tFor achromatic sRGB colors, adjust the equivalent JzAzBz color\n\tto be achromatic as well, insteading of having a very slight chroma.\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\n\nconst convertRgbToJab = rgb => {\n\tlet res = convertXyz65ToJab(convertRgbToXyz65(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToJab;\n","import convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\n\nconst convertJabToRgb = color => convertXyz65ToRgb(convertJabToXyz65(color));\n\nexport default convertJabToRgb;\n","/*\n\tThe JzAzBz color space.\n\n\tBased on:\n\n\tMuhammad Safdar, Guihua Cui, Youn Jin Kim, and Ming Ronnier Luo, \n\t\"Perceptually uniform color space for image signals \n\tincluding high dynamic range and wide gamut,\" \n\tOpt. Express 25, 15131-15151 (2017) \n\n\thttps://doi.org/10.1364/OE.25.015131\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\nimport convertRgbToJab from './convertRgbToJab.js';\nimport convertJabToRgb from './convertJabToRgb.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'jab',\n\tchannels: ['j', 'a', 'b', 'alpha'],\n\n\tparse: ['--jzazbz'],\n\tserialize: '--jzazbz',\n\n\tfromMode: {\n\t\trgb: convertRgbToJab,\n\t\txyz65: convertXyz65ToJab\n\t},\n\n\ttoMode: {\n\t\trgb: convertJabToRgb,\n\t\txyz65: convertJabToXyz65\n\t},\n\n\tranges: {\n\t\tj: [0, 0.222],\n\t\ta: [-0.109, 0.129],\n\t\tb: [-0.185, 0.134]\n\t},\n\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: 'jch',\n\t\tj,\n\t\tc\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertJabToJch;\n","const convertJchToJab = ({ j, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertJchToJab;\n","import convertJabToJch from './convertJabToJch.js';\nimport convertJchToJab from './convertJchToJab.js';\nimport convertJabToRgb from '../jab/convertJabToRgb.js';\nimport convertRgbToJab from '../jab/convertRgbToJab.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'jch',\n\n\tparse: ['--jzczhz'],\n\tserialize: '--jzczhz',\n\n\ttoMode: {\n\t\tjab: convertJchToJab,\n\t\trgb: c => convertJabToRgb(convertJchToJab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertJabToJch(convertRgbToJab(c)),\n\t\tjab: convertJabToJch\n\t},\n\n\tchannels: ['j', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tj: [0, 0.221],\n\t\tc: [0, 0.19],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\tlet c = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: 'lchuv',\n\t\tl: l,\n\t\tc: c\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(v, u) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLuvToLchuv;\n","const convertLchuvToLuv = ({ l, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl: l,\n\t\tu: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tv: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLchuvToLuv;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst l_fn = value => (value <= e ? k * value : 116 * Math.cbrt(value) - 16);\n\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn(x, y, z);\n\tlet v = v_fn(x, y, z);\n\n\t// guard against NaNs produced by `xyz(0 0 0)` black\n\tif (!isFinite(u) || !isFinite(v)) {\n\t\tl = u = v = 0;\n\t} else {\n\t\tu = 13 * l * (u - un);\n\t\tv = 13 * l * (v - vn);\n\t}\n\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLuv;\n","import { k } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (l === 0) {\n\t\treturn { mode: 'xyz50', x: 0, y: 0, z: 0 };\n\t}\n\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet x = (y * (9 * up)) / (4 * vp);\n\tlet z = (y * (12 - 3 * up - 20 * vp)) / (4 * vp);\n\n\tlet res = { mode: 'xyz50', x, y, z };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLuvToXyz50;\n","/*\n\tCIELChuv color space\n\t--------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertLuvToLchuv from './convertLuvToLchuv.js';\nimport convertLchuvToLuv from './convertLchuvToLuv.js';\nimport convertXyz50ToLuv from '../luv/convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from '../luv/convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst convertRgbToLchuv = rgb =>\n\tconvertLuvToLchuv(convertXyz50ToLuv(convertRgbToXyz50(rgb)));\nconst convertLchuvToRgb = lchuv =>\n\tconvertXyz50ToRgb(convertLuvToXyz50(convertLchuvToLuv(lchuv)));\n\nconst definition = {\n\tmode: 'lchuv',\n\n\ttoMode: {\n\t\tluv: convertLchuvToLuv,\n\t\trgb: convertLchuvToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tparse: ['--lchuv'],\n\tserialize: '--lchuv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tCIELUV color space\n\t------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertXyz50ToLuv from './convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from './convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'luv',\n\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50,\n\t\trgb: luv => convertXyz50ToRgb(convertLuvToXyz50(luv))\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv,\n\t\trgb: rgb => convertXyz50ToLuv(convertRgbToXyz50(rgb))\n\t},\n\n\tchannels: ['l', 'u', 'v', 'alpha'],\n\n\tparse: ['--luv'],\n\tserialize: '--luv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\n\nexport function toe(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (\n\t\t0.5 *\n\t\t(k_3 * x -\n\t\t\tk_1 +\n\t\t\tMath.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x))\n\t);\n}\n\nexport function toe_inv(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\n\n// Finds the maximum saturation possible for a given hue that fits in sRGB\n// Saturation here is defined as S = C/L\n// a and b must be normalized so a^2 + b^2 == 1\nfunction compute_max_saturation(a, b) {\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (-1.88170328 * a - 0.80936493 * b > 1) {\n\t\t// Red component\n\t\tk0 = +1.19086277;\n\t\tk1 = +1.76576728;\n\t\tk2 = +0.59662641;\n\t\tk3 = +0.75515197;\n\t\tk4 = +0.56771245;\n\t\twl = +4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = +0.2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\t// Green component\n\t\tk0 = +0.73956515;\n\t\tk1 = -0.45954404;\n\t\tk2 = +0.08285427;\n\t\tk3 = +0.1254107;\n\t\tk4 = +0.14503204;\n\t\twl = -1.2684380046;\n\t\twm = +2.6097574011;\n\t\tws = -0.3413193965;\n\t} else {\n\t\t// Blue component\n\t\tk0 = +1.35733652;\n\t\tk1 = -0.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -0.50559606;\n\t\tk4 = +0.00692167;\n\t\twl = -0.0041960863;\n\t\twm = -0.7034186147;\n\t\tws = +1.707614701;\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\n\t// Do one step Halley's method to get closer\n\t// this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite\n\t// this should be sufficient for most applications, otherwise do two/three steps\n\n\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\n\t\tlet f = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\n\t\tS = S - (f * f1) / (f1 * f1 - 0.5 * f * f2);\n\t}\n\n\treturn S;\n}\n\nexport function find_cusp(a, b) {\n\t// First, find the maximum saturation (saturation S = C/L)\n\tlet S_cusp = compute_max_saturation(a, b);\n\n\t// Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:\n\tlet rgb = convertOklabToLrgb({ l: 1, a: S_cusp * a, b: S_cusp * b });\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb.r, rgb.g, rgb.b));\n\tlet C_cusp = L_cusp * S_cusp;\n\n\treturn [L_cusp, C_cusp];\n}\n\n// Finds intersection of the line defined by\n// L = L0 * (1 - t) + t * L1;\n// C = t * C1;\n// a and b must be normalized so a^2 + b^2 == 1\nfunction find_gamut_intersection(a, b, L1, C1, L0, cusp = null) {\n\tif (!cusp) {\n\t\t// Find the cusp of the gamut triangle\n\t\tcusp = find_cusp(a, b);\n\t}\n\n\t// Find the intersection for upper and lower half seprately\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1 <= 0) {\n\t\t// Lower half\n\n\t\tt = (cusp[1] * L0) / (C1 * cusp[0] + cusp[1] * (L0 - L1));\n\t} else {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (L0 - 1)) / (C1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\n\t\t// Then one step Halley's method\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1;\n\n\t\t\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\t\t\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\t\t\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\n\t\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1;\n\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\n\t\t\t\tlet r =\n\t\t\t\t\t4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s - 1;\n\t\t\t\tlet r1 =\n\t\t\t\t\t4.0767416621 * ldt -\n\t\t\t\t\t3.3077115913 * mdt +\n\t\t\t\t\t0.2309699292 * sdt;\n\t\t\t\tlet r2 =\n\t\t\t\t\t4.0767416621 * ldt2 -\n\t\t\t\t\t3.3077115913 * mdt2 +\n\t\t\t\t\t0.2309699292 * sdt2;\n\n\t\t\t\tlet u_r = r1 / (r1 * r1 - 0.5 * r * r2);\n\t\t\t\tlet t_r = -r * u_r;\n\n\t\t\t\tlet g =\n\t\t\t\t\t-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s - 1;\n\t\t\t\tlet g1 =\n\t\t\t\t\t-1.2684380046 * ldt +\n\t\t\t\t\t2.6097574011 * mdt -\n\t\t\t\t\t0.3413193965 * sdt;\n\t\t\t\tlet g2 =\n\t\t\t\t\t-1.2684380046 * ldt2 +\n\t\t\t\t\t2.6097574011 * mdt2 -\n\t\t\t\t\t0.3413193965 * sdt2;\n\n\t\t\t\tlet u_g = g1 / (g1 * g1 - 0.5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\n\t\t\t\tlet b =\n\t\t\t\t\t-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 =\n\t\t\t\t\t-0.0041960863 * ldt -\n\t\t\t\t\t0.7034186147 * mdt +\n\t\t\t\t\t1.707614701 * sdt;\n\t\t\t\tlet b2 =\n\t\t\t\t\t-0.0041960863 * ldt2 -\n\t\t\t\t\t0.7034186147 * mdt2 +\n\t\t\t\t\t1.707614701 * sdt2;\n\n\t\t\t\tlet u_b = b1 / (b1 * b1 - 0.5 * b * b2);\n\t\t\t\tlet t_b = -b * u_b;\n\n\t\t\t\tt_r = u_r >= 0 ? t_r : 10e5;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 10e5;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 10e5;\n\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn t;\n}\n\nexport function get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) {\n\t\tcusp = find_cusp(a_, b_);\n\t}\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\n\nexport function get_ST_mid(a_, b_) {\n\tlet S =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\treturn [S, T];\n}\n\nexport function get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\n\tlet S_mid =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T_mid =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\tlet k = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid =\n\t\t0.9 *\n\t\tk *\n\t\tMath.sqrt(\n\t\t\tMath.sqrt(\n\t\t\t\t1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))\n\t\t\t)\n\t\t);\n\n\tC_a = L * 0.4;\n\tC_b = (1 - L) * 0.8;\n\tlet C_0 = Math.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b)));\n\treturn [C_0, C_mid, C_max];\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport { get_Cs, toe } from './helpers.js';\n\nexport default function convertOklabToOkhsl(lab) {\n\tconst l = lab.l !== undefined ? lab.l : 0;\n\tconst a = lab.a !== undefined ? lab.a : 0;\n\tconst b = lab.b !== undefined ? lab.b : 0;\n\n\tconst ret = { mode: 'okhsl', l: toe(l) };\n\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\tlet c = Math.sqrt(a * a + b * b);\n\tif (!c) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c, b / c);\n\tlet s;\n\tif (c < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = 0.8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = t * 0.8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = 0.8 + 0.2 * t;\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\treturn ret;\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport { toe_inv, get_Cs } from './helpers.js';\n\nexport default function convertOkhslToOklab(hsl) {\n\tlet h = hsl.h !== undefined ? hsl.h : 0;\n\tlet s = hsl.s !== undefined ? hsl.s : 0;\n\tlet l = hsl.l !== undefined ? hsl.l : 0;\n\n\tconst ret = { mode: 'oklab', l: toe_inv(l) };\n\n\tif (hsl.alpha !== undefined) {\n\t\tret.alpha = hsl.alpha;\n\t}\n\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\n\tlet a_ = Math.cos((h / 180) * Math.PI);\n\tlet b_ = Math.sin((h / 180) * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < 0.8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = 0.8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - 0.8);\n\t\tk_0 = C_mid;\n\t\tk_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + (t * k_1) / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsl from './convertOklabToOkhsl.js';\nimport convertOkhslToOklab from './convertOkhslToOklab.js';\n\nimport modeHsl from '../hsl/definition.js';\n\nconst modeOkhsl = {\n\t...modeHsl,\n\tmode: 'okhsl',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--okhsl'],\n\tserialize: '--okhsl',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: c => convertOklabToOkhsl(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhslToOklab(c))\n\t}\n};\n\nexport default modeOkhsl;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv, toe } from '../okhsl/helpers.js';\n\nexport default function convertOklabToOkhsv(lab) {\n\tlet l = lab.l !== undefined ? lab.l : 0;\n\tlet a = lab.a !== undefined ? lab.a : 0;\n\tlet b = lab.b !== undefined ? lab.b : 0;\n\n\tlet c = Math.sqrt(a * a + b * b);\n\n\t// TODO: c = 0\n\tlet a_ = c ? a / c : 1;\n\tlet b_ = c ? b / c : 1;\n\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = 0.5;\n\tlet k = 1 - S_0 / S_max;\n\n\tlet t = T / (c + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c;\n\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = (C_v * L_vt) / L_v;\n\n\tlet rgb_scale = convertOklabToLrgb({ l: L_vt, a: a_ * C_vt, b: b_ * C_vt });\n\tlet scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tl = l / scale_L;\n\tc = ((c / scale_L) * toe(l)) / l;\n\tl = toe(l);\n\n\tconst ret = {\n\t\tmode: 'okhsv',\n\t\ts: c ? ((S_0 + T) * C_v) / (T * S_0 + T * k * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) {\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\treturn ret;\n}\n","/*\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv } from '../okhsl/helpers.js';\n\nexport default function convertOkhsvToOklab(hsv) {\n\tconst ret = { mode: 'oklab' };\n\tif (hsv.alpha !== undefined) {\n\t\tret.alpha = hsv.alpha;\n\t}\n\n\tconst h = hsv.h !== undefined ? hsv.h : 0;\n\tconst s = hsv.s !== undefined ? hsv.s : 0;\n\tconst v = hsv.v !== undefined ? hsv.v : 0;\n\n\tconst a_ = Math.cos((h / 180) * Math.PI);\n\tconst b_ = Math.sin((h / 180) * Math.PI);\n\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = 0.5;\n\tconst k = 1 - S_0 / S_max;\n\tconst L_v = 1 - (s * S_0) / (S_0 + T - T * k * s);\n\tconst C_v = (s * T * S_0) / (S_0 + T - T * k * s);\n\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = (C_v * L_vt) / L_v;\n\tconst rgb_scale = convertOklabToLrgb({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = (C_v * L_new) / L_v;\n\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsv from './convertOklabToOkhsv.js';\nimport convertOkhsvToOklab from './convertOkhsvToOklab.js';\n\nimport modeHsv from '../hsv/definition.js';\n\nconst modeOkhsv = {\n\t...modeHsv,\n\tmode: 'okhsv',\n\tchannels: ['h', 's', 'v', 'alpha'],\n\tparse: ['--okhsv'],\n\tserialize: '--okhsv',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: c => convertOklabToOkhsv(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhsvToOklab(c))\n\t}\n};\n\nexport default modeOkhsv;\n","export const bias = 0.00379307325527544933;\nexport const bias_cbrt = Math.cbrt(bias);\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.cbrt(v) - bias_cbrt;\n\nconst convertRgbToXyb = color => {\n\tconst { r, g, b, alpha } = convertRgbToLrgb(color);\n\tconst l = transfer(0.3 * r + 0.622 * g + 0.078 * b + bias);\n\tconst m = transfer(0.23 * r + 0.692 * g + 0.078 * b + bias);\n\tconst s = transfer(\n\t\t0.24342268924547819 * r +\n\t\t\t0.20476744424496821 * g +\n\t\t\t0.5518098665095536 * b +\n\t\t\tbias\n\t);\n\tconst res = {\n\t\tmode: 'xyb',\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\t/* Apply default chroma from luma (subtract Y from B) */\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToXyb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.pow(v + bias_cbrt, 3);\n\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (b === undefined) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\t/* Account for chroma from luma: add Y back to B */\n\tconst s = transfer(b + y) - bias;\n\n\tconst res = convertLrgbToRgb({\n\t\tr:\n\t\t\t11.031566904639861 * l -\n\t\t\t9.866943908131562 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tg:\n\t\t\t-3.2541473810744237 * l +\n\t\t\t4.418770377582723 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tb:\n\t\t\t-3.6588512867136815 * l +\n\t\t\t2.7129230459360922 * m +\n\t\t\t1.9459282407775895 * s\n\t});\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertXybToRgb;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertRgbToXyb from './convertRgbToXyb.js';\nimport convertXybToRgb from './convertXybToRgb.js';\n\n/*\n\tThe XYB color space, used in JPEG XL.\n\tReference: https://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf\n*/\n\nconst definition = {\n\tmode: 'xyb',\n\tchannels: ['x', 'y', 'b', 'alpha'],\n\tparse: ['--xyb'],\n\tserialize: '--xyb',\n\n\ttoMode: {\n\t\trgb: convertXybToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyb\n\t},\n\n\tranges: {\n\t\tx: [-0.0154, 0.0281],\n\t\ty: [0, 0.8453],\n\t\tb: [-0.2778, 0.388]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertRgbToYiq = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tconst res = {\n\t\tmode: 'yiq',\n\t\ty: 0.29889531 * r + 0.58662247 * g + 0.11448223 * b,\n\t\ti: 0.59597799 * r - 0.2741761 * g - 0.32180189 * b,\n\t\tq: 0.21147017 * r - 0.52261711 * g + 0.31114694 * b\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToYiq;\n","const convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === undefined) y = 0;\n\tif (i === undefined) i = 0;\n\tif (q === undefined) q = 0;\n\tconst res = {\n\t\tmode: 'rgb',\n\t\tr: y + 0.95608445 * i + 0.6208885 * q,\n\t\tg: y - 0.27137664 * i - 0.6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertYiqToRgb;\n","import convertRgbToYiq from './convertRgbToYiq.js';\nimport convertYiqToRgb from './convertYiqToRgb.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tYIQ Color Space\n\n\tReferences\n\t----------\n\n\tWikipedia:\n\t\thttps://en.wikipedia.org/wiki/YIQ\n\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\n\nconst definition = {\n\tmode: 'yiq',\n\n\ttoMode: {\n\t\trgb: convertYiqToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToYiq\n\t},\n\n\tchannels: ['y', 'i', 'q', 'alpha'],\n\n\tparse: ['--yiq'],\n\tserialize: '--yiq',\n\n\tranges: {\n\t\ti: [-0.595, 0.595],\n\t\tq: [-0.522, 0.522]\n\t},\n\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// From: https://github.com/d3/d3-format/issues/32\n\nconst r = (value, precision) =>\n\tMath.round(value * (precision = Math.pow(10, precision))) / precision;\n\nconst round =\n\t(precision = 4) =>\n\tvalue =>\n\t\ttypeof value === 'number' ? r(value, precision) : value;\n\nexport default round;\n","// Color space definitions\nimport modeA98 from './a98/definition.js';\nimport modeCubehelix from './cubehelix/definition.js';\nimport modeDlab from './dlab/definition.js';\nimport modeDlch from './dlch/definition.js';\nimport modeHsi from './hsi/definition.js';\nimport modeHsl from './hsl/definition.js';\nimport modeHsv from './hsv/definition.js';\nimport modeHwb from './hwb/definition.js';\nimport modeItp from './itp/definition.js';\nimport modeJab from './jab/definition.js';\nimport modeJch from './jch/definition.js';\nimport modeLab from './lab/definition.js';\nimport modeLab65 from './lab65/definition.js';\nimport modeLch from './lch/definition.js';\nimport modeLch65 from './lch65/definition.js';\nimport modeLchuv from './lchuv/definition.js';\nimport modeLrgb from './lrgb/definition.js';\nimport modeLuv from './luv/definition.js';\nimport modeOkhsl from './okhsl/modeOkhsl.js';\nimport modeOkhsv from './okhsv/modeOkhsv.js';\nimport modeOklab from './oklab/definition.js';\nimport modeOklch from './oklch/definition.js';\nimport modeP3 from './p3/definition.js';\nimport modeProphoto from './prophoto/definition.js';\nimport modeRec2020 from './rec2020/definition.js';\nimport modeRgb from './rgb/definition.js';\nimport modeXyb from './xyb/definition.js';\nimport modeXyz50 from './xyz50/definition.js';\nimport modeXyz65 from './xyz65/definition.js';\nimport modeYiq from './yiq/definition.js';\nimport { useMode } from './modes.js';\n\nexport { default as converter } from './converter.js';\n\nexport {\n\tserializeHex,\n\tserializeHex8,\n\tserializeRgb,\n\tserializeHsl,\n\tformatHex,\n\tformatHex8,\n\tformatRgb,\n\tformatHsl,\n\tformatCss\n} from './formatter.js';\n\nexport { default as colorsNamed } from './colors/named.js';\nexport { default as blend } from './blend.js';\nexport { default as random } from './random.js';\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n} from './fixup/hue.js';\n\nexport { fixupAlpha } from './fixup/alpha.js';\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n} from './map.js';\n\nexport { average, averageAngle, averageNumber } from './average.js';\n\nexport { default as round } from './round.js';\nexport {\n\tinterpolate,\n\tinterpolateWith,\n\tinterpolateWithPremultipliedAlpha\n} from './interpolate/interpolate.js';\n\nexport { interpolatorLinear } from './interpolate/linear.js';\n\nexport { interpolatorPiecewise } from './interpolate/piecewise.js';\n\nexport {\n\tinterpolatorSplineBasis,\n\tinterpolatorSplineBasisClosed\n} from './interpolate/splineBasis.js';\n\nexport {\n\tinterpolatorSplineNatural,\n\tinterpolatorSplineNaturalClosed\n} from './interpolate/splineNatural.js';\n\nexport {\n\tinterpolatorSplineMonotone,\n\tinterpolatorSplineMonotone2,\n\tinterpolatorSplineMonotoneClosed\n} from './interpolate/splineMonotone.js';\n\nexport { lerp, unlerp, blerp, trilerp } from './interpolate/lerp.js';\nexport { default as samples } from './samples.js';\nexport {\n\tdisplayable,\n\tinGamut,\n\tclampRgb,\n\tclampChroma,\n\tclampGamut,\n\ttoGamut\n} from './clamp.js';\nexport { default as nearest } from './nearest.js';\nexport { useMode, getMode, useParser, removeParser } from './modes.js';\nexport { default as parse } from './parse.js';\n\nexport {\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceHueSaturation,\n\tdifferenceHueChroma,\n\tdifferenceHueNaive,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n} from './difference.js';\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterInvert,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterHueRotate\n} from './filter.js';\n\nexport {\n\tfilterDeficiencyProt,\n\tfilterDeficiencyDeuter,\n\tfilterDeficiencyTrit\n} from './deficiency.js';\n\n// Easings\nexport { default as easingMidpoint } from './easing/midpoint.js';\nexport {\n\teasingSmoothstep,\n\teasingSmoothstepInverse\n} from './easing/smoothstep.js';\nexport { default as easingSmootherstep } from './easing/smootherstep.js';\nexport { default as easingInOutSine } from './easing/inOutSine.js';\nexport { default as easingGamma } from './easing/gamma.js';\n\nexport {\n\tluminance as wcagLuminance,\n\tcontrast as wcagContrast\n} from './wcag.js';\n\nexport { default as parseHsl } from './hsl/parseHsl.js';\nexport { default as parseHwb } from './hwb/parseHwb.js';\nexport { default as parseLab } from './lab/parseLab.js';\nexport { default as parseLch } from './lch/parseLch.js';\nexport { default as parseNamed } from './rgb/parseNamed.js';\nexport { default as parseTransparent } from './rgb/parseTransparent.js';\nexport { default as parseHex } from './rgb/parseHex.js';\nexport { default as parseRgb } from './rgb/parseRgb.js';\nexport { default as parseHslLegacy } from './hsl/parseHslLegacy.js';\nexport { default as parseRgbLegacy } from './rgb/parseRgbLegacy.js';\nexport { default as parseOklab } from './oklab/parseOklab.js';\nexport { default as parseOklch } from './oklch/parseOklch.js';\n\nexport { default as convertA98ToXyz65 } from './a98/convertA98ToXyz65.js';\nexport { default as convertCubehelixToRgb } from './cubehelix/convertCubehelixToRgb.js';\nexport { default as convertDlchToLab65 } from './dlch/convertDlchToLab65.js';\nexport { default as convertHsiToRgb } from './hsi/convertHsiToRgb.js';\nexport { default as convertHslToRgb } from './hsl/convertHslToRgb.js';\nexport { default as convertHsvToRgb } from './hsv/convertHsvToRgb.js';\nexport { default as convertHwbToRgb } from './hwb/convertHwbToRgb.js';\nexport { default as convertItpToXyz65 } from './itp/convertItpToXyz65.js';\nexport { default as convertJabToJch } from './jch/convertJabToJch.js';\nexport { default as convertJabToRgb } from './jab/convertJabToRgb.js';\nexport { default as convertJabToXyz65 } from './jab/convertJabToXyz65.js';\nexport { default as convertJchToJab } from './jch/convertJchToJab.js';\nexport { default as convertLab65ToDlch } from './dlch/convertLab65ToDlch.js';\nexport { default as convertLab65ToRgb } from './lab65/convertLab65ToRgb.js';\nexport { default as convertLab65ToXyz65 } from './lab65/convertLab65ToXyz65.js';\nexport { default as convertLabToLch } from './lch/convertLabToLch.js';\nexport { default as convertLabToRgb } from './lab/convertLabToRgb.js';\nexport { default as convertLabToXyz50 } from './lab/convertLabToXyz50.js';\nexport { default as convertLchToLab } from './lch/convertLchToLab.js';\nexport { default as convertLchuvToLuv } from './lchuv/convertLchuvToLuv.js';\nexport { default as convertLrgbToOklab } from './oklab/convertLrgbToOklab.js';\nexport { default as convertLrgbToRgb } from './lrgb/convertLrgbToRgb.js';\nexport { default as convertLuvToLchuv } from './lchuv/convertLuvToLchuv.js';\nexport { default as convertLuvToXyz50 } from './luv/convertLuvToXyz50.js';\nexport { default as convertOkhslToOklab } from './okhsl/convertOkhslToOklab.js';\nexport { default as convertOkhsvToOklab } from './okhsv/convertOkhsvToOklab.js';\nexport { default as convertOklabToLrgb } from './oklab/convertOklabToLrgb.js';\nexport { default as convertOklabToOkhsl } from './okhsl/convertOklabToOkhsl.js';\nexport { default as convertOklabToOkhsv } from './okhsv/convertOklabToOkhsv.js';\nexport { default as convertOklabToRgb } from './oklab/convertOklabToRgb.js';\nexport { default as convertP3ToXyz65 } from './p3/convertP3ToXyz65.js';\nexport { default as convertProphotoToXyz50 } from './prophoto/convertProphotoToXyz50.js';\nexport { default as convertRec2020ToXyz65 } from './rec2020/convertRec2020ToXyz65.js';\nexport { default as convertRgbToCubehelix } from './cubehelix/convertRgbToCubehelix.js';\nexport { default as convertRgbToHsi } from './hsi/convertRgbToHsi.js';\nexport { default as convertRgbToHsl } from './hsl/convertRgbToHsl.js';\nexport { default as convertRgbToHsv } from './hsv/convertRgbToHsv.js';\nexport { default as convertRgbToHwb } from './hwb/convertRgbToHwb.js';\nexport { default as convertRgbToJab } from './jab/convertRgbToJab.js';\nexport { default as convertRgbToLab } from './lab/convertRgbToLab.js';\nexport { default as convertRgbToLab65 } from './lab65/convertRgbToLab65.js';\nexport { default as convertRgbToLrgb } from './lrgb/convertRgbToLrgb.js';\nexport { default as convertRgbToOklab } from './oklab/convertRgbToOklab.js';\nexport { default as convertRgbToXyb } from './xyb/convertRgbToXyb.js';\nexport { default as convertRgbToXyz50 } from './xyz50/convertRgbToXyz50.js';\nexport { default as convertRgbToXyz65 } from './xyz65/convertRgbToXyz65.js';\nexport { default as convertRgbToYiq } from './yiq/convertRgbToYiq.js';\nexport { default as convertXybToRgb } from './xyb/convertXybToRgb.js';\nexport { default as convertXyz50ToLab } from './lab/convertXyz50ToLab.js';\nexport { default as convertXyz50ToLuv } from './luv/convertXyz50ToLuv.js';\nexport { default as convertXyz50ToProphoto } from './prophoto/convertXyz50ToProphoto.js';\nexport { default as convertXyz50ToRgb } from './xyz50/convertXyz50ToRgb.js';\nexport { default as convertXyz50ToXyz65 } from './xyz65/convertXyz50ToXyz65.js';\nexport { default as convertXyz65ToA98 } from './a98/convertXyz65ToA98.js';\nexport { default as convertXyz65ToItp } from './itp/convertXyz65ToItp.js';\nexport { default as convertXyz65ToJab } from './jab/convertXyz65ToJab.js';\nexport { default as convertXyz65ToLab65 } from './lab65/convertXyz65ToLab65.js';\nexport { default as convertXyz65ToP3 } from './p3/convertXyz65ToP3.js';\nexport { default as convertXyz65ToRec2020 } from './rec2020/convertXyz65ToRec2020.js';\nexport { default as convertXyz65ToRgb } from './xyz65/convertXyz65ToRgb.js';\nexport { default as convertXyz65ToXyz50 } from './xyz65/convertXyz65ToXyz50.js';\nexport { default as convertYiqToRgb } from './yiq/convertYiqToRgb.js';\n\nexport {\n\tmodeA98,\n\tmodeCubehelix,\n\tmodeDlab,\n\tmodeDlch,\n\tmodeHsi,\n\tmodeHsl,\n\tmodeHsv,\n\tmodeHwb,\n\tmodeItp,\n\tmodeJab,\n\tmodeJch,\n\tmodeLab,\n\tmodeLab65,\n\tmodeLch,\n\tmodeLch65,\n\tmodeLchuv,\n\tmodeLrgb,\n\tmodeLuv,\n\tmodeOkhsl,\n\tmodeOkhsv,\n\tmodeOklab,\n\tmodeOklch,\n\tmodeP3,\n\tmodeProphoto,\n\tmodeRec2020,\n\tmodeRgb,\n\tmodeXyb,\n\tmodeXyz50,\n\tmodeXyz65,\n\tmodeYiq\n};\n\nexport const a98 = useMode(modeA98);\nexport const cubehelix = useMode(modeCubehelix);\nexport const dlab = useMode(modeDlab);\nexport const dlch = useMode(modeDlch);\nexport const hsi = useMode(modeHsi);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const itp = useMode(modeItp);\nexport const jab = useMode(modeJab);\nexport const jch = useMode(modeJch);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lchuv = useMode(modeLchuv);\nexport const lrgb = useMode(modeLrgb);\nexport const luv = useMode(modeLuv);\nexport const okhsl = useMode(modeOkhsl);\nexport const okhsv = useMode(modeOkhsv);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyb = useMode(modeXyb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\nexport const yiq = useMode(modeYiq);\n","import { CSS_TO_CULORI, kebabCase, parseColor, tokenToCulori } from \"./string-D3-qmBT2.js\";\nimport { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHwb, modeLab, modeLab65, modeLch, modeLrgb, modeOkhsv, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, round, toGamut, useMode } from \"culori/fn\";\nimport { displayable as displayable$1 } from \"culori\";\n\n//#region src/css/lib.ts\nfunction defaultAliasTransform(token) {\n\tif (!token) throw new Error(\"Undefined token\");\n\treturn `var(${makeCSSVar(token.id)})`;\n}\n/** Generate shorthand CSS for select token types */\nfunction generateShorthand({ $type, localID }) {\n\tswitch ($type) {\n\t\tcase \"transition\": return [\n\t\t\t\"duration\",\n\t\t\t\"delay\",\n\t\t\t\"timing-function\"\n\t\t].map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true })).join(\" \");\n\t}\n}\nconst CSS_VAR_RE = /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n/**\n* Generate a valid CSS variable from any string\n* Code by @dfrankland\n*/\nfunction makeCSSVar(name, { prefix, wrapVar = false } = {}) {\n\tif (typeof name !== \"string\") throw new Error(`makeCSSVar() Expected string, received ${name}`);\n\tlet property = name.split(CSS_VAR_RE).filter(Boolean).join(\"-\");\n\tif (prefix && !property.startsWith(`${prefix}-`)) property = `${prefix}-${property}`;\n\tconst finalProperty = `--${property}`.toLocaleLowerCase();\n\treturn wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n\n//#endregion\n//#region src/css/boolean.ts\n/** Convert boolean value to CSS string */\nfunction transformBoolean(token, { tokensSet, transformAlias = defaultAliasTransform }) {\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value === true ? \"1\" : \"0\";\n}\n\n//#endregion\n//#region src/css/color.ts\n/** Convert color value to CSS string */\nfunction transformColor(token, options) {\n\tconst { transformAlias = defaultAliasTransform, tokensSet } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst { colorSpace, components, alpha = 1 } = typeof token.$value === \"string\" ? parseColor(token.$value) : token.$value;\n\tconst color = tokenToCulori({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t});\n\tif (!color) throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n\tlet formatColor = formatCss;\n\tif (options.color?.legacyHex) formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n\treturn displayable(color) ? formatColor(color) : downsample({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t}, color, options.color?.depth);\n}\nconst converters = {\n\ta98: useMode(modeA98),\n\thsl: useMode(modeHsl),\n\thwb: useMode(modeHwb),\n\tlab: useMode(modeLab),\n\tlab65: useMode(modeLab65),\n\tlch: useMode(modeLch),\n\tlrgb: useMode(modeLrgb),\n\toklab: useMode(modeOklab),\n\toklch: useMode(modeOklch),\n\tokhsv: useMode(modeOkhsv),\n\tp3: useMode(modeP3),\n\tprophoto: useMode(modeProphoto),\n\trec2020: useMode(modeRec2020),\n\trgb: useMode(modeRgb),\n\txyz50: useMode(modeXyz50),\n\txyz65: useMode(modeXyz65)\n};\nconst DEPTH_ROUNDING = {\n\t24: round(4),\n\t30: round(4),\n\t36: round(5),\n\t48: round(6)\n};\n/**\n* Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n* Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n* we have to do an additional step of converting back. So we’re not really converting;\n* we’re just preserving the original colorspace.\n*/\nfunction downsample($value, culoriColor, depth = 30) {\n\tif (!($value.colorSpace in CSS_TO_CULORI)) throw new Error(`Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tlet gamutSpace = conversionSpace;\n\tif (gamutSpace === \"lab\" || gamutSpace === \"lab65\") gamutSpace = \"lch\";\n\telse if (gamutSpace === \"oklab\") gamutSpace = \"oklch\";\n\tlet srgb = converters[conversionSpace](toGamut(\"rgb\", gamutSpace)(culoriColor));\n\tlet p3 = converters[conversionSpace](toGamut(\"p3\", gamutSpace)(culoriColor));\n\tlet rec2020 = converters[conversionSpace](toGamut(\"rec2020\", gamutSpace)(culoriColor));\n\tif (typeof depth === \"number\") {\n\t\tif (!DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(\", \")}`);\n\t\tsrgb = roundColor(srgb, depth);\n\t\tp3 = roundColor(p3, depth);\n\t\trec2020 = roundColor(rec2020, depth);\n\t}\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(srgb),\n\t\tp3: formatCss(p3),\n\t\trec2020: formatCss(rec2020)\n\t};\n}\n/** Round color to certain depth. */\nfunction roundColor(color, depth = 30) {\n\tif (depth === \"unlimited\") return color;\n\tconst newColor = { ...color };\n\tfor (const [k, v] of Object.entries(color)) {\n\t\tif (typeof v !== \"number\" || k === \"mode\") continue;\n\t\tnewColor[k] = DEPTH_ROUNDING[depth](v);\n\t}\n\treturn newColor;\n}\n\n//#endregion\n//#region src/css/dimension.ts\n/** Convert dimension value to CSS */\nfunction transformDimension(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.value === 0 ? \"0\" : `${token.$value.value}${token.$value.unit}`;\n}\n\n//#endregion\n//#region src/css/stroke-style.ts\n/** Convert strokeStyle value to CSS */\nfunction transformStrokeStyle(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn typeof token.$value === \"string\" ? token.$value : \"dashed\";\n}\n\n//#endregion\n//#region src/css/border.ts\n/** Convert border value to multiple CSS values */\nfunction transformBorder(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst width = token.partialAliasOf?.width ? transformAlias(tokensSet[token.partialAliasOf.width]) : transformDimension({ $value: token.$value.width }, options);\n\tconst color = token.partialAliasOf?.color ? transformAlias(tokensSet[token.partialAliasOf.color]) : transformColor({ $value: token.$value.color }, options);\n\tconst style = token.partialAliasOf?.style ? transformAlias(tokensSet[token.partialAliasOf.style]) : transformStrokeStyle({ $value: token.$value.style }, options);\n\tconst formatBorder = (colorKey) => [\n\t\twidth,\n\t\tstyle,\n\t\ttypeof color === \"string\" ? color : color[colorKey]\n\t].join(\" \");\n\treturn typeof color === \"string\" || displayable$1(color.p3) ? formatBorder(\".\") : {\n\t\t\".\": formatBorder(\".\"),\n\t\tsrgb: formatBorder(\"srgb\"),\n\t\tp3: formatBorder(\"p3\"),\n\t\trec2020: formatBorder(\"rec2020\")\n\t};\n}\n\n//#endregion\n//#region src/css/cubic-bezier.ts\n/** Convert cubicBezier value to CSS */\nfunction transformCubicBezier(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `cubic-bezier(${token.$value.map((v, i) => token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]) : v).join(\", \")})`;\n}\n\n//#endregion\n//#region src/css/duration.ts\n/** Convert duration value to CSS */\nfunction transformDuration(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `${token.$value.value}${token.$value.unit}`;\n}\n\n//#endregion\n//#region src/css/font-family.ts\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\nfunction transformFontFamily(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.map((fontName) => FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`).join(\", \");\n}\n\n//#endregion\n//#region src/css/font-weight.ts\n/** Convert fontWeight value to CSS */\nfunction transformFontWeight(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n\n//#endregion\n//#region src/css/gradient.ts\n/** Convert gradient value to CSS */\nfunction transformGradient(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tlet isHDR = false;\n\tconst colors = [];\n\tconst positions = [];\n\tfor (let i = 0; i < token.$value.length; i++) {\n\t\tconst { color, position } = token.$value[i];\n\t\tconst colorValue = token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: color }, options);\n\t\tif (typeof colorValue !== \"string\") isHDR = true;\n\t\tcolors.push(colorValue);\n\t\tpositions.push(token.partialAliasOf?.[i]?.position ? transformAlias(tokensSet[token.partialAliasOf[i].position]) : `${100 * position}%`);\n\t}\n\tfunction formatStop(i, colorKey = \".\") {\n\t\treturn `${typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey]} ${positions[i]}`;\n\t}\n\treturn !isHDR ? token.$value.map((_, i) => formatStop(i, positions[i])).join(\", \") : {\n\t\t\".\": token.$value.map((_, i) => formatStop(i, \".\")).join(\", \"),\n\t\tsrgb: token.$value.map((_, i) => formatStop(i, \"srgb\")).join(\", \"),\n\t\tp3: token.$value.map((_, i) => formatStop(i, \"p3\")).join(\", \"),\n\t\trec2020: token.$value.map((_, i) => formatStop(i, \"rec2020\")).join(\", \")\n\t};\n}\n\n//#endregion\n//#region src/css/link.ts\n/** Convert link value to CSS */\nfunction transformLink(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `url(\"${token.$value}\")`;\n}\n\n//#endregion\n//#region src/css/number.ts\n/** Convert number value to CSS */\nfunction transformNumber(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n\n//#endregion\n//#region src/css/shadow.ts\n/** Convert shadow subvalue to CSS */\nfunction transformShadowLayer(value, options) {\n\tconst { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n\tconst offsetX = partialAliasOf?.offsetX ? transformAlias(tokensSet[partialAliasOf.offsetX]) : transformDimension({ $value: value.offsetX }, options);\n\tconst offsetY = partialAliasOf?.offsetY ? transformAlias(tokensSet[partialAliasOf.offsetY]) : transformDimension({ $value: value.offsetY }, options);\n\tconst blur = partialAliasOf?.blur ? transformAlias(tokensSet[partialAliasOf.blur]) : transformDimension({ $value: value.blur }, options);\n\tconst spread = partialAliasOf?.spread ? transformAlias(tokensSet[partialAliasOf.spread]) : transformDimension({ $value: value.spread }, options);\n\treturn [\n\t\tvalue?.inset === true ? \"inset\" : void 0,\n\t\toffsetX,\n\t\toffsetY,\n\t\tblur,\n\t\tspread,\n\t\tcolorValue\n\t].filter(Boolean).join(\" \");\n}\n/** Convert shadow value to CSS */\nfunction transformShadow(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst colors = token.$value.map((v, i) => token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: v.color }, options));\n\tconst isHDR = colors.some((c) => typeof c === \"object\");\n\tconst formatShadow = (colorKey) => token.$value.map((v, i) => transformShadowLayer(v, {\n\t\ttokensSet,\n\t\tcolorValue: typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey],\n\t\tpartialAliasOf: token.partialAliasOf?.[i],\n\t\ttransformAlias\n\t})).join(\", \");\n\treturn !isHDR ? formatShadow(\".\") : {\n\t\t\".\": formatShadow(\".\"),\n\t\tsrgb: formatShadow(\"srgb\"),\n\t\tp3: formatShadow(\"p3\"),\n\t\trec2020: formatShadow(\"rec2020\")\n\t};\n}\n\n//#endregion\n//#region src/css/string.ts\n/** Convert string value to CSS */\nfunction transformString(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n\n//#endregion\n//#region src/css/transition.ts\n/** Convert transition value to shorthand */\nfunction transformTransition(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst duration = token.partialAliasOf?.duration ? transformAlias(tokensSet[token.partialAliasOf.duration]) : transformDuration({ $value: token.$value.duration }, options);\n\tconst delay = token.partialAliasOf?.delay ? transformAlias(tokensSet[token.partialAliasOf.delay]) : transformDuration({ $value: token.$value.delay }, options);\n\tconst timingFunction = token.partialAliasOf?.timingFunction ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]) : transformCubicBezier({ $value: token.$value.timingFunction }, options);\n\treturn `${duration} ${delay} ${timingFunction}`;\n}\n\n//#endregion\n//#region src/css/typography.ts\n/** Convert typography value to multiple CSS values */\nfunction transformTypography(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tconst output = {};\n\tfor (const [property, subvalue] of Object.entries(token.$value)) {\n\t\tlet transformedValue;\n\t\tconst aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n\t\tif (aliasedID) {\n\t\t\tconst resolvedToken = tokensSet[aliasedID];\n\t\t\ttransformedValue = transformAlias(resolvedToken.$type === \"typography\" ? { id: `${aliasedID}-${property}` } : resolvedToken);\n\t\t} else switch (property) {\n\t\t\tcase \"fontFamily\":\n\t\t\t\ttransformedValue = transformFontFamily({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontSize\":\n\t\t\tcase \"letterSpacing\":\n\t\t\t\ttransformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontWeight\":\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"lineHeight\":\n\t\t\t\tif (typeof subvalue === \"number\") transformedValue = transformNumber({ $value: subvalue }, options);\n\t\t\t\telse transformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t}\n\t\toutput[kebabCase(property)] = transformedValue;\n\t}\n\treturn output;\n}\n\n//#endregion\n//#region src/css/index.ts\n/** Main CSS Transform */\nfunction transformCSSValue(token, { mode,...options }) {\n\tconst selectedMode = token.mode[mode];\n\tif (!selectedMode) return;\n\tconst tokenWithModeValue = {\n\t\tid: token.id,\n\t\t$type: token.$type,\n\t\t...selectedMode\n\t};\n\tswitch (tokenWithModeValue.$type) {\n\t\tcase \"boolean\": return transformBoolean(tokenWithModeValue, options);\n\t\tcase \"border\": return transformBorder(tokenWithModeValue, options);\n\t\tcase \"color\": return transformColor(tokenWithModeValue, options);\n\t\tcase \"cubicBezier\": return transformCubicBezier(tokenWithModeValue, options);\n\t\tcase \"dimension\": return transformDimension(tokenWithModeValue, options);\n\t\tcase \"duration\": return transformDuration(tokenWithModeValue, options);\n\t\tcase \"fontFamily\": return transformFontFamily(tokenWithModeValue, options);\n\t\tcase \"fontWeight\": return transformFontWeight(tokenWithModeValue, options);\n\t\tcase \"gradient\": return transformGradient(tokenWithModeValue, options);\n\t\tcase \"link\": return transformLink(tokenWithModeValue, options);\n\t\tcase \"number\": return transformNumber(tokenWithModeValue, options);\n\t\tcase \"shadow\": return transformShadow(tokenWithModeValue, options);\n\t\tcase \"string\": return transformString(tokenWithModeValue, options);\n\t\tcase \"strokeStyle\": return transformStrokeStyle(tokenWithModeValue, options);\n\t\tcase \"transition\": return transformTransition(tokenWithModeValue, options);\n\t\tcase \"typography\": return transformTypography(tokenWithModeValue, options);\n\t}\n}\n\n//#endregion\nexport { DEPTH_ROUNDING, defaultAliasTransform, generateShorthand, makeCSSVar, roundColor, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };\n//# sourceMappingURL=css.js.map","/**\n * Escapes a character if it has a special meaning in regular expressions\n * and returns the character as is if it doesn't\n */\nfunction escapeRegExpChar(char) {\n if (char === '-' ||\n char === '^' ||\n char === '$' ||\n char === '+' ||\n char === '.' ||\n char === '(' ||\n char === ')' ||\n char === '|' ||\n char === '[' ||\n char === ']' ||\n char === '{' ||\n char === '}' ||\n char === '*' ||\n char === '?' ||\n char === '\\\\') {\n return \"\\\\\".concat(char);\n }\n else {\n return char;\n }\n}\n/**\n * Escapes all characters in a given string that have a special meaning in regular expressions\n */\nfunction escapeRegExpString(str) {\n var result = '';\n for (var i = 0; i < str.length; i++) {\n result += escapeRegExpChar(str[i]);\n }\n return result;\n}\n/**\n * Transforms one or more glob patterns into a RegExp pattern\n */\nfunction transform(pattern, separator) {\n if (separator === void 0) { separator = true; }\n if (Array.isArray(pattern)) {\n var regExpPatterns = pattern.map(function (p) { return \"^\".concat(transform(p, separator), \"$\"); });\n return \"(?:\".concat(regExpPatterns.join('|'), \")\");\n }\n var separatorSplitter = '';\n var separatorMatcher = '';\n var wildcard = '.';\n if (separator === true) {\n separatorSplitter = '/';\n separatorMatcher = '[/\\\\\\\\]';\n wildcard = '[^/\\\\\\\\]';\n }\n else if (separator) {\n separatorSplitter = separator;\n separatorMatcher = escapeRegExpString(separatorSplitter);\n if (separatorMatcher.length > 1) {\n separatorMatcher = \"(?:\".concat(separatorMatcher, \")\");\n wildcard = \"((?!\".concat(separatorMatcher, \").)\");\n }\n else {\n wildcard = \"[^\".concat(separatorMatcher, \"]\");\n }\n }\n var requiredSeparator = separator ? \"\".concat(separatorMatcher, \"+?\") : '';\n var optionalSeparator = separator ? \"\".concat(separatorMatcher, \"*?\") : '';\n var segments = separator ? pattern.split(separatorSplitter) : [pattern];\n var result = '';\n for (var s = 0; s < segments.length; s++) {\n var segment = segments[s];\n var nextSegment = segments[s + 1];\n var currentSeparator = '';\n if (!segment && s > 0) {\n continue;\n }\n if (separator) {\n if (s === segments.length - 1) {\n currentSeparator = optionalSeparator;\n }\n else if (nextSegment !== '**') {\n currentSeparator = requiredSeparator;\n }\n else {\n currentSeparator = '';\n }\n }\n if (separator && segment === '**') {\n if (currentSeparator) {\n result +=\n s === 0\n ? ''\n : s === segments.length - 1\n ? \"(?:\".concat(requiredSeparator, \"|$)\")\n : requiredSeparator;\n result += \"(?:\".concat(wildcard, \"*?\").concat(currentSeparator, \")*?\");\n }\n continue;\n }\n for (var c = 0; c < segment.length; c++) {\n var char = segment[c];\n if (char === '\\\\') {\n if (c < segment.length - 1) {\n result += escapeRegExpChar(segment[c + 1]);\n c++;\n }\n }\n else if (char === '?') {\n result += wildcard;\n }\n else if (char === '*') {\n result += \"\".concat(wildcard, \"*?\");\n }\n else {\n result += escapeRegExpChar(char);\n }\n }\n result += currentSeparator;\n }\n return result;\n}\n\nfunction isMatch(regexp, sample) {\n if (typeof sample !== 'string') {\n throw new TypeError(\"Sample must be a string, but \".concat(typeof sample, \" given\"));\n }\n return regexp.test(sample);\n}\n/**\n * Compiles one or more glob patterns into a RegExp and returns an isMatch function.\n * The isMatch function takes a sample string as its only argument and returns `true`\n * if the string matches the pattern(s).\n *\n * ```js\n * wildcardMatch('src/*.js')('src/index.js') //=> true\n * ```\n *\n * ```js\n * const isMatch = wildcardMatch('*.example.com', '.')\n * isMatch('foo.example.com') //=> true\n * isMatch('foo.bar.com') //=> false\n * ```\n */\nfunction wildcardMatch(pattern, options) {\n if (typeof pattern !== 'string' && !Array.isArray(pattern)) {\n throw new TypeError(\"The first argument must be a single pattern string or an array of patterns, but \".concat(typeof pattern, \" given\"));\n }\n if (typeof options === 'string' || typeof options === 'boolean') {\n options = { separator: options };\n }\n if (arguments.length === 2 &&\n !(typeof options === 'undefined' ||\n (typeof options === 'object' && options !== null && !Array.isArray(options)))) {\n throw new TypeError(\"The second argument must be an options object or a string/boolean separator, but \".concat(typeof options, \" given\"));\n }\n options = options || {};\n if (options.separator === '\\\\') {\n throw new Error('\\\\ is not a valid separator because it is used for escaping. Try setting the separator to `true` instead');\n }\n var regexpPattern = transform(pattern, options.separator);\n var regexp = new RegExp(\"^\".concat(regexpPattern, \"$\"), options.flags);\n var fn = isMatch.bind(null, regexp);\n fn.options = options;\n fn.pattern = pattern;\n fn.regexp = regexp;\n return fn;\n}\n\nexport { wildcardMatch as default };\n//# sourceMappingURL=index.es.mjs.map\n","import type { CSSPluginOptions } from '@terrazzo/plugin-css';\n\nexport const FORMAT_ID = 'sass';\n\nexport interface SassPluginOptions {\n /** Where to output CSS */\n filename?: CSSPluginOptions['filename'];\n /** Glob patterns to exclude tokens from output */\n exclude?: CSSPluginOptions['exclude'];\n}\n\nexport const FILE_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n\n@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";`;\n\nexport const MIXIN_TOKEN = `@function token($tokenName) {\n @if map.has-key($__token-values, $tokenName) == false {\n @error 'No token named \"#{$tokenName}\"';\n }\n $_token: map.get($__token-values, $tokenName);\n @if meta.type-of($_token) == map and map.has-key($_token, \"__tz-error\") {\n @error map.get($_token, \"__tz-error\");\n }\n\n @return $_token;\n}`;\n\nexport const MIXIN_TYPOGRAPHY = `@mixin typography($tokenName, $modeName: \".\") {\n @if map.has-key($__token-typography-mixins, $tokenName) == false {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n $_mixin: map.get($__token-typography-mixins, $tokenName);\n $_properties: map.get($_mixin, \".\");\n @if map.has-key($_mixin) {\n $_properties: map.get($_mixin);\n }\n @each $_property, $_value in $_properties {\n #{$_property}: #{$_value};\n }\n}`;\n","import type { BuildHookOptions } from '@terrazzo/parser';\nimport { FORMAT_ID as CSS_FORMAT_ID } from '@terrazzo/plugin-css';\nimport { makeCSSVar } from '@terrazzo/token-tools/css';\nimport wcmatch from 'wildcard-match';\nimport { FILE_HEADER, MIXIN_TOKEN, MIXIN_TYPOGRAPHY, type SassPluginOptions } from './lib.js';\n\nexport interface BuildParams {\n getTransforms: BuildHookOptions['getTransforms'];\n options?: SassPluginOptions;\n}\n\nexport default function build({ getTransforms, options }: BuildParams): string {\n const tokens = getTransforms({ format: CSS_FORMAT_ID, id: '*', mode: '.' });\n\n const output: string[] = [FILE_HEADER, ''];\n\n const shouldExclude = wcmatch(options?.exclude ?? []);\n\n // main values\n output.push('$__token-values: (');\n for (const token of tokens) {\n if (shouldExclude(token.token.id)) {\n continue;\n }\n // typography tokens handled later\n if (token.token.$type === 'typography') {\n output.push(` \"${token.token.id}\": (\n \"__tz-error\": 'This is a typography mixin. Use \\`@include typography(\"${token.token.id}\")\\` instead.',\n ),`);\n } else {\n const name = token.localID ?? token.token.id;\n output.push(` \"${token.token.id}\": (${makeCSSVar(name, { wrapVar: true })}),`);\n }\n }\n output.push(');', '');\n\n // typography mixins\n output.push('$__token-typography-mixins: (');\n\n const typographyTokens = getTransforms({ format: CSS_FORMAT_ID, id: '*', mode: '.', $type: 'typography' });\n for (const token of typographyTokens) {\n output.push(` \"${token.token.id}\": (`);\n for (const property of Object.keys(token.value)) {\n const name = `${token.localID ?? token.token.id}-${property}`;\n output.push(` \"${property}\": (${makeCSSVar(name, { wrapVar: true })}),`);\n }\n output.push(' ),');\n }\n output.push(');', '');\n\n output.push(MIXIN_TOKEN, '', MIXIN_TYPOGRAPHY, '');\n\n return output.join('\\n');\n}\n","import type { Plugin } from '@terrazzo/parser';\nimport { FORMAT_ID as CSS_FORMAT_ID } from '@terrazzo/plugin-css';\nimport build from './build.js';\nimport { FORMAT_ID, type SassPluginOptions } from './lib.js';\n\nexport * from './lib.js';\n\nexport default function pluginSass(options?: SassPluginOptions): Plugin {\n const filename = options?.filename ?? 'index.scss';\n\n return {\n name: '@terrazzo/plugin-sass',\n enforce: 'post',\n config(config) {\n // plugin-css is required for transforms. throw error\n if (!config.plugins.some((p) => p.name === '@terrazzo/plugin-css')) {\n throw new Error(\n `@terrazzo/plugin-sass relies on @terrazzo/plugin-css.\nPlease install @terrazzo/plugin-css and follow setup to add to your config.`,\n );\n }\n },\n\n async transform({ getTransforms, setTransform }) {\n const tokens = getTransforms({ format: CSS_FORMAT_ID });\n for (const token of tokens) {\n const value = `var(${token.localID})`;\n let listingName = `token(\"${token.token.id}\")`;\n if (token.token.$type === 'typography') {\n listingName =\n token.mode !== '.' ? `typography(\"${token.token.id}\", \"${token.mode}\")` : `typography(\"${token.token.id}\")`;\n }\n setTransform(token.id, {\n format: FORMAT_ID,\n localID: token.id,\n value,\n mode: token.mode,\n meta: { 'token-listing': { name: listingName } },\n });\n }\n },\n\n async build({ getTransforms, outputFile }) {\n const output = build({ getTransforms, options });\n outputFile(filename, output);\n },\n };\n}\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["parseNumber","parseNumber_default","named_default","parseNamed","parseNamed_default","hex","parseHex","parseHex_default","num$1","per","num_per","num_per_none","hue$1","c","rgb_num_old","rgb_per_old","parseRgbLegacy","parseRgbLegacy_default","prepare","parse_default","_prepare_default","converter","converters$1","converter_default","modes","parsers","colorProfiles","identity","useMode","k$3","getMode","useParser","IdentStartCodePoint","IdentCodePoint","Tok","_i","is_num","is_ident","huenits","num","digits","ident","identlike","tokenize","parseColorSyntax","consumeCoords","c$1","parseModernSyntax","parse","parseRgb","r$1","parseRgb_default","parseTransparent","parseTransparent_default","lerp","get_classes","interpolatorPiecewise","interpolatorLinear","fixupAlpha","definition_default$12","linearize$2","convertA98ToXyz65","convertA98ToXyz65_default","gamma$2","convertXyz65ToA98","convertXyz65ToA98_default","fn$3","abs$1","convertRgbToLrgb","convertRgbToLrgb_default","convertRgbToXyz65","convertRgbToXyz65_default","fn$2","convertLrgbToRgb","convertLrgbToRgb_default","convertXyz65ToRgb","convertXyz65ToRgb_default","definition_default","normalizeHue","hue$2","normalizeHue_default","convertHslToRgb","convertRgbToHsl","M$1","hueToDeg","hue_default","hsl_old","parseHslLegacy","parseHslLegacy_default","parseHsl","parseHsl_default","hue","fn$4","fixupHueShorter","differenceHueSaturation","differenceHueNaive","differenceHueChroma","averageAngle","definition_default$1","convertHsvToRgb","f$2","convertRgbToHsv","definition_default$19","convertHwbToRgb","convertRgbToHwb","ParseHwb","definition_default$2","k","e","D50","D65","fn$1","convertLabToXyz50","convertLabToXyz50_default","convertXyz50ToRgb","convertXyz50ToRgb_default","convertLabToRgb","convertLabToRgb_default","convertRgbToXyz50","convertRgbToXyz50_default","f$1","convertXyz50ToLab","convertXyz50ToLab_default","convertRgbToLab","convertRgbToLab_default","parseLab","definition_default$3","k$1","e$1","fn","convertLab65ToXyz65","convertLab65ToXyz65_default","convertLab65ToRgb","convertLab65ToRgb_default","f","convertXyz65ToLab65","convertXyz65ToLab65_default","convertRgbToLab65","convertRgbToLab65_default","definition_default$4","convertLabToLch","convertLabToLch_default","convertLchToLab","convertLchToLab_default","parseLch","definition_default$5","definition_default$23","definition_default$6","convertOklabToLrgb","convertOklabToLrgb_default","convertLrgbToOklab","convertLrgbToOklab_default","convertRgbToOklab","convertRgbToOklab_default","convertOklabToRgb","convertOklabToRgb_default","parseOklab","parseOklab_default","definition_default$7","parseOklch","parseOklch_default","definition_default$8","convertP3ToXyz65","convertP3ToXyz65_default","convertXyz65ToP3","convertXyz65ToP3_default","definition_default$9","gamma$1","convertXyz50ToProphoto","convertXyz50ToProphoto_default","linearize$1","convertProphotoToXyz50","convertProphotoToXyz50_default","definition_default$10","α$1","β$1","gamma","convertXyz65ToRec2020","convertXyz65ToRec2020_default","α","β","linearize","convertRec2020ToXyz65","convertRec2020ToXyz65_default","definition_default$11","definition_default$13","convertXyz65ToXyz50","convertXyz65ToXyz50_default","convertXyz50ToXyz65","definition_default$14","M","degToRad","radToDeg","DE","BE","BCAD","convertRgbToCubehelix","convertRgbToCubehelix_default","convertCubehelixToRgb","definition_default$15","kE","kCH","θ","cosθ","sinθ","factor","convertDlchToLab65","e$3","convertDlchToLab65_default","convertLab65ToDlch","convertLab65ToDlch_default","convertDlabToLab65","convertLab65ToDlab","definition_default$16","definition_default$17","convertHsiToRgb","convertRgbToHsi","definition_default$18","YW","M1","M2","C1","C2","C3","transferPqDecode","transferPqEncode","toRel","convertItpToXyz65","p$2","convertItpToXyz65_default","toAbs","convertXyz65ToItp","convertXyz65ToItp_default","definition_default$20","p$1","d0$1","jabPqEncode","vn$2","abs","convertXyz65ToJab","convertXyz65ToJab_default","p","d0","jabPqDecode","rel","convertJabToXyz65","convertJabToXyz65_default","convertRgbToJab","convertRgbToJab_default","convertJabToRgb","convertJabToRgb_default","definition_default$21","convertJabToJch","convertJabToJch_default","convertJchToJab","convertJchToJab_default","definition_default$22","convertLuvToLchuv","convertLuvToLchuv_default","convertLchuvToLuv","convertLchuvToLuv_default","u_fn$1","v_fn$1","un$1","vn$1","l_fn","convertXyz50ToLuv","convertXyz50ToLuv_default","u_fn","v_fn","un","vn","convertLuvToXyz50","convertLuvToXyz50_default","convertRgbToLchuv","convertLchuvToRgb","definition_default$24","definition_default$25","toe","toe_inv","compute_max_saturation","find_cusp","find_gamut_intersection","C1$1","get_ST_max","get_Cs","convertOklabToOkhsl","convertOkhslToOklab","modeOkhsl_default","convertOklabToOkhsv","convertOkhsvToOklab","modeOkhsv_default","bias","bias_cbrt","transfer$1","convertRgbToXyb","convertRgbToXyb_default","transfer","convertXybToRgb","definition_default$26","convertRgbToYiq","convertRgbToYiq_default","convertYiqToRgb","definition_default$27","r","round","round_default","rgb$2","rgb$1","converters","DEPTH_ROUNDING","FORMAT_ID","p","c","fn","p","f","parseNumber","named","parseNumber","num","hue","num","parse","prepare","converters","converters","definition","k","converter","c","r","c","definition","parseRgb","parseHex","parseRgbLegacy","parseNamed","parseTransparent","linearize","r","a98","gamma","fn","abs","c","r","convertRgbToLrgb","rgb","r","fn","abs","c","r","convertLrgbToRgb","definition","rgb","convertXyz65ToA98","convertRgbToXyz65","convertXyz65ToRgb","convertA98ToXyz65","hue","normalizeHue","r","M","hue","hueToDeg","hue","normalizeHue","fn","normalizeHue","val","sum","definition","parseHsl","parseHslLegacy","c","normalizeHue","f","r","M","definition","hsv","definition","parseHwb","c","k","e","fn","convertLrgbToRgb","convertXyz50ToRgb","convertLabToXyz50","lab","convertRgbToLrgb","rgb","r","f","convertXyz50ToLab","convertRgbToXyz50","rgb","definition","convertLabToXyz50","convertLabToRgb","convertXyz50ToLab","convertRgbToLab","parseLab","c","k","e","e","k","convertXyz65ToRgb","convertLab65ToXyz65","lab","e","k","convertXyz65ToLab65","convertRgbToXyz65","rgb","definition","lab","convertLab65ToXyz65","convertLab65ToRgb","convertXyz65ToLab65","convertRgbToLab65","c","normalizeHue","c","c","definition","convertLchToLab","convertLabToRgb","c","convertLabToLch","convertRgbToLab","parseLch","definition","lch","convertLchToLab","c","convertLab65ToRgb","convertLabToLch","convertRgbToLab65","definition","rgb","convertLrgbToRgb","convertRgbToLrgb","M","r","M","convertLrgbToOklab","convertRgbToLrgb","rgb","convertLrgbToRgb","convertOklabToLrgb","c","definition","lab","convertOklabToLrgb","convertOklabToRgb","convertLrgbToOklab","convertRgbToOklab","parseOklab","c","c","definition","lch","convertLchToLab","c","convertOklabToRgb","convertLabToLch","convertRgbToOklab","parseOklch","convertRgbToLrgb","rgb","r","convertLrgbToRgb","definition","rgb","convertXyz65ToP3","convertRgbToXyz65","convertXyz65ToRgb","convertP3ToXyz65","gamma","abs","linearize","abs","r","prophoto","definition","rgb","convertXyz50ToProphoto","convertRgbToXyz50","convertProphotoToXyz50","convertXyz50ToRgb","α","β","abs","abs","r","rec2020","definition","rgb","convertXyz65ToRec2020","convertRgbToXyz65","convertRec2020ToXyz65","convertXyz65ToRgb","definition","convertXyz50ToRgb","convertXyz50ToLab","convertRgbToXyz50","convertLabToXyz50","xyz65","xyz50","definition","convertXyz65ToRgb","convertXyz65ToXyz50","convertRgbToXyz65","convertXyz50ToXyz65","a98","modeA98","hsl","modeHsl","hsv","modeHsv","hwb","modeHwb","lab","modeLab","lab65","modeLab65","lch","modeLch","lch65","modeLch65","lrgb","modeLrgb","oklab","modeOklab","oklch","modeOklch","p3","modeP3","prophoto","modeProphoto","rec2020","modeRec2020","rgb","modeRgb","xyz50","modeXyz50","xyz65","modeXyz65","r","definition","convertRgbToCubehelix","convertCubehelixToRgb","c","e","f","e","f","normalizeHue","convertDlchToLab65","convertLabToLch","c","convertLchToLab","convertLab65ToDlch","definition","convertLab65ToRgb","convertRgbToLab65","definition","convertDlchToLab65","convertLchToLab","c","convertLab65ToRgb","convertLab65ToDlch","convertLabToLch","convertRgbToLab65","normalizeHue","f","r","M","definition","c","c","p","c","definition","convertItpToXyz65","convertXyz65ToRgb","convertXyz65ToItp","convertRgbToXyz65","p","d0","vn","n","n","convertXyz65ToJab","convertRgbToXyz65","rgb","convertXyz65ToRgb","convertJabToXyz65","definition","convertRgbToJab","convertXyz65ToJab","convertJabToRgb","convertJabToXyz65","c","normalizeHue","c","definition","convertJchToJab","convertJabToRgb","c","convertJabToJch","convertRgbToJab","c","normalizeHue","c","u_fn","v_fn","un","vn","convertLuvToLchuv","convertXyz50ToLuv","convertRgbToXyz50","rgb","convertXyz50ToRgb","convertLuvToXyz50","convertLchuvToLuv","lchuv","definition","definition","convertLuvToXyz50","convertXyz50ToRgb","luv","convertXyz50ToLuv","convertRgbToXyz50","rgb","f","rgb","convertOklabToLrgb","C1","r","b","k","lab","c","normalizeHue","hsl","modeHsl","convertRgbToOklab","c","convertOklabToRgb","lab","c","k","convertOklabToLrgb","normalizeHue","hsv","k","convertOklabToLrgb","modeHsv","convertRgbToOklab","c","convertOklabToRgb","transfer","convertRgbToLrgb","r","convertLrgbToRgb","definition","convertXybToRgb","convertRgbToXyb","r","convertYiqToRgb","convertRgbToYiq","round","rgb","converter","hsl","r","c","rgb","converter","c","prepare","c","converter","parse","r","c","wcmatch","modeA98","modeCubehelix","modeDlab","modeDlch","modeHsi","modeHsl","modeHsv","modeHwb","modeItp","modeJab","modeJch","modeLab","modeLab65","modeLch","modeLch65","modeLchuv","modeLrgb","modeLuv","modeOkhsl","modeOkhsv","modeOklab","modeOklch","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyb","modeXyz50","modeXyz65","modeYiq","k","pc","contrast","wcagContrast","wcmatch","p","modes","r","hex","modeA98","modeHsl","modeHwb","modeLab","modeLab65","modeLch","modeLrgb","modeOklab","modeOklch","modeOkhsv","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyz50","modeXyz65","round","indentationLevel: number","value: string","name: string","value: SassToken","p","CSS_FORMAT_ID"],"sources":["../../plugin-css/dist/index.js","../../../node_modules/.pnpm/wildcard-match@5.1.4/node_modules/wildcard-match/build/index.es.mjs","../../../node_modules/.pnpm/@humanwhocodes+momoa@3.3.10/node_modules/@humanwhocodes/momoa/dist/momoa.js","../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNumber.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/colors/named.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNamed.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseHex.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/regex.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgbLegacy.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/_prepare.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/converter.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/modes.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/parse.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseTransparent.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/lerp.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/piecewise.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/linear.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/alpha.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertA98ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertXyz65ToA98.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertRgbToLrgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertRgbToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertLrgbToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/normalizeHue.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertHslToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertRgbToHsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/hue.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHslLegacy.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/hue.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/difference.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/average.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertHsvToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertRgbToHsv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertHwbToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertRgbToHwb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/parseHwb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertRgbToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertXyz50ToLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertRgbToLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/parseLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertXyz65ToLab65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertRgbToLab65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLabToLch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLchToLab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/parseLch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch65/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToLrgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertLrgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertRgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/parseOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/parseOklch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertP3ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertXyz65ToP3.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/bootstrap/css.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertRgbToCubehelix.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertCubehelixToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertDlchToLab65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertLab65ToDlch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertHsiToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertRgbToHsi.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/transfer.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertItpToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertXyz65ToItp.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertXyz65ToJab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToXyz65.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertRgbToJab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJabToJch.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJchToJab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLuvToLchuv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLchuvToLuv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertXyz50ToLuv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertLuvToXyz50.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/helpers.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOklabToOkhsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOkhslToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/modeOkhsl.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOklabToOkhsv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOkhsvToOklab.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/modeOkhsv.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/constants.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertRgbToXyb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertXybToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertRgbToYiq.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertYiqToRgb.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/definition.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/round.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/formatter.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/clamp.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/wcag.js","../../token-tools/dist/string-BIhoe-L2.js","../../token-tools/dist/index.js","../../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/index.js","../../json-schema-tools/dist/index.js","../../parser/dist/index.js","../src/lib.ts","../../token-tools/dist/css.js","../src/node.ts","../src/build.ts","../src/index.ts"],"sourcesContent":["//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNumber.js\nconst parseNumber = (color, len) => {\n\tif (typeof color !== \"number\") return;\n\tif (len === 3) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 8 & 15 | color >> 4 & 240) / 255,\n\t\tg: (color >> 4 & 15 | color & 240) / 255,\n\t\tb: (color & 15 | color << 4 & 240) / 255\n\t};\n\tif (len === 4) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 12 & 15 | color >> 8 & 240) / 255,\n\t\tg: (color >> 8 & 15 | color >> 4 & 240) / 255,\n\t\tb: (color >> 4 & 15 | color & 240) / 255,\n\t\talpha: (color & 15 | color << 4 & 240) / 255\n\t};\n\tif (len === 6) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 16 & 255) / 255,\n\t\tg: (color >> 8 & 255) / 255,\n\t\tb: (color & 255) / 255\n\t};\n\tif (len === 8) return {\n\t\tmode: \"rgb\",\n\t\tr: (color >> 24 & 255) / 255,\n\t\tg: (color >> 16 & 255) / 255,\n\t\tb: (color >> 8 & 255) / 255,\n\t\talpha: (color & 255) / 255\n\t};\n};\nvar parseNumber_default = parseNumber;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/colors/named.js\nconst named = {\n\taliceblue: 15792383,\n\tantiquewhite: 16444375,\n\taqua: 65535,\n\taquamarine: 8388564,\n\tazure: 15794175,\n\tbeige: 16119260,\n\tbisque: 16770244,\n\tblack: 0,\n\tblanchedalmond: 16772045,\n\tblue: 255,\n\tblueviolet: 9055202,\n\tbrown: 10824234,\n\tburlywood: 14596231,\n\tcadetblue: 6266528,\n\tchartreuse: 8388352,\n\tchocolate: 13789470,\n\tcoral: 16744272,\n\tcornflowerblue: 6591981,\n\tcornsilk: 16775388,\n\tcrimson: 14423100,\n\tcyan: 65535,\n\tdarkblue: 139,\n\tdarkcyan: 35723,\n\tdarkgoldenrod: 12092939,\n\tdarkgray: 11119017,\n\tdarkgreen: 25600,\n\tdarkgrey: 11119017,\n\tdarkkhaki: 12433259,\n\tdarkmagenta: 9109643,\n\tdarkolivegreen: 5597999,\n\tdarkorange: 16747520,\n\tdarkorchid: 10040012,\n\tdarkred: 9109504,\n\tdarksalmon: 15308410,\n\tdarkseagreen: 9419919,\n\tdarkslateblue: 4734347,\n\tdarkslategray: 3100495,\n\tdarkslategrey: 3100495,\n\tdarkturquoise: 52945,\n\tdarkviolet: 9699539,\n\tdeeppink: 16716947,\n\tdeepskyblue: 49151,\n\tdimgray: 6908265,\n\tdimgrey: 6908265,\n\tdodgerblue: 2003199,\n\tfirebrick: 11674146,\n\tfloralwhite: 16775920,\n\tforestgreen: 2263842,\n\tfuchsia: 16711935,\n\tgainsboro: 14474460,\n\tghostwhite: 16316671,\n\tgold: 16766720,\n\tgoldenrod: 14329120,\n\tgray: 8421504,\n\tgreen: 32768,\n\tgreenyellow: 11403055,\n\tgrey: 8421504,\n\thoneydew: 15794160,\n\thotpink: 16738740,\n\tindianred: 13458524,\n\tindigo: 4915330,\n\tivory: 16777200,\n\tkhaki: 15787660,\n\tlavender: 15132410,\n\tlavenderblush: 16773365,\n\tlawngreen: 8190976,\n\tlemonchiffon: 16775885,\n\tlightblue: 11393254,\n\tlightcoral: 15761536,\n\tlightcyan: 14745599,\n\tlightgoldenrodyellow: 16448210,\n\tlightgray: 13882323,\n\tlightgreen: 9498256,\n\tlightgrey: 13882323,\n\tlightpink: 16758465,\n\tlightsalmon: 16752762,\n\tlightseagreen: 2142890,\n\tlightskyblue: 8900346,\n\tlightslategray: 7833753,\n\tlightslategrey: 7833753,\n\tlightsteelblue: 11584734,\n\tlightyellow: 16777184,\n\tlime: 65280,\n\tlimegreen: 3329330,\n\tlinen: 16445670,\n\tmagenta: 16711935,\n\tmaroon: 8388608,\n\tmediumaquamarine: 6737322,\n\tmediumblue: 205,\n\tmediumorchid: 12211667,\n\tmediumpurple: 9662683,\n\tmediumseagreen: 3978097,\n\tmediumslateblue: 8087790,\n\tmediumspringgreen: 64154,\n\tmediumturquoise: 4772300,\n\tmediumvioletred: 13047173,\n\tmidnightblue: 1644912,\n\tmintcream: 16121850,\n\tmistyrose: 16770273,\n\tmoccasin: 16770229,\n\tnavajowhite: 16768685,\n\tnavy: 128,\n\toldlace: 16643558,\n\tolive: 8421376,\n\tolivedrab: 7048739,\n\torange: 16753920,\n\torangered: 16729344,\n\torchid: 14315734,\n\tpalegoldenrod: 15657130,\n\tpalegreen: 10025880,\n\tpaleturquoise: 11529966,\n\tpalevioletred: 14381203,\n\tpapayawhip: 16773077,\n\tpeachpuff: 16767673,\n\tperu: 13468991,\n\tpink: 16761035,\n\tplum: 14524637,\n\tpowderblue: 11591910,\n\tpurple: 8388736,\n\trebeccapurple: 6697881,\n\tred: 16711680,\n\trosybrown: 12357519,\n\troyalblue: 4286945,\n\tsaddlebrown: 9127187,\n\tsalmon: 16416882,\n\tsandybrown: 16032864,\n\tseagreen: 3050327,\n\tseashell: 16774638,\n\tsienna: 10506797,\n\tsilver: 12632256,\n\tskyblue: 8900331,\n\tslateblue: 6970061,\n\tslategray: 7372944,\n\tslategrey: 7372944,\n\tsnow: 16775930,\n\tspringgreen: 65407,\n\tsteelblue: 4620980,\n\ttan: 13808780,\n\tteal: 32896,\n\tthistle: 14204888,\n\ttomato: 16737095,\n\tturquoise: 4251856,\n\tviolet: 15631086,\n\twheat: 16113331,\n\twhite: 16777215,\n\twhitesmoke: 16119285,\n\tyellow: 16776960,\n\tyellowgreen: 10145074\n};\nvar named_default = named;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseNamed.js\nconst parseNamed = (color) => {\n\treturn parseNumber_default(named_default[color.toLowerCase()], 6);\n};\nvar parseNamed_default = parseNamed;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseHex.js\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\nconst parseHex = (color) => {\n\tlet match;\n\treturn (match = color.match(hex)) ? parseNumber_default(parseInt(match[1], 16), match[1].length) : void 0;\n};\nvar parseHex_default = parseHex;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/regex.js\nconst num$1 = \"([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\";\nconst num_none = `(?:${num$1}|none)`;\nconst per = `${num$1}%`;\nconst per_none = `(?:${num$1}%|none)`;\nconst num_per = `(?:${num$1}%|${num$1})`;\nconst num_per_none = `(?:${num$1}%|${num$1}|none)`;\nconst hue$1 = `(?:${num$1}(deg|grad|rad|turn)|${num$1})`;\nconst hue_none = `(?:${num$1}(deg|grad|rad|turn)|${num$1}|none)`;\nconst c = `\\\\s*,\\\\s*`;\nconst rx_num_per_none = /* @__PURE__ */ new RegExp(\"^\" + num_per_none + \"$\");\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgbLegacy.js\nconst rgb_num_old = /* @__PURE__ */ new RegExp(`^rgba?\\\\(\\\\s*${num$1}${c}${num$1}${c}${num$1}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst rgb_per_old = /* @__PURE__ */ new RegExp(`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst parseRgbLegacy = (color) => {\n\tlet res = { mode: \"rgb\" };\n\tlet match;\n\tif (match = color.match(rgb_num_old)) {\n\t\tif (match[1] !== void 0) res.r = match[1] / 255;\n\t\tif (match[2] !== void 0) res.g = match[2] / 255;\n\t\tif (match[3] !== void 0) res.b = match[3] / 255;\n\t} else if (match = color.match(rgb_per_old)) {\n\t\tif (match[1] !== void 0) res.r = match[1] / 100;\n\t\tif (match[2] !== void 0) res.g = match[2] / 100;\n\t\tif (match[3] !== void 0) res.b = match[3] / 100;\n\t} else return;\n\tif (match[4] !== void 0) res.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\telse if (match[5] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[5]));\n\treturn res;\n};\nvar parseRgbLegacy_default = parseRgbLegacy;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/_prepare.js\nconst prepare = (color, mode) => color === void 0 ? void 0 : typeof color !== \"object\" ? parse_default(color) : color.mode !== void 0 ? color : mode ? {\n\t...color,\n\tmode\n} : void 0;\nvar _prepare_default = prepare;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/converter.js\nconst converter = (target_mode = \"rgb\") => (color) => (color = _prepare_default(color, target_mode)) !== void 0 ? color.mode === target_mode ? color : converters$1[color.mode][target_mode] ? converters$1[color.mode][target_mode](color) : target_mode === \"rgb\" ? converters$1[color.mode].rgb(color) : converters$1.rgb[target_mode](converters$1[color.mode].rgb(color)) : void 0;\nvar converter_default = converter;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/modes.js\nconst converters$1 = {};\nconst modes = {};\nconst parsers = [];\nconst colorProfiles = {};\nconst identity = (v) => v;\nconst useMode = (definition$28) => {\n\tconverters$1[definition$28.mode] = {\n\t\t...converters$1[definition$28.mode],\n\t\t...definition$28.toMode\n\t};\n\tObject.keys(definition$28.fromMode || {}).forEach((k$3) => {\n\t\tif (!converters$1[k$3]) converters$1[k$3] = {};\n\t\tconverters$1[k$3][definition$28.mode] = definition$28.fromMode[k$3];\n\t});\n\tif (!definition$28.ranges) definition$28.ranges = {};\n\tif (!definition$28.difference) definition$28.difference = {};\n\tdefinition$28.channels.forEach((channel) => {\n\t\tif (definition$28.ranges[channel] === void 0) definition$28.ranges[channel] = [0, 1];\n\t\tif (!definition$28.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);\n\t\tif (typeof definition$28.interpolate[channel] === \"function\") definition$28.interpolate[channel] = { use: definition$28.interpolate[channel] };\n\t\tif (!definition$28.interpolate[channel].fixup) definition$28.interpolate[channel].fixup = identity;\n\t});\n\tmodes[definition$28.mode] = definition$28;\n\t(definition$28.parse || []).forEach((parser) => {\n\t\tuseParser(parser, definition$28.mode);\n\t});\n\treturn converter_default(definition$28.mode);\n};\nconst getMode = (mode) => modes[mode];\nconst useParser = (parser, mode) => {\n\tif (typeof parser === \"string\") {\n\t\tif (!mode) throw new Error(`'mode' required when 'parser' is a string`);\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === \"function\") {\n\t\tif (parsers.indexOf(parser) < 0) parsers.push(parser);\n\t}\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/parse.js\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\nconst Tok = {\n\tFunction: \"function\",\n\tIdent: \"ident\",\n\tNumber: \"number\",\n\tPercentage: \"percentage\",\n\tParenClose: \")\",\n\tNone: \"none\",\n\tHue: \"hue\",\n\tAlpha: \"alpha\"\n};\nlet _i = 0;\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === \"-\" || ch === \"+\") return /\\d/.test(ch1) || ch1 === \".\" && /\\d/.test(chars[_i + 2]);\n\tif (ch === \".\") return /\\d/.test(ch1);\n\treturn /\\d/.test(ch);\n}\nfunction is_ident(chars) {\n\tif (_i >= chars.length) return false;\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) return true;\n\tif (ch === \"-\") {\n\t\tif (chars.length - _i < 2) return false;\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === \"-\" || IdentStartCodePoint.test(ch1)) return true;\n\t\treturn false;\n\t}\n\treturn false;\n}\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\nfunction num(chars) {\n\tlet value = \"\";\n\tif (chars[_i] === \"-\" || chars[_i] === \"+\") value += chars[_i++];\n\tvalue += digits(chars);\n\tif (chars[_i] === \".\" && /\\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);\n\tif (chars[_i] === \"e\" || chars[_i] === \"E\") {\n\t\tif ((chars[_i + 1] === \"-\" || chars[_i + 1] === \"+\") && /\\d/.test(chars[_i + 2])) value += chars[_i++] + chars[_i++] + digits(chars);\n\t\telse if (/\\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === \"deg\" || id === \"rad\" || id === \"turn\" || id === \"grad\") return {\n\t\t\ttype: Tok.Hue,\n\t\t\tvalue: value * huenits[id]\n\t\t};\n\t\treturn;\n\t}\n\tif (chars[_i] === \"%\") {\n\t\t_i++;\n\t\treturn {\n\t\t\ttype: Tok.Percentage,\n\t\t\tvalue: +value\n\t\t};\n\t}\n\treturn {\n\t\ttype: Tok.Number,\n\t\tvalue: +value\n\t};\n}\nfunction digits(chars) {\n\tlet v = \"\";\n\twhile (/\\d/.test(chars[_i])) v += chars[_i++];\n\treturn v;\n}\nfunction ident(chars) {\n\tlet v = \"\";\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) v += chars[_i++];\n\treturn v;\n}\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === \"(\") {\n\t\t_i++;\n\t\treturn {\n\t\t\ttype: Tok.Function,\n\t\t\tvalue: v\n\t\t};\n\t}\n\tif (v === \"none\") return {\n\t\ttype: Tok.None,\n\t\tvalue: void 0\n\t};\n\treturn {\n\t\ttype: Tok.Ident,\n\t\tvalue: v\n\t};\n}\nfunction tokenize(str = \"\") {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\t_i = 0;\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\t\tif (ch === \"\\n\" || ch === \"\t\" || ch === \" \") {\n\t\t\twhile (_i < chars.length && (chars[_i] === \"\\n\" || chars[_i] === \"\t\" || chars[_i] === \" \")) _i++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \",\") return;\n\t\tif (ch === \")\") {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === \"+\") {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (ch === \"-\") {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({\n\t\t\t\t\ttype: Tok.Ident,\n\t\t\t\t\tvalue: ident(chars)\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (ch === \".\") {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (ch === \"/\") {\n\t\t\twhile (_i < chars.length && (chars[_i] === \"\\n\" || chars[_i] === \"\t\" || chars[_i] === \" \")) _i++;\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: alpha\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === \"none\") {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\ttype: Tok.None,\n\t\t\t\t\t\t\tvalue: void 0\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\t\treturn;\n\t}\n\treturn tokens;\n}\nfunction parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== \"color\") return;\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) return;\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) return;\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) return;\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c$1, ch; ii < channels.length; ii++) {\n\t\tc$1 = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c$1.type !== Tok.None) {\n\t\t\tres[ch] = c$1.type === Tok.Number ? c$1.value : c$1.value / 100;\n\t\t\tif (ch === \"alpha\") res[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t}\n\t}\n\treturn res;\n}\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (token.type === Tok.None || token.type === Tok.Number || token.type === Tok.Alpha || token.type === Tok.Percentage || includeHue && token.type === Tok.Hue) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) return;\n\t\t\tcontinue;\n\t\t}\n\t\treturn;\n\t}\n\tif (coords.length < 3 || coords.length > 4) return;\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) return;\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) coords.push({\n\t\ttype: Tok.None,\n\t\tvalue: void 0\n\t});\n\treturn coords.every((c$1) => c$1.type !== Tok.Alpha) ? coords : void 0;\n}\nfunction parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) return;\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) return;\n\tcoords.unshift(token.value);\n\treturn coords;\n}\nconst parse = (color) => {\n\tif (typeof color !== \"string\") return;\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : void 0;\n\tlet result = void 0;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) if ((result = parsers[i++](color, parsed)) !== void 0) return result;\n\treturn tokens ? parseColorSyntax(tokens) : void 0;\n};\nvar parse_default = parse;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseRgb.js\nfunction parseRgb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"rgb\" && parsed[0] !== \"rgba\") return;\n\tconst res = { mode: \"rgb\" };\n\tconst [, r$1, g, b, alpha] = parsed;\n\tif (r$1.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) return;\n\tif (r$1.type !== Tok.None) res.r = r$1.type === Tok.Number ? r$1.value / 255 : r$1.value / 100;\n\tif (g.type !== Tok.None) res.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\tif (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseRgb_default = parseRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/parseTransparent.js\nconst parseTransparent = (c$1) => c$1 === \"transparent\" ? {\n\tmode: \"rgb\",\n\tr: 0,\n\tg: 0,\n\tb: 0,\n\talpha: 0\n} : void 0;\nvar parseTransparent_default = parseTransparent;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/lerp.js\nconst lerp = (a, b, t) => a + t * (b - a);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/piecewise.js\nconst get_classes = (arr) => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === void 0 && b === void 0) classes.push(void 0);\n\t\telse if (a !== void 0 && b !== void 0) classes.push([a, b]);\n\t\telse classes.push(a !== void 0 ? [a, a] : [b, b]);\n\t}\n\treturn classes;\n};\nconst interpolatorPiecewise = (interpolator) => (arr) => {\n\tlet classes = get_classes(arr);\n\treturn (t) => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === void 0 ? void 0 : interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/interpolate/linear.js\nconst interpolatorLinear = interpolatorPiecewise(lerp);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/alpha.js\nconst fixupAlpha = (arr) => {\n\tlet some_defined = false;\n\tlet res = arr.map((v) => {\n\t\tif (v !== void 0) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rgb/definition.js\nconst definition$27 = {\n\tmode: \"rgb\",\n\tchannels: [\n\t\t\"r\",\n\t\t\"g\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tparse: [\n\t\tparseRgb_default,\n\t\tparseHex_default,\n\t\tparseRgbLegacy_default,\n\t\tparseNamed_default,\n\t\tparseTransparent_default,\n\t\t\"srgb\"\n\t],\n\tserialize: \"srgb\",\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tgamut: true,\n\twhite: {\n\t\tr: 1,\n\t\tg: 1,\n\t\tb: 1\n\t},\n\tblack: {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0\n\t}\n};\nvar definition_default$12 = definition$27;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertA98ToXyz65.js\nconst linearize$2 = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\nconst convertA98ToXyz65 = (a98$2) => {\n\tlet r$1 = linearize$2(a98$2.r);\n\tlet g = linearize$2(a98$2.g);\n\tlet b = linearize$2(a98$2.b);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .5766690429101305 * r$1 + .1855582379065463 * g + .1882286462349947 * b,\n\t\ty: .297344975250536 * r$1 + .6273635662554661 * g + .0752914584939979 * b,\n\t\tz: .0270313613864123 * r$1 + .0706888525358272 * g + .9913375368376386 * b\n\t};\n\tif (a98$2.alpha !== void 0) res.alpha = a98$2.alpha;\n\treturn res;\n};\nvar convertA98ToXyz65_default = convertA98ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/convertXyz65ToA98.js\nconst gamma$2 = (v) => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"a98\",\n\t\tr: gamma$2(x * 2.0415879038107465 - y * .5650069742788597 - .3447313507783297 * z),\n\t\tg: gamma$2(x * -.9692436362808798 + y * 1.8759675015077206 + .0415550574071756 * z),\n\t\tb: gamma$2(x * .0134442806320312 - y * .1183623922310184 + 1.0151749943912058 * z)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToA98_default = convertXyz65ToA98;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertRgbToLrgb.js\nconst fn$3 = (c$1 = 0) => {\n\tconst abs$1 = Math.abs(c$1);\n\tif (abs$1 <= .04045) return c$1 / 12.92;\n\treturn (Math.sign(c$1) || 1) * Math.pow((abs$1 + .055) / 1.055, 2.4);\n};\nconst convertRgbToLrgb = ({ r: r$1, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: \"lrgb\",\n\t\tr: fn$3(r$1),\n\t\tg: fn$3(g),\n\t\tb: fn$3(b)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToLrgb_default = convertRgbToLrgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertRgbToXyz65.js\nconst convertRgbToXyz65 = (rgb$4) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .4123907992659593 * r$1 + .357584339383878 * g + .1804807884018343 * b,\n\t\ty: .2126390058715102 * r$1 + .715168678767756 * g + .0721923153607337 * b,\n\t\tz: .0193308187155918 * r$1 + .119194779794626 * g + .9505321522496607 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToXyz65_default = convertRgbToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/convertLrgbToRgb.js\nconst fn$2 = (c$1 = 0) => {\n\tconst abs$1 = Math.abs(c$1);\n\tif (abs$1 > .0031308) return (Math.sign(c$1) || 1) * (1.055 * Math.pow(abs$1, 1 / 2.4) - .055);\n\treturn c$1 * 12.92;\n};\nconst convertLrgbToRgb = ({ r: r$1, g, b, alpha }, mode = \"rgb\") => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn$2(r$1),\n\t\tg: fn$2(g),\n\t\tb: fn$2(b)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLrgbToRgb_default = convertLrgbToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToRgb.js\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = convertLrgbToRgb_default({\n\t\tr: x * 3.2409699419045226 - y * 1.537383177570094 - .4986107602930034 * z,\n\t\tg: x * -.9692436362808796 + y * 1.8759675015077204 + .0415550574071756 * z,\n\t\tb: x * .0556300796969936 - y * .2039769588889765 + 1.0569715142428784 * z\n\t});\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToRgb_default = convertXyz65ToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/a98/definition.js\nconst definition$26 = {\n\t...definition_default$12,\n\tmode: \"a98\",\n\tparse: [\"a98-rgb\"],\n\tserialize: \"a98-rgb\",\n\tfromMode: {\n\t\trgb: (color) => convertXyz65ToA98_default(convertRgbToXyz65_default(color)),\n\t\txyz65: convertXyz65ToA98_default\n\t},\n\ttoMode: {\n\t\trgb: (color) => convertXyz65ToRgb_default(convertA98ToXyz65_default(color)),\n\t\txyz65: convertA98ToXyz65_default\n\t}\n};\nvar definition_default = definition$26;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/normalizeHue.js\nconst normalizeHue = (hue$2) => (hue$2 = hue$2 % 360) < 0 ? hue$2 + 360 : hue$2;\nvar normalizeHue_default = normalizeHue;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertHslToRgb.js\nfunction convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue_default(h !== void 0 ? h : 0);\n\tif (s === void 0) s = 0;\n\tif (l === void 0) l = 0;\n\tlet m1 = l + s * (l < .5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(h / 60 % 2 - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: m1,\n\t\t\t\tg: m2,\n\t\t\t\tb: 2 * l - m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: m2,\n\t\t\t\tg: m1,\n\t\t\t\tb: 2 * l - m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: 2 * l - m1,\n\t\t\t\tg: m1,\n\t\t\t\tb: m2\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: 2 * l - m1,\n\t\t\t\tg: m2,\n\t\t\t\tb: m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: m2,\n\t\t\t\tg: 2 * l - m1,\n\t\t\t\tb: m1\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: m1,\n\t\t\t\tg: 2 * l - m1,\n\t\t\t\tb: m2\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: res = {\n\t\t\tr: 2 * l - m1,\n\t\t\tg: 2 * l - m1,\n\t\t\tb: 2 * l - m1\n\t\t};\n\t}\n\tres.mode = \"rgb\";\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/convertRgbToHsl.js\nfunction convertRgbToHsl({ r: r$1, g, b, alpha }) {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);\n\tlet res = {\n\t\tmode: \"hsl\",\n\t\ts: M$1 === m ? 0 : (M$1 - m) / (1 - Math.abs(M$1 + m - 1)),\n\t\tl: .5 * (M$1 + m)\n\t};\n\tif (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/util/hue.js\nconst hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase \"deg\": return +val;\n\t\tcase \"rad\": return val / Math.PI * 180;\n\t\tcase \"grad\": return val / 10 * 9;\n\t\tcase \"turn\": return val * 360;\n\t}\n};\nvar hue_default = hueToDeg;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHslLegacy.js\nconst hsl_old = /* @__PURE__ */ new RegExp(`^hsla?\\\\(\\\\s*${hue$1}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst parseHslLegacy = (color) => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: \"hsl\" };\n\tif (match[3] !== void 0) res.h = +match[3];\n\telse if (match[1] !== void 0 && match[2] !== void 0) res.h = hue_default(match[1], match[2]);\n\tif (match[4] !== void 0) res.s = Math.min(Math.max(0, match[4] / 100), 1);\n\tif (match[5] !== void 0) res.l = Math.min(Math.max(0, match[5] / 100), 1);\n\tif (match[6] !== void 0) res.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\telse if (match[7] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[7]));\n\treturn res;\n};\nvar parseHslLegacy_default = parseHslLegacy;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/parseHsl.js\nfunction parseHsl(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hsl\" && parsed[0] !== \"hsla\") return;\n\tconst res = { mode: \"hsl\" };\n\tconst [, h, s, l, alpha] = parsed;\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) return;\n\t\tres.s = s.value / 100;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return;\n\t\tres.l = l.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseHsl_default = parseHsl;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/fixup/hue.js\nconst hue = (hues, fn$4) => {\n\treturn hues.map((hue$2, idx, arr) => {\n\t\tif (hue$2 === void 0) return hue$2;\n\t\tlet normalized = normalizeHue_default(hue$2);\n\t\tif (idx === 0 || hues[idx - 1] === void 0) return normalized;\n\t\treturn fn$4(normalized - normalizeHue_default(arr[idx - 1]));\n\t}).reduce((acc, curr) => {\n\t\tif (!acc.length || curr === void 0 || acc[acc.length - 1] === void 0) {\n\t\t\tacc.push(curr);\n\t\t\treturn acc;\n\t\t}\n\t\tacc.push(curr + acc[acc.length - 1]);\n\t\treturn acc;\n\t}, []);\n};\nconst fixupHueShorter = (arr) => hue(arr, (d) => Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d));\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/difference.js\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === void 0 || smp.h === void 0 || !std.s || !smp.s) return 0;\n\tlet std_h = normalizeHue_default(std.h);\n\tlet smp_h = normalizeHue_default(smp.h);\n\tlet dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === void 0 || smp.h === void 0) return 0;\n\tlet std_h = normalizeHue_default(std.h);\n\tlet smp_h = normalizeHue_default(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) return std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\treturn smp_h - std_h;\n};\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === void 0 || smp.h === void 0 || !std.c || !smp.c) return 0;\n\tlet std_h = normalizeHue_default(std.h);\n\tlet smp_h = normalizeHue_default(smp.h);\n\tlet dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\nconst differenceEuclidean = (mode = \"rgb\", weights = [\n\t1,\n\t1,\n\t1,\n\t0\n]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter_default(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(channels.reduce((sum, k$3, idx) => {\n\t\t\tlet delta = diffs[k$3] ? diffs[k$3](ConvStd, ConvSmp) : ConvStd[k$3] - ConvSmp[k$3];\n\t\t\treturn sum + (weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2);\n\t\t}, 0));\n\t};\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/average.js\nconst averageAngle = (val) => {\n\tlet sum = val.reduce((sum$1, val$1) => {\n\t\tif (val$1 !== void 0) {\n\t\t\tlet rad = val$1 * Math.PI / 180;\n\t\t\tsum$1.sin += Math.sin(rad);\n\t\t\tsum$1.cos += Math.cos(rad);\n\t\t}\n\t\treturn sum$1;\n\t}, {\n\t\tsin: 0,\n\t\tcos: 0\n\t});\n\tlet angle = Math.atan2(sum.sin, sum.cos) * 180 / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsl/definition.js\nconst definition$25 = {\n\tmode: \"hsl\",\n\ttoMode: { rgb: convertHslToRgb },\n\tfromMode: { rgb: convertRgbToHsl },\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tparse: [parseHsl_default, parseHslLegacy_default],\n\tserialize: (c$1) => `hsl(${c$1.h !== void 0 ? c$1.h : \"none\"} ${c$1.s !== void 0 ? c$1.s * 100 + \"%\" : \"none\"} ${c$1.l !== void 0 ? c$1.l * 100 + \"%\" : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$1 = definition$25;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertHsvToRgb.js\nfunction convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue_default(h !== void 0 ? h : 0);\n\tif (s === void 0) s = 0;\n\tif (v === void 0) v = 0;\n\tlet f$2 = Math.abs(h / 60 % 2 - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: v,\n\t\t\t\tg: v * (1 - s * f$2),\n\t\t\t\tb: v * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s * f$2),\n\t\t\t\tg: v,\n\t\t\t\tb: v * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s),\n\t\t\t\tg: v,\n\t\t\t\tb: v * (1 - s * f$2)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s),\n\t\t\t\tg: v * (1 - s * f$2),\n\t\t\t\tb: v\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: v * (1 - s * f$2),\n\t\t\t\tg: v * (1 - s),\n\t\t\t\tb: v\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: v,\n\t\t\t\tg: v * (1 - s),\n\t\t\t\tb: v * (1 - s * f$2)\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: res = {\n\t\t\tr: v * (1 - s),\n\t\t\tg: v * (1 - s),\n\t\t\tb: v * (1 - s)\n\t\t};\n\t}\n\tres.mode = \"rgb\";\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/convertRgbToHsv.js\nfunction convertRgbToHsv({ r: r$1, g, b, alpha }) {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);\n\tlet res = {\n\t\tmode: \"hsv\",\n\t\ts: M$1 === 0 ? 0 : 1 - m / M$1,\n\t\tv: M$1\n\t};\n\tif (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsv/definition.js\nconst definition$24 = {\n\tmode: \"hsv\",\n\ttoMode: { rgb: convertHsvToRgb },\n\tparse: [\"--hsv\"],\n\tserialize: \"--hsv\",\n\tfromMode: { rgb: convertRgbToHsv },\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"v\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$19 = definition$24;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertHwbToRgb.js\nfunction convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === void 0) w = 0;\n\tif (b === void 0) b = 0;\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha\n\t});\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/convertRgbToHwb.js\nfunction convertRgbToHwb(rgba) {\n\tlet hsv$2 = convertRgbToHsv(rgba);\n\tif (hsv$2 === void 0) return void 0;\n\tlet s = hsv$2.s !== void 0 ? hsv$2.s : 0;\n\tlet v = hsv$2.v !== void 0 ? hsv$2.v : 0;\n\tlet res = {\n\t\tmode: \"hwb\",\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv$2.h !== void 0) res.h = hsv$2.h;\n\tif (hsv$2.alpha !== void 0) res.alpha = hsv$2.alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/parseHwb.js\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hwb\") return;\n\tconst res = { mode: \"hwb\" };\n\tconst [, h, w, b, alpha] = parsed;\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) return;\n\t\tres.w = w.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) return;\n\t\tres.b = b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseHwb_default = ParseHwb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hwb/definition.js\nconst definition$23 = {\n\tmode: \"hwb\",\n\ttoMode: { rgb: convertHwbToRgb },\n\tfromMode: { rgb: convertRgbToHwb },\n\tchannels: [\n\t\t\"h\",\n\t\t\"w\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tparse: [parseHwb_default],\n\tserialize: (c$1) => `hwb(${c$1.h !== void 0 ? c$1.h : \"none\"} ${c$1.w !== void 0 ? c$1.w * 100 + \"%\" : \"none\"} ${c$1.b !== void 0 ? c$1.b * 100 + \"%\" : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueNaive },\n\taverage: { h: averageAngle }\n};\nvar definition_default$2 = definition$23;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/constants.js\nconst k = Math.pow(29, 3) / Math.pow(3, 3);\nconst e = Math.pow(6, 3) / Math.pow(29, 3);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/constants.js\nconst D50 = {\n\tX: .3457 / .3585,\n\tY: 1,\n\tZ: .2958 / .3585\n};\nconst D65 = {\n\tX: .3127 / .329,\n\tY: 1,\n\tZ: .3583 / .329\n};\nconst k$2 = Math.pow(29, 3) / Math.pow(3, 3);\nconst e$2 = Math.pow(6, 3) / Math.pow(29, 3);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToXyz50.js\nlet fn$1 = (v) => Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k;\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: fn$1(fx) * D50.X,\n\t\ty: fn$1(fy) * D50.Y,\n\t\tz: fn$1(fz) * D50.Z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLabToXyz50_default = convertLabToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertXyz50ToRgb.js\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = convertLrgbToRgb_default({\n\t\tr: x * 3.1341359569958707 - y * 1.6173863321612538 - .4906619460083532 * z,\n\t\tg: x * -.978795502912089 + y * 1.916254567259524 + .03344273116131949 * z,\n\t\tb: x * .07195537988411677 - y * .2289768264158322 + 1.405386058324125 * z\n\t});\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToRgb_default = convertXyz50ToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertLabToRgb.js\nconst convertLabToRgb = (lab$2) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab$2));\nvar convertLabToRgb_default = convertLabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/convertRgbToXyz50.js\nconst convertRgbToXyz50 = (rgb$4) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: .436065742824811 * r$1 + .3851514688337912 * g + .14307845442264197 * b,\n\t\ty: .22249319175623702 * r$1 + .7168870538238823 * g + .06061979053616537 * b,\n\t\tz: .013923904500943465 * r$1 + .09708128566574634 * g + .7140993584005155 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToXyz50_default = convertRgbToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertXyz50ToLab.js\nconst f$1 = (value) => value > e ? Math.cbrt(value) : (k * value + 16) / 116;\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet f0 = f$1(x / D50.X);\n\tlet f1 = f$1(y / D50.Y);\n\tlet f2 = f$1(z / D50.Z);\n\tlet res = {\n\t\tmode: \"lab\",\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToLab_default = convertXyz50ToLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/convertRgbToLab.js\nconst convertRgbToLab = (rgb$4) => {\n\tlet res = convertXyz50ToLab_default(convertRgbToXyz50_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToLab_default = convertRgbToLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/parseLab.js\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lab\") return;\n\tconst res = { mode: \"lab\" };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return;\n\tif (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.value), 100);\n\tif (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * 125 / 100;\n\tif (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * 125 / 100;\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseLab_default = parseLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab/definition.js\nconst definition$22 = {\n\tmode: \"lab\",\n\ttoMode: {\n\t\txyz50: convertLabToXyz50_default,\n\t\trgb: convertLabToRgb_default\n\t},\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab_default,\n\t\trgb: convertRgbToLab_default\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"a\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\tparse: [parseLab_default],\n\tserialize: (c$1) => `lab(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.a !== void 0 ? c$1.a : \"none\"} ${c$1.b !== void 0 ? c$1.b : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$3 = definition$22;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/constants.js\nconst k$1 = Math.pow(29, 3) / Math.pow(3, 3);\nconst e$1 = Math.pow(6, 3) / Math.pow(29, 3);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToXyz65.js\nlet fn = (v) => Math.pow(v, 3) > e$1 ? Math.pow(v, 3) : (116 * v - 16) / k$1;\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLab65ToXyz65_default = convertLab65ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToRgb.js\nconst convertLab65ToRgb = (lab$2) => convertXyz65ToRgb_default(convertLab65ToXyz65_default(lab$2));\nvar convertLab65ToRgb_default = convertLab65ToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertXyz65ToLab65.js\nconst f = (value) => value > e$1 ? Math.cbrt(value) : (k$1 * value + 16) / 116;\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\tlet res = {\n\t\tmode: \"lab65\",\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToLab65_default = convertXyz65ToLab65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/convertRgbToLab65.js\nconst convertRgbToLab65 = (rgb$4) => {\n\tlet res = convertXyz65ToLab65_default(convertRgbToXyz65_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToLab65_default = convertRgbToLab65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lab65/definition.js\nconst definition$21 = {\n\t...definition_default$3,\n\tmode: \"lab65\",\n\tparse: [\"--lab-d65\"],\n\tserialize: \"--lab-d65\",\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65_default,\n\t\trgb: convertLab65ToRgb_default\n\t},\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65_default,\n\t\trgb: convertRgbToLab65_default\n\t},\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\nvar definition_default$4 = definition$21;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLabToLch.js\nconst convertLabToLch = ({ l, a, b, alpha }, mode = \"lch\") => {\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\tc: c$1\n\t};\n\tif (c$1) res.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLabToLch_default = convertLabToLch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/convertLchToLab.js\nconst convertLchToLab = ({ l, c: c$1, h, alpha }, mode = \"lab\") => {\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,\n\t\tb: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLchToLab_default = convertLchToLab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/parseLch.js\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lch\") return;\n\tconst res = { mode: \"lch\" };\n\tconst [, l, c$1, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return;\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * 150 / 100);\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseLch_default = parseLch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch/definition.js\nconst definition$20 = {\n\tmode: \"lch\",\n\ttoMode: {\n\t\tlab: convertLchToLab_default,\n\t\trgb: (c$1) => convertLabToRgb_default(convertLchToLab_default(c$1))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertLabToLch_default(convertRgbToLab_default(c$1)),\n\t\tlab: convertLabToLch_default\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\tparse: [parseLch_default],\n\tserialize: (c$1) => `lch(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.c !== void 0 ? c$1.c : \"none\"} ${c$1.h !== void 0 ? c$1.h : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$5 = definition$20;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lch65/definition.js\nconst definition$19 = {\n\t...definition_default$5,\n\tmode: \"lch65\",\n\tparse: [\"--lch-d65\"],\n\tserialize: \"--lch-d65\",\n\ttoMode: {\n\t\tlab65: (c$1) => convertLchToLab_default(c$1, \"lab65\"),\n\t\trgb: (c$1) => convertLab65ToRgb_default(convertLchToLab_default(c$1, \"lab65\"))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertLabToLch_default(convertRgbToLab65_default(c$1), \"lch65\"),\n\t\tlab65: (c$1) => convertLabToLch_default(c$1, \"lch65\")\n\t},\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\nvar definition_default$23 = definition$19;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lrgb/definition.js\nconst definition$18 = {\n\t...definition_default$12,\n\tmode: \"lrgb\",\n\ttoMode: { rgb: convertLrgbToRgb_default },\n\tfromMode: { rgb: convertRgbToLrgb_default },\n\tparse: [\"srgb-linear\"],\n\tserialize: \"srgb-linear\"\n};\nvar definition_default$6 = definition$18;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToLrgb.js\nconst convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet L = Math.pow(l + .3963377773761749 * a + .2158037573099136 * b, 3);\n\tlet M$1 = Math.pow(l - .1055613458156586 * a - .0638541728258133 * b, 3);\n\tlet S = Math.pow(l - .0894841775298119 * a - 1.2914855480194092 * b, 3);\n\tlet res = {\n\t\tmode: \"lrgb\",\n\t\tr: 4.076741636075957 * L - 3.3077115392580616 * M$1 + .2309699031821044 * S,\n\t\tg: -1.2684379732850317 * L + 2.6097573492876887 * M$1 - .3413193760026573 * S,\n\t\tb: -.0041960761386756 * L - .7034186179359362 * M$1 + 1.7076146940746117 * S\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertOklabToLrgb_default = convertOklabToLrgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertLrgbToOklab.js\nconst convertLrgbToOklab = ({ r: r$1, g, b, alpha }) => {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet L = Math.cbrt(.412221469470763 * r$1 + .5363325372617348 * g + .0514459932675022 * b);\n\tlet M$1 = Math.cbrt(.2119034958178252 * r$1 + .6806995506452344 * g + .1073969535369406 * b);\n\tlet S = Math.cbrt(.0883024591900564 * r$1 + .2817188391361215 * g + .6299787016738222 * b);\n\tlet res = {\n\t\tmode: \"oklab\",\n\t\tl: .210454268309314 * L + .7936177747023054 * M$1 - .0040720430116193 * S,\n\t\ta: 1.9779985324311684 * L - 2.42859224204858 * M$1 + .450593709617411 * S,\n\t\tb: .0259040424655478 * L + .7827717124575296 * M$1 - .8086757549230774 * S\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLrgbToOklab_default = convertLrgbToOklab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertRgbToOklab.js\nconst convertRgbToOklab = (rgb$4) => {\n\tlet res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToOklab_default = convertRgbToOklab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToRgb.js\nconst convertOklabToRgb = (c$1) => convertLrgbToRgb_default(convertOklabToLrgb_default(c$1));\nvar convertOklabToRgb_default = convertOklabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/parseOklab.js\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklab\") return;\n\tconst res = { mode: \"oklab\" };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return;\n\tif (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);\n\tif (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * .4 / 100;\n\tif (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * .4 / 100;\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseOklab_default = parseOklab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklab/definition.js\nconst definition$17 = {\n\t...definition_default$3,\n\tmode: \"oklab\",\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb_default,\n\t\trgb: convertOklabToRgb_default\n\t},\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab_default,\n\t\trgb: convertRgbToOklab_default\n\t},\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-.4, .4],\n\t\tb: [-.4, .4]\n\t},\n\tparse: [parseOklab_default],\n\tserialize: (c$1) => `oklab(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.a !== void 0 ? c$1.a : \"none\"} ${c$1.b !== void 0 ? c$1.b : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`\n};\nvar definition_default$7 = definition$17;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/parseOklch.js\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklch\") return;\n\tconst res = { mode: \"oklch\" };\n\tconst [, l, c$1, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return;\n\t\tres.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);\n\t}\n\tif (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * .4 / 100);\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) return;\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));\n\treturn res;\n}\nvar parseOklch_default = parseOklch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/oklch/definition.js\nconst definition$16 = {\n\t...definition_default$5,\n\tmode: \"oklch\",\n\ttoMode: {\n\t\toklab: (c$1) => convertLchToLab_default(c$1, \"oklab\"),\n\t\trgb: (c$1) => convertOklabToRgb_default(convertLchToLab_default(c$1, \"oklab\"))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertLabToLch_default(convertRgbToOklab_default(c$1), \"oklch\"),\n\t\toklab: (c$1) => convertLabToLch_default(c$1, \"oklch\")\n\t},\n\tparse: [parseOklch_default],\n\tserialize: (c$1) => `oklch(${c$1.l !== void 0 ? c$1.l : \"none\"} ${c$1.c !== void 0 ? c$1.c : \"none\"} ${c$1.h !== void 0 ? c$1.h : \"none\"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : \"\"})`,\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, .4],\n\t\th: [0, 360]\n\t}\n};\nvar definition_default$8 = definition$16;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertP3ToXyz65.js\nconst convertP3ToXyz65 = (rgb$4) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .486570948648216 * r$1 + .265667693169093 * g + .1982172852343625 * b,\n\t\ty: .2289745640697487 * r$1 + .6917385218365062 * g + .079286914093745 * b,\n\t\tz: 0 * r$1 + .0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertP3ToXyz65_default = convertP3ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/convertXyz65ToP3.js\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = convertLrgbToRgb_default({\n\t\tr: x * 2.4934969119414263 - y * .9313836179191242 - .402710784450717 * z,\n\t\tg: x * -.8294889695615749 + y * 1.7626640603183465 + .0236246858419436 * z,\n\t\tb: x * .0358458302437845 - y * .0761723892680418 + .9568845240076871 * z\n\t}, \"p3\");\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToP3_default = convertXyz65ToP3;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/p3/definition.js\nconst definition$15 = {\n\t...definition_default$12,\n\tmode: \"p3\",\n\tparse: [\"display-p3\"],\n\tserialize: \"display-p3\",\n\tfromMode: {\n\t\trgb: (color) => convertXyz65ToP3_default(convertRgbToXyz65_default(color)),\n\t\txyz65: convertXyz65ToP3_default\n\t},\n\ttoMode: {\n\t\trgb: (color) => convertXyz65ToRgb_default(convertP3ToXyz65_default(color)),\n\t\txyz65: convertP3ToXyz65_default\n\t}\n};\nvar definition_default$9 = definition$15;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js\nconst gamma$1 = (v) => {\n\tlet abs$1 = Math.abs(v);\n\tif (abs$1 >= 1 / 512) return Math.sign(v) * Math.pow(abs$1, 1 / 1.8);\n\treturn 16 * v;\n};\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"prophoto\",\n\t\tr: gamma$1(x * 1.3457868816471585 - y * .2555720873797946 - .0511018649755453 * z),\n\t\tg: gamma$1(x * -.5446307051249019 + y * 1.5082477428451466 + .0205274474364214 * z),\n\t\tb: gamma$1(x * 0 + y * 0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToProphoto_default = convertXyz50ToProphoto;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/convertProphotoToXyz50.js\nconst linearize$1 = (v = 0) => {\n\tlet abs$1 = Math.abs(v);\n\tif (abs$1 >= 16 / 512) return Math.sign(v) * Math.pow(abs$1, 1.8);\n\treturn v / 16;\n};\nconst convertProphotoToXyz50 = (prophoto$2) => {\n\tlet r$1 = linearize$1(prophoto$2.r);\n\tlet g = linearize$1(prophoto$2.g);\n\tlet b = linearize$1(prophoto$2.b);\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: .7977666449006423 * r$1 + .1351812974005331 * g + .0313477341283922 * b,\n\t\ty: .2880748288194013 * r$1 + .7118352342418731 * g + 899369387256e-16 * b,\n\t\tz: 0 * r$1 + 0 * g + .8251046025104602 * b\n\t};\n\tif (prophoto$2.alpha !== void 0) res.alpha = prophoto$2.alpha;\n\treturn res;\n};\nvar convertProphotoToXyz50_default = convertProphotoToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/prophoto/definition.js\nconst definition$14 = {\n\t...definition_default$12,\n\tmode: \"prophoto\",\n\tparse: [\"prophoto-rgb\"],\n\tserialize: \"prophoto-rgb\",\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto_default,\n\t\trgb: (color) => convertXyz50ToProphoto_default(convertRgbToXyz50_default(color))\n\t},\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50_default,\n\t\trgb: (color) => convertXyz50ToRgb_default(convertProphotoToXyz50_default(color))\n\t}\n};\nvar definition_default$10 = definition$14;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js\nconst α$1 = 1.09929682680944;\nconst β$1 = .018053968510807;\nconst gamma = (v) => {\n\tconst abs$1 = Math.abs(v);\n\tif (abs$1 > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs$1, .45) - (α$1 - 1));\n\treturn 4.5 * v;\n};\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"rec2020\",\n\t\tr: gamma(x * 1.7166511879712683 - y * .3556707837763925 - .2533662813736599 * z),\n\t\tg: gamma(x * -.6666843518324893 + y * 1.6164812366349395 + .0157685458139111 * z),\n\t\tb: gamma(x * .0176398574453108 - y * .0427706132578085 + .9421031212354739 * z)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToRec2020_default = convertXyz65ToRec2020;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js\nconst α = 1.09929682680944;\nconst β = .018053968510807;\nconst linearize = (v = 0) => {\n\tlet abs$1 = Math.abs(v);\n\tif (abs$1 < β * 4.5) return v / 4.5;\n\treturn (Math.sign(v) || 1) * Math.pow((abs$1 + α - 1) / α, 1 / .45);\n};\nconst convertRec2020ToXyz65 = (rec2020$2) => {\n\tlet r$1 = linearize(rec2020$2.r);\n\tlet g = linearize(rec2020$2.g);\n\tlet b = linearize(rec2020$2.b);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .6369580483012911 * r$1 + .1446169035862083 * g + .1688809751641721 * b,\n\t\ty: .262700212011267 * r$1 + .6779980715188708 * g + .059301716469862 * b,\n\t\tz: 0 * r$1 + .0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020$2.alpha !== void 0) res.alpha = rec2020$2.alpha;\n\treturn res;\n};\nvar convertRec2020ToXyz65_default = convertRec2020ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/rec2020/definition.js\nconst definition$13 = {\n\t...definition_default$12,\n\tmode: \"rec2020\",\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020_default,\n\t\trgb: (color) => convertXyz65ToRec2020_default(convertRgbToXyz65_default(color))\n\t},\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65_default,\n\t\trgb: (color) => convertXyz65ToRgb_default(convertRec2020ToXyz65_default(color))\n\t},\n\tparse: [\"rec2020\"],\n\tserialize: \"rec2020\"\n};\nvar definition_default$11 = definition$13;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz50/definition.js\nconst definition$12 = {\n\tmode: \"xyz50\",\n\tparse: [\"xyz-d50\"],\n\tserialize: \"xyz-d50\",\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb_default,\n\t\tlab: convertXyz50ToLab_default\n\t},\n\tfromMode: {\n\t\trgb: convertRgbToXyz50_default,\n\t\tlab: convertLabToXyz50_default\n\t},\n\tchannels: [\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"z\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tx: [0, .964],\n\t\ty: [0, .999],\n\t\tz: [0, .825]\n\t},\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$13 = definition$12;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js\nconst convertXyz65ToXyz50 = (xyz65$2) => {\n\tlet { x, y, z, alpha } = xyz65$2;\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: 1.0479298208405488 * x + .0229467933410191 * y - .0501922295431356 * z,\n\t\ty: .0296278156881593 * x + .990434484573249 * y - .0170738250293851 * z,\n\t\tz: -.0092430581525912 * x + .0150551448965779 * y + .7518742899580008 * z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToXyz50_default = convertXyz65ToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js\nconst convertXyz50ToXyz65 = (xyz50$2) => {\n\tlet { x, y, z, alpha } = xyz50$2;\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: .9554734527042182 * x - .0230985368742614 * y + .0632593086610217 * z,\n\t\ty: -.0283697069632081 * x + 1.0099954580058226 * y + .021041398966943 * z,\n\t\tz: .0123140016883199 * x - .0205076964334779 * y + 1.3303659366080753 * z\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToXyz65_default = convertXyz50ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyz65/definition.js\nconst definition$11 = {\n\tmode: \"xyz65\",\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb_default,\n\t\txyz50: convertXyz65ToXyz50_default\n\t},\n\tfromMode: {\n\t\trgb: convertRgbToXyz65_default,\n\t\txyz50: convertXyz50ToXyz65_default\n\t},\n\tranges: {\n\t\tx: [0, .95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\tchannels: [\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"z\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"xyz\", \"xyz-d65\"],\n\tserialize: \"xyz-d65\",\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$14 = definition$11;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/bootstrap/css.js\nconst a98$1 = useMode(definition_default);\nconst hsl$2 = useMode(definition_default$1);\nconst hsv$1 = useMode(definition_default$19);\nconst hwb$1 = useMode(definition_default$2);\nconst lab$1 = useMode(definition_default$3);\nconst lab65$1 = useMode(definition_default$4);\nconst lch$1 = useMode(definition_default$5);\nconst lch65$1 = useMode(definition_default$23);\nconst lrgb$1 = useMode(definition_default$6);\nconst oklab$1 = useMode(definition_default$7);\nconst oklch$1 = useMode(definition_default$8);\nconst p3$1 = useMode(definition_default$9);\nconst prophoto$1 = useMode(definition_default$10);\nconst rec2020$1 = useMode(definition_default$11);\nconst rgb$3 = useMode(definition_default$12);\nconst xyz50$1 = useMode(definition_default$13);\nconst xyz65$1 = useMode(definition_default$14);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/constants.js\nconst M = [\n\t-.14861,\n\t1.78277,\n\t-.29227,\n\t-.90649,\n\t1.97294,\n\t0\n];\nconst degToRad = Math.PI / 180;\nconst radToDeg = 180 / Math.PI;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertRgbToCubehelix.js\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\nconst convertRgbToCubehelix = ({ r: r$1, g, b, alpha }) => {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet l = (BCAD * b + r$1 * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\tlet res = {\n\t\tmode: \"cubehelix\",\n\t\tl,\n\t\ts: l === 0 || l === 1 ? void 0 : Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToCubehelix_default = convertRgbToCubehelix;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/convertCubehelixToRgb.js\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: \"rgb\" };\n\th = (h === void 0 ? 0 : h + 120) * degToRad;\n\tif (l === void 0) l = 0;\n\tlet amp = s === void 0 ? 0 : s * l * (1 - l);\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertCubehelixToRgb_default = convertCubehelixToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/cubehelix/definition.js\nconst definition$10 = {\n\tmode: \"cubehelix\",\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--cubehelix\"],\n\tserialize: \"--cubehelix\",\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\tfromMode: { rgb: convertRgbToCubehelix_default },\n\ttoMode: { rgb: convertCubehelixToRgb_default },\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$15 = definition$10;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/constants.js\nconst kE = 1;\nconst kCH = 1;\nconst θ = 26 / 180 * Math.PI;\nconst cosθ = Math.cos(θ);\nconst sinθ = Math.sin(θ);\nconst factor = 100 / Math.log(139 / 100);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertDlchToLab65.js\nconst convertDlchToLab65 = ({ l, c: c$1, h, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (c$1 === void 0) c$1 = 0;\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode: \"lab65\",\n\t\tl: (Math.exp(l * kE / factor) - 1) / .0039\n\t};\n\tlet G = (Math.exp(.0435 * c$1 * kCH * kE) - 1) / .075;\n\tlet e$3 = G * Math.cos(h / 180 * Math.PI - θ);\n\tlet f$2 = G * Math.sin(h / 180 * Math.PI - θ);\n\tres.a = e$3 * cosθ - f$2 / .83 * sinθ;\n\tres.b = e$3 * sinθ + f$2 / .83 * cosθ;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertDlchToLab65_default = convertDlchToLab65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/convertLab65ToDlch.js\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet e$3 = a * cosθ + b * sinθ;\n\tlet f$2 = .83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e$3 * e$3 + f$2 * f$2);\n\tlet res = {\n\t\tmode: \"dlch\",\n\t\tl: factor / kE * Math.log(1 + .0039 * l),\n\t\tc: Math.log(1 + .075 * G) / (.0435 * kCH * kE)\n\t};\n\tif (res.c) res.h = normalizeHue_default((Math.atan2(f$2, e$3) + θ) / Math.PI * 180);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLab65ToDlch_default = convertLab65ToDlch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlab/definition.js\nconst convertDlabToLab65 = (c$1) => convertDlchToLab65_default(convertLabToLch_default(c$1, \"dlch\"));\nconst convertLab65ToDlab = (c$1) => convertLchToLab_default(convertLab65ToDlch_default(c$1), \"dlab\");\nconst definition$9 = {\n\tmode: \"dlab\",\n\tparse: [\"--din99o-lab\"],\n\tserialize: \"--din99o-lab\",\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: (c$1) => convertLab65ToRgb_default(convertDlabToLab65(c$1))\n\t},\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: (c$1) => convertLab65ToDlab(convertRgbToLab65_default(c$1))\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"a\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$16 = definition$9;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/dlch/definition.js\nconst definition$8 = {\n\tmode: \"dlch\",\n\tparse: [\"--din99o-lch\"],\n\tserialize: \"--din99o-lch\",\n\ttoMode: {\n\t\tlab65: convertDlchToLab65_default,\n\t\tdlab: (c$1) => convertLchToLab_default(c$1, \"dlab\"),\n\t\trgb: (c$1) => convertLab65ToRgb_default(convertDlchToLab65_default(c$1))\n\t},\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch_default,\n\t\tdlab: (c$1) => convertLabToLch_default(c$1, \"dlch\"),\n\t\trgb: (c$1) => convertLab65ToDlch_default(convertRgbToLab65_default(c$1))\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$17 = definition$8;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertHsiToRgb.js\nfunction convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue_default(h !== void 0 ? h : 0);\n\tif (s === void 0) s = 0;\n\tif (i === void 0) i = 0;\n\tlet f$2 = Math.abs(h / 60 % 2 - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f$2) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault: res = {\n\t\t\tr: i * (1 - s),\n\t\t\tg: i * (1 - s),\n\t\t\tb: i * (1 - s)\n\t\t};\n\t}\n\tres.mode = \"rgb\";\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/convertRgbToHsi.js\nfunction convertRgbToHsi({ r: r$1, g, b, alpha }) {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tlet M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);\n\tlet res = {\n\t\tmode: \"hsi\",\n\t\ts: r$1 + g + b === 0 ? 0 : 1 - 3 * m / (r$1 + g + b),\n\t\ti: (r$1 + g + b) / 3\n\t};\n\tif (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hsi/definition.js\nconst definition$7 = {\n\tmode: \"hsi\",\n\ttoMode: { rgb: convertHsiToRgb },\n\tparse: [\"--hsi\"],\n\tserialize: \"--hsi\",\n\tfromMode: { rgb: convertRgbToHsi },\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"i\",\n\t\t\"alpha\"\n\t],\n\tranges: { h: [0, 360] },\n\tgamut: \"rgb\",\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueSaturation },\n\taverage: { h: averageAngle }\n};\nvar definition_default$18 = definition$7;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/constants.js\nconst YW = 203;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/hdr/transfer.js\nconst M1 = .1593017578125;\nconst M2 = 78.84375;\nconst C1 = .8359375;\nconst C2 = 18.8515625;\nconst C3 = 18.6875;\nfunction transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c$1 = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c$1 - C1) / (C2 - C3 * c$1), 1 / M1);\n}\nfunction transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c$1 = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c$1) / (1 + C3 * c$1), M2);\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertItpToXyz65.js\nconst toRel = (c$1) => Math.max(c$1 / YW, 0);\nconst convertItpToXyz65 = ({ i, t, p: p$2, alpha }) => {\n\tif (i === void 0) i = 0;\n\tif (t === void 0) t = 0;\n\tif (p$2 === void 0) p$2 = 0;\n\tconst l = transferPqDecode(i + .008609037037932761 * t + .11102962500302593 * p$2);\n\tconst m = transferPqDecode(i - .00860903703793275 * t - .11102962500302599 * p$2);\n\tconst s = transferPqDecode(i + .5600313357106791 * t - .32062717498731885 * p$2);\n\tconst res = {\n\t\tmode: \"xyz65\",\n\t\tx: toRel(2.070152218389422 * l - 1.3263473389671556 * m + .2066510476294051 * s),\n\t\ty: toRel(.3647385209748074 * l + .680566024947227 * m - .0453045459220346 * s),\n\t\tz: toRel(-.049747207535812 * l - .0492609666966138 * m + 1.1880659249923042 * s)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertItpToXyz65_default = convertItpToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/convertXyz65ToItp.js\nconst toAbs = (c$1 = 0) => Math.max(c$1 * YW, 0);\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(.3592832590121217 * absX + .6976051147779502 * absY - .0358915932320289 * absZ);\n\tconst m = transferPqEncode(-.1920808463704995 * absX + 1.1004767970374323 * absY + .0753748658519118 * absZ);\n\tconst s = transferPqEncode(.0070797844607477 * absX + .0748396662186366 * absY + .8433265453898765 * absZ);\n\tconst res = {\n\t\tmode: \"itp\",\n\t\ti: .5 * l + .5 * m,\n\t\tt: 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s,\n\t\tp: 4.378173828125 * l - 4.24560546875 * m - .132568359375 * s\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToItp_default = convertXyz65ToItp;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/itp/definition.js\nconst definition$6 = {\n\tmode: \"itp\",\n\tchannels: [\n\t\t\"i\",\n\t\t\"t\",\n\t\t\"p\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--ictcp\"],\n\tserialize: \"--ictcp\",\n\ttoMode: {\n\t\txyz65: convertItpToXyz65_default,\n\t\trgb: (color) => convertXyz65ToRgb_default(convertItpToXyz65_default(color))\n\t},\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp_default,\n\t\trgb: (color) => convertXyz65ToItp_default(convertRgbToXyz65_default(color))\n\t},\n\tranges: {\n\t\ti: [0, .581],\n\t\tt: [-.369, .272],\n\t\tp: [-.164, .331]\n\t},\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$20 = definition$6;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertXyz65ToJab.js\nconst p$1 = 134.03437499999998;\nconst d0$1 = 16295499532821565e-27;\nconst jabPqEncode = (v) => {\n\tif (v < 0) return 0;\n\tlet vn$2 = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * vn$2) / (1 + C3 * vn$2), p$1);\n};\nconst abs = (v = 0) => Math.max(v * 203, 0);\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\tlet xp = 1.15 * x - .15 * z;\n\tlet yp = .66 * y + .34 * x;\n\tlet l = jabPqEncode(.41478972 * xp + .579999 * yp + .014648 * z);\n\tlet m = jabPqEncode(-.20151 * xp + 1.120649 * yp + .0531008 * z);\n\tlet s = jabPqEncode(-.0166008 * xp + .2648 * yp + .6684799 * z);\n\tlet i = (l + m) / 2;\n\tlet res = {\n\t\tmode: \"jab\",\n\t\tj: .44 * i / (1 - .56 * i) - d0$1,\n\t\ta: 3.524 * l - 4.066708 * m + .542708 * s,\n\t\tb: .199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz65ToJab_default = convertXyz65ToJab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToXyz65.js\nconst p = 134.03437499999998;\nconst d0 = 16295499532821565e-27;\nconst jabPqDecode = (v) => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 1e4 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / M1);\n};\nconst rel = (v) => v / 203;\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === void 0) j = 0;\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet i = (j + d0) / (.44 + .56 * (j + d0));\n\tlet l = jabPqDecode(i + .13860504 * a + .058047316 * b);\n\tlet m = jabPqDecode(i - .13860504 * a - .058047316 * b);\n\tlet s = jabPqDecode(i - .096019242 * a - .8118919 * b);\n\tlet res = {\n\t\tmode: \"xyz65\",\n\t\tx: rel(1.661373024652174 * l - .914523081304348 * m + .23136208173913045 * s),\n\t\ty: rel(-.3250758611844533 * l + 1.571847026732543 * m - .21825383453227928 * s),\n\t\tz: rel(-.090982811 * l - .31272829 * m + 1.5227666 * s)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertJabToXyz65_default = convertJabToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertRgbToJab.js\nconst convertRgbToJab = (rgb$4) => {\n\tlet res = convertXyz65ToJab_default(convertRgbToXyz65_default(rgb$4));\n\tif (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;\n\treturn res;\n};\nvar convertRgbToJab_default = convertRgbToJab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/convertJabToRgb.js\nconst convertJabToRgb = (color) => convertXyz65ToRgb_default(convertJabToXyz65_default(color));\nvar convertJabToRgb_default = convertJabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jab/definition.js\nconst definition$5 = {\n\tmode: \"jab\",\n\tchannels: [\n\t\t\"j\",\n\t\t\"a\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--jzazbz\"],\n\tserialize: \"--jzazbz\",\n\tfromMode: {\n\t\trgb: convertRgbToJab_default,\n\t\txyz65: convertXyz65ToJab_default\n\t},\n\ttoMode: {\n\t\trgb: convertJabToRgb_default,\n\t\txyz65: convertJabToXyz65_default\n\t},\n\tranges: {\n\t\tj: [0, .222],\n\t\ta: [-.109, .129],\n\t\tb: [-.185, .134]\n\t},\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$21 = definition$5;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJabToJch.js\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === void 0) a = 0;\n\tif (b === void 0) b = 0;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: \"jch\",\n\t\tj,\n\t\tc: c$1\n\t};\n\tif (c$1) res.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertJabToJch_default = convertJabToJch;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/convertJchToJab.js\nconst convertJchToJab = ({ j, c: c$1, h, alpha }) => {\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode: \"jab\",\n\t\tj,\n\t\ta: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,\n\t\tb: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertJchToJab_default = convertJchToJab;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/jch/definition.js\nconst definition$4 = {\n\tmode: \"jch\",\n\tparse: [\"--jzczhz\"],\n\tserialize: \"--jzczhz\",\n\ttoMode: {\n\t\tjab: convertJchToJab_default,\n\t\trgb: (c$1) => convertJabToRgb_default(convertJchToJab_default(c$1))\n\t},\n\tfromMode: {\n\t\trgb: (c$1) => convertJabToJch_default(convertRgbToJab_default(c$1)),\n\t\tjab: convertJabToJch_default\n\t},\n\tchannels: [\n\t\t\"j\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tranges: {\n\t\tj: [0, .221],\n\t\tc: [0, .19],\n\t\th: [0, 360]\n\t},\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$22 = definition$4;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLuvToLchuv.js\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === void 0) u = 0;\n\tif (v === void 0) v = 0;\n\tlet c$1 = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: \"lchuv\",\n\t\tl,\n\t\tc: c$1\n\t};\n\tif (c$1) res.h = normalizeHue_default(Math.atan2(v, u) * 180 / Math.PI);\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLuvToLchuv_default = convertLuvToLchuv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/convertLchuvToLuv.js\nconst convertLchuvToLuv = ({ l, c: c$1, h, alpha }) => {\n\tif (h === void 0) h = 0;\n\tlet res = {\n\t\tmode: \"luv\",\n\t\tl,\n\t\tu: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,\n\t\tv: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLchuvToLuv_default = convertLchuvToLuv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertXyz50ToLuv.js\nconst u_fn$1 = (x, y, z) => 4 * x / (x + 15 * y + 3 * z);\nconst v_fn$1 = (x, y, z) => 9 * y / (x + 15 * y + 3 * z);\nconst un$1 = u_fn$1(D50.X, D50.Y, D50.Z);\nconst vn$1 = v_fn$1(D50.X, D50.Y, D50.Z);\nconst l_fn = (value) => value <= e ? k * value : 116 * Math.cbrt(value) - 16;\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (z === void 0) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn$1(x, y, z);\n\tlet v = v_fn$1(x, y, z);\n\tif (!isFinite(u) || !isFinite(v)) l = u = v = 0;\n\telse {\n\t\tu = 13 * l * (u - un$1);\n\t\tv = 13 * l * (v - vn$1);\n\t}\n\tlet res = {\n\t\tmode: \"luv\",\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXyz50ToLuv_default = convertXyz50ToLuv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/convertLuvToXyz50.js\nconst u_fn = (x, y, z) => 4 * x / (x + 15 * y + 3 * z);\nconst v_fn = (x, y, z) => 9 * y / (x + 15 * y + 3 * z);\nconst un = u_fn(D50.X, D50.Y, D50.Z);\nconst vn = v_fn(D50.X, D50.Y, D50.Z);\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === void 0) l = 0;\n\tif (l === 0) return {\n\t\tmode: \"xyz50\",\n\t\tx: 0,\n\t\ty: 0,\n\t\tz: 0\n\t};\n\tif (u === void 0) u = 0;\n\tif (v === void 0) v = 0;\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet res = {\n\t\tmode: \"xyz50\",\n\t\tx: y * (9 * up) / (4 * vp),\n\t\ty,\n\t\tz: y * (12 - 3 * up - 20 * vp) / (4 * vp)\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertLuvToXyz50_default = convertLuvToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/lchuv/definition.js\nconst convertRgbToLchuv = (rgb$4) => convertLuvToLchuv_default(convertXyz50ToLuv_default(convertRgbToXyz50_default(rgb$4)));\nconst convertLchuvToRgb = (lchuv$1) => convertXyz50ToRgb_default(convertLuvToXyz50_default(convertLchuvToLuv_default(lchuv$1)));\nconst definition$3 = {\n\tmode: \"lchuv\",\n\ttoMode: {\n\t\tluv: convertLchuvToLuv_default,\n\t\trgb: convertLchuvToRgb\n\t},\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv_default\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"c\",\n\t\t\"h\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--lchuv\"],\n\tserialize: \"--lchuv\",\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\tdifference: { h: differenceHueChroma },\n\taverage: { h: averageAngle }\n};\nvar definition_default$24 = definition$3;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/luv/definition.js\nconst definition$2 = {\n\tmode: \"luv\",\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50_default,\n\t\trgb: (luv$1) => convertXyz50ToRgb_default(convertLuvToXyz50_default(luv$1))\n\t},\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv_default,\n\t\trgb: (rgb$4) => convertXyz50ToLuv_default(convertRgbToXyz50_default(rgb$4))\n\t},\n\tchannels: [\n\t\t\"l\",\n\t\t\"u\",\n\t\t\"v\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--luv\"],\n\tserialize: \"--luv\",\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$25 = definition$2;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/helpers.js\nfunction toe(x) {\n\tconst k_1 = .206;\n\tconst k_2 = .03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn .5 * (k_3 * x - k_1 + Math.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x));\n}\nfunction toe_inv(x) {\n\tconst k_1 = .206;\n\tconst k_2 = .03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\nfunction compute_max_saturation(a, b) {\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\tif (-1.88170328 * a - .80936493 * b > 1) {\n\t\tk0 = 1.19086277;\n\t\tk1 = 1.76576728;\n\t\tk2 = .59662641;\n\t\tk3 = .75515197;\n\t\tk4 = .56771245;\n\t\twl = 4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = .2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\tk0 = .73956515;\n\t\tk1 = -.45954404;\n\t\tk2 = .08285427;\n\t\tk3 = .1254107;\n\t\tk4 = .14503204;\n\t\twl = -1.2684380046;\n\t\twm = 2.6097574011;\n\t\tws = -.3413193965;\n\t} else {\n\t\tk0 = 1.35733652;\n\t\tk1 = -.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -.50559606;\n\t\tk4 = .00692167;\n\t\twl = -.0041960863;\n\t\twm = -.7034186147;\n\t\tws = 1.707614701;\n\t}\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\tlet k_l = .3963377774 * a + .2158037573 * b;\n\tlet k_m = -.1055613458 * a - .0638541728 * b;\n\tlet k_s = -.0894841775 * a - 1.291485548 * b;\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\t\tlet f$2 = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\t\tS = S - f$2 * f1 / (f1 * f1 - .5 * f$2 * f2);\n\t}\n\treturn S;\n}\nfunction find_cusp(a, b) {\n\tlet S_cusp = compute_max_saturation(a, b);\n\tlet rgb$4 = convertOklabToLrgb_default({\n\t\tl: 1,\n\t\ta: S_cusp * a,\n\t\tb: S_cusp * b\n\t});\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb$4.r, rgb$4.g, rgb$4.b));\n\treturn [L_cusp, L_cusp * S_cusp];\n}\nfunction find_gamut_intersection(a, b, L1, C1$1, L0, cusp = null) {\n\tif (!cusp) cusp = find_cusp(a, b);\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1$1 <= 0) t = cusp[1] * L0 / (C1$1 * cusp[0] + cusp[1] * (L0 - L1));\n\telse {\n\t\tt = cusp[1] * (L0 - 1) / (C1$1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1$1;\n\t\t\tlet k_l = .3963377774 * a + .2158037573 * b;\n\t\t\tlet k_m = -.1055613458 * a - .0638541728 * b;\n\t\t\tlet k_s = -.0894841775 * a - 1.291485548 * b;\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1$1;\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\t\t\t\tlet r$1 = 4.0767416621 * l - 3.3077115913 * m + .2309699292 * s - 1;\n\t\t\t\tlet r1 = 4.0767416621 * ldt - 3.3077115913 * mdt + .2309699292 * sdt;\n\t\t\t\tlet r2 = 4.0767416621 * ldt2 - 3.3077115913 * mdt2 + .2309699292 * sdt2;\n\t\t\t\tlet u_r = r1 / (r1 * r1 - .5 * r$1 * r2);\n\t\t\t\tlet t_r = -r$1 * u_r;\n\t\t\t\tlet g = -1.2684380046 * l + 2.6097574011 * m - .3413193965 * s - 1;\n\t\t\t\tlet g1 = -1.2684380046 * ldt + 2.6097574011 * mdt - .3413193965 * sdt;\n\t\t\t\tlet g2 = -1.2684380046 * ldt2 + 2.6097574011 * mdt2 - .3413193965 * sdt2;\n\t\t\t\tlet u_g = g1 / (g1 * g1 - .5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\t\t\t\tlet b$1 = -.0041960863 * l - .7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 = -.0041960863 * ldt - .7034186147 * mdt + 1.707614701 * sdt;\n\t\t\t\tlet b2 = -.0041960863 * ldt2 - .7034186147 * mdt2 + 1.707614701 * sdt2;\n\t\t\t\tlet u_b = b1 / (b1 * b1 - .5 * b$1 * b2);\n\t\t\t\tlet t_b = -b$1 * u_b;\n\t\t\t\tt_r = u_r >= 0 ? t_r : 1e6;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 1e6;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 1e6;\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\treturn t;\n}\nfunction get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) cusp = find_cusp(a_, b_);\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\nfunction get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\tlet S_mid = .11516993 + 1 / (7.4477897 + 4.1590124 * b_ + a_ * (-2.19557347 + 1.75198401 * b_ + a_ * (-2.13704948 - 10.02301043 * b_ + a_ * (-4.24894561 + 5.38770819 * b_ + 4.69891013 * a_))));\n\tlet T_mid = .11239642 + 1 / (1.6132032 - .68124379 * b_ + a_ * (.40370612 + .90148123 * b_ + a_ * (-.27087943 + .6122399 * b_ + a_ * (.00299215 - .45399568 * b_ - .14661872 * a_))));\n\tlet k$3 = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid = .9 * k$3 * Math.sqrt(Math.sqrt(1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))));\n\tC_a = L * .4;\n\tC_b = (1 - L) * .8;\n\treturn [\n\t\tMath.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b))),\n\t\tC_mid,\n\t\tC_max\n\t];\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOklabToOkhsl.js\nfunction convertOklabToOkhsl(lab$2) {\n\tconst l = lab$2.l !== void 0 ? lab$2.l : 0;\n\tconst a = lab$2.a !== void 0 ? lab$2.a : 0;\n\tconst b = lab$2.b !== void 0 ? lab$2.b : 0;\n\tconst ret = {\n\t\tmode: \"okhsl\",\n\t\tl: toe(l)\n\t};\n\tif (lab$2.alpha !== void 0) ret.alpha = lab$2.alpha;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tif (!c$1) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c$1, b / c$1);\n\tlet s;\n\tif (c$1 < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = .8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\ts = (c$1 - k_0) / (k_1 + k_2 * (c$1 - k_0)) * .8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = .2 * C_mid * C_mid * 1.25 * 1.25 / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\ts = .8 + .2 * ((c$1 - k_0) / (k_1 + k_2 * (c$1 - k_0)));\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\t}\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/convertOkhslToOklab.js\nfunction convertOkhslToOklab(hsl$3) {\n\tlet h = hsl$3.h !== void 0 ? hsl$3.h : 0;\n\tlet s = hsl$3.s !== void 0 ? hsl$3.s : 0;\n\tlet l = hsl$3.l !== void 0 ? hsl$3.l : 0;\n\tconst ret = {\n\t\tmode: \"oklab\",\n\t\tl: toe_inv(l)\n\t};\n\tif (hsl$3.alpha !== void 0) ret.alpha = hsl$3.alpha;\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\tlet a_ = Math.cos(h / 180 * Math.PI);\n\tlet b_ = Math.sin(h / 180 * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < .8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = .8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - .8);\n\t\tk_0 = C_mid;\n\t\tk_1 = .2 * C_mid * C_mid * 1.25 * 1.25 / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + t * k_1 / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsl/modeOkhsl.js\nconst modeOkhsl = {\n\t...definition_default$1,\n\tmode: \"okhsl\",\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"l\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--okhsl\"],\n\tserialize: \"--okhsl\",\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: (c$1) => convertOklabToOkhsl(convertRgbToOklab_default(c$1))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: (c$1) => convertOklabToRgb_default(convertOkhslToOklab(c$1))\n\t}\n};\nvar modeOkhsl_default = modeOkhsl;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOklabToOkhsv.js\nfunction convertOklabToOkhsv(lab$2) {\n\tlet l = lab$2.l !== void 0 ? lab$2.l : 0;\n\tlet a = lab$2.a !== void 0 ? lab$2.a : 0;\n\tlet b = lab$2.b !== void 0 ? lab$2.b : 0;\n\tlet c$1 = Math.sqrt(a * a + b * b);\n\tlet a_ = c$1 ? a / c$1 : 1;\n\tlet b_ = c$1 ? b / c$1 : 1;\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = .5;\n\tlet k$3 = 1 - S_0 / S_max;\n\tlet t = T / (c$1 + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c$1;\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = C_v * L_vt / L_v;\n\tlet rgb_scale = convertOklabToLrgb_default({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tlet scale_L = Math.cbrt(1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0));\n\tl = l / scale_L;\n\tc$1 = c$1 / scale_L * toe(l) / l;\n\tl = toe(l);\n\tconst ret = {\n\t\tmode: \"okhsv\",\n\t\ts: c$1 ? (S_0 + T) * C_v / (T * S_0 + T * k$3 * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) ret.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);\n\tif (lab$2.alpha !== void 0) ret.alpha = lab$2.alpha;\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/convertOkhsvToOklab.js\nfunction convertOkhsvToOklab(hsv$2) {\n\tconst ret = { mode: \"oklab\" };\n\tif (hsv$2.alpha !== void 0) ret.alpha = hsv$2.alpha;\n\tconst h = hsv$2.h !== void 0 ? hsv$2.h : 0;\n\tconst s = hsv$2.s !== void 0 ? hsv$2.s : 0;\n\tconst v = hsv$2.v !== void 0 ? hsv$2.v : 0;\n\tconst a_ = Math.cos(h / 180 * Math.PI);\n\tconst b_ = Math.sin(h / 180 * Math.PI);\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = .5;\n\tconst k$3 = 1 - S_0 / S_max;\n\tconst L_v = 1 - s * S_0 / (S_0 + T - T * k$3 * s);\n\tconst C_v = s * T * S_0 / (S_0 + T - T * k$3 * s);\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = C_v * L_vt / L_v;\n\tconst rgb_scale = convertOklabToLrgb_default({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0));\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = C_v * L_new / L_v;\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\treturn ret;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/okhsv/modeOkhsv.js\nconst modeOkhsv = {\n\t...definition_default$19,\n\tmode: \"okhsv\",\n\tchannels: [\n\t\t\"h\",\n\t\t\"s\",\n\t\t\"v\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--okhsv\"],\n\tserialize: \"--okhsv\",\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: (c$1) => convertOklabToOkhsv(convertRgbToOklab_default(c$1))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: (c$1) => convertOklabToRgb_default(convertOkhsvToOklab(c$1))\n\t}\n};\nvar modeOkhsv_default = modeOkhsv;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/constants.js\nconst bias = .0037930732552754493;\nconst bias_cbrt = Math.cbrt(bias);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertRgbToXyb.js\nconst transfer$1 = (v) => Math.cbrt(v) - bias_cbrt;\nconst convertRgbToXyb = (color) => {\n\tconst { r: r$1, g, b, alpha } = convertRgbToLrgb_default(color);\n\tconst l = transfer$1(.3 * r$1 + .622 * g + .078 * b + bias);\n\tconst m = transfer$1(.23 * r$1 + .692 * g + .078 * b + bias);\n\tconst s = transfer$1(.2434226892454782 * r$1 + .2047674442449682 * g + .5518098665095535 * b + bias);\n\tconst res = {\n\t\tmode: \"xyb\",\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToXyb_default = convertRgbToXyb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/convertXybToRgb.js\nconst transfer = (v) => Math.pow(v + bias_cbrt, 3);\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === void 0) x = 0;\n\tif (y === void 0) y = 0;\n\tif (b === void 0) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\tconst s = transfer(b + y) - bias;\n\tconst res = convertLrgbToRgb_default({\n\t\tr: 11.031566904639861 * l - 9.866943908131562 * m - .16462299650829934 * s,\n\t\tg: -3.2541473810744237 * l + 4.418770377582723 * m - .16462299650829934 * s,\n\t\tb: -3.6588512867136815 * l + 2.7129230459360922 * m + 1.9459282407775895 * s\n\t});\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertXybToRgb_default = convertXybToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/xyb/definition.js\nconst definition$1 = {\n\tmode: \"xyb\",\n\tchannels: [\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"b\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--xyb\"],\n\tserialize: \"--xyb\",\n\ttoMode: { rgb: convertXybToRgb_default },\n\tfromMode: { rgb: convertRgbToXyb_default },\n\tranges: {\n\t\tx: [-.0154, .0281],\n\t\ty: [0, .8453],\n\t\tb: [-.2778, .388]\n\t},\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$26 = definition$1;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertRgbToYiq.js\nconst convertRgbToYiq = ({ r: r$1, g, b, alpha }) => {\n\tif (r$1 === void 0) r$1 = 0;\n\tif (g === void 0) g = 0;\n\tif (b === void 0) b = 0;\n\tconst res = {\n\t\tmode: \"yiq\",\n\t\ty: .29889531 * r$1 + .58662247 * g + .11448223 * b,\n\t\ti: .59597799 * r$1 - .2741761 * g - .32180189 * b,\n\t\tq: .21147017 * r$1 - .52261711 * g + .31114694 * b\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertRgbToYiq_default = convertRgbToYiq;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/convertYiqToRgb.js\nconst convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === void 0) y = 0;\n\tif (i === void 0) i = 0;\n\tif (q === void 0) q = 0;\n\tconst res = {\n\t\tmode: \"rgb\",\n\t\tr: y + .95608445 * i + .6208885 * q,\n\t\tg: y - .27137664 * i - .6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== void 0) res.alpha = alpha;\n\treturn res;\n};\nvar convertYiqToRgb_default = convertYiqToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/yiq/definition.js\nconst definition = {\n\tmode: \"yiq\",\n\ttoMode: { rgb: convertYiqToRgb_default },\n\tfromMode: { rgb: convertRgbToYiq_default },\n\tchannels: [\n\t\t\"y\",\n\t\t\"i\",\n\t\t\"q\",\n\t\t\"alpha\"\n\t],\n\tparse: [\"--yiq\"],\n\tserialize: \"--yiq\",\n\tranges: {\n\t\ti: [-.595, .595],\n\t\tq: [-.522, .522]\n\t},\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\nvar definition_default$27 = definition;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/round.js\nconst r = (value, precision) => Math.round(value * (precision = Math.pow(10, precision))) / precision;\nconst round = (precision = 4) => (value) => typeof value === \"number\" ? r(value, precision) : value;\nvar round_default = round;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/formatter.js\nlet twoDecimals = round_default(2);\nconst clamp = (value) => Math.max(0, Math.min(1, value || 0));\nconst fixup = (value) => Math.round(clamp(value) * 255);\nconst rgb$2 = converter_default(\"rgb\");\nconst hsl$1 = converter_default(\"hsl\");\nconst serializeHex = (color) => {\n\tif (color === void 0) return;\n\tlet r$1 = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\treturn \"#\" + (1 << 24 | r$1 << 16 | g << 8 | b).toString(16).slice(1);\n};\nconst serializeHex8 = (color) => {\n\tif (color === void 0) return;\n\tlet a = fixup(color.alpha !== void 0 ? color.alpha : 1);\n\treturn serializeHex(color) + (256 | a).toString(16).slice(1);\n};\nconst formatCss = (c$1) => {\n\tconst color = _prepare_default(c$1);\n\tif (!color) return;\n\tconst def = getMode(color.mode);\n\tif (!def.serialize || typeof def.serialize === \"string\") {\n\t\tlet res = `color(${def.serialize || `--${color.mode}`} `;\n\t\tdef.channels.forEach((ch, i) => {\n\t\t\tif (ch !== \"alpha\") res += (i ? \" \" : \"\") + (color[ch] !== void 0 ? color[ch] : \"none\");\n\t\t});\n\t\tif (color.alpha !== void 0 && color.alpha < 1) res += ` / ${color.alpha}`;\n\t\treturn res + \")\";\n\t}\n\tif (typeof def.serialize === \"function\") return def.serialize(color);\n};\nconst formatHex = (c$1) => serializeHex(rgb$2(c$1));\nconst formatHex8 = (c$1) => serializeHex8(rgb$2(c$1));\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/clamp.js\nconst rgb$1 = converter_default(\"rgb\");\nconst fixup_rgb = (c$1) => {\n\tconst res = {\n\t\tmode: c$1.mode,\n\t\tr: Math.max(0, Math.min(c$1.r !== void 0 ? c$1.r : 0, 1)),\n\t\tg: Math.max(0, Math.min(c$1.g !== void 0 ? c$1.g : 0, 1)),\n\t\tb: Math.max(0, Math.min(c$1.b !== void 0 ? c$1.b : 0, 1))\n\t};\n\tif (c$1.alpha !== void 0) res.alpha = c$1.alpha;\n\treturn res;\n};\nconst inrange_rgb = (c$1) => {\n\treturn c$1 !== void 0 && (c$1.r === void 0 || c$1.r >= 0 && c$1.r <= 1) && (c$1.g === void 0 || c$1.g >= 0 && c$1.g <= 1) && (c$1.b === void 0 || c$1.b >= 0 && c$1.b <= 1);\n};\nfunction displayable(color) {\n\treturn inrange_rgb(rgb$1(color));\n}\nfunction inGamut(mode = \"rgb\") {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) return (color) => true;\n\tconst conv = converter_default(typeof gamut === \"string\" ? gamut : mode);\n\treturn (color) => inrange_rgb(conv(color));\n}\nfunction clampGamut(mode = \"rgb\") {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) return (color) => _prepare_default(color);\n\tconst destMode = typeof gamut === \"string\" ? gamut : mode;\n\tconst destConv = converter_default(destMode);\n\tconst inDestGamut = inGamut(destMode);\n\treturn (color) => {\n\t\tconst original = _prepare_default(color);\n\t\tif (!original) return;\n\t\tconst converted = destConv(original);\n\t\tif (inDestGamut(converted)) return original;\n\t\tconst clamped = fixup_rgb(converted);\n\t\tif (original.mode === clamped.mode) return clamped;\n\t\treturn converter_default(original.mode)(clamped);\n\t};\n}\nfunction toGamut(dest = \"rgb\", mode = \"oklch\", delta = differenceEuclidean(\"oklch\"), jnd = .02) {\n\tconst destConv = converter_default(dest);\n\tconst destMode = getMode(dest);\n\tif (!destMode.gamut) return (color) => destConv(color);\n\tconst inDestinationGamut = inGamut(dest);\n\tconst clipToGamut = clampGamut(dest);\n\tconst ucs = converter_default(mode);\n\tconst { ranges } = getMode(mode);\n\tif (!ranges.l || !ranges.c) throw new Error(\"LCH-like space expected\");\n\treturn (color) => {\n\t\tcolor = _prepare_default(color);\n\t\tif (color === void 0) return;\n\t\tconst candidate = { ...ucs(color) };\n\t\tif (candidate.l === void 0) candidate.l = 0;\n\t\tif (candidate.c === void 0) candidate.c = 0;\n\t\tif (candidate.l >= ranges.l[1]) {\n\t\t\tconst res = {\n\t\t\t\t...destMode.white,\n\t\t\t\tmode: dest\n\t\t\t};\n\t\t\tif (color.alpha !== void 0) res.alpha = color.alpha;\n\t\t\treturn res;\n\t\t}\n\t\tif (candidate.l <= ranges.l[0]) {\n\t\t\tconst res = {\n\t\t\t\t...destMode.black,\n\t\t\t\tmode: dest\n\t\t\t};\n\t\t\tif (color.alpha !== void 0) res.alpha = color.alpha;\n\t\t\treturn res;\n\t\t}\n\t\tif (inDestinationGamut(candidate)) return destConv(candidate);\n\t\tlet start = 0;\n\t\tlet end = candidate.c;\n\t\tlet epsilon = (ranges.c[1] - ranges.c[0]) / 4e3;\n\t\tlet clipped = clipToGamut(candidate);\n\t\twhile (end - start > epsilon) {\n\t\t\tcandidate.c = (start + end) * .5;\n\t\t\tclipped = clipToGamut(candidate);\n\t\t\tif (inDestinationGamut(candidate) || delta && jnd > 0 && delta(candidate, clipped) <= jnd) start = candidate.c;\n\t\t\telse end = candidate.c;\n\t\t}\n\t\treturn destConv(inDestinationGamut(candidate) ? candidate : clipped);\n\t};\n}\n\n//#endregion\n//#region ../token-tools/dist/string-BIhoe-L2.js\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\nconst CULORI_TO_CSS = {\n\ta98: \"a98-rgb\",\n\thsl: \"hsl\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlab65: \"lab-d65\",\n\tlch: \"lch\",\n\tlrgb: \"srgb-linear\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\tokhsv: \"okhsv\",\n\tp3: \"display-p3\",\n\tprophoto: \"prophoto-rgb\",\n\trec2020: \"rec2020\",\n\trgb: \"srgb\",\n\txyz50: \"xyz-d50\",\n\txyz65: \"xyz-d65\"\n};\nconst CSS_TO_CULORI = {\n\t\"a98-rgb\": \"a98\",\n\t\"display-p3\": \"p3\",\n\thsl: \"hsl\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\t\"lab-d65\": \"lab65\",\n\tlch: \"lch\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\tokhsv: \"okhsv\",\n\t\"prophoto-rgb\": \"prophoto\",\n\trec2020: \"rec2020\",\n\tsrgb: \"rgb\",\n\t\"srgb-linear\": \"lrgb\",\n\txyz: \"xyz65\",\n\t\"xyz-d50\": \"xyz50\",\n\t\"xyz-d65\": \"xyz65\"\n};\n/** Parse any color */\nfunction parseColor(color) {\n\tconst result = parse_default(color);\n\tif (!result) throw new Error(`Unable to parse color \"${color}\"`);\n\tif (!(result.mode in CULORI_TO_CSS)) throw new Error(`Unsupported color space: ${result.mode}`);\n\tconst colorSpace = CULORI_TO_CSS[result.mode];\n\tlet components = [\n\t\t0,\n\t\t0,\n\t\t0\n\t];\n\tswitch (result.mode) {\n\t\tcase \"a98\":\n\t\tcase \"rec2020\":\n\t\tcase \"p3\":\n\t\tcase \"prophoto\":\n\t\tcase \"lrgb\":\n\t\tcase \"rgb\":\n\t\t\tcomponents = [\n\t\t\t\tresult.r,\n\t\t\t\tresult.g,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"hsl\": {\n\t\t\tconst maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s * maxS,\n\t\t\t\tresult.l * maxL\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"hwb\": {\n\t\t\tconst maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.w * maxW,\n\t\t\t\tresult.b * maxB\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"lab65\":\n\t\tcase \"oklab\":\n\t\t\tcomponents = [\n\t\t\t\tresult.l,\n\t\t\t\tresult.a,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"lch\":\n\t\tcase \"oklch\":\n\t\t\tcomponents = [\n\t\t\t\tresult.l,\n\t\t\t\tresult.c,\n\t\t\t\tresult.h ?? 0\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"okhsv\":\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s,\n\t\t\t\tresult.v\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"xyz50\":\n\t\tcase \"xyz65\":\n\t\t\tcomponents = [\n\t\t\t\tresult.x,\n\t\t\t\tresult.y,\n\t\t\t\tresult.z\n\t\t\t];\n\t\t\tbreak;\n\t}\n\tconst value = {\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha: result.alpha ?? 1\n\t};\n\tif (HEX_RE.test(color)) value.hex = formatHex(result);\n\treturn value;\n}\n/** Convert a color token to a Culori color */\nfunction tokenToCulori(value) {\n\tswitch (value.colorSpace) {\n\t\tcase \"a98-rgb\":\n\t\tcase \"display-p3\":\n\t\tcase \"prophoto-rgb\":\n\t\tcase \"rec2020\":\n\t\tcase \"srgb\":\n\t\tcase \"srgb-linear\": {\n\t\t\tconst [r$1, g, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n\t\t\t\tr: r$1,\n\t\t\t\tg,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hsl\": {\n\t\t\tconst [h, s, l] = value.components;\n\t\t\tconst maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\treturn {\n\t\t\t\tmode: \"hsl\",\n\t\t\t\th,\n\t\t\t\ts: s / maxS,\n\t\t\t\tl: l / maxL,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hwb\": {\n\t\t\tconst [h, w, b] = value.components;\n\t\t\tconst maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\treturn {\n\t\t\t\tmode: \"hwb\",\n\t\t\t\th,\n\t\t\t\tw: w / maxW,\n\t\t\t\tb: b / maxB,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"lab-d65\":\n\t\tcase \"oklab\": {\n\t\t\tconst [l = 0, a = 0, b = 0] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace === \"lab-d65\" ? \"lab65\" : value.colorSpace,\n\t\t\t\tl,\n\t\t\t\ta,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lch\":\n\t\tcase \"oklch\": {\n\t\t\tconst [l, c$1, h] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace,\n\t\t\t\tl,\n\t\t\t\tc: c$1,\n\t\t\t\th,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"okhsv\": {\n\t\t\tconst [h, s, v] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace,\n\t\t\t\th,\n\t\t\t\ts,\n\t\t\t\tv,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"xyz\":\n\t\tcase \"xyz-d50\":\n\t\tcase \"xyz-d65\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: CSS_TO_CULORI[value.colorSpace],\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tz,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Invalid colorSpace \"${value.colorSpace}\". Expected one of ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\t}\n}\n/** Complete list of CSS Module 4 Colorspaces */\nconst COLORSPACE = {\n\t\"a98-rgb\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"display-p3\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\thsl: { ranges: [\n\t\t[0, 360],\n\t\t[0, 100],\n\t\t[0, 100]\n\t] },\n\thwb: { ranges: [\n\t\t[0, 360],\n\t\t[0, 100],\n\t\t[0, 100]\n\t] },\n\tlab: { ranges: [\n\t\t[0, 100],\n\t\t[-125, 125],\n\t\t[-125, 125]\n\t] },\n\t\"lab-d65\": { ranges: [\n\t\t[0, 100],\n\t\t[-125, 125],\n\t\t[-125, 125]\n\t] },\n\tlch: { ranges: [\n\t\t[0, 100],\n\t\t[0, 150],\n\t\t[0, 360]\n\t] },\n\toklab: { ranges: [\n\t\t[0, 1],\n\t\t[-.4, .4],\n\t\t[-.4, .4]\n\t] },\n\toklch: { ranges: [\n\t\t[0, 1],\n\t\t[0, .4],\n\t\t[0, 360]\n\t] },\n\tokhsv: { ranges: [\n\t\t[0, 360],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"prophoto-rgb\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\trec2020: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\tsrgb: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"srgb-linear\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"xyz-d50\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\txyz: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"xyz-d65\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] }\n};\n/** Turn a string into kebab-case */\nfunction kebabCase(str) {\n\tlet output = \"\";\n\tfor (const c$1 of str.split(\"\")) {\n\t\tif (c$1 === \".\") {\n\t\t\toutput += \"-\";\n\t\t\tcontinue;\n\t\t}\n\t\tlet isFirstUppercase = true;\n\t\tif (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c$1)) {\n\t\t\toutput += `-${c$1.toLocaleLowerCase()}`;\n\t\t\tisFirstUppercase = false;\n\t\t\tcontinue;\n\t\t} else isFirstUppercase = true;\n\t\toutput += c$1;\n\t}\n\treturn output;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/wildcard-match@5.1.4/node_modules/wildcard-match/build/index.es.mjs\n/**\n* Escapes a character if it has a special meaning in regular expressions\n* and returns the character as is if it doesn't\n*/\nfunction escapeRegExpChar(char) {\n\tif (char === \"-\" || char === \"^\" || char === \"$\" || char === \"+\" || char === \".\" || char === \"(\" || char === \")\" || char === \"|\" || char === \"[\" || char === \"]\" || char === \"{\" || char === \"}\" || char === \"*\" || char === \"?\" || char === \"\\\\\") return \"\\\\\".concat(char);\n\telse return char;\n}\n/**\n* Escapes all characters in a given string that have a special meaning in regular expressions\n*/\nfunction escapeRegExpString(str) {\n\tvar result = \"\";\n\tfor (var i = 0; i < str.length; i++) result += escapeRegExpChar(str[i]);\n\treturn result;\n}\n/**\n* Transforms one or more glob patterns into a RegExp pattern\n*/\nfunction transform(pattern, separator) {\n\tif (separator === void 0) separator = true;\n\tif (Array.isArray(pattern)) {\n\t\tvar regExpPatterns = pattern.map(function(p$2) {\n\t\t\treturn \"^\".concat(transform(p$2, separator), \"$\");\n\t\t});\n\t\treturn \"(?:\".concat(regExpPatterns.join(\"|\"), \")\");\n\t}\n\tvar separatorSplitter = \"\";\n\tvar separatorMatcher = \"\";\n\tvar wildcard = \".\";\n\tif (separator === true) {\n\t\tseparatorSplitter = \"/\";\n\t\tseparatorMatcher = \"[/\\\\\\\\]\";\n\t\twildcard = \"[^/\\\\\\\\]\";\n\t} else if (separator) {\n\t\tseparatorSplitter = separator;\n\t\tseparatorMatcher = escapeRegExpString(separatorSplitter);\n\t\tif (separatorMatcher.length > 1) {\n\t\t\tseparatorMatcher = \"(?:\".concat(separatorMatcher, \")\");\n\t\t\twildcard = \"((?!\".concat(separatorMatcher, \").)\");\n\t\t} else wildcard = \"[^\".concat(separatorMatcher, \"]\");\n\t}\n\tvar requiredSeparator = separator ? \"\".concat(separatorMatcher, \"+?\") : \"\";\n\tvar optionalSeparator = separator ? \"\".concat(separatorMatcher, \"*?\") : \"\";\n\tvar segments = separator ? pattern.split(separatorSplitter) : [pattern];\n\tvar result = \"\";\n\tfor (var s = 0; s < segments.length; s++) {\n\t\tvar segment = segments[s];\n\t\tvar nextSegment = segments[s + 1];\n\t\tvar currentSeparator = \"\";\n\t\tif (!segment && s > 0) continue;\n\t\tif (separator) if (s === segments.length - 1) currentSeparator = optionalSeparator;\n\t\telse if (nextSegment !== \"**\") currentSeparator = requiredSeparator;\n\t\telse currentSeparator = \"\";\n\t\tif (separator && segment === \"**\") {\n\t\t\tif (currentSeparator) {\n\t\t\t\tresult += s === 0 ? \"\" : s === segments.length - 1 ? \"(?:\".concat(requiredSeparator, \"|$)\") : requiredSeparator;\n\t\t\t\tresult += \"(?:\".concat(wildcard, \"*?\").concat(currentSeparator, \")*?\");\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tfor (var c$1 = 0; c$1 < segment.length; c$1++) {\n\t\t\tvar char = segment[c$1];\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tif (c$1 < segment.length - 1) {\n\t\t\t\t\tresult += escapeRegExpChar(segment[c$1 + 1]);\n\t\t\t\t\tc$1++;\n\t\t\t\t}\n\t\t\t} else if (char === \"?\") result += wildcard;\n\t\t\telse if (char === \"*\") result += \"\".concat(wildcard, \"*?\");\n\t\t\telse result += escapeRegExpChar(char);\n\t\t}\n\t\tresult += currentSeparator;\n\t}\n\treturn result;\n}\nfunction isMatch(regexp, sample) {\n\tif (typeof sample !== \"string\") throw new TypeError(\"Sample must be a string, but \".concat(typeof sample, \" given\"));\n\treturn regexp.test(sample);\n}\n/**\n* Compiles one or more glob patterns into a RegExp and returns an isMatch function.\n* The isMatch function takes a sample string as its only argument and returns `true`\n* if the string matches the pattern(s).\n*\n* ```js\n* wildcardMatch('src/*.js')('src/index.js') //=> true\n* ```\n*\n* ```js\n* const isMatch = wildcardMatch('*.example.com', '.')\n* isMatch('foo.example.com') //=> true\n* isMatch('foo.bar.com') //=> false\n* ```\n*/\nfunction wildcardMatch(pattern, options) {\n\tif (typeof pattern !== \"string\" && !Array.isArray(pattern)) throw new TypeError(\"The first argument must be a single pattern string or an array of patterns, but \".concat(typeof pattern, \" given\"));\n\tif (typeof options === \"string\" || typeof options === \"boolean\") options = { separator: options };\n\tif (arguments.length === 2 && !(typeof options === \"undefined\" || typeof options === \"object\" && options !== null && !Array.isArray(options))) throw new TypeError(\"The second argument must be an options object or a string/boolean separator, but \".concat(typeof options, \" given\"));\n\toptions = options || {};\n\tif (options.separator === \"\\\\\") throw new Error(\"\\\\ is not a valid separator because it is used for escaping. Try setting the separator to `true` instead\");\n\tvar regexpPattern = transform(pattern, options.separator);\n\tvar regexp = new RegExp(\"^\".concat(regexpPattern, \"$\"), options.flags);\n\tvar fn$4 = isMatch.bind(null, regexp);\n\tfn$4.options = options;\n\tfn$4.pattern = pattern;\n\tfn$4.regexp = regexp;\n\treturn fn$4;\n}\n\n//#endregion\n//#region ../token-tools/dist/index.js\n/** Give a user pertinent feedback if they override a transform incorrectly */\nfunction validateCustomTransform(value, { $type }) {\n\tif (value) {\n\t\tif (typeof value !== \"string\" && typeof value !== \"object\" || Array.isArray(value)) throw new Error(`transform(): expected string or Object of strings, received ${Array.isArray(value) ? \"Array\" : typeof value}`);\n\t\tswitch ($type) {\n\t\t\tcase \"typography\":\n\t\t\t\tif (typeof value !== \"object\") throw new Error(\"transform(): typography tokens must be an object of keys\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.2/node_modules/culori/src/index.js\nconst a98 = useMode(definition_default);\nconst cubehelix = useMode(definition_default$15);\nconst dlab = useMode(definition_default$16);\nconst dlch = useMode(definition_default$17);\nconst hsi = useMode(definition_default$18);\nconst hsl = useMode(definition_default$1);\nconst hsv = useMode(definition_default$19);\nconst hwb = useMode(definition_default$2);\nconst itp = useMode(definition_default$20);\nconst jab = useMode(definition_default$21);\nconst jch = useMode(definition_default$22);\nconst lab = useMode(definition_default$3);\nconst lab65 = useMode(definition_default$4);\nconst lch = useMode(definition_default$5);\nconst lch65 = useMode(definition_default$23);\nconst lchuv = useMode(definition_default$24);\nconst lrgb = useMode(definition_default$6);\nconst luv = useMode(definition_default$25);\nconst okhsl = useMode(modeOkhsl_default);\nconst okhsv = useMode(modeOkhsv_default);\nconst oklab = useMode(definition_default$7);\nconst oklch = useMode(definition_default$8);\nconst p3 = useMode(definition_default$9);\nconst prophoto = useMode(definition_default$10);\nconst rec2020 = useMode(definition_default$11);\nconst rgb = useMode(definition_default$12);\nconst xyb = useMode(definition_default$26);\nconst xyz50 = useMode(definition_default$13);\nconst xyz65 = useMode(definition_default$14);\nconst yiq = useMode(definition_default$27);\n\n//#endregion\n//#region ../token-tools/dist/css.js\nfunction defaultAliasTransform(token) {\n\tif (!token) throw new Error(\"Undefined token\");\n\treturn `var(${makeCSSVar(token.id)})`;\n}\n/** Generate shorthand CSS for select token types */\nfunction generateShorthand({ token, localID }) {\n\tswitch (token.$type) {\n\t\tcase \"transition\": return [\n\t\t\t\"duration\",\n\t\t\t\"delay\",\n\t\t\t\"timing-function\"\n\t\t].map((p$2) => makeCSSVar(`${localID}-${p$2}`, { wrapVar: true })).join(\" \");\n\t\tcase \"typography\": {\n\t\t\tconst typeVar = (name) => makeCSSVar(`${localID}-${name}`, { wrapVar: true });\n\t\t\tif (\"font-size\" in token.$value && \"font-family\" in token.$value) {\n\t\t\t\tlet output = \"\";\n\t\t\t\tfor (const prop of [\n\t\t\t\t\t\"font-style\",\n\t\t\t\t\t\"font-variant\",\n\t\t\t\t\t\"font-weight\"\n\t\t\t\t]) if (prop in token.$value) output += ` ${typeVar(prop)}`;\n\t\t\t\tlet fontSizeVar = typeVar(\"font-size\");\n\t\t\t\tif (\"line-height\" in token.$value) fontSizeVar += `/${typeVar(\"line-height\")}`;\n\t\t\t\toutput += ` ${fontSizeVar}`;\n\t\t\t\toutput += ` ${typeVar(\"font-family\")}`;\n\t\t\t\treturn output.trim();\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n}\nconst CSS_VAR_RE = /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n/**\n* Generate a valid CSS variable from any string\n* Code by @dfrankland\n*/\nfunction makeCSSVar(name, { prefix, wrapVar = false } = {}) {\n\tif (typeof name !== \"string\") throw new Error(`makeCSSVar() Expected string, received ${name}`);\n\tlet property = name.split(CSS_VAR_RE).filter(Boolean).join(\"-\");\n\tif (prefix && !property.startsWith(`${prefix}-`)) property = `${prefix}-${property}`;\n\tconst finalProperty = `--${property}`.toLocaleLowerCase();\n\treturn wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n/** Convert boolean value to CSS string */\nfunction transformBoolean(token, { tokensSet, transformAlias = defaultAliasTransform }) {\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value === true ? \"1\" : \"0\";\n}\n/** Convert color value to CSS string */\nfunction transformColor(token, options) {\n\tconst { transformAlias = defaultAliasTransform, tokensSet } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst { colorSpace, components, alpha = 1 } = typeof token.$value === \"string\" ? parseColor(token.$value) : token.$value;\n\tconst color = tokenToCulori({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t});\n\tif (!color) throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n\tlet formatColor = formatCss;\n\tif (options.color?.legacyHex) formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n\treturn displayable(color) ? formatColor(color) : downsample({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t}, color, options.color?.depth);\n}\nconst converters = {\n\ta98: useMode(definition_default),\n\thsl: useMode(definition_default$1),\n\thwb: useMode(definition_default$2),\n\tlab: useMode(definition_default$3),\n\tlab65: useMode(definition_default$4),\n\tlch: useMode(definition_default$5),\n\tlrgb: useMode(definition_default$6),\n\toklab: useMode(definition_default$7),\n\toklch: useMode(definition_default$8),\n\tokhsv: useMode(modeOkhsv_default),\n\tp3: useMode(definition_default$9),\n\tprophoto: useMode(definition_default$10),\n\trec2020: useMode(definition_default$11),\n\trgb: useMode(definition_default$12),\n\txyz50: useMode(definition_default$13),\n\txyz65: useMode(definition_default$14)\n};\nconst DEPTH_ROUNDING = {\n\t24: round_default(4),\n\t30: round_default(4),\n\t36: round_default(5),\n\t48: round_default(6)\n};\n/**\n* Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n* Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n* we have to do an additional step of converting back. So we’re not really converting;\n* we’re just preserving the original colorspace.\n*/\nfunction downsample($value, culoriColor, depth = 30) {\n\tif (!($value.colorSpace in CSS_TO_CULORI)) throw new Error(`Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tlet gamutSpace = conversionSpace;\n\tif (gamutSpace === \"lab\" || gamutSpace === \"lab65\") gamutSpace = \"lch\";\n\telse if (gamutSpace === \"oklab\") gamutSpace = \"oklch\";\n\tlet srgb = converters[conversionSpace](toGamut(\"rgb\", gamutSpace)(culoriColor));\n\tlet p3$2 = converters[conversionSpace](toGamut(\"p3\", gamutSpace)(culoriColor));\n\tlet rec2020$2 = converters[conversionSpace](toGamut(\"rec2020\", gamutSpace)(culoriColor));\n\tif (typeof depth === \"number\") {\n\t\tif (!DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(\", \")}`);\n\t\tsrgb = roundColor(srgb, depth);\n\t\tp3$2 = roundColor(p3$2, depth);\n\t\trec2020$2 = roundColor(rec2020$2, depth);\n\t}\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(srgb),\n\t\tp3: formatCss(p3$2),\n\t\trec2020: formatCss(rec2020$2)\n\t};\n}\n/** Round color to certain depth. */\nfunction roundColor(color, depth = 30) {\n\tif (depth === \"unlimited\") return color;\n\tconst newColor = { ...color };\n\tfor (const [k$3, v] of Object.entries(color)) {\n\t\tif (typeof v !== \"number\" || k$3 === \"mode\") continue;\n\t\tnewColor[k$3] = DEPTH_ROUNDING[depth](v);\n\t}\n\treturn newColor;\n}\n/** Convert dimension value to CSS */\nfunction transformDimension(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.value === 0 ? \"0\" : `${token.$value.value}${token.$value.unit}`;\n}\n/** Convert strokeStyle value to CSS */\nfunction transformStrokeStyle(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn typeof token.$value === \"string\" ? token.$value : \"dashed\";\n}\n/** Convert border value to multiple CSS values */\nfunction transformBorder(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst width = token.partialAliasOf?.width ? transformAlias(tokensSet[token.partialAliasOf.width]) : transformDimension({ $value: token.$value.width }, options);\n\tconst color = token.partialAliasOf?.color ? transformAlias(tokensSet[token.partialAliasOf.color]) : transformColor({ $value: token.$value.color }, options);\n\tconst style = token.partialAliasOf?.style ? transformAlias(tokensSet[token.partialAliasOf.style]) : transformStrokeStyle({ $value: token.$value.style }, options);\n\tconst formatBorder = (colorKey) => [\n\t\twidth,\n\t\tstyle,\n\t\ttypeof color === \"string\" ? color : color[colorKey]\n\t].join(\" \");\n\treturn typeof color === \"string\" || displayable(color.p3) ? formatBorder(\".\") : {\n\t\t\".\": formatBorder(\".\"),\n\t\tsrgb: formatBorder(\"srgb\"),\n\t\tp3: formatBorder(\"p3\"),\n\t\trec2020: formatBorder(\"rec2020\")\n\t};\n}\n/** Convert cubicBezier value to CSS */\nfunction transformCubicBezier(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `cubic-bezier(${token.$value.map((v, i) => token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]) : v).join(\", \")})`;\n}\n/** Convert duration value to CSS */\nfunction transformDuration(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `${token.$value.value}${token.$value.unit}`;\n}\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\nfunction transformFontFamily(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.map((fontName) => FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`).join(\", \");\n}\n/** Convert fontWeight value to CSS */\nfunction transformFontWeight(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n/** Convert gradient value to CSS */\nfunction transformGradient(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tlet isHDR = false;\n\tconst colors = [];\n\tconst positions = [];\n\tfor (let i = 0; i < token.$value.length; i++) {\n\t\tconst { color, position } = token.$value[i];\n\t\tconst colorValue = token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: color }, options);\n\t\tif (typeof colorValue !== \"string\") isHDR = true;\n\t\tcolors.push(colorValue);\n\t\tpositions.push(token.partialAliasOf?.[i]?.position ? transformAlias(tokensSet[token.partialAliasOf[i].position]) : `${100 * position}%`);\n\t}\n\tfunction formatStop(i, colorKey = \".\") {\n\t\treturn `${typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey]} ${positions[i]}`;\n\t}\n\treturn !isHDR ? token.$value.map((_, i) => formatStop(i, positions[i])).join(\", \") : {\n\t\t\".\": token.$value.map((_, i) => formatStop(i, \".\")).join(\", \"),\n\t\tsrgb: token.$value.map((_, i) => formatStop(i, \"srgb\")).join(\", \"),\n\t\tp3: token.$value.map((_, i) => formatStop(i, \"p3\")).join(\", \"),\n\t\trec2020: token.$value.map((_, i) => formatStop(i, \"rec2020\")).join(\", \")\n\t};\n}\n/** Convert link value to CSS */\nfunction transformLink(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `url(\"${token.$value}\")`;\n}\n/** Convert number value to CSS */\nfunction transformNumber(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n/** Convert shadow subvalue to CSS */\nfunction transformShadowLayer(value, options) {\n\tconst { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n\tconst offsetX = partialAliasOf?.offsetX ? transformAlias(tokensSet[partialAliasOf.offsetX]) : transformDimension({ $value: value.offsetX }, options);\n\tconst offsetY = partialAliasOf?.offsetY ? transformAlias(tokensSet[partialAliasOf.offsetY]) : transformDimension({ $value: value.offsetY }, options);\n\tconst blur = partialAliasOf?.blur ? transformAlias(tokensSet[partialAliasOf.blur]) : transformDimension({ $value: value.blur }, options);\n\tconst spread = partialAliasOf?.spread ? transformAlias(tokensSet[partialAliasOf.spread]) : transformDimension({ $value: value.spread }, options);\n\treturn [\n\t\tvalue?.inset === true ? \"inset\" : void 0,\n\t\toffsetX,\n\t\toffsetY,\n\t\tblur,\n\t\tspread,\n\t\tcolorValue\n\t].filter(Boolean).join(\" \");\n}\n/** Convert shadow value to CSS */\nfunction transformShadow(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst colors = token.$value.map((v, i) => token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: v.color }, options));\n\tconst isHDR = colors.some((c$1) => typeof c$1 === \"object\");\n\tconst formatShadow = (colorKey) => token.$value.map((v, i) => transformShadowLayer(v, {\n\t\ttokensSet,\n\t\tcolorValue: typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey],\n\t\tpartialAliasOf: token.partialAliasOf?.[i],\n\t\ttransformAlias\n\t})).join(\", \");\n\treturn !isHDR ? formatShadow(\".\") : {\n\t\t\".\": formatShadow(\".\"),\n\t\tsrgb: formatShadow(\"srgb\"),\n\t\tp3: formatShadow(\"p3\"),\n\t\trec2020: formatShadow(\"rec2020\")\n\t};\n}\n/** Convert string value to CSS */\nfunction transformString(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n/** Convert transition value to shorthand */\nfunction transformTransition(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `${token.partialAliasOf?.duration ? transformAlias(tokensSet[token.partialAliasOf.duration]) : transformDuration({ $value: token.$value.duration }, options)} ${token.partialAliasOf?.delay ? transformAlias(tokensSet[token.partialAliasOf.delay]) : transformDuration({ $value: token.$value.delay }, options)} ${token.partialAliasOf?.timingFunction ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]) : transformCubicBezier({ $value: token.$value.timingFunction }, options)}`;\n}\n/** Convert typography value to multiple CSS values */\nfunction transformTypography(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tconst output = {};\n\tfor (const [property, subvalue] of Object.entries(token.$value)) {\n\t\tlet transformedValue;\n\t\tconst aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n\t\tif (aliasedID) {\n\t\t\tconst resolvedToken = tokensSet[aliasedID];\n\t\t\ttransformedValue = transformAlias(resolvedToken.$type === \"typography\" ? { id: `${aliasedID}-${property}` } : resolvedToken);\n\t\t} else switch (property) {\n\t\t\tcase \"fontFamily\":\n\t\t\t\ttransformedValue = transformFontFamily({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontSize\":\n\t\t\tcase \"letterSpacing\":\n\t\t\t\ttransformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontWeight\":\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"lineHeight\":\n\t\t\t\tif (typeof subvalue === \"number\") transformedValue = transformNumber({ $value: subvalue }, options);\n\t\t\t\telse transformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t}\n\t\toutput[kebabCase(property)] = transformedValue;\n\t}\n\treturn output;\n}\n/** Main CSS Transform */\nfunction transformCSSValue(token, { mode, ...options }) {\n\tconst selectedMode = token.mode[mode];\n\tif (!selectedMode) return;\n\tconst tokenWithModeValue = {\n\t\tid: token.id,\n\t\t$type: token.$type,\n\t\t...selectedMode\n\t};\n\tswitch (tokenWithModeValue.$type) {\n\t\tcase \"boolean\": return transformBoolean(tokenWithModeValue, options);\n\t\tcase \"border\": return transformBorder(tokenWithModeValue, options);\n\t\tcase \"color\": return transformColor(tokenWithModeValue, options);\n\t\tcase \"cubicBezier\": return transformCubicBezier(tokenWithModeValue, options);\n\t\tcase \"dimension\": return transformDimension(tokenWithModeValue, options);\n\t\tcase \"duration\": return transformDuration(tokenWithModeValue, options);\n\t\tcase \"fontFamily\": return transformFontFamily(tokenWithModeValue, options);\n\t\tcase \"fontWeight\": return transformFontWeight(tokenWithModeValue, options);\n\t\tcase \"gradient\": return transformGradient(tokenWithModeValue, options);\n\t\tcase \"link\": return transformLink(tokenWithModeValue, options);\n\t\tcase \"number\": return transformNumber(tokenWithModeValue, options);\n\t\tcase \"shadow\": return transformShadow(tokenWithModeValue, options);\n\t\tcase \"string\": return transformString(tokenWithModeValue, options);\n\t\tcase \"strokeStyle\": return transformStrokeStyle(tokenWithModeValue, options);\n\t\tcase \"transition\": return transformTransition(tokenWithModeValue, options);\n\t\tcase \"typography\": return transformTypography(tokenWithModeValue, options);\n\t}\n}\n\n//#endregion\n//#region src/lib.ts\nconst FORMAT_ID = \"css\";\nconst FILE_PREFIX = `/* -------------------------------------------\n * Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n * ------------------------------------------- */`;\n/** Convert CSSRules into a formatted, indented CSS string */\nfunction printRules(rules) {\n\tconst output = [];\n\tfor (const rule of rules) {\n\t\tif (!rule.selectors.length || !Object.keys(rule.declarations).length) continue;\n\t\tconst mqSelectors = [];\n\t\tconst joinableSelectors = [];\n\t\tfor (const s of rule.selectors) (s.startsWith(\"@\") ? mqSelectors : joinableSelectors).push(s);\n\t\tfor (const s of mqSelectors) output.push(_printRule({\n\t\t\t...rule,\n\t\t\tselectors: [s]\n\t\t}));\n\t\tif (joinableSelectors.length) output.push(_printRule({\n\t\t\t...rule,\n\t\t\tselectors: joinableSelectors\n\t\t}));\n\t}\n\treturn output.join(\"\\n\\n\");\n}\nfunction _printRule(rule) {\n\tconst output = [];\n\tconst isMediaQuery = rule.selectors.some((s) => s.startsWith(\"@\"));\n\tlet indent = \"\";\n\tif (rule.nestedQuery && isMediaQuery) {\n\t\toutput.push(`${indent}${rule.selectors.join(`,\\n${indent}`)} {`);\n\t\tindent += \" \";\n\t\toutput.push(`${indent}${rule.nestedQuery} {`);\n\t} else if (rule.nestedQuery && !isMediaQuery) {\n\t\toutput.push(`${indent}${rule.nestedQuery} {`);\n\t\tindent += \" \";\n\t\toutput.push(`${indent}${rule.selectors.join(`,\\n${indent}`)} {`);\n\t} else output.push(`${indent}${rule.selectors.join(`,\\n${indent}`)} {`);\n\tindent += \" \";\n\tif (isMediaQuery) {\n\t\toutput.push(`${indent}:root {`);\n\t\tindent += \" \";\n\t}\n\tfor (const [k$3, d] of Object.entries(rule.declarations)) output.push(`${indent}${k$3}: ${d.value};${d.description ? ` /* ${d.description} */` : \"\"}`);\n\twhile (indent !== \"\") {\n\t\tindent = indent.substring(0, indent.length - 2);\n\t\toutput.push(`${indent}}`);\n\t}\n\treturn output.join(\"\\n\");\n}\n\n//#endregion\n//#region src/build/utility-css.ts\nconst GROUP_REGEX = {\n\tbg: /(^bg-|-bg-)/,\n\tborder: /(^border-|-border-)/,\n\tfont: /(^font-|-font-)/,\n\tgap: /(^gap-|-gap-)/,\n\tm: /(^margin-|-margin-|)/,\n\tp: /(^padding-|-padding-|)/,\n\tshadow: /(^shadow-|-shadow-)/,\n\ttext: /(^text-|-text-)/\n};\n/** Make CSS class name from transformed token */\nfunction makeSelector(token, prefix, subgroup) {\n\treturn `.${prefix}${subgroup || \"\"}-${kebabCase(token.token.id).replace(GROUP_REGEX[prefix], \"\")}`;\n}\nfunction makeVarValue(token) {\n\treturn { value: makeCSSVar(token.localID ?? token.token.id, { wrapVar: true }) };\n}\nfunction generateUtilityCSS(groups, tokens) {\n\tconst output = [];\n\tconst groupEntries = Object.entries(groups);\n\tgroupEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\tfor (const [group, selectors] of groupEntries) {\n\t\tconst selectorMatcher = wildcardMatch(selectors);\n\t\tconst matchingTokens = tokens.filter((token) => selectorMatcher(token.token.id));\n\t\tif (!matchingTokens.length) {\n\t\t\tconsole.warn(`[@terrazzo/plugin-css] utility group \"${group}\" matched 0 tokens: ${JSON.stringify(selectors)}`);\n\t\t\tbreak;\n\t\t}\n\t\tswitch (group) {\n\t\t\tcase \"bg\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst selector = makeSelector(token, \"bg\");\n\t\t\t\t\tswitch (token.token.$type) {\n\t\t\t\t\t\tcase \"color\":\n\t\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\t\tdeclarations: { \"background-color\": makeVarValue(token) }\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"gradient\": output.push({\n\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\tdeclarations: { \"background-image\": { value: `linear-gradient(${makeCSSVar(token.localID ?? token.token.id, { wrapVar: true })})` } }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"border\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst property = {\n\t\t\t\t\t\tborder: \"border\",\n\t\t\t\t\t\tcolor: \"border-color\",\n\t\t\t\t\t\tdimension: \"border-width\",\n\t\t\t\t\t\tstrokeStyle: \"border-style\"\n\t\t\t\t\t}[token.token.$type];\n\t\t\t\t\tif (property) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, \"border\")],\n\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor (const token of matchingTokens) for (const side of [\n\t\t\t\t\t\"top\",\n\t\t\t\t\t\"right\",\n\t\t\t\t\t\"bottom\",\n\t\t\t\t\t\"left\"\n\t\t\t\t]) {\n\t\t\t\t\tconst property = {\n\t\t\t\t\t\tborder: `border-${side}`,\n\t\t\t\t\t\tcolor: `border-${side}-color`,\n\t\t\t\t\t\tdimension: `border-${side}-width`,\n\t\t\t\t\t\tstrokeStyle: `border-${side}-style`\n\t\t\t\t\t}[token.token.$type];\n\t\t\t\t\tif (property) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, \"border\", `-${side}`)],\n\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"font\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst selector = makeSelector(token, \"font\");\n\t\t\t\t\tif (token.token.$type === \"typography\" && token.type === \"MULTI_VALUE\") {\n\t\t\t\t\t\tconst declarations = {};\n\t\t\t\t\t\tfor (const k$3 of Object.keys(token.value)) declarations[k$3] = { value: makeCSSVar(`${token.localID ?? token.token.id}-${k$3}`, { wrapVar: true }) };\n\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\tdeclarations\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst property = {\n\t\t\t\t\t\t\tdimension: \"font-size\",\n\t\t\t\t\t\t\tfontFamily: \"font-family\",\n\t\t\t\t\t\t\tfontWeight: \"font-weight\"\n\t\t\t\t\t\t}[token.token.$type];\n\t\t\t\t\t\tif (property) output.push({\n\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"layout\": {\n\t\t\t\tconst filteredTokens = matchingTokens.filter((t) => t.token.$type === \"dimension\");\n\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"gap\")],\n\t\t\t\t\tdeclarations: { gap: makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"gap\", \"-col\")],\n\t\t\t\t\tdeclarations: { \"column-gap\": makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"gap\", \"-row\")],\n\t\t\t\t\tdeclarations: { \"row-gap\": makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tfor (const prefix of [\"m\", \"p\"]) {\n\t\t\t\t\tconst property = prefix === \"m\" ? \"margin\" : \"padding\";\n\t\t\t\t\tfor (const token of filteredTokens) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"a\")],\n\t\t\t\t\t\tdeclarations: { [property]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t\tfor (const token of filteredTokens) {\n\t\t\t\t\t\tconst value = makeVarValue(token);\n\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"x\")],\n\t\t\t\t\t\t\tdeclarations: {\n\t\t\t\t\t\t\t\t[`${property}-left`]: value,\n\t\t\t\t\t\t\t\t[`${property}-right`]: value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"y\")],\n\t\t\t\t\t\t\tdeclarations: {\n\t\t\t\t\t\t\t\t[`${property}-bottom`]: value,\n\t\t\t\t\t\t\t\t[`${property}-top`]: value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tfor (const side of [\n\t\t\t\t\t\t\"top\",\n\t\t\t\t\t\t\"right\",\n\t\t\t\t\t\t\"bottom\",\n\t\t\t\t\t\t\"left\"\n\t\t\t\t\t]) for (const token of filteredTokens) output.push({\n\t\t\t\t\t\tselectors: [makeSelector(token, prefix, side[0])],\n\t\t\t\t\t\tdeclarations: { [`${property}-${side}`]: makeVarValue(token) }\n\t\t\t\t\t});\n\t\t\t\t\tfor (const token of filteredTokens) {\n\t\t\t\t\t\tconst value = makeVarValue(token);\n\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"s\")],\n\t\t\t\t\t\t\tdeclarations: { [`${property}-inline-start`]: value }\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\tselectors: [makeSelector(token, prefix, \"e\")],\n\t\t\t\t\t\t\tdeclarations: { [`${property}-inline-end`]: value }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"shadow\":\n\t\t\t\tfor (const token of matchingTokens) if (token.token.$type === \"shadow\") output.push({\n\t\t\t\t\tselectors: [makeSelector(token, \"shadow\")],\n\t\t\t\t\tdeclarations: { \"box-shadow\": makeVarValue(token) }\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"text\":\n\t\t\t\tfor (const token of matchingTokens) {\n\t\t\t\t\tconst selector = makeSelector(token, \"text\");\n\t\t\t\t\tconst value = makeVarValue(token);\n\t\t\t\t\tswitch (token.token.$type) {\n\t\t\t\t\t\tcase \"color\":\n\t\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\t\tdeclarations: { color: value }\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"gradient\":\n\t\t\t\t\t\t\toutput.push({\n\t\t\t\t\t\t\t\tselectors: [selector],\n\t\t\t\t\t\t\t\tdeclarations: {\n\t\t\t\t\t\t\t\t\tbackground: { value: `-webkit-linear-gradient(${value.value})` },\n\t\t\t\t\t\t\t\t\t\"-webkit-background-clip\": { value: \"text\" },\n\t\t\t\t\t\t\t\t\t\"-webkit-text-fill-color\": { value: \"transparent\" }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.warn(`[@terrazzo/plugin-css] unknown utility CSS group \"${group}\", ignoring`);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn output;\n}\n\n//#endregion\n//#region src/build/index.ts\nconst P3_MQ = \"@media (color-gamut: p3)\";\nconst REC2020_MQ = \"@media (color-gamut: rec2020)\";\nfunction buildFormat({ getTransforms, exclude, utility, modeSelectors, baseSelector, baseScheme }) {\n\tconst rules = [];\n\tconst rootTokens = getTransforms({\n\t\tformat: FORMAT_ID,\n\t\tmode: \".\"\n\t});\n\tif (rootTokens.length) {\n\t\tconst rootRule = {\n\t\t\tselectors: [baseSelector],\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst p3Rule = {\n\t\t\tselectors: [baseSelector],\n\t\t\tnestedQuery: P3_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst rec2020Rule = {\n\t\t\tselectors: [baseSelector],\n\t\t\tnestedQuery: REC2020_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\trules.push(rootRule, p3Rule, rec2020Rule);\n\t\tconst shouldExclude = wildcardMatch(exclude ?? []);\n\t\tif (baseScheme) rootRule.declarations[\"color-scheme\"] = { value: baseScheme };\n\t\tfor (const token of rootTokens) {\n\t\t\tif (shouldExclude(token.token.id)) continue;\n\t\t\tconst localID = token.localID ?? token.token.id;\n\t\t\tconst aliasTokens = token.token.aliasedBy?.length ? getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: token.token.aliasedBy\n\t\t\t}) : [];\n\t\t\tif (token.type === \"SINGLE_VALUE\") rootRule.declarations[localID] = {\n\t\t\t\tvalue: token.value,\n\t\t\t\tdescription: token.token.$description\n\t\t\t};\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\trootRule.declarations[localID] = {\n\t\t\t\t\tvalue: token.value.srgb,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tp3Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.p3,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\trec2020Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.rec2020,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") {\n\t\t\t\t\t\tp3Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t\trec2020Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (token.type === \"MULTI_VALUE\") {\n\t\t\t\tfor (const [name, value] of Object.entries(token.value)) rootRule.declarations[name === \".\" ? localID : [localID, name].join(\"-\")] = {\n\t\t\t\t\tvalue,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tconst shorthand = generateShorthand({\n\t\t\t\t\ttoken: {\n\t\t\t\t\t\t...token.token,\n\t\t\t\t\t\t$value: token.value\n\t\t\t\t\t},\n\t\t\t\t\tlocalID\n\t\t\t\t});\n\t\t\t\tif (shorthand) rootRule.declarations[token.localID ?? token.token.id] = {\n\t\t\t\t\tvalue: shorthand,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tfor (const { selectors, tokens, mode, scheme } of modeSelectors ?? []) {\n\t\tif (!selectors.length) continue;\n\t\tconst selectorTokens = getTransforms({\n\t\t\tformat: FORMAT_ID,\n\t\t\tid: tokens,\n\t\t\tmode\n\t\t});\n\t\tif (!selectorTokens.length) continue;\n\t\tconst selectorRule = {\n\t\t\tselectors,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst selectorP3Rule = {\n\t\t\tselectors,\n\t\t\tnestedQuery: P3_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst selectorRec2020Rule = {\n\t\t\tselectors,\n\t\t\tnestedQuery: REC2020_MQ,\n\t\t\tdeclarations: {}\n\t\t};\n\t\tconst selectorAliasDeclarations = {};\n\t\trules.push(selectorRule, selectorP3Rule, selectorRec2020Rule);\n\t\tif (scheme) selectorRule.declarations[\"color-scheme\"] = { value: scheme };\n\t\tfor (const token of selectorTokens) {\n\t\t\tconst localID = token.localID ?? token.token.id;\n\t\t\tconst aliasTokens = token.token.aliasedBy?.length ? getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: token.token.aliasedBy\n\t\t\t}) : [];\n\t\t\tif (token.type === \"SINGLE_VALUE\") selectorRule.declarations[localID] = {\n\t\t\t\tvalue: token.value,\n\t\t\t\tdescription: token.token.$description\n\t\t\t};\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\tselectorRule.declarations[localID] = {\n\t\t\t\t\tvalue: token.value.srgb,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tselectorP3Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.p3,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\tselectorRec2020Rule.declarations[localID] = {\n\t\t\t\t\t\tvalue: token.value.rec2020,\n\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t};\n\t\t\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") {\n\t\t\t\t\t\tselectorP3Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t\tselectorRec2020Rule.declarations[alias.localID] ??= {\n\t\t\t\t\t\t\tvalue: alias.value,\n\t\t\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [name, subvalue] of Object.entries(token.value)) selectorRule.declarations[`${localID}-${name}`] = {\n\t\t\t\t\tvalue: subvalue,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t\tconst shorthand = generateShorthand({\n\t\t\t\t\ttoken: {\n\t\t\t\t\t\t...token.token,\n\t\t\t\t\t\t$value: token.value\n\t\t\t\t\t},\n\t\t\t\t\tlocalID\n\t\t\t\t});\n\t\t\t\tif (shorthand) selectorRule.declarations[localID] = {\n\t\t\t\t\tvalue: shorthand,\n\t\t\t\t\tdescription: token.token.$description\n\t\t\t\t};\n\t\t\t}\n\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") selectorAliasDeclarations[alias.localID] = {\n\t\t\t\tvalue: alias.value,\n\t\t\t\tdescription: token.token.$description\n\t\t\t};\n\t\t}\n\t\tfor (const [name, { value, description }] of Object.entries(selectorAliasDeclarations)) selectorRule.declarations[name] ??= {\n\t\t\tvalue,\n\t\t\tdescription\n\t\t};\n\t}\n\tif (utility && Object.keys(utility).length) rules.push(...generateUtilityCSS(utility, getTransforms({\n\t\tformat: FORMAT_ID,\n\t\tmode: \".\"\n\t})));\n\treturn printRules(rules);\n}\n\n//#endregion\n//#region src/index.ts\nfunction cssPlugin(options) {\n\tconst { exclude, variableName, modeSelectors, transform: customTransform, utility, legacyHex, skipBuild, baseScheme } = options ?? {};\n\tconst filename = options?.filename ?? options?.fileName ?? \"index.css\";\n\tconst baseSelector = options?.baseSelector ?? \":root\";\n\tfunction transformName(token) {\n\t\tconst customName = variableName?.(token);\n\t\tif (customName !== void 0) {\n\t\t\tif (typeof customName !== \"string\") throw new Error(`variableName() must return a string; received ${customName}`);\n\t\t\treturn customName;\n\t\t}\n\t\treturn makeCSSVar(token.id);\n\t}\n\tconst transformAlias = (token) => `var(${transformName(token)})`;\n\treturn {\n\t\tname: \"@terrazzo/plugin-css\",\n\t\tasync transform({ tokens, getTransforms, setTransform }) {\n\t\t\tif (getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: \"*\",\n\t\t\t\tmode: \"*\"\n\t\t\t}).length) return;\n\t\t\tfor (const [id, token] of Object.entries(tokens)) {\n\t\t\t\tconst localID = transformName(token);\n\t\t\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\t\t\tif (customTransform) {\n\t\t\t\t\t\tconst value = customTransform(token, mode);\n\t\t\t\t\t\tif (value !== void 0 && value !== null) {\n\t\t\t\t\t\t\tvalidateCustomTransform(value, { $type: token.$type });\n\t\t\t\t\t\t\tsetTransform(id, {\n\t\t\t\t\t\t\t\tformat: FORMAT_ID,\n\t\t\t\t\t\t\t\tlocalID,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\t\tmeta: { \"token-listing\": { name: localID } }\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst transformedValue = transformCSSValue(token, {\n\t\t\t\t\t\tmode,\n\t\t\t\t\t\ttokensSet: tokens,\n\t\t\t\t\t\ttransformAlias,\n\t\t\t\t\t\tcolor: { legacyHex }\n\t\t\t\t\t});\n\t\t\t\t\tif (transformedValue !== void 0) {\n\t\t\t\t\t\tlet listingName = localID;\n\t\t\t\t\t\tif (typeof transformedValue === \"object\" && generateShorthand({\n\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\tlocalID\n\t\t\t\t\t\t}) === void 0) listingName = void 0;\n\t\t\t\t\t\tsetTransform(id, {\n\t\t\t\t\t\t\tformat: FORMAT_ID,\n\t\t\t\t\t\t\tlocalID,\n\t\t\t\t\t\t\tvalue: transformedValue,\n\t\t\t\t\t\t\tmode,\n\t\t\t\t\t\t\tmeta: { \"token-listing\": { name: listingName } }\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync build({ getTransforms, outputFile }) {\n\t\t\tif (skipBuild === true) return;\n\t\t\tconst output = [FILE_PREFIX, \"\"];\n\t\t\toutput.push(buildFormat({\n\t\t\t\texclude,\n\t\t\t\tgetTransforms,\n\t\t\t\tmodeSelectors,\n\t\t\t\tutility,\n\t\t\t\tbaseSelector,\n\t\t\t\tbaseScheme\n\t\t\t}), \"\\n\");\n\t\t\toutputFile(filename, output.join(\"\\n\"));\n\t\t}\n\t};\n}\n\n//#endregion\nexport { FILE_PREFIX, FORMAT_ID, cssPlugin as default, printRules };\n//# sourceMappingURL=index.js.map","/**\n * Escapes a character if it has a special meaning in regular expressions\n * and returns the character as is if it doesn't\n */\nfunction escapeRegExpChar(char) {\n if (char === '-' ||\n char === '^' ||\n char === '$' ||\n char === '+' ||\n char === '.' ||\n char === '(' ||\n char === ')' ||\n char === '|' ||\n char === '[' ||\n char === ']' ||\n char === '{' ||\n char === '}' ||\n char === '*' ||\n char === '?' ||\n char === '\\\\') {\n return \"\\\\\".concat(char);\n }\n else {\n return char;\n }\n}\n/**\n * Escapes all characters in a given string that have a special meaning in regular expressions\n */\nfunction escapeRegExpString(str) {\n var result = '';\n for (var i = 0; i < str.length; i++) {\n result += escapeRegExpChar(str[i]);\n }\n return result;\n}\n/**\n * Transforms one or more glob patterns into a RegExp pattern\n */\nfunction transform(pattern, separator) {\n if (separator === void 0) { separator = true; }\n if (Array.isArray(pattern)) {\n var regExpPatterns = pattern.map(function (p) { return \"^\".concat(transform(p, separator), \"$\"); });\n return \"(?:\".concat(regExpPatterns.join('|'), \")\");\n }\n var separatorSplitter = '';\n var separatorMatcher = '';\n var wildcard = '.';\n if (separator === true) {\n separatorSplitter = '/';\n separatorMatcher = '[/\\\\\\\\]';\n wildcard = '[^/\\\\\\\\]';\n }\n else if (separator) {\n separatorSplitter = separator;\n separatorMatcher = escapeRegExpString(separatorSplitter);\n if (separatorMatcher.length > 1) {\n separatorMatcher = \"(?:\".concat(separatorMatcher, \")\");\n wildcard = \"((?!\".concat(separatorMatcher, \").)\");\n }\n else {\n wildcard = \"[^\".concat(separatorMatcher, \"]\");\n }\n }\n var requiredSeparator = separator ? \"\".concat(separatorMatcher, \"+?\") : '';\n var optionalSeparator = separator ? \"\".concat(separatorMatcher, \"*?\") : '';\n var segments = separator ? pattern.split(separatorSplitter) : [pattern];\n var result = '';\n for (var s = 0; s < segments.length; s++) {\n var segment = segments[s];\n var nextSegment = segments[s + 1];\n var currentSeparator = '';\n if (!segment && s > 0) {\n continue;\n }\n if (separator) {\n if (s === segments.length - 1) {\n currentSeparator = optionalSeparator;\n }\n else if (nextSegment !== '**') {\n currentSeparator = requiredSeparator;\n }\n else {\n currentSeparator = '';\n }\n }\n if (separator && segment === '**') {\n if (currentSeparator) {\n result +=\n s === 0\n ? ''\n : s === segments.length - 1\n ? \"(?:\".concat(requiredSeparator, \"|$)\")\n : requiredSeparator;\n result += \"(?:\".concat(wildcard, \"*?\").concat(currentSeparator, \")*?\");\n }\n continue;\n }\n for (var c = 0; c < segment.length; c++) {\n var char = segment[c];\n if (char === '\\\\') {\n if (c < segment.length - 1) {\n result += escapeRegExpChar(segment[c + 1]);\n c++;\n }\n }\n else if (char === '?') {\n result += wildcard;\n }\n else if (char === '*') {\n result += \"\".concat(wildcard, \"*?\");\n }\n else {\n result += escapeRegExpChar(char);\n }\n }\n result += currentSeparator;\n }\n return result;\n}\n\nfunction isMatch(regexp, sample) {\n if (typeof sample !== 'string') {\n throw new TypeError(\"Sample must be a string, but \".concat(typeof sample, \" given\"));\n }\n return regexp.test(sample);\n}\n/**\n * Compiles one or more glob patterns into a RegExp and returns an isMatch function.\n * The isMatch function takes a sample string as its only argument and returns `true`\n * if the string matches the pattern(s).\n *\n * ```js\n * wildcardMatch('src/*.js')('src/index.js') //=> true\n * ```\n *\n * ```js\n * const isMatch = wildcardMatch('*.example.com', '.')\n * isMatch('foo.example.com') //=> true\n * isMatch('foo.bar.com') //=> false\n * ```\n */\nfunction wildcardMatch(pattern, options) {\n if (typeof pattern !== 'string' && !Array.isArray(pattern)) {\n throw new TypeError(\"The first argument must be a single pattern string or an array of patterns, but \".concat(typeof pattern, \" given\"));\n }\n if (typeof options === 'string' || typeof options === 'boolean') {\n options = { separator: options };\n }\n if (arguments.length === 2 &&\n !(typeof options === 'undefined' ||\n (typeof options === 'object' && options !== null && !Array.isArray(options)))) {\n throw new TypeError(\"The second argument must be an options object or a string/boolean separator, but \".concat(typeof options, \" given\"));\n }\n options = options || {};\n if (options.separator === '\\\\') {\n throw new Error('\\\\ is not a valid separator because it is used for escaping. Try setting the separator to `true` instead');\n }\n var regexpPattern = transform(pattern, options.separator);\n var regexp = new RegExp(\"^\".concat(regexpPattern, \"$\"), options.flags);\n var fn = isMatch.bind(null, regexp);\n fn.options = options;\n fn.pattern = pattern;\n fn.regexp = regexp;\n return fn;\n}\n\nexport { wildcardMatch as default };\n//# sourceMappingURL=index.es.mjs.map\n","/**\n * @fileoverview Character codes.\n * @author Nicholas C. Zakas\n */\n\nconst CHAR_0 = 48; // 0\nconst CHAR_1 = 49; // 1\nconst CHAR_9 = 57; // 9\nconst CHAR_BACKSLASH = 92; // \\\nconst CHAR_DOLLAR = 36; // $\nconst CHAR_DOT = 46; // .\nconst CHAR_DOUBLE_QUOTE = 34; // \"\nconst CHAR_LOWER_A = 97; // a\nconst CHAR_LOWER_E = 101; // e\nconst CHAR_LOWER_F = 102; // f\nconst CHAR_LOWER_N = 110; // n\nconst CHAR_LOWER_T = 116; // t\nconst CHAR_LOWER_U = 117; // u\nconst CHAR_LOWER_X = 120; // x\nconst CHAR_LOWER_Z = 122; // z\nconst CHAR_MINUS = 45; // -\nconst CHAR_NEWLINE = 10; // newline\nconst CHAR_PLUS = 43; // +\nconst CHAR_RETURN = 13; // return\nconst CHAR_SINGLE_QUOTE = 39; // '\nconst CHAR_SLASH = 47; // /\nconst CHAR_SPACE = 32; // space\nconst CHAR_TAB = 9; // tab\nconst CHAR_UNDERSCORE = 95; // _\nconst CHAR_UPPER_A = 65; // A\nconst CHAR_UPPER_E = 69; // E\nconst CHAR_UPPER_F = 70; // F\nconst CHAR_UPPER_N = 78; // N\nconst CHAR_UPPER_X = 88; // X\nconst CHAR_UPPER_Z = 90; // Z\nconst CHAR_LOWER_B = 98; // b\nconst CHAR_LOWER_R = 114; // r\nconst CHAR_LOWER_V = 118; // v\nconst CHAR_LINE_SEPARATOR = 0x2028;\nconst CHAR_PARAGRAPH_SEPARATOR = 0x2029;\nconst CHAR_UPPER_I = 73; // I\nconst CHAR_STAR = 42; // *\nconst CHAR_VTAB = 11; // U+000B Vertical tab\nconst CHAR_FORM_FEED = 12; // U+000C Form feed\nconst CHAR_NBSP = 160; // U+00A0 Non-breaking space\nconst CHAR_BOM = 65279; // U+FEFF\nconst CHAR_NON_BREAKING_SPACE = 160;\nconst CHAR_EN_QUAD = 8192;\nconst CHAR_EM_QUAD = 8193;\nconst CHAR_EN_SPACE = 8194;\nconst CHAR_EM_SPACE = 8195;\nconst CHAR_THREE_PER_EM_SPACE = 8196;\nconst CHAR_FOUR_PER_EM_SPACE = 8197;\nconst CHAR_SIX_PER_EM_SPACE = 8198;\nconst CHAR_FIGURE_SPACE = 8199;\nconst CHAR_PUNCTUATION_SPACE = 8200;\nconst CHAR_THIN_SPACE = 8201;\nconst CHAR_HAIR_SPACE = 8202;\nconst CHAR_NARROW_NO_BREAK_SPACE = 8239;\nconst CHAR_MEDIUM_MATHEMATICAL_SPACE = 8287;\nconst CHAR_IDEOGRAPHIC_SPACE = 12288;\n\n/**\n * @fileoverview JSON syntax helpers\n * @author Nicholas C. Zakas\n */\n\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").TokenType} TokenType */\n\n//-----------------------------------------------------------------------------\n// Predefined Tokens\n//-----------------------------------------------------------------------------\n\nconst LBRACKET = \"[\";\nconst RBRACKET = \"]\";\nconst LBRACE = \"{\";\nconst RBRACE = \"}\";\nconst COLON = \":\";\nconst COMMA = \",\";\n\nconst TRUE = \"true\";\nconst FALSE = \"false\";\nconst NULL = \"null\";\nconst NAN$1 = \"NaN\";\nconst INFINITY$1 = \"Infinity\";\nconst QUOTE = \"\\\"\";\n\nconst escapeToChar = new Map([\n [CHAR_DOUBLE_QUOTE, QUOTE],\n [CHAR_BACKSLASH, \"\\\\\"],\n [CHAR_SLASH, \"/\"],\n [CHAR_LOWER_B, \"\\b\"],\n [CHAR_LOWER_N, \"\\n\"],\n [CHAR_LOWER_F, \"\\f\"],\n [CHAR_LOWER_R, \"\\r\"],\n [CHAR_LOWER_T, \"\\t\"]\n]);\n\nconst json5EscapeToChar = new Map([\n ...escapeToChar,\n [CHAR_LOWER_V, \"\\v\"],\n [CHAR_0, \"\\0\"]\n]);\n\nconst charToEscape = new Map([\n [QUOTE, QUOTE],\n [\"\\\\\", \"\\\\\"],\n [\"/\", \"/\"],\n [\"\\b\", \"b\"],\n [\"\\n\", \"n\"],\n [\"\\f\", \"f\"],\n [\"\\r\", \"r\"],\n [\"\\t\", \"t\"]\n]);\n\nconst json5CharToEscape = new Map([\n ...charToEscape,\n [\"\\v\", \"v\"],\n [\"\\0\", \"0\"],\n [\"\\u2028\", \"u2028\"],\n [\"\\u2029\", \"u2029\"]\n]);\n\n/** @type {Map<string,TokenType>} */\nconst knownTokenTypes = new Map([\n [LBRACKET, \"LBracket\"],\n [RBRACKET, \"RBracket\"],\n [LBRACE, \"LBrace\"],\n [RBRACE, \"RBrace\"],\n [COLON, \"Colon\"],\n [COMMA, \"Comma\"],\n [TRUE, \"Boolean\"],\n [FALSE, \"Boolean\"],\n [NULL, \"Null\"]\n]);\n\n/** @type {Map<string,TokenType>} */\nconst knownJSON5TokenTypes = new Map([\n ...knownTokenTypes,\n [NAN$1, \"Number\"],\n [INFINITY$1, \"Number\"]\n]);\n\n// JSON5\nconst json5LineTerminators = new Set([\n CHAR_NEWLINE,\n CHAR_RETURN,\n CHAR_LINE_SEPARATOR,\n CHAR_PARAGRAPH_SEPARATOR\n]);\n\n/**\n * @fileoverview JSON tokenization/parsing errors\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").Location} Location */\n/** @typedef {import(\"./typedefs.js\").Token} Token */\n\n//-----------------------------------------------------------------------------\n// Errors\n//-----------------------------------------------------------------------------\n\n/**\n * Base class that attaches location to an error.\n */\nclass ErrorWithLocation extends Error {\n\n /**\n * Creates a new instance.\n * @param {string} message The error message to report. \n * @param {Location} loc The location information for the error.\n */\n constructor(message, { line, column, offset }) {\n super(`${ message } (${ line }:${ column})`);\n\n /**\n * The line on which the error occurred.\n * @type {number}\n */\n this.line = line;\n\n /**\n * The column on which the error occurred.\n * @type {number}\n */\n this.column = column;\n \n /**\n * The index into the string where the error occurred.\n * @type {number}\n */\n this.offset = offset;\n }\n\n}\n\n/**\n * Error thrown when an unexpected character is found during tokenizing.\n */\nclass UnexpectedChar extends ErrorWithLocation {\n\n /**\n * Creates a new instance.\n * @param {number} unexpected The character that was found.\n * @param {Location} loc The location information for the found character.\n */\n constructor(unexpected, loc) {\n super(`Unexpected character '${ String.fromCharCode(unexpected) }' found.`, loc);\n }\n}\n\n/**\n * Error thrown when an unexpected identifier is found during tokenizing.\n */\nclass UnexpectedIdentifier extends ErrorWithLocation {\n\n /**\n * Creates a new instance.\n * @param {string} unexpected The character that was found.\n * @param {Location} loc The location information for the found character.\n */\n constructor(unexpected, loc) {\n super(`Unexpected identifier '${ unexpected }' found.`, loc);\n }\n}\n\n/**\n * Error thrown when an unexpected token is found during parsing.\n */\nclass UnexpectedToken extends ErrorWithLocation {\n\n /**\n * Creates a new instance.\n * @param {Token} token The token that was found. \n */\n constructor(token) {\n super(`Unexpected token ${ token.type } found.`, token.loc.start);\n }\n}\n\n/**\n * Error thrown when the end of input is found where it isn't expected.\n */\nclass UnexpectedEOF extends ErrorWithLocation {\n\n /**\n * Creates a new instance.\n * @param {Location} loc The location information for the found character.\n */\n constructor(loc) {\n super(\"Unexpected end of input found.\", loc);\n }\n}\n\n/*\n * The following is extracted from https://github.com/json5/json5/\n *\n * MIT License\n * \n * Copyright (c) 2012-2018 Aseem Kishore, and others.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nconst ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n// eslint-disable-next-line no-misleading-character-class\nconst ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n/**\n * @fileoverview A charactor code reader.\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Type Definitions\n//-----------------------------------------------------------------------------\n\n\n//-----------------------------------------------------------------------------\n// Data\n//-----------------------------------------------------------------------------\n\nconst CHAR_CR = 13; // \\r\nconst CHAR_LF = 10; // \\n\n\n//-----------------------------------------------------------------------------\n// CharCodeReader\n//-----------------------------------------------------------------------------\n\n/**\n * A reader that reads character codes from a string.\n */\nclass CharCodeReader {\n\n /**\n * The text to read from.\n * @type {string}\n */\n #text = \"\";\n\n /**\n * The current line number.\n * @type {number}\n */\n #line = 1;\n\n /**\n * The current column number.\n * @type {number}\n */\n #column = 0;\n\n /**\n * The current offset in the text.\n * @type {number}\n */\n #offset = -1;\n\n /**\n * Whether the last character read was a new line.\n * @type {boolean}\n */\n #newLine = false;\n\n /**\n * The last character code read.\n * @type {number}\n */\n #last = -1;\n\n /**\n * Whether the reader has ended.\n * @type {boolean}\n */\n #ended = false;\n\n /**\n * Creates a new instance.\n * @param {string} text The text to read from\n */\n constructor(text) {\n this.#text = text;\n }\n\n /**\n * Ends the reader.\n * @returns {void}\n */\n #end() {\n if (this.#ended) {\n return;\n }\n\n this.#column++;\n this.#offset++;\n this.#last = -1;\n this.#ended = true;\n }\n\n /**\n * Returns the current position of the reader.\n * @returns {Location} An object with line, column, and offset properties.\n */\n locate() {\n return {\n line: this.#line,\n column: this.#column,\n offset: this.#offset\n };\n }\n\n /**\n * Reads the next character code in the text.\n * @returns {number} The next character code, or -1 if there are no more characters.\n */\n next() {\n if (this.#offset >= this.#text.length - 1) {\n this.#end();\n return -1;\n }\n\n this.#offset++;\n const charCode = this.#text.charCodeAt(this.#offset);\n\n if (this.#newLine) {\n this.#line++;\n this.#column = 1;\n this.#newLine = false;\n } else {\n this.#column++;\n }\n\n if (charCode === CHAR_CR) {\n this.#newLine = true;\n\n // if we already see a \\r, just ignore upcoming \\n\n if (this.peek() === CHAR_LF) {\n this.#offset++;\n }\n } else if (charCode === CHAR_LF) {\n this.#newLine = true;\n }\n\n this.#last = charCode;\n\n return charCode;\n }\n\n /**\n * Peeks at the next character code in the text.\n * @returns {number} The next character code, or -1 if there are no more characters.\n */\n peek() {\n if (this.#offset === this.#text.length - 1) {\n return -1;\n }\n\n return this.#text.charCodeAt(this.#offset + 1);\n }\n\n /**\n * Determines if the next character code in the text matches a specific character code.\n * @param {(number) => boolean} fn A function to call on the next character.\n * @returns {boolean} True if the next character code matches, false if not.\n */ \n match(fn) {\n if (fn(this.peek())) {\n this.next();\n return true;\n }\n\n return false;\n }\n\n /**\n * Returns the last character code read.\n * @returns {number} The last character code read.\n */\n current() {\n return this.#last;\n }\n\n\n}\n\n/**\n * @fileoverview JSON tokenizer\n * @author Nicholas C. Zakas\n */\n\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").Range} Range */\n/** @typedef {import(\"./typedefs.js\").TokenizeOptions} TokenizeOptions */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\nconst INFINITY = \"Infinity\";\nconst NAN = \"NaN\";\n\nconst keywordStarts = new Set([CHAR_LOWER_T, CHAR_LOWER_F, CHAR_LOWER_N]);\nconst whitespace = new Set([CHAR_SPACE, CHAR_TAB, CHAR_NEWLINE, CHAR_RETURN]);\nconst json5Whitespace = new Set([\n ...whitespace,\n CHAR_VTAB,\n CHAR_FORM_FEED,\n CHAR_NBSP,\n CHAR_LINE_SEPARATOR,\n CHAR_PARAGRAPH_SEPARATOR,\n CHAR_BOM,\n CHAR_NON_BREAKING_SPACE,\n CHAR_EN_QUAD,\n CHAR_EM_QUAD,\n CHAR_EN_SPACE,\n CHAR_EM_SPACE,\n CHAR_THREE_PER_EM_SPACE,\n CHAR_FOUR_PER_EM_SPACE,\n CHAR_SIX_PER_EM_SPACE,\n CHAR_FIGURE_SPACE,\n CHAR_PUNCTUATION_SPACE,\n CHAR_THIN_SPACE,\n CHAR_HAIR_SPACE,\n CHAR_NARROW_NO_BREAK_SPACE,\n CHAR_MEDIUM_MATHEMATICAL_SPACE,\n CHAR_IDEOGRAPHIC_SPACE,\n]);\n\n\n/** @type {TokenizeOptions} */\nconst DEFAULT_OPTIONS$1 = {\n mode: \"json\",\n ranges: false\n};\n\nconst jsonKeywords = new Set([\"true\", \"false\", \"null\"]);\n\nconst tt = {\n EOF: 0,\n Number: 1,\n String: 2,\n Boolean: 3,\n Null: 4,\n NaN: 5,\n Infinity: 6,\n Identifier: 7,\n Colon: 20,\n LBrace: 21,\n RBrace: 22,\n LBracket: 23,\n RBracket: 24,\n Comma: 25,\n LineComment: 40,\n BlockComment: 41\n};\n\n\n// #region Helpers\n\n\n/**\n * Determines if a given character is a decimal digit.\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is a digit.\n */\nfunction isDigit(c) {\n return c >= CHAR_0 && c <= CHAR_9;\n}\n\n/**\n * Determines if a given character is a hexadecimal digit.\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is a hexadecimal digit.\n */\nfunction isHexDigit(c) {\n return isDigit(c) ||\n c >= CHAR_UPPER_A && c <= CHAR_UPPER_F ||\n c >= CHAR_LOWER_A && c <= CHAR_LOWER_F;\n}\n\n/**\n * Determines if a given character is a positive digit (1-9).\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is a positive digit.\n */\nfunction isPositiveDigit(c) {\n return c >= CHAR_1 && c <= CHAR_9;\n}\n\n/**\n * Determines if a given character is the start of a keyword.\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is the start of a keyword.\n */\nfunction isKeywordStart(c) {\n return keywordStarts.has(c);\n}\n\n/**\n * Determines if a given character is the start of a number.\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is the start of a number.\n */\nfunction isNumberStart(c) {\n return isDigit(c) || c === CHAR_DOT || c === CHAR_MINUS;\n}\n\n/**\n * Determines if a given character is the start of a JSON5 number.\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is the start of a JSON5 number.\n */\nfunction isJSON5NumberStart(c) {\n return isNumberStart(c) || c === CHAR_PLUS;\n}\n\n/**\n * Determines if a given character is the start of a string.\n * @param {number} c The character to check.\n * @param {boolean} json5 `true` if JSON5 mode is enabled.\n * @returns {boolean} `true` if the character is the start of a string.\n */\nfunction isStringStart(c, json5) {\n return c === CHAR_DOUBLE_QUOTE || (json5 && c === CHAR_SINGLE_QUOTE);\n}\n\n/**\n * Tests that a given character is a valid first character of a\n * JSON5 identifier\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is a valid first character. \n */\nfunction isJSON5IdentifierStart(c) {\n\n // test simple cases first\n\n if (c === CHAR_DOLLAR || c === CHAR_UNDERSCORE || c === CHAR_BACKSLASH) {\n return true;\n }\n\n if (c >= CHAR_LOWER_A && c <= CHAR_LOWER_Z || c >= CHAR_UPPER_A && c <= CHAR_UPPER_Z) {\n return true;\n }\n\n if (c === 0x200C || c === 0x200D) {\n return true;\n }\n \n const ct = String.fromCharCode(c);\n return ID_Start.test(ct);\n}\n\n/**\n * Tests that a given character is a valid part of a JSON5 identifier.\n * @param {number} c The character to check.\n * @returns {boolean} `true` if the character is a valid part of an identifier.\n */\nfunction isJSON5IdentifierPart(c) {\n\n // fast path for simple cases\n if (isJSON5IdentifierStart(c) || isDigit(c)) {\n return true;\n }\n\n const ct = String.fromCharCode(c);\n return ID_Continue.test(ct);\n}\n\n\n// #endregion\n\nclass Tokenizer {\n\n /**\n * Options for the tokenizer.\n * @type {TokenizeOptions}\n */\n #options;\n\n /**\n * The source text to tokenize.\n * @type {string}\n */\n #text;\n\n /**\n * The reader for the source text.\n * @type {CharCodeReader}\n */\n #reader;\n\n /**\n * Indicates if the tokenizer is in JSON5 mode.\n * @type {boolean}\n */\n #json5;\n\n /**\n * Indicates if comments are allowed.\n * @type {boolean}\n */\n #allowComments;\n\n /**\n * Indicates if ranges should be included in the tokens.\n * @type {boolean}\n */\n #ranges;\n\n /**\n * The last token type read.\n * @type {Token}\n */\n #token;\n\n /**\n * Determines if a character is an escaped character.\n * @type {(c:number) => boolean}\n */\n #isEscapedCharacter;\n\n /**\n * Determines if a character is a JSON5 line terminator.\n * @type {(c:number) => boolean}\n */\n #isJSON5LineTerminator;\n\n\n /**\n * Determines if a character is a JSON5 hex escape.\n * @type {(c:number) => boolean}\n */\n #isJSON5HexEscape;\n\n /**\n * Determines if a character is whitespace.\n * @type {(c:number) => boolean}\n */\n #isWhitespace;\n\n /**\n * Creates a new instance of the tokenizer.\n * @param {string} text The source text\n * @param {TokenizeOptions} [options] Options for the tokenizer.\n */ \n constructor(text, options) {\n this.#text = text;\n this.#options = {\n ...DEFAULT_OPTIONS$1,\n ...options\n };\n\n this.#reader = new CharCodeReader(text);\n this.#json5 = this.#options.mode === \"json5\";\n this.#allowComments = this.#options.mode !== \"json\";\n this.#ranges = this.#options.ranges;\n\n // TODO: Clean this up\n this.#isEscapedCharacter = this.#json5 ? json5EscapeToChar.has.bind(json5EscapeToChar) : escapeToChar.has.bind(escapeToChar);\n this.#isJSON5LineTerminator = this.#json5 ? json5LineTerminators.has.bind(json5LineTerminators) : () => false;\n this.#isJSON5HexEscape = this.#json5 ? c => c === CHAR_LOWER_X : () => false;\n this.#isWhitespace = this.#json5 ? json5Whitespace.has.bind(json5Whitespace) : whitespace.has.bind(whitespace);\n }\n\n // #region Errors\n\n /**\n * Convenience function for throwing unexpected character errors.\n * @param {number} c The unexpected character.\n * @param {Location} [loc] The location of the unexpected character.\n * @returns {never}\n * @throws {UnexpectedChar} always.\n */\n #unexpected(c, loc = this.#reader.locate()) {\n throw new UnexpectedChar(c, loc);\n }\n\n /**\n * Convenience function for throwing unexpected identifier errors.\n * @param {string} identifier The unexpected identifier.\n * @param {Location} [loc] The location of the unexpected identifier.\n * @returns {never}\n * @throws {UnexpectedIdentifier} always.\n */\n #unexpectedIdentifier(identifier, loc = this.#reader.locate()) {\n throw new UnexpectedIdentifier(identifier, loc);\n }\n\n /**\n * Convenience function for throwing unexpected EOF errors.\n * @returns {never}\n * @throws {UnexpectedEOF} always.\n */\n #unexpectedEOF() {\n throw new UnexpectedEOF(this.#reader.locate());\n }\n\n // #endregion\n\n // #region Helpers\n\n /**\n * Creates a new token.\n * @param {TokenType} tokenType The type of token to create.\n * @param {number} length The length of the token.\n * @param {Location} startLoc The start location for the token.\n * @param {Location} [endLoc] The end location for the token.\n * @returns {Token} The token.\n */\n #createToken(tokenType, length, startLoc, endLoc) {\n\n const endOffset = startLoc.offset + length;\n\n let range = this.#options.ranges ? {\n range: /** @type {Range} */ ([startLoc.offset, endOffset])\n } : undefined;\n\n return {\n type: tokenType,\n loc: {\n start: startLoc,\n end: endLoc || {\n line: startLoc.line,\n column: startLoc.column + length,\n offset: endOffset\n }\n },\n ...range\n }; \n }\n\n /**\n * Reads in a specific number of hex digits.\n * @param {number} count The number of hex digits to read.\n * @returns {string} The hex digits read.\n */\n #readHexDigits(count) {\n let value = \"\";\n let c;\n\n for (let i = 0; i < count; i++) {\n c = this.#reader.peek();\n if (isHexDigit(c)) {\n this.#reader.next();\n value += String.fromCharCode(c);\n continue;\n }\n\n this.#unexpected(c);\n }\n\n return value;\n }\n\n /**\n * Reads in a JSON5 identifier. Also used for JSON but we validate\n * the identifier later.\n * @param {number} c The first character of the identifier.\n * @returns {string} The identifier read.\n * @throws {UnexpectedChar} when the identifier cannot be read.\n */\n #readIdentifier(c) {\n let value = \"\";\n\n do {\n\n value += String.fromCharCode(c);\n\n if (c === CHAR_BACKSLASH) {\n\n c = this.#reader.next();\n\n if (c !== CHAR_LOWER_U) {\n this.#unexpected(c);\n }\n\n value += String.fromCharCode(c);\n\n const hexDigits = this.#readHexDigits(4);\n\n // check for a valid character code\n const charCode = parseInt(hexDigits, 16);\n\n if (value.length === 2 && !isJSON5IdentifierStart(charCode)) {\n const loc = this.#reader.locate();\n this.#unexpected(CHAR_BACKSLASH, { line: loc.line, column: loc.column - 5, offset: loc.offset - 5 });\n } else if (!isJSON5IdentifierPart(charCode)) {\n const loc = this.#reader.locate();\n this.#unexpected(charCode, { line: loc.line, column: loc.column - 5, offset: loc.offset - 5 });\n }\n\n value += hexDigits;\n }\n\n c = this.#reader.peek();\n\n if (!isJSON5IdentifierPart(c)) {\n break;\n }\n\n this.#reader.next();\n\n } while (true); // eslint-disable-line no-constant-condition\n\n return value;\n }\n\n /**\n * Reads in a string. Works for both JSON and JSON5.\n * @param {number} c The first character of the string (either \" or ').\n * @returns {number} The length of the string.\n * @throws {UnexpectedChar} when the string cannot be read.\n * @throws {UnexpectedEOF} when EOF is reached before the string is finalized.\n */\n #readString(c) {\n \n const delimiter = c;\n let length = 1;\n c = this.#reader.peek();\n\n while (c !== -1 && c !== delimiter) {\n\n this.#reader.next();\n length++;\n\n // escapes\n if (c === CHAR_BACKSLASH) {\n c = this.#reader.peek();\n\n if (this.#isEscapedCharacter(c) || this.#isJSON5LineTerminator(c)) {\n this.#reader.next();\n length++;\n } else if (c === CHAR_LOWER_U) {\n this.#reader.next();\n length++;\n\n const result = this.#readHexDigits(4);\n length += result.length;\n } else if (this.#isJSON5HexEscape(c)) {\n this.#reader.next();\n length++;\n\n // hex escapes: \\xHH\n const result = this.#readHexDigits(2);\n length += result.length;\n } else if (this.#json5) { // JSON doesn't allow anything else\n this.#reader.next();\n length++;\n } else {\n this.#unexpected(c);\n }\n }\n\n c = this.#reader.peek();\n }\n\n if (c === -1) {\n this.#reader.next();\n this.#unexpectedEOF();\n }\n\n // c is the delimiter\n this.#reader.next();\n length++;\n\n return length;\n \n \n }\n\n /**\n * Reads a number. Works for both JSON and JSON5.\n * @param {number} c The first character of the number.\n * @returns {number} The length of the number.\n * @throws {UnexpectedChar} when the number cannot be read.\n * @throws {UnexpectedEOF} when EOF is reached before the number is finalized.\n */\n #readNumber(c) {\n \n // we've already read the first character\n let length = 1;\n\n // JSON number may start with a minus but not a plus\n // JSON5 allows a plus.\n if (c === CHAR_MINUS || this.#json5 && c === CHAR_PLUS) {\n \n c = this.#reader.peek();\n \n /*\n * JSON5 allows Infinity or NaN preceded by a sign.\n * This blocks handles +Infinity, -Infinity, +NaN, and -NaN.\n * Standalone Infinity and NaN are handled in `readJSON5Identifier()`\n */\n if (this.#json5) {\n\n if (c === CHAR_UPPER_I || c === CHAR_UPPER_N) {\n this.#reader.next();\n const identifier = this.#readIdentifier(c);\n\n if (identifier !== INFINITY && identifier !== NAN) {\n this.#unexpected(c);\n }\n\n return length + identifier.length;\n }\n }\n\n // Next digit cannot be zero\n if (!isDigit(c)) {\n this.#unexpected(c);\n }\n\n // if we made it here, we need to continue on, so register the character\n this.#reader.next();\n length++;\n }\n\n /*\n * In JSON, a zero must be followed by a decimal point or nothing.\n * In JSON5, a zero can additionally be followed by an `x` indicating\n * that it's a hexadecimal number.\n */\n if (c === CHAR_0) {\n\n // c = this.#reader.next();\n // length++;\n c = this.#reader.peek();\n\n // check for a hex number\n if (this.#json5 && (c === CHAR_LOWER_X || c === CHAR_UPPER_X)) {\n\n this.#reader.next();\n length++;\n\n c = this.#reader.peek();\n\n if (!isHexDigit(c)) {\n this.#reader.next();\n this.#unexpected(c);\n }\n\n do {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n } while (isHexDigit(c));\n\n } else if (isDigit(c)) {\n this.#unexpected(c);\n }\n\n } else {\n\n // JSON5 allows leading decimal points\n if (!this.#json5 || c !== CHAR_DOT) {\n if (!isPositiveDigit(c)) {\n this.#unexpected(c);\n }\n\n c = this.#reader.peek();\n\n while (isDigit(c)) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n }\n }\n }\n\n /*\n * In JSON, a decimal point must be followed by at least one digit.\n * In JSON5, a decimal point need not be followed by any digits.\n */\n if (c === CHAR_DOT) {\n \n let digitCount = -1;\n this.#reader.next();\n length++;\n digitCount++;\n\n c = this.#reader.peek();\n\n while (isDigit(c)) {\n this.#reader.next();\n length++;\n digitCount++;\n c = this.#reader.peek();\n }\n\n if (!this.#json5 && digitCount === 0) {\n this.#reader.next();\n if (c) {\n this.#unexpected(c);\n } else {\n this.#unexpectedEOF();\n }\n }\n }\n\n // Exponent is always last\n if (c === CHAR_LOWER_E || c === CHAR_UPPER_E) {\n\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n\n if (c === CHAR_PLUS || c === CHAR_MINUS) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n }\n\n /*\n * Must always have a digit in this position to avoid:\n * 5e\n * 12E+\n * 42e-\n */\n if (c === -1) {\n this.#reader.next();\n this.#unexpectedEOF();\n }\n\n if (!isDigit(c)) {\n this.#reader.next();\n this.#unexpected(c);\n }\n\n while (isDigit(c)) {\n this.#reader.next();\n length++;\n c = this.#reader.peek();\n }\n }\n\n return length;\n }\n\n /**\n * Reads a comment. Works for both JSON and JSON5.\n * @param {number} c The first character of the comment.\n * @returns {{length: number, multiline: boolean}} The length of the comment, and whether the comment is multi-line.\n * @throws {UnexpectedChar} when the comment cannot be read.\n * @throws {UnexpectedEOF} when EOF is reached before the comment is finalized.\n */ \n #readComment(c) {\n \n let length = 1;\n\n // next character determines single- or multi-line\n c = this.#reader.peek();\n\n // single-line comments\n if (c === CHAR_SLASH) {\n \n do {\n this.#reader.next();\n length += 1;\n c = this.#reader.peek();\n } while (c > -1 && c !== CHAR_RETURN && c !== CHAR_NEWLINE);\n\n return { length, multiline: false };\n }\n\n // multi-line comments\n if (c === CHAR_STAR) {\n\n this.#reader.next();\n length += 1;\n\n while (c > -1) {\n c = this.#reader.peek();\n\n // check for end of comment\n if (c === CHAR_STAR) {\n this.#reader.next();\n length += 1;\n c = this.#reader.peek();\n \n //end of comment\n if (c === CHAR_SLASH) {\n this.#reader.next();\n length += 1;\n\n return { length, multiline: true };\n }\n } else {\n this.#reader.next();\n length += 1;\n }\n }\n\n this.#reader.next();\n this.#unexpectedEOF();\n \n }\n\n // if we've made it here, there's an invalid character\n this.#reader.next();\n this.#unexpected(c); \n }\n // #endregion\n\n /**\n * Returns the next token in the source text.\n * @returns {number} The code for the next token.\n */\n next() {\n\n let c = this.#reader.next();\n\n while (this.#isWhitespace(c)) {\n c = this.#reader.next();\n }\n\n if (c === -1) {\n return tt.EOF;\n }\n\n const start = this.#reader.locate();\n const ct = String.fromCharCode(c);\n\n // check for JSON5 syntax only\n if (this.#json5) {\n \n if (knownJSON5TokenTypes.has(ct)) {\n this.#token = this.#createToken(knownJSON5TokenTypes.get(ct), 1, start);\n } else if (isJSON5IdentifierStart(c)) {\n const value = this.#readIdentifier(c);\n\n if (knownJSON5TokenTypes.has(value)) {\n this.#token = this.#createToken(knownJSON5TokenTypes.get(value), value.length, start);\n } else {\n this.#token = this.#createToken(\"Identifier\", value.length, start);\n }\n } else if (isJSON5NumberStart(c)) {\n const result = this.#readNumber(c);\n this.#token = this.#createToken(\"Number\", result, start);\n } else if (isStringStart(c, this.#json5)) {\n const result = this.#readString(c);\n const lastCharLoc = this.#reader.locate();\n this.#token = this.#createToken(\"String\", result, start, {\n line: lastCharLoc.line,\n column: lastCharLoc.column + 1,\n offset: lastCharLoc.offset + 1\n });\n } else if (c === CHAR_SLASH && this.#allowComments) {\n const result = this.#readComment(c);\n const lastCharLoc = this.#reader.locate();\n this.#token = this.#createToken(!result.multiline ? \"LineComment\" : \"BlockComment\", result.length, start, {\n line: lastCharLoc.line,\n column: lastCharLoc.column + 1,\n offset: lastCharLoc.offset + 1\n });\n } else {\n this.#unexpected(c);\n }\n\n } else {\n\n // check for JSON/JSONC syntax only\n if (knownTokenTypes.has(ct)) {\n this.#token = this.#createToken(knownTokenTypes.get(ct), 1, start);\n } else if (isKeywordStart(c)) {\n const value = this.#readIdentifier(c);\n\n if (!jsonKeywords.has(value)) {\n this.#unexpectedIdentifier(value, start);\n }\n\n this.#token = this.#createToken(knownTokenTypes.get(value), value.length, start);\n } else if (isNumberStart(c)) {\n const result = this.#readNumber(c);\n this.#token = this.#createToken(\"Number\", result, start);\n } else if (isStringStart(c, this.#json5)) {\n const result = this.#readString(c);\n this.#token = this.#createToken(\"String\", result, start);\n } else if (c === CHAR_SLASH && this.#allowComments) {\n const result = this.#readComment(c);\n const lastCharLoc = this.#reader.locate();\n this.#token = this.#createToken(!result.multiline ? \"LineComment\" : \"BlockComment\", result.length, start, {\n line: lastCharLoc.line,\n column: lastCharLoc.column + 1,\n offset: lastCharLoc.offset + 1\n });\n } else {\n this.#unexpected(c);\n }\n }\n return tt[this.#token.type];\n }\n\n /**\n * Returns the current token in the source text.\n * @returns {Token} The current token.\n */\n get token() {\n return this.#token;\n }\n}\n\n//-----------------------------------------------------------------------------\n// Main\n//-----------------------------------------------------------------------------\n\n/**\n * Creates an iterator over the tokens representing the source text.\n * @param {string} text The source text to tokenize.\n * @param {TokenizeOptions} [options] Options for doing the tokenization.\n * @returns {Array<Token>} An iterator over the tokens. \n */\nfunction tokenize(text, options) {\n\n const tokenizer = new Tokenizer(text, options);\n const tokens = [];\n\n while (tokenizer.next() !== tt.EOF) {\n tokens.push(tokenizer.token);\n }\n\n return tokens;\n\n}\n\n/**\n * @fileoverview JSON AST types\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").LocationRange} LocationRange */\n/** @typedef {import(\"./typedefs.js\").NodeParts} NodeParts */\n/** @typedef {import(\"./typedefs.js\").DocumentNode} DocumentNode */\n/** @typedef {import(\"./typedefs.js\").StringNode} StringNode */\n/** @typedef {import(\"./typedefs.js\").NumberNode} NumberNode */\n/** @typedef {import(\"./typedefs.js\").BooleanNode} BooleanNode */\n/** @typedef {import(\"./typedefs.js\").MemberNode} MemberNode */\n/** @typedef {import(\"./typedefs.js\").ObjectNode} ObjectNode */\n/** @typedef {import(\"./typedefs.js\").ElementNode} ElementNode */\n/** @typedef {import(\"./typedefs.js\").ArrayNode} ArrayNode */\n/** @typedef {import(\"./typedefs.js\").NullNode} NullNode */\n/** @typedef {import(\"./typedefs.js\").ValueNode} ValueNode */\n/** @typedef {import(\"./typedefs.js\").IdentifierNode} IdentifierNode */\n/** @typedef {import(\"./typedefs.js\").NaNNode} NaNNode */\n/** @typedef {import(\"./typedefs.js\").InfinityNode} InfinityNode */\n/** @typedef {import(\"./typedefs.js\").Sign} Sign */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nconst types = {\n\n /**\n * Creates a document node.\n * @param {ValueNode} body The body of the document.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {DocumentNode} The document node.\n */\n document(body, parts = {}) {\n return {\n type: \"Document\",\n body,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates a string node.\n * @param {string} value The value for the string.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {StringNode} The string node.\n */\n string(value, parts = {}) {\n return {\n type: \"String\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates a number node.\n * @param {number} value The value for the number.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {NumberNode} The number node.\n */\n number(value, parts = {}) {\n return {\n type: \"Number\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates a boolean node.\n * @param {boolean} value The value for the boolean.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {BooleanNode} The boolean node.\n */\n boolean(value, parts = {}) {\n return {\n type: \"Boolean\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates a null node.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {NullNode} The null node.\n */\n null(parts = {}) {\n return {\n type: \"Null\",\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates an array node.\n * @param {Array<ElementNode>} elements The elements to add.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {ArrayNode} The array node.\n */\n array(elements, parts = {}) {\n return {\n type: \"Array\",\n elements,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates an element node.\n * @param {ValueNode} value The value for the element.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {ElementNode} The element node.\n */\n element(value, parts = {}) {\n return {\n type: \"Element\",\n value,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates an object node.\n * @param {Array<MemberNode>} members The members to add.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {ObjectNode} The object node.\n */\n object(members, parts = {}) {\n return {\n type: \"Object\",\n members,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates a member node.\n * @param {StringNode|IdentifierNode} name The name for the member.\n * @param {ValueNode} value The value for the member.\n * @param {NodeParts} parts Additional properties for the node. \n * @returns {MemberNode} The member node.\n */\n member(name, value, parts = {}) {\n return {\n type: \"Member\",\n name,\n value,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates an identifier node.\n * @param {string} name The name for the identifier.\n * @param {NodeParts} parts Additional properties for the node.\n * @returns {IdentifierNode} The identifier node.\n */\n identifier(name, parts = {}) {\n return {\n type: \"Identifier\",\n name,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates a NaN node.\n * @param {Sign} sign The sign for the Infinity.\n * @param {NodeParts} parts Additional properties for the node.\n * @returns {NaNNode} The NaN node.\n */ \n nan(sign = \"\", parts = {}) {\n return {\n type: \"NaN\",\n sign,\n loc: parts.loc,\n ...parts\n };\n },\n\n /**\n * Creates an Infinity node.\n * @param {Sign} sign The sign for the Infinity.\n * @param {NodeParts} parts Additional properties for the node.\n * @returns {InfinityNode} The Infinity node.\n */\n infinity(sign = \"\", parts = {}) {\n return {\n type: \"Infinity\",\n sign,\n loc: parts.loc,\n ...parts\n };\n },\n\n};\n\n/**\n * @fileoverview JSON parser\n * @author Nicholas C. Zakas\n */\n\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").Node} Node */\n/** @typedef {import(\"./typedefs.js\").Mode} Mode */\n/** @typedef {import(\"./typedefs.js\").ParseOptions} ParseOptions */\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/** @type {ParseOptions} */\nconst DEFAULT_OPTIONS = {\n mode: \"json\",\n ranges: false,\n tokens: false,\n allowTrailingCommas: false\n};\n\nconst UNICODE_SEQUENCE = /\\\\u[\\da-fA-F]{4}/gu;\n\n/**\n * Normalizes a JSON5 identifier by converting Unicode escape sequences into\n * their corresponding characters.\n * @param {string} identifier The identifier to normalize.\n * @returns {string} The normalized identifier.\n */\nfunction normalizeIdentifier(identifier) {\n return identifier.replace(UNICODE_SEQUENCE, unicodeEscape => {\n return String.fromCharCode(parseInt(unicodeEscape.slice(2), 16));\n });\n}\n\n/**\n * Calculates the location at the end of the given text.\n * @param {string} text The text to calculate the end location for.\n * @returns {Location} The location at the end of the text.\n */\nfunction getEndLocation(text) {\n let line = 1;\n let column = 1;\n \n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n if (char === \"\\n\") {\n line++;\n column = 1;\n } else if (char === \"\\r\") {\n // Handle \\r\\n as a single line ending\n if (text[i + 1] === \"\\n\") {\n i++; // Skip the \\n\n }\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n \n return {\n line,\n column,\n offset: text.length\n };\n}\n\n/**\n * Converts a JSON-encoded string into a JavaScript string, interpreting each\n * escape sequence.\n * @param {string} value The text for the token.\n * @param {Token} token The string token to convert into a JavaScript string.\n * @param {boolean} json5 `true` if parsing JSON5, `false` otherwise.\n * @returns {string} A JavaScript string.\n */\nfunction getStringValue(value, token, json5 = false) {\n \n let result = \"\";\n let escapeIndex = value.indexOf(\"\\\\\");\n let lastIndex = 0;\n\n // While there are escapes, interpret them to build up the result\n while (escapeIndex >= 0) {\n\n // append the text that happened before the escape\n result += value.slice(lastIndex, escapeIndex);\n\n // get the character immediately after the \\\n const escapeChar = value.charAt(escapeIndex + 1);\n const escapeCharCode = escapeChar.charCodeAt(0);\n \n // check for the non-Unicode escape sequences first\n if (json5 && json5EscapeToChar.has(escapeCharCode)) {\n result += json5EscapeToChar.get(escapeCharCode);\n lastIndex = escapeIndex + 2;\n } else if (escapeToChar.has(escapeCharCode)) {\n result += escapeToChar.get(escapeCharCode);\n lastIndex = escapeIndex + 2;\n } else if (escapeChar === \"u\") {\n const hexCode = value.slice(escapeIndex + 2, escapeIndex + 6);\n if (hexCode.length < 4 || /[^0-9a-f]/i.test(hexCode)) {\n throw new ErrorWithLocation(\n `Invalid unicode escape \\\\u${ hexCode}.`,\n {\n line: token.loc.start.line,\n column: token.loc.start.column + escapeIndex,\n offset: token.loc.start.offset + escapeIndex\n }\n );\n }\n\n result += String.fromCharCode(parseInt(hexCode, 16));\n lastIndex = escapeIndex + 6;\n } else if (json5 && escapeChar === \"x\") {\n const hexCode = value.slice(escapeIndex + 2, escapeIndex + 4);\n if (hexCode.length < 2 || /[^0-9a-f]/i.test(hexCode)) {\n throw new ErrorWithLocation(\n `Invalid hex escape \\\\x${ hexCode}.`,\n {\n line: token.loc.start.line,\n column: token.loc.start.column + escapeIndex,\n offset: token.loc.start.offset + escapeIndex\n }\n );\n }\n\n result += String.fromCharCode(parseInt(hexCode, 16));\n lastIndex = escapeIndex + 4;\n } else if (json5 && json5LineTerminators.has(escapeCharCode)) {\n lastIndex = escapeIndex + 2;\n\n // we also need to skip \\n after a \\r\n if (escapeChar === \"\\r\" && value.charAt(lastIndex) === \"\\n\") {\n lastIndex++;\n }\n \n } else {\n // all characters can be escaped in JSON5\n if (json5) {\n result += escapeChar;\n lastIndex = escapeIndex + 2;\n } else {\n throw new ErrorWithLocation(\n `Invalid escape \\\\${ escapeChar }.`,\n {\n line: token.loc.start.line,\n column: token.loc.start.column + escapeIndex,\n offset: token.loc.start.offset + escapeIndex\n }\n );\n }\n }\n\n // find the next escape sequence\n escapeIndex = value.indexOf(\"\\\\\", lastIndex);\n }\n\n // get the last segment of the string value\n result += value.slice(lastIndex);\n\n return result;\n}\n\n/**\n * Gets the JavaScript value represented by a JSON token.\n * @param {string} value The text value of the token.\n * @param {Token} token The JSON token to get a value for.\n * @param {boolean} json5 `true` if parsing JSON5, `false` otherwise.\n * @returns {string|boolean|number} A number, string, or boolean.\n * @throws {TypeError} If an unknown token type is found. \n */\nfunction getLiteralValue(value, token, json5 = false) {\n switch (token.type) {\n case \"Boolean\":\n return value === \"true\";\n \n case \"Number\":\n if (json5) {\n\n /*\n * Numbers like -0x1 are converted to NaN by Number(), so we need\n * to handle them separately. Rather than checking for -0x, we can\n * just check if the first character is a minus sign. The same for\n * checking for +0x.\n */\n\n if (value.charCodeAt(0) === 45) { // 45 is the char code for '-'\n return -Number(value.slice(1));\n }\n\n if (value.charCodeAt(0) === 43) { // 43 is the char code for '+'\n return Number(value.slice(1));\n }\n }\n return Number(value);\n\n case \"String\":\n return getStringValue(value.slice(1, -1), token, json5);\n\n default:\n throw new TypeError(`Unknown token type \"${token.type}.`);\n }\n}\n\n//-----------------------------------------------------------------------------\n// Main Function\n//-----------------------------------------------------------------------------\n\n/**\n * \n * @param {string} text The text to parse.\n * @param {ParseOptions} [options] The options object.\n * @returns {DocumentNode} The AST representing the parsed JSON.\n * @throws {Error} When there is a parsing error. \n */\nfunction parse(text, options) {\n\n options = Object.freeze({\n ...DEFAULT_OPTIONS,\n ...options\n });\n\n const tokens = [];\n const tokenizer = new Tokenizer(text, {\n mode: options.mode,\n ranges: options.ranges\n });\n\n const json5 = options.mode === \"json5\";\n const allowTrailingCommas = options.allowTrailingCommas || json5;\n\n /**\n * Returns the next token knowing there are no comments.\n * @returns {number} The next token type or 0 if no next token.\n */\n function nextNoComments() {\n const nextType = tokenizer.next();\n\n if (nextType && options.tokens) {\n tokens.push(tokenizer.token);\n }\n return nextType;\n }\n \n /**\n * Returns the next token knowing there are comments to skip.\n * @returns {number} The next token type or 0 if no next token.\n */\n function nextSkipComments() {\n const nextType = tokenizer.next();\n if (nextType && options.tokens) {\n tokens.push(tokenizer.token);\n }\n\n if (nextType >= tt.LineComment) {\n return nextSkipComments();\n }\n\n return nextType;\n\n }\n\n // determine correct way to evaluate tokens based on presence of comments\n const next = options.mode === \"json\" ? nextNoComments : nextSkipComments;\n\n /**\n * Asserts a token has the given type.\n * @param {number} token The token to check.\n * @param {number} type The token type.\n * @throws {UnexpectedToken} If the token type isn't expected.\n * @returns {void}\n */\n function assertTokenType(token, type) {\n if (token !== type) {\n throw new UnexpectedToken(tokenizer.token);\n }\n }\n\n /**\n * Asserts a token has one of the given types.\n * @param {number} token The token to check.\n * @param {number[]} types The token types.\n * @returns {void}\n * @throws {UnexpectedToken} If the token type isn't expected.\n */ \n function assertTokenTypes(token, types) {\n if (!types.includes(token)) {\n throw new UnexpectedToken(tokenizer.token);\n }\n }\n\n /**\n * Creates a range only if ranges are specified.\n * @param {Location} start The start offset for the range.\n * @param {Location} end The end offset for the range.\n * @returns {{range:[number,number]}|undefined} An object with a \n */\n function createRange(start, end) {\n // @ts-ignore tsc incorrect - options might be undefined\n return options.ranges ? {\n range: [start.offset, end.offset]\n } : undefined;\n }\n\n /**\n * Creates a node for a string, boolean, or number.\n * @param {number} tokenType The token representing the literal. \n * @returns {StringNode|NumberNode|BooleanNode} The node representing\n * the value.\n */\n function createLiteralNode(tokenType) {\n const token = tokenizer.token;\n const range = createRange(token.loc.start, token.loc.end);\n const value = getLiteralValue(\n text.slice(token.loc.start.offset, token.loc.end.offset),\n token,\n json5\n );\n const loc = {\n start: {\n ...token.loc.start\n },\n end: {\n ...token.loc.end\n }\n };\n const parts = { loc, ...range };\n\n switch (tokenType) {\n case tt.String:\n return types.string(/** @type {string} */ (value), parts);\n\n case tt.Number:\n return types.number(/** @type {number} */ (value), parts);\n \n case tt.Boolean:\n return types.boolean(/** @type {boolean} */ (value), parts);\n\n default:\n throw new TypeError(`Unknown token type ${token.type}.`);\n }\n }\n\n /**\n * Creates a node for a JSON5 identifier.\n * @param {Token} token The token representing the identifer. \n * @returns {NaNNode|InfinityNode|IdentifierNode} The node representing\n * the value.\n */\n function createJSON5IdentifierNode(token) {\n const range = createRange(token.loc.start, token.loc.end);\n const identifier = text.slice(token.loc.start.offset, token.loc.end.offset);\n const loc = {\n start: {\n ...token.loc.start\n },\n end: {\n ...token.loc.end\n }\n };\n const parts = { loc, ...range };\n\n // Check for NaN or Infinity\n if (token.type !== \"Identifier\") {\n\n let sign = \"\";\n\n // check if the first character in the token is a plus or minus\n if (identifier[0] === \"+\" || identifier[0] === \"-\") {\n sign = identifier[0];\n }\n\n // check if the token is NaN or Infinity\n return types[identifier.includes(\"NaN\") ? \"nan\" : \"infinity\"](/** @type {Sign} */ (sign), parts);\n }\n return types.identifier(normalizeIdentifier(identifier), parts);\n }\n\n /**\n * Creates a node for a null.\n * @param {Token} token The token representing null. \n * @returns {NullNode} The node representing null.\n */\n function createNullNode(token) {\n const range = createRange(token.loc.start, token.loc.end);\n\n return types.null({\n loc: {\n start: {\n ...token.loc.start\n },\n end: {\n ...token.loc.end\n }\n },\n ...range\n });\n }\n\n\n /**\n * Parses a property in an object.\n * @param {number} tokenType The token representing the property.\n * @returns {MemberNode} The node representing the property.\n * @throws {UnexpectedToken} When an unexpected token is found.\n * @throws {UnexpectedEOF} When the end of the file is reached.\n */\n function parseProperty(tokenType) {\n\n if (json5) {\n assertTokenTypes(tokenType, [tt.String, tt.Identifier, tt.Number]);\n } else {\n assertTokenType(tokenType, tt.String);\n }\n\n const token = tokenizer.token;\n\n // check for -NaN, +NaN, -Infinity, +Infinity, and any number\n if (json5 && tokenType === tt.Number && /[+\\-0-9]/.test(text[token.loc.start.offset])) {\n throw new UnexpectedToken(token);\n }\n\n // TODO: Clean this up a bit\n let key = tokenType === tt.String\n ? /** @type {StringNode} */ (createLiteralNode(tokenType))\n : /** @type {IdentifierNode|NaNNode|InfinityNode} */ (createJSON5IdentifierNode(token));\n\n // in JSON5, need to check for NaN and Infinity and create identifier nodes\n if (json5 && (key.type === \"NaN\" || key.type === \"Infinity\")) {\n\n // NaN and Infinity cannot be signed and be a property key\n if (key.sign !== \"\") {\n throw new UnexpectedToken(tokenizer.token);\n }\n\n key = types.identifier(key.type, { loc: key.loc, ...createRange(key.loc.start, key.loc.end) });\n }\n\n tokenType = next();\n assertTokenType(tokenType, tt.Colon);\n const value = parseValue();\n const range = createRange(key.loc.start, value.loc.end);\n\n return types.member(\n /** @type {StringNode|IdentifierNode} */ (key),\n /** @type {ValueNode} */ (value),\n {\n loc: {\n start: {\n ...key.loc.start\n },\n end: {\n ...value.loc.end\n }\n },\n ...range\n }\n );\n }\n\n /**\n * Parses an object literal.\n * @param {number} firstTokenType The first token type in the object.\n * @returns {ObjectNode} The object node.\n * @throws {UnexpectedEOF} When the end of the file is reached.\n * @throws {UnexpectedToken} When an unexpected token is found.\n */\n function parseObject(firstTokenType) {\n\n // The first token must be a { or else it's an error\n assertTokenType(firstTokenType, tt.LBrace);\n\n const firstToken = tokenizer.token;\n const members = [];\n let tokenType = next();\n\n if (tokenType !== tt.RBrace) {\n do {\n \n // add the value into the array\n members.push(parseProperty(tokenType));\n \n tokenType = next();\n\n if (!tokenType) {\n throw new UnexpectedEOF(members[members.length-1].loc.end);\n }\n \n if (tokenType === tt.Comma) {\n tokenType = next();\n\n /*\n * Trailing commas.\n * So we need to check if the token is a comma,\n * and if so, then we need to check if the next\n * token is a RBrace. If it is, then we need to\n * break out of the loop.\n */\n if (allowTrailingCommas && tokenType === tt.RBrace) {\n break;\n } \n } else {\n break;\n }\n } while (tokenType);\n }\n\n assertTokenType(tokenType, tt.RBrace);\n const lastToken = tokenizer.token;\n const range = createRange(firstToken.loc.start, lastToken.loc.end);\n\n return types.object(members, {\n loc: {\n start: {\n ...firstToken.loc.start\n },\n end: {\n ...lastToken.loc.end\n }\n },\n ...range\n });\n\n }\n\n /**\n * Parses an array literal.\n * @param {number} firstTokenType The first token in the array.\n * @returns {ArrayNode} The array node.\n * @throws {UnexpectedToken} When an unexpected token is found.\n * @throws {UnexpectedEOF} When the end of the file is reached.\n */\n function parseArray(firstTokenType) {\n\n // The first token must be a [ or else it's an error\n assertTokenType(firstTokenType, tt.LBracket);\n\n const firstToken = tokenizer.token;\n const elements = [];\n let tokenType = next();\n \n if (tokenType !== tt.RBracket) {\n\n do {\n\n // add the value into the array\n const value = parseValue(tokenType);\n\n elements.push(types.element(\n /** @type {ValueNode} */ (value),\n { loc: value.loc }\n ));\n\n tokenType = next();\n \n if (tokenType === tt.Comma) {\n tokenType = next();\n\n /*\n * Trailing commas.\n * So we need to check if the token is a comma,\n * and if so, then we need to check if the next\n * token is a RBracket. If it is, then we need to\n * break out of the loop.\n */\n if (allowTrailingCommas && tokenType === tt.RBracket) {\n break;\n } \n } else {\n break;\n }\n } while (tokenType);\n }\n\n assertTokenType(tokenType, tt.RBracket);\n\n const lastToken = tokenizer.token;\n const range = createRange(firstToken.loc.start, lastToken.loc.end);\n\n return types.array(elements, {\n loc: {\n start: {\n ...firstToken.loc.start\n },\n end: {\n ...lastToken.loc.end\n }\n },\n ...range\n });\n\n }\n\n /**\n * Parses a JSON value.\n * @param {number} [tokenType] The token type to parse.\n * @returns {ValueNode|IdentifierNode} The node representing the value.\n */\n function parseValue(tokenType) {\n\n tokenType = tokenType ?? next();\n const token = tokenizer.token;\n \n switch (tokenType) {\n case tt.String:\n case tt.Boolean:\n return createLiteralNode(tokenType);\n\n case tt.Number:\n if (json5) {\n let tokenText = text.slice(token.loc.start.offset, token.loc.end.offset);\n if (tokenText[0] === \"+\" || tokenText[0] === \"-\") {\n tokenText = tokenText.slice(1);\n }\n\n if (tokenText === \"NaN\" || tokenText === \"Infinity\") {\n return createJSON5IdentifierNode(token);\n }\n }\n return createLiteralNode(tokenType);\n\n case tt.Null:\n return createNullNode(token);\n\n case tt.LBrace:\n return parseObject(tokenType);\n\n case tt.LBracket:\n return parseArray(tokenType);\n\n default:\n throw new UnexpectedToken(token);\n }\n\n }\n\n \n const docBody = parseValue();\n \n const unexpectedToken = next();\n if (unexpectedToken) {\n throw new UnexpectedToken(tokenizer.token);\n }\n \n \n const textEndLocation = getEndLocation(text);\n const docParts = {\n loc: {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n ...textEndLocation\n }\n }\n };\n \n if (options.tokens) {\n docParts.tokens = tokens;\n }\n\n if (options.ranges) {\n docParts.range = [\n docParts.loc.start.offset,\n docParts.loc.end.offset\n ];\n }\n\n return types.document(/** @type {ValueNode} */ (docBody), docParts);\n}\n\n/**\n * @fileoverview Traversal approaches for Momoa JSON AST.\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").TraversalPhase} TraversalPhase */\n/**\n * @typedef {Object} TraversalVisitor\n * @property {(node: Node, parent?: Node) => void} [enter]\n * @property {(node: Node, parent?: Node) => void} [exit]\n */\n\n//-----------------------------------------------------------------------------\n// Data\n//-----------------------------------------------------------------------------\n\nconst childKeys = new Map([\n [\"Document\", [\"body\"]],\n [\"Object\", [\"members\"]],\n [\"Member\", [\"name\", \"value\"]],\n [\"Element\", [\"value\"]],\n [\"Array\", [\"elements\"]],\n [\"String\", []],\n [\"Number\", []],\n [\"Boolean\", []],\n [\"Null\", []],\n [\"NaN\", []],\n [\"Infinity\", []],\n [\"Identifier\", []],\n]);\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Determines if a given value is an object.\n * @param {*} value The value to check.\n * @returns {boolean} True if the value is an object, false if not. \n */\nfunction isObject(value) {\n return value && (typeof value === \"object\");\n}\n\n/**\n * Determines if a given value is an AST node.\n * @param {*} value The value to check.\n * @returns {boolean} True if the value is a node, false if not. \n */\nfunction isNode(value) {\n return isObject(value) && (typeof value.type === \"string\");\n}\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Traverses an AST from the given node.\n * @param {Node} root The node to traverse from \n * @param {TraversalVisitor} visitor An object with an `enter` and `exit` method. \n */\nfunction traverse(root, visitor) {\n\n /**\n * Recursively visits a node.\n * @param {Node} node The node to visit.\n * @param {Node} [parent] The parent of the node to visit.\n * @returns {void}\n */\n function visitNode(node, parent) {\n\n if (typeof visitor.enter === \"function\") {\n visitor.enter(node, parent);\n }\n\n for (const key of childKeys.get(node.type)) {\n const value = node[key];\n\n if (isObject(value)) {\n if (Array.isArray(value)) {\n value.forEach(child => visitNode(child, node));\n } else if (isNode(value)) {\n visitNode(value, node);\n }\n }\n }\n\n if (typeof visitor.exit === \"function\") {\n visitor.exit(node, parent);\n }\n }\n\n visitNode(root);\n}\n\n/**\n * @callback FilterPredicate\n * @param {{node: Node, parent?: Node, phase: TraversalPhase}} item\n * @param {number} index\n * @param {Array<{node: Node, parent?: Node, phase: TraversalPhase}>} array\n * @returns {boolean}\n */\n\n/**\n * Creates an iterator over the given AST.\n * @param {Node} root The root AST node to traverse. \n * @param {FilterPredicate} [filter] A filter function to determine which steps to\n * return;\n * @returns {IterableIterator<{node: Node, parent?: Node, phase: TraversalPhase}>} An iterator over the AST. \n */\nfunction iterator(root, filter = () => true) {\n\n /** @type {Array<{node: Node, parent?: Node, phase: TraversalPhase}>} */\n const traversal = [];\n\n traverse(root, {\n enter(node, parent) {\n traversal.push({ node, parent, phase: \"enter\" });\n },\n exit(node, parent) {\n traversal.push({ node, parent, phase: \"exit\" });\n }\n });\n\n return traversal.filter(filter).values();\n}\n\n/**\n * @fileoverview Evaluator for Momoa AST.\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"./typedefs.js\").AnyNode} AnyNode */\n/** @typedef {import(\"./typedefs.js\").JSONValue} JSONValue */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Evaluates a Momoa AST node into a JavaScript value.\n * @param {AnyNode} node The node to interpet.\n * @returns {JSONValue} The JavaScript value for the node. \n */\nfunction evaluate(node) {\n switch (node.type) {\n case \"String\":\n return node.value;\n\n case \"Number\":\n return node.value;\n\n case \"Boolean\":\n return node.value;\n\n case \"Null\":\n return null;\n\n case \"NaN\":\n return NaN;\n \n case \"Infinity\":\n return node.sign === \"-\" ? -Infinity : Infinity;\n\n case \"Identifier\":\n return node.name;\n\n case \"Array\": {\n // const arrayNode = /** @type {ArrayNode} */ (node);\n return node.elements.map(element => evaluate(element.value));\n }\n\n case \"Object\": {\n\n /** @type {{[property: string]: JSONValue}} */\n const object = {};\n\n node.members.forEach(member => {\n object[/** @type {string} */ (evaluate(member.name))] = evaluate(member.value);\n }); \n\n return object;\n } \n\n case \"Document\": {\n return evaluate(node.body);\n }\n\n case \"Element\":\n throw new Error(\"Cannot evaluate array element outside of an array.\");\n\n case \"Member\":\n throw new Error(\"Cannot evaluate object member outside of an object.\");\n\n default:\n // @ts-ignore tsc doesn't know about the type property here?\n throw new Error(`Unknown node type ${ node.type }.`);\n }\n}\n\n/**\n * @fileoverview Printer for Momoa AST.\n * @author Nicholas C. Zakas\n */\n\n\n//-----------------------------------------------------------------------------\n// Typedefs\n//-----------------------------------------------------------------------------\n\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Prints the string representation of a Boolean node.\n * @param {BooleanNode} node The node to print.\n * @returns {string} The boolean value.\n */\nfunction printBoolean(node) {\n return node.value ? \"true\" : \"false\";\n}\n\n/**\n * Prints the string representation of a null node.\n * @returns {string} The string \"null\".\n */\nfunction printNull() {\n return \"null\";\n}\n\n/**\n * Prints the string representation of a number node.\n * @param {NumberNode} node The node to print.\n * @returns {string} The number value.\n */\nfunction printNumber(node) {\n return node.value.toString();\n}\n\n/**\n * Prints the string representation of a NaN node.\n * @returns {string} The string \"NaN\".\n */\nfunction printNaN() {\n return \"NaN\";\n}\n\n/**\n * Prints the string representation of an Infinity node.\n * @param {InfinityNode} node The node to print.\n * @returns {string} The string \"Infinity\" or \"-Infinity\".\n */\nfunction printInfinity(node) {\n return node.sign + \"Infinity\";\n}\n\n/**\n * Prints the string representation of a string node.\n * @param {StringNode} node The node to print.\n * @returns {string} The string value.\n */\nfunction printString(node) {\n\n let result = \"\\\"\";\n\n // escape all characters that need escaping\n for (const c of node.value) {\n\n const newChar = json5CharToEscape.get(c);\n\n if (newChar) {\n result += \"\\\\\" + newChar;\n continue;\n }\n\n // if it's a double quote, escape it\n if (c === \"\\\"\") {\n result += \"\\\\\\\"\";\n continue;\n }\n\n // if it's a control character, escape it\n if (c < \" \" || c === \"\\u007F\") {\n const hex = c.codePointAt(0).toString(16).toUpperCase();\n result += `\\\\u${\"0000\".substring(hex.length)}${hex}`;\n continue;\n }\n\n // otherwise, just add the character\n result += c;\n\n }\n \n return result + \"\\\"\";\n}\n\n/**\n * Prints the string representation of an identifier node.\n * @param {IdentifierNode} node The node to print.\n * @returns {string} The identifier name.\n */\nfunction printIdentifier(node) {\n return node.name;\n}\n\n/**\n * Prints the string representation of an array node.\n * @param {ArrayNode} node The node to print.\n * @param {string} indent The string to use for indentation.\n * @param {number} indentLevel The current level of indentation.\n * @returns {string} The array value.\n */\nfunction printArray(node, indent, indentLevel) {\n const newLine = indent ? \"\\n\" : \"\";\n const indentString = indent.repeat(indentLevel);\n const elementIndentString = indent.repeat(indentLevel + 1);\n\n return `[${newLine}${\n node.elements.map(element =>\n `${elementIndentString}${printValue(element.value, indent, indentLevel + 1)}`\n ).join(`,${newLine}`)\n }${newLine}${indentString}]`;\n}\n\n/**\n * Prints the string representation of a member node.\n * @param {MemberNode} node The node to print.\n * @param {string} indent The string to use for indentation.\n * @param {number} indentLevel The current level of indentation.\n * @returns {string} The member value.\n */\nfunction printMember(node, indent, indentLevel) {\n const space = indent ? \" \" : \"\";\n return `${printValue(node.name, indent, indentLevel)}:${space}${printValue(node.value, indent, indentLevel + 1)}`;\n}\n\n/**\n * Prints the string representation of an object node.\n * @param {ObjectNode} node The node to print.\n * @param {string} indent The string to use for indentation.\n * @param {number} indentLevel The current level of indentation.\n * @returns {string} The object value.\n */\nfunction printObject(node, indent, indentLevel) {\n const newLine = indent ? \"\\n\" : \"\";\n const indentString = indent.repeat(indentLevel);\n const memberIndentString = indent.repeat(indentLevel + 1);\n\n return `{${newLine}${\n node.members.map(member => \n `${memberIndentString}${printMember(member, indent, indentLevel)}`\n ).join(`,${newLine}`)\n }${newLine}${indentString}}`;\n}\n\n/**\n * Prints the string representation of a node.\n * @param {AnyNode} node The node to print.\n * @param {string} indentString The string to use for indentation.\n * @param {number} indentLevel The current level of indentation.\n * @returns {string} The string representation of the node.\n * @throws {TypeError} If the node type is unknown.\n\n */\nfunction printValue(node, indentString, indentLevel) {\n switch (node.type) {\n case \"String\":\n return printString(node);\n case \"Number\":\n return printNumber(node);\n case \"Boolean\":\n return printBoolean(node);\n case \"Null\":\n return printNull();\n case \"NaN\":\n return printNaN();\n case \"Infinity\":\n return printInfinity(node);\n case \"Identifier\":\n return printIdentifier(node);\n case \"Array\":\n return printArray(node, indentString, indentLevel);\n case \"Object\":\n return printObject(node, indentString, indentLevel);\n case \"Document\":\n return printValue(node.body, indentString, indentLevel);\n default:\n throw new TypeError(`Unknown node type: ${node.type}`);\n }\n}\n\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Converts a Momoa AST back into a JSON string.\n * @param {AnyNode} node The node to print.\n * @param {Object} options Options for the print.\n * @param {number} [options.indent=0] The number of spaces to indent each line. If\n * greater than 0, then newlines and indents will be added to output. \n * @returns {string} The JSON representation of the AST.\n */\nfunction print(node, { indent = 0 } = {}) {\n\n const indentLevel = 0;\n const indentString = \" \".repeat(indent);\n\n return printValue(node, indentString, indentLevel);\n}\n\nexport { evaluate, iterator, parse, print, tokenize, traverse, types, childKeys as visitorKeys };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","const parseNumber = (color, len) => {\n\tif (typeof color !== 'number') return;\n\n\t// hex3: #c93 -> #cc9933\n\tif (len === 3) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tg: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\tb: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex4: #c931 -> #cc993311\n\tif (len === 4) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 12) & 0xf) | ((color >> 8) & 0xf0)) / 255,\n\t\t\tg: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tb: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\talpha: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex6: #f0f1f2\n\tif (len === 6) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 16) & 0xff) / 255,\n\t\t\tg: ((color >> 8) & 0xff) / 255,\n\t\t\tb: (color & 0xff) / 255\n\t\t};\n\t}\n\n\t// hex8: #f0f1f2ff\n\tif (len === 8) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 24) & 0xff) / 255,\n\t\t\tg: ((color >> 16) & 0xff) / 255,\n\t\t\tb: ((color >> 8) & 0xff) / 255,\n\t\t\talpha: (color & 0xff) / 255\n\t\t};\n\t}\n};\n\nexport default parseNumber;\n","const named = {\n\taliceblue: 0xf0f8ff,\n\tantiquewhite: 0xfaebd7,\n\taqua: 0x00ffff,\n\taquamarine: 0x7fffd4,\n\tazure: 0xf0ffff,\n\tbeige: 0xf5f5dc,\n\tbisque: 0xffe4c4,\n\tblack: 0x000000,\n\tblanchedalmond: 0xffebcd,\n\tblue: 0x0000ff,\n\tblueviolet: 0x8a2be2,\n\tbrown: 0xa52a2a,\n\tburlywood: 0xdeb887,\n\tcadetblue: 0x5f9ea0,\n\tchartreuse: 0x7fff00,\n\tchocolate: 0xd2691e,\n\tcoral: 0xff7f50,\n\tcornflowerblue: 0x6495ed,\n\tcornsilk: 0xfff8dc,\n\tcrimson: 0xdc143c,\n\tcyan: 0x00ffff,\n\tdarkblue: 0x00008b,\n\tdarkcyan: 0x008b8b,\n\tdarkgoldenrod: 0xb8860b,\n\tdarkgray: 0xa9a9a9,\n\tdarkgreen: 0x006400,\n\tdarkgrey: 0xa9a9a9,\n\tdarkkhaki: 0xbdb76b,\n\tdarkmagenta: 0x8b008b,\n\tdarkolivegreen: 0x556b2f,\n\tdarkorange: 0xff8c00,\n\tdarkorchid: 0x9932cc,\n\tdarkred: 0x8b0000,\n\tdarksalmon: 0xe9967a,\n\tdarkseagreen: 0x8fbc8f,\n\tdarkslateblue: 0x483d8b,\n\tdarkslategray: 0x2f4f4f,\n\tdarkslategrey: 0x2f4f4f,\n\tdarkturquoise: 0x00ced1,\n\tdarkviolet: 0x9400d3,\n\tdeeppink: 0xff1493,\n\tdeepskyblue: 0x00bfff,\n\tdimgray: 0x696969,\n\tdimgrey: 0x696969,\n\tdodgerblue: 0x1e90ff,\n\tfirebrick: 0xb22222,\n\tfloralwhite: 0xfffaf0,\n\tforestgreen: 0x228b22,\n\tfuchsia: 0xff00ff,\n\tgainsboro: 0xdcdcdc,\n\tghostwhite: 0xf8f8ff,\n\tgold: 0xffd700,\n\tgoldenrod: 0xdaa520,\n\tgray: 0x808080,\n\tgreen: 0x008000,\n\tgreenyellow: 0xadff2f,\n\tgrey: 0x808080,\n\thoneydew: 0xf0fff0,\n\thotpink: 0xff69b4,\n\tindianred: 0xcd5c5c,\n\tindigo: 0x4b0082,\n\tivory: 0xfffff0,\n\tkhaki: 0xf0e68c,\n\tlavender: 0xe6e6fa,\n\tlavenderblush: 0xfff0f5,\n\tlawngreen: 0x7cfc00,\n\tlemonchiffon: 0xfffacd,\n\tlightblue: 0xadd8e6,\n\tlightcoral: 0xf08080,\n\tlightcyan: 0xe0ffff,\n\tlightgoldenrodyellow: 0xfafad2,\n\tlightgray: 0xd3d3d3,\n\tlightgreen: 0x90ee90,\n\tlightgrey: 0xd3d3d3,\n\tlightpink: 0xffb6c1,\n\tlightsalmon: 0xffa07a,\n\tlightseagreen: 0x20b2aa,\n\tlightskyblue: 0x87cefa,\n\tlightslategray: 0x778899,\n\tlightslategrey: 0x778899,\n\tlightsteelblue: 0xb0c4de,\n\tlightyellow: 0xffffe0,\n\tlime: 0x00ff00,\n\tlimegreen: 0x32cd32,\n\tlinen: 0xfaf0e6,\n\tmagenta: 0xff00ff,\n\tmaroon: 0x800000,\n\tmediumaquamarine: 0x66cdaa,\n\tmediumblue: 0x0000cd,\n\tmediumorchid: 0xba55d3,\n\tmediumpurple: 0x9370db,\n\tmediumseagreen: 0x3cb371,\n\tmediumslateblue: 0x7b68ee,\n\tmediumspringgreen: 0x00fa9a,\n\tmediumturquoise: 0x48d1cc,\n\tmediumvioletred: 0xc71585,\n\tmidnightblue: 0x191970,\n\tmintcream: 0xf5fffa,\n\tmistyrose: 0xffe4e1,\n\tmoccasin: 0xffe4b5,\n\tnavajowhite: 0xffdead,\n\tnavy: 0x000080,\n\toldlace: 0xfdf5e6,\n\tolive: 0x808000,\n\tolivedrab: 0x6b8e23,\n\torange: 0xffa500,\n\torangered: 0xff4500,\n\torchid: 0xda70d6,\n\tpalegoldenrod: 0xeee8aa,\n\tpalegreen: 0x98fb98,\n\tpaleturquoise: 0xafeeee,\n\tpalevioletred: 0xdb7093,\n\tpapayawhip: 0xffefd5,\n\tpeachpuff: 0xffdab9,\n\tperu: 0xcd853f,\n\tpink: 0xffc0cb,\n\tplum: 0xdda0dd,\n\tpowderblue: 0xb0e0e6,\n\tpurple: 0x800080,\n\n\t// Added in CSS Colors Level 4:\n\t// https://drafts.csswg.org/css-color/#changes-from-3\n\trebeccapurple: 0x663399,\n\n\tred: 0xff0000,\n\trosybrown: 0xbc8f8f,\n\troyalblue: 0x4169e1,\n\tsaddlebrown: 0x8b4513,\n\tsalmon: 0xfa8072,\n\tsandybrown: 0xf4a460,\n\tseagreen: 0x2e8b57,\n\tseashell: 0xfff5ee,\n\tsienna: 0xa0522d,\n\tsilver: 0xc0c0c0,\n\tskyblue: 0x87ceeb,\n\tslateblue: 0x6a5acd,\n\tslategray: 0x708090,\n\tslategrey: 0x708090,\n\tsnow: 0xfffafa,\n\tspringgreen: 0x00ff7f,\n\tsteelblue: 0x4682b4,\n\ttan: 0xd2b48c,\n\tteal: 0x008080,\n\tthistle: 0xd8bfd8,\n\ttomato: 0xff6347,\n\tturquoise: 0x40e0d0,\n\tviolet: 0xee82ee,\n\twheat: 0xf5deb3,\n\twhite: 0xffffff,\n\twhitesmoke: 0xf5f5f5,\n\tyellow: 0xffff00,\n\tyellowgreen: 0x9acd32\n};\n\nexport default named;\n","import parseNumber from './parseNumber.js';\nimport named from '../colors/named.js';\n\n// Also supports the `transparent` color as defined in:\n// https://drafts.csswg.org/css-color/#transparent-black\nconst parseNamed = color => {\n\treturn parseNumber(named[color.toLowerCase()], 6);\n};\n\nexport default parseNamed;\n","import parseNumber from './parseNumber.js';\n\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nconst parseHex = color => {\n\tlet match;\n\t// eslint-disable-next-line no-cond-assign\n\treturn (match = color.match(hex))\n\t\t? parseNumber(parseInt(match[1], 16), match[1].length)\n\t\t: undefined;\n};\n\nexport default parseHex;\n","/*\n\tBasic building blocks for color regexes\n\t---------------------------------------\n\n\tThese regexes are expressed as strings\n\tto be interpolated in the color regexes.\n */\n\n// <number>\nexport const num = '([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)';\n\n// <number> or 'none'\nexport const num_none = `(?:${num}|none)`;\n\n// <percentage>\nexport const per = `${num}%`;\n\n// <percent> or 'none'\nexport const per_none = `(?:${num}%|none)`;\n\n// <number-percentage> (<alpha-value>)\nexport const num_per = `(?:${num}%|${num})`;\n\n// <number-percentage> (<alpha-value>) or 'none'\nexport const num_per_none = `(?:${num}%|${num}|none)`;\n\n// <hue>\nexport const hue = `(?:${num}(deg|grad|rad|turn)|${num})`;\n\n// <hue> or 'none'\nexport const hue_none = `(?:${num}(deg|grad|rad|turn)|${num}|none)`;\n\nexport const c = `\\\\s*,\\\\s*`; // comma\nexport const so = '\\\\s*'; // space, optional\nexport const s = `\\\\s+`; // space\n\nexport const rx_num_per_none = new RegExp('^' + num_per_none + '$');\n","import { num, per, num_per, c } from '../util/regex.js';\n\n/*\n\trgb() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#rgb-functions\n */\nconst rgb_num_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${num}${c}${num}${c}${num}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst rgb_per_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseRgbLegacy = color => {\n\tlet res = { mode: 'rgb' };\n\tlet match;\n\tif ((match = color.match(rgb_num_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 255;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 255;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 255;\n\t\t}\n\t} else if ((match = color.match(rgb_per_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 100;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 100;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 100;\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\t} else if (match[5] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[5]));\n\t}\n\n\treturn res;\n};\n\nexport default parseRgbLegacy;\n","import parse from './parse.js';\n\nconst prepare = (color, mode) =>\n\tcolor === undefined\n\t\t? undefined\n\t\t: typeof color !== 'object'\n\t\t? parse(color)\n\t\t: color.mode !== undefined\n\t\t? color\n\t\t: mode\n\t\t? { ...color, mode }\n\t\t: undefined;\n\nexport default prepare;\n","import { converters } from './modes.js';\nimport prepare from './_prepare.js';\n\nconst converter =\n\t(target_mode = 'rgb') =>\n\tcolor =>\n\t\t(color = prepare(color, target_mode)) !== undefined\n\t\t\t? // if the color's mode corresponds to our target mode\n\t\t\t color.mode === target_mode\n\t\t\t\t? // then just return the color\n\t\t\t\t color\n\t\t\t\t: // otherwise check to see if we have a dedicated\n\t\t\t\t// converter for the target mode\n\t\t\t\tconverters[color.mode][target_mode]\n\t\t\t\t? // and return its result...\n\t\t\t\t converters[color.mode][target_mode](color)\n\t\t\t\t: // ...otherwise pass through RGB as an intermediary step.\n\t\t\t\t// if the target mode is RGB...\n\t\t\t\ttarget_mode === 'rgb'\n\t\t\t\t? // just return the RGB\n\t\t\t\t converters[color.mode].rgb(color)\n\t\t\t\t: // otherwise convert color.mode -> RGB -> target_mode\n\t\t\t\t converters.rgb[target_mode](converters[color.mode].rgb(color))\n\t\t\t: undefined;\n\nexport default converter;\n","import converter from './converter.js';\n\nconst converters = {};\nconst modes = {};\n\nconst parsers = [];\nconst colorProfiles = {};\n\nconst identity = v => v;\n\nconst useMode = definition => {\n\tconverters[definition.mode] = {\n\t\t...converters[definition.mode],\n\t\t...definition.toMode\n\t};\n\n\tObject.keys(definition.fromMode || {}).forEach(k => {\n\t\tif (!converters[k]) {\n\t\t\tconverters[k] = {};\n\t\t}\n\t\tconverters[k][definition.mode] = definition.fromMode[k];\n\t});\n\n\t// Color space channel ranges\n\tif (!definition.ranges) {\n\t\tdefinition.ranges = {};\n\t}\n\n\tif (!definition.difference) {\n\t\tdefinition.difference = {};\n\t}\n\n\tdefinition.channels.forEach(channel => {\n\t\t// undefined channel ranges default to the [0, 1] interval\n\t\tif (definition.ranges[channel] === undefined) {\n\t\t\tdefinition.ranges[channel] = [0, 1];\n\t\t}\n\n\t\tif (!definition.interpolate[channel]) {\n\t\t\tthrow new Error(`Missing interpolator for: ${channel}`);\n\t\t}\n\n\t\tif (typeof definition.interpolate[channel] === 'function') {\n\t\t\tdefinition.interpolate[channel] = {\n\t\t\t\tuse: definition.interpolate[channel]\n\t\t\t};\n\t\t}\n\n\t\tif (!definition.interpolate[channel].fixup) {\n\t\t\tdefinition.interpolate[channel].fixup = identity;\n\t\t}\n\t});\n\n\tmodes[definition.mode] = definition;\n\t(definition.parse || []).forEach(parser => {\n\t\tuseParser(parser, definition.mode);\n\t});\n\n\treturn converter(definition.mode);\n};\n\nconst getMode = mode => modes[mode];\n\nconst useParser = (parser, mode) => {\n\tif (typeof parser === 'string') {\n\t\tif (!mode) {\n\t\t\tthrow new Error(`'mode' required when 'parser' is a string`);\n\t\t}\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === 'function') {\n\t\tif (parsers.indexOf(parser) < 0) {\n\t\t\tparsers.push(parser);\n\t\t}\n\t}\n};\n\nconst removeParser = parser => {\n\tif (typeof parser === 'string') {\n\t\tdelete colorProfiles[parser];\n\t} else if (typeof parser === 'function') {\n\t\tconst idx = parsers.indexOf(parser);\n\t\tif (idx > 0) {\n\t\t\tparsers.splice(idx, 1);\n\t\t}\n\t}\n};\n\nexport {\n\tuseMode,\n\tgetMode,\n\tuseParser,\n\tremoveParser,\n\tconverters,\n\tparsers,\n\tcolorProfiles\n};\n","import { parsers, colorProfiles, getMode } from './modes.js';\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\n\nexport const Tok = {\n\tFunction: 'function',\n\tIdent: 'ident',\n\tNumber: 'number',\n\tPercentage: 'percentage',\n\tParenClose: ')',\n\tNone: 'none',\n\tHue: 'hue',\n\tAlpha: 'alpha'\n};\n\nlet _i = 0;\n\n/*\n\t4.3.10. Check if three code points would start a number\n\thttps://drafts.csswg.org/css-syntax/#starts-with-a-number\n */\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === '-' || ch === '+') {\n\t\treturn /\\d/.test(ch1) || (ch1 === '.' && /\\d/.test(chars[_i + 2]));\n\t}\n\tif (ch === '.') {\n\t\treturn /\\d/.test(ch1);\n\t}\n\treturn /\\d/.test(ch);\n}\n\n/*\n\tCheck if the stream starts with an identifier.\n */\n\nfunction is_ident(chars) {\n\tif (_i >= chars.length) {\n\t\treturn false;\n\t}\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) {\n\t\treturn true;\n\t}\n\tif (ch === '-') {\n\t\tif (chars.length - _i < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === '-' || IdentStartCodePoint.test(ch1)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n}\n\n/*\n\t4.3.3. Consume a numeric token\n\thttps://drafts.csswg.org/css-syntax/#consume-numeric-token\n */\n\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\n\nfunction num(chars) {\n\tlet value = '';\n\tif (chars[_i] === '-' || chars[_i] === '+') {\n\t\tvalue += chars[_i++];\n\t}\n\tvalue += digits(chars);\n\tif (chars[_i] === '.' && /\\d/.test(chars[_i + 1])) {\n\t\tvalue += chars[_i++] + digits(chars);\n\t}\n\tif (chars[_i] === 'e' || chars[_i] === 'E') {\n\t\tif (\n\t\t\t(chars[_i + 1] === '-' || chars[_i + 1] === '+') &&\n\t\t\t/\\d/.test(chars[_i + 2])\n\t\t) {\n\t\t\tvalue += chars[_i++] + chars[_i++] + digits(chars);\n\t\t} else if (/\\d/.test(chars[_i + 1])) {\n\t\t\tvalue += chars[_i++] + digits(chars);\n\t\t}\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === 'deg' || id === 'rad' || id === 'turn' || id === 'grad') {\n\t\t\treturn { type: Tok.Hue, value: value * huenits[id] };\n\t\t}\n\t\treturn undefined;\n\t}\n\tif (chars[_i] === '%') {\n\t\t_i++;\n\t\treturn { type: Tok.Percentage, value: +value };\n\t}\n\treturn { type: Tok.Number, value: +value };\n}\n\n/*\n\tConsume digits.\n */\nfunction digits(chars) {\n\tlet v = '';\n\twhile (/\\d/.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an identifier.\n */\nfunction ident(chars) {\n\tlet v = '';\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an ident-like token.\n */\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === '(') {\n\t\t_i++;\n\t\treturn { type: Tok.Function, value: v };\n\t}\n\tif (v === 'none') {\n\t\treturn { type: Tok.None, value: undefined };\n\t}\n\treturn { type: Tok.Ident, value: v };\n}\n\nexport function tokenize(str = '') {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\n\t/* reset counter */\n\t_i = 0;\n\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\n\t\t/*\n\t\t\tConsume whitespace without emitting it\n\t\t */\n\t\tif (ch === '\\n' || ch === '\\t' || ch === ' ') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === ',') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === ')') {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '+') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '-') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({ type: Tok.Ident, value: ident(chars) });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '.') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '/') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({ type: Tok.Alpha, value: alpha });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === 'none') {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: { type: Tok.None, value: undefined }\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\t/*\n\t\t\tTreat everything not already handled as an error.\n\t\t */\n\t\treturn undefined;\n\t}\n\n\treturn tokens;\n}\n\nexport function parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== 'color') {\n\t\treturn undefined;\n\t}\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) {\n\t\treturn undefined;\n\t}\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c, ch; ii < channels.length; ii++) {\n\t\tc = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c.type !== Tok.None) {\n\t\t\tres[ch] = c.type === Tok.Number ? c.value : c.value / 100;\n\t\t\tif (ch === 'alpha') {\n\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t\t}\n\t\t}\n\t}\n\treturn res;\n}\n\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (\n\t\t\ttoken.type === Tok.None ||\n\t\t\ttoken.type === Tok.Number ||\n\t\t\ttoken.type === Tok.Alpha ||\n\t\t\ttoken.type === Tok.Percentage ||\n\t\t\t(includeHue && token.type === Tok.Hue)\n\t\t) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tif (coords.length < 3 || coords.length > 4) {\n\t\treturn undefined;\n\t}\n\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) {\n\t\tcoords.push({ type: Tok.None, value: undefined });\n\t}\n\n\treturn coords.every(c => c.type !== Tok.Alpha) ? coords : undefined;\n}\n\nexport function parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) {\n\t\treturn undefined;\n\t}\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tcoords.unshift(token.value);\n\treturn coords;\n}\n\nconst parse = color => {\n\tif (typeof color !== 'string') {\n\t\treturn undefined;\n\t}\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : undefined;\n\tlet result = undefined;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) {\n\t\tif ((result = parsers[i++](color, parsed)) !== undefined) {\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn tokens ? parseColorSyntax(tokens) : undefined;\n};\n\nexport default parse;\n","import { Tok } from '../parse.js';\n\nfunction parseRgb(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'rgb' && parsed[0] !== 'rgba')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'rgb' };\n\tconst [, r, g, b, alpha] = parsed;\n\tif (r.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (r.type !== Tok.None) {\n\t\tres.r = r.type === Tok.Number ? r.value / 255 : r.value / 100;\n\t}\n\tif (g.type !== Tok.None) {\n\t\tres.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseRgb;\n","const parseTransparent = c =>\n\tc === 'transparent'\n\t\t? { mode: 'rgb', r: 0, g: 0, b: 0, alpha: 0 }\n\t\t: undefined;\n\nexport default parseTransparent;\n","const lerp = (a, b, t) => a + t * (b - a);\nconst unlerp = (a, b, v) => (v - a) / (b - a);\n\nconst blerp = (a00, a01, a10, a11, tx, ty) => {\n\treturn lerp(lerp(a00, a01, tx), lerp(a10, a11, tx), ty);\n};\n\nconst trilerp = (\n\ta000,\n\ta010,\n\ta100,\n\ta110,\n\ta001,\n\ta011,\n\ta101,\n\ta111,\n\ttx,\n\tty,\n\ttz\n) => {\n\treturn lerp(\n\t\tblerp(a000, a010, a100, a110, tx, ty),\n\t\tblerp(a001, a011, a101, a111, tx, ty),\n\t\ttz\n\t);\n};\n\nexport { lerp, blerp, trilerp, unlerp };\n","const get_classes = arr => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === undefined && b === undefined) {\n\t\t\tclasses.push(undefined);\n\t\t} else if (a !== undefined && b !== undefined) {\n\t\t\tclasses.push([a, b]);\n\t\t} else {\n\t\t\tclasses.push(a !== undefined ? [a, a] : [b, b]);\n\t\t}\n\t}\n\treturn classes;\n};\n\nconst interpolatorPiecewise = interpolator => arr => {\n\tlet classes = get_classes(arr);\n\treturn t => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === undefined\n\t\t\t? undefined\n\t\t\t: interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\nexport { interpolatorPiecewise };\n","import { lerp } from './lerp.js';\nimport { interpolatorPiecewise } from './piecewise.js';\n\nexport const interpolatorLinear = interpolatorPiecewise(lerp);\n","const fixupAlpha = arr => {\n\tlet some_defined = false;\n\tlet res = arr.map(v => {\n\t\tif (v !== undefined) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\nexport { fixupAlpha };\n","import parseNamed from './parseNamed.js';\nimport parseHex from './parseHex.js';\nimport parseRgbLegacy from './parseRgbLegacy.js';\nimport parseRgb from './parseRgb.js';\nimport parseTransparent from './parseTransparent.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tsRGB color space\n */\n\nconst definition = {\n\tmode: 'rgb',\n\tchannels: ['r', 'g', 'b', 'alpha'],\n\tparse: [\n\t\tparseRgb,\n\t\tparseHex,\n\t\tparseRgbLegacy,\n\t\tparseNamed,\n\t\tparseTransparent,\n\t\t'srgb'\n\t],\n\tserialize: 'srgb',\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\tgamut: true,\n\twhite: { r: 1, g: 1, b: 1 },\n\tblack: { r: 0, g: 0, b: 0 }\n};\n\nexport default definition;\n","/*\n\tConvert A98 RGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n*/\n\nconst linearize = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\n\nconst convertA98ToXyz65 = a98 => {\n\tlet r = linearize(a98.r);\n\tlet g = linearize(a98.g);\n\tlet b = linearize(a98.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.5766690429101305 * r +\n\t\t\t0.1855582379065463 * g +\n\t\t\t0.1882286462349947 * b,\n\t\ty:\n\t\t\t0.297344975250536 * r +\n\t\t\t0.6273635662554661 * g +\n\t\t\t0.0752914584939979 * b,\n\t\tz:\n\t\t\t0.0270313613864123 * r +\n\t\t\t0.0706888525358272 * g +\n\t\t\t0.9913375368376386 * b\n\t};\n\tif (a98.alpha !== undefined) {\n\t\tres.alpha = a98.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertA98ToXyz65;\n","/*\n\tConvert CIE XYZ D65 values to A98 RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\n\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'a98',\n\t\tr: gamma(\n\t\t\tx * 2.0415879038107465 -\n\t\t\t\ty * 0.5650069742788597 -\n\t\t\t\t0.3447313507783297 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.9692436362808798 +\n\t\t\t\ty * 1.8759675015077206 +\n\t\t\t\t0.0415550574071756 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0134442806320312 -\n\t\t\t\ty * 0.1183623922310184 +\n\t\t\t\t1.0151749943912058 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToA98;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs <= 0.04045) {\n\t\treturn c / 12.92;\n\t}\n\treturn (Math.sign(c) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n};\n\nconst convertRgbToLrgb = ({ r, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToLrgb;\n","/*\n\tConvert sRGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.4123907992659593 * r +\n\t\t\t0.357584339383878 * g +\n\t\t\t0.1804807884018343 * b,\n\t\ty:\n\t\t\t0.2126390058715102 * r +\n\t\t\t0.715168678767756 * g +\n\t\t\t0.0721923153607337 * b,\n\t\tz:\n\t\t\t0.0193308187155918 * r +\n\t\t\t0.119194779794626 * g +\n\t\t\t0.9505321522496607 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz65;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs > 0.0031308) {\n\t\treturn (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);\n\t}\n\treturn c * 12.92;\n};\n\nconst convertLrgbToRgb = ({ r, g, b, alpha }, mode = 'rgb') => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLrgbToRgb;\n","/*\n\tCIE XYZ D65 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.2409699419045226 -\n\t\t\ty * 1.5373831775700939 -\n\t\t\t0.4986107602930034 * z,\n\t\tg:\n\t\t\tx * -0.9692436362808796 +\n\t\t\ty * 1.8759675015077204 +\n\t\t\t0.0415550574071756 * z,\n\t\tb:\n\t\t\tx * 0.0556300796969936 -\n\t\t\ty * 0.2039769588889765 +\n\t\t\t1.0569715142428784 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRgb;\n","import rgb from '../rgb/definition.js';\n\nimport convertA98ToXyz65 from './convertA98ToXyz65.js';\nimport convertXyz65ToA98 from './convertXyz65ToA98.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'a98',\n\tparse: ['a98-rgb'],\n\tserialize: 'a98-rgb',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToA98(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToA98\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertA98ToXyz65(color)),\n\t\txyz65: convertA98ToXyz65\n\t}\n};\n\nexport default definition;\n","const normalizeHue = hue => ((hue = hue % 360) < 0 ? hue + 360 : hue);\n\nexport default normalizeHue;\n","import normalizeHue from '../util/normalizeHue.js';\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (l === undefined) l = 0;\n\tlet m1 = l + s * (l < 0.5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: m1, g: m2, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: m2, g: m1, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: 2 * l - m1, g: m1, b: m2 };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: 2 * l - m1, g: m2, b: m1 };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: m2, g: 2 * l - m1, b: m1 };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: m1, g: 2 * l - m1, b: m2 };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: 2 * l - m1, g: 2 * l - m1, b: 2 * l - m1 };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsl({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsl',\n\t\ts: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),\n\t\tl: 0.5 * (M + m)\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","const hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase 'deg':\n\t\t\treturn +val;\n\t\tcase 'rad':\n\t\t\treturn (val / Math.PI) * 180;\n\t\tcase 'grad':\n\t\t\treturn (val / 10) * 9;\n\t\tcase 'turn':\n\t\t\treturn val * 360;\n\t}\n};\n\nexport default hueToDeg;\n","import hueToDeg from '../util/hue.js';\nimport { hue, per, num_per, c } from '../util/regex.js';\n\n/*\n\thsl() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#the-hsl-notation\n */\nconst hsl_old = new RegExp(\n\t`^hsla?\\\\(\\\\s*${hue}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseHslLegacy = color => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: 'hsl' };\n\n\tif (match[3] !== undefined) {\n\t\tres.h = +match[3];\n\t} else if (match[1] !== undefined && match[2] !== undefined) {\n\t\tres.h = hueToDeg(match[1], match[2]);\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.s = Math.min(Math.max(0, match[4] / 100), 1);\n\t}\n\n\tif (match[5] !== undefined) {\n\t\tres.l = Math.min(Math.max(0, match[5] / 100), 1);\n\t}\n\n\tif (match[6] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\t} else if (match[7] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[7]));\n\t}\n\treturn res;\n};\n\nexport default parseHslLegacy;\n","import { Tok } from '../parse.js';\n\nfunction parseHsl(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'hsl' && parsed[0] !== 'hsla')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hsl' };\n\tconst [, h, s, l, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.s = s.value / 100;\n\t}\n\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = l.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseHsl;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst hue = (hues, fn) => {\n\treturn hues\n\t\t.map((hue, idx, arr) => {\n\t\t\tif (hue === undefined) {\n\t\t\t\treturn hue;\n\t\t\t}\n\t\t\tlet normalized = normalizeHue(hue);\n\t\t\tif (idx === 0 || hues[idx - 1] === undefined) {\n\t\t\t\treturn normalized;\n\t\t\t}\n\t\t\treturn fn(normalized - normalizeHue(arr[idx - 1]));\n\t\t})\n\t\t.reduce((acc, curr) => {\n\t\t\tif (\n\t\t\t\t!acc.length ||\n\t\t\t\tcurr === undefined ||\n\t\t\t\tacc[acc.length - 1] === undefined\n\t\t\t) {\n\t\t\t\tacc.push(curr);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tacc.push(curr + acc[acc.length - 1]);\n\t\t\treturn acc;\n\t\t}, []);\n};\n\nconst fixupHueShorter = arr =>\n\thue(arr, d => (Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d)));\nconst fixupHueLonger = arr =>\n\thue(arr, d => (Math.abs(d) >= 180 || d === 0 ? d : d - 360 * Math.sign(d)));\nconst fixupHueIncreasing = arr => hue(arr, d => (d >= 0 ? d : d + 360));\nconst fixupHueDecreasing = arr => hue(arr, d => (d <= 0 ? d : d - 360));\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n};\n","import { getMode } from './modes.js';\nimport converter from './converter.js';\nimport normalizeHue from './util/normalizeHue.js';\n\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.s || !smp.s) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\n\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) {\n\t\t// todo should this be normalized once again?\n\t\treturn std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\t}\n\treturn smp_h - std_h;\n};\n\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.c || !smp.c) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\n\nconst differenceEuclidean = (mode = 'rgb', weights = [1, 1, 1, 0]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(\n\t\t\tchannels.reduce((sum, k, idx) => {\n\t\t\t\tlet delta = diffs[k]\n\t\t\t\t\t? diffs[k](ConvStd, ConvSmp)\n\t\t\t\t\t: ConvStd[k] - ConvSmp[k];\n\t\t\t\treturn (\n\t\t\t\t\tsum +\n\t\t\t\t\t(weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2)\n\t\t\t\t);\n\t\t\t}, 0)\n\t\t);\n\t};\n};\n\nconst differenceCie76 = () => differenceEuclidean('lab65');\n\nconst differenceCie94 = (kL = 1, K1 = 0.045, K2 = 0.015) => {\n\tlet lab = converter('lab65');\n\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\t// Extract Lab values, and compute Chroma\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(kL, 2) +\n\t\t\t\tdC2 / Math.pow(1 + K1 * cStd, 2) +\n\t\t\t\tdH2 / Math.pow(1 + K2 * cStd, 2)\n\t\t);\n\t};\n};\n\n/*\n\tCIEDE2000 color difference, original Matlab implementation by Gaurav Sharma\n\tBased on \"The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations\" \n\tby Gaurav Sharma, Wencheng Wu, Edul N. Dalal in Color Research and Application, vol. 30. No. 1, pp. 21-30, February 2005.\n\thttp://www2.ece.rochester.edu/~gsharma/ciede2000/\n */\n\nconst differenceCiede2000 = (Kl = 1, Kc = 1, Kh = 1) => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet cAvg = (cStd + cSmp) / 2;\n\n\t\tlet G =\n\t\t\t0.5 *\n\t\t\t(1 -\n\t\t\t\tMath.sqrt(\n\t\t\t\t\tMath.pow(cAvg, 7) / (Math.pow(cAvg, 7) + Math.pow(25, 7))\n\t\t\t\t));\n\n\t\tlet apStd = aStd * (1 + G);\n\t\tlet apSmp = aSmp * (1 + G);\n\n\t\tlet cpStd = Math.sqrt(apStd * apStd + bStd * bStd);\n\t\tlet cpSmp = Math.sqrt(apSmp * apSmp + bSmp * bSmp);\n\n\t\tlet hpStd =\n\t\t\tMath.abs(apStd) + Math.abs(bStd) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bStd, apStd);\n\t\thpStd += (hpStd < 0) * 2 * Math.PI;\n\n\t\tlet hpSmp =\n\t\t\tMath.abs(apSmp) + Math.abs(bSmp) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bSmp, apSmp);\n\t\thpSmp += (hpSmp < 0) * 2 * Math.PI;\n\n\t\tlet dL = lSmp - lStd;\n\t\tlet dC = cpSmp - cpStd;\n\n\t\tlet dhp = cpStd * cpSmp === 0 ? 0 : hpSmp - hpStd;\n\t\tdhp -= (dhp > Math.PI) * 2 * Math.PI;\n\t\tdhp += (dhp < -Math.PI) * 2 * Math.PI;\n\n\t\tlet dH = 2 * Math.sqrt(cpStd * cpSmp) * Math.sin(dhp / 2);\n\n\t\tlet Lp = (lStd + lSmp) / 2;\n\t\tlet Cp = (cpStd + cpSmp) / 2;\n\n\t\tlet hp;\n\t\tif (cpStd * cpSmp === 0) {\n\t\t\thp = hpStd + hpSmp;\n\t\t} else {\n\t\t\thp = (hpStd + hpSmp) / 2;\n\t\t\thp -= (Math.abs(hpStd - hpSmp) > Math.PI) * Math.PI;\n\t\t\thp += (hp < 0) * 2 * Math.PI;\n\t\t}\n\n\t\tlet Lpm50 = Math.pow(Lp - 50, 2);\n\t\tlet T =\n\t\t\t1 -\n\t\t\t0.17 * Math.cos(hp - Math.PI / 6) +\n\t\t\t0.24 * Math.cos(2 * hp) +\n\t\t\t0.32 * Math.cos(3 * hp + Math.PI / 30) -\n\t\t\t0.2 * Math.cos(4 * hp - (63 * Math.PI) / 180);\n\n\t\tlet Sl = 1 + (0.015 * Lpm50) / Math.sqrt(20 + Lpm50);\n\t\tlet Sc = 1 + 0.045 * Cp;\n\t\tlet Sh = 1 + 0.015 * Cp * T;\n\n\t\tlet deltaTheta =\n\t\t\t((30 * Math.PI) / 180) *\n\t\t\tMath.exp(-1 * Math.pow(((180 / Math.PI) * hp - 275) / 25, 2));\n\t\tlet Rc =\n\t\t\t2 *\n\t\t\tMath.sqrt(Math.pow(Cp, 7) / (Math.pow(Cp, 7) + Math.pow(25, 7)));\n\n\t\tlet Rt = -1 * Math.sin(2 * deltaTheta) * Rc;\n\n\t\treturn Math.sqrt(\n\t\t\tMath.pow(dL / (Kl * Sl), 2) +\n\t\t\t\tMath.pow(dC / (Kc * Sc), 2) +\n\t\t\t\tMath.pow(dH / (Kh * Sh), 2) +\n\t\t\t\t(((Rt * dC) / (Kc * Sc)) * dH) / (Kh * Sh)\n\t\t);\n\t};\n};\n\n/*\n\tCMC (l:c) difference formula\n\n\tReferences:\n\t\thttps://en.wikipedia.org/wiki/Color_difference#CMC_l:c_(1984)\n\t\thttp://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n */\nconst differenceCmc = (l = 1, c = 1) => {\n\tlet lab = converter('lab65');\n\n\t/*\n\t\tComparte two colors:\n\t\tstd - standard (first) color\n\t\tsmp - sample (second) color\n\t */\n\treturn (std, smp) => {\n\t\t// convert standard color to Lab\n\t\tlet LabStd = lab(std);\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\n\t\t// Obtain hue/chroma\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\t\tlet hStd = Math.atan2(bStd, aStd);\n\t\thStd = hStd + 2 * Math.PI * (hStd < 0);\n\n\t\t// convert sample color to Lab, obtain LCh\n\t\tlet LabSmp = lab(smp);\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\n\t\t// Obtain chroma\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\t// lightness delta squared\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\n\t\t// chroma delta squared\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\n\t\t// hue delta squared\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\tlet F = Math.sqrt(Math.pow(cStd, 4) / (Math.pow(cStd, 4) + 1900));\n\t\tlet T =\n\t\t\thStd >= (164 / 180) * Math.PI && hStd <= (345 / 180) * Math.PI\n\t\t\t\t? 0.56 + Math.abs(0.2 * Math.cos(hStd + (168 / 180) * Math.PI))\n\t\t\t\t: 0.36 + Math.abs(0.4 * Math.cos(hStd + (35 / 180) * Math.PI));\n\n\t\tlet Sl = lStd < 16 ? 0.511 : (0.040975 * lStd) / (1 + 0.01765 * lStd);\n\t\tlet Sc = (0.0638 * cStd) / (1 + 0.0131 * cStd) + 0.638;\n\t\tlet Sh = Sc * (F * T + 1 - F);\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(l * Sl, 2) +\n\t\t\t\tdC2 / Math.pow(c * Sc, 2) +\n\t\t\t\tdH2 / Math.pow(Sh, 2)\n\t\t);\n\t};\n};\n\n/*\n\n\tHyAB color difference formula, introduced in:\n\n\t\tAbasi S, Amani Tehran M, Fairchild MD. \n\t\t\"Distance metrics for very large color differences.\"\n\t\tColor Res Appl. 2019; 1–16. \n\t\thttps://doi.org/10.1002/col.22451\n\n\tPDF available at:\n\t\n\t\thttp://markfairchild.org/PDFs/PAP40.pdf\n */\nconst differenceHyab = () => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\t\tlet dL = LabStd.l - LabSmp.l;\n\t\tlet dA = LabStd.a - LabSmp.a;\n\t\tlet dB = LabStd.b - LabSmp.b;\n\t\treturn Math.abs(dL) + Math.sqrt(dA * dA + dB * dB);\n\t};\n};\n\n/*\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\nconst differenceKotsarenkoRamos = () =>\n\tdifferenceEuclidean('yiq', [0.5053, 0.299, 0.1957]);\n\n/*\n\tΔE_ITP, as defined in Rec. ITU-R BT.2124:\n\n\thttps://www.itu.int/rec/R-REC-BT.2124/en\n*/\nconst differenceItp = () =>\n\tdifferenceEuclidean('itp', [518400, 129600, 518400]);\n\nexport {\n\tdifferenceHueChroma,\n\tdifferenceHueSaturation,\n\tdifferenceHueNaive,\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n};\n","import converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst averageAngle = val => {\n\t// See: https://en.wikipedia.org/wiki/Mean_of_circular_quantities\n\tlet sum = val.reduce(\n\t\t(sum, val) => {\n\t\t\tif (val !== undefined) {\n\t\t\t\tlet rad = (val * Math.PI) / 180;\n\t\t\t\tsum.sin += Math.sin(rad);\n\t\t\t\tsum.cos += Math.cos(rad);\n\t\t\t}\n\t\t\treturn sum;\n\t\t},\n\t\t{ sin: 0, cos: 0 }\n\t);\n\tlet angle = (Math.atan2(sum.sin, sum.cos) * 180) / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\nconst averageNumber = val => {\n\tlet a = val.filter(v => v !== undefined);\n\treturn a.length ? a.reduce((sum, v) => sum + v, 0) / a.length : undefined;\n};\n\nconst isfn = o => typeof o === 'function';\n\nfunction average(colors, mode = 'rgb', overrides) {\n\tlet def = getMode(mode);\n\tlet cc = colors.map(converter(mode));\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\tlet arr = cc.map(c => c[ch]).filter(val => val !== undefined);\n\t\t\tif (arr.length) {\n\t\t\t\tlet fn;\n\t\t\t\tif (isfn(overrides)) {\n\t\t\t\t\tfn = overrides;\n\t\t\t\t} else if (overrides && isfn(overrides[ch])) {\n\t\t\t\t\tfn = overrides[ch];\n\t\t\t\t} else if (def.average && isfn(def.average[ch])) {\n\t\t\t\t\tfn = def.average[ch];\n\t\t\t\t} else {\n\t\t\t\t\tfn = averageNumber;\n\t\t\t\t}\n\t\t\t\tres[ch] = fn(arr, ch);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n}\n\nexport { average, averageAngle, averageNumber };\n","import convertHslToRgb from './convertHslToRgb.js';\nimport convertRgbToHsl from './convertRgbToHsl.js';\nimport parseHslLegacy from './parseHslLegacy.js';\nimport parseHsl from './parseHsl.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsl',\n\n\ttoMode: {\n\t\trgb: convertHslToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHsl\n\t},\n\n\tchannels: ['h', 's', 'l', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHsl, parseHslLegacy],\n\tserialize: c =>\n\t\t`hsl(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.s !== undefined ? c.s * 100 + '%' : 'none'\n\t\t} ${c.l !== undefined ? c.l * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (v === undefined) v = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: v, g: v * (1 - s * f), b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: v * (1 - s * f), g: v, b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: v * (1 - s), g: v, b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s * f), b: v };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: v * (1 - s * f), g: v * (1 - s), b: v };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: v, g: v * (1 - s), b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s) };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsv({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsv',\n\t\ts: M === 0 ? 0 : 1 - m / M,\n\t\tv: M\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsvToRgb from './convertHsvToRgb.js';\nimport convertRgbToHsv from './convertRgbToHsv.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsv',\n\n\ttoMode: {\n\t\trgb: convertHsvToRgb\n\t},\n\n\tparse: ['--hsv'],\n\tserialize: '--hsv',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsv\n\t},\n\n\tchannels: ['h', 's', 'v', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tHWB to RGB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertHsvToRgb from '../hsv/convertHsvToRgb.js';\n\nexport default function convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === undefined) w = 0;\n\tif (b === undefined) b = 0;\n\t// normalize w + b to 1\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th: h,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha: alpha\n\t});\n}\n","/*\n\tRGB to HWB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertRgbToHsv from '../hsv/convertRgbToHsv.js';\n\nexport default function convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === undefined) return undefined;\n\tlet s = hsv.s !== undefined ? hsv.s : 0;\n\tlet v = hsv.v !== undefined ? hsv.v : 0;\n\tlet res = {\n\t\tmode: 'hwb',\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv.h !== undefined) res.h = hsv.h;\n\tif (hsv.alpha !== undefined) res.alpha = hsv.alpha;\n\treturn res;\n}\n","import { Tok } from '../parse.js';\n\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== 'hwb') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hwb' };\n\tconst [, h, w, b, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.w = w.value / 100;\n\t}\n\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.b = b.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default ParseHwb;\n","import convertHwbToRgb from './convertHwbToRgb.js';\nimport convertRgbToHwb from './convertRgbToHwb.js';\nimport parseHwb from './parseHwb.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueNaive } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hwb',\n\n\ttoMode: {\n\t\trgb: convertHwbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHwb\n\t},\n\n\tchannels: ['h', 'w', 'b', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHwb],\n\tserialize: c =>\n\t\t`hwb(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.w !== undefined ? c.w * 100 + '%' : 'none'\n\t\t} ${c.b !== undefined ? c.b * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueNaive\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","/*\n\tThe XYZ tristimulus values (white point)\n\tof standard illuminants for the CIE 1931 2° \n\tstandard observer.\n\n\tSee: https://en.wikipedia.org/wiki/Standard_illuminant\n */\n\nexport const D50 = {\n\tX: 0.3457 / 0.3585,\n\tY: 1,\n\tZ: (1 - 0.3457 - 0.3585) / 0.3585\n};\n\nexport const D65 = {\n\tX: 0.3127 / 0.329,\n\tY: 1,\n\tZ: (1 - 0.3127 - 0.329) / 0.329\n};\n\nexport const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx: fn(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(fz) * D50.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLabToXyz50;\n","/*\n\tCIE XYZ D50 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.1341359569958707 -\n\t\t\ty * 1.6173863321612538 -\n\t\t\t0.4906619460083532 * z,\n\t\tg:\n\t\t\tx * -0.978795502912089 +\n\t\t\ty * 1.916254567259524 +\n\t\t\t0.03344273116131949 * z,\n\t\tb:\n\t\t\tx * 0.07195537988411677 -\n\t\t\ty * 0.2289768264158322 +\n\t\t\t1.405386058324125 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToRgb;\n","import convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\n\nconst convertLabToRgb = lab => convertXyz50ToRgb(convertLabToXyz50(lab));\n\nexport default convertLabToRgb;\n","/*\n\tConvert sRGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz50 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.436065742824811 * r +\n\t\t\t0.3851514688337912 * g +\n\t\t\t0.14307845442264197 * b,\n\t\ty:\n\t\t\t0.22249319175623702 * r +\n\t\t\t0.7168870538238823 * g +\n\t\t\t0.06061979053616537 * b,\n\t\tz:\n\t\t\t0.013923904500943465 * r +\n\t\t\t0.09708128566574634 * g +\n\t\t\t0.7140993584005155 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz50;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(z / D50.Z);\n\n\tlet res = {\n\t\tmode: 'lab',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLab;\n","import convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\n\nconst convertRgbToLab = rgb => {\n\tlet res = convertXyz50ToLab(convertRgbToXyz50(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 125) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 125) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLab;\n","import convertLabToRgb from './convertLabToRgb.js';\nimport convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertRgbToLab from './convertRgbToLab.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\nimport parseLab from './parseLab.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'lab',\n\n\ttoMode: {\n\t\txyz50: convertLabToXyz50,\n\t\trgb: convertLabToRgb\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab,\n\t\trgb: convertRgbToLab\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\n\tparse: [parseLab],\n\tserialize: c =>\n\t\t`lab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLab65ToXyz65;\n","import convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst convertLab65ToRgb = lab => convertXyz65ToRgb(convertLab65ToXyz65(lab));\n\nexport default convertLab65ToRgb;\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToLab65;\n","import convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\n\nconst convertRgbToLab65 = rgb => {\n\tlet res = convertXyz65ToLab65(convertRgbToXyz65(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab65;\n","import convertLab65ToRgb from './convertLab65ToRgb.js';\nimport convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertRgbToLab65 from './convertRgbToLab65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\nimport lab from '../lab/definition.js';\n\nconst definition = {\n\t...lab,\n\tmode: 'lab65',\n\n\tparse: ['--lab-d65'],\n\tserialize: '--lab-d65',\n\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65,\n\t\trgb: convertLab65ToRgb\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65,\n\t\trgb: convertRgbToLab65\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lab-to-lch\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLabToLch = ({ l, a, b, alpha }, mode = 'lch') => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = { mode, l, c };\n\tif (c) res.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLabToLch;\n","/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lch-to-lab\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLchToLab = ({ l, c, h, alpha }, mode = 'lab') => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLchToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 150) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLch;\n","import convertLabToLch from './convertLabToLch.js';\nimport convertLchToLab from './convertLchToLab.js';\nimport convertLabToRgb from '../lab/convertLabToRgb.js';\nimport convertRgbToLab from '../lab/convertRgbToLab.js';\nimport parseLch from './parseLch.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'lch',\n\n\ttoMode: {\n\t\tlab: convertLchToLab,\n\t\trgb: c => convertLabToRgb(convertLchToLab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab(c)),\n\t\tlab: convertLabToLch\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\n\tparse: [parseLch],\n\tserialize: c =>\n\t\t`lch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport lch from '../lch/definition.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'lch65',\n\n\tparse: ['--lch-d65'],\n\tserialize: '--lch-d65',\n\n\ttoMode: {\n\t\tlab65: c => convertLchToLab(c, 'lab65'),\n\t\trgb: c => convertLab65ToRgb(convertLchToLab(c, 'lab65'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab65(c), 'lch65'),\n\t\tlab65: c => convertLabToLch(c, 'lch65')\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","import rgb from '../rgb/definition.js';\nimport convertRgbToLrgb from './convertRgbToLrgb.js';\nimport convertLrgbToRgb from './convertLrgbToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'lrgb',\n\n\ttoMode: {\n\t\trgb: convertLrgbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLrgb\n\t},\n\n\tparse: ['srgb-linear'],\n\tserialize: 'srgb-linear'\n};\n\nexport default definition;\n","const convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.pow(l + 0.3963377773761749 * a + 0.2158037573099136 * b, 3);\n\tlet M = Math.pow(l - 0.1055613458156586 * a - 0.0638541728258133 * b, 3);\n\tlet S = Math.pow(l - 0.0894841775298119 * a - 1.2914855480194092 * b, 3);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t4.0767416360759574 * L -\n\t\t\t3.3077115392580616 * M +\n\t\t\t0.2309699031821044 * S,\n\t\tg:\n\t\t\t-1.2684379732850317 * L +\n\t\t\t2.6097573492876887 * M -\n\t\t\t0.3413193760026573 * S,\n\t\tb:\n\t\t\t-0.0041960761386756 * L -\n\t\t\t0.7034186179359362 * M +\n\t\t\t1.7076146940746117 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertOklabToLrgb;\n","const convertLrgbToOklab = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.cbrt(\n\t\t0.412221469470763 * r + 0.5363325372617348 * g + 0.0514459932675022 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034958178252 * r + 0.6806995506452344 * g + 0.1073969535369406 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.0883024591900564 * r + 0.2817188391361215 * g + 0.6299787016738222 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl:\n\t\t\t0.210454268309314 * L +\n\t\t\t0.7936177747023054 * M -\n\t\t\t0.0040720430116193 * S,\n\t\ta:\n\t\t\t1.9779985324311684 * L -\n\t\t\t2.4285922420485799 * M +\n\t\t\t0.450593709617411 * S,\n\t\tb:\n\t\t\t0.0259040424655478 * L +\n\t\t\t0.7827717124575296 * M -\n\t\t\t0.8086757549230774 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLrgbToOklab;\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\n\nconst convertRgbToOklab = rgb => {\n\tlet res = convertLrgbToOklab(convertRgbToLrgb(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToOklab;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport convertOklabToLrgb from './convertOklabToLrgb.js';\n\nconst convertOklabToRgb = c => convertLrgbToRgb(convertOklabToLrgb(c));\n\nexport default convertOklabToRgb;\n","import { Tok } from '../parse.js';\n\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 0.4) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 0.4) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklab;\n","import convertOklabToLrgb from './convertOklabToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\nimport convertRgbToOklab from './convertRgbToOklab.js';\nimport convertOklabToRgb from './convertOklabToRgb.js';\nimport parseOklab from './parseOklab.js';\n\nimport lab from '../lab/definition.js';\n\n/*\n\tOklab, a perceptual color space for image processing by Björn Ottosson\n\tReference: https://bottosson.github.io/posts/oklab/\n */\n\nconst definition = {\n\t...lab,\n\tmode: 'oklab',\n\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb,\n\t\trgb: convertOklabToRgb\n\t},\n\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab,\n\t\trgb: convertRgbToOklab\n\t},\n\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-0.4, 0.4],\n\t\tb: [-0.4, 0.4]\n\t},\n\n\tparse: [parseOklab],\n\tserialize: c =>\n\t\t`oklab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 0.4) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklch;\n","import lch from '../lch/definition.js';\nimport convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport parseOklch from './parseOklch.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'oklch',\n\n\ttoMode: {\n\t\toklab: c => convertLchToLab(c, 'oklab'),\n\t\trgb: c => convertOklabToRgb(convertLchToLab(c, 'oklab'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToOklab(c), 'oklch'),\n\t\toklab: c => convertLabToLch(c, 'oklch')\n\t},\n\n\tparse: [parseOklch],\n\tserialize: c =>\n\t\t`oklch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, 0.4],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert Display P3 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertP3ToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.486570948648216 * r +\n\t\t\t0.265667693169093 * g +\n\t\t\t0.1982172852343625 * b,\n\t\ty:\n\t\t\t0.2289745640697487 * r +\n\t\t\t0.6917385218365062 * g +\n\t\t\t0.079286914093745 * b,\n\t\tz: 0.0 * r + 0.0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertP3ToXyz65;\n","/*\n\tCIE XYZ D65 values to Display P3.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb(\n\t\t{\n\t\t\tr:\n\t\t\t\tx * 2.4934969119414263 -\n\t\t\t\ty * 0.9313836179191242 -\n\t\t\t\t0.402710784450717 * z,\n\t\t\tg:\n\t\t\t\tx * -0.8294889695615749 +\n\t\t\t\ty * 1.7626640603183465 +\n\t\t\t\t0.0236246858419436 * z,\n\t\t\tb:\n\t\t\t\tx * 0.0358458302437845 -\n\t\t\t\ty * 0.0761723892680418 +\n\t\t\t\t0.9568845240076871 * z\n\t\t},\n\t\t'p3'\n\t);\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToP3;\n","import rgb from '../rgb/definition.js';\nimport convertP3ToXyz65 from './convertP3ToXyz65.js';\nimport convertXyz65ToP3 from './convertXyz65ToP3.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'p3',\n\tparse: ['display-p3'],\n\tserialize: 'display-p3',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToP3(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToP3\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertP3ToXyz65(color)),\n\t\txyz65: convertP3ToXyz65\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D50 values to ProPhoto RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1 / 1.8);\n\t}\n\treturn 16 * v;\n};\n\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'prophoto',\n\t\tr: gamma(\n\t\t\tx * 1.3457868816471585 -\n\t\t\t\ty * 0.2555720873797946 -\n\t\t\t\t0.0511018649755453 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.5446307051249019 +\n\t\t\t\ty * 1.5082477428451466 +\n\t\t\t\t0.0205274474364214 * z\n\t\t),\n\t\tb: gamma(x * 0.0 + y * 0.0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToProphoto;\n","/*\n\tConvert ProPhoto RGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1.8);\n\t}\n\treturn v / 16;\n};\n\nconst convertProphotoToXyz50 = prophoto => {\n\tlet r = linearize(prophoto.r);\n\tlet g = linearize(prophoto.g);\n\tlet b = linearize(prophoto.b);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.7977666449006423 * r +\n\t\t\t0.1351812974005331 * g +\n\t\t\t0.0313477341283922 * b,\n\t\ty:\n\t\t\t0.2880748288194013 * r +\n\t\t\t0.7118352342418731 * g +\n\t\t\t0.0000899369387256 * b,\n\t\tz: 0 * r + 0 * g + 0.8251046025104602 * b\n\t};\n\tif (prophoto.alpha !== undefined) {\n\t\tres.alpha = prophoto.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertProphotoToXyz50;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz50ToProphoto from './convertXyz50ToProphoto.js';\nimport convertProphotoToXyz50 from './convertProphotoToXyz50.js';\n\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\n/*\n\tProPhoto RGB Color space\n\n\tReferences:\n\t\t* https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space\n */\n\nconst definition = {\n\t...rgb,\n\tmode: 'prophoto',\n\tparse: ['prophoto-rgb'],\n\tserialize: 'prophoto-rgb',\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto,\n\t\trgb: color => convertXyz50ToProphoto(convertRgbToXyz50(color))\n\t},\n\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50,\n\t\trgb: color => convertXyz50ToRgb(convertProphotoToXyz50(color))\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D65 values to Rec. 2020\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\nconst gamma = v => {\n\tconst abs = Math.abs(v);\n\tif (abs > β) {\n\t\treturn (Math.sign(v) || 1) * (α * Math.pow(abs, 0.45) - (α - 1));\n\t}\n\treturn 4.5 * v;\n};\n\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'rec2020',\n\t\tr: gamma(\n\t\t\tx * 1.7166511879712683 -\n\t\t\t\ty * 0.3556707837763925 -\n\t\t\t\t0.2533662813736599 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.6666843518324893 +\n\t\t\t\ty * 1.6164812366349395 +\n\t\t\t\t0.0157685458139111 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0176398574453108 -\n\t\t\t\ty * 0.0427706132578085 +\n\t\t\t\t0.9421031212354739 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRec2020;\n","/*\n\tConvert Rec. 2020 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) {\n\t\treturn v / 4.5;\n\t}\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / 0.45);\n};\n\nconst convertRec2020ToXyz65 = rec2020 => {\n\tlet r = linearize(rec2020.r);\n\tlet g = linearize(rec2020.g);\n\tlet b = linearize(rec2020.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.6369580483012911 * r +\n\t\t\t0.1446169035862083 * g +\n\t\t\t0.1688809751641721 * b,\n\t\ty:\n\t\t\t0.262700212011267 * r +\n\t\t\t0.6779980715188708 * g +\n\t\t\t0.059301716469862 * b,\n\t\tz: 0 * r + 0.0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020.alpha !== undefined) {\n\t\tres.alpha = rec2020.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRec2020ToXyz65;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz65ToRec2020 from './convertXyz65ToRec2020.js';\nimport convertRec2020ToXyz65 from './convertRec2020ToXyz65.js';\n\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'rec2020',\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020,\n\t\trgb: color => convertXyz65ToRec2020(convertRgbToXyz65(color))\n\t},\n\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertRec2020ToXyz65(color))\n\t},\n\n\tparse: ['rec2020'],\n\tserialize: 'rec2020'\n};\n\nexport default definition;\n","/*\n\tThe XYZ D50 color space\n\t-----------------------\n */\n\nimport convertXyz50ToRgb from './convertXyz50ToRgb.js';\nimport convertXyz50ToLab from '../lab/convertXyz50ToLab.js';\nimport convertRgbToXyz50 from './convertRgbToXyz50.js';\nimport convertLabToXyz50 from '../lab/convertLabToXyz50.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz50',\n\tparse: ['xyz-d50'],\n\tserialize: 'xyz-d50',\n\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb,\n\t\tlab: convertXyz50ToLab\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz50,\n\t\tlab: convertLabToXyz50\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tranges: {\n\t\tx: [0, 0.964],\n\t\ty: [0, 0.999],\n\t\tz: [0, 0.825]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tChromatic adaptation of CIE XYZ from D65 to D50 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz65ToXyz50 = xyz65 => {\n\tlet { x, y, z, alpha } = xyz65;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t1.0479298208405488 * x +\n\t\t\t0.0229467933410191 * y -\n\t\t\t0.0501922295431356 * z,\n\t\ty:\n\t\t\t0.0296278156881593 * x +\n\t\t\t0.990434484573249 * y -\n\t\t\t0.0170738250293851 * z,\n\t\tz:\n\t\t\t-0.0092430581525912 * x +\n\t\t\t0.0150551448965779 * y +\n\t\t\t0.7518742899580008 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToXyz50;\n","/*\n\tChromatic adaptation of CIE XYZ from D50 to D65 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz50ToXyz65 = xyz50 => {\n\tlet { x, y, z, alpha } = xyz50;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.9554734527042182 * x -\n\t\t\t0.0230985368742614 * y +\n\t\t\t0.0632593086610217 * z,\n\t\ty:\n\t\t\t-0.0283697069632081 * x +\n\t\t\t1.0099954580058226 * y +\n\t\t\t0.021041398966943 * z,\n\t\tz:\n\t\t\t0.0123140016883199 * x -\n\t\t\t0.0205076964334779 * y +\n\t\t\t1.3303659366080753 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToXyz65;\n","/*\n\tThe XYZ D65 color space\n\t-----------------------\n */\n\nimport convertXyz65ToRgb from './convertXyz65ToRgb.js';\nimport convertRgbToXyz65 from './convertRgbToXyz65.js';\n\nimport convertXyz65ToXyz50 from './convertXyz65ToXyz50.js';\nimport convertXyz50ToXyz65 from './convertXyz50ToXyz65.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz65',\n\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb,\n\t\txyz50: convertXyz65ToXyz50\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz65,\n\t\txyz50: convertXyz50ToXyz65\n\t},\n\n\tranges: {\n\t\tx: [0, 0.95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tparse: ['xyz', 'xyz-d65'],\n\tserialize: 'xyz-d65',\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// Color space definitions\nimport modeA98 from '../a98/definition.js';\nimport modeHsl from '../hsl/definition.js';\nimport modeHsv from '../hsv/definition.js';\nimport modeHwb from '../hwb/definition.js';\nimport modeLab from '../lab/definition.js';\nimport modeLab65 from '../lab65/definition.js';\nimport modeLch from '../lch/definition.js';\nimport modeLch65 from '../lch65/definition.js';\nimport modeLrgb from '../lrgb/definition.js';\nimport modeOklab from '../oklab/definition.js';\nimport modeOklch from '../oklch/definition.js';\nimport modeP3 from '../p3/definition.js';\nimport modeProphoto from '../prophoto/definition.js';\nimport modeRec2020 from '../rec2020/definition.js';\nimport modeRgb from '../rgb/definition.js';\nimport modeXyz50 from '../xyz50/definition.js';\nimport modeXyz65 from '../xyz65/definition.js';\nimport { useMode } from '../modes.js';\n\nexport const a98 = useMode(modeA98);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lrgb = useMode(modeLrgb);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\n","export const M = [-0.14861, 1.78277, -0.29227, -0.90649, 1.97294, 0];\n\nexport const degToRad = Math.PI / 180;\nexport const radToDeg = 180 / Math.PI;\n","/*\n\tConvert a RGB color to the Cubehelix HSL color space.\n\n\tThis computation is not present in Green's paper:\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\t...but can be derived from the inverse, HSL to RGB conversion.\n\n\tIt matches the math in Mike Bostock's D3 implementation:\n\n\thttps://github.com/d3/d3-color/blob/master/src/cubehelix.js\n */\n\nimport { radToDeg, M } from './constants.js';\n\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\n\nconst convertRgbToCubehelix = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet l = (BCAD * b + r * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\n\tlet res = {\n\t\tmode: 'cubehelix',\n\t\tl: l,\n\t\ts:\n\t\t\tl === 0 || l === 1\n\t\t\t\t? undefined\n\t\t\t\t: Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== undefined) res.alpha = alpha;\n\n\treturn res;\n};\n\nexport default convertRgbToCubehelix;\n","import { degToRad, M } from './constants.js';\n\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: 'rgb' };\n\n\th = (h === undefined ? 0 : h + 120) * degToRad;\n\tif (l === undefined) l = 0;\n\n\tlet amp = s === undefined ? 0 : s * l * (1 - l);\n\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertCubehelixToRgb;\n","/* \n\tDave Green's Cubehelix\n\t----------------------\n\n\tGreen, D. A., 2011, \"A colour scheme for the display of astronomical intensity images\", \n\tBulletin of the Astronomical Society of India, 39, 289. (2011BASI...39..289G at ADS.) \n\n\thttps://www.mrao.cam.ac.uk/%7Edag/CUBEHELIX/\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\tAlthough Cubehelix was defined to be a method to obtain a colour scheme,\n\tit actually contains a definition of a colour space, as identified by \n\tMike Bostock and implemented in D3.js.\n\n\tGreen's paper introduces the following terminology:\n\n\t* \ta `lightness` dimension in the interval [0, 1] \n\t\ton which we interpolate to obtain the colour scheme\n\t*\ta `start` colour that is analogous to a Hue in HSL space\n\t*\ta number of `rotations` around the Hue cylinder.\n\t*\ta `hue` parameter which should more appropriately be called `saturation`\n\t\n\tAs such, the original definition of the Cubehelix scheme is actually an\n\tinterpolation between two colors in the Cubehelix space:\n\n\tH: start \t\t\t\tH: start + 360 * rotations\n\tS: hue \t\t\t->\t\tS: hue\n\tL: 0\t\t\t\t\tL: 1\n\n\tWe can therefore extend the interpolation to any two colors in this space,\n\twith a variable Saturation and a Lightness interval other than the fixed 0 -> 1.\n*/\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport convertRgbToCubehelix from './convertRgbToCubehelix.js';\nimport convertCubehelixToRgb from './convertCubehelixToRgb.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'cubehelix',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--cubehelix'],\n\tserialize: '--cubehelix',\n\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToCubehelix\n\t},\n\n\ttoMode: {\n\t\trgb: convertCubehelixToRgb\n\t},\n\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const kE = 1;\nexport const kCH = 1;\nexport const θ = (26 / 180) * Math.PI;\nexport const cosθ = Math.cos(θ);\nexport const sinθ = Math.sin(θ);\nexport const factor = 100 / Math.log(139 / 100); // ~ 303.67\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\n\n/*\n\tConvert DIN99o LCh to CIELab D65\n\t--------------------------------\n */\n\nconst convertDlchToLab65 = ({ l, c, h, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (c === undefined) c = 0;\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: (Math.exp((l * kE) / factor) - 1) / 0.0039\n\t};\n\n\tlet G = (Math.exp(0.0435 * c * kCH * kE) - 1) / 0.075;\n\tlet e = G * Math.cos((h / 180) * Math.PI - θ);\n\tlet f = G * Math.sin((h / 180) * Math.PI - θ);\n\tres.a = e * cosθ - (f / 0.83) * sinθ;\n\tres.b = e * sinθ + (f / 0.83) * cosθ;\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertDlchToLab65;\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\nimport normalizeHue from '../util/normalizeHue.js';\n\n/*\n\tConvert CIELab D65 to DIN99o LCh\n\t================================\n */\n\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet e = a * cosθ + b * sinθ;\n\tlet f = 0.83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e * e + f * f);\n\tlet res = {\n\t\tmode: 'dlch',\n\t\tl: (factor / kE) * Math.log(1 + 0.0039 * l),\n\t\tc: Math.log(1 + 0.075 * G) / (0.0435 * kCH * kE)\n\t};\n\n\tif (res.c) {\n\t\tres.h = normalizeHue(((Math.atan2(f, e) + θ) / Math.PI) * 180);\n\t}\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLab65ToDlch;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport convertDlchToLab65 from '../dlch/convertDlchToLab65.js';\nimport convertLab65ToDlch from '../dlch/convertLab65ToDlch.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst convertDlabToLab65 = c => convertDlchToLab65(convertLabToLch(c, 'dlch'));\nconst convertLab65ToDlab = c => convertLchToLab(convertLab65ToDlch(c), 'dlab');\n\nconst definition = {\n\tmode: 'dlab',\n\n\tparse: ['--din99o-lab'],\n\tserialize: '--din99o-lab',\n\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: c => convertLab65ToRgb(convertDlabToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: c => convertLab65ToDlab(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertDlchToLab65 from './convertDlchToLab65.js';\nimport convertLab65ToDlch from './convertLab65ToDlch.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'dlch',\n\n\tparse: ['--din99o-lch'],\n\tserialize: '--din99o-lch',\n\n\ttoMode: {\n\t\tlab65: convertDlchToLab65,\n\t\tdlab: c => convertLchToLab(c, 'dlab'),\n\t\trgb: c => convertLab65ToRgb(convertDlchToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch,\n\t\tdlab: c => convertLabToLch(c, 'dlch'),\n\t\trgb: c => convertLab65ToDlch(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (i === undefined) i = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: i * (1 - s), g: i * (1 - s), b: i * (1 - s) };\n\t}\n\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsi({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsi',\n\t\ts: r + g + b === 0 ? 0 : 1 - (3 * m) / (r + g + b),\n\t\ti: (r + g + b) / 3\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsiToRgb from './convertHsiToRgb.js';\nimport convertRgbToHsi from './convertRgbToHsi.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsi',\n\n\ttoMode: {\n\t\trgb: convertHsiToRgb\n\t},\n\n\tparse: ['--hsi'],\n\tserialize: '--hsi',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsi\n\t},\n\n\tchannels: ['h', 's', 'i', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tRelative XYZ has Y=1 for media white,\n\tBT.2048 says media white Y=203 (at PQ 58).\n\tSee: https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2408-3-2019-PDF-E.pdf\n*/\nexport const YW = 203;\n","/*\n\thttps://en.wikipedia.org/wiki/Transfer_functions_in_imaging\n*/\n\nexport const M1 = 0.1593017578125;\nexport const M2 = 78.84375;\nexport const C1 = 0.8359375;\nexport const C2 = 18.8515625;\nexport const C3 = 18.6875;\n\n/*\n\tPerceptual Quantizer, as defined in Rec. BT 2100-2 (2018)\n\n\t* https://www.itu.int/rec/R-REC-BT.2100-2-201807-I/en\n\t* https://en.wikipedia.org/wiki/Perceptual_quantizer\n*/\n\n/* PQ EOTF, defined for `v` in [0,1]. */\nexport function transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c - C1) / (C2 - C3 * c), 1 / M1);\n}\n\n/* PQ EOTF^-1, defined for `v` in [0, 1e4]. */\nexport function transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c) / (1 + C3 * c), M2);\n}\n","import { YW } from '../hdr/constants.js';\nimport { transferPqDecode } from '../hdr/transfer.js';\n\nconst toRel = c => Math.max(c / YW, 0);\n\nconst convertItpToXyz65 = ({ i, t, p, alpha }) => {\n\tif (i === undefined) i = 0;\n\tif (t === undefined) t = 0;\n\tif (p === undefined) p = 0;\n\n\tconst l = transferPqDecode(\n\t\ti + 0.008609037037932761 * t + 0.11102962500302593 * p\n\t);\n\tconst m = transferPqDecode(\n\t\ti - 0.00860903703793275 * t - 0.11102962500302599 * p\n\t);\n\tconst s = transferPqDecode(\n\t\ti + 0.5600313357106791 * t - 0.32062717498731885 * p\n\t);\n\n\tconst res = {\n\t\tmode: 'xyz65',\n\t\tx: toRel(\n\t\t\t2.0701522183894219 * l -\n\t\t\t\t1.3263473389671556 * m +\n\t\t\t\t0.2066510476294051 * s\n\t\t),\n\t\ty: toRel(\n\t\t\t0.3647385209748074 * l +\n\t\t\t\t0.680566024947227 * m -\n\t\t\t\t0.0453045459220346 * s\n\t\t),\n\t\tz: toRel(\n\t\t\t-0.049747207535812 * l -\n\t\t\t\t0.0492609666966138 * m +\n\t\t\t\t1.1880659249923042 * s\n\t\t)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertItpToXyz65;\n","import { YW } from '../hdr/constants.js';\nimport { transferPqEncode } from '../hdr/transfer.js';\n\nconst toAbs = (c = 0) => Math.max(c * YW, 0);\n\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(\n\t\t0.3592832590121217 * absX +\n\t\t\t0.6976051147779502 * absY -\n\t\t\t0.0358915932320289 * absZ\n\t);\n\tconst m = transferPqEncode(\n\t\t-0.1920808463704995 * absX +\n\t\t\t1.1004767970374323 * absY +\n\t\t\t0.0753748658519118 * absZ\n\t);\n\tconst s = transferPqEncode(\n\t\t0.0070797844607477 * absX +\n\t\t\t0.0748396662186366 * absY +\n\t\t\t0.8433265453898765 * absZ\n\t);\n\n\tconst i = 0.5 * l + 0.5 * m;\n\tconst t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;\n\tconst p = 4.378173828125 * l - 4.24560546875 * m - 0.132568359375 * s;\n\n\tconst res = { mode: 'itp', i, t, p };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToItp;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertItpToXyz65 from './convertItpToXyz65.js';\nimport convertXyz65ToItp from './convertXyz65ToItp.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\n/*\n ICtCp (or ITP) color space, as defined in ITU-R Recommendation BT.2100.\n\n ICtCp is drafted to be supported in CSS within\n [CSS Color HDR Module Level 1](https://drafts.csswg.org/css-color-hdr/#ICtCp) spec.\n*/\n\nconst definition = {\n\tmode: 'itp',\n\tchannels: ['i', 't', 'p', 'alpha'],\n\tparse: ['--ictcp'],\n\tserialize: '--ictcp',\n\n\ttoMode: {\n\t\txyz65: convertItpToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertItpToXyz65(color))\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp,\n\t\trgb: color => convertXyz65ToItp(convertRgbToXyz65(color))\n\t},\n\n\tranges: {\n\t\ti: [0, 0.581],\n\t\tt: [-0.369, 0.272],\n\t\tp: [-0.164, 0.331]\n\t},\n\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqEncode = v => {\n\tif (v < 0) return 0;\n\tlet vn = Math.pow(v / 10000, n);\n\treturn Math.pow((C1 + C2 * vn) / (1 + C3 * vn), p);\n};\n\n// Convert to Absolute XYZ\nconst abs = (v = 0) => Math.max(v * 203, 0);\n\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\n\tlet xp = 1.15 * x - 0.15 * z;\n\tlet yp = 0.66 * y + 0.34 * x;\n\n\tlet l = jabPqEncode(0.41478972 * xp + 0.579999 * yp + 0.014648 * z);\n\tlet m = jabPqEncode(-0.20151 * xp + 1.120649 * yp + 0.0531008 * z);\n\tlet s = jabPqEncode(-0.0166008 * xp + 0.2648 * yp + 0.6684799 * z);\n\n\tlet i = (l + m) / 2;\n\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj: (0.44 * i) / (1 - 0.56 * i) - d0,\n\t\ta: 3.524 * l - 4.066708 * m + 0.542708 * s,\n\t\tb: 0.199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToJab;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqDecode = v => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 10000 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / n);\n};\n\nconst rel = v => v / 203;\n\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === undefined) j = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet i = (j + d0) / (0.44 + 0.56 * (j + d0));\n\n\tlet l = jabPqDecode(i + 0.13860504 * a + 0.058047316 * b);\n\tlet m = jabPqDecode(i - 0.13860504 * a - 0.058047316 * b);\n\tlet s = jabPqDecode(i - 0.096019242 * a - 0.8118919 * b);\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: rel(\n\t\t\t1.661373024652174 * l -\n\t\t\t\t0.914523081304348 * m +\n\t\t\t\t0.23136208173913045 * s\n\t\t),\n\t\ty: rel(\n\t\t\t-0.3250758611844533 * l +\n\t\t\t\t1.571847026732543 * m -\n\t\t\t\t0.21825383453227928 * s\n\t\t),\n\t\tz: rel(-0.090982811 * l - 0.31272829 * m + 1.5227666 * s)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertJabToXyz65;\n","/*\n\tConvert sRGB to JzAzBz.\n\n\tFor achromatic sRGB colors, adjust the equivalent JzAzBz color\n\tto be achromatic as well, insteading of having a very slight chroma.\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\n\nconst convertRgbToJab = rgb => {\n\tlet res = convertXyz65ToJab(convertRgbToXyz65(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToJab;\n","import convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\n\nconst convertJabToRgb = color => convertXyz65ToRgb(convertJabToXyz65(color));\n\nexport default convertJabToRgb;\n","/*\n\tThe JzAzBz color space.\n\n\tBased on:\n\n\tMuhammad Safdar, Guihua Cui, Youn Jin Kim, and Ming Ronnier Luo, \n\t\"Perceptually uniform color space for image signals \n\tincluding high dynamic range and wide gamut,\" \n\tOpt. Express 25, 15131-15151 (2017) \n\n\thttps://doi.org/10.1364/OE.25.015131\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\nimport convertRgbToJab from './convertRgbToJab.js';\nimport convertJabToRgb from './convertJabToRgb.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'jab',\n\tchannels: ['j', 'a', 'b', 'alpha'],\n\n\tparse: ['--jzazbz'],\n\tserialize: '--jzazbz',\n\n\tfromMode: {\n\t\trgb: convertRgbToJab,\n\t\txyz65: convertXyz65ToJab\n\t},\n\n\ttoMode: {\n\t\trgb: convertJabToRgb,\n\t\txyz65: convertJabToXyz65\n\t},\n\n\tranges: {\n\t\tj: [0, 0.222],\n\t\ta: [-0.109, 0.129],\n\t\tb: [-0.185, 0.134]\n\t},\n\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: 'jch',\n\t\tj,\n\t\tc\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertJabToJch;\n","const convertJchToJab = ({ j, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertJchToJab;\n","import convertJabToJch from './convertJabToJch.js';\nimport convertJchToJab from './convertJchToJab.js';\nimport convertJabToRgb from '../jab/convertJabToRgb.js';\nimport convertRgbToJab from '../jab/convertRgbToJab.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'jch',\n\n\tparse: ['--jzczhz'],\n\tserialize: '--jzczhz',\n\n\ttoMode: {\n\t\tjab: convertJchToJab,\n\t\trgb: c => convertJabToRgb(convertJchToJab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertJabToJch(convertRgbToJab(c)),\n\t\tjab: convertJabToJch\n\t},\n\n\tchannels: ['j', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tj: [0, 0.221],\n\t\tc: [0, 0.19],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\tlet c = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: 'lchuv',\n\t\tl: l,\n\t\tc: c\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(v, u) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLuvToLchuv;\n","const convertLchuvToLuv = ({ l, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl: l,\n\t\tu: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tv: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLchuvToLuv;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst l_fn = value => (value <= e ? k * value : 116 * Math.cbrt(value) - 16);\n\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn(x, y, z);\n\tlet v = v_fn(x, y, z);\n\n\t// guard against NaNs produced by `xyz(0 0 0)` black\n\tif (!isFinite(u) || !isFinite(v)) {\n\t\tl = u = v = 0;\n\t} else {\n\t\tu = 13 * l * (u - un);\n\t\tv = 13 * l * (v - vn);\n\t}\n\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLuv;\n","import { k } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (l === 0) {\n\t\treturn { mode: 'xyz50', x: 0, y: 0, z: 0 };\n\t}\n\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet x = (y * (9 * up)) / (4 * vp);\n\tlet z = (y * (12 - 3 * up - 20 * vp)) / (4 * vp);\n\n\tlet res = { mode: 'xyz50', x, y, z };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLuvToXyz50;\n","/*\n\tCIELChuv color space\n\t--------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertLuvToLchuv from './convertLuvToLchuv.js';\nimport convertLchuvToLuv from './convertLchuvToLuv.js';\nimport convertXyz50ToLuv from '../luv/convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from '../luv/convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst convertRgbToLchuv = rgb =>\n\tconvertLuvToLchuv(convertXyz50ToLuv(convertRgbToXyz50(rgb)));\nconst convertLchuvToRgb = lchuv =>\n\tconvertXyz50ToRgb(convertLuvToXyz50(convertLchuvToLuv(lchuv)));\n\nconst definition = {\n\tmode: 'lchuv',\n\n\ttoMode: {\n\t\tluv: convertLchuvToLuv,\n\t\trgb: convertLchuvToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tparse: ['--lchuv'],\n\tserialize: '--lchuv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tCIELUV color space\n\t------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertXyz50ToLuv from './convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from './convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'luv',\n\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50,\n\t\trgb: luv => convertXyz50ToRgb(convertLuvToXyz50(luv))\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv,\n\t\trgb: rgb => convertXyz50ToLuv(convertRgbToXyz50(rgb))\n\t},\n\n\tchannels: ['l', 'u', 'v', 'alpha'],\n\n\tparse: ['--luv'],\n\tserialize: '--luv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\n\nexport function toe(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (\n\t\t0.5 *\n\t\t(k_3 * x -\n\t\t\tk_1 +\n\t\t\tMath.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x))\n\t);\n}\n\nexport function toe_inv(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\n\n// Finds the maximum saturation possible for a given hue that fits in sRGB\n// Saturation here is defined as S = C/L\n// a and b must be normalized so a^2 + b^2 == 1\nfunction compute_max_saturation(a, b) {\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (-1.88170328 * a - 0.80936493 * b > 1) {\n\t\t// Red component\n\t\tk0 = +1.19086277;\n\t\tk1 = +1.76576728;\n\t\tk2 = +0.59662641;\n\t\tk3 = +0.75515197;\n\t\tk4 = +0.56771245;\n\t\twl = +4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = +0.2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\t// Green component\n\t\tk0 = +0.73956515;\n\t\tk1 = -0.45954404;\n\t\tk2 = +0.08285427;\n\t\tk3 = +0.1254107;\n\t\tk4 = +0.14503204;\n\t\twl = -1.2684380046;\n\t\twm = +2.6097574011;\n\t\tws = -0.3413193965;\n\t} else {\n\t\t// Blue component\n\t\tk0 = +1.35733652;\n\t\tk1 = -0.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -0.50559606;\n\t\tk4 = +0.00692167;\n\t\twl = -0.0041960863;\n\t\twm = -0.7034186147;\n\t\tws = +1.707614701;\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\n\t// Do one step Halley's method to get closer\n\t// this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite\n\t// this should be sufficient for most applications, otherwise do two/three steps\n\n\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\n\t\tlet f = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\n\t\tS = S - (f * f1) / (f1 * f1 - 0.5 * f * f2);\n\t}\n\n\treturn S;\n}\n\nexport function find_cusp(a, b) {\n\t// First, find the maximum saturation (saturation S = C/L)\n\tlet S_cusp = compute_max_saturation(a, b);\n\n\t// Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:\n\tlet rgb = convertOklabToLrgb({ l: 1, a: S_cusp * a, b: S_cusp * b });\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb.r, rgb.g, rgb.b));\n\tlet C_cusp = L_cusp * S_cusp;\n\n\treturn [L_cusp, C_cusp];\n}\n\n// Finds intersection of the line defined by\n// L = L0 * (1 - t) + t * L1;\n// C = t * C1;\n// a and b must be normalized so a^2 + b^2 == 1\nfunction find_gamut_intersection(a, b, L1, C1, L0, cusp = null) {\n\tif (!cusp) {\n\t\t// Find the cusp of the gamut triangle\n\t\tcusp = find_cusp(a, b);\n\t}\n\n\t// Find the intersection for upper and lower half seprately\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1 <= 0) {\n\t\t// Lower half\n\n\t\tt = (cusp[1] * L0) / (C1 * cusp[0] + cusp[1] * (L0 - L1));\n\t} else {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (L0 - 1)) / (C1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\n\t\t// Then one step Halley's method\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1;\n\n\t\t\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\t\t\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\t\t\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\n\t\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1;\n\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\n\t\t\t\tlet r =\n\t\t\t\t\t4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s - 1;\n\t\t\t\tlet r1 =\n\t\t\t\t\t4.0767416621 * ldt -\n\t\t\t\t\t3.3077115913 * mdt +\n\t\t\t\t\t0.2309699292 * sdt;\n\t\t\t\tlet r2 =\n\t\t\t\t\t4.0767416621 * ldt2 -\n\t\t\t\t\t3.3077115913 * mdt2 +\n\t\t\t\t\t0.2309699292 * sdt2;\n\n\t\t\t\tlet u_r = r1 / (r1 * r1 - 0.5 * r * r2);\n\t\t\t\tlet t_r = -r * u_r;\n\n\t\t\t\tlet g =\n\t\t\t\t\t-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s - 1;\n\t\t\t\tlet g1 =\n\t\t\t\t\t-1.2684380046 * ldt +\n\t\t\t\t\t2.6097574011 * mdt -\n\t\t\t\t\t0.3413193965 * sdt;\n\t\t\t\tlet g2 =\n\t\t\t\t\t-1.2684380046 * ldt2 +\n\t\t\t\t\t2.6097574011 * mdt2 -\n\t\t\t\t\t0.3413193965 * sdt2;\n\n\t\t\t\tlet u_g = g1 / (g1 * g1 - 0.5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\n\t\t\t\tlet b =\n\t\t\t\t\t-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 =\n\t\t\t\t\t-0.0041960863 * ldt -\n\t\t\t\t\t0.7034186147 * mdt +\n\t\t\t\t\t1.707614701 * sdt;\n\t\t\t\tlet b2 =\n\t\t\t\t\t-0.0041960863 * ldt2 -\n\t\t\t\t\t0.7034186147 * mdt2 +\n\t\t\t\t\t1.707614701 * sdt2;\n\n\t\t\t\tlet u_b = b1 / (b1 * b1 - 0.5 * b * b2);\n\t\t\t\tlet t_b = -b * u_b;\n\n\t\t\t\tt_r = u_r >= 0 ? t_r : 10e5;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 10e5;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 10e5;\n\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn t;\n}\n\nexport function get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) {\n\t\tcusp = find_cusp(a_, b_);\n\t}\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\n\nexport function get_ST_mid(a_, b_) {\n\tlet S =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\treturn [S, T];\n}\n\nexport function get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\n\tlet S_mid =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T_mid =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\tlet k = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid =\n\t\t0.9 *\n\t\tk *\n\t\tMath.sqrt(\n\t\t\tMath.sqrt(\n\t\t\t\t1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))\n\t\t\t)\n\t\t);\n\n\tC_a = L * 0.4;\n\tC_b = (1 - L) * 0.8;\n\tlet C_0 = Math.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b)));\n\treturn [C_0, C_mid, C_max];\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport { get_Cs, toe } from './helpers.js';\n\nexport default function convertOklabToOkhsl(lab) {\n\tconst l = lab.l !== undefined ? lab.l : 0;\n\tconst a = lab.a !== undefined ? lab.a : 0;\n\tconst b = lab.b !== undefined ? lab.b : 0;\n\n\tconst ret = { mode: 'okhsl', l: toe(l) };\n\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\tlet c = Math.sqrt(a * a + b * b);\n\tif (!c) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c, b / c);\n\tlet s;\n\tif (c < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = 0.8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = t * 0.8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = 0.8 + 0.2 * t;\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\treturn ret;\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport { toe_inv, get_Cs } from './helpers.js';\n\nexport default function convertOkhslToOklab(hsl) {\n\tlet h = hsl.h !== undefined ? hsl.h : 0;\n\tlet s = hsl.s !== undefined ? hsl.s : 0;\n\tlet l = hsl.l !== undefined ? hsl.l : 0;\n\n\tconst ret = { mode: 'oklab', l: toe_inv(l) };\n\n\tif (hsl.alpha !== undefined) {\n\t\tret.alpha = hsl.alpha;\n\t}\n\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\n\tlet a_ = Math.cos((h / 180) * Math.PI);\n\tlet b_ = Math.sin((h / 180) * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < 0.8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = 0.8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - 0.8);\n\t\tk_0 = C_mid;\n\t\tk_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + (t * k_1) / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsl from './convertOklabToOkhsl.js';\nimport convertOkhslToOklab from './convertOkhslToOklab.js';\n\nimport modeHsl from '../hsl/definition.js';\n\nconst modeOkhsl = {\n\t...modeHsl,\n\tmode: 'okhsl',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--okhsl'],\n\tserialize: '--okhsl',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: c => convertOklabToOkhsl(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhslToOklab(c))\n\t}\n};\n\nexport default modeOkhsl;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv, toe } from '../okhsl/helpers.js';\n\nexport default function convertOklabToOkhsv(lab) {\n\tlet l = lab.l !== undefined ? lab.l : 0;\n\tlet a = lab.a !== undefined ? lab.a : 0;\n\tlet b = lab.b !== undefined ? lab.b : 0;\n\n\tlet c = Math.sqrt(a * a + b * b);\n\n\t// TODO: c = 0\n\tlet a_ = c ? a / c : 1;\n\tlet b_ = c ? b / c : 1;\n\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = 0.5;\n\tlet k = 1 - S_0 / S_max;\n\n\tlet t = T / (c + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c;\n\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = (C_v * L_vt) / L_v;\n\n\tlet rgb_scale = convertOklabToLrgb({ l: L_vt, a: a_ * C_vt, b: b_ * C_vt });\n\tlet scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tl = l / scale_L;\n\tc = ((c / scale_L) * toe(l)) / l;\n\tl = toe(l);\n\n\tconst ret = {\n\t\tmode: 'okhsv',\n\t\ts: c ? ((S_0 + T) * C_v) / (T * S_0 + T * k * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) {\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\treturn ret;\n}\n","/*\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv } from '../okhsl/helpers.js';\n\nexport default function convertOkhsvToOklab(hsv) {\n\tconst ret = { mode: 'oklab' };\n\tif (hsv.alpha !== undefined) {\n\t\tret.alpha = hsv.alpha;\n\t}\n\n\tconst h = hsv.h !== undefined ? hsv.h : 0;\n\tconst s = hsv.s !== undefined ? hsv.s : 0;\n\tconst v = hsv.v !== undefined ? hsv.v : 0;\n\n\tconst a_ = Math.cos((h / 180) * Math.PI);\n\tconst b_ = Math.sin((h / 180) * Math.PI);\n\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = 0.5;\n\tconst k = 1 - S_0 / S_max;\n\tconst L_v = 1 - (s * S_0) / (S_0 + T - T * k * s);\n\tconst C_v = (s * T * S_0) / (S_0 + T - T * k * s);\n\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = (C_v * L_vt) / L_v;\n\tconst rgb_scale = convertOklabToLrgb({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = (C_v * L_new) / L_v;\n\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsv from './convertOklabToOkhsv.js';\nimport convertOkhsvToOklab from './convertOkhsvToOklab.js';\n\nimport modeHsv from '../hsv/definition.js';\n\nconst modeOkhsv = {\n\t...modeHsv,\n\tmode: 'okhsv',\n\tchannels: ['h', 's', 'v', 'alpha'],\n\tparse: ['--okhsv'],\n\tserialize: '--okhsv',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: c => convertOklabToOkhsv(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhsvToOklab(c))\n\t}\n};\n\nexport default modeOkhsv;\n","export const bias = 0.00379307325527544933;\nexport const bias_cbrt = Math.cbrt(bias);\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.cbrt(v) - bias_cbrt;\n\nconst convertRgbToXyb = color => {\n\tconst { r, g, b, alpha } = convertRgbToLrgb(color);\n\tconst l = transfer(0.3 * r + 0.622 * g + 0.078 * b + bias);\n\tconst m = transfer(0.23 * r + 0.692 * g + 0.078 * b + bias);\n\tconst s = transfer(\n\t\t0.24342268924547819 * r +\n\t\t\t0.20476744424496821 * g +\n\t\t\t0.5518098665095536 * b +\n\t\t\tbias\n\t);\n\tconst res = {\n\t\tmode: 'xyb',\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\t/* Apply default chroma from luma (subtract Y from B) */\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToXyb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.pow(v + bias_cbrt, 3);\n\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (b === undefined) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\t/* Account for chroma from luma: add Y back to B */\n\tconst s = transfer(b + y) - bias;\n\n\tconst res = convertLrgbToRgb({\n\t\tr:\n\t\t\t11.031566904639861 * l -\n\t\t\t9.866943908131562 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tg:\n\t\t\t-3.2541473810744237 * l +\n\t\t\t4.418770377582723 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tb:\n\t\t\t-3.6588512867136815 * l +\n\t\t\t2.7129230459360922 * m +\n\t\t\t1.9459282407775895 * s\n\t});\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertXybToRgb;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertRgbToXyb from './convertRgbToXyb.js';\nimport convertXybToRgb from './convertXybToRgb.js';\n\n/*\n\tThe XYB color space, used in JPEG XL.\n\tReference: https://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf\n*/\n\nconst definition = {\n\tmode: 'xyb',\n\tchannels: ['x', 'y', 'b', 'alpha'],\n\tparse: ['--xyb'],\n\tserialize: '--xyb',\n\n\ttoMode: {\n\t\trgb: convertXybToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyb\n\t},\n\n\tranges: {\n\t\tx: [-0.0154, 0.0281],\n\t\ty: [0, 0.8453],\n\t\tb: [-0.2778, 0.388]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertRgbToYiq = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tconst res = {\n\t\tmode: 'yiq',\n\t\ty: 0.29889531 * r + 0.58662247 * g + 0.11448223 * b,\n\t\ti: 0.59597799 * r - 0.2741761 * g - 0.32180189 * b,\n\t\tq: 0.21147017 * r - 0.52261711 * g + 0.31114694 * b\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToYiq;\n","const convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === undefined) y = 0;\n\tif (i === undefined) i = 0;\n\tif (q === undefined) q = 0;\n\tconst res = {\n\t\tmode: 'rgb',\n\t\tr: y + 0.95608445 * i + 0.6208885 * q,\n\t\tg: y - 0.27137664 * i - 0.6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertYiqToRgb;\n","import convertRgbToYiq from './convertRgbToYiq.js';\nimport convertYiqToRgb from './convertYiqToRgb.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tYIQ Color Space\n\n\tReferences\n\t----------\n\n\tWikipedia:\n\t\thttps://en.wikipedia.org/wiki/YIQ\n\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\n\nconst definition = {\n\tmode: 'yiq',\n\n\ttoMode: {\n\t\trgb: convertYiqToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToYiq\n\t},\n\n\tchannels: ['y', 'i', 'q', 'alpha'],\n\n\tparse: ['--yiq'],\n\tserialize: '--yiq',\n\n\tranges: {\n\t\ti: [-0.595, 0.595],\n\t\tq: [-0.522, 0.522]\n\t},\n\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// From: https://github.com/d3/d3-format/issues/32\n\nconst r = (value, precision) =>\n\tMath.round(value * (precision = Math.pow(10, precision))) / precision;\n\nconst round =\n\t(precision = 4) =>\n\tvalue =>\n\t\ttypeof value === 'number' ? r(value, precision) : value;\n\nexport default round;\n","import converter from './converter.js';\nimport round from './round.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\n\nlet twoDecimals = round(2);\n\nconst clamp = value => Math.max(0, Math.min(1, value || 0));\nconst fixup = value => Math.round(clamp(value) * 255);\n\nconst rgb = converter('rgb');\nconst hsl = converter('hsl');\n\nexport const serializeHex = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet r = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\n\treturn '#' + ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);\n};\n\nexport const serializeHex8 = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet a = fixup(color.alpha !== undefined ? color.alpha : 1);\n\treturn serializeHex(color) + ((1 << 8) | a).toString(16).slice(1);\n};\n\nexport const serializeRgb = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet r = fixup(color.r);\n\tlet g = fixup(color.g);\n\tlet b = fixup(color.b);\n\n\tif (color.alpha === undefined || color.alpha === 1) {\n\t\t// opaque color\n\t\treturn `rgb(${r}, ${g}, ${b})`;\n\t} else {\n\t\t// transparent color\n\t\treturn `rgba(${r}, ${g}, ${b}, ${twoDecimals(clamp(color.alpha))})`;\n\t}\n};\n\nexport const serializeHsl = color => {\n\tif (color === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst h = twoDecimals(color.h || 0);\n\tconst s = twoDecimals(clamp(color.s) * 100) + '%';\n\tconst l = twoDecimals(clamp(color.l) * 100) + '%';\n\n\tif (color.alpha === undefined || color.alpha === 1) {\n\t\t// opaque color\n\t\treturn `hsl(${h}, ${s}, ${l})`;\n\t} else {\n\t\t// transparent color\n\t\treturn `hsla(${h}, ${s}, ${l}, ${twoDecimals(clamp(color.alpha))})`;\n\t}\n};\n\nexport const formatCss = c => {\n\tconst color = prepare(c);\n\tif (!color) {\n\t\treturn undefined;\n\t}\n\tconst def = getMode(color.mode);\n\tif (!def.serialize || typeof def.serialize === 'string') {\n\t\tlet res = `color(${def.serialize || `--${color.mode}`} `;\n\t\tdef.channels.forEach((ch, i) => {\n\t\t\tif (ch !== 'alpha') {\n\t\t\t\tres +=\n\t\t\t\t\t(i ? ' ' : '') +\n\t\t\t\t\t(color[ch] !== undefined ? color[ch] : 'none');\n\t\t\t}\n\t\t});\n\t\tif (color.alpha !== undefined && color.alpha < 1) {\n\t\t\tres += ` / ${color.alpha}`;\n\t\t}\n\t\treturn res + ')';\n\t}\n\tif (typeof def.serialize === 'function') {\n\t\treturn def.serialize(color);\n\t}\n\treturn undefined;\n};\n\nexport const formatHex = c => serializeHex(rgb(c));\nexport const formatHex8 = c => serializeHex8(rgb(c));\nexport const formatRgb = c => serializeRgb(rgb(c));\nexport const formatHsl = c => serializeHsl(hsl(c));\n","import converter from './converter.js';\nimport prepare from './_prepare.js';\nimport { getMode } from './modes.js';\nimport { differenceEuclidean } from './difference.js';\n\nconst rgb = converter('rgb');\nconst fixup_rgb = c => {\n\tconst res = {\n\t\tmode: c.mode,\n\t\tr: Math.max(0, Math.min(c.r !== undefined ? c.r : 0, 1)),\n\t\tg: Math.max(0, Math.min(c.g !== undefined ? c.g : 0, 1)),\n\t\tb: Math.max(0, Math.min(c.b !== undefined ? c.b : 0, 1))\n\t};\n\tif (c.alpha !== undefined) {\n\t\tres.alpha = c.alpha;\n\t}\n\treturn res;\n};\n\nconst to_displayable_srgb = c => fixup_rgb(rgb(c));\n\nconst inrange_rgb = c => {\n\treturn (\n\t\tc !== undefined &&\n\t\t(c.r === undefined || (c.r >= 0 && c.r <= 1)) &&\n\t\t(c.g === undefined || (c.g >= 0 && c.g <= 1)) &&\n\t\t(c.b === undefined || (c.b >= 0 && c.b <= 1))\n\t);\n};\n\n/*\n\tReturns whether the color is in the sRGB gamut.\n */\nexport function displayable(color) {\n\treturn inrange_rgb(rgb(color));\n}\n\n/*\n\tGiven a color space `mode`, returns a function\n\twith which to check whether a color is \n\tin that color space's gamut.\n */\nexport function inGamut(mode = 'rgb') {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) {\n\t\treturn color => true;\n\t}\n\tconst conv = converter(typeof gamut === 'string' ? gamut : mode);\n\treturn color => inrange_rgb(conv(color));\n}\n\n/*\n\tObtain a color that's in the sRGB gamut\n\tby converting it to sRGB and clipping the channel values\n\tso that they're within the [0, 1] range.\n\n\tThe result is returned in the color's original color space.\n */\nexport function clampRgb(color) {\n\tcolor = prepare(color);\n\n\t// if the color is undefined or displayable, return it directly\n\tif (color === undefined || displayable(color)) return color;\n\n\t// keep track of color's original mode\n\tlet conv = converter(color.mode);\n\n\treturn conv(to_displayable_srgb(color));\n}\n\n/*\n\tGiven the `mode` color space, returns a function\n\twith which to obtain a color that's in gamut for\n\tthe `mode` color space by clipping the channel values\n\tso that they fit in their respective ranges.\n\n\tIt's similar to `clampRgb`, but works for any \n\tbounded color space (RGB or not) for which \n\tany combination of in-range channel values\n\tproduces an in-gamut color.\n */\nexport function clampGamut(mode = 'rgb') {\n\tconst { gamut } = getMode(mode);\n\tif (!gamut) {\n\t\treturn color => prepare(color);\n\t}\n\tconst destMode = typeof gamut === 'string' ? gamut : mode;\n\tconst destConv = converter(destMode);\n\tconst inDestGamut = inGamut(destMode);\n\treturn color => {\n\t\tconst original = prepare(color);\n\t\tif (!original) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst converted = destConv(original);\n\t\tif (inDestGamut(converted)) {\n\t\t\treturn original;\n\t\t}\n\t\tconst clamped = fixup_rgb(converted);\n\t\tif (original.mode === clamped.mode) {\n\t\t\treturn clamped;\n\t\t}\n\t\treturn converter(original.mode)(clamped);\n\t};\n}\n\n/*\n\tObtain a color that’s in a RGB gamut (by default sRGB)\n\tby first converting it to `mode` and then finding \n\tthe greatest chroma value that fits the gamut.\n\n\tBy default, the CIELCh color space is used,\n\tbut any color that has a chroma component will do.\n\n\tThe result is returned in the color's original color space.\n */\nexport function clampChroma(color, mode = 'lch', rgbGamut = 'rgb') {\n\tcolor = prepare(color);\n\n\tlet inDestinationGamut =\n\t\trgbGamut === 'rgb' ? displayable : inGamut(rgbGamut);\n\tlet clipToGamut =\n\t\trgbGamut === 'rgb' ? to_displayable_srgb : clampGamut(rgbGamut);\n\n\t// if the color is undefined or displayable, return it directly\n\tif (color === undefined || inDestinationGamut(color)) return color;\n\n\t// keep track of color's original mode\n\tlet conv = converter(color.mode);\n\n\t// convert to the provided `mode` for clamping\n\tcolor = converter(mode)(color);\n\n\t// try with chroma = 0\n\tlet clamped = { ...color, c: 0 };\n\n\t// if not even chroma = 0 is displayable\n\t// fall back to RGB clamping\n\tif (!inDestinationGamut(clamped)) {\n\t\treturn conv(clipToGamut(clamped));\n\t}\n\n\t// By this time we know chroma = 0 is displayable and our current chroma is not.\n\t// Find the displayable chroma through the bisection method.\n\tlet start = 0;\n\tlet end = color.c !== undefined ? color.c : 0;\n\tlet range = getMode(mode).ranges.c;\n\tlet resolution = (range[1] - range[0]) / Math.pow(2, 13);\n\tlet _last_good_c = clamped.c;\n\n\twhile (end - start > resolution) {\n\t\tclamped.c = start + (end - start) * 0.5;\n\t\tif (inDestinationGamut(clamped)) {\n\t\t\t_last_good_c = clamped.c;\n\t\t\tstart = clamped.c;\n\t\t} else {\n\t\t\tend = clamped.c;\n\t\t}\n\t}\n\n\treturn conv(\n\t\tinDestinationGamut(clamped) ? clamped : { ...clamped, c: _last_good_c }\n\t);\n}\n\n/*\n\tObtain a color that's in the `dest` gamut,\n\tby first converting it to the `mode` color space\n\tand then finding the largest chroma that's in gamut,\n\tsimilar to `clampChroma`. \n\n\tThe color returned is in the `dest` color space.\n\n\tTo address the shortcomings of `clampChroma`, which can\n\tsometimes produce colors more desaturated than necessary,\n\tthe test used in the binary search is replaced with\n\t\"is color is roughly in gamut\", by comparing the candidate \n\tto the clipped version (obtained with `clampGamut`).\n\tThe test passes if the colors are not too dissimilar, \n\tjudged by the `delta` color difference function \n\tand an associated `jnd` just-noticeable difference value.\n\n\tThe default arguments for this function correspond to the\n\tgamut mapping algorithm defined in CSS Color Level 4:\n\thttps://drafts.csswg.org/css-color/#css-gamut-mapping\n\n\tTo disable the “roughly in gamut” part, pass either\n\t`null` for the `delta` parameter, or zero for `jnd`.\n */\nexport function toGamut(\n\tdest = 'rgb',\n\tmode = 'oklch',\n\tdelta = differenceEuclidean('oklch'),\n\tjnd = 0.02\n) {\n\tconst destConv = converter(dest);\n\tconst destMode = getMode(dest);\n\n\tif (!destMode.gamut) {\n\t\treturn color => destConv(color);\n\t}\n\n\tconst inDestinationGamut = inGamut(dest);\n\tconst clipToGamut = clampGamut(dest);\n\n\tconst ucs = converter(mode);\n\tconst { ranges } = getMode(mode);\n\n\tif (!ranges.l || !ranges.c) {\n\t\tthrow new Error('LCH-like space expected');\n\t}\n\n\treturn color => {\n\t\tcolor = prepare(color);\n\t\tif (color === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst candidate = { ...ucs(color) };\n\n\t\t// account for missing components\n\t\tif (candidate.l === undefined) candidate.l = 0;\n\t\tif (candidate.c === undefined) candidate.c = 0;\n\n\t\tif (candidate.l >= ranges.l[1]) {\n\t\t\tconst res = { ...destMode.white, mode: dest };\n\t\t\tif (color.alpha !== undefined) {\n\t\t\t\tres.alpha = color.alpha;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tif (candidate.l <= ranges.l[0]) {\n\t\t\tconst res = { ...destMode.black, mode: dest };\n\t\t\tif (color.alpha !== undefined) {\n\t\t\t\tres.alpha = color.alpha;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tif (inDestinationGamut(candidate)) {\n\t\t\treturn destConv(candidate);\n\t\t}\n\t\tlet start = 0;\n\t\tlet end = candidate.c;\n\t\tlet epsilon = (ranges.c[1] - ranges.c[0]) / 4000; // 0.0001 for oklch()\n\t\tlet clipped = clipToGamut(candidate);\n\t\twhile (end - start > epsilon) {\n\t\t\tcandidate.c = (start + end) * 0.5;\n\t\t\tclipped = clipToGamut(candidate);\n\t\t\tif (\n\t\t\t\tinDestinationGamut(candidate) ||\n\t\t\t\t(delta && jnd > 0 && delta(candidate, clipped) <= jnd)\n\t\t\t) {\n\t\t\t\tstart = candidate.c;\n\t\t\t} else {\n\t\t\t\tend = candidate.c;\n\t\t\t}\n\t\t}\n\t\treturn destConv(inDestinationGamut(candidate) ? candidate : clipped);\n\t};\n}\n","import converter from './converter.js';\n\n/*\n\tWCAG luminance\n\tReferences: \n\n\thttps://en.wikipedia.org/wiki/Relative_luminance\n\thttps://github.com/w3c/wcag/issues/236#issuecomment-379526596\n */\nexport function luminance(color) {\n\tlet c = converter('lrgb')(color);\n\treturn 0.2126 * c.r + 0.7152 * c.g + 0.0722 * c.b;\n}\n\n/*\n\tWCAG contrast\n */\nexport function contrast(a, b) {\n\tlet L1 = luminance(a);\n\tlet L2 = luminance(b);\n\treturn (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05);\n}\n","import \"culori/css\";\nimport { formatHex, parse } from \"culori/fn\";\n\n//#region src/color.ts\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\nconst CULORI_TO_CSS = {\n\ta98: \"a98-rgb\",\n\thsl: \"hsl\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlab65: \"lab-d65\",\n\tlch: \"lch\",\n\tlrgb: \"srgb-linear\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\tokhsv: \"okhsv\",\n\tp3: \"display-p3\",\n\tprophoto: \"prophoto-rgb\",\n\trec2020: \"rec2020\",\n\trgb: \"srgb\",\n\txyz50: \"xyz-d50\",\n\txyz65: \"xyz-d65\"\n};\nconst CSS_TO_CULORI = {\n\t\"a98-rgb\": \"a98\",\n\t\"display-p3\": \"p3\",\n\thsl: \"hsl\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\t\"lab-d65\": \"lab65\",\n\tlch: \"lch\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\tokhsv: \"okhsv\",\n\t\"prophoto-rgb\": \"prophoto\",\n\trec2020: \"rec2020\",\n\tsrgb: \"rgb\",\n\t\"srgb-linear\": \"lrgb\",\n\txyz: \"xyz65\",\n\t\"xyz-d50\": \"xyz50\",\n\t\"xyz-d65\": \"xyz65\"\n};\n/** Parse any color */\nfunction parseColor(color) {\n\tconst result = parse(color);\n\tif (!result) throw new Error(`Unable to parse color \"${color}\"`);\n\tif (!(result.mode in CULORI_TO_CSS)) throw new Error(`Unsupported color space: ${result.mode}`);\n\tconst colorSpace = CULORI_TO_CSS[result.mode];\n\tlet components = [\n\t\t0,\n\t\t0,\n\t\t0\n\t];\n\tswitch (result.mode) {\n\t\tcase \"a98\":\n\t\tcase \"rec2020\":\n\t\tcase \"p3\":\n\t\tcase \"prophoto\":\n\t\tcase \"lrgb\":\n\t\tcase \"rgb\":\n\t\t\tcomponents = [\n\t\t\t\tresult.r,\n\t\t\t\tresult.g,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"hsl\": {\n\t\t\tconst maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s * maxS,\n\t\t\t\tresult.l * maxL\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"hwb\": {\n\t\t\tconst maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.w * maxW,\n\t\t\t\tresult.b * maxB\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"lab65\":\n\t\tcase \"oklab\":\n\t\t\tcomponents = [\n\t\t\t\tresult.l,\n\t\t\t\tresult.a,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"lch\":\n\t\tcase \"oklch\":\n\t\t\tcomponents = [\n\t\t\t\tresult.l,\n\t\t\t\tresult.c,\n\t\t\t\tresult.h ?? 0\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"okhsv\":\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s,\n\t\t\t\tresult.v\n\t\t\t];\n\t\t\tbreak;\n\t\tcase \"xyz50\":\n\t\tcase \"xyz65\":\n\t\t\tcomponents = [\n\t\t\t\tresult.x,\n\t\t\t\tresult.y,\n\t\t\t\tresult.z\n\t\t\t];\n\t\t\tbreak;\n\t}\n\tconst value = {\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha: result.alpha ?? 1\n\t};\n\tif (HEX_RE.test(color)) value.hex = formatHex(result);\n\treturn value;\n}\n/** Convert a color token to a Culori color */\nfunction tokenToCulori(value) {\n\tswitch (value.colorSpace) {\n\t\tcase \"a98-rgb\":\n\t\tcase \"display-p3\":\n\t\tcase \"prophoto-rgb\":\n\t\tcase \"rec2020\":\n\t\tcase \"srgb\":\n\t\tcase \"srgb-linear\": {\n\t\t\tconst [r, g, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n\t\t\t\tr,\n\t\t\t\tg,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hsl\": {\n\t\t\tconst [h, s, l] = value.components;\n\t\t\tconst maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\treturn {\n\t\t\t\tmode: \"hsl\",\n\t\t\t\th,\n\t\t\t\ts: s / maxS,\n\t\t\t\tl: l / maxL,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hwb\": {\n\t\t\tconst [h, w, b] = value.components;\n\t\t\tconst maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n\t\t\tconst maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n\t\t\treturn {\n\t\t\t\tmode: \"hwb\",\n\t\t\t\th,\n\t\t\t\tw: w / maxW,\n\t\t\t\tb: b / maxB,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"lab-d65\":\n\t\tcase \"oklab\": {\n\t\t\tconst [l = 0, a = 0, b = 0] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace === \"lab-d65\" ? \"lab65\" : value.colorSpace,\n\t\t\t\tl,\n\t\t\t\ta,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lch\":\n\t\tcase \"oklch\": {\n\t\t\tconst [l, c, h] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace,\n\t\t\t\tl,\n\t\t\t\tc,\n\t\t\t\th,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"okhsv\": {\n\t\t\tconst [h, s, v] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: value.colorSpace,\n\t\t\t\th,\n\t\t\t\ts,\n\t\t\t\tv,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"xyz\":\n\t\tcase \"xyz-d50\":\n\t\tcase \"xyz-d65\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: CSS_TO_CULORI[value.colorSpace],\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\tz,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tdefault: throw new Error(`Invalid colorSpace \"${value.colorSpace}\". Expected one of ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\t}\n}\n/** Complete list of CSS Module 4 Colorspaces */\nconst COLORSPACE = {\n\t\"a98-rgb\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"display-p3\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\thsl: { ranges: [\n\t\t[0, 360],\n\t\t[0, 100],\n\t\t[0, 100]\n\t] },\n\thwb: { ranges: [\n\t\t[0, 360],\n\t\t[0, 100],\n\t\t[0, 100]\n\t] },\n\tlab: { ranges: [\n\t\t[0, 100],\n\t\t[-125, 125],\n\t\t[-125, 125]\n\t] },\n\t\"lab-d65\": { ranges: [\n\t\t[0, 100],\n\t\t[-125, 125],\n\t\t[-125, 125]\n\t] },\n\tlch: { ranges: [\n\t\t[0, 100],\n\t\t[0, 150],\n\t\t[0, 360]\n\t] },\n\toklab: { ranges: [\n\t\t[0, 1],\n\t\t[-.4, .4],\n\t\t[-.4, .4]\n\t] },\n\toklch: { ranges: [\n\t\t[0, 1],\n\t\t[0, .4],\n\t\t[0, 360]\n\t] },\n\tokhsv: { ranges: [\n\t\t[0, 360],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"prophoto-rgb\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\trec2020: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\tsrgb: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"srgb-linear\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"xyz-d50\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\txyz: { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] },\n\t\"xyz-d65\": { ranges: [\n\t\t[0, 1],\n\t\t[0, 1],\n\t\t[0, 1]\n\t] }\n};\n\n//#endregion\n//#region src/string.ts\n/** Pad string lengths */\nfunction padStr(input, length, alignment = \"left\") {\n\tconst d = Math.min(length || 0, 1e3) - input.length;\n\tif (d > 0) switch (alignment) {\n\t\tcase \"left\": return `${input}${\" \".repeat(d)}`;\n\t\tcase \"right\": return `${\" \".repeat(d)}${input}`;\n\t\tcase \"center\": {\n\t\t\tconst left = Math.floor(d / 2);\n\t\t\tconst right = d - left;\n\t\t\treturn `${\" \".repeat(left)}${input}${\" \".repeat(right)}`;\n\t\t}\n\t}\n\treturn input;\n}\n/** Pluralize strings */\nfunction pluralize(count, singular, plural) {\n\treturn count === 1 ? singular : plural;\n}\n/** Turn a string into kebab-case */\nfunction kebabCase(str) {\n\tlet output = \"\";\n\tfor (const c of str.split(\"\")) {\n\t\tif (c === \".\") {\n\t\t\toutput += \"-\";\n\t\t\tcontinue;\n\t\t}\n\t\tlet isFirstUppercase = true;\n\t\tif (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c)) {\n\t\t\toutput += `-${c.toLocaleLowerCase()}`;\n\t\t\tisFirstUppercase = false;\n\t\t\tcontinue;\n\t\t} else isFirstUppercase = true;\n\t\toutput += c;\n\t}\n\treturn output;\n}\n\n//#endregion\nexport { CSS_TO_CULORI as a, tokenToCulori as c, COLORSPACE as i, padStr as n, CULORI_TO_CSS as o, pluralize as r, parseColor as s, kebabCase as t };\n//# sourceMappingURL=string-BIhoe-L2.js.map","import { a as CSS_TO_CULORI, c as tokenToCulori, i as COLORSPACE, n as padStr, o as CULORI_TO_CSS, r as pluralize, s as parseColor, t as kebabCase } from \"./string-BIhoe-L2.js\";\nimport wcmatch from \"wildcard-match\";\n\n//#region src/border.ts\nconst BORDER_REQUIRED_PROPERTIES = [\n\t\"color\",\n\t\"width\",\n\t\"style\"\n];\n\n//#endregion\n//#region src/font-weight.ts\n/** Mapping of valid names to numeric weights */\nconst FONT_WEIGHTS = {\n\tthin: 100,\n\thairline: 100,\n\t\"extra-light\": 200,\n\t\"ultra-light\": 200,\n\tlight: 300,\n\tnormal: 400,\n\tregular: 400,\n\tbook: 400,\n\tmedium: 500,\n\t\"semi-bold\": 600,\n\t\"demi-bold\": 600,\n\tbold: 700,\n\t\"extra-bold\": 800,\n\t\"ultra-bold\": 800,\n\tblack: 900,\n\theavy: 900,\n\t\"extra-black\": 950,\n\t\"ultra-black\": 950\n};\n\n//#endregion\n//#region src/gradient.ts\nconst GRADIENT_REQUIRED_STOP_PROPERTIES = [\"color\", \"position\"];\n\n//#endregion\n//#region src/id.ts\nconst ALIAS_RE = /^\\{([^}]+)\\}$/;\n/** Is this token an alias of another? */\nfunction isAlias(value) {\n\treturn ALIAS_RE.test(value);\n}\n/** Same as isTokenMatch but returns the matching pattern */\nfunction getTokenMatch(tokenId, globPatterns) {\n\tfor (const pattern of globPatterns) if (wcmatch(pattern)(tokenId)) return pattern;\n}\n/** Make an alias */\nfunction makeAlias(input) {\n\treturn input.replace(/^\\{?([^}]+)\\}?$/, \"{$1}\");\n}\n/** Parse an alias */\nfunction parseAlias(input) {\n\tif (input.includes(\"#\")) throw new Error(\"Mode aliases (# character) are no longer supported as of v0.6.0. Alias the root token instead, and apply modes in plugins.\");\n\tconst match = input.match(ALIAS_RE);\n\tif (!match) return input;\n\treturn match[1] ?? match[0];\n}\n/** split a token ID into a local ID and group ID */\nfunction splitID(id) {\n\tconst lastSeparatorI = id.lastIndexOf(\".\");\n\tif (lastSeparatorI === -1) return { local: id };\n\treturn {\n\t\tlocal: id.substring(lastSeparatorI + 1),\n\t\tgroup: id.substring(0, lastSeparatorI)\n\t};\n}\n\n//#endregion\n//#region src/shadow.ts\nconst SHADOW_REQUIRED_PROPERTIES = [\n\t\"color\",\n\t\"offsetX\",\n\t\"offsetY\",\n\t\"blur\",\n\t\"spread\"\n];\n\n//#endregion\n//#region src/stroke-style.ts\nconst STROKE_STYLE_STRING_VALUES = [\n\t\"solid\",\n\t\"dashed\",\n\t\"dotted\",\n\t\"double\",\n\t\"groove\",\n\t\"ridge\",\n\t\"outset\",\n\t\"inset\"\n];\nconst STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES = [\"dashArray\", \"lineCap\"];\nconst STROKE_STYLE_LINE_CAP_VALUES = [\n\t\"round\",\n\t\"butt\",\n\t\"square\"\n];\n\n//#endregion\n//#region src/transform.ts\n/** Give a user pertinent feedback if they override a transform incorrectly */\nfunction validateCustomTransform(value, { $type }) {\n\tif (value) {\n\t\tif (typeof value !== \"string\" && typeof value !== \"object\" || Array.isArray(value)) throw new Error(`transform(): expected string or Object of strings, received ${Array.isArray(value) ? \"Array\" : typeof value}`);\n\t\tswitch ($type) {\n\t\t\tcase \"typography\":\n\t\t\t\tif (typeof value !== \"object\") throw new Error(\"transform(): typography tokens must be an object of keys\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/transition.ts\nconst TRANSITION_REQUIRED_PROPERTIES = [\n\t\"duration\",\n\t\"delay\",\n\t\"timingFunction\"\n];\n\n//#endregion\n//#region src/typography.ts\nconst TYPOGRAPHY_REQUIRED_PROPERTIES = [\n\t\"fontFamily\",\n\t\"fontSize\",\n\t\"fontWeight\",\n\t\"letterSpacing\",\n\t\"lineHeight\"\n];\n\n//#endregion\nexport { BORDER_REQUIRED_PROPERTIES, COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, FONT_WEIGHTS, GRADIENT_REQUIRED_STOP_PROPERTIES, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };\n//# sourceMappingURL=index.js.map","// Color space definitions\nimport modeA98 from './a98/definition.js';\nimport modeCubehelix from './cubehelix/definition.js';\nimport modeDlab from './dlab/definition.js';\nimport modeDlch from './dlch/definition.js';\nimport modeHsi from './hsi/definition.js';\nimport modeHsl from './hsl/definition.js';\nimport modeHsv from './hsv/definition.js';\nimport modeHwb from './hwb/definition.js';\nimport modeItp from './itp/definition.js';\nimport modeJab from './jab/definition.js';\nimport modeJch from './jch/definition.js';\nimport modeLab from './lab/definition.js';\nimport modeLab65 from './lab65/definition.js';\nimport modeLch from './lch/definition.js';\nimport modeLch65 from './lch65/definition.js';\nimport modeLchuv from './lchuv/definition.js';\nimport modeLrgb from './lrgb/definition.js';\nimport modeLuv from './luv/definition.js';\nimport modeOkhsl from './okhsl/modeOkhsl.js';\nimport modeOkhsv from './okhsv/modeOkhsv.js';\nimport modeOklab from './oklab/definition.js';\nimport modeOklch from './oklch/definition.js';\nimport modeP3 from './p3/definition.js';\nimport modeProphoto from './prophoto/definition.js';\nimport modeRec2020 from './rec2020/definition.js';\nimport modeRgb from './rgb/definition.js';\nimport modeXyb from './xyb/definition.js';\nimport modeXyz50 from './xyz50/definition.js';\nimport modeXyz65 from './xyz65/definition.js';\nimport modeYiq from './yiq/definition.js';\nimport { useMode } from './modes.js';\n\nexport { default as converter } from './converter.js';\n\nexport {\n\tserializeHex,\n\tserializeHex8,\n\tserializeRgb,\n\tserializeHsl,\n\tformatHex,\n\tformatHex8,\n\tformatRgb,\n\tformatHsl,\n\tformatCss\n} from './formatter.js';\n\nexport { default as colorsNamed } from './colors/named.js';\nexport { default as blend } from './blend.js';\nexport { default as random } from './random.js';\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n} from './fixup/hue.js';\n\nexport { fixupAlpha } from './fixup/alpha.js';\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n} from './map.js';\n\nexport { average, averageAngle, averageNumber } from './average.js';\n\nexport { default as round } from './round.js';\nexport {\n\tinterpolate,\n\tinterpolateWith,\n\tinterpolateWithPremultipliedAlpha\n} from './interpolate/interpolate.js';\n\nexport { interpolatorLinear } from './interpolate/linear.js';\n\nexport { interpolatorPiecewise } from './interpolate/piecewise.js';\n\nexport {\n\tinterpolatorSplineBasis,\n\tinterpolatorSplineBasisClosed\n} from './interpolate/splineBasis.js';\n\nexport {\n\tinterpolatorSplineNatural,\n\tinterpolatorSplineNaturalClosed\n} from './interpolate/splineNatural.js';\n\nexport {\n\tinterpolatorSplineMonotone,\n\tinterpolatorSplineMonotone2,\n\tinterpolatorSplineMonotoneClosed\n} from './interpolate/splineMonotone.js';\n\nexport { lerp, unlerp, blerp, trilerp } from './interpolate/lerp.js';\nexport { default as samples } from './samples.js';\nexport {\n\tdisplayable,\n\tinGamut,\n\tclampRgb,\n\tclampChroma,\n\tclampGamut,\n\ttoGamut\n} from './clamp.js';\nexport { default as nearest } from './nearest.js';\nexport { useMode, getMode, useParser, removeParser } from './modes.js';\nexport { default as parse } from './parse.js';\n\nexport {\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceHueSaturation,\n\tdifferenceHueChroma,\n\tdifferenceHueNaive,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n} from './difference.js';\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterInvert,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterHueRotate\n} from './filter.js';\n\nexport {\n\tfilterDeficiencyProt,\n\tfilterDeficiencyDeuter,\n\tfilterDeficiencyTrit\n} from './deficiency.js';\n\n// Easings\nexport { default as easingMidpoint } from './easing/midpoint.js';\nexport {\n\teasingSmoothstep,\n\teasingSmoothstepInverse\n} from './easing/smoothstep.js';\nexport { default as easingSmootherstep } from './easing/smootherstep.js';\nexport { default as easingInOutSine } from './easing/inOutSine.js';\nexport { default as easingGamma } from './easing/gamma.js';\n\nexport {\n\tluminance as wcagLuminance,\n\tcontrast as wcagContrast\n} from './wcag.js';\n\nexport { default as parseHsl } from './hsl/parseHsl.js';\nexport { default as parseHwb } from './hwb/parseHwb.js';\nexport { default as parseLab } from './lab/parseLab.js';\nexport { default as parseLch } from './lch/parseLch.js';\nexport { default as parseNamed } from './rgb/parseNamed.js';\nexport { default as parseTransparent } from './rgb/parseTransparent.js';\nexport { default as parseHex } from './rgb/parseHex.js';\nexport { default as parseRgb } from './rgb/parseRgb.js';\nexport { default as parseHslLegacy } from './hsl/parseHslLegacy.js';\nexport { default as parseRgbLegacy } from './rgb/parseRgbLegacy.js';\nexport { default as parseOklab } from './oklab/parseOklab.js';\nexport { default as parseOklch } from './oklch/parseOklch.js';\n\nexport { default as convertA98ToXyz65 } from './a98/convertA98ToXyz65.js';\nexport { default as convertCubehelixToRgb } from './cubehelix/convertCubehelixToRgb.js';\nexport { default as convertDlchToLab65 } from './dlch/convertDlchToLab65.js';\nexport { default as convertHsiToRgb } from './hsi/convertHsiToRgb.js';\nexport { default as convertHslToRgb } from './hsl/convertHslToRgb.js';\nexport { default as convertHsvToRgb } from './hsv/convertHsvToRgb.js';\nexport { default as convertHwbToRgb } from './hwb/convertHwbToRgb.js';\nexport { default as convertItpToXyz65 } from './itp/convertItpToXyz65.js';\nexport { default as convertJabToJch } from './jch/convertJabToJch.js';\nexport { default as convertJabToRgb } from './jab/convertJabToRgb.js';\nexport { default as convertJabToXyz65 } from './jab/convertJabToXyz65.js';\nexport { default as convertJchToJab } from './jch/convertJchToJab.js';\nexport { default as convertLab65ToDlch } from './dlch/convertLab65ToDlch.js';\nexport { default as convertLab65ToRgb } from './lab65/convertLab65ToRgb.js';\nexport { default as convertLab65ToXyz65 } from './lab65/convertLab65ToXyz65.js';\nexport { default as convertLabToLch } from './lch/convertLabToLch.js';\nexport { default as convertLabToRgb } from './lab/convertLabToRgb.js';\nexport { default as convertLabToXyz50 } from './lab/convertLabToXyz50.js';\nexport { default as convertLchToLab } from './lch/convertLchToLab.js';\nexport { default as convertLchuvToLuv } from './lchuv/convertLchuvToLuv.js';\nexport { default as convertLrgbToOklab } from './oklab/convertLrgbToOklab.js';\nexport { default as convertLrgbToRgb } from './lrgb/convertLrgbToRgb.js';\nexport { default as convertLuvToLchuv } from './lchuv/convertLuvToLchuv.js';\nexport { default as convertLuvToXyz50 } from './luv/convertLuvToXyz50.js';\nexport { default as convertOkhslToOklab } from './okhsl/convertOkhslToOklab.js';\nexport { default as convertOkhsvToOklab } from './okhsv/convertOkhsvToOklab.js';\nexport { default as convertOklabToLrgb } from './oklab/convertOklabToLrgb.js';\nexport { default as convertOklabToOkhsl } from './okhsl/convertOklabToOkhsl.js';\nexport { default as convertOklabToOkhsv } from './okhsv/convertOklabToOkhsv.js';\nexport { default as convertOklabToRgb } from './oklab/convertOklabToRgb.js';\nexport { default as convertP3ToXyz65 } from './p3/convertP3ToXyz65.js';\nexport { default as convertProphotoToXyz50 } from './prophoto/convertProphotoToXyz50.js';\nexport { default as convertRec2020ToXyz65 } from './rec2020/convertRec2020ToXyz65.js';\nexport { default as convertRgbToCubehelix } from './cubehelix/convertRgbToCubehelix.js';\nexport { default as convertRgbToHsi } from './hsi/convertRgbToHsi.js';\nexport { default as convertRgbToHsl } from './hsl/convertRgbToHsl.js';\nexport { default as convertRgbToHsv } from './hsv/convertRgbToHsv.js';\nexport { default as convertRgbToHwb } from './hwb/convertRgbToHwb.js';\nexport { default as convertRgbToJab } from './jab/convertRgbToJab.js';\nexport { default as convertRgbToLab } from './lab/convertRgbToLab.js';\nexport { default as convertRgbToLab65 } from './lab65/convertRgbToLab65.js';\nexport { default as convertRgbToLrgb } from './lrgb/convertRgbToLrgb.js';\nexport { default as convertRgbToOklab } from './oklab/convertRgbToOklab.js';\nexport { default as convertRgbToXyb } from './xyb/convertRgbToXyb.js';\nexport { default as convertRgbToXyz50 } from './xyz50/convertRgbToXyz50.js';\nexport { default as convertRgbToXyz65 } from './xyz65/convertRgbToXyz65.js';\nexport { default as convertRgbToYiq } from './yiq/convertRgbToYiq.js';\nexport { default as convertXybToRgb } from './xyb/convertXybToRgb.js';\nexport { default as convertXyz50ToLab } from './lab/convertXyz50ToLab.js';\nexport { default as convertXyz50ToLuv } from './luv/convertXyz50ToLuv.js';\nexport { default as convertXyz50ToProphoto } from './prophoto/convertXyz50ToProphoto.js';\nexport { default as convertXyz50ToRgb } from './xyz50/convertXyz50ToRgb.js';\nexport { default as convertXyz50ToXyz65 } from './xyz65/convertXyz50ToXyz65.js';\nexport { default as convertXyz65ToA98 } from './a98/convertXyz65ToA98.js';\nexport { default as convertXyz65ToItp } from './itp/convertXyz65ToItp.js';\nexport { default as convertXyz65ToJab } from './jab/convertXyz65ToJab.js';\nexport { default as convertXyz65ToLab65 } from './lab65/convertXyz65ToLab65.js';\nexport { default as convertXyz65ToP3 } from './p3/convertXyz65ToP3.js';\nexport { default as convertXyz65ToRec2020 } from './rec2020/convertXyz65ToRec2020.js';\nexport { default as convertXyz65ToRgb } from './xyz65/convertXyz65ToRgb.js';\nexport { default as convertXyz65ToXyz50 } from './xyz65/convertXyz65ToXyz50.js';\nexport { default as convertYiqToRgb } from './yiq/convertYiqToRgb.js';\n\nexport {\n\tmodeA98,\n\tmodeCubehelix,\n\tmodeDlab,\n\tmodeDlch,\n\tmodeHsi,\n\tmodeHsl,\n\tmodeHsv,\n\tmodeHwb,\n\tmodeItp,\n\tmodeJab,\n\tmodeJch,\n\tmodeLab,\n\tmodeLab65,\n\tmodeLch,\n\tmodeLch65,\n\tmodeLchuv,\n\tmodeLrgb,\n\tmodeLuv,\n\tmodeOkhsl,\n\tmodeOkhsv,\n\tmodeOklab,\n\tmodeOklch,\n\tmodeP3,\n\tmodeProphoto,\n\tmodeRec2020,\n\tmodeRgb,\n\tmodeXyb,\n\tmodeXyz50,\n\tmodeXyz65,\n\tmodeYiq\n};\n\nexport const a98 = useMode(modeA98);\nexport const cubehelix = useMode(modeCubehelix);\nexport const dlab = useMode(modeDlab);\nexport const dlch = useMode(modeDlch);\nexport const hsi = useMode(modeHsi);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const itp = useMode(modeItp);\nexport const jab = useMode(modeJab);\nexport const jch = useMode(modeJch);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lchuv = useMode(modeLchuv);\nexport const lrgb = useMode(modeLrgb);\nexport const luv = useMode(modeLuv);\nexport const okhsl = useMode(modeOkhsl);\nexport const okhsv = useMode(modeOkhsv);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyb = useMode(modeXyb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\nexport const yiq = useMode(modeYiq);\n","import * as momoa from \"@humanwhocodes/momoa\";\n\n//#region src/momoa.ts\n/** Find Momoa node by traversing paths */\nfunction findNode(node, path) {\n\tif (!path?.length) return node;\n\tlet nextNode;\n\tswitch (node.type) {\n\t\tcase \"Document\": return findNode(node.body, path);\n\t\tcase \"Object\": {\n\t\t\tconst [member, ...rest] = path;\n\t\t\tnextNode = node.members.find((m) => m.name.type === \"String\" && m.name.value === member)?.value;\n\t\t\tif (nextNode && rest.length) return findNode(nextNode, path.slice(1));\n\t\t\tbreak;\n\t\t}\n\t\tcase \"Array\": {\n\t\t\tconst [_index, ...rest] = path;\n\t\t\tconst index = Number.parseInt(_index, 10);\n\t\t\tnextNode = node.elements[index]?.value;\n\t\t\tif (nextNode && rest.length) return findNode(nextNode, path.slice(1));\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn nextNode;\n}\n/** Get single member by name. Better when you only need a single value. */\nfunction getObjMember(node, key) {\n\tif (!node || node.type !== \"Object\") return;\n\treturn node.members.find((m) => m.name.type === \"String\" && m.name.value === key)?.value;\n}\n/** Format ObjectNode members as key–value object. Better when retrieving multiple values. */\nfunction getObjMembers(node) {\n\tconst members = {};\n\tif (node.type !== \"Object\") return members;\n\tfor (let i = 0; i < node.members.length; i++) {\n\t\tconst m = node.members[i];\n\t\tif (m.name.type !== \"String\") continue;\n\t\tmembers[m.name.value] = {\n\t\t\t...m.value,\n\t\t\tindex: i\n\t\t};\n\t}\n\treturn members;\n}\n/** Merge multiple Momoa documents from different sources. Conflicts will be overridden */\nfunction mergeDocuments(documents) {\n\tif (!documents.length) throw new Error(`Can’t merge 0 documents.`);\n\tif (documents.length === 1) return documents[0];\n\tif (documents.some((d) => d.body.type !== \"Object\")) throw new Error(`mergeDocuments() can only merge top-level objects`);\n\tconst final = structuredClone(documents[0]);\n\tfor (const next of documents.slice(1)) {\n\t\tfinal.body = mergeObjects(final.body, next.body);\n\t\tif (next.body.loc.end.offset > final.body.loc.end.offset) final.loc.end = { ...next.body.loc.end };\n\t}\n\treturn final;\n}\n/** Merge Momoa Objects. */\nfunction mergeObjects(a, b) {\n\tconst obj = structuredClone(a);\n\tif (a.type !== \"Object\") return structuredClone(b);\n\tfor (const next of b.members) {\n\t\tif (next.name.type !== \"String\") throw new Error(`Member with key ${momoa.print(next.name)} not JSON serializable`);\n\t\tconst i = obj.members.findIndex((prev) => prev.name.value === next.name.value);\n\t\tif (i !== -1) switch (next.value.type) {\n\t\t\tcase \"Object\":\n\t\t\t\tobj.members[i].value = mergeObjects(obj.members[i].value, next.value);\n\t\t\t\tbreak;\n\t\t\tcase \"String\":\n\t\t\tcase \"Boolean\":\n\t\t\tcase \"Number\":\n\t\t\tcase \"Null\":\n\t\t\tcase \"Array\":\n\t\t\t\tobj.members[i].value = next.value;\n\t\t\t\tobj.members[i].loc = next.loc;\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error(`Unhandled: ${next.value.type}`);\n\t\t}\n\t\telse obj.members.push(next);\n\t}\n\treturn obj;\n}\n/** Replace Momoa node a with b inline (destructive) */\nfunction replaceNode(a, b) {\n\ta.type = b.type;\n\ta.loc ??= b.loc;\n\ta.range ??= b.range;\n\tif (b.type === \"Object\") a.members = b.members;\n\telse if (b.type === \"Array\") a.elements = b.elements;\n\telse if (b.type === \"Document\") a.body = b.body;\n\telse if (b.type !== \"Null\") a.value = b.value;\n}\n/**\n* Async variation of Momoa’s traverse() that also keeps track of global path.\n* Allows crude mutation of AST during traversal (along with any consequences).\n*/\nasync function traverseAsync(root, visitor) {\n\t/**\n\t* Recursively visits a node.\n\t* @param {AnyNode} node The node to visit.\n\t* @param {AnyNode} [parent] The parent of the node to visit.\n\t* @return {void}\n\t*/\n\tasync function visitNode(node, parent, path = []) {\n\t\tconst nextPath = [...path];\n\t\tawait visitor.enter?.(node, parent, nextPath);\n\t\tswitch (node.type) {\n\t\t\tcase \"Document\":\n\t\t\t\tawait visitNode(node.body, node, nextPath);\n\t\t\t\tbreak;\n\t\t\tcase \"Array\": {\n\t\t\t\tlet i = 0;\n\t\t\t\tlet len = node.elements.length;\n\t\t\t\tlet prevElements = node.elements;\n\t\t\t\twhile (i < len) {\n\t\t\t\t\tawait visitNode(node.elements[i], node, [...nextPath, String(i)]);\n\t\t\t\t\tif (node.elements !== prevElements) {\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tlen = node.elements.length;\n\t\t\t\t\t\tprevElements = node.elements;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Element\":\n\t\t\tcase \"Member\":\n\t\t\t\tawait visitNode(node.value, node, nextPath);\n\t\t\t\tbreak;\n\t\t\tcase \"Object\": {\n\t\t\t\tlet i = 0;\n\t\t\t\tlet len = node.members.length;\n\t\t\t\tlet prevMembers = node.members;\n\t\t\t\twhile (i < len) {\n\t\t\t\t\tawait visitNode(node.members[i], node, [...nextPath, node.members[i].name.value]);\n\t\t\t\t\tif (node.members !== prevMembers) {\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tlen = node.members.length;\n\t\t\t\t\t\tprevMembers = node.members;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tawait visitor.exit?.(node, parent, nextPath);\n\t}\n\tawait visitNode(root, void 0, []);\n}\nvar JSONError = class extends Error {\n\tnode;\n\tfilename = \"\";\n\tconstructor(message, node, filename) {\n\t\tsuper(message);\n\t\tthis.node = node;\n\t\ttry {\n\t\t\tthis.filename = filename;\n\t\t} catch {}\n\t}\n};\n\n//#endregion\n//#region src/parse-ref.ts\n/**\n* Optimized JSON pointer parser.\n* @see https://datatracker.ietf.org/doc/html/rfc6901\n*\n* Requires no more than 2 passes maximum (couldn’t be done in a single pass\n* because the behavior changes based on whether we ever encounter a \"#\"\n* character, and we don’t know until we’ve made a full pass.\n*/\nfunction parseRef(ref) {\n\tconst final = { url: \".\" };\n\tif (typeof ref !== \"string\" || ref === \"\") return final;\n\tconst [url, fragment] = ref.split(\"#\");\n\tif (fragment) return {\n\t\turl: url || \".\",\n\t\tsubpath: subpathFragment(fragment)\n\t};\n\tif (url?.startsWith(\"/\")) return {\n\t\turl: \".\",\n\t\tsubpath: subpathFragment(url)\n\t};\n\treturn { url: url || \".\" };\n}\nfunction subpathFragment(fragment) {\n\tconst subpath = [];\n\tlet buff = \"\";\n\tfor (let i = 0; i < fragment.length; i++) {\n\t\tconst char = fragment[i];\n\t\tif (i === 0 && char === \"/\") continue;\n\t\tif (char === \"~\") {\n\t\t\tif (fragment[i + 1] === \"0\") {\n\t\t\t\tbuff += \"~\";\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (fragment[i + 1] === \"1\") {\n\t\t\t\tbuff += \"/\";\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t} else if (char === \"/\") {\n\t\t\tif (buff) {\n\t\t\t\tsubpath.push(buff);\n\t\t\t\tbuff = \"\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tbuff += char;\n\t}\n\tif (buff) subpath.push(buff);\n\treturn subpath.length ? subpath : void 0;\n}\n\n//#endregion\n//#region src/bundle.ts\n/** Flatten multiple Momoa documents into one, while resolving refs. */\nasync function bundle(sources, { req, parse: userParse, yamlToMomoa }) {\n\tconst cache = {};\n\tconst refMap = {};\n\tconst parse = async (src, filename) => {\n\t\tif (typeof src === \"string\" && !maybeRawJSON(src)) {\n\t\t\tif (yamlToMomoa) {\n\t\t\t\tconst result = yamlToMomoa(src);\n\t\t\t\treturn userParse ? userParse(momoa.print(result, { indent: 2 }), filename) : result;\n\t\t\t}\n\t\t\tthrow new Error(`Install yaml-to-momoa package to parse YAML, and pass in as option, e.g.:\n\n import { bundle } from '@terrazzo/json-schema-tools';\n import yamlToMomoa from 'yaml-to-momoa';\n\n bundle(yamlString, { yamlToMomoa });`);\n\t\t}\n\t\treturn userParse ? userParse(src, filename) : momoa.parse(typeof src === \"string\" ? src : JSON.stringify(src, void 0, 2), {\n\t\t\tmode: \"jsonc\",\n\t\t\tranges: true,\n\t\t\ttokens: true\n\t\t});\n\t};\n\treturn {\n\t\tdocument: mergeDocuments(await Promise.all(sources.map(async (source) => {\n\t\t\tconst resolved = {\n\t\t\t\t...source,\n\t\t\t\tdocument: await parse(source.src, source.filename)\n\t\t\t};\n\t\t\tif (resolved.document?.type !== \"Document\") throw new Error(`parse() must return a DocumentNode from momoa’s parser.`);\n\t\t\tif (typeof resolved.src !== \"string\") resolved.src = momoa.print(resolved.document, { indent: 2 });\n\t\t\tcache[source.filename.href] = resolved;\n\t\t\tawait traverseAsync(resolved.document, { async enter(node, _parent, path) {\n\t\t\t\tif (node.type === \"Object\" && getObjMember(node, \"$ref\")) {\n\t\t\t\t\tconst refChain = [];\n\t\t\t\t\tconst newNode = await resolveRef(node, {\n\t\t\t\t\t\treq,\n\t\t\t\t\t\tsource: resolved,\n\t\t\t\t\t\tsources: cache,\n\t\t\t\t\t\tvisited: [],\n\t\t\t\t\t\trefChain,\n\t\t\t\t\t\tparse\n\t\t\t\t\t});\n\t\t\t\t\tif (refChain.length) refMap[`#/${path.join(\"/\")}`] = {\n\t\t\t\t\t\tfilename: source.filename.href,\n\t\t\t\t\t\trefChain\n\t\t\t\t\t};\n\t\t\t\t\treplaceNode(node, newNode);\n\t\t\t\t}\n\t\t\t} });\n\t\t\treturn resolved.document;\n\t\t}))),\n\t\tsources: cache,\n\t\trefMap\n\t};\n}\n/** Determine if an input is likely a JSON string */\nfunction maybeRawJSON(input) {\n\treturn typeof input === \"string\" && input.trim().startsWith(\"{\");\n}\n/** Flatten $refs and merge objects one level deep. */\nasync function resolveRef(node, options) {\n\tif (node.type !== \"Object\") return node;\n\tconst { req, parse, visited, source, sources, refChain } = options;\n\tconst $ref = getObjMember(node, \"$ref\");\n\tif (!$ref) return node;\n\tif ($ref.type !== \"String\") throw new JSONError(\"Invalid $ref. Expected string.\", $ref, source.filename.href);\n\tconst { url, subpath } = parseRef($ref.value);\n\tif (url === \".\" && !subpath?.length) throw new JSONError(\"Can’t recursively embed a document within itself.\", $ref, source.filename.href);\n\tconst filename = url === \".\" ? source.filename : new URL(url, source.filename);\n\tif (url !== \".\" && visited.includes(filename.href)) throw new JSONError(`Circular $ref detected: ${JSON.stringify($ref.value)}`, $ref, source.filename.href);\n\tvisited.push(filename.href);\n\tconst nextPath = filename.href === source.filename.href ? `#/${subpath?.join(\"/\") ?? \"\"}` : `${filename.href}${subpath ? `#/${subpath.join(\"/\")}` : \"\"}`;\n\tif (refChain.includes(nextPath)) throw new JSONError(`Circular $ref detected: \"${$ref.value}\"`, $ref, source.filename.href);\n\trefChain.push(nextPath);\n\tif (!sources[filename.href]) {\n\t\tconst rawSource = await req(filename, options.source.filename);\n\t\tsources[filename.href] = {\n\t\t\tfilename,\n\t\t\tsrc: rawSource,\n\t\t\tdocument: await parse(rawSource, filename)\n\t\t};\n\t}\n\tconst resolved = findNode(sources[filename.href].document, subpath);\n\tif (!resolved) throw new Error(`Could not resolve $ref \"${$ref.value}\"`);\n\tconst flattened = await resolveRef(resolved, options);\n\tif (node.members.length === 1) return flattened;\n\tif (flattened.type !== \"Object\") throw new JSONError(`Can’t merge $ref of type \"${resolved.type}\" into Object`, $ref, source.filename.href);\n\treturn mergeObjects(flattened, {\n\t\t...node,\n\t\tmembers: node.members.filter((m) => !(m.name.type === \"String\" && m.name.value === \"$ref\"))\n\t});\n}\n\n//#endregion\n//#region src/utils.ts\n/** Is this object a pure $ref? (no other properties) */\nfunction isPure$ref(value) {\n\tif (!value || typeof value !== \"object\") return false;\n\treturn \"$ref\" in value && Object.keys(value).length === 1;\n}\n\n//#endregion\nexport { JSONError, bundle, findNode, getObjMember, getObjMembers, isPure$ref, maybeRawJSON, mergeDocuments, mergeObjects, parseRef, replaceNode, resolveRef, subpathFragment, traverseAsync };\n//# sourceMappingURL=index.js.map","import wcmatch from \"wildcard-match\";\nimport * as momoa from \"@humanwhocodes/momoa\";\nimport { evaluate } from \"@humanwhocodes/momoa\";\nimport pc from \"picocolors\";\nimport { merge } from \"merge-anything\";\nimport { BORDER_REQUIRED_PROPERTIES, COLORSPACE, FONT_WEIGHTS, GRADIENT_REQUIRED_STOP_PROPERTIES, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, TRANSITION_REQUIRED_PROPERTIES, isAlias, parseAlias, parseColor, pluralize, tokenToCulori } from \"@terrazzo/token-tools\";\nimport { clampChroma, wcagContrast } from \"culori\";\nimport { bundle, getObjMember, getObjMembers, isPure$ref, maybeRawJSON, parseRef, replaceNode, traverseAsync } from \"@terrazzo/json-schema-tools\";\n\n//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") {\n\t\tfor (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\t\tkey = keys[i];\n\t\t\tif (!__hasOwnProp.call(to, key) && key !== except) {\n\t\t\t\t__defProp(to, key, {\n\t\t\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n\n//#endregion\n//#region src/lib/code-frame.ts\n/**\n* Extract what lines should be marked and highlighted.\n*/\nfunction getMarkerLines(loc, source, opts = {}) {\n\tconst startLoc = {\n\t\tcolumn: 0,\n\t\tline: -1,\n\t\t...loc.start\n\t};\n\tconst endLoc = {\n\t\t...startLoc,\n\t\t...loc.end\n\t};\n\tconst { linesAbove = 2, linesBelow = 3 } = opts || {};\n\tconst startLine = startLoc.line;\n\tconst startColumn = startLoc.column;\n\tconst endLine = endLoc.line;\n\tconst endColumn = endLoc.column;\n\tlet start = Math.max(startLine - (linesAbove + 1), 0);\n\tlet end = Math.min(source.length, endLine + linesBelow);\n\tif (startLine === -1) start = 0;\n\tif (endLine === -1) end = source.length;\n\tconst lineDiff = endLine - startLine;\n\tconst markerLines = {};\n\tif (lineDiff) for (let i = 0; i <= lineDiff; i++) {\n\t\tconst lineNumber = i + startLine;\n\t\tif (!startColumn) markerLines[lineNumber] = true;\n\t\telse if (i === 0) markerLines[lineNumber] = [startColumn, source[lineNumber - 1].length - startColumn + 1];\n\t\telse if (i === lineDiff) markerLines[lineNumber] = [0, endColumn];\n\t\telse markerLines[lineNumber] = [0, source[lineNumber - i].length];\n\t}\n\telse if (startColumn === endColumn) if (startColumn) markerLines[startLine] = [startColumn, 0];\n\telse markerLines[startLine] = true;\n\telse markerLines[startLine] = [startColumn, endColumn - startColumn];\n\treturn {\n\t\tstart,\n\t\tend,\n\t\tmarkerLines\n\t};\n}\n/**\n* RegExp to test for newlines in terminal.\n*/\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n\tif (typeof rawLines !== \"string\") throw new Error(`Expected string, got ${rawLines}`);\n\tconst { start, end, markerLines } = getMarkerLines(loc, rawLines.split(NEWLINE), opts);\n\tconst hasColumns = loc.start && typeof loc.start.column === \"number\";\n\tconst numberMaxWidth = String(end).length;\n\tlet frame = rawLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n\t\tconst number = start + 1 + index;\n\t\tconst gutter = ` ${` ${number}`.slice(-numberMaxWidth)} |`;\n\t\tconst hasMarker = markerLines[number];\n\t\tconst lastMarkerLine = !markerLines[number + 1];\n\t\tif (hasMarker) {\n\t\t\tlet markerLine = \"\";\n\t\t\tif (Array.isArray(hasMarker)) {\n\t\t\t\tconst markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n\t\t\t\tconst numberOfMarkers = hasMarker[1] || 1;\n\t\t\t\tmarkerLine = [\n\t\t\t\t\t\"\\n \",\n\t\t\t\t\tgutter.replace(/\\d/g, \" \"),\n\t\t\t\t\t\" \",\n\t\t\t\t\tmarkerSpacing,\n\t\t\t\t\t\"^\".repeat(numberOfMarkers)\n\t\t\t\t].join(\"\");\n\t\t\t\tif (lastMarkerLine && opts.message) markerLine += ` ${opts.message}`;\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t\">\",\n\t\t\t\tgutter,\n\t\t\t\tline.length > 0 ? ` ${line}` : \"\",\n\t\t\t\tmarkerLine\n\t\t\t].join(\"\");\n\t\t} else return ` ${gutter}${line.length > 0 ? ` ${line}` : \"\"}`;\n\t}).join(\"\\n\");\n\tif (opts.message && !hasColumns) frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n\treturn frame;\n}\n\n//#endregion\n//#region src/logger.ts\nconst LOG_ORDER = [\n\t\"error\",\n\t\"warn\",\n\t\"info\",\n\t\"debug\"\n];\nconst MESSAGE_COLOR = {\n\terror: pc.red,\n\twarn: pc.yellow\n};\nconst timeFormatter = new Intl.DateTimeFormat(\"en-us\", {\n\thour: \"numeric\",\n\thour12: false,\n\tminute: \"numeric\",\n\tsecond: \"numeric\",\n\tfractionalSecondDigits: 3\n});\n/**\n* @param {Entry} entry\n* @param {Severity} severity\n* @return {string}\n*/\nfunction formatMessage(entry, severity) {\n\tlet message = entry.message;\n\tmessage = `[${entry.group}${entry.label ? `:${entry.label}` : \"\"}] ${message}`;\n\tif (severity in MESSAGE_COLOR) message = MESSAGE_COLOR[severity](message);\n\tif (entry.node) {\n\t\tconst start = entry.node?.loc?.start ?? {\n\t\t\tline: 0,\n\t\t\tcolumn: 0\n\t\t};\n\t\tconst loc = entry.filename ? `${entry.filename?.href.replace(/^file:\\/\\//, \"\")}:${start?.line ?? 0}:${start?.column ?? 0}\\n\\n` : \"\";\n\t\tconst codeFrame = codeFrameColumns(entry.src ?? momoa.print(entry.node, { indent: 2 }), { start }, { highlightCode: false });\n\t\tmessage = `${message}\\n\\n${loc}${codeFrame}`;\n\t}\n\treturn message;\n}\nvar Logger = class {\n\tlevel = \"info\";\n\tdebugScope = \"*\";\n\terrorCount = 0;\n\twarnCount = 0;\n\tinfoCount = 0;\n\tdebugCount = 0;\n\tconstructor(options) {\n\t\tif (options?.level) this.level = options.level;\n\t\tif (options?.debugScope) this.debugScope = options.debugScope;\n\t}\n\tsetLevel(level) {\n\t\tthis.level = level;\n\t}\n\t/** Log an error message (always; can’t be silenced) */\n\terror(...entries) {\n\t\tconst message = [];\n\t\tlet firstNode;\n\t\tfor (const entry of entries) {\n\t\t\tthis.errorCount++;\n\t\t\tmessage.push(formatMessage(entry, \"error\"));\n\t\t\tif (entry.node) firstNode = entry.node;\n\t\t}\n\t\tif (entries.every((e) => e.continueOnError)) console.error(message.join(\"\\n\\n\"));\n\t\telse throw firstNode ? new TokensJSONError(message.join(\"\\n\\n\")) : new Error(message.join(\"\\n\\n\"));\n\t}\n\t/** Log an info message (if logging level permits) */\n\tinfo(...entries) {\n\t\tfor (const entry of entries) {\n\t\t\tthis.infoCount++;\n\t\t\tif (this.level === \"silent\" || LOG_ORDER.indexOf(this.level) < LOG_ORDER.indexOf(\"info\")) return;\n\t\t\tconst message = formatMessage(entry, \"info\");\n\t\t\tconsole.log(message);\n\t\t}\n\t}\n\t/** Log a warning message (if logging level permits) */\n\twarn(...entries) {\n\t\tfor (const entry of entries) {\n\t\t\tthis.warnCount++;\n\t\t\tif (this.level === \"silent\" || LOG_ORDER.indexOf(this.level) < LOG_ORDER.indexOf(\"warn\")) return;\n\t\t\tconst message = formatMessage(entry, \"warn\");\n\t\t\tconsole.warn(message);\n\t\t}\n\t}\n\t/** Log a diagnostics message (if logging level permits) */\n\tdebug(...entries) {\n\t\tfor (const entry of entries) {\n\t\t\tif (this.level === \"silent\" || LOG_ORDER.indexOf(this.level) < LOG_ORDER.indexOf(\"debug\")) return;\n\t\t\tthis.debugCount++;\n\t\t\tlet message = formatMessage(entry, \"debug\");\n\t\t\tconst debugPrefix = entry.label ? `${entry.group}:${entry.label}` : entry.group;\n\t\t\tif (this.debugScope !== \"*\" && !wcmatch(this.debugScope)(debugPrefix)) return;\n\t\t\tmessage.replace(/\\[config[^\\]]+\\]/, (match) => pc.green(match)).replace(/\\[parser[^\\]]+\\]/, (match) => pc.magenta(match)).replace(/\\[lint[^\\]]+\\]/, (match) => pc.yellow(match)).replace(/\\[plugin[^\\]]+\\]/, (match) => pc.cyan(match));\n\t\t\tmessage = `${pc.dim(timeFormatter.format(performance.now()))} ${message}`;\n\t\t\tif (typeof entry.timing === \"number\") {\n\t\t\t\tlet timing = \"\";\n\t\t\t\tif (entry.timing < 1e3) timing = `${Math.round(entry.timing * 100) / 100}ms`;\n\t\t\t\telse if (entry.timing < 6e4) timing = `${Math.round(entry.timing * 100) / 1e5}s`;\n\t\t\t\tmessage = `${message}${timing ? pc.dim(` [${timing}]`) : \"\"}`;\n\t\t\t}\n\t\t\tconsole.log(message);\n\t\t}\n\t}\n\t/** Get stats for current logger instance */\n\tstats() {\n\t\treturn {\n\t\t\terrorCount: this.errorCount,\n\t\t\twarnCount: this.warnCount,\n\t\t\tinfoCount: this.infoCount,\n\t\t\tdebugCount: this.debugCount\n\t\t};\n\t}\n};\nvar TokensJSONError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"TokensJSONError\";\n\t}\n};\n\n//#endregion\n//#region src/build/index.ts\nconst SINGLE_VALUE = \"SINGLE_VALUE\";\nconst MULTI_VALUE = \"MULTI_VALUE\";\n/** Validate plugin setTransform() calls for immediate feedback */\nfunction validateTransformParams({ params, logger, pluginName }) {\n\tconst baseMessage = {\n\t\tgroup: \"plugin\",\n\t\tlabel: pluginName,\n\t\tmessage: \"\"\n\t};\n\tif (!params.value || typeof params.value !== \"string\" && typeof params.value !== \"object\" || Array.isArray(params.value)) logger.error({\n\t\t...baseMessage,\n\t\tmessage: `setTransform() value expected string or object of strings, received ${Array.isArray(params.value) ? \"Array\" : typeof params.value}`\n\t});\n\tif (typeof params.value === \"object\" && Object.values(params.value).some((v) => typeof v !== \"string\")) logger.error({\n\t\t...baseMessage,\n\t\tmessage: \"setTransform() value expected object of strings, received some non-string values\"\n\t});\n}\n/** Run build stage */\nasync function build(tokens, { sources, logger = new Logger(), config }) {\n\tconst formats = {};\n\tconst result = { outputFiles: [] };\n\tfunction getTransforms(params) {\n\t\tif (!params?.format) {\n\t\t\tlogger.warn({\n\t\t\t\tgroup: \"plugin\",\n\t\t\t\tmessage: \"\\\"format\\\" missing from getTransforms(), no tokens returned.\"\n\t\t\t});\n\t\t\treturn [];\n\t\t}\n\t\tconst tokenMatcher = params.id ? wcmatch(Array.isArray(params.id) ? params.id : [params.id]) : null;\n\t\tconst modeMatcher = params.mode ? wcmatch(params.mode) : null;\n\t\treturn (formats[params.format] ?? []).filter((token) => {\n\t\t\tif (params.$type) {\n\t\t\t\tif (typeof params.$type === \"string\" && token.token.$type !== params.$type) return false;\n\t\t\t\telse if (Array.isArray(params.$type) && !params.$type.some(($type) => token.token.$type === $type)) return false;\n\t\t\t}\n\t\t\tif (params.id && params.id !== \"*\" && tokenMatcher && !tokenMatcher(token.token.id)) return false;\n\t\t\tif (modeMatcher && !modeMatcher(token.mode)) return false;\n\t\t\treturn true;\n\t\t});\n\t}\n\tlet transformsLocked = false;\n\tconst startTransform = performance.now();\n\tfor (const plugin of config.plugins) if (typeof plugin.transform === \"function\") await plugin.transform({\n\t\tcontext: { logger },\n\t\ttokens,\n\t\tsources,\n\t\tgetTransforms,\n\t\tsetTransform(id, params) {\n\t\t\tif (transformsLocked) {\n\t\t\t\tlogger.warn({\n\t\t\t\t\tmessage: \"Attempted to call setTransform() after transform step has completed.\",\n\t\t\t\t\tgroup: \"plugin\",\n\t\t\t\t\tlabel: plugin.name\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst token = tokens[id];\n\t\t\tconst cleanValue = typeof params.value === \"string\" ? params.value : { ...params.value };\n\t\t\tvalidateTransformParams({\n\t\t\t\tlogger,\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tvalue: cleanValue\n\t\t\t\t},\n\t\t\t\tpluginName: plugin.name\n\t\t\t});\n\t\t\tif (!formats[params.format]) formats[params.format] = [];\n\t\t\tconst foundTokenI = formats[params.format].findIndex((t) => id === t.id && (!params.localID || params.localID === t.localID) && (!params.mode || params.mode === t.mode));\n\t\t\tif (foundTokenI === -1) formats[params.format].push({\n\t\t\t\t...params,\n\t\t\t\tid,\n\t\t\t\tvalue: cleanValue,\n\t\t\t\ttype: typeof cleanValue === \"string\" ? SINGLE_VALUE : MULTI_VALUE,\n\t\t\t\tmode: params.mode || \".\",\n\t\t\t\ttoken: structuredClone(token)\n\t\t\t});\n\t\t\telse {\n\t\t\t\tformats[params.format][foundTokenI].value = cleanValue;\n\t\t\t\tformats[params.format][foundTokenI].type = typeof cleanValue === \"string\" ? SINGLE_VALUE : MULTI_VALUE;\n\t\t\t}\n\t\t}\n\t});\n\ttransformsLocked = true;\n\tlogger.debug({\n\t\tgroup: \"parser\",\n\t\tlabel: \"transform\",\n\t\tmessage: \"transform() step\",\n\t\ttiming: performance.now() - startTransform\n\t});\n\tconst startBuild = performance.now();\n\tawait Promise.all(config.plugins.map(async (plugin) => {\n\t\tif (typeof plugin.build === \"function\") {\n\t\t\tconst pluginBuildStart = performance.now();\n\t\t\tawait plugin.build({\n\t\t\t\tcontext: { logger },\n\t\t\t\ttokens,\n\t\t\t\tsources,\n\t\t\t\tgetTransforms,\n\t\t\t\toutputFile(filename, contents) {\n\t\t\t\t\tconst resolved = new URL(filename, config.outDir);\n\t\t\t\t\tif (result.outputFiles.some((f) => new URL(f.filename, config.outDir).href === resolved.href)) logger.error({\n\t\t\t\t\t\tgroup: \"plugin\",\n\t\t\t\t\t\tmessage: `Can’t overwrite file \"${filename}\"`,\n\t\t\t\t\t\tlabel: plugin.name\n\t\t\t\t\t});\n\t\t\t\t\tresult.outputFiles.push({\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tcontents,\n\t\t\t\t\t\tplugin: plugin.name,\n\t\t\t\t\t\ttime: performance.now() - pluginBuildStart\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}));\n\tlogger.debug({\n\t\tgroup: \"parser\",\n\t\tlabel: \"build\",\n\t\tmessage: \"build() step\",\n\t\ttiming: performance.now() - startBuild\n\t});\n\tconst startBuildEnd = performance.now();\n\tawait Promise.all(config.plugins.map(async (plugin) => plugin.buildEnd?.({\n\t\tcontext: { logger },\n\t\ttokens,\n\t\tgetTransforms,\n\t\tsources,\n\t\toutputFiles: structuredClone(result.outputFiles)\n\t})));\n\tlogger.debug({\n\t\tgroup: \"parser\",\n\t\tlabel: \"build\",\n\t\tmessage: \"buildEnd() step\",\n\t\ttiming: performance.now() - startBuildEnd\n\t});\n\treturn result;\n}\n\n//#endregion\n//#region src/lint/plugin-core/lib/docs.ts\nfunction docsLink(ruleName) {\n\treturn `https://terrazzo.app/docs/linting#${ruleName.replaceAll(\"/\", \"\")}`;\n}\n\n//#endregion\n//#region src/lint/plugin-core/rules/a11y-min-contrast.ts\nconst A11Y_MIN_CONTRAST = \"a11y/min-contrast\";\nconst WCAG2_MIN_CONTRAST = {\n\tAA: {\n\t\tdefault: 4.5,\n\t\tlarge: 3\n\t},\n\tAAA: {\n\t\tdefault: 7,\n\t\tlarge: 4.5\n\t}\n};\nconst ERROR_INSUFFICIENT_CONTRAST = \"INSUFFICIENT_CONTRAST\";\nconst rule$26 = {\n\tmeta: {\n\t\tmessages: { [ERROR_INSUFFICIENT_CONTRAST]: \"Pair {{ index }} failed; expected {{ expected }}, got {{ actual }} ({{ level }})\" },\n\t\tdocs: {\n\t\t\tdescription: \"Enforce colors meet minimum contrast checks for WCAG 2.\",\n\t\t\turl: docsLink(A11Y_MIN_CONTRAST)\n\t\t}\n\t},\n\tdefaultOptions: {\n\t\tlevel: \"AA\",\n\t\tpairs: []\n\t},\n\tcreate({ tokens, options, report }) {\n\t\tfor (let i = 0; i < options.pairs.length; i++) {\n\t\t\tconst { foreground, background, largeText } = options.pairs[i];\n\t\t\tif (!tokens[foreground]) throw new Error(`Token ${foreground} does not exist`);\n\t\t\tif (tokens[foreground].$type !== \"color\") throw new Error(`Token ${foreground} isn’t a color`);\n\t\t\tif (!tokens[background]) throw new Error(`Token ${background} does not exist`);\n\t\t\tif (tokens[background].$type !== \"color\") throw new Error(`Token ${background} isn’t a color`);\n\t\t\tconst contrast = wcagContrast(tokenToCulori(tokens[foreground].$value), tokenToCulori(tokens[background].$value));\n\t\t\tconst min = WCAG2_MIN_CONTRAST[options.level ?? \"AA\"][largeText ? \"large\" : \"default\"];\n\t\t\tif (contrast < min) report({\n\t\t\t\tmessageId: ERROR_INSUFFICIENT_CONTRAST,\n\t\t\t\tdata: {\n\t\t\t\t\tindex: i + 1,\n\t\t\t\t\texpected: min,\n\t\t\t\t\tactual: Math.round(contrast * 100) / 100,\n\t\t\t\t\tlevel: options.level\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\nvar a11y_min_contrast_default = rule$26;\n\n//#endregion\n//#region src/lint/plugin-core/rules/a11y-min-font-size.ts\nconst A11Y_MIN_FONT_SIZE = \"a11y/min-font-size\";\nconst ERROR_TOO_SMALL = \"TOO_SMALL\";\nconst rule$25 = {\n\tmeta: {\n\t\tmessages: { [ERROR_TOO_SMALL]: \"{{ id }} font size too small. Expected minimum of {{ min }}\" },\n\t\tdocs: {\n\t\t\tdescription: \"Enforce font sizes are no smaller than the given value.\",\n\t\t\turl: docsLink(A11Y_MIN_FONT_SIZE)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, options, report }) {\n\t\tif (!options.minSizePx && !options.minSizeRem) throw new Error(\"Must specify at least one of minSizePx or minSizeRem\");\n\t\tconst shouldIgnore = options.ignore ? wcmatch(options.ignore) : null;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (shouldIgnore?.(t.id)) continue;\n\t\t\tif (t.aliasOf) continue;\n\t\t\tif (t.$type === \"typography\" && \"fontSize\" in t.$value) {\n\t\t\t\tconst fontSize = t.$value.fontSize;\n\t\t\t\tif (fontSize.unit === \"px\" && options.minSizePx && fontSize.value < options.minSizePx || fontSize.unit === \"rem\" && options.minSizeRem && fontSize.value < options.minSizeRem) report({\n\t\t\t\t\tmessageId: ERROR_TOO_SMALL,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\tmin: options.minSizePx ? `${options.minSizePx}px` : `${options.minSizeRem}rem`\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar a11y_min_font_size_default = rule$25;\n\n//#endregion\n//#region src/lint/plugin-core/rules/colorspace.ts\nconst COLORSPACE$1 = \"core/colorspace\";\nconst ERROR_COLOR$1 = \"COLOR\";\nconst ERROR_BORDER$1 = \"BORDER\";\nconst ERROR_GRADIENT$1 = \"GRADIENT\";\nconst ERROR_SHADOW$1 = \"SHADOW\";\nconst rule$24 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_COLOR$1]: \"Color {{ id }} not in colorspace {{ colorSpace }}\",\n\t\t\t[ERROR_BORDER$1]: \"Border {{ id }} not in colorspace {{ colorSpace }}\",\n\t\t\t[ERROR_GRADIENT$1]: \"Gradient {{ id }} not in colorspace {{ colorSpace }}\",\n\t\t\t[ERROR_SHADOW$1]: \"Shadow {{ id }} not in colorspace {{ colorSpace }}\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Enforce that all colors are in a specific colorspace.\",\n\t\t\turl: docsLink(COLORSPACE$1)\n\t\t}\n\t},\n\tdefaultOptions: { colorSpace: \"srgb\" },\n\tcreate({ tokens, options, report }) {\n\t\tif (!options.colorSpace) return;\n\t\tconst shouldIgnore = options.ignore ? wcmatch(options.ignore) : null;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (shouldIgnore?.(t.id)) continue;\n\t\t\tif (t.aliasOf) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"color\":\n\t\t\t\t\tif (t.$value.colorSpace !== options.colorSpace) report({\n\t\t\t\t\t\tmessageId: ERROR_COLOR$1,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tcolorSpace: options.colorSpace\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"border\":\n\t\t\t\t\tif (!t.partialAliasOf?.color && t.$value.color.colorSpace !== options.colorSpace) report({\n\t\t\t\t\t\tmessageId: ERROR_BORDER$1,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tcolorSpace: options.colorSpace\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gradient\":\n\t\t\t\t\tfor (let stopI = 0; stopI < t.$value.length; stopI++) if (!t.partialAliasOf?.[stopI]?.color && t.$value[stopI].color.colorSpace !== options.colorSpace) report({\n\t\t\t\t\t\tmessageId: ERROR_GRADIENT$1,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tcolorSpace: options.colorSpace\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"shadow\":\n\t\t\t\t\tfor (let shadowI = 0; shadowI < t.$value.length; shadowI++) if (!t.partialAliasOf?.[shadowI]?.color && t.$value[shadowI].color.colorSpace !== options.colorSpace) report({\n\t\t\t\t\t\tmessageId: ERROR_SHADOW$1,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tcolorSpace: options.colorSpace\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\nvar colorspace_default = rule$24;\n\n//#endregion\n//#region ../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs\nconst NUMBER_CHAR_RE = /\\d/;\nconst STR_SPLITTERS = [\n\t\"-\",\n\t\"_\",\n\t\"/\",\n\t\".\"\n];\nfunction isUppercase(char = \"\") {\n\tif (NUMBER_CHAR_RE.test(char)) return;\n\treturn char !== char.toLowerCase();\n}\nfunction splitByCase(str, separators) {\n\tconst splitters = separators ?? STR_SPLITTERS;\n\tconst parts = [];\n\tif (!str || typeof str !== \"string\") return parts;\n\tlet buff = \"\";\n\tlet previousUpper;\n\tlet previousSplitter;\n\tfor (const char of str) {\n\t\tconst isSplitter = splitters.includes(char);\n\t\tif (isSplitter === true) {\n\t\t\tparts.push(buff);\n\t\t\tbuff = \"\";\n\t\t\tpreviousUpper = void 0;\n\t\t\tcontinue;\n\t\t}\n\t\tconst isUpper = isUppercase(char);\n\t\tif (previousSplitter === false) {\n\t\t\tif (previousUpper === false && isUpper === true) {\n\t\t\t\tparts.push(buff);\n\t\t\t\tbuff = char;\n\t\t\t\tpreviousUpper = isUpper;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (previousUpper === true && isUpper === false && buff.length > 1) {\n\t\t\t\tconst lastChar = buff.at(-1);\n\t\t\t\tparts.push(buff.slice(0, Math.max(0, buff.length - 1)));\n\t\t\t\tbuff = lastChar + char;\n\t\t\t\tpreviousUpper = isUpper;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tbuff += char;\n\t\tpreviousUpper = isUpper;\n\t\tpreviousSplitter = isSplitter;\n\t}\n\tparts.push(buff);\n\treturn parts;\n}\nfunction upperFirst(str) {\n\treturn str ? str[0].toUpperCase() + str.slice(1) : \"\";\n}\nfunction lowerFirst(str) {\n\treturn str ? str[0].toLowerCase() + str.slice(1) : \"\";\n}\nfunction pascalCase(str, opts) {\n\treturn str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join(\"\") : \"\";\n}\nfunction camelCase(str, opts) {\n\treturn lowerFirst(pascalCase(str || \"\", opts));\n}\nfunction kebabCase(str, joiner) {\n\treturn str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? \"-\") : \"\";\n}\nfunction snakeCase(str) {\n\treturn kebabCase(str || \"\", \"_\");\n}\n\n//#endregion\n//#region src/lint/plugin-core/rules/consistent-naming.ts\nconst CONSISTENT_NAMING = \"core/consistent-naming\";\nconst ERROR_WRONG_FORMAT = \"ERROR_WRONG_FORMAT\";\nconst rule$23 = {\n\tmeta: {\n\t\tmessages: { [ERROR_WRONG_FORMAT]: \"{{ id }} doesn’t match format {{ format }}\" },\n\t\tdocs: {\n\t\t\tdescription: \"Enforce consistent naming for tokens.\",\n\t\t\turl: docsLink(CONSISTENT_NAMING)\n\t\t}\n\t},\n\tdefaultOptions: { format: \"kebab-case\" },\n\tcreate({ tokens, options, report }) {\n\t\tconst basicFormatter = {\n\t\t\t\"kebab-case\": kebabCase,\n\t\t\tcamelCase,\n\t\t\tPascalCase: pascalCase,\n\t\t\tsnake_case: snakeCase,\n\t\t\tSCREAMING_SNAKE_CASE: (name) => snakeCase(name).toLocaleUpperCase()\n\t\t}[String(options.format)];\n\t\tfor (const t of Object.values(tokens)) if (basicFormatter) {\n\t\t\tif (!t.id.split(\".\").every((part) => basicFormatter(part) === part)) report({\n\t\t\t\tmessageId: ERROR_WRONG_FORMAT,\n\t\t\t\tdata: {\n\t\t\t\t\tid: t.id,\n\t\t\t\t\tformat: options.format\n\t\t\t\t},\n\t\t\t\tnode: t.source.node\n\t\t\t});\n\t\t} else if (typeof options.format === \"function\") {\n\t\t\tif (options.format(t.id)) report({\n\t\t\t\tmessageId: ERROR_WRONG_FORMAT,\n\t\t\t\tdata: {\n\t\t\t\t\tid: t.id,\n\t\t\t\t\tformat: \"(custom)\"\n\t\t\t\t},\n\t\t\t\tnode: t.source.node\n\t\t\t});\n\t\t}\n\t}\n};\nvar consistent_naming_default = rule$23;\n\n//#endregion\n//#region src/lint/plugin-core/rules/descriptions.ts\nconst DESCRIPTIONS = \"core/descriptions\";\nconst ERROR_MISSING_DESCRIPTION = \"MISSING_DESCRIPTION\";\nconst rule$22 = {\n\tmeta: {\n\t\tmessages: { [ERROR_MISSING_DESCRIPTION]: \"{{ id }} missing description\" },\n\t\tdocs: {\n\t\t\tdescription: \"Enforce tokens have descriptions.\",\n\t\t\turl: docsLink(DESCRIPTIONS)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, options, report }) {\n\t\tconst shouldIgnore = options.ignore ? wcmatch(options.ignore) : null;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (shouldIgnore?.(t.id)) continue;\n\t\t\tif (!t.$description) report({\n\t\t\t\tmessageId: ERROR_MISSING_DESCRIPTION,\n\t\t\t\tdata: { id: t.id },\n\t\t\t\tnode: t.source.node\n\t\t\t});\n\t\t}\n\t}\n};\nvar descriptions_default = rule$22;\n\n//#endregion\n//#region src/lint/plugin-core/rules/duplicate-values.ts\nconst DUPLICATE_VALUES = \"core/duplicate-values\";\nconst ERROR_DUPLICATE_VALUE = \"ERROR_DUPLICATE_VALUE\";\nconst rule$21 = {\n\tmeta: {\n\t\tmessages: { [ERROR_DUPLICATE_VALUE]: \"{{ id }} declared a duplicate value\" },\n\t\tdocs: {\n\t\t\tdescription: \"Enforce tokens can’t redeclare the same value (excludes aliases).\",\n\t\t\turl: docsLink(DUPLICATE_VALUES)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ report, tokens, options }) {\n\t\tconst values = {};\n\t\tconst shouldIgnore = options.ignore ? wcmatch(options.ignore) : null;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (shouldIgnore?.(t.id)) continue;\n\t\t\tif (!values[t.$type]) values[t.$type] = /* @__PURE__ */ new Set();\n\t\t\tif (t.$type === \"boolean\" || t.$type === \"duration\" || t.$type === \"fontWeight\" || t.$type === \"link\" || t.$type === \"number\" || t.$type === \"string\") {\n\t\t\t\tif (typeof t.aliasOf === \"string\" && isAlias(t.aliasOf)) continue;\n\t\t\t\tif (values[t.$type]?.has(t.$value)) report({\n\t\t\t\t\tmessageId: ERROR_DUPLICATE_VALUE,\n\t\t\t\t\tdata: { id: t.id },\n\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t});\n\t\t\t\tvalues[t.$type]?.add(t.$value);\n\t\t\t} else {\n\t\t\t\tfor (const v of values[t.$type].values() ?? []) if (JSON.stringify(t.$value) === JSON.stringify(v)) {\n\t\t\t\t\treport({\n\t\t\t\t\t\tmessageId: ERROR_DUPLICATE_VALUE,\n\t\t\t\t\t\tdata: { id: t.id },\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvalues[t.$type].add(t.$value);\n\t\t\t}\n\t\t}\n\t}\n};\nvar duplicate_values_default = rule$21;\n\n//#endregion\n//#region src/lint/plugin-core/rules/max-gamut.ts\nconst MAX_GAMUT = \"core/max-gamut\";\nconst TOLERANCE = 1e-6;\n/** is a Culori-parseable color within the specified gamut? */\nfunction isWithinGamut(color, gamut) {\n\tconst parsed = tokenToCulori(color);\n\tif (!parsed) return false;\n\tif ([\n\t\t\"rgb\",\n\t\t\"hsl\",\n\t\t\"hwb\"\n\t].includes(parsed.mode)) return true;\n\treturn isWithinThreshold(parsed, clampChroma(parsed, parsed.mode, gamut === \"srgb\" ? \"rgb\" : gamut));\n}\n/** is Color A close enough to Color B? */\nfunction isWithinThreshold(a, b, tolerance = TOLERANCE) {\n\tfor (const k in a) {\n\t\tif (k === \"mode\" || k === \"alpha\") continue;\n\t\tif (!(k in b)) throw new Error(`Can’t compare ${a.mode} to ${b.mode}`);\n\t\tif (Math.abs(a[k] - b[k]) > tolerance) return false;\n\t}\n\treturn true;\n}\nconst ERROR_COLOR = \"COLOR\";\nconst ERROR_BORDER = \"BORDER\";\nconst ERROR_GRADIENT = \"GRADIENT\";\nconst ERROR_SHADOW = \"SHADOW\";\nconst rule$20 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_COLOR]: \"Color {{ id }} is outside {{ gamut }} gamut\",\n\t\t\t[ERROR_BORDER]: \"Border {{ id }} is outside {{ gamut }} gamut\",\n\t\t\t[ERROR_GRADIENT]: \"Gradient {{ id }} is outside {{ gamut }} gamut\",\n\t\t\t[ERROR_SHADOW]: \"Shadow {{ id }} is outside {{ gamut }} gamut\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Enforce colors are within the specified gamut.\",\n\t\t\turl: docsLink(MAX_GAMUT)\n\t\t}\n\t},\n\tdefaultOptions: { gamut: \"rec2020\" },\n\tcreate({ tokens, options, report }) {\n\t\tif (!options?.gamut) return;\n\t\tif (options.gamut !== \"srgb\" && options.gamut !== \"p3\" && options.gamut !== \"rec2020\") throw new Error(`Unknown gamut \"${options.gamut}\". Options are \"srgb\", \"p3\", or \"rec2020\"`);\n\t\tconst shouldIgnore = options.ignore ? wcmatch(options.ignore) : null;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (shouldIgnore?.(t.id)) continue;\n\t\t\tif (t.aliasOf) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"color\":\n\t\t\t\t\tif (!isWithinGamut(t.$value, options.gamut)) report({\n\t\t\t\t\t\tmessageId: ERROR_COLOR,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tgamut: options.gamut\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"border\":\n\t\t\t\t\tif (!t.partialAliasOf?.color && !isWithinGamut(t.$value.color, options.gamut)) report({\n\t\t\t\t\t\tmessageId: ERROR_BORDER,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tgamut: options.gamut\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gradient\":\n\t\t\t\t\tfor (let stopI = 0; stopI < t.$value.length; stopI++) if (!t.partialAliasOf?.[stopI]?.color && !isWithinGamut(t.$value[stopI].color, options.gamut)) report({\n\t\t\t\t\t\tmessageId: ERROR_GRADIENT,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tgamut: options.gamut\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"shadow\":\n\t\t\t\t\tfor (let shadowI = 0; shadowI < t.$value.length; shadowI++) if (!t.partialAliasOf?.[shadowI]?.color && !isWithinGamut(t.$value[shadowI].color, options.gamut)) report({\n\t\t\t\t\t\tmessageId: ERROR_SHADOW,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tid: t.id,\n\t\t\t\t\t\t\tgamut: options.gamut\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\nvar max_gamut_default = rule$20;\n\n//#endregion\n//#region src/lint/plugin-core/rules/required-children.ts\nconst REQUIRED_CHILDREN = \"core/required-children\";\nconst ERROR_EMPTY_MATCH = \"EMPTY_MATCH\";\nconst ERROR_MISSING_REQUIRED_TOKENS = \"MISSING_REQUIRED_TOKENS\";\nconst ERROR_MISSING_REQUIRED_GROUP = \"MISSING_REQUIRED_GROUP\";\nconst rule$19 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_EMPTY_MATCH]: \"No tokens matched {{ matcher }}\",\n\t\t\t[ERROR_MISSING_REQUIRED_TOKENS]: \"Match {{ index }}: some groups missing required token \\\"{{ token }}\\\"\",\n\t\t\t[ERROR_MISSING_REQUIRED_GROUP]: \"Match {{ index }}: some tokens missing required group \\\"{{ group }}\\\"\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Enforce token groups have specific children, whether tokens and/or groups.\",\n\t\t\turl: docsLink(REQUIRED_CHILDREN)\n\t\t}\n\t},\n\tdefaultOptions: { matches: [] },\n\tcreate({ tokens, options, report }) {\n\t\tif (!options.matches?.length) throw new Error(\"Invalid config. Missing `matches: […]`\");\n\t\tfor (let matchI = 0; matchI < options.matches.length; matchI++) {\n\t\t\tconst { match, requiredTokens, requiredGroups } = options.matches[matchI];\n\t\t\tif (!match.length) throw new Error(`Match ${matchI}: must declare \\`match: […]\\``);\n\t\t\tif (!requiredTokens?.length && !requiredGroups?.length) throw new Error(`Match ${matchI}: must declare either \\`requiredTokens: […]\\` or \\`requiredGroups: […]\\``);\n\t\t\tconst matcher = wcmatch(match);\n\t\t\tconst matchGroups = [];\n\t\t\tconst matchTokens = [];\n\t\t\tlet tokensMatched = false;\n\t\t\tfor (const t of Object.values(tokens)) {\n\t\t\t\tif (!matcher(t.id)) continue;\n\t\t\t\ttokensMatched = true;\n\t\t\t\tconst groups = t.id.split(\".\");\n\t\t\t\tmatchTokens.push(groups.pop());\n\t\t\t\tmatchGroups.push(...groups);\n\t\t\t}\n\t\t\tif (!tokensMatched) {\n\t\t\t\treport({\n\t\t\t\t\tmessageId: ERROR_EMPTY_MATCH,\n\t\t\t\t\tdata: { matcher: JSON.stringify(match) }\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (requiredTokens) {\n\t\t\t\tfor (const id of requiredTokens) if (!matchTokens.includes(id)) report({\n\t\t\t\t\tmessageId: ERROR_MISSING_REQUIRED_TOKENS,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tindex: matchI,\n\t\t\t\t\t\ttoken: id\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (requiredGroups) {\n\t\t\t\tfor (const groupName of requiredGroups) if (!matchGroups.includes(groupName)) report({\n\t\t\t\t\tmessageId: ERROR_MISSING_REQUIRED_GROUP,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tindex: matchI,\n\t\t\t\t\t\tgroup: groupName\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar required_children_default = rule$19;\n\n//#endregion\n//#region src/lint/plugin-core/rules/required-modes.ts\nconst REQUIRED_MODES = \"core/required-modes\";\nconst rule$18 = {\n\tmeta: { docs: {\n\t\tdescription: \"Enforce certain tokens have specific modes.\",\n\t\turl: docsLink(REQUIRED_MODES)\n\t} },\n\tdefaultOptions: { matches: [] },\n\tcreate({ tokens, options, report }) {\n\t\tif (!options?.matches?.length) throw new Error(\"Invalid config. Missing `matches: […]`\");\n\t\tfor (let matchI = 0; matchI < options.matches.length; matchI++) {\n\t\t\tconst { match, modes } = options.matches[matchI];\n\t\t\tif (!match.length) throw new Error(`Match ${matchI}: must declare \\`match: […]\\``);\n\t\t\tif (!modes?.length) throw new Error(`Match ${matchI}: must declare \\`modes: […]\\``);\n\t\t\tconst matcher = wcmatch(match);\n\t\t\tlet tokensMatched = false;\n\t\t\tfor (const t of Object.values(tokens)) {\n\t\t\t\tif (!matcher(t.id)) continue;\n\t\t\t\ttokensMatched = true;\n\t\t\t\tfor (const mode of modes) if (!t.mode?.[mode]) report({\n\t\t\t\t\tmessage: `Token ${t.id}: missing required mode \"${mode}\"`,\n\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t});\n\t\t\t\tif (!tokensMatched) report({\n\t\t\t\t\tmessage: `Match \"${matchI}\": no tokens matched ${JSON.stringify(match)}`,\n\t\t\t\t\tnode: t.source.node,\n\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar required_modes_default = rule$18;\n\n//#endregion\n//#region src/lint/plugin-core/rules/required-type.ts\nconst REQUIRED_TYPE = \"core/required-type\";\nconst ERROR$10 = \"ERROR\";\nconst rule$17 = {\n\tmeta: {\n\t\tmessages: { [ERROR$10]: \"Token missing $type.\" },\n\t\tdocs: {\n\t\t\tdescription: \"Requiring every token to have $type, even aliases, simplifies computation.\",\n\t\t\turl: docsLink(REQUIRED_TYPE)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) if (!t.originalValue?.$type) report({\n\t\t\tmessageId: ERROR$10,\n\t\t\tnode: t.source.node,\n\t\t\tfilename: t.source.filename\n\t\t});\n\t}\n};\nvar required_type_default = rule$17;\n\n//#endregion\n//#region src/lint/plugin-core/rules/required-typography-properties.ts\nconst REQUIRED_TYPOGRAPHY_PROPERTIES = \"core/required-typography-properties\";\n/** @deprecated Use core/valid-typography instead */\nconst rule$16 = {\n\tmeta: { docs: {\n\t\tdescription: \"Enforce typography tokens have required properties.\",\n\t\turl: docsLink(REQUIRED_TYPOGRAPHY_PROPERTIES)\n\t} },\n\tdefaultOptions: { properties: [\n\t\t\"fontFamily\",\n\t\t\"fontSize\",\n\t\t\"fontWeight\",\n\t\t\"letterSpacing\",\n\t\t\"lineHeight\"\n\t] },\n\tcreate({ tokens, options, report }) {\n\t\tif (!options) return;\n\t\tif (!options.properties.length) throw new Error(`\"properties\" can’t be empty`);\n\t\tconst shouldIgnore = options.ignore ? wcmatch(options.ignore) : null;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (shouldIgnore?.(t.id)) continue;\n\t\t\tif (t.$type !== \"typography\") continue;\n\t\t\tif (t.aliasOf) continue;\n\t\t\tfor (const p of options.properties) if (!t.partialAliasOf?.[p] && !(p in t.$value)) report({\n\t\t\t\tmessage: `This rule is deprecated. Use core/valid-typography. Missing required typographic property \"${p}\"`,\n\t\t\t\tnode: t.source.node,\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t}\n\t}\n};\nvar required_typography_properties_default = rule$16;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-boolean.ts\nconst VALID_BOOLEAN = \"core/valid-boolean\";\nconst ERROR$9 = \"ERROR\";\nconst rule$15 = {\n\tmeta: {\n\t\tmessages: { [ERROR$9]: \"Must be a boolean.\" },\n\t\tdocs: {\n\t\t\tdescription: \"Require boolean tokens to follow the Terrazzo extension.\",\n\t\t\turl: docsLink(VALID_BOOLEAN)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"boolean\") continue;\n\t\t\tvalidateBoolean(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t\tfunction validateBoolean(value, { node, filename }) {\n\t\t\t\tif (typeof value !== \"boolean\") report({\n\t\t\t\t\tmessageId: ERROR$9,\n\t\t\t\t\tfilename,\n\t\t\t\t\tnode\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_boolean_default = rule$15;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-border.ts\nconst VALID_BORDER = \"core/valid-border\";\nconst ERROR$8 = \"ERROR\";\nconst ERROR_INVALID_PROP$7 = \"ERROR_INVALID_PROP\";\nconst rule$14 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR$8]: `Border token missing required properties: ${new Intl.ListFormat(void 0, { type: \"conjunction\" }).format(BORDER_REQUIRED_PROPERTIES)}.`,\n\t\t\t[ERROR_INVALID_PROP$7]: \"Unknown property: {{ key }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require border tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_BORDER)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"border\") continue;\n\t\t\tvalidateBorder(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t}\n\t\tfunction validateBorder(value, { node, filename }) {\n\t\t\tif (!value || typeof value !== \"object\" || !BORDER_REQUIRED_PROPERTIES.every((property) => property in value)) report({\n\t\t\t\tmessageId: ERROR$8,\n\t\t\t\tfilename,\n\t\t\t\tnode\n\t\t\t});\n\t\t\telse for (const key of Object.keys(value)) if (!BORDER_REQUIRED_PROPERTIES.includes(key)) report({\n\t\t\t\tmessageId: ERROR_INVALID_PROP$7,\n\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\tnode: getObjMember(node, key) ?? node,\n\t\t\t\tfilename\n\t\t\t});\n\t\t}\n\t}\n};\nvar valid_border_default = rule$14;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-color.ts\nconst VALID_COLOR = \"core/valid-color\";\nconst ERROR_ALPHA = \"ERROR_ALPHA\";\nconst ERROR_INVALID_COLOR = \"ERROR_INVALID_COLOR\";\nconst ERROR_INVALID_COLOR_SPACE = \"ERROR_INVALID_COLOR_SPACE\";\nconst ERROR_INVALID_COMPONENT_LENGTH = \"ERROR_INVALID_COMPONENT_LENGTH\";\nconst ERROR_INVALID_HEX8 = \"ERROR_INVALID_HEX8\";\nconst ERROR_INVALID_PROP$6 = \"ERROR_INVALID_PROP\";\nconst ERROR_MISSING_COMPONENTS = \"ERROR_MISSING_COMPONENTS\";\nconst ERROR_OBJ_FORMAT = \"ERROR_OBJ_FORMAT\";\nconst ERROR_OUT_OF_RANGE = \"ERROR_OUT_OF_RANGE\";\nconst rule$13 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_ALPHA]: `Alpha {{ alpha }} not in range 0 – 1.`,\n\t\t\t[ERROR_INVALID_COLOR_SPACE]: `Invalid color space: {{ colorSpace }}. Expected ${new Intl.ListFormat(void 0, { type: \"disjunction\" }).format(Object.keys(COLORSPACE))}`,\n\t\t\t[ERROR_INVALID_COLOR]: `Could not parse color {{ color }}.`,\n\t\t\t[ERROR_INVALID_COMPONENT_LENGTH]: \"Expected {{ expected }} components, received {{ got }}.\",\n\t\t\t[ERROR_INVALID_HEX8]: `Hex value can’t be semi-transparent.`,\n\t\t\t[ERROR_INVALID_PROP$6]: `Unknown property {{ key }}.`,\n\t\t\t[ERROR_MISSING_COMPONENTS]: \"Expected components to be array of numbers, received {{ got }}.\",\n\t\t\t[ERROR_OBJ_FORMAT]: \"Migrate to the new object format, e.g. \\\"#ff0000\\\" → { \\\"colorSpace\\\": \\\"srgb\\\", \\\"components\\\": [1, 0, 0] } }\",\n\t\t\t[ERROR_OUT_OF_RANGE]: `Invalid range for color space {{ colorSpace }}. Expected {{ range }}.`\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require color tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_COLOR)\n\t\t}\n\t},\n\tdefaultOptions: {\n\t\tlegacyFormat: false,\n\t\tignoreRanges: false\n\t},\n\tcreate({ tokens, options, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"color\":\n\t\t\t\t\tvalidateColor(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"border\":\n\t\t\t\t\tif (t.originalValue.$value.color && !isAlias(t.originalValue.$value.color)) validateColor(t.originalValue.$value.color, {\n\t\t\t\t\t\tnode: getObjMember(getObjMember(t.source.node, \"$value\"), \"color\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gradient\": {\n\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\tfor (let i = 0; i < t.originalValue.$value.length; i++) {\n\t\t\t\t\t\tconst stop = t.originalValue.$value[i];\n\t\t\t\t\t\tif (!stop.color || isAlias(stop.color)) continue;\n\t\t\t\t\t\tvalidateColor(stop.color, {\n\t\t\t\t\t\t\tnode: getObjMember($valueNode.elements[i].value, \"color\"),\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"shadow\": {\n\t\t\t\t\tconst $value = Array.isArray(t.originalValue.$value) ? t.originalValue.$value : [t.originalValue.$value];\n\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\tfor (let i = 0; i < $value.length; i++) {\n\t\t\t\t\t\tconst layer = $value[i];\n\t\t\t\t\t\tif (!layer.color || isAlias(layer.color)) continue;\n\t\t\t\t\t\tvalidateColor(layer.color, {\n\t\t\t\t\t\t\tnode: $valueNode.type === \"Object\" ? getObjMember($valueNode, \"color\") : getObjMember($valueNode.elements[i].value, \"color\"),\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction validateColor(value, { node, filename }) {\n\t\t\t\tif (!value) report({\n\t\t\t\t\tmessageId: ERROR_INVALID_COLOR,\n\t\t\t\t\tdata: { color: JSON.stringify(value) },\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t\telse if (typeof value === \"object\") {\n\t\t\t\t\tfor (const key of Object.keys(value)) if (![\n\t\t\t\t\t\t\"colorSpace\",\n\t\t\t\t\t\t\"components\",\n\t\t\t\t\t\t\"channels\",\n\t\t\t\t\t\t\"hex\",\n\t\t\t\t\t\t\"alpha\"\n\t\t\t\t\t].includes(key)) report({\n\t\t\t\t\t\tmessageId: ERROR_INVALID_PROP$6,\n\t\t\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\t\t\tnode: getObjMember(node, key) ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tconst colorSpace = \"colorSpace\" in value && typeof value.colorSpace === \"string\" ? value.colorSpace : void 0;\n\t\t\t\t\tconst csData = COLORSPACE[colorSpace] || void 0;\n\t\t\t\t\tif (!(\"colorSpace\" in value) || !csData) {\n\t\t\t\t\t\treport({\n\t\t\t\t\t\t\tmessageId: ERROR_INVALID_COLOR_SPACE,\n\t\t\t\t\t\t\tdata: { colorSpace },\n\t\t\t\t\t\t\tnode: getObjMember(node, \"colorSpace\") ?? node,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst components = \"components\" in value ? value.components : void 0;\n\t\t\t\t\tif (Array.isArray(components)) if (csData?.ranges && components?.length === csData.ranges.length) {\n\t\t\t\t\t\tfor (let i = 0; i < components.length; i++) if (!Number.isFinite(components[i]) || components[i] < csData.ranges[i][0] || components[i] > csData.ranges[i][1]) {\n\t\t\t\t\t\t\tif (!(colorSpace === \"hsl\" && components[0] === null) && !(colorSpace === \"hwb\" && components[0] === null) && !(colorSpace === \"lch\" && components[2] === null) && !(colorSpace === \"oklch\" && components[2] === null)) report({\n\t\t\t\t\t\t\t\tmessageId: ERROR_OUT_OF_RANGE,\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tcolorSpace,\n\t\t\t\t\t\t\t\t\trange: `[${csData.ranges.map((r) => `${r[0]}–${r[1]}`).join(\", \")}]`\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnode: getObjMember(node, \"components\") ?? node,\n\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else report({\n\t\t\t\t\t\tmessageId: ERROR_INVALID_COMPONENT_LENGTH,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\texpected: csData?.ranges.length,\n\t\t\t\t\t\t\tgot: components?.length ?? 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: getObjMember(node, \"components\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\telse report({\n\t\t\t\t\t\tmessageId: ERROR_MISSING_COMPONENTS,\n\t\t\t\t\t\tdata: { got: JSON.stringify(components) },\n\t\t\t\t\t\tnode: getObjMember(node, \"components\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tconst alpha = \"alpha\" in value ? value.alpha : void 0;\n\t\t\t\t\tif (alpha !== void 0 && (typeof alpha !== \"number\" || alpha < 0 || alpha > 1)) report({\n\t\t\t\t\t\tmessageId: ERROR_ALPHA,\n\t\t\t\t\t\tdata: { alpha },\n\t\t\t\t\t\tnode: getObjMember(node, \"alpha\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tconst hex = \"hex\" in value ? value.hex : void 0;\n\t\t\t\t\tif (hex) {\n\t\t\t\t\t\tlet color;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcolor = parseColor(hex);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\treport({\n\t\t\t\t\t\t\t\tmessageId: ERROR_INVALID_COLOR,\n\t\t\t\t\t\t\t\tdata: { color: hex },\n\t\t\t\t\t\t\t\tnode: getObjMember(node, \"hex\") ?? node,\n\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (color.alpha !== 1) report({\n\t\t\t\t\t\t\tmessageId: ERROR_INVALID_HEX8,\n\t\t\t\t\t\t\tdata: { color: hex },\n\t\t\t\t\t\t\tnode: getObjMember(node, \"hex\") ?? node,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof value === \"string\") {\n\t\t\t\t\tif (isAlias(value)) return;\n\t\t\t\t\tif (!options.legacyFormat) report({\n\t\t\t\t\t\tmessageId: ERROR_OBJ_FORMAT,\n\t\t\t\t\t\tdata: { color: JSON.stringify(value) },\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\telse try {\n\t\t\t\t\t\tparseColor(value);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\treport({\n\t\t\t\t\t\t\tmessageId: ERROR_INVALID_COLOR,\n\t\t\t\t\t\t\tdata: { color: JSON.stringify(value) },\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else report({\n\t\t\t\t\tmessageId: ERROR_INVALID_COLOR,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_color_default = rule$13;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-cubic-bezier.ts\nconst VALID_CUBIC_BEZIER = \"core/valid-cubic-bezier\";\nconst ERROR$7 = \"ERROR\";\nconst ERROR_X = \"ERROR_X\";\nconst ERROR_Y = \"ERROR_Y\";\nconst rule$12 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR$7]: \"Expected [number, number, number, number].\",\n\t\t\t[ERROR_X]: \"x values must be between 0-1.\",\n\t\t\t[ERROR_Y]: \"y values must be a valid number.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require cubicBezier tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_CUBIC_BEZIER)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"cubicBezier\":\n\t\t\t\t\tvalidateCubicBezier(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"transition\": if (typeof t.originalValue.$value === \"object\" && t.originalValue.$value.timingFunction && !isAlias(t.originalValue.$value.timingFunction)) {\n\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\tvalidateCubicBezier(t.originalValue.$value.timingFunction, {\n\t\t\t\t\t\tnode: getObjMember($valueNode, \"timingFunction\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction validateCubicBezier(value, { node, filename }) {\n\t\t\t\tif (Array.isArray(value) && value.length === 4) {\n\t\t\t\t\tfor (const pos of [0, 2]) {\n\t\t\t\t\t\tif (isAlias(value[pos]) || isPure$ref(value[pos])) continue;\n\t\t\t\t\t\tif (!(value[pos] >= 0 && value[pos] <= 1)) report({\n\t\t\t\t\t\t\tmessageId: ERROR_X,\n\t\t\t\t\t\t\tnode: node.elements[pos],\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tfor (const pos of [1, 3]) {\n\t\t\t\t\t\tif (isAlias(value[pos]) || isPure$ref(value[pos])) continue;\n\t\t\t\t\t\tif (typeof value[pos] !== \"number\") report({\n\t\t\t\t\t\t\tmessageId: ERROR_Y,\n\t\t\t\t\t\t\tnode: node.elements[pos],\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else report({\n\t\t\t\t\tmessageId: ERROR$7,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_cubic_bezier_default = rule$12;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-dimension.ts\nconst VALID_DIMENSION = \"core/valid-dimension\";\nconst ERROR_FORMAT$1 = \"ERROR_FORMAT\";\nconst ERROR_INVALID_PROP$5 = \"ERROR_INVALID_PROP\";\nconst ERROR_LEGACY$1 = \"ERROR_LEGACY\";\nconst ERROR_UNIT$1 = \"ERROR_UNIT\";\nconst ERROR_VALUE$1 = \"ERROR_VALUE\";\nconst rule$11 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_FORMAT$1]: \"Invalid dimension: {{ value }}. Expected object with \\\"value\\\" and \\\"unit\\\".\",\n\t\t\t[ERROR_LEGACY$1]: \"Migrate to the new object format: { \\\"value\\\": 10, \\\"unit\\\": \\\"px\\\" }.\",\n\t\t\t[ERROR_UNIT$1]: \"Unit {{ unit }} not allowed. Expected {{ allowed }}.\",\n\t\t\t[ERROR_INVALID_PROP$5]: \"Unknown property {{ key }}.\",\n\t\t\t[ERROR_VALUE$1]: \"Expected number, received {{ value }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require dimension tokens to follow the format\",\n\t\t\turl: docsLink(VALID_DIMENSION)\n\t\t}\n\t},\n\tdefaultOptions: {\n\t\tlegacyFormat: false,\n\t\tallowedUnits: [\n\t\t\t\"px\",\n\t\t\t\"em\",\n\t\t\t\"rem\"\n\t\t]\n\t},\n\tcreate({ tokens, options, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"dimension\":\n\t\t\t\t\tvalidateDimension(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"strokeStyle\":\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\" && Array.isArray(t.originalValue.$value.dashArray)) {\n\t\t\t\t\t\tconst dashArray = getObjMember(getObjMember(t.source.node, \"$value\"), \"dashArray\");\n\t\t\t\t\t\tfor (let i = 0; i < t.originalValue.$value.dashArray.length; i++) {\n\t\t\t\t\t\t\tif (isAlias(t.originalValue.$value.dashArray[i])) continue;\n\t\t\t\t\t\t\tvalidateDimension(t.originalValue.$value.dashArray[i], {\n\t\t\t\t\t\t\t\tnode: dashArray.elements[i].value,\n\t\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"border\": {\n\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\") {\n\t\t\t\t\t\tif (t.originalValue.$value.width && !isAlias(t.originalValue.$value.width)) validateDimension(t.originalValue.$value.width, {\n\t\t\t\t\t\t\tnode: getObjMember($valueNode, \"width\"),\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (typeof t.originalValue.$value.style === \"object\" && Array.isArray(t.originalValue.$value.style.dashArray)) {\n\t\t\t\t\t\t\tconst dashArray = getObjMember(getObjMember($valueNode, \"style\"), \"dashArray\");\n\t\t\t\t\t\t\tfor (let i = 0; i < t.originalValue.$value.style.dashArray.length; i++) {\n\t\t\t\t\t\t\t\tif (isAlias(t.originalValue.$value.style.dashArray[i])) continue;\n\t\t\t\t\t\t\t\tvalidateDimension(t.originalValue.$value.style.dashArray[i], {\n\t\t\t\t\t\t\t\t\tnode: dashArray.elements[i].value,\n\t\t\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"shadow\":\n\t\t\t\t\tif (t.originalValue.$value && typeof t.originalValue.$value === \"object\") {\n\t\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\t\tconst valueArray = Array.isArray(t.originalValue.$value) ? t.originalValue.$value : [t.originalValue.$value];\n\t\t\t\t\t\tfor (let i = 0; i < valueArray.length; i++) {\n\t\t\t\t\t\t\tconst node = $valueNode.type === \"Array\" ? $valueNode.elements[i].value : $valueNode;\n\t\t\t\t\t\t\tfor (const property of [\n\t\t\t\t\t\t\t\t\"offsetX\",\n\t\t\t\t\t\t\t\t\"offsetY\",\n\t\t\t\t\t\t\t\t\"blur\",\n\t\t\t\t\t\t\t\t\"spread\"\n\t\t\t\t\t\t\t]) {\n\t\t\t\t\t\t\t\tif (isAlias(valueArray[i][property])) continue;\n\t\t\t\t\t\t\t\tvalidateDimension(valueArray[i][property], {\n\t\t\t\t\t\t\t\t\tnode: getObjMember(node, property),\n\t\t\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"typography\": {\n\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\") {\n\t\t\t\t\t\tfor (const property of [\n\t\t\t\t\t\t\t\"fontSize\",\n\t\t\t\t\t\t\t\"lineHeight\",\n\t\t\t\t\t\t\t\"letterSpacing\"\n\t\t\t\t\t\t]) if (property in t.originalValue.$value) {\n\t\t\t\t\t\t\tif (isAlias(t.originalValue.$value[property]) || property === \"lineHeight\" && typeof t.originalValue.$value[property] === \"number\") continue;\n\t\t\t\t\t\t\tvalidateDimension(t.originalValue.$value[property], {\n\t\t\t\t\t\t\t\tnode: getObjMember($valueNode, property),\n\t\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction validateDimension(value, { node, filename }) {\n\t\t\t\tif (value && typeof value === \"object\") {\n\t\t\t\t\tfor (const key of Object.keys(value)) if (![\"value\", \"unit\"].includes(key)) report({\n\t\t\t\t\t\tmessageId: ERROR_INVALID_PROP$5,\n\t\t\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\t\t\tnode: getObjMember(node, key) ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tconst { unit, value: numValue } = value;\n\t\t\t\t\tif (!(\"value\" in value || \"unit\" in value)) {\n\t\t\t\t\t\treport({\n\t\t\t\t\t\t\tmessageId: ERROR_FORMAT$1,\n\t\t\t\t\t\t\tdata: { value },\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!options.allowedUnits.includes(unit)) report({\n\t\t\t\t\t\tmessageId: ERROR_UNIT$1,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tunit,\n\t\t\t\t\t\t\tallowed: new Intl.ListFormat(\"en-us\", { type: \"disjunction\" }).format(options.allowedUnits)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode: getObjMember(node, \"unit\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tif (!Number.isFinite(numValue)) report({\n\t\t\t\t\t\tmessageId: ERROR_VALUE$1,\n\t\t\t\t\t\tdata: { value },\n\t\t\t\t\t\tnode: getObjMember(node, \"value\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else if (typeof value === \"string\" && !options.legacyFormat) report({\n\t\t\t\t\tmessageId: ERROR_LEGACY$1,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t\telse report({\n\t\t\t\t\tmessageId: ERROR_FORMAT$1,\n\t\t\t\t\tdata: { value },\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_dimension_default = rule$11;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-duration.ts\nconst VALID_DURATION = \"core/valid-duration\";\nconst ERROR_FORMAT = \"ERROR_FORMAT\";\nconst ERROR_INVALID_PROP$4 = \"ERROR_INVALID_PROP\";\nconst ERROR_LEGACY = \"ERROR_LEGACY\";\nconst ERROR_UNIT = \"ERROR_UNIT\";\nconst ERROR_VALUE = \"ERROR_VALUE\";\nconst rule$10 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_FORMAT]: \"Migrate to the new object format: { \\\"value\\\": 2, \\\"unit\\\": \\\"ms\\\" }.\",\n\t\t\t[ERROR_LEGACY]: \"Migrate to the new object format: { \\\"value\\\": 10, \\\"unit\\\": \\\"px\\\" }.\",\n\t\t\t[ERROR_INVALID_PROP$4]: \"Unknown property: {{ key }}.\",\n\t\t\t[ERROR_UNIT]: \"Unknown unit {{ unit }}. Expected \\\"ms\\\" or \\\"s\\\".\",\n\t\t\t[ERROR_VALUE]: \"Expected number, received {{ value }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require duration tokens to follow the format\",\n\t\t\turl: docsLink(VALID_DURATION)\n\t\t}\n\t},\n\tdefaultOptions: {\n\t\tlegacyFormat: false,\n\t\tunknownUnits: false\n\t},\n\tcreate({ tokens, options, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"duration\":\n\t\t\t\t\tvalidateDuration(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"transition\":\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\") {\n\t\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\t\tfor (const property of [\"duration\", \"delay\"]) if (t.originalValue.$value[property] && !isAlias(t.originalValue.$value[property])) validateDuration(t.originalValue.$value[property], {\n\t\t\t\t\t\t\tnode: getObjMember($valueNode, property),\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfunction validateDuration(value, { node, filename }) {\n\t\t\t\tif (value && typeof value === \"object\") {\n\t\t\t\t\tfor (const key of Object.keys(value)) if (![\"value\", \"unit\"].includes(key)) report({\n\t\t\t\t\t\tmessageId: ERROR_INVALID_PROP$4,\n\t\t\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\t\t\tnode: getObjMember(node, key) ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tconst { unit, value: numValue } = value;\n\t\t\t\t\tif (!(\"value\" in value || \"unit\" in value)) {\n\t\t\t\t\t\treport({\n\t\t\t\t\t\t\tmessageId: ERROR_FORMAT,\n\t\t\t\t\t\t\tdata: { value },\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!options.unknownUnits && ![\"ms\", \"s\"].includes(unit)) report({\n\t\t\t\t\t\tmessageId: ERROR_UNIT,\n\t\t\t\t\t\tdata: { unit },\n\t\t\t\t\t\tnode: getObjMember(node, \"unit\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tif (!Number.isFinite(numValue)) report({\n\t\t\t\t\t\tmessageId: ERROR_VALUE,\n\t\t\t\t\t\tdata: { value },\n\t\t\t\t\t\tnode: getObjMember(node, \"value\") ?? node,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else if (typeof value === \"string\" && !options.legacyFormat) report({\n\t\t\t\t\tmessageId: ERROR_FORMAT,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t\telse report({\n\t\t\t\t\tmessageId: ERROR_FORMAT,\n\t\t\t\t\tdata: { value },\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_duration_default = rule$10;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-font-family.ts\nconst VALID_FONT_FAMILY = \"core/valid-font-family\";\nconst ERROR$6 = \"ERROR\";\nconst rule$9 = {\n\tmeta: {\n\t\tmessages: { [ERROR$6]: \"Must be a string, or array of strings.\" },\n\t\tdocs: {\n\t\t\tdescription: \"Require fontFamily tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_FONT_FAMILY)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"fontFamily\":\n\t\t\t\t\tvalidateFontFamily(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"typography\":\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\" && t.originalValue.$value.fontFamily) {\n\t\t\t\t\t\tif (t.partialAliasOf?.fontFamily) continue;\n\t\t\t\t\t\tconst properties = getObjMembers(getObjMember(t.source.node, \"$value\"));\n\t\t\t\t\t\tvalidateFontFamily(t.originalValue.$value.fontFamily, {\n\t\t\t\t\t\t\tnode: properties.fontFamily,\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfunction validateFontFamily(value, { node, filename }) {\n\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\tif (!value) report({\n\t\t\t\t\t\tmessageId: ERROR$6,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\t\tif (!value.every((v) => v && typeof v === \"string\")) report({\n\t\t\t\t\t\tmessageId: ERROR$6,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else report({\n\t\t\t\t\tmessageId: ERROR$6,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_font_family_default = rule$9;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-font-weight.ts\nconst VALID_FONT_WEIGHT = \"core/valid-font-weight\";\nconst ERROR$5 = \"ERROR\";\nconst ERROR_STYLE = \"ERROR_STYLE\";\nconst rule$8 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR$5]: `Must either be a valid number (0 - 999) or a valid font weight: ${new Intl.ListFormat(void 0, { type: \"disjunction\" }).format(Object.keys(FONT_WEIGHTS))}.`,\n\t\t\t[ERROR_STYLE]: \"Expected style {{ style }}, received {{ value }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require number tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_FONT_WEIGHT)\n\t\t}\n\t},\n\tdefaultOptions: { style: void 0 },\n\tcreate({ tokens, options, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"fontWeight\":\n\t\t\t\t\tvalidateFontWeight(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"typography\":\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\" && t.originalValue.$value.fontWeight) {\n\t\t\t\t\t\tif (t.partialAliasOf?.fontWeight) continue;\n\t\t\t\t\t\tconst properties = getObjMembers(getObjMember(t.source.node, \"$value\"));\n\t\t\t\t\t\tvalidateFontWeight(t.originalValue.$value.fontWeight, {\n\t\t\t\t\t\t\tnode: properties.fontWeight,\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfunction validateFontWeight(value, { node, filename }) {\n\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\tif (options.style === \"numbers\") report({\n\t\t\t\t\t\tmessageId: ERROR_STYLE,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tstyle: \"numbers\",\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\telse if (!(value in FONT_WEIGHTS)) report({\n\t\t\t\t\t\tmessageId: ERROR$5,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else if (typeof value === \"number\") {\n\t\t\t\t\tif (options.style === \"names\") report({\n\t\t\t\t\t\tmessageId: ERROR_STYLE,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tstyle: \"names\",\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\telse if (!(value >= 0 && value < 1e3)) report({\n\t\t\t\t\t\tmessageId: ERROR$5,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else report({\n\t\t\t\t\tmessageId: ERROR$5,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_font_weight_default = rule$8;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-gradient.ts\nconst VALID_GRADIENT = \"core/valid-gradient\";\nconst ERROR_MISSING$1 = \"ERROR_MISSING\";\nconst ERROR_POSITION = \"ERROR_POSITION\";\nconst ERROR_INVALID_PROP$3 = \"ERROR_INVALID_PROP\";\nconst rule$7 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_MISSING$1]: \"Must be an array of { color, position } objects.\",\n\t\t\t[ERROR_POSITION]: \"Expected number 0-1, received {{ value }}.\",\n\t\t\t[ERROR_INVALID_PROP$3]: \"Unknown property {{ key }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require gradient tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_GRADIENT)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"gradient\") continue;\n\t\t\tvalidateGradient(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t\tfunction validateGradient(value, { node, filename }) {\n\t\t\t\tif (Array.isArray(value)) for (let i = 0; i < value.length; i++) {\n\t\t\t\t\tconst stop = value[i];\n\t\t\t\t\tif (!stop || typeof stop !== \"object\") {\n\t\t\t\t\t\treport({\n\t\t\t\t\t\t\tmessageId: ERROR_MISSING$1,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tfor (const property of GRADIENT_REQUIRED_STOP_PROPERTIES) if (!(property in stop)) report({\n\t\t\t\t\t\tmessageId: ERROR_MISSING$1,\n\t\t\t\t\t\tnode: node.elements[i],\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tfor (const key of Object.keys(stop)) if (!GRADIENT_REQUIRED_STOP_PROPERTIES.includes(key)) report({\n\t\t\t\t\t\tmessageId: ERROR_INVALID_PROP$3,\n\t\t\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\t\t\tnode: node.elements[i],\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tif (\"position\" in stop && typeof stop.position !== \"number\" && !isAlias(stop.position)) report({\n\t\t\t\t\t\tmessageId: ERROR_POSITION,\n\t\t\t\t\t\tdata: { value: stop.position },\n\t\t\t\t\t\tnode: getObjMember(node.elements[i].value, \"position\"),\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse report({\n\t\t\t\t\tmessageId: ERROR_MISSING$1,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_gradient_default = rule$7;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-link.ts\nconst VALID_LINK = \"core/valid-link\";\nconst ERROR$4 = \"ERROR\";\nconst rule$6 = {\n\tmeta: {\n\t\tmessages: { [ERROR$4]: \"Must be a string.\" },\n\t\tdocs: {\n\t\t\tdescription: \"Require link tokens to follow the Terrazzo extension.\",\n\t\t\turl: docsLink(VALID_LINK)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"link\") continue;\n\t\t\tvalidateLink(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t\tfunction validateLink(value, { node, filename }) {\n\t\t\t\tif (!value || typeof value !== \"string\") report({\n\t\t\t\t\tmessageId: ERROR$4,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_link_default = rule$6;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-number.ts\nconst VALID_NUMBER = \"core/valid-number\";\nconst ERROR_NAN = \"ERROR_NAN\";\nconst rule$5 = {\n\tmeta: {\n\t\tmessages: { [ERROR_NAN]: \"Must be a number.\" },\n\t\tdocs: {\n\t\t\tdescription: \"Require number tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_NUMBER)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"number\":\n\t\t\t\t\tvalidateNumber(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"typography\": {\n\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\tif (typeof t.originalValue.$value === \"object\") {\n\t\t\t\t\t\tif (t.originalValue.$value.lineHeight && !isAlias(t.originalValue.$value.lineHeight) && typeof t.originalValue.$value.lineHeight !== \"object\") validateNumber(t.originalValue.$value.lineHeight, {\n\t\t\t\t\t\t\tnode: getObjMember($valueNode, \"lineHeight\"),\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction validateNumber(value, { node, filename }) {\n\t\t\t\tif (typeof value !== \"number\" || Number.isNaN(value)) report({\n\t\t\t\t\tmessageId: ERROR_NAN,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_number_default = rule$5;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-shadow.ts\nconst VALID_SHADOW = \"core/valid-shadow\";\nconst ERROR$3 = \"ERROR\";\nconst ERROR_INVALID_PROP$2 = \"ERROR_INVALID_PROP\";\nconst rule$4 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR$3]: `Missing required properties: ${new Intl.ListFormat(void 0, { type: \"conjunction\" }).format(SHADOW_REQUIRED_PROPERTIES)}.`,\n\t\t\t[ERROR_INVALID_PROP$2]: \"Unknown property {{ key }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require shadow tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_SHADOW)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"shadow\") continue;\n\t\t\tvalidateShadow(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t\tfunction validateShadow(value, { node, filename }) {\n\t\t\t\tconst wrappedValue = Array.isArray(value) ? value : [value];\n\t\t\t\tfor (let i = 0; i < wrappedValue.length; i++) if (!wrappedValue[i] || typeof wrappedValue[i] !== \"object\" || !SHADOW_REQUIRED_PROPERTIES.every((property) => property in wrappedValue[i])) report({\n\t\t\t\t\tmessageId: ERROR$3,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t\telse for (const key of Object.keys(wrappedValue[i])) if (![...SHADOW_REQUIRED_PROPERTIES, \"inset\"].includes(key)) report({\n\t\t\t\t\tmessageId: ERROR_INVALID_PROP$2,\n\t\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\t\tnode: getObjMember(node.type === \"Array\" ? node.elements[i].value : node, key),\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_shadow_default = rule$4;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-string.ts\nconst VALID_STRING = \"core/valid-string\";\nconst ERROR$2 = \"ERROR\";\nconst rule$3 = {\n\tmeta: {\n\t\tmessages: { [ERROR$2]: \"Must be a string.\" },\n\t\tdocs: {\n\t\t\tdescription: \"Require string tokens to follow the Terrazzo extension.\",\n\t\t\turl: docsLink(VALID_STRING)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"string\") continue;\n\t\t\tvalidateString(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t\tfunction validateString(value, { node, filename }) {\n\t\t\t\tif (typeof value !== \"string\") report({\n\t\t\t\t\tmessageId: ERROR$2,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_string_default = rule$3;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-stroke-style.ts\nconst VALID_STROKE_STYLE = \"core/valid-stroke-style\";\nconst ERROR_STR = \"ERROR_STR\";\nconst ERROR_OBJ = \"ERROR_OBJ\";\nconst ERROR_LINE_CAP = \"ERROR_LINE_CAP\";\nconst ERROR_INVALID_PROP$1 = \"ERROR_INVALID_PROP\";\nconst rule$2 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR_STR]: `Value most be one of ${new Intl.ListFormat(void 0, { type: \"disjunction\" }).format(STROKE_STYLE_STRING_VALUES)}.`,\n\t\t\t[ERROR_OBJ]: `Missing required properties: ${new Intl.ListFormat(void 0, { type: \"conjunction\" }).format(TRANSITION_REQUIRED_PROPERTIES)}.`,\n\t\t\t[ERROR_LINE_CAP]: `lineCap must be one of ${new Intl.ListFormat(void 0, { type: \"disjunction\" }).format(STROKE_STYLE_LINE_CAP_VALUES)}.`,\n\t\t\t[ERROR_INVALID_PROP$1]: \"Unknown property: {{ key }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require strokeStyle tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_STROKE_STYLE)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue) continue;\n\t\t\tswitch (t.$type) {\n\t\t\t\tcase \"strokeStyle\":\n\t\t\t\t\tvalidateStrokeStyle(t.originalValue.$value, {\n\t\t\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"border\":\n\t\t\t\t\tif (t.originalValue.$value && typeof t.originalValue.$value === \"object\") {\n\t\t\t\t\t\tconst $valueNode = getObjMember(t.source.node, \"$value\");\n\t\t\t\t\t\tif (t.originalValue.$value.style) validateStrokeStyle(t.originalValue.$value.style, {\n\t\t\t\t\t\t\tnode: getObjMember($valueNode, \"style\"),\n\t\t\t\t\t\t\tfilename: t.source.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfunction validateStrokeStyle(value, { node, filename }) {\n\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\tif (!isAlias(value) && !STROKE_STYLE_STRING_VALUES.includes(value)) {\n\t\t\t\t\t\treport({\n\t\t\t\t\t\t\tmessageId: ERROR_STR,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (value && typeof value === \"object\") {\n\t\t\t\t\tif (!STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES.every((property) => property in value)) report({\n\t\t\t\t\t\tmessageId: ERROR_OBJ,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tif (!Array.isArray(value.dashArray)) report({\n\t\t\t\t\t\tmessageId: ERROR_OBJ,\n\t\t\t\t\t\tnode: getObjMember(node, \"dashArray\"),\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tif (!STROKE_STYLE_LINE_CAP_VALUES.includes(value.lineCap)) report({\n\t\t\t\t\t\tmessageId: ERROR_OBJ,\n\t\t\t\t\t\tnode: getObjMember(node, \"lineCap\"),\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t\tfor (const key of Object.keys(value)) if (![\"dashArray\", \"lineCap\"].includes(key)) report({\n\t\t\t\t\t\tmessageId: ERROR_INVALID_PROP$1,\n\t\t\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\t\t\tnode: getObjMember(node, key),\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else report({\n\t\t\t\t\tmessageId: ERROR_OBJ,\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_stroke_style_default = rule$2;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-transition.ts\nconst VALID_TRANSITION = \"core/valid-transition\";\nconst ERROR$1 = \"ERROR\";\nconst ERROR_INVALID_PROP = \"ERROR_INVALID_PROP\";\nconst rule$1 = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR$1]: `Missing required properties: ${new Intl.ListFormat(void 0, { type: \"conjunction\" }).format(TRANSITION_REQUIRED_PROPERTIES)}.`,\n\t\t\t[ERROR_INVALID_PROP]: \"Unknown property: {{ key }}.\"\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require transition tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_TRANSITION)\n\t\t}\n\t},\n\tdefaultOptions: {},\n\tcreate({ tokens, report }) {\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"transition\") continue;\n\t\t\tvalidateTransition(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t}\n\t\tfunction validateTransition(value, { node, filename }) {\n\t\t\tif (!value || typeof value !== \"object\" || !TRANSITION_REQUIRED_PROPERTIES.every((property) => property in value)) report({\n\t\t\t\tmessageId: ERROR$1,\n\t\t\t\tnode,\n\t\t\t\tfilename\n\t\t\t});\n\t\t\telse for (const key of Object.keys(value)) if (!TRANSITION_REQUIRED_PROPERTIES.includes(key)) report({\n\t\t\t\tmessageId: ERROR_INVALID_PROP,\n\t\t\t\tdata: { key: JSON.stringify(key) },\n\t\t\t\tnode: getObjMember(node, key),\n\t\t\t\tfilename\n\t\t\t});\n\t\t}\n\t}\n};\nvar valid_transition_default = rule$1;\n\n//#endregion\n//#region src/lint/plugin-core/rules/valid-typography.ts\nconst VALID_TYPOGRAPHY = \"core/valid-typography\";\nconst ERROR = \"ERROR\";\nconst ERROR_MISSING = \"ERROR_MISSING\";\nconst rule = {\n\tmeta: {\n\t\tmessages: {\n\t\t\t[ERROR]: `Expected object, received {{ value }}.`,\n\t\t\t[ERROR_MISSING]: `Missing required property \"{{ property }}\".`\n\t\t},\n\t\tdocs: {\n\t\t\tdescription: \"Require typography tokens to follow the format.\",\n\t\t\turl: docsLink(VALID_TYPOGRAPHY)\n\t\t}\n\t},\n\tdefaultOptions: { requiredProperties: [\n\t\t\"fontFamily\",\n\t\t\"fontSize\",\n\t\t\"fontWeight\",\n\t\t\"letterSpacing\",\n\t\t\"lineHeight\"\n\t] },\n\tcreate({ tokens, options, report }) {\n\t\tconst isIgnored = options.ignore ? wcmatch(options.ignore) : () => false;\n\t\tfor (const t of Object.values(tokens)) {\n\t\t\tif (t.aliasOf || !t.originalValue || t.$type !== \"typography\" || isIgnored(t.id)) continue;\n\t\t\tvalidateTypography(t.originalValue.$value, {\n\t\t\t\tnode: getObjMember(t.source.node, \"$value\"),\n\t\t\t\tfilename: t.source.filename\n\t\t\t});\n\t\t\tfunction validateTypography(value, { node, filename }) {\n\t\t\t\tif (value && typeof value === \"object\") {\n\t\t\t\t\tfor (const property of options.requiredProperties) if (!(property in value)) report({\n\t\t\t\t\t\tmessageId: ERROR_MISSING,\n\t\t\t\t\t\tdata: { property },\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tfilename\n\t\t\t\t\t});\n\t\t\t\t} else report({\n\t\t\t\t\tmessageId: ERROR,\n\t\t\t\t\tdata: { value: JSON.stringify(value) },\n\t\t\t\t\tnode,\n\t\t\t\t\tfilename\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\nvar valid_typography_default = rule;\n\n//#endregion\n//#region src/lint/plugin-core/index.ts\nconst ALL_RULES = {\n\t[VALID_COLOR]: valid_color_default,\n\t[VALID_DIMENSION]: valid_dimension_default,\n\t[VALID_FONT_FAMILY]: valid_font_family_default,\n\t[VALID_FONT_WEIGHT]: valid_font_weight_default,\n\t[VALID_DURATION]: valid_duration_default,\n\t[VALID_CUBIC_BEZIER]: valid_cubic_bezier_default,\n\t[VALID_NUMBER]: valid_number_default,\n\t[VALID_LINK]: valid_link_default,\n\t[VALID_BOOLEAN]: valid_boolean_default,\n\t[VALID_STRING]: valid_string_default,\n\t[VALID_STROKE_STYLE]: valid_stroke_style_default,\n\t[VALID_BORDER]: valid_border_default,\n\t[VALID_TRANSITION]: valid_transition_default,\n\t[VALID_SHADOW]: valid_shadow_default,\n\t[VALID_GRADIENT]: valid_gradient_default,\n\t[VALID_TYPOGRAPHY]: valid_typography_default,\n\t[COLORSPACE$1]: colorspace_default,\n\t[CONSISTENT_NAMING]: consistent_naming_default,\n\t[DESCRIPTIONS]: descriptions_default,\n\t[DUPLICATE_VALUES]: duplicate_values_default,\n\t[MAX_GAMUT]: max_gamut_default,\n\t[REQUIRED_CHILDREN]: required_children_default,\n\t[REQUIRED_MODES]: required_modes_default,\n\t[REQUIRED_TYPE]: required_type_default,\n\t[REQUIRED_TYPOGRAPHY_PROPERTIES]: required_typography_properties_default,\n\t[A11Y_MIN_CONTRAST]: a11y_min_contrast_default,\n\t[A11Y_MIN_FONT_SIZE]: a11y_min_font_size_default\n};\nfunction coreLintPlugin() {\n\treturn {\n\t\tname: \"@terrazzo/plugin-lint-core\",\n\t\tlint() {\n\t\t\treturn ALL_RULES;\n\t\t}\n\t};\n}\nconst RECOMMENDED_CONFIG = {\n\t[VALID_COLOR]: [\"error\", {}],\n\t[VALID_DIMENSION]: [\"error\", {}],\n\t[VALID_FONT_FAMILY]: [\"error\", {}],\n\t[VALID_FONT_WEIGHT]: [\"error\", {}],\n\t[VALID_DURATION]: [\"error\", {}],\n\t[VALID_CUBIC_BEZIER]: [\"error\", {}],\n\t[VALID_NUMBER]: [\"error\", {}],\n\t[VALID_LINK]: [\"error\", {}],\n\t[VALID_BOOLEAN]: [\"error\", {}],\n\t[VALID_STRING]: [\"error\", {}],\n\t[VALID_STROKE_STYLE]: [\"error\", {}],\n\t[VALID_BORDER]: [\"error\", {}],\n\t[VALID_TRANSITION]: [\"error\", {}],\n\t[VALID_SHADOW]: [\"error\", {}],\n\t[VALID_GRADIENT]: [\"error\", {}],\n\t[VALID_TYPOGRAPHY]: [\"error\", {}],\n\t[CONSISTENT_NAMING]: [\"warn\", { format: \"kebab-case\" }]\n};\n\n//#endregion\n//#region src/config.ts\nconst TRAILING_SLASH_RE = /\\/*$/;\n/**\n* Validate and normalize a config\n*/\nfunction defineConfig(rawConfig, { logger = new Logger(), cwd } = {}) {\n\tconst configStart = performance.now();\n\tif (!cwd) logger.error({\n\t\tgroup: \"config\",\n\t\tlabel: \"core\",\n\t\tmessage: \"defineConfig() missing `cwd` for JS API\"\n\t});\n\tconst config = merge({}, rawConfig);\n\tnormalizeTokens({\n\t\trawConfig,\n\t\tconfig,\n\t\tlogger,\n\t\tcwd\n\t});\n\tnormalizeOutDir({\n\t\tconfig,\n\t\tcwd,\n\t\tlogger\n\t});\n\tnormalizePlugins({\n\t\tconfig,\n\t\tlogger\n\t});\n\tnormalizeLint({\n\t\tconfig,\n\t\tlogger\n\t});\n\tnormalizeIgnore({\n\t\tconfig,\n\t\tlogger\n\t});\n\tfor (const plugin of config.plugins) plugin.config?.({ ...config });\n\tlogger.debug({\n\t\tgroup: \"parser\",\n\t\tlabel: \"config\",\n\t\tmessage: \"Finish config validation\",\n\t\ttiming: performance.now() - configStart\n\t});\n\treturn config;\n}\n/** Normalize config.tokens */\nfunction normalizeTokens({ rawConfig, config, logger, cwd }) {\n\tif (rawConfig.tokens === void 0) config.tokens = [\"./tokens.json\"];\n\telse if (typeof rawConfig.tokens === \"string\") config.tokens = [rawConfig.tokens];\n\telse if (Array.isArray(rawConfig.tokens)) {\n\t\tconfig.tokens = [];\n\t\tfor (const file of rawConfig.tokens) if (typeof file === \"string\" || file instanceof URL) config.tokens.push(file);\n\t\telse logger.error({\n\t\t\tgroup: \"config\",\n\t\t\tlabel: \"tokens\",\n\t\t\tmessage: `Expected array of strings, encountered ${JSON.stringify(file)}`\n\t\t});\n\t} else logger.error({\n\t\tgroup: \"config\",\n\t\tlabel: \"tokens\",\n\t\tmessage: `Expected string or array of strings, received ${typeof rawConfig.tokens}`\n\t});\n\tfor (let i = 0; i < config.tokens.length; i++) {\n\t\tconst filepath = config.tokens[i];\n\t\tif (filepath instanceof URL) continue;\n\t\ttry {\n\t\t\tconfig.tokens[i] = new URL(filepath, cwd);\n\t\t} catch {\n\t\t\tlogger.error({\n\t\t\t\tgroup: \"config\",\n\t\t\t\tlabel: \"tokens\",\n\t\t\t\tmessage: `Invalid URL ${filepath}`\n\t\t\t});\n\t\t}\n\t}\n}\n/** Normalize config.outDir */\nfunction normalizeOutDir({ config, cwd, logger }) {\n\tif (config.outDir instanceof URL) {} else if (typeof config.outDir === \"undefined\") config.outDir = new URL(\"./tokens/\", cwd);\n\telse if (typeof config.outDir !== \"string\") logger.error({\n\t\tgroup: \"config\",\n\t\tlabel: \"outDir\",\n\t\tmessage: `Expected string, received ${JSON.stringify(config.outDir)}`\n\t});\n\telse {\n\t\tconfig.outDir = new URL(config.outDir, cwd);\n\t\tconfig.outDir = new URL(config.outDir.href.replace(TRAILING_SLASH_RE, \"/\"));\n\t}\n}\n/** Normalize config.plugins */\nfunction normalizePlugins({ config, logger }) {\n\tif (typeof config.plugins === \"undefined\") config.plugins = [];\n\tif (!Array.isArray(config.plugins)) logger.error({\n\t\tgroup: \"config\",\n\t\tlabel: \"plugins\",\n\t\tmessage: `Expected array of plugins, received ${JSON.stringify(config.plugins)}`\n\t});\n\tconfig.plugins.push(coreLintPlugin());\n\tfor (let n = 0; n < config.plugins.length; n++) {\n\t\tconst plugin = config.plugins[n];\n\t\tif (typeof plugin !== \"object\") logger.error({\n\t\t\tgroup: \"config\",\n\t\t\tlabel: `plugin[${n}]`,\n\t\t\tmessage: `Expected output plugin, received ${JSON.stringify(plugin)}`\n\t\t});\n\t\telse if (!plugin.name) logger.error({\n\t\t\tgroup: \"config\",\n\t\t\tlabel: `plugin[${n}]`,\n\t\t\tmessage: `Missing \"name\"`\n\t\t});\n\t}\n\tconfig.plugins.sort((a, b) => {\n\t\tif (a.enforce === \"pre\" && b.enforce !== \"pre\") return -1;\n\t\telse if (a.enforce === \"post\" && b.enforce !== \"post\") return 1;\n\t\treturn 0;\n\t});\n}\nfunction normalizeLint({ config, logger }) {\n\tif (config.lint !== void 0) {\n\t\tif (config.lint === null || typeof config.lint !== \"object\" || Array.isArray(config.lint)) logger.error({\n\t\t\tgroup: \"config\",\n\t\t\tlabel: \"lint\",\n\t\t\tmessage: \"Must be an object\"\n\t\t});\n\t\tif (!config.lint.build) config.lint.build = { enabled: true };\n\t\tif (config.lint.build.enabled !== void 0) {\n\t\t\tif (typeof config.lint.build.enabled !== \"boolean\") logger.error({\n\t\t\t\tgroup: \"config\",\n\t\t\t\tlabel: \"lint › build › enabled\",\n\t\t\t\tmessage: `Expected boolean, received ${JSON.stringify(config.lint.build)}`\n\t\t\t});\n\t\t} else config.lint.build.enabled = true;\n\t\tif (config.lint.rules === void 0) config.lint.rules = { ...RECOMMENDED_CONFIG };\n\t\telse {\n\t\t\tif (config.lint.rules === null || typeof config.lint.rules !== \"object\" || Array.isArray(config.lint.rules)) {\n\t\t\t\tlogger.error({\n\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\tlabel: \"lint › rules\",\n\t\t\t\t\tmessage: `Expected object, received ${JSON.stringify(config.lint.rules)}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst allRules = /* @__PURE__ */ new Map();\n\t\t\tfor (const plugin of config.plugins) {\n\t\t\t\tif (typeof plugin.lint !== \"function\") continue;\n\t\t\t\tconst pluginRules = plugin.lint();\n\t\t\t\tif (!pluginRules || Array.isArray(pluginRules) || typeof pluginRules !== \"object\") {\n\t\t\t\t\tlogger.error({\n\t\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\t\tlabel: `plugin › ${plugin.name}`,\n\t\t\t\t\t\tmessage: `Expected object for lint() received ${JSON.stringify(pluginRules)}`\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (const rule$27 of Object.keys(pluginRules)) {\n\t\t\t\t\tif (allRules.get(rule$27) && allRules.get(rule$27) !== plugin.name) logger.error({\n\t\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\t\tlabel: `plugin › ${plugin.name}`,\n\t\t\t\t\t\tmessage: `Duplicate rule ${rule$27} already registered by plugin ${allRules.get(rule$27)}`\n\t\t\t\t\t});\n\t\t\t\t\tallRules.set(rule$27, plugin.name);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const id of Object.keys(config.lint.rules)) {\n\t\t\t\tif (!allRules.has(id)) logger.error({\n\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\tlabel: `lint › rule › ${id}`,\n\t\t\t\t\tmessage: \"Unknown rule. Is the plugin installed?\"\n\t\t\t\t});\n\t\t\t\tconst value = config.lint.rules[id];\n\t\t\t\tlet severity = \"off\";\n\t\t\t\tlet options = {};\n\t\t\t\tif (typeof value === \"number\" || typeof value === \"string\") severity = value;\n\t\t\t\telse if (Array.isArray(value)) {\n\t\t\t\t\tseverity = value[0];\n\t\t\t\t\toptions = value[1];\n\t\t\t\t} else if (value !== void 0) logger.error({\n\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\tlabel: `lint › rule › ${id}`,\n\t\t\t\t\tmessage: `Invalid eyntax. Expected \\`string | number | Array\\`, received ${JSON.stringify(value)}}`\n\t\t\t\t});\n\t\t\t\tconfig.lint.rules[id] = [severity, options];\n\t\t\t\tif (typeof severity === \"number\") {\n\t\t\t\t\tif (severity !== 0 && severity !== 1 && severity !== 2) logger.error({\n\t\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\t\tlabel: `lint › rule › ${id}`,\n\t\t\t\t\t\tmessage: `Invalid number ${severity}. Specify 0 (off), 1 (warn), or 2 (error).`\n\t\t\t\t\t});\n\t\t\t\t\tconfig.lint.rules[id][0] = [\n\t\t\t\t\t\t\"off\",\n\t\t\t\t\t\t\"warn\",\n\t\t\t\t\t\t\"error\"\n\t\t\t\t\t][severity];\n\t\t\t\t} else if (typeof severity === \"string\") {\n\t\t\t\t\tif (severity !== \"off\" && severity !== \"warn\" && severity !== \"error\") logger.error({\n\t\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\t\tlabel: `lint › rule › ${id}`,\n\t\t\t\t\t\tmessage: `Invalid string ${JSON.stringify(severity)}. Specify \"off\", \"warn\", or \"error\".`\n\t\t\t\t\t});\n\t\t\t\t} else if (value !== null) logger.error({\n\t\t\t\t\tgroup: \"config\",\n\t\t\t\t\tlabel: `lint › rule › ${id}`,\n\t\t\t\t\tmessage: `Expected string or number, received ${JSON.stringify(value)}`\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (const [id, severity] of Object.entries(RECOMMENDED_CONFIG)) if (!(id in config.lint.rules)) config.lint.rules[id] = severity;\n\t\t}\n\t} else config.lint = {\n\t\tbuild: { enabled: true },\n\t\trules: { ...RECOMMENDED_CONFIG }\n\t};\n}\nfunction normalizeIgnore({ config, logger }) {\n\tif (!config.ignore) config.ignore = {};\n\tconfig.ignore.tokens ??= [];\n\tconfig.ignore.deprecated ??= false;\n\tif (!Array.isArray(config.ignore.tokens) || config.ignore.tokens.some((x) => typeof x !== \"string\")) logger.error({\n\t\tgroup: \"config\",\n\t\tlabel: \"ignore › tokens\",\n\t\tmessage: `Expected array of strings, received ${JSON.stringify(config.ignore.tokens)}`\n\t});\n\tif (typeof config.ignore.deprecated !== \"boolean\") logger.error({\n\t\tgroup: \"config\",\n\t\tlabel: \"ignore › deprecated\",\n\t\tmessage: `Expected boolean, received ${JSON.stringify(config.ignore.deprecated)}`\n\t});\n}\n/** Merge configs */\nfunction mergeConfigs(a, b) {\n\treturn merge(a, b);\n}\n\n//#endregion\n//#region src/lint/index.ts\nasync function lintRunner({ tokens, filename, config = {}, sources, logger }) {\n\tconst { plugins = [], lint } = config;\n\tconst sourceByFilename = {};\n\tfor (const source of sources) sourceByFilename[source.filename.href] = source;\n\tconst unusedLintRules = Object.keys(lint?.rules ?? {});\n\tconst errors = [];\n\tconst warnings = [];\n\tfor (const plugin of plugins) if (typeof plugin.lint === \"function\") {\n\t\tconst s = performance.now();\n\t\tconst linter = plugin.lint();\n\t\tawait Promise.all(Object.entries(linter).map(async ([id, rule$27]) => {\n\t\t\tif (!(id in lint.rules) || lint.rules[id] === null) return;\n\t\t\tconst unusedLintRuleI = unusedLintRules.indexOf(id);\n\t\t\tif (unusedLintRuleI !== -1) unusedLintRules.splice(unusedLintRuleI, 1);\n\t\t\tconst [severity, options] = lint.rules[id];\n\t\t\tif (severity === \"off\") return;\n\t\t\tawait rule$27.create({\n\t\t\t\tid,\n\t\t\t\treport(descriptor) {\n\t\t\t\t\tlet message = \"\";\n\t\t\t\t\tif (!descriptor.message && !descriptor.messageId) logger.error({\n\t\t\t\t\t\tgroup: \"lint\",\n\t\t\t\t\t\tlabel: `${plugin.name} › lint › ${id}`,\n\t\t\t\t\t\tmessage: \"Unable to report error: missing message or messageId\"\n\t\t\t\t\t});\n\t\t\t\t\tif (descriptor.message) message = descriptor.message;\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!(descriptor.messageId in (rule$27.meta?.messages ?? {}))) logger.error({\n\t\t\t\t\t\t\tgroup: \"lint\",\n\t\t\t\t\t\t\tlabel: `${plugin.name} › lint › ${id}`,\n\t\t\t\t\t\t\tmessage: `messageId \"${descriptor.messageId}\" does not exist`\n\t\t\t\t\t\t});\n\t\t\t\t\t\tmessage = rule$27.meta?.messages?.[descriptor.messageId] ?? \"\";\n\t\t\t\t\t}\n\t\t\t\t\tif (descriptor.data && typeof descriptor.data === \"object\") for (const [k, v] of Object.entries(descriptor.data)) {\n\t\t\t\t\t\tconst formatted = [\n\t\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\t\t\"boolean\"\n\t\t\t\t\t\t].includes(typeof v) ? String(v) : JSON.stringify(v);\n\t\t\t\t\t\tmessage = message.replace(/{{[^}]+}}/g, (inner) => {\n\t\t\t\t\t\t\treturn inner.substring(2, inner.length - 2).trim() === k ? formatted : inner;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t(severity === \"error\" ? errors : warnings).push({\n\t\t\t\t\t\tgroup: \"lint\",\n\t\t\t\t\t\tlabel: id,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tnode: descriptor.node,\n\t\t\t\t\t\tsrc: sourceByFilename[descriptor.filename]?.src\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\ttokens,\n\t\t\t\tfilename,\n\t\t\t\tsources,\n\t\t\t\toptions: merge(rule$27.meta?.defaultOptions ?? [], rule$27.defaultOptions ?? [], options)\n\t\t\t});\n\t\t}));\n\t\tlogger.debug({\n\t\t\tgroup: \"lint\",\n\t\t\tlabel: plugin.name,\n\t\t\tmessage: \"Finished\",\n\t\t\ttiming: performance.now() - s\n\t\t});\n\t}\n\tconst errCount = errors.length ? `${errors.length} ${pluralize(errors.length, \"error\", \"errors\")}` : \"\";\n\tconst warnCount = warnings.length ? `${warnings.length} ${pluralize(warnings.length, \"warning\", \"warnings\")}` : \"\";\n\tif (errors.length > 0) logger.error(...errors, {\n\t\tgroup: \"lint\",\n\t\tlabel: \"lint\",\n\t\tmessage: [errCount, warnCount].filter(Boolean).join(\", \")\n\t});\n\tif (warnings.length > 0) logger.warn(...warnings, {\n\t\tgroup: \"lint\",\n\t\tlabel: \"lint\",\n\t\tmessage: warnCount\n\t});\n\tfor (const unusedRule of unusedLintRules) logger.warn({\n\t\tgroup: \"lint\",\n\t\tlabel: \"lint\",\n\t\tmessage: `Unknown lint rule \"${unusedRule}\"`\n\t});\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js\nvar require_fast_deep_equal = /* @__PURE__ */ __commonJS({ \"../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js\": ((exports, module) => {\n\tmodule.exports = function equal(a, b) {\n\t\tif (a === b) return true;\n\t\tif (a && b && typeof a == \"object\" && typeof b == \"object\") {\n\t\t\tif (a.constructor !== b.constructor) return false;\n\t\t\tvar length, i, keys;\n\t\t\tif (Array.isArray(a)) {\n\t\t\t\tlength = a.length;\n\t\t\t\tif (length != b.length) return false;\n\t\t\t\tfor (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n\t\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n\t\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\t\t\tkeys = Object.keys(a);\n\t\t\tlength = keys.length;\n\t\t\tif (length !== Object.keys(b).length) return false;\n\t\t\tfor (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\t\t\tfor (i = length; i-- !== 0;) {\n\t\t\t\tvar key = keys[i];\n\t\t\t\tif (!equal(a[key], b[key])) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn a !== a && b !== b;\n\t};\n}) });\n\n//#endregion\n//#region src/lib/momoa.ts\nvar import_fast_deep_equal = /* @__PURE__ */ __toESM(require_fast_deep_equal(), 1);\n/** Momoa’s default parser, with preferred settings. */\nfunction toMomoa(srcRaw) {\n\treturn momoa.parse(typeof srcRaw === \"string\" ? srcRaw : JSON.stringify(srcRaw, void 0, 2), {\n\t\tmode: \"jsonc\",\n\t\tranges: true,\n\t\ttokens: true\n\t});\n}\n\n//#endregion\n//#region src/resolver/validate.ts\n/**\n* Determine whether this is likely a resolver\n* We use terms the word “likely” because this occurs before validation. Since\n* we may be dealing with a doc _intended_ to be a resolver, but may be lacking\n* some critical information, how can we determine intent? There’s a bit of\n* guesswork here, but we try and find a reasonable edge case where we sniff out\n* invalid DTCG syntax that a resolver doc would have.\n*/\nfunction isLikelyResolver(doc) {\n\tif (doc.body.type !== \"Object\") return false;\n\tfor (const member of doc.body.members) {\n\t\tif (member.name.type !== \"String\") continue;\n\t\tswitch (member.name.value) {\n\t\t\tcase \"name\":\n\t\t\tcase \"description\":\n\t\t\tcase \"version\":\n\t\t\t\tif (member.name.type === \"String\") return true;\n\t\t\t\tbreak;\n\t\t\tcase \"sets\":\n\t\t\tcase \"modifiers\":\n\t\t\t\tif (member.value.type !== \"Object\") continue;\n\t\t\t\tif (getObjMember(member.value, \"description\")?.type === \"String\") return true;\n\t\t\t\tif (member.name.value === \"sets\" && getObjMember(member.value, \"sources\")?.type === \"Array\") return true;\n\t\t\t\telse if (member.name.value === \"modifiers\") {\n\t\t\t\t\tconst contexts = getObjMember(member.value, \"contexts\");\n\t\t\t\t\tif (contexts?.type === \"Object\" && contexts.members.some((m) => m.value.type === \"Array\")) return true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"resolutionOrder\":\n\t\t\t\tif (member.value.type === \"Array\") return true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn false;\n}\nconst MESSAGE_EXPECTED = {\n\tSTRING: \"Expected string.\",\n\tOBJECT: \"Expected object.\",\n\tARRAY: \"Expected array.\"\n};\n/**\n* Validate a resolver document.\n* There’s a ton of boilerplate here, only to surface detailed code frames. Is there a better abstraction?\n*/\nfunction validateResolver(node, { logger, src }) {\n\tconst entry = {\n\t\tgroup: \"parser\",\n\t\tlabel: \"resolver\",\n\t\tsrc\n\t};\n\tif (node.body.type !== \"Object\") logger.error({\n\t\t...entry,\n\t\tmessage: MESSAGE_EXPECTED.OBJECT,\n\t\tnode\n\t});\n\tconst errors = [];\n\tlet hasVersion = false;\n\tlet hasResolutionOrder = false;\n\tfor (const member of node.body.members) {\n\t\tif (member.name.type !== \"String\") continue;\n\t\tswitch (member.name.value) {\n\t\t\tcase \"name\":\n\t\t\tcase \"description\":\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"version\":\n\t\t\t\thasVersion = true;\n\t\t\t\tif (member.value.type !== \"String\" || member.value.value !== \"2025.10\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected \"version\" to be \"2025.10\".`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"sets\":\n\t\t\tcase \"modifiers\":\n\t\t\t\tif (member.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.OBJECT,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse for (const item of member.value.members) if (item.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.OBJECT,\n\t\t\t\t\tnode: item.value\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst validator = member.name.value === \"sets\" ? validateSet : validateModifier;\n\t\t\t\t\terrors.push(...validator(item.value, false, {\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t\tsrc\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"resolutionOrder\":\n\t\t\t\thasResolutionOrder = true;\n\t\t\t\tif (member.value.type !== \"Array\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.ARRAY,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse if (member.value.elements.length === 0) errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `\"resolutionOrder\" can’t be empty array.`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse for (const item of member.value.elements) if (item.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.OBJECT,\n\t\t\t\t\tnode: item.value\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst itemMembers = getObjMembers(item.value);\n\t\t\t\t\tif (itemMembers.$ref?.type === \"String\") continue;\n\t\t\t\t\tif (itemMembers.type?.type === \"String\") if (itemMembers.type.value === \"set\") validateSet(item.value, true, {\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t\tsrc\n\t\t\t\t\t});\n\t\t\t\t\telse if (itemMembers.type.value === \"modifier\") validateModifier(item.value, true, {\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t\tsrc\n\t\t\t\t\t});\n\t\t\t\t\telse errors.push({\n\t\t\t\t\t\t...entry,\n\t\t\t\t\t\tmessage: `Unknown type ${JSON.stringify(itemMembers.type.value)}`,\n\t\t\t\t\t\tnode: itemMembers.type\n\t\t\t\t\t});\n\t\t\t\t\tif (itemMembers.sources?.type === \"Array\") validateSet(item.value, true, {\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t\tsrc\n\t\t\t\t\t});\n\t\t\t\t\telse if (itemMembers.contexts?.type === \"Object\") validateModifier(item.value, true, {\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t\tsrc\n\t\t\t\t\t});\n\t\t\t\t\telse if (itemMembers.name?.type === \"String\" || itemMembers.description?.type === \"String\") validateSet(item.value, true, {\n\t\t\t\t\t\tlogger,\n\t\t\t\t\t\tsrc\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"$defs\":\n\t\t\tcase \"$extensions\":\n\t\t\t\tif (member.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected object`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"$ref\":\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected string`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\terrors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Unknown key ${JSON.stringify(member.name.value)}`,\n\t\t\t\t\tnode: member.name,\n\t\t\t\t\tsrc\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tif (!hasVersion) errors.push({\n\t\t...entry,\n\t\tmessage: `Missing \"version\".`,\n\t\tnode,\n\t\tsrc\n\t});\n\tif (!hasResolutionOrder) errors.push({\n\t\t...entry,\n\t\tmessage: `Missing \"resolutionOrder\".`,\n\t\tnode,\n\t\tsrc\n\t});\n\tif (errors.length) logger.error(...errors);\n}\nfunction validateSet(node, isInline = false, { src }) {\n\tconst entry = {\n\t\tgroup: \"parser\",\n\t\tlabel: \"resolver\",\n\t\tsrc\n\t};\n\tconst errors = [];\n\tlet hasName = !isInline;\n\tlet hasType = !isInline;\n\tlet hasSources = false;\n\tfor (const member of node.members) {\n\t\tif (member.name.type !== \"String\") continue;\n\t\tswitch (member.name.value) {\n\t\t\tcase \"name\":\n\t\t\t\thasName = true;\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"description\":\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"type\":\n\t\t\t\thasType = true;\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse if (member.value.value !== \"set\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: \"\\\"type\\\" must be \\\"set\\\".\"\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"sources\":\n\t\t\t\thasSources = true;\n\t\t\t\tif (member.value.type !== \"Array\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.ARRAY,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse if (member.value.elements.length === 0) errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `\"sources\" can’t be empty array.`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"$defs\":\n\t\t\tcase \"$extensions\":\n\t\t\t\tif (member.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected object`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"$ref\":\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected string`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\terrors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Unknown key ${JSON.stringify(member.name.value)}`,\n\t\t\t\t\tnode: member.name\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tif (!hasName) errors.push({\n\t\t...entry,\n\t\tmessage: `Missing \"name\".`,\n\t\tnode\n\t});\n\tif (!hasType) errors.push({\n\t\t...entry,\n\t\tmessage: `\"type\": \"set\" missing.`,\n\t\tnode\n\t});\n\tif (!hasSources) errors.push({\n\t\t...entry,\n\t\tmessage: `Missing \"sources\".`,\n\t\tnode\n\t});\n\treturn errors;\n}\nfunction validateModifier(node, isInline = false, { src }) {\n\tconst errors = [];\n\tconst entry = {\n\t\tgroup: \"parser\",\n\t\tlabel: \"resolver\",\n\t\tsrc\n\t};\n\tlet hasName = !isInline;\n\tlet hasType = !isInline;\n\tlet hasContexts = false;\n\tfor (const member of node.members) {\n\t\tif (member.name.type !== \"String\") continue;\n\t\tswitch (member.name.value) {\n\t\t\tcase \"name\":\n\t\t\t\thasName = true;\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"description\":\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"type\":\n\t\t\t\thasType = true;\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.STRING,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse if (member.value.value !== \"modifier\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: \"\\\"type\\\" must be \\\"modifier\\\".\"\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"contexts\":\n\t\t\t\thasContexts = true;\n\t\t\t\tif (member.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.OBJECT,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse if (member.value.members.length === 0) errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `\"contexts\" can’t be empty object.`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\telse for (const context of member.value.members) if (context.value.type !== \"Array\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: MESSAGE_EXPECTED.ARRAY,\n\t\t\t\t\tnode: context.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"$defs\":\n\t\t\tcase \"$extensions\":\n\t\t\t\tif (member.value.type !== \"Object\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected object`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"$ref\":\n\t\t\t\tif (member.value.type !== \"String\") errors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Expected string`,\n\t\t\t\t\tnode: member.value\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\terrors.push({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: `Unknown key ${JSON.stringify(member.name.value)}`,\n\t\t\t\t\tnode: member.name\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tif (!hasName) errors.push({\n\t\t...entry,\n\t\tmessage: `Missing \"name\".`,\n\t\tnode\n\t});\n\tif (!hasType) errors.push({\n\t\t...entry,\n\t\tmessage: `\"type\": \"modifier\" missing.`,\n\t\tnode\n\t});\n\tif (!hasContexts) errors.push({\n\t\t...entry,\n\t\tmessage: `Missing \"contexts\".`,\n\t\tnode\n\t});\n\treturn errors;\n}\n\n//#endregion\n//#region src/resolver/normalize.ts\n/** Normalize resolver (assuming it’s been validated) */\nasync function normalizeResolver(node, { filename, req, src, logger, yamlToMomoa }) {\n\tconst resolverSource = evaluate(node);\n\tconst resolutionOrder = getObjMember(node.body, \"resolutionOrder\");\n\treturn {\n\t\tname: resolverSource.name,\n\t\tversion: resolverSource.version,\n\t\tdescription: resolverSource.description,\n\t\tsets: resolverSource.sets,\n\t\tmodifiers: resolverSource.modifiers,\n\t\tresolutionOrder: await Promise.all(resolutionOrder.elements.map(async (element, i) => {\n\t\t\tconst layer = element.value;\n\t\t\tconst members = getObjMembers(layer);\n\t\t\tlet item = layer;\n\t\t\tif (members.$ref) {\n\t\t\t\tconst entry = {\n\t\t\t\t\tgroup: \"parser\",\n\t\t\t\t\tlabel: \"init\",\n\t\t\t\t\tnode: members.$ref,\n\t\t\t\t\tsrc\n\t\t\t\t};\n\t\t\t\tconst { url, subpath } = parseRef(members.$ref.value);\n\t\t\t\tif (url === \".\") if (!subpath?.[0]) logger.error({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: \"$ref can’t refer to the root document.\"\n\t\t\t\t});\n\t\t\t\telse if (subpath[0] !== \"sets\" && subpath[0] !== \"modifiers\") logger.error({\n\t\t\t\t\t...entry,\n\t\t\t\t\tmessage: \"Local $ref in resolutionOrder must point to either #/sets/[set] or #/modifiers/[modifiers].\"\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst resolvedItem = resolverSource[subpath[0]]?.[subpath[1]];\n\t\t\t\t\tif (!resolvedItem) logger.error({\n\t\t\t\t\t\t...entry,\n\t\t\t\t\t\tmessage: \"Invalid $ref\"\n\t\t\t\t\t});\n\t\t\t\t\telse item = {\n\t\t\t\t\t\ttype: subpath[0] === \"sets\" ? \"set\" : \"modifier\",\n\t\t\t\t\t\t...resolvedItem\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst result = await bundle([{\n\t\t\t\t\t\tfilename: new URL(url, filename),\n\t\t\t\t\t\tsrc: resolverSource.resolutionOrder[i]\n\t\t\t\t\t}], {\n\t\t\t\t\t\treq,\n\t\t\t\t\t\tyamlToMomoa\n\t\t\t\t\t});\n\t\t\t\t\tif (result.document.body.type === \"Object\") {\n\t\t\t\t\t\tconst type = getObjMember(result.document.body, \"type\");\n\t\t\t\t\t\tif (type?.type === \"String\" && type.value === \"set\") {\n\t\t\t\t\t\t\tvalidateSet(result.document.body, true, src);\n\t\t\t\t\t\t\titem = evaluate(result.document.body);\n\t\t\t\t\t\t} else if (type?.type === \"String\" && type.value === \"modifier\") {\n\t\t\t\t\t\t\tvalidateModifier(result.document.body, true, src);\n\t\t\t\t\t\t\titem = evaluate(result.document.body);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlogger.error({\n\t\t\t\t\t\t...entry,\n\t\t\t\t\t\tmessage: \"$ref did not resolve to a valid Set or Modifier.\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn evaluate((await bundle([{\n\t\t\t\tfilename,\n\t\t\t\tsrc: item\n\t\t\t}], {\n\t\t\t\treq,\n\t\t\t\tyamlToMomoa\n\t\t\t})).document.body);\n\t\t}))\n\t};\n}\n\n//#endregion\n//#region src/resolver/load.ts\n/** Quick-parse input sources and find a resolver */\nasync function loadResolver(inputs, { logger, req, yamlToMomoa }) {\n\tlet resolverDoc;\n\tconst entry = {\n\t\tgroup: \"parser\",\n\t\tlabel: \"init\"\n\t};\n\tfor (const input of inputs) {\n\t\tlet document;\n\t\tif (typeof input.src === \"string\") if (maybeRawJSON(input.src)) document = toMomoa(input.src);\n\t\telse if (yamlToMomoa) document = yamlToMomoa(input.src);\n\t\telse logger.error({\n\t\t\t...entry,\n\t\t\tmessage: `Install yaml-to-momoa package to parse YAML, and pass in as option, e.g.:\n\n import { bundle } from '@terrazzo/json-schema-tools';\n import yamlToMomoa from 'yaml-to-momoa';\n\n bundle(yamlString, { yamlToMomoa });`\n\t\t});\n\t\telse if (input.src && typeof input.src === \"object\") document = toMomoa(JSON.stringify(input.src, void 0, 2));\n\t\telse logger.error({\n\t\t\t...entry,\n\t\t\tmessage: `Could not parse ${input.filename}. Is this valid JSON or YAML?`\n\t\t});\n\t\tif (!document || !isLikelyResolver(document)) continue;\n\t\tif (inputs.length > 1) logger.error({\n\t\t\t...entry,\n\t\t\tmessage: `Resolver must be the only input, found ${inputs.length} sources.`\n\t\t});\n\t\tresolverDoc = document;\n\t\tbreak;\n\t}\n\tif (resolverDoc) {\n\t\tvalidateResolver(resolverDoc, {\n\t\t\tlogger,\n\t\t\tsrc: inputs[0].src\n\t\t});\n\t\treturn createResolver(await normalizeResolver(resolverDoc, {\n\t\t\tfilename: inputs[0].filename,\n\t\t\tlogger,\n\t\t\treq,\n\t\t\tsrc: inputs[0].src,\n\t\t\tyamlToMomoa\n\t\t}), { logger });\n\t}\n}\n/** Create an interface to resolve permutations */\nfunction createResolver(resolverSource, { logger }) {\n\tconst inputDefaults = {};\n\tconst modifierPermutations = [];\n\tfor (const [name, m] of Object.entries(resolverSource.modifiers ?? {})) {\n\t\tif (typeof m.default === \"string\") inputDefaults[name] = m.default;\n\t\tmodifierPermutations.push([name, Object.keys(m.contexts)]);\n\t}\n\tfor (const m of resolverSource.resolutionOrder) {\n\t\tif (!(\"type\" in m) || m.type !== \"modifier\") continue;\n\t\tif (typeof m.default === \"string\") inputDefaults[m.name] = m.default;\n\t\tmodifierPermutations.push([m.name, Object.keys(m.contexts)]);\n\t}\n\tconst permutations = calculatePermutations(modifierPermutations);\n\treturn {\n\t\tapply(inputRaw) {\n\t\t\tlet tokens = {};\n\t\t\tconst input = {\n\t\t\t\t...inputDefaults,\n\t\t\t\t...inputRaw\n\t\t\t};\n\t\t\tfor (const item of resolverSource.resolutionOrder) switch (item.type) {\n\t\t\t\tcase \"set\":\n\t\t\t\t\tfor (const s of item.sources) tokens = merge(tokens, s);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"modifier\": {\n\t\t\t\t\tconst context = input[item.name];\n\t\t\t\t\tconst sources = item.contexts[context];\n\t\t\t\t\tif (!sources) logger.error({\n\t\t\t\t\t\tgroup: \"parser\",\n\t\t\t\t\t\tlabel: \"resolver\",\n\t\t\t\t\t\tmessage: `Modifier ${item.name} has no context ${JSON.stringify(context)}.`\n\t\t\t\t\t});\n\t\t\t\t\tfor (const s of sources ?? []) tokens = merge(tokens, s);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tokens;\n\t\t},\n\t\tsource: resolverSource,\n\t\tpermutations,\n\t\tisValidInput(inputRaw) {\n\t\t\tif (!inputRaw || typeof inputRaw !== \"object\") logger.error({\n\t\t\t\tgroup: \"parser\",\n\t\t\t\tlabel: \"resolver\",\n\t\t\t\tmessage: `Invalid input: ${JSON.stringify(inputRaw)}.`\n\t\t\t});\n\t\t\tconst input = {\n\t\t\t\t...inputDefaults,\n\t\t\t\t...inputRaw\n\t\t\t};\n\t\t\treturn permutations.findIndex((p) => (0, import_fast_deep_equal.default)(input, p)) !== -1;\n\t\t}\n\t};\n}\n/** Calculate all permutations */\nfunction calculatePermutations(options) {\n\tconst permutationCount = [1];\n\tfor (const [_name, contexts] of options) permutationCount.push(contexts.length * (permutationCount.at(-1) || 1));\n\tconst permutations = [];\n\tfor (let i = 0; i < permutationCount.at(-1); i++) {\n\t\tconst input = {};\n\t\tfor (let j = 0; j < options.length; j++) {\n\t\t\tconst [name, contexts] = options[j];\n\t\t\tinput[name] = contexts[Math.floor(i / permutationCount[j]) % contexts.length];\n\t\t}\n\t\tpermutations.push(input);\n\t}\n\treturn permutations.length ? permutations : [{}];\n}\n\n//#endregion\n//#region src/parse/normalize.ts\n/**\n* Normalize token value.\n* The reason for the “any” typing is this aligns various user-provided inputs to the type\n*/\nfunction normalize(token, { logger, src }) {\n\tconst entry = {\n\t\tgroup: \"parser\",\n\t\tlabel: \"init\",\n\t\tsrc\n\t};\n\tfunction normalizeFontFamily(value) {\n\t\treturn typeof value === \"string\" ? [value] : value;\n\t}\n\tfunction normalizeFontWeight(value) {\n\t\treturn typeof value === \"string\" && FONT_WEIGHTS[value] || value;\n\t}\n\tfunction normalizeColor(value, node) {\n\t\tif (typeof value === \"string\" && !isAlias(value)) {\n\t\t\tlogger.warn({\n\t\t\t\t...entry,\n\t\t\t\tnode,\n\t\t\t\tmessage: `${token.id}: string colors will be deprecated in a future version. Please update to object notation`\n\t\t\t});\n\t\t\ttry {\n\t\t\t\treturn parseColor(value);\n\t\t\t} catch {\n\t\t\t\treturn {\n\t\t\t\t\tcolorSpace: \"srgb\",\n\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t\t],\n\t\t\t\t\talpha: 1\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (value && typeof value === \"object\") {\n\t\t\tif (value.alpha === void 0) value.alpha = 1;\n\t\t}\n\t\treturn value;\n\t}\n\tswitch (token.$type) {\n\t\tcase \"color\":\n\t\t\tfor (const mode of Object.keys(token.mode)) token.mode[mode].$value = normalizeColor(token.mode[mode].$value, token.mode[mode].source.node);\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t\tcase \"fontFamily\":\n\t\t\tfor (const mode of Object.keys(token.mode)) token.mode[mode].$value = normalizeFontFamily(token.mode[mode].$value);\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t\tcase \"fontWeight\":\n\t\t\tfor (const mode of Object.keys(token.mode)) token.mode[mode].$value = normalizeFontWeight(token.mode[mode].$value);\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t\tcase \"border\":\n\t\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\t\tconst border = token.mode[mode].$value;\n\t\t\t\tif (!border || typeof border !== \"object\") continue;\n\t\t\t\tif (border.color) border.color = normalizeColor(border.color, getObjMember(token.mode[mode].source.node, \"color\"));\n\t\t\t}\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t\tcase \"shadow\":\n\t\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\t\tif (!Array.isArray(token.mode[mode].$value)) token.mode[mode].$value = [token.mode[mode].$value];\n\t\t\t\tconst $value = token.mode[mode].$value;\n\t\t\t\tfor (let i = 0; i < $value.length; i++) {\n\t\t\t\t\tconst shadow = $value[i];\n\t\t\t\t\tif (!shadow || typeof shadow !== \"object\") continue;\n\t\t\t\t\tconst shadowNode = token.mode[mode].source.node.type === \"Array\" ? token.mode[mode].source.node.elements[i].value : token.mode[mode].source.node;\n\t\t\t\t\tif (shadow.color) shadow.color = normalizeColor(shadow.color, getObjMember(shadowNode, \"color\"));\n\t\t\t\t\tif (!(\"inset\" in shadow)) shadow.inset = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t\tcase \"gradient\":\n\t\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\t\tif (!Array.isArray(token.mode[mode].$value)) continue;\n\t\t\t\tconst $value = token.mode[mode].$value;\n\t\t\t\tfor (let i = 0; i < $value.length; i++) {\n\t\t\t\t\tconst stop = $value[i];\n\t\t\t\t\tif (!stop || typeof stop !== \"object\") continue;\n\t\t\t\t\tconst stopNode = token.mode[mode].source.node?.elements?.[i]?.value;\n\t\t\t\t\tif (stop.color) stop.color = normalizeColor(stop.color, getObjMember(stopNode, \"color\"));\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t\tcase \"typography\":\n\t\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\t\tconst $value = token.mode[mode].$value;\n\t\t\t\tif (typeof $value !== \"object\") return;\n\t\t\t\tfor (const [k, v] of Object.entries($value)) switch (k) {\n\t\t\t\t\tcase \"fontFamily\":\n\t\t\t\t\t\t$value[k] = normalizeFontFamily(v);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"fontWeight\":\n\t\t\t\t\t\t$value[k] = normalizeFontWeight(v);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.$value = token.mode[\".\"].$value;\n\t\t\tbreak;\n\t}\n}\n\n//#endregion\n//#region src/parse/token.ts\n/** Convert valid DTCG alias to $ref */\nfunction aliasToRef(alias, mode) {\n\tconst id = parseAlias(alias);\n\tif (id === alias) return;\n\treturn { $ref: `#/${id.replace(/~/g, \"~0\").replace(/\\//g, \"~1\").replace(/\\./g, \"/\")}${mode && mode !== \".\" ? `/$extensions/mode/${mode}` : \"\"}/$value` };\n}\n/** Generate a TokenNormalized from a Momoa node */\nfunction tokenFromNode(node, { groups, path, source, ignore }) {\n\tif (!(node.type === \"Object\" && getObjMember(node, \"$value\") && !path.includes(\"$extensions\"))) return;\n\tconst jsonID = `#/${path.join(\"/\")}`;\n\tconst id = path.join(\".\");\n\tconst originalToken = momoa.evaluate(node);\n\tconst group = groups[`#/${path.slice(0, -1).join(\"/\")}`];\n\tif (group?.tokens && !group.tokens.includes(id)) group.tokens.push(id);\n\tconst nodeSource = {\n\t\tfilename: source.filename?.href,\n\t\tnode\n\t};\n\tconst token = {\n\t\tid,\n\t\t$type: originalToken.$type || group.$type,\n\t\t$description: originalToken.$description || void 0,\n\t\t$deprecated: originalToken.$deprecated ?? group.$deprecated ?? void 0,\n\t\t$value: originalToken.$value,\n\t\t$extensions: originalToken.$extensions || void 0,\n\t\taliasChain: void 0,\n\t\taliasedBy: void 0,\n\t\taliasOf: void 0,\n\t\tpartialAliasOf: void 0,\n\t\tdependencies: void 0,\n\t\tgroup,\n\t\toriginalValue: void 0,\n\t\tsource: nodeSource,\n\t\tjsonID,\n\t\tmode: { \".\": {\n\t\t\t$value: originalToken.$value,\n\t\t\taliasOf: void 0,\n\t\t\taliasChain: void 0,\n\t\t\tpartialAliasOf: void 0,\n\t\t\taliasedBy: void 0,\n\t\t\toriginalValue: void 0,\n\t\t\tdependencies: void 0,\n\t\t\tsource: {\n\t\t\t\t...nodeSource,\n\t\t\t\tnode: getObjMember(nodeSource.node, \"$value\") ?? nodeSource.node\n\t\t\t}\n\t\t} }\n\t};\n\tif (ignore?.deprecated && token.$deprecated || ignore?.tokens && wcmatch(ignore.tokens)(token.id)) return;\n\tconst $extensions = getObjMember(node, \"$extensions\");\n\tif ($extensions) {\n\t\tconst modeNode = getObjMember($extensions, \"mode\");\n\t\tfor (const mode of Object.keys(token.$extensions.mode)) {\n\t\t\tconst modeValue = token.$extensions.mode[mode];\n\t\t\ttoken.mode[mode] = {\n\t\t\t\t$value: modeValue,\n\t\t\t\taliasOf: void 0,\n\t\t\t\taliasChain: void 0,\n\t\t\t\tpartialAliasOf: void 0,\n\t\t\t\taliasedBy: void 0,\n\t\t\t\toriginalValue: void 0,\n\t\t\t\tdependencies: void 0,\n\t\t\t\tsource: {\n\t\t\t\t\t...nodeSource,\n\t\t\t\t\tnode: getObjMember(modeNode, mode)\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn token;\n}\n/** Generate originalValue and source from node */\nfunction tokenRawValuesFromNode(node, { filename, path }) {\n\tif (!(node.type === \"Object\" && getObjMember(node, \"$value\") && !path.includes(\"$extensions\"))) return;\n\tconst rawValues = {\n\t\tjsonID: `#/${path.join(\"/\")}`,\n\t\toriginalValue: momoa.evaluate(node),\n\t\tsource: {\n\t\t\tloc: filename,\n\t\t\tfilename,\n\t\t\tnode\n\t\t},\n\t\tmode: {}\n\t};\n\trawValues.mode[\".\"] = {\n\t\toriginalValue: rawValues.originalValue.$value,\n\t\tsource: {\n\t\t\t...rawValues.source,\n\t\t\tnode: getObjMember(node, \"$value\")\n\t\t}\n\t};\n\tconst $extensions = getObjMember(node, \"$extensions\");\n\tif ($extensions) {\n\t\tconst modes = getObjMember($extensions, \"mode\");\n\t\tif (modes) for (const modeMember of modes.members) {\n\t\t\tconst mode = modeMember.name.value;\n\t\t\trawValues.mode[mode] = {\n\t\t\t\toriginalValue: momoa.evaluate(modeMember.value),\n\t\t\t\tsource: {\n\t\t\t\t\tloc: filename,\n\t\t\t\t\tfilename,\n\t\t\t\t\tnode: modeMember.value\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\treturn rawValues;\n}\n/** Arbitrary keys that should be associated with a token group */\nconst GROUP_PROPERTIES = [\n\t\"$deprecated\",\n\t\"$description\",\n\t\"$extensions\",\n\t\"$type\"\n];\n/**\n* Generate a group from a node.\n* This method mutates the groups index as it goes because of group inheritance.\n* As it encounters new groups it may have to update other groups.\n*/\nfunction groupFromNode(node, { path, groups }) {\n\tconst id = path.join(\".\");\n\tconst jsonID = `#/${path.join(\"/\")}`;\n\tif (!groups[jsonID]) groups[jsonID] = {\n\t\tid,\n\t\t$deprecated: void 0,\n\t\t$description: void 0,\n\t\t$extensions: void 0,\n\t\t$type: void 0,\n\t\ttokens: []\n\t};\n\tconst groupIDs = Object.keys(groups);\n\tgroupIDs.sort();\n\tfor (const groupID of groupIDs) if (jsonID.startsWith(groupID) && groupID !== jsonID) {\n\t\tgroups[jsonID].$deprecated = groups[groupID]?.$deprecated ?? groups[jsonID].$deprecated;\n\t\tgroups[jsonID].$description = groups[groupID]?.$description ?? groups[jsonID].$description;\n\t\tgroups[jsonID].$type = groups[groupID]?.$type ?? groups[jsonID].$type;\n\t}\n\tfor (const m of node.members) {\n\t\tif (m.name.type !== \"String\" || !GROUP_PROPERTIES.includes(m.name.value)) continue;\n\t\tgroups[jsonID][m.name.value] = momoa.evaluate(m.value);\n\t}\n\treturn groups[jsonID];\n}\n/**\n* Link and reverse-link tokens in one pass.\n*/\nfunction graphAliases(refMap, { tokens, logger, sources }) {\n\tconst getTokenRef = (ref) => ref.replace(/\\/(\\$value|\\$extensions)\\/?.*/, \"\");\n\tfor (const [jsonID, { refChain }] of Object.entries(refMap)) {\n\t\tif (!refChain.length) continue;\n\t\tconst mode = jsonID.match(/\\/\\$extensions\\/mode\\/([^/]+)/)?.[1] || \".\";\n\t\tconst rootRef = getTokenRef(jsonID);\n\t\tconst modeValue = tokens[rootRef]?.mode[mode];\n\t\tif (!modeValue) continue;\n\t\tif (!modeValue.dependencies) modeValue.dependencies = [];\n\t\tmodeValue.dependencies.push(...refChain.filter((r) => !modeValue.dependencies.includes(r)));\n\t\tmodeValue.dependencies.sort((a, b) => a.localeCompare(b, \"en-us\", { numeric: true }));\n\t\tif (jsonID.endsWith(\"/$value\") || tokens[jsonID]) {\n\t\t\tmodeValue.aliasOf = refToTokenID(refChain.at(-1));\n\t\t\tmodeValue.aliasChain = [...refChain.map(refToTokenID)];\n\t\t}\n\t\tconst partial = jsonID.replace(/.*\\/\\$value\\/?/, \"\").split(\"/\").filter(Boolean);\n\t\tif (partial.length && modeValue.$value && typeof modeValue.$value === \"object\") {\n\t\t\tlet node = modeValue.$value;\n\t\t\tlet sourceNode = modeValue.source.node;\n\t\t\tif (!modeValue.partialAliasOf) modeValue.partialAliasOf = Array.isArray(modeValue.$value) || tokens[rootRef]?.$type === \"shadow\" ? [] : {};\n\t\t\tlet partialAliasOf = modeValue.partialAliasOf;\n\t\t\tif (tokens[rootRef]?.$type === \"shadow\" && !Array.isArray(node)) {\n\t\t\t\tif (Array.isArray(modeValue.partialAliasOf) && !modeValue.partialAliasOf.length) modeValue.partialAliasOf.push({});\n\t\t\t\tpartialAliasOf = modeValue.partialAliasOf[0];\n\t\t\t}\n\t\t\tfor (let i = 0; i < partial.length; i++) {\n\t\t\t\tlet key = partial[i];\n\t\t\t\tif (String(Number(key)) === key) key = Number(key);\n\t\t\t\tif (key in node && typeof node[key] !== \"undefined\") {\n\t\t\t\t\tnode = node[key];\n\t\t\t\t\tif (sourceNode.type === \"Object\") sourceNode = getObjMember(sourceNode, key) ?? sourceNode;\n\t\t\t\t\telse if (sourceNode.type === \"Array\") sourceNode = sourceNode.elements[key]?.value ?? sourceNode;\n\t\t\t\t}\n\t\t\t\tif (i === partial.length - 1) {\n\t\t\t\t\tconst aliasedID = getTokenRef(refChain[0]);\n\t\t\t\t\tif (!(aliasedID in tokens)) {\n\t\t\t\t\t\tlogger.error({\n\t\t\t\t\t\t\tgroup: \"parser\",\n\t\t\t\t\t\t\tlabel: \"init\",\n\t\t\t\t\t\t\tmessage: `Invalid alias: ${aliasedID}`,\n\t\t\t\t\t\t\tnode: sourceNode,\n\t\t\t\t\t\t\tsrc: sources[tokens[rootRef].source.filename]?.src\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tpartialAliasOf[key] = refToTokenID(aliasedID);\n\t\t\t\t}\n\t\t\t\tif (!(key in partialAliasOf)) partialAliasOf[key] = Array.isArray(node) ? [] : {};\n\t\t\t\tpartialAliasOf = partialAliasOf[key];\n\t\t\t}\n\t\t}\n\t\tconst aliasedByRefs = [jsonID, ...refChain].reverse();\n\t\tfor (let i = 0; i < aliasedByRefs.length; i++) {\n\t\t\tconst baseRef = getTokenRef(aliasedByRefs[i]);\n\t\t\tconst baseToken = tokens[baseRef]?.mode[mode] || tokens[baseRef];\n\t\t\tif (!baseToken) continue;\n\t\t\tconst upstream = aliasedByRefs.slice(i + 1);\n\t\t\tif (!upstream.length) break;\n\t\t\tif (!baseToken.aliasedBy) baseToken.aliasedBy = [];\n\t\t\tfor (let j = 0; j < upstream.length; j++) {\n\t\t\t\tconst downstream = refToTokenID(upstream[j]);\n\t\t\t\tif (!baseToken.aliasedBy.includes(downstream)) {\n\t\t\t\t\tbaseToken.aliasedBy.push(downstream);\n\t\t\t\t\tif (mode === \".\") tokens[baseRef].aliasedBy = baseToken.aliasedBy;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbaseToken.aliasedBy.sort((a, b) => a.localeCompare(b, \"en-us\", { numeric: true }));\n\t\t}\n\t\tif (mode === \".\") {\n\t\t\ttokens[rootRef].aliasChain = modeValue.aliasChain;\n\t\t\ttokens[rootRef].aliasedBy = modeValue.aliasedBy;\n\t\t\ttokens[rootRef].aliasOf = modeValue.aliasOf;\n\t\t\ttokens[rootRef].dependencies = modeValue.dependencies;\n\t\t\ttokens[rootRef].partialAliasOf = modeValue.partialAliasOf;\n\t\t}\n\t}\n}\n/**\n* Convert Reference Object to token ID.\n* This can then be turned into an alias by surrounding with { … }\n* ⚠️ This is not mode-aware. This will flatten multiple modes into the same root token.\n*/\nfunction refToTokenID($ref) {\n\tconst path = typeof $ref === \"object\" ? $ref.$ref : $ref;\n\tif (typeof path !== \"string\") return;\n\tconst { subpath } = parseRef(path);\n\treturn subpath?.length && subpath.join(\".\").replace(/\\.(\\$value|\\$extensions).*$/, \"\") || void 0;\n}\nconst EXPECTED_NESTED_ALIAS = {\n\tborder: {\n\t\tcolor: [\"color\"],\n\t\tstroke: [\"strokeStyle\"],\n\t\twidth: [\"dimension\"]\n\t},\n\tgradient: {\n\t\tcolor: [\"color\"],\n\t\tposition: [\"number\"]\n\t},\n\tshadow: {\n\t\tcolor: [\"color\"],\n\t\toffsetX: [\"dimension\"],\n\t\toffsetY: [\"dimension\"],\n\t\tblur: [\"dimension\"],\n\t\tspread: [\"dimension\"],\n\t\tinset: [\"boolean\"]\n\t},\n\tstrokeStyle: { dashArray: [\"dimension\"] },\n\ttransition: {\n\t\tduration: [\"duration\"],\n\t\tdelay: [\"duration\"],\n\t\ttimingFunction: [\"cubicBezier\"]\n\t},\n\ttypography: {\n\t\tfontFamily: [\"fontFamily\"],\n\t\tfontWeight: [\"fontWeight\"],\n\t\tfontSize: [\"dimension\"],\n\t\tlineHeight: [\"dimension\", \"number\"],\n\t\tletterSpacing: [\"dimension\"]\n\t}\n};\n/**\n* Resolve DTCG aliases\n*/\nfunction resolveAliases(tokens, { logger, refMap, sources }) {\n\tfor (const token of Object.values(tokens)) {\n\t\tconst aliasEntry = {\n\t\t\tgroup: \"parser\",\n\t\t\tlabel: \"init\",\n\t\t\tsrc: sources[token.source.filename]?.src,\n\t\t\tnode: getObjMember(token.source.node, \"$value\")\n\t\t};\n\t\tfor (const mode of Object.keys(token.mode)) {\n\t\t\tfunction resolveInner(alias, refChain) {\n\t\t\t\tconst nextRef = aliasToRef(alias, mode)?.$ref;\n\t\t\t\tif (!nextRef) {\n\t\t\t\t\tlogger.error({\n\t\t\t\t\t\t...aliasEntry,\n\t\t\t\t\t\tmessage: `Internal error resolving ${JSON.stringify(refChain)}`\n\t\t\t\t\t});\n\t\t\t\t\tthrow new Error(\"Internal error\");\n\t\t\t\t}\n\t\t\t\tif (refChain.includes(nextRef)) logger.error({\n\t\t\t\t\t...aliasEntry,\n\t\t\t\t\tmessage: \"Circular alias detected.\"\n\t\t\t\t});\n\t\t\t\tconst nextJSONID = nextRef.replace(/\\/(\\$value|\\$extensions).*/, \"\");\n\t\t\t\tconst nextToken = tokens[nextJSONID]?.mode[mode] || tokens[nextJSONID]?.mode[\".\"];\n\t\t\t\tif (!nextToken) logger.error({\n\t\t\t\t\t...aliasEntry,\n\t\t\t\t\tmessage: `Could not resolve alias ${alias}.`\n\t\t\t\t});\n\t\t\t\trefChain.push(nextRef);\n\t\t\t\tif (isAlias(nextToken.originalValue)) return resolveInner(nextToken.originalValue, refChain);\n\t\t\t\treturn nextJSONID;\n\t\t\t}\n\t\t\tfunction traverseAndResolve(value, { node, expectedTypes, path }) {\n\t\t\t\tif (typeof value !== \"string\") {\n\t\t\t\t\tif (Array.isArray(value)) for (let i = 0; i < value.length; i++) {\n\t\t\t\t\t\tif (!value[i]) continue;\n\t\t\t\t\t\tvalue[i] = traverseAndResolve(value[i], {\n\t\t\t\t\t\t\tnode: node.elements?.[i]?.value,\n\t\t\t\t\t\t\texpectedTypes: expectedTypes?.includes(\"cubicBezier\") ? [\"number\"] : expectedTypes,\n\t\t\t\t\t\t\tpath: [...path, i]\n\t\t\t\t\t\t}).$value;\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof value === \"object\") for (const key of Object.keys(value)) {\n\t\t\t\t\t\tif (!expectedTypes?.length || !EXPECTED_NESTED_ALIAS[expectedTypes[0]]) continue;\n\t\t\t\t\t\tvalue[key] = traverseAndResolve(value[key], {\n\t\t\t\t\t\t\tnode: getObjMember(node, key),\n\t\t\t\t\t\t\texpectedTypes: EXPECTED_NESTED_ALIAS[expectedTypes[0]][key],\n\t\t\t\t\t\t\tpath: [...path, key]\n\t\t\t\t\t\t}).$value;\n\t\t\t\t\t}\n\t\t\t\t\treturn { $value: value };\n\t\t\t\t}\n\t\t\t\tif (!isAlias(value)) {\n\t\t\t\t\tif (!expectedTypes?.includes(\"string\") && (value.includes(\"{\") || value.includes(\"}\"))) logger.error({\n\t\t\t\t\t\t...aliasEntry,\n\t\t\t\t\t\tmessage: \"Invalid alias syntax.\",\n\t\t\t\t\t\tnode\n\t\t\t\t\t});\n\t\t\t\t\treturn { $value: value };\n\t\t\t\t}\n\t\t\t\tconst refChain = [];\n\t\t\t\tconst resolvedID = resolveInner(value, refChain);\n\t\t\t\tif (expectedTypes?.length && !expectedTypes.includes(tokens[resolvedID].$type)) logger.error({\n\t\t\t\t\t...aliasEntry,\n\t\t\t\t\tmessage: `Cannot alias to $type \"${tokens[resolvedID].$type}\" from $type \"${expectedTypes.join(\" / \")}\".`,\n\t\t\t\t\tnode\n\t\t\t\t});\n\t\t\t\trefMap[path.join(\"/\")] = {\n\t\t\t\t\tfilename: token.source.filename,\n\t\t\t\t\trefChain\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t$type: tokens[resolvedID].$type,\n\t\t\t\t\t$value: tokens[resolvedID].mode[mode]?.$value || tokens[resolvedID].$value\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst pathBase = mode === \".\" ? token.jsonID : `${token.jsonID}/$extensions/mode/${mode}`;\n\t\t\tconst { $type, $value } = traverseAndResolve(token.mode[mode].$value, {\n\t\t\t\tnode: aliasEntry.node,\n\t\t\t\texpectedTypes: token.$type ? [token.$type] : void 0,\n\t\t\t\tpath: [pathBase, \"$value\"]\n\t\t\t});\n\t\t\tif (!token.$type) token.$type = $type;\n\t\t\tif ($value) token.mode[mode].$value = $value;\n\t\t\tif (mode === \".\") token.$value = token.mode[mode].$value;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/parse/load.ts\n/** Load from multiple entries, while resolving remote files */\nasync function loadSources(inputs, { config, logger, req, continueOnError, yamlToMomoa, transform }) {\n\tconst entry = {\n\t\tgroup: \"parser\",\n\t\tlabel: \"init\"\n\t};\n\tconst firstLoad = performance.now();\n\tlet document = {};\n\t/** The original user inputs, in original order, with parsed ASTs */\n\tconst sources = inputs.map((input, i) => ({\n\t\t...input,\n\t\tdocument: {},\n\t\tfilename: input.filename || new URL(`virtual:${i}`)\n\t}));\n\t/** The sources array, indexed by filename */\n\tlet sourceByFilename = {};\n\t/** Mapping of all final $ref resolutions. This will be used to generate the graph later. */\n\tlet refMap = {};\n\ttry {\n\t\tconst result = await bundle(sources, {\n\t\t\treq,\n\t\t\tparse: transform ? transformer(transform) : void 0,\n\t\t\tyamlToMomoa\n\t\t});\n\t\tdocument = result.document;\n\t\tsourceByFilename = result.sources;\n\t\trefMap = result.refMap;\n\t\tfor (const [filename, source] of Object.entries(result.sources)) {\n\t\t\tconst i = sources.findIndex((s) => s.filename.href === filename);\n\t\t\tif (i === -1) sources.push(source);\n\t\t\telse {\n\t\t\t\tsources[i].src = source.src;\n\t\t\t\tsources[i].document = source.document;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\tlet src = sources.find((s) => s.filename.href === err.filename)?.src;\n\t\tif (src && typeof src !== \"string\") src = JSON.stringify(src, void 0, 2);\n\t\tlogger.error({\n\t\t\t...entry,\n\t\t\tcontinueOnError,\n\t\t\tmessage: err.message,\n\t\t\tnode: err.node,\n\t\t\tsrc\n\t\t});\n\t}\n\tlogger.debug({\n\t\t...entry,\n\t\tmessage: `JSON loaded`,\n\t\ttiming: performance.now() - firstLoad\n\t});\n\tconst artificialSource = {\n\t\tsrc: momoa.print(document, { indent: 2 }),\n\t\tdocument\n\t};\n\tconst firstPass = performance.now();\n\tconst tokens = {};\n\tconst tokenIDs = [];\n\tconst groups = {};\n\tawait traverseAsync(document, { async enter(node, _parent, path) {\n\t\tif (node.type !== \"Object\") return;\n\t\tgroupFromNode(node, {\n\t\t\tpath,\n\t\t\tgroups\n\t\t});\n\t\tconst token = tokenFromNode(node, {\n\t\t\tgroups,\n\t\t\tignore: config.ignore,\n\t\t\tpath,\n\t\t\tsource: {\n\t\t\t\tsrc: artificialSource,\n\t\t\t\tdocument\n\t\t\t}\n\t\t});\n\t\tif (token) {\n\t\t\ttokenIDs.push(token.jsonID);\n\t\t\ttokens[token.jsonID] = token;\n\t\t}\n\t} });\n\tlogger.debug({\n\t\t...entry,\n\t\tmessage: \"Parsing: 1st pass\",\n\t\ttiming: performance.now() - firstPass\n\t});\n\tconst secondPass = performance.now();\n\tfor (const source of Object.values(sourceByFilename)) await traverseAsync(source.document, { async enter(node, _parent, path) {\n\t\tif (node.type !== \"Object\") return;\n\t\tconst tokenRawValues = tokenRawValuesFromNode(node, {\n\t\t\tfilename: source.filename.href,\n\t\t\tpath\n\t\t});\n\t\tif (tokenRawValues && tokens[tokenRawValues?.jsonID]) {\n\t\t\ttokens[tokenRawValues.jsonID].originalValue = tokenRawValues.originalValue;\n\t\t\ttokens[tokenRawValues.jsonID].source = tokenRawValues.source;\n\t\t\tfor (const mode of Object.keys(tokenRawValues.mode)) {\n\t\t\t\ttokens[tokenRawValues.jsonID].mode[mode].originalValue = tokenRawValues.mode[mode].originalValue;\n\t\t\t\ttokens[tokenRawValues.jsonID].mode[mode].source = tokenRawValues.mode[mode].source;\n\t\t\t}\n\t\t}\n\t} });\n\tresolveAliases(tokens, {\n\t\tlogger,\n\t\tsources: sourceByFilename,\n\t\trefMap\n\t});\n\tlogger.debug({\n\t\t...entry,\n\t\tmessage: \"Parsing: 2nd pass\",\n\t\ttiming: performance.now() - secondPass\n\t});\n\tconst aliasStart = performance.now();\n\tgraphAliases(refMap, {\n\t\ttokens,\n\t\tlogger,\n\t\tsources: sourceByFilename\n\t});\n\tlogger.debug({\n\t\t...entry,\n\t\tmessage: \"Alias graph built\",\n\t\ttiming: performance.now() - aliasStart\n\t});\n\tconst normalizeStart = performance.now();\n\tfor (const id of tokenIDs) {\n\t\tconst token = tokens[id];\n\t\tnormalize(token, {\n\t\t\tlogger,\n\t\t\tsrc: sourceByFilename[token.source.filename]?.src\n\t\t});\n\t}\n\tlogger.debug({\n\t\t...entry,\n\t\tmessage: \"Normalized values\",\n\t\ttiming: performance.now() - normalizeStart\n\t});\n\tconst tokensSorted = {};\n\ttokenIDs.sort((a, b) => a.localeCompare(b, \"en-us\", { numeric: true }));\n\tfor (const path of tokenIDs) {\n\t\tif (path.includes(\"/$defs/\")) continue;\n\t\tconst id = refToTokenID(path);\n\t\ttokensSorted[id] = tokens[path];\n\t}\n\tfor (const group of Object.values(groups)) group.tokens.sort((a, b) => a.localeCompare(b, \"en-us\", { numeric: true }));\n\treturn {\n\t\ttokens: tokensSorted,\n\t\tsources\n\t};\n}\nfunction transformer(transform) {\n\treturn async (src, filename) => {\n\t\tlet document = toMomoa(src);\n\t\tlet lastPath = \"#/\";\n\t\tlet last$type;\n\t\tif (transform.root) {\n\t\t\tconst result = transform.root(document, {\n\t\t\t\tfilename,\n\t\t\t\tparent: void 0,\n\t\t\t\tpath: []\n\t\t\t});\n\t\t\tif (result) document = result;\n\t\t}\n\t\tawait traverseAsync(document, { async enter(node, parent, path) {\n\t\t\tif (node.type !== \"Object\" || !path.length) return;\n\t\t\tconst ctx = {\n\t\t\t\tfilename,\n\t\t\t\tparent,\n\t\t\t\tpath\n\t\t\t};\n\t\t\tconst next$type = getObjMember(node, \"$type\");\n\t\t\tif (next$type?.type === \"String\") {\n\t\t\t\tconst jsonPath = `#/${path.join(\"/\")}`;\n\t\t\t\tif (jsonPath.startsWith(lastPath)) last$type = next$type.value;\n\t\t\t\tlastPath = jsonPath;\n\t\t\t}\n\t\t\tif (getObjMember(node, \"$value\")) {\n\t\t\t\tlet result = transform.token?.(structuredClone(node), ctx);\n\t\t\t\tif (result) {\n\t\t\t\t\treplaceNode(node, result);\n\t\t\t\t\tresult = void 0;\n\t\t\t\t}\n\t\t\t\tresult = transform[last$type]?.(structuredClone(node), ctx);\n\t\t\t\tif (result) replaceNode(node, result);\n\t\t\t} else if (!path.includes(\"$value\")) {\n\t\t\t\tconst result = transform.group?.(structuredClone(node), ctx);\n\t\t\t\tif (result) replaceNode(node, result);\n\t\t\t}\n\t\t} });\n\t\treturn document;\n\t};\n}\n\n//#endregion\n//#region src/parse/index.ts\n/** Parse */\nasync function parse(_input, { logger = new Logger(), req = defaultReq, skipLint = false, config = {}, continueOnError = false, yamlToMomoa, transform } = {}) {\n\tconst inputs = Array.isArray(_input) ? _input : [_input];\n\tconst totalStart = performance.now();\n\tconst resolver = await loadResolver(inputs, {\n\t\tlogger,\n\t\treq,\n\t\tyamlToMomoa\n\t});\n\tconst initStart = performance.now();\n\tconst { tokens, sources } = await loadSources(inputs, {\n\t\treq,\n\t\tlogger,\n\t\tconfig,\n\t\tcontinueOnError,\n\t\tyamlToMomoa,\n\t\ttransform\n\t});\n\tlogger.debug({\n\t\tmessage: \"Loaded tokens\",\n\t\tgroup: \"parser\",\n\t\tlabel: \"core\",\n\t\ttiming: performance.now() - initStart\n\t});\n\tif (skipLint !== true && config?.plugins?.length) {\n\t\tconst lintStart = performance.now();\n\t\tawait lintRunner({\n\t\t\ttokens,\n\t\t\tsources,\n\t\t\tconfig,\n\t\t\tlogger\n\t\t});\n\t\tlogger.debug({\n\t\t\tmessage: \"Lint finished\",\n\t\t\tgroup: \"plugin\",\n\t\t\tlabel: \"lint\",\n\t\t\ttiming: performance.now() - lintStart\n\t\t});\n\t}\n\tlogger.debug({\n\t\tmessage: \"Finish all parser tasks\",\n\t\tgroup: \"parser\",\n\t\tlabel: \"core\",\n\t\ttiming: performance.now() - totalStart\n\t});\n\tif (continueOnError) {\n\t\tconst { errorCount } = logger.stats();\n\t\tif (errorCount > 0) logger.error({\n\t\t\tgroup: \"parser\",\n\t\t\tmessage: `Parser encountered ${errorCount} ${pluralize(errorCount, \"error\", \"errors\")}. Exiting.`\n\t\t});\n\t}\n\treturn {\n\t\ttokens,\n\t\tsources,\n\t\tresolver\n\t};\n}\nlet fs;\n/** Fallback req */\nasync function defaultReq(src, _origin) {\n\tif (src.protocol === \"file:\") {\n\t\tif (!fs) fs = await import(\"node:fs/promises\");\n\t\treturn await fs.readFile(src, \"utf8\");\n\t}\n\tconst res = await fetch(src);\n\tif (!res.ok) throw new Error(`${src} responded with ${res.status}\\n${await res.text()}`);\n\treturn await res.text();\n}\n\n//#endregion\nexport { LOG_ORDER, Logger, MULTI_VALUE, RECOMMENDED_CONFIG, SINGLE_VALUE, TokensJSONError, build, calculatePermutations, createResolver, defineConfig, formatMessage, isLikelyResolver, lintRunner, loadResolver, mergeConfigs, normalizeResolver, parse, validateModifier, validateResolver, validateSet };\n//# sourceMappingURL=index.js.map","import type { CSSPluginOptions } from '@terrazzo/plugin-css';\n\nexport const FORMAT_ID = 'sass';\n\nexport interface SassPluginOptions {\n /** Where to output CSS */\n filename?: CSSPluginOptions['filename'];\n /** Glob patterns to exclude tokens from output */\n exclude?: CSSPluginOptions['exclude'];\n}\n\nexport const FILE_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n\n@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";`;\n\nexport const MIXIN_TOKEN = `@function token($tokenName) {\n @if map.has-key($__token-values, $tokenName) == false {\n @error 'No token named \"#{$tokenName}\"';\n }\n $_token: map.get($__token-values, $tokenName);\n @if meta.type-of($_token) == map and map.has-key($_token, \"__tz-error\") {\n @error map.get($_token, \"__tz-error\");\n }\n\n @return $_token;\n}`;\n\nexport const MIXIN_TYPOGRAPHY = `@mixin typography($tokenName, $modeName: \".\") {\n @if map.has-key($__token-typography-mixins, $tokenName) == false {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n $_mixin: map.get($__token-typography-mixins, $tokenName);\n $_properties: map.get($_mixin, \".\");\n @if map.has-key($_mixin) {\n $_properties: map.get($_mixin);\n }\n @each $_property, $_value in $_properties {\n #{$_property}: #{$_value};\n }\n}`;\n\nconst INDENT_NUM_SPACES = 2;\n\nexport function getIndent(indentationLevel: number): string {\n return indentationLevel > 0 ? ' '.repeat(indentationLevel * INDENT_NUM_SPACES) : '';\n}\n","import { a as CSS_TO_CULORI, c as tokenToCulori, s as parseColor, t as kebabCase } from \"./string-BIhoe-L2.js\";\nimport { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHwb, modeLab, modeLab65, modeLch, modeLrgb, modeOkhsv, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, round, toGamut, useMode } from \"culori/fn\";\nimport { displayable as displayable$1 } from \"culori\";\n\n//#region src/css/lib.ts\nfunction defaultAliasTransform(token) {\n\tif (!token) throw new Error(\"Undefined token\");\n\treturn `var(${makeCSSVar(token.id)})`;\n}\n/** Generate shorthand CSS for select token types */\nfunction generateShorthand({ token, localID }) {\n\tswitch (token.$type) {\n\t\tcase \"transition\": return [\n\t\t\t\"duration\",\n\t\t\t\"delay\",\n\t\t\t\"timing-function\"\n\t\t].map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true })).join(\" \");\n\t\tcase \"typography\": {\n\t\t\tconst typeVar = (name) => makeCSSVar(`${localID}-${name}`, { wrapVar: true });\n\t\t\tif (\"font-size\" in token.$value && \"font-family\" in token.$value) {\n\t\t\t\tlet output = \"\";\n\t\t\t\tfor (const prop of [\n\t\t\t\t\t\"font-style\",\n\t\t\t\t\t\"font-variant\",\n\t\t\t\t\t\"font-weight\"\n\t\t\t\t]) if (prop in token.$value) output += ` ${typeVar(prop)}`;\n\t\t\t\tlet fontSizeVar = typeVar(\"font-size\");\n\t\t\t\tif (\"line-height\" in token.$value) fontSizeVar += `/${typeVar(\"line-height\")}`;\n\t\t\t\toutput += ` ${fontSizeVar}`;\n\t\t\t\toutput += ` ${typeVar(\"font-family\")}`;\n\t\t\t\treturn output.trim();\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n}\nconst CSS_VAR_RE = /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n/**\n* Generate a valid CSS variable from any string\n* Code by @dfrankland\n*/\nfunction makeCSSVar(name, { prefix, wrapVar = false } = {}) {\n\tif (typeof name !== \"string\") throw new Error(`makeCSSVar() Expected string, received ${name}`);\n\tlet property = name.split(CSS_VAR_RE).filter(Boolean).join(\"-\");\n\tif (prefix && !property.startsWith(`${prefix}-`)) property = `${prefix}-${property}`;\n\tconst finalProperty = `--${property}`.toLocaleLowerCase();\n\treturn wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n\n//#endregion\n//#region src/css/boolean.ts\n/** Convert boolean value to CSS string */\nfunction transformBoolean(token, { tokensSet, transformAlias = defaultAliasTransform }) {\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value === true ? \"1\" : \"0\";\n}\n\n//#endregion\n//#region src/css/color.ts\n/** Convert color value to CSS string */\nfunction transformColor(token, options) {\n\tconst { transformAlias = defaultAliasTransform, tokensSet } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst { colorSpace, components, alpha = 1 } = typeof token.$value === \"string\" ? parseColor(token.$value) : token.$value;\n\tconst color = tokenToCulori({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t});\n\tif (!color) throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n\tlet formatColor = formatCss;\n\tif (options.color?.legacyHex) formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n\treturn displayable(color) ? formatColor(color) : downsample({\n\t\tcolorSpace,\n\t\tcomponents,\n\t\talpha\n\t}, color, options.color?.depth);\n}\nconst converters = {\n\ta98: useMode(modeA98),\n\thsl: useMode(modeHsl),\n\thwb: useMode(modeHwb),\n\tlab: useMode(modeLab),\n\tlab65: useMode(modeLab65),\n\tlch: useMode(modeLch),\n\tlrgb: useMode(modeLrgb),\n\toklab: useMode(modeOklab),\n\toklch: useMode(modeOklch),\n\tokhsv: useMode(modeOkhsv),\n\tp3: useMode(modeP3),\n\tprophoto: useMode(modeProphoto),\n\trec2020: useMode(modeRec2020),\n\trgb: useMode(modeRgb),\n\txyz50: useMode(modeXyz50),\n\txyz65: useMode(modeXyz65)\n};\nconst DEPTH_ROUNDING = {\n\t24: round(4),\n\t30: round(4),\n\t36: round(5),\n\t48: round(6)\n};\n/**\n* Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n* Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n* we have to do an additional step of converting back. So we’re not really converting;\n* we’re just preserving the original colorspace.\n*/\nfunction downsample($value, culoriColor, depth = 30) {\n\tif (!($value.colorSpace in CSS_TO_CULORI)) throw new Error(`Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(\", \")}`);\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tlet gamutSpace = conversionSpace;\n\tif (gamutSpace === \"lab\" || gamutSpace === \"lab65\") gamutSpace = \"lch\";\n\telse if (gamutSpace === \"oklab\") gamutSpace = \"oklch\";\n\tlet srgb = converters[conversionSpace](toGamut(\"rgb\", gamutSpace)(culoriColor));\n\tlet p3 = converters[conversionSpace](toGamut(\"p3\", gamutSpace)(culoriColor));\n\tlet rec2020 = converters[conversionSpace](toGamut(\"rec2020\", gamutSpace)(culoriColor));\n\tif (typeof depth === \"number\") {\n\t\tif (!DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(\", \")}`);\n\t\tsrgb = roundColor(srgb, depth);\n\t\tp3 = roundColor(p3, depth);\n\t\trec2020 = roundColor(rec2020, depth);\n\t}\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(srgb),\n\t\tp3: formatCss(p3),\n\t\trec2020: formatCss(rec2020)\n\t};\n}\n/** Round color to certain depth. */\nfunction roundColor(color, depth = 30) {\n\tif (depth === \"unlimited\") return color;\n\tconst newColor = { ...color };\n\tfor (const [k, v] of Object.entries(color)) {\n\t\tif (typeof v !== \"number\" || k === \"mode\") continue;\n\t\tnewColor[k] = DEPTH_ROUNDING[depth](v);\n\t}\n\treturn newColor;\n}\n\n//#endregion\n//#region src/css/dimension.ts\n/** Convert dimension value to CSS */\nfunction transformDimension(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.value === 0 ? \"0\" : `${token.$value.value}${token.$value.unit}`;\n}\n\n//#endregion\n//#region src/css/stroke-style.ts\n/** Convert strokeStyle value to CSS */\nfunction transformStrokeStyle(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn typeof token.$value === \"string\" ? token.$value : \"dashed\";\n}\n\n//#endregion\n//#region src/css/border.ts\n/** Convert border value to multiple CSS values */\nfunction transformBorder(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst width = token.partialAliasOf?.width ? transformAlias(tokensSet[token.partialAliasOf.width]) : transformDimension({ $value: token.$value.width }, options);\n\tconst color = token.partialAliasOf?.color ? transformAlias(tokensSet[token.partialAliasOf.color]) : transformColor({ $value: token.$value.color }, options);\n\tconst style = token.partialAliasOf?.style ? transformAlias(tokensSet[token.partialAliasOf.style]) : transformStrokeStyle({ $value: token.$value.style }, options);\n\tconst formatBorder = (colorKey) => [\n\t\twidth,\n\t\tstyle,\n\t\ttypeof color === \"string\" ? color : color[colorKey]\n\t].join(\" \");\n\treturn typeof color === \"string\" || displayable$1(color.p3) ? formatBorder(\".\") : {\n\t\t\".\": formatBorder(\".\"),\n\t\tsrgb: formatBorder(\"srgb\"),\n\t\tp3: formatBorder(\"p3\"),\n\t\trec2020: formatBorder(\"rec2020\")\n\t};\n}\n\n//#endregion\n//#region src/css/cubic-bezier.ts\n/** Convert cubicBezier value to CSS */\nfunction transformCubicBezier(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `cubic-bezier(${token.$value.map((v, i) => token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]) : v).join(\", \")})`;\n}\n\n//#endregion\n//#region src/css/duration.ts\n/** Convert duration value to CSS */\nfunction transformDuration(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `${token.$value.value}${token.$value.unit}`;\n}\n\n//#endregion\n//#region src/css/font-family.ts\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\nfunction transformFontFamily(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn token.$value.map((fontName) => FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`).join(\", \");\n}\n\n//#endregion\n//#region src/css/font-weight.ts\n/** Convert fontWeight value to CSS */\nfunction transformFontWeight(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n\n//#endregion\n//#region src/css/gradient.ts\n/** Convert gradient value to CSS */\nfunction transformGradient(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tlet isHDR = false;\n\tconst colors = [];\n\tconst positions = [];\n\tfor (let i = 0; i < token.$value.length; i++) {\n\t\tconst { color, position } = token.$value[i];\n\t\tconst colorValue = token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: color }, options);\n\t\tif (typeof colorValue !== \"string\") isHDR = true;\n\t\tcolors.push(colorValue);\n\t\tpositions.push(token.partialAliasOf?.[i]?.position ? transformAlias(tokensSet[token.partialAliasOf[i].position]) : `${100 * position}%`);\n\t}\n\tfunction formatStop(i, colorKey = \".\") {\n\t\treturn `${typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey]} ${positions[i]}`;\n\t}\n\treturn !isHDR ? token.$value.map((_, i) => formatStop(i, positions[i])).join(\", \") : {\n\t\t\".\": token.$value.map((_, i) => formatStop(i, \".\")).join(\", \"),\n\t\tsrgb: token.$value.map((_, i) => formatStop(i, \"srgb\")).join(\", \"),\n\t\tp3: token.$value.map((_, i) => formatStop(i, \"p3\")).join(\", \"),\n\t\trec2020: token.$value.map((_, i) => formatStop(i, \"rec2020\")).join(\", \")\n\t};\n}\n\n//#endregion\n//#region src/css/link.ts\n/** Convert link value to CSS */\nfunction transformLink(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `url(\"${token.$value}\")`;\n}\n\n//#endregion\n//#region src/css/number.ts\n/** Convert number value to CSS */\nfunction transformNumber(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n\n//#endregion\n//#region src/css/shadow.ts\n/** Convert shadow subvalue to CSS */\nfunction transformShadowLayer(value, options) {\n\tconst { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n\tconst offsetX = partialAliasOf?.offsetX ? transformAlias(tokensSet[partialAliasOf.offsetX]) : transformDimension({ $value: value.offsetX }, options);\n\tconst offsetY = partialAliasOf?.offsetY ? transformAlias(tokensSet[partialAliasOf.offsetY]) : transformDimension({ $value: value.offsetY }, options);\n\tconst blur = partialAliasOf?.blur ? transformAlias(tokensSet[partialAliasOf.blur]) : transformDimension({ $value: value.blur }, options);\n\tconst spread = partialAliasOf?.spread ? transformAlias(tokensSet[partialAliasOf.spread]) : transformDimension({ $value: value.spread }, options);\n\treturn [\n\t\tvalue?.inset === true ? \"inset\" : void 0,\n\t\toffsetX,\n\t\toffsetY,\n\t\tblur,\n\t\tspread,\n\t\tcolorValue\n\t].filter(Boolean).join(\" \");\n}\n/** Convert shadow value to CSS */\nfunction transformShadow(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\tconst colors = token.$value.map((v, i) => token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: v.color }, options));\n\tconst isHDR = colors.some((c) => typeof c === \"object\");\n\tconst formatShadow = (colorKey) => token.$value.map((v, i) => transformShadowLayer(v, {\n\t\ttokensSet,\n\t\tcolorValue: typeof colors[i] === \"string\" ? colors[i] : colors[i][colorKey],\n\t\tpartialAliasOf: token.partialAliasOf?.[i],\n\t\ttransformAlias\n\t})).join(\", \");\n\treturn !isHDR ? formatShadow(\".\") : {\n\t\t\".\": formatShadow(\".\"),\n\t\tsrgb: formatShadow(\"srgb\"),\n\t\tp3: formatShadow(\"p3\"),\n\t\trec2020: formatShadow(\"rec2020\")\n\t};\n}\n\n//#endregion\n//#region src/css/string.ts\n/** Convert string value to CSS */\nfunction transformString(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn String(token.$value);\n}\n\n//#endregion\n//#region src/css/transition.ts\n/** Convert transition value to shorthand */\nfunction transformTransition(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tif (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);\n\treturn `${token.partialAliasOf?.duration ? transformAlias(tokensSet[token.partialAliasOf.duration]) : transformDuration({ $value: token.$value.duration }, options)} ${token.partialAliasOf?.delay ? transformAlias(tokensSet[token.partialAliasOf.delay]) : transformDuration({ $value: token.$value.delay }, options)} ${token.partialAliasOf?.timingFunction ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]) : transformCubicBezier({ $value: token.$value.timingFunction }, options)}`;\n}\n\n//#endregion\n//#region src/css/typography.ts\n/** Convert typography value to multiple CSS values */\nfunction transformTypography(token, options) {\n\tconst { tokensSet, transformAlias = defaultAliasTransform } = options;\n\tconst output = {};\n\tfor (const [property, subvalue] of Object.entries(token.$value)) {\n\t\tlet transformedValue;\n\t\tconst aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n\t\tif (aliasedID) {\n\t\t\tconst resolvedToken = tokensSet[aliasedID];\n\t\t\ttransformedValue = transformAlias(resolvedToken.$type === \"typography\" ? { id: `${aliasedID}-${property}` } : resolvedToken);\n\t\t} else switch (property) {\n\t\t\tcase \"fontFamily\":\n\t\t\t\ttransformedValue = transformFontFamily({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontSize\":\n\t\t\tcase \"letterSpacing\":\n\t\t\t\ttransformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"fontWeight\":\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tcase \"lineHeight\":\n\t\t\t\tif (typeof subvalue === \"number\") transformedValue = transformNumber({ $value: subvalue }, options);\n\t\t\t\telse transformedValue = transformDimension({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t}\n\t\toutput[kebabCase(property)] = transformedValue;\n\t}\n\treturn output;\n}\n\n//#endregion\n//#region src/css/index.ts\n/** Main CSS Transform */\nfunction transformCSSValue(token, { mode, ...options }) {\n\tconst selectedMode = token.mode[mode];\n\tif (!selectedMode) return;\n\tconst tokenWithModeValue = {\n\t\tid: token.id,\n\t\t$type: token.$type,\n\t\t...selectedMode\n\t};\n\tswitch (tokenWithModeValue.$type) {\n\t\tcase \"boolean\": return transformBoolean(tokenWithModeValue, options);\n\t\tcase \"border\": return transformBorder(tokenWithModeValue, options);\n\t\tcase \"color\": return transformColor(tokenWithModeValue, options);\n\t\tcase \"cubicBezier\": return transformCubicBezier(tokenWithModeValue, options);\n\t\tcase \"dimension\": return transformDimension(tokenWithModeValue, options);\n\t\tcase \"duration\": return transformDuration(tokenWithModeValue, options);\n\t\tcase \"fontFamily\": return transformFontFamily(tokenWithModeValue, options);\n\t\tcase \"fontWeight\": return transformFontWeight(tokenWithModeValue, options);\n\t\tcase \"gradient\": return transformGradient(tokenWithModeValue, options);\n\t\tcase \"link\": return transformLink(tokenWithModeValue, options);\n\t\tcase \"number\": return transformNumber(tokenWithModeValue, options);\n\t\tcase \"shadow\": return transformShadow(tokenWithModeValue, options);\n\t\tcase \"string\": return transformString(tokenWithModeValue, options);\n\t\tcase \"strokeStyle\": return transformStrokeStyle(tokenWithModeValue, options);\n\t\tcase \"transition\": return transformTransition(tokenWithModeValue, options);\n\t\tcase \"typography\": return transformTypography(tokenWithModeValue, options);\n\t}\n}\n\n//#endregion\nexport { DEPTH_ROUNDING, defaultAliasTransform, generateShorthand, makeCSSVar, roundColor, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };\n//# sourceMappingURL=css.js.map","import { makeCSSVar } from '@terrazzo/token-tools/css';\nimport { getIndent } from './lib.js';\n\nexport type SassMapKey = string | number;\nexport type SassMapValue = string | SassToken;\nexport type SassMapValues = Record<SassMapKey, SassMapValue> | Iterable<[SassMapKey, SassMapValue]>;\n\nexport abstract class SassToken {\n constructor(public readonly indentationLevel: number = 0) {}\n\n abstract format(): string;\n\n public toString(): string {\n return `${getIndent(this.indentationLevel)}${this.format()}`;\n }\n\n public createMap(values?: SassMapValues): SassMap {\n return new SassMap(this.indentationLevel + 1, values);\n }\n\n public createVariableDefinition(name: string, value: SassToken): VariableDefinitionSassToken {\n return new VariableDefinitionSassToken(this.indentationLevel + 1, name, value);\n }\n}\n\nexport abstract class ValueSassToken extends SassToken {\n public toString(): string {\n return this.format();\n }\n}\n\nexport class StringSassToken extends SassToken {\n constructor(\n public readonly value: string,\n indentationLevel = 0,\n ) {\n super(indentationLevel);\n }\n\n public format(): string {\n return this.value;\n }\n}\n\nexport class CssVarReferenceSassToken extends StringSassToken {\n public format(): string {\n return `${makeCSSVar(this.value, { wrapVar: true })}`;\n }\n}\n\nexport class BlankLineSassToken extends StringSassToken {\n constructor() {\n super('');\n }\n}\n\nexport class RootSassToken extends SassToken {\n private readonly SEPARATOR = '\\n';\n\n private sassTokens: SassToken[];\n\n constructor() {\n super(-1);\n this.sassTokens = [];\n }\n\n public append(sassToken: SassToken) {\n this.sassTokens.push(sassToken);\n }\n\n public appendString(value: string) {\n this.append(new StringSassToken(value));\n }\n\n public appendVariableDefinition(name: string, sassToken: SassToken) {\n this.append(this.createVariableDefinition(name, sassToken));\n }\n\n public appendBlankLine() {\n this.append(new BlankLineSassToken());\n }\n\n public appendUse(value: string, as_?: string) {\n this.append(new UseSassToken(value, as_));\n }\n\n public format(): string {\n return this.sassTokens.map((sassToken) => sassToken).join(this.SEPARATOR);\n }\n}\n\nexport class SassMap extends ValueSassToken {\n private readonly MAP_OPEN = '(';\n private readonly MAP_CLOSE = ')';\n private readonly MAP_VALUE_SEPARATOR = ',\\n';\n\n private readonly SEPARATOR = '\\n';\n\n private readonly values: Map<SassMapKey, SassMapValue>;\n\n constructor(indentationLevel: number, values?: SassMapValues) {\n super(indentationLevel);\n this.values = new Map<SassMapKey, SassMapValue>(values ? this.sassMapValuesToIter(values) : undefined);\n }\n\n public set(key: SassMapKey, value: SassMapValue) {\n this.values.set(key, value);\n }\n\n public extend(values: SassMapValues) {\n for (const [key, value] of this.sassMapValuesToIter(values)) {\n this.set(key, value);\n }\n }\n\n public setMap(key: SassMapKey, values: SassMapValues) {\n const nestedMap = this.createMap(values);\n this.set(key, nestedMap);\n return nestedMap;\n }\n\n public format(): string {\n return [\n this.MAP_OPEN,\n Array.from(\n this.values\n .entries()\n .map(([key, value]) => new StringSassToken(`\"${key}\": ${value}`, this.indentationLevel + 1)),\n ).join(this.MAP_VALUE_SEPARATOR),\n new StringSassToken(this.MAP_CLOSE, this.indentationLevel),\n ].join(this.SEPARATOR);\n }\n\n private sassMapValuesToIter(values: SassMapValues) {\n return Symbol.iterator in values && typeof values[Symbol.iterator] === 'function' ? values : Object.entries(values);\n }\n}\n\nexport class UseSassToken extends StringSassToken {\n constructor(value: string, as_?: string) {\n const valueQuoted = `\"${value}\"`;\n const atUseUrl = as_ ? `${valueQuoted} as ${as_}` : valueQuoted;\n super(`@use ${atUseUrl};`);\n }\n}\n\nexport class VariableDefinitionSassToken extends SassToken {\n constructor(\n indentationLevel: number,\n public readonly name: string,\n public readonly value: SassToken,\n ) {\n super(indentationLevel);\n }\n\n public format(): string {\n return `${this.name}: ${this.value};`;\n }\n}\n","import { type BuildHookOptions, MULTI_VALUE } from '@terrazzo/parser';\nimport { getTokenMatch } from '@terrazzo/token-tools';\nimport { FORMAT_ID, type SassPluginOptions } from './lib.js';\nimport { CssVarReferenceSassToken, RootSassToken, type SassMapKey, type SassMapValue, type SassToken } from './node.js';\n\nexport interface BuildParams {\n getTransforms: BuildHookOptions['getTransforms'];\n options?: SassPluginOptions;\n}\n\nconst FONT_SHORTHAND_PROPERTIES = [\n 'font-family',\n 'font-size',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'line-height',\n];\n\nconst SASS_HEADER = `////\n/// Autogenerated by ⛋ Terrazzo. DO NOT EDIT!\n////\n`;\n\nconst SASS_LIB = `@function token($tokenName) {\n @if not map.has-key($__token-values, $tokenName) {\n @error 'No token named \"#{$tokenName}\"';\n }\n\n $token: map.get($__token-values, $tokenName);\n\n @if $token == \"__tz-error-typography\" {\n @error \"This is a typography mixin. Use \\`@include typography(\"#{tokenId}\")\\` instead.\";\n }\n\n @return $token;\n}\n\n@mixin typography($tokenName) {\n @if not map.has-key($__token-typography-mixins, $tokenName) {\n @error 'No typography mixin named \"#{$tokenName}\"';\n }\n\n $mixin: map.get($__token-typography-mixins, $tokenName);\n\n @each $_property, $_value in $mixin {\n #{$_property}: #{$_value};\n }\n}\n`;\n\nexport default async function build({ getTransforms, options }: BuildParams): Promise<string> {\n const root = new RootSassToken();\n root.appendString(SASS_HEADER);\n root.appendUse('sass:list');\n root.appendUse('sass:map');\n root.appendBlankLine();\n\n const tokenValuesMap = root.createMap();\n\n for (const token of getTransforms({ format: FORMAT_ID, id: '*', mode: '.' })) {\n if (getTokenMatch(token.token.id, options?.exclude ?? [])) {\n continue;\n }\n const tokenId = token.token.id;\n const tokenName = token.localID ?? tokenId;\n if (token.token.$type === 'typography' && token.type === MULTI_VALUE) {\n const tokenValue = token.value;\n const typographySassVars = new Map<SassMapKey, SassToken>(\n Object.keys(tokenValue).map((key) => [\n `${tokenId}.${key}`,\n new CssVarReferenceSassToken(`${tokenName}-${key}`),\n ]),\n );\n if ('font-size' in tokenValue && 'font-family' in tokenValue) {\n typographySassVars.set(tokenId, new CssVarReferenceSassToken(tokenName));\n }\n tokenValuesMap.extend(typographySassVars);\n } else {\n tokenValuesMap.set(tokenId, new CssVarReferenceSassToken(tokenName));\n }\n }\n root.appendVariableDefinition('$__token-values', tokenValuesMap);\n root.appendBlankLine();\n const tokenTypographyMixinsMap = root.createMap();\n\n for (const token of getTransforms({ format: 'css', id: '*', mode: '.', $type: 'typography' })) {\n if (typeof token.value === 'string') {\n continue;\n }\n const tokenId = token.token.id;\n const tokenName = token.localID ?? tokenId;\n const tokenValue = token.value;\n const values = { ...token.value };\n const fontMap = tokenTypographyMixinsMap.createMap();\n if ('font-size' in tokenValue && 'font-family' in tokenValue) {\n fontMap.set('font', new CssVarReferenceSassToken(`${tokenName}`));\n for (const property of FONT_SHORTHAND_PROPERTIES) {\n delete values[property];\n }\n }\n fontMap.extend(\n Object.keys(values).map(\n (propertyName) =>\n [propertyName, new CssVarReferenceSassToken(`${tokenName}-${propertyName}`)] as [SassMapKey, SassMapValue],\n ),\n );\n tokenTypographyMixinsMap.set(tokenId, fontMap);\n }\n\n root.appendVariableDefinition('$__token-typography-mixins', tokenTypographyMixinsMap);\n root.appendBlankLine();\n root.appendString(SASS_LIB);\n return root.toString();\n}\n","import type { Plugin } from '@terrazzo/parser';\nimport { FORMAT_ID as CSS_FORMAT_ID } from '@terrazzo/plugin-css';\nimport build from './build.js';\nimport { FORMAT_ID, type SassPluginOptions } from './lib.js';\n\nexport * from './build.js';\nexport * from './lib.js';\nexport * from './node.js';\n\nexport default function pluginSass(options?: SassPluginOptions): Plugin {\n const filename = options?.filename ?? 'index.scss';\n\n return {\n name: '@terrazzo/plugin-sass',\n enforce: 'post',\n config(config) {\n // plugin-css is required for transforms. throw error\n if (!config.plugins.some((p) => p.name === '@terrazzo/plugin-css')) {\n throw new Error(\n `@terrazzo/plugin-sass relies on @terrazzo/plugin-css.\nPlease install @terrazzo/plugin-css and follow setup to add to your config.`,\n );\n }\n },\n\n async transform({ getTransforms, setTransform }) {\n const tokens = getTransforms({ format: CSS_FORMAT_ID });\n for (const token of tokens) {\n const value = `var(${token.localID})`;\n let listingName = `token(\"${token.token.id}\")`;\n if (token.token.$type === 'typography') {\n listingName =\n token.mode !== '.' ? `typography(\"${token.token.id}\", \"${token.mode}\")` : `typography(\"${token.token.id}\")`;\n }\n setTransform(token.id, {\n format: FORMAT_ID,\n localID: token.id,\n value,\n mode: token.mode,\n meta: { 'token-listing': { name: listingName } },\n });\n }\n },\n\n async build({ getTransforms, outputFile }) {\n const output = await build({ getTransforms, options });\n outputFile(filename, output);\n },\n };\n}\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,140],"mappings":"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"}