@terrazzo/plugin-sass 0.8.0 → 0.9.0
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/CHANGELOG.md +23 -0
- package/dist/index.js +34 -40
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
- package/rolldown.config.ts +0 -14
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["parseNumber","parseNumber_default","named","named_default","parseNamed","parseNamed_default","hex","parseHex","parseHex_default","num$1","num_none","per","per_none","num_per","num_per_none","hue$1","hue_none","c","rx_num_per_none","rgb_num_old","rgb_per_old","parseRgbLegacy","parseRgbLegacy_default","prepare","_prepare_default","converter","converters$1","converter_default","modes","parsers","colorProfiles","identity","useMode","definition$15","k$2","getMode","useParser","IdentStartCodePoint","IdentCodePoint","Tok","_i","is_num","is_ident","huenits","num","digits","ident","identlike","tokenize","parseColorSyntax","c$1","consumeCoords","parseModernSyntax","parse","parse_default","parseRgb","parseRgb_default","parseTransparent","parseTransparent_default","lerp","get_classes","interpolatorPiecewise","interpolatorLinear","fixupAlpha","definition$14","definition_default$12","linearize$2","convertA98ToXyz65","convertA98ToXyz65_default","gamma$2","convertXyz65ToA98","convertXyz65ToA98_default","fn$2","convertRgbToLrgb","convertRgbToLrgb_default","convertRgbToXyz65","convertRgbToXyz65_default","fn$1","convertLrgbToRgb","convertLrgbToRgb_default","convertXyz65ToRgb","convertXyz65ToRgb_default","definition$13","definition_default","normalizeHue","hue$2","normalizeHue_default","convertHslToRgb","convertRgbToHsl","hueToDeg","hue_default","hsl_old","parseHslLegacy","parseHslLegacy_default","parseHsl","parseHsl_default","hue","fn$3","fixupHueShorter","differenceHueSaturation","differenceHueNaive","differenceHueChroma","averageAngle","definition$12","definition_default$1","convertHsvToRgb","f$1","convertRgbToHsv","definition$11","definition_default$2","convertHwbToRgb","convertRgbToHwb","ParseHwb","parseHwb_default","definition$10","definition_default$3","k","e","D50","D65","k$1","e$1","fn","convertLabToXyz50","convertLabToXyz50_default","convertXyz50ToRgb","convertXyz50ToRgb_default","convertLabToRgb","convertLabToRgb_default","convertRgbToXyz50","convertRgbToXyz50_default","f","convertXyz50ToLab","convertXyz50ToLab_default","convertRgbToLab","convertRgbToLab_default","parseLab","parseLab_default","definition$9","definition_default$4","convertLabToLch","convertLabToLch_default","convertLchToLab","convertLchToLab_default","parseLch","parseLch_default","definition$8","definition_default$5","definition$7","definition_default$6","convertOklabToLrgb","convertOklabToLrgb_default","convertLrgbToOklab","convertLrgbToOklab_default","convertRgbToOklab","convertRgbToOklab_default","convertOklabToRgb","convertOklabToRgb_default","parseOklab","parseOklab_default","definition$6","definition_default$7","parseOklch","parseOklch_default","definition$5","definition_default$8","convertP3ToXyz65","convertP3ToXyz65_default","convertXyz65ToP3","convertXyz65ToP3_default","definition$4","definition_default$9","gamma$1","convertXyz50ToProphoto","convertXyz50ToProphoto_default","linearize$1","convertProphotoToXyz50","convertProphotoToXyz50_default","definition$3","definition_default$10","α$1","β$1","gamma","convertXyz65ToRec2020","convertXyz65ToRec2020_default","α","β","linearize","convertRec2020ToXyz65","convertRec2020ToXyz65_default","definition$2","definition_default$11","definition$1","definition_default$13","convertXyz65ToXyz50","convertXyz65ToXyz50_default","convertXyz50ToXyz65","convertXyz50ToXyz65_default","definition","definition_default$14","converters","named","num","hue","num","converters","converters","definition","k","c","r","c","definition","parseRgb","parseHex","parseRgbLegacy","parseNamed","parseTransparent","linearize","r","gamma","fn","c","r","rgb","r","fn","c","r","definition","rgb","convertXyz65ToA98","convertA98ToXyz65","hue","r","hue","fn","hue","sum","val","definition","parseHsl","parseHslLegacy","c","f","r","definition","definition","parseHwb","c","k","e","rgb","r","rgb","definition","convertLabToXyz50","convertLabToRgb","convertXyz50ToLab","convertRgbToLab","parseLab","c","c","c","c","definition","convertLchToLab","c","convertLabToLch","parseLch","definition","rgb","convertLrgbToRgb","convertRgbToLrgb","r","rgb","c","definition","lab","convertOklabToLrgb","convertOklabToRgb","convertLrgbToOklab","convertRgbToOklab","parseOklab","c","c","definition","lch","c","parseOklch","rgb","r","definition","rgb","convertXyz65ToP3","convertP3ToXyz65","gamma","linearize","r","definition","rgb","convertXyz50ToProphoto","convertProphotoToXyz50","α","β","r","definition","rgb","convertXyz65ToRec2020","convertRec2020ToXyz65","definition","convertXyz50ToRgb","convertXyz50ToLab","convertRgbToXyz50","convertLabToXyz50","convertXyz65ToRgb","convertXyz65ToXyz50","convertRgbToXyz65","convertXyz50ToXyz65","c","fn","modeA98","modeHsl","modeHsv","modeHwb","modeLab","modeLch","modeLrgb","modeOklab","modeOklch","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyz50","modeXyz65","output: string[]","options?: SassPluginOptions"],"sources":["../../plugin-css/dist/index.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseNumber.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/colors/named.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseNamed.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseHex.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/util/regex.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseRgbLegacy.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/_prepare.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/converter.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/modes.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/parse.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseTransparent.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/interpolate/lerp.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/interpolate/piecewise.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/interpolate/linear.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/fixup/alpha.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/a98/convertA98ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/a98/convertXyz65ToA98.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/convertRgbToLrgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertRgbToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/convertLrgbToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/a98/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/util/normalizeHue.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/convertHslToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/convertRgbToHsl.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/util/hue.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/parseHslLegacy.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/parseHsl.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/fixup/hue.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/difference.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/average.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsv/convertHsvToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsv/convertRgbToHsv.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsv/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/convertHwbToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/convertRgbToHwb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/parseHwb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/constants.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/constants.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertLabToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertLabToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/convertRgbToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertXyz50ToLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertRgbToLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/parseLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/convertLabToLch.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/convertLchToLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/parseLch.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertOklabToLrgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertLrgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertRgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertOklabToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/parseOklab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklch/parseOklch.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklch/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/convertP3ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/convertXyz65ToP3.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/definition.js","../../../node_modules/.pnpm/wildcard-match@5.1.4/node_modules/wildcard-match/build/index.es.mjs","../../token-tools/dist/index.js","../../token-tools/dist/css.js","../src/lib.ts","../src/build.ts","../src/index.ts"],"sourcesContent":["//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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.1/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.1/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.1/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 = new RegExp(\"^\" + num_per_none + \"$\");\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseRgbLegacy.js\nconst rgb_num_old = new RegExp(`^rgba?\\\\(\\\\s*${num$1}${c}${num$1}${c}${num$1}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst rgb_per_old = 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 void 0;\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.1/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.1/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.1/node_modules/culori/src/modes.js\nconst converters$1 = {};\nconst modes = {};\nconst parsers = [];\nconst colorProfiles = {};\nconst identity = (v) => v;\nconst useMode = (definition$15) => {\n\tconverters$1[definition$15.mode] = {\n\t\t...converters$1[definition$15.mode],\n\t\t...definition$15.toMode\n\t};\n\tObject.keys(definition$15.fromMode || {}).forEach((k$2) => {\n\t\tif (!converters$1[k$2]) converters$1[k$2] = {};\n\t\tconverters$1[k$2][definition$15.mode] = definition$15.fromMode[k$2];\n\t});\n\tif (!definition$15.ranges) definition$15.ranges = {};\n\tif (!definition$15.difference) definition$15.difference = {};\n\tdefinition$15.channels.forEach((channel) => {\n\t\tif (definition$15.ranges[channel] === void 0) definition$15.ranges[channel] = [0, 1];\n\t\tif (!definition$15.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);\n\t\tif (typeof definition$15.interpolate[channel] === \"function\") definition$15.interpolate[channel] = { use: definition$15.interpolate[channel] };\n\t\tif (!definition$15.interpolate[channel].fixup) definition$15.interpolate[channel].fixup = identity;\n\t});\n\tmodes[definition$15.mode] = definition$15;\n\t(definition$15.parse || []).forEach((parser) => {\n\t\tuseParser(parser, definition$15.mode);\n\t});\n\treturn converter_default(definition$15.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.1/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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) return void 0;\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) return void 0;\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) return void 0;\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 void 0;\n\t\t\tcontinue;\n\t\t}\n\t\treturn void 0;\n\t}\n\tif (coords.length < 3 || coords.length > 4) return void 0;\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) return void 0;\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 void 0;\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) return void 0;\n\tcoords.unshift(token.value);\n\treturn coords;\n}\nconst parse = (color) => {\n\tif (typeof color !== \"string\") return void 0;\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.1/node_modules/culori/src/rgb/parseRgb.js\nfunction parseRgb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"rgb\" && parsed[0] !== \"rgba\") return void 0;\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 void 0;\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.1/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.1/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.1/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.1/node_modules/culori/src/interpolate/linear.js\nconst interpolatorLinear = interpolatorPiecewise(lerp);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/node_modules/culori/src/rgb/definition.js\nconst definition$14 = {\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$14;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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) => {\n\tlet r$1 = linearize$2(a98.r);\n\tlet g = linearize$2(a98.g);\n\tlet b = linearize$2(a98.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.alpha !== void 0) res.alpha = a98.alpha;\n\treturn res;\n};\nvar convertA98ToXyz65_default = convertA98ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/node_modules/culori/src/lrgb/convertRgbToLrgb.js\nconst fn$2 = (c$1 = 0) => {\n\tconst abs = Math.abs(c$1);\n\tif (abs <= .04045) return c$1 / 12.92;\n\treturn (Math.sign(c$1) || 1) * Math.pow((abs + .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$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 convertRgbToLrgb_default = convertRgbToLrgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertRgbToXyz65.js\nconst convertRgbToXyz65 = (rgb$2) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);\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.1/node_modules/culori/src/lrgb/convertLrgbToRgb.js\nconst fn$1 = (c$1 = 0) => {\n\tconst abs = Math.abs(c$1);\n\tif (abs > .0031308) return (Math.sign(c$1) || 1) * (1.055 * Math.pow(abs, 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$1(r$1),\n\t\tg: fn$1(g),\n\t\tb: fn$1(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.1/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.1/node_modules/culori/src/a98/definition.js\nconst definition$13 = {\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$13;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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.1/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 = Math.max(r$1, g, b), m = Math.min(r$1, 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: .5 * (M + m)\n\t};\n\tif (M - m !== 0) res.h = (M === r$1 ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r$1) / (M - m) + 2 : (r$1 - g) / (M - 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.1/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.1/node_modules/culori/src/hsl/parseHslLegacy.js\nconst hsl_old = 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.1/node_modules/culori/src/hsl/parseHsl.js\nfunction parseHsl(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hsl\" && parsed[0] !== \"hsla\") return void 0;\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 void 0;\n\t\tres.h = h.value;\n\t}\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) return void 0;\n\t\tres.s = s.value / 100;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return void 0;\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.1/node_modules/culori/src/fixup/hue.js\nconst hue = (hues, fn$3) => {\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$3(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.1/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$2, idx) => {\n\t\t\tlet delta = diffs[k$2] ? diffs[k$2](ConvStd, ConvSmp) : ConvStd[k$2] - ConvSmp[k$2];\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.1/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.1/node_modules/culori/src/hsl/definition.js\nconst definition$12 = {\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$12;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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$1 = 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$1),\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$1),\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$1)\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$1),\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$1),\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$1)\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.1/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 = Math.max(r$1, g, b), m = Math.min(r$1, 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) res.h = (M === r$1 ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r$1) / (M - m) + 2 : (r$1 - g) / (M - 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.1/node_modules/culori/src/hsv/definition.js\nconst definition$11 = {\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$2 = definition$11;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/node_modules/culori/src/hwb/convertRgbToHwb.js\nfunction convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === void 0) return void 0;\n\tlet s = hsv.s !== void 0 ? hsv.s : 0;\n\tlet v = hsv.v !== void 0 ? 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 !== void 0) res.h = hsv.h;\n\tif (hsv.alpha !== void 0) res.alpha = hsv.alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/parseHwb.js\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hwb\") return void 0;\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 void 0;\n\t\tres.h = h.value;\n\t}\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) return void 0;\n\t\tres.w = w.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) return void 0;\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.1/node_modules/culori/src/hwb/definition.js\nconst definition$10 = {\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$3 = definition$10;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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$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.1/node_modules/culori/src/lab/convertLabToXyz50.js\nlet fn = (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(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(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.1/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.1/node_modules/culori/src/lab/convertLabToRgb.js\nconst convertLabToRgb = (lab) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab));\nvar convertLabToRgb_default = convertLabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/convertRgbToXyz50.js\nconst convertRgbToXyz50 = (rgb$2) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);\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.1/node_modules/culori/src/lab/convertXyz50ToLab.js\nconst f = (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(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(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.1/node_modules/culori/src/lab/convertRgbToLab.js\nconst convertRgbToLab = (rgb$2) => {\n\tlet res = convertXyz50ToLab_default(convertRgbToXyz50_default(rgb$2));\n\tif (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.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.1/node_modules/culori/src/lab/parseLab.js\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lab\") return void 0;\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 void 0;\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.1/node_modules/culori/src/lab/definition.js\nconst definition$9 = {\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: [-100, 100],\n\t\tb: [-100, 100]\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$4 = definition$9;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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.1/node_modules/culori/src/lch/parseLch.js\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lch\") return void 0;\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 void 0;\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 void 0;\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.1/node_modules/culori/src/lch/definition.js\nconst definition$8 = {\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$8;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/definition.js\nconst definition$7 = {\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$7;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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 * .9999999984505198 + .39633779217376786 * a + .2158037580607588 * b, 3);\n\tlet M = Math.pow(l * 1.0000000088817609 - .10556134232365635 * a - .06385417477170591 * b, 3);\n\tlet S = Math.pow(l * 1.0000000546724108 - .08948418209496575 * a - 1.2914855378640917 * b, 3);\n\tlet res = {\n\t\tmode: \"lrgb\",\n\t\tr: 4.076741661347994 * L - 3.307711590408193 * M + .230969928729428 * S,\n\t\tg: -1.2684380040921763 * L + 2.6097574006633715 * M - .3413193963102197 * S,\n\t\tb: -.004196086541837188 * L - .7034186144594493 * M + 1.7076147009309444 * 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.1/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(.41222147079999993 * r$1 + .5363325363 * g + .0514459929 * b);\n\tlet M = Math.cbrt(.2119034981999999 * r$1 + .6806995450999999 * g + .1073969566 * b);\n\tlet S = Math.cbrt(.08830246189999998 * r$1 + .2817188376 * g + .6299787005000002 * b);\n\tlet res = {\n\t\tmode: \"oklab\",\n\t\tl: .2104542553 * L + .793617785 * M - .0040720468 * S,\n\t\ta: 1.9779984951 * L - 2.428592205 * M + .4505937099 * S,\n\t\tb: .0259040371 * L + .7827717662 * M - .808675766 * 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.1/node_modules/culori/src/oklab/convertRgbToOklab.js\nconst convertRgbToOklab = (rgb$2) => {\n\tlet res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$2));\n\tif (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.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.1/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.1/node_modules/culori/src/oklab/parseOklab.js\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklab\") return void 0;\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 void 0;\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.1/node_modules/culori/src/oklab/definition.js\nconst definition$6 = {\n\t...definition_default$4,\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$6;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklch/parseOklch.js\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklch\") return void 0;\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 void 0;\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 void 0;\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.1/node_modules/culori/src/oklch/definition.js\nconst definition$5 = {\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$5;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/convertP3ToXyz65.js\nconst convertP3ToXyz65 = (rgb$2) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);\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.1/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.1/node_modules/culori/src/p3/definition.js\nconst definition$4 = {\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$4;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js\nconst gamma$1 = (v) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) return Math.sign(v) * Math.pow(abs, 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.1/node_modules/culori/src/prophoto/convertProphotoToXyz50.js\nconst linearize$1 = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) return Math.sign(v) * Math.pow(abs, 1.8);\n\treturn v / 16;\n};\nconst convertProphotoToXyz50 = (prophoto) => {\n\tlet r$1 = linearize$1(prophoto.r);\n\tlet g = linearize$1(prophoto.g);\n\tlet b = linearize$1(prophoto.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.alpha !== void 0) res.alpha = prophoto.alpha;\n\treturn res;\n};\nvar convertProphotoToXyz50_default = convertProphotoToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/definition.js\nconst definition$3 = {\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$3;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js\nconst α$1 = 1.09929682680944;\nconst β$1 = .018053968510807;\nconst gamma = (v) => {\n\tconst abs = Math.abs(v);\n\tif (abs > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs, .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.1/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js\nconst α = 1.09929682680944;\nconst β = .018053968510807;\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) return v / 4.5;\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / .45);\n};\nconst convertRec2020ToXyz65 = (rec2020) => {\n\tlet r$1 = 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: .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.alpha !== void 0) res.alpha = rec2020.alpha;\n\treturn res;\n};\nvar convertRec2020ToXyz65_default = convertRec2020ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/definition.js\nconst definition$2 = {\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$2;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/definition.js\nconst definition$1 = {\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$1;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js\nconst convertXyz65ToXyz50 = (xyz65) => {\n\tlet { x, y, z, alpha } = xyz65;\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.1/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js\nconst convertXyz50ToXyz65 = (xyz50) => {\n\tlet { x, y, z, alpha } = xyz50;\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.1/node_modules/culori/src/xyz65/definition.js\nconst definition = {\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;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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$1 = converter_default(\"rgb\");\nconst hsl = converter_default(\"hsl\");\nconst serializeHex = (color) => {\n\tif (color === void 0) return void 0;\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 void 0;\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 void 0;\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\treturn void 0;\n};\nconst formatHex = (c$1) => serializeHex(rgb$1(c$1));\nconst formatHex8 = (c$1) => serializeHex8(rgb$1(c$1));\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/clamp.js\nconst rgb = 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(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 void 0;\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\treturn (color) => {\n\t\tcolor = _prepare_default(color);\n\t\tif (color === void 0) return void 0;\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-BZ5Le1WD.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\",\n\thsl: \"hsl\",\n\thsv: \"hsv\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlch: \"lch\",\n\tlrgb: \"srgb-linear\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\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\ta98: \"a98\",\n\t\"display-p3\": \"p3\",\n\thsl: \"hsl\",\n\thsv: \"hsv\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlch: \"lch\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\t\"prophoto-rgb\": \"prophoto\",\n\trec2020: \"rec2020\",\n\tsrgb: \"rgb\",\n\t\"srgb-linear\": \"lrgb\",\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\t}\n\t\tcase \"hsl\": {\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s,\n\t\t\t\tresult.l\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"hsv\": {\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\t}\n\t\tcase \"hwb\": {\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.w,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"lab\":\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\t}\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\t}\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\t}\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\":\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\treturn {\n\t\t\t\tmode: \"hsl\",\n\t\t\t\th,\n\t\t\t\ts,\n\t\t\t\tl,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hsv\": {\n\t\t\tconst [h, s, v] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"hsv\",\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 \"hwb\": {\n\t\t\tconst [h, w, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"hwb\",\n\t\t\t\th,\n\t\t\t\tw,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"oklab\": {\n\t\t\tconst [l, a, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: 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 \"xyz-d50\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"xyz50\",\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\tcase \"xyz-d65\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"xyz65\",\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}\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) {\n\t\t\treturn \"^\".concat(transform(p, 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$3 = isMatch.bind(null, regexp);\n\tfn$3.options = options;\n\tfn$3.pattern = pattern;\n\tfn$3.regexp = regexp;\n\treturn fn$3;\n}\n\n//#endregion\n//#region ../token-tools/dist/index.js\n/** Match token against globs */\nfunction isTokenMatch(tokenID, globPatterns) {\n\treturn wildcardMatch(globPatterns)(tokenID);\n}\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\t}\n\t\t}\n\t}\n}\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) => 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/** 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);\n}\nconst converters = {\n\ta98: useMode(definition_default),\n\thsl: useMode(definition_default$1),\n\thsv: useMode(definition_default$2),\n\thwb: useMode(definition_default$3),\n\tlab: 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\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};\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) {\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tconst converter$1 = converters[conversionSpace];\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(converter$1(toGamut(\"rgb\", conversionSpace)(culoriColor))),\n\t\tp3: formatCss(converter$1(toGamut(\"p3\", conversionSpace)(culoriColor))),\n\t\trec2020: formatCss(converter$1(toGamut(\"rec2020\", conversionSpace)(culoriColor)))\n\t};\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\tconst inset = value?.inset === true ? \"inset\" : void 0;\n\treturn [\n\t\tinset,\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\t}\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\t}\n\t\t\tcase \"fontWeight\": {\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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\t}\n\t\t\tdefault: {\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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$2, v] of declarations) output.push(`${indent}${k$2}: ${v};`);\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 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 matchingTokens = tokens.filter((token) => isTokenMatch(token.token.id, selectors));\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\t}\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\": `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\t}\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\t}\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$2 of Object.keys(token.value)) declarations[k$2] = makeCSSVar(`${token.localID ?? token.token.id}-${k$2}`, { 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\t}\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\t}\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\t}\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: `-webkit-linear-gradient(${value})`,\n\t\t\t\t\t\t\t\t\t\"-webkit-background-clip\": \"text\",\n\t\t\t\t\t\t\t\t\t\"-webkit-text-fill-color\": \"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\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\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\t}\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 }) {\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\tfor (const token of rootTokens) {\n\t\t\tif (isTokenMatch(token.token.id, exclude ?? [])) 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] = token.value;\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\trootRule.declarations[localID] = token.value.srgb;\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tp3Rule.declarations[localID] = token.value.p3;\n\t\t\t\t\trec2020Rule.declarations[localID] = token.value.rec2020;\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] ??= alias.value;\n\t\t\t\t\t\trec2020Rule.declarations[alias.localID] ??= alias.value;\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] = shorthand;\n\t\t\t\tfor (const [name, value] of Object.entries(token.value)) rootRule.declarations[name === \".\" ? localID : [localID, name].join(\"-\")] = value;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const { selectors, tokens, mode } 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\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] = token.value;\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\tselectorRule.declarations[localID] = token.value.srgb;\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tselectorP3Rule.declarations[localID] = token.value.p3;\n\t\t\t\t\tselectorRec2020Rule.declarations[localID] = token.value.rec2020;\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] ??= alias.value;\n\t\t\t\t\t\tselectorRec2020Rule.declarations[alias.localID] ??= alias.value;\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] = shorthand;\n\t\t\t\tfor (const [name, subvalue] of Object.entries(token.value)) selectorRule.declarations[`${localID}-${name}`] = subvalue;\n\t\t\t}\n\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") selectorAliasDeclarations[alias.localID] = alias.value;\n\t\t}\n\t\tfor (const [name, value] of Object.entries(selectorAliasDeclarations)) selectorRule.declarations[name] ??= value;\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 } = 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\tconst cssTokens = getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: \"*\",\n\t\t\t\tmode: \"*\"\n\t\t\t});\n\t\t\tif (cssTokens.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});\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) setTransform(id, {\n\t\t\t\t\t\tformat: FORMAT_ID,\n\t\t\t\t\t\tlocalID,\n\t\t\t\t\t\tvalue: transformedValue,\n\t\t\t\t\t\tmode\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}), \"\\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: [-100, 100],\n\t\tb: [-100, 100]\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","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 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\tlet L = Math.pow(\n\t\tl * 0.99999999845051981432 +\n\t\t\t0.39633779217376785678 * a +\n\t\t\t0.21580375806075880339 * b,\n\t\t3\n\t);\n\tlet M = Math.pow(\n\t\tl * 1.0000000088817607767 -\n\t\t\t0.1055613423236563494 * a -\n\t\t\t0.063854174771705903402 * b,\n\t\t3\n\t);\n\tlet S = Math.pow(\n\t\tl * 1.0000000546724109177 -\n\t\t\t0.089484182094965759684 * a -\n\t\t\t1.2914855378640917399 * b,\n\t\t3\n\t);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t+4.076741661347994 * L -\n\t\t\t3.307711590408193 * M +\n\t\t\t0.230969928729428 * S,\n\t\tg:\n\t\t\t-1.2684380040921763 * L +\n\t\t\t2.6097574006633715 * M -\n\t\t\t0.3413193963102197 * S,\n\t\tb:\n\t\t\t-0.004196086541837188 * L -\n\t\t\t0.7034186144594493 * M +\n\t\t\t1.7076147009309444 * 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\tlet L = Math.cbrt(\n\t\t0.41222147079999993 * r + 0.5363325363 * g + 0.0514459929 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034981999999 * r + 0.6806995450999999 * g + 0.1073969566 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.08830246189999998 * r + 0.2817188376 * g + 0.6299787005000002 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl: 0.2104542553 * L + 0.793617785 * M - 0.0040720468 * S,\n\t\ta: 1.9779984951 * L - 2.428592205 * M + 0.4505937099 * S,\n\t\tb: 0.0259040371 * L + 0.7827717662 * M - 0.808675766 * 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","/**\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 { CSS_TO_CULORI, CULORI_TO_CSS, kebabCase, padStr, parseColor, pluralize, tokenToCulori } from \"./string-BZ5Le1WD.js\";\nimport wcmatch from \"wildcard-match\";\n\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/** Match token against globs */\nfunction isTokenMatch(tokenID, globPatterns) {\n\treturn wcmatch(globPatterns)(tokenID);\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/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\t}\n\t\t}\n\t}\n}\n\n//#endregion\nexport { CSS_TO_CULORI, CULORI_TO_CSS, getTokenMatch, isAlias, isTokenMatch, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };\n//# sourceMappingURL=index.js.map","import { CSS_TO_CULORI, kebabCase, parseColor, tokenToCulori } from \"./string-BZ5Le1WD.js\";\nimport { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHsv, modeHwb, modeLab, modeLch, modeLrgb, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, 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);\n}\nconst converters = {\n\ta98: useMode(modeA98),\n\thsl: useMode(modeHsl),\n\thsv: useMode(modeHsv),\n\thwb: useMode(modeHwb),\n\tlab: useMode(modeLab),\n\tlch: useMode(modeLch),\n\tlrgb: useMode(modeLrgb),\n\toklab: useMode(modeOklab),\n\toklch: useMode(modeOklch),\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};\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) {\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tconst converter = converters[conversionSpace];\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(converter(toGamut(\"rgb\", conversionSpace)(culoriColor))),\n\t\tp3: formatCss(converter(toGamut(\"p3\", conversionSpace)(culoriColor))),\n\t\trec2020: formatCss(converter(toGamut(\"rec2020\", conversionSpace)(culoriColor)))\n\t};\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\tconst inset = value?.inset === true ? \"inset\" : void 0;\n\treturn [\n\t\tinset,\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\t}\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\t}\n\t\t\tcase \"fontWeight\": {\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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\t}\n\t\t\tdefault: {\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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 { defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };\n//# sourceMappingURL=css.js.map","import type { CSSPluginOptions } from '@terrazzo/plugin-css';\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\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 map.has-key($_token, \"__tz-error\") {\n @error map.get($_token, \"__tz-error\");\n }\n @return map.get($_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 } from '@terrazzo/plugin-css';\nimport { isTokenMatch } from '@terrazzo/token-tools';\nimport { makeCSSVar } from '@terrazzo/token-tools/css';\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: FORMAT_ID, id: '*', mode: '.' });\n\n const output: string[] = [FILE_HEADER, ''];\n\n // main values\n output.push('$__token-values: (');\n for (const token of tokens) {\n if (isTokenMatch(token.token.id, options?.exclude ?? [])) {\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', 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 build from './build.js';\nimport 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 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],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["parseNumber","parseNumber_default","named","named_default","parseNamed","parseNamed_default","hex","parseHex","parseHex_default","num$1","num_none","per","per_none","num_per","num_per_none","hue$1","hue_none","c","rx_num_per_none","rgb_num_old","rgb_per_old","parseRgbLegacy","parseRgbLegacy_default","prepare","_prepare_default","converter","converters$1","converter_default","modes","parsers","colorProfiles","identity","useMode","definition$15","k$2","getMode","useParser","IdentStartCodePoint","IdentCodePoint","Tok","_i","is_num","is_ident","huenits","num","digits","ident","identlike","tokenize","parseColorSyntax","c$1","consumeCoords","parseModernSyntax","parse","parse_default","parseRgb","parseRgb_default","parseTransparent","parseTransparent_default","lerp","get_classes","interpolatorPiecewise","interpolatorLinear","fixupAlpha","definition$14","definition_default$12","linearize$2","convertA98ToXyz65","convertA98ToXyz65_default","gamma$2","convertXyz65ToA98","convertXyz65ToA98_default","fn$2","convertRgbToLrgb","convertRgbToLrgb_default","convertRgbToXyz65","convertRgbToXyz65_default","fn$1","convertLrgbToRgb","convertLrgbToRgb_default","convertXyz65ToRgb","convertXyz65ToRgb_default","definition$13","definition_default","normalizeHue","hue$2","normalizeHue_default","convertHslToRgb","convertRgbToHsl","hueToDeg","hue_default","hsl_old","parseHslLegacy","parseHslLegacy_default","parseHsl","parseHsl_default","hue","fn$3","fixupHueShorter","differenceHueSaturation","differenceHueNaive","differenceHueChroma","averageAngle","definition$12","definition_default$1","convertHsvToRgb","f$1","convertRgbToHsv","definition$11","definition_default$2","convertHwbToRgb","convertRgbToHwb","ParseHwb","parseHwb_default","definition$10","definition_default$3","k","e","D50","D65","k$1","e$1","fn","convertLabToXyz50","convertLabToXyz50_default","convertXyz50ToRgb","convertXyz50ToRgb_default","convertLabToRgb","convertLabToRgb_default","convertRgbToXyz50","convertRgbToXyz50_default","f","convertXyz50ToLab","convertXyz50ToLab_default","convertRgbToLab","convertRgbToLab_default","parseLab","parseLab_default","definition$9","definition_default$4","convertLabToLch","convertLabToLch_default","convertLchToLab","convertLchToLab_default","parseLch","parseLch_default","definition$8","definition_default$5","definition$7","definition_default$6","convertOklabToLrgb","convertOklabToLrgb_default","convertLrgbToOklab","convertLrgbToOklab_default","convertRgbToOklab","convertRgbToOklab_default","convertOklabToRgb","convertOklabToRgb_default","parseOklab","parseOklab_default","definition$6","definition_default$7","parseOklch","parseOklch_default","definition$5","definition_default$8","convertP3ToXyz65","convertP3ToXyz65_default","convertXyz65ToP3","convertXyz65ToP3_default","definition$4","definition_default$9","gamma$1","convertXyz50ToProphoto","convertXyz50ToProphoto_default","linearize$1","convertProphotoToXyz50","convertProphotoToXyz50_default","definition$3","definition_default$10","α$1","β$1","gamma","convertXyz65ToRec2020","convertXyz65ToRec2020_default","α","β","linearize","convertRec2020ToXyz65","convertRec2020ToXyz65_default","definition$2","definition_default$11","definition$1","definition_default$13","convertXyz65ToXyz50","convertXyz65ToXyz50_default","convertXyz50ToXyz65","convertXyz50ToXyz65_default","definition","definition_default$14","converters","named","num","hue","num","converters","converters","definition","k","c","r","c","definition","parseRgb","parseHex","parseRgbLegacy","parseNamed","parseTransparent","linearize","r","gamma","fn","c","r","rgb","r","fn","c","r","definition","rgb","convertXyz65ToA98","convertA98ToXyz65","hue","r","hue","fn","hue","sum","val","definition","parseHsl","parseHslLegacy","c","f","r","definition","definition","parseHwb","c","k","e","rgb","r","rgb","definition","convertLabToXyz50","convertLabToRgb","convertXyz50ToLab","convertRgbToLab","parseLab","c","c","c","c","definition","convertLchToLab","c","convertLabToLch","parseLch","definition","rgb","convertLrgbToRgb","convertRgbToLrgb","r","rgb","c","definition","lab","convertOklabToLrgb","convertOklabToRgb","convertLrgbToOklab","convertRgbToOklab","parseOklab","c","c","definition","lch","c","parseOklch","rgb","r","definition","rgb","convertXyz65ToP3","convertP3ToXyz65","gamma","linearize","r","definition","rgb","convertXyz50ToProphoto","convertProphotoToXyz50","α","β","r","definition","rgb","convertXyz65ToRec2020","convertRec2020ToXyz65","definition","convertXyz50ToRgb","convertXyz50ToLab","convertRgbToXyz50","convertLabToXyz50","convertXyz65ToRgb","convertXyz65ToXyz50","convertRgbToXyz65","convertXyz50ToXyz65","modeA98","modeHsl","modeHsv","modeHwb","modeLab","modeLch","modeLrgb","modeOklab","modeOklch","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyz50","modeXyz65","c","fn","output: string[]","options?: SassPluginOptions"],"sources":["../../plugin-css/dist/index.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseNumber.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/colors/named.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseNamed.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseHex.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/util/regex.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseRgbLegacy.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/_prepare.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/converter.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/modes.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/parse.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseTransparent.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/interpolate/lerp.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/interpolate/piecewise.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/interpolate/linear.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/fixup/alpha.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/a98/convertA98ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/a98/convertXyz65ToA98.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/convertRgbToLrgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertRgbToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/convertLrgbToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/a98/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/util/normalizeHue.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/convertHslToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/convertRgbToHsl.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/util/hue.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/parseHslLegacy.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/parseHsl.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/fixup/hue.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/difference.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/average.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsl/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsv/convertHsvToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsv/convertRgbToHsv.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hsv/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/convertHwbToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/convertRgbToHwb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/parseHwb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/constants.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/constants.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertLabToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertLabToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/convertRgbToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertXyz50ToLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/convertRgbToLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/parseLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lab/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/convertLabToLch.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/convertLchToLab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/parseLch.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lch/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertOklabToLrgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertLrgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertRgbToOklab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/convertOklabToRgb.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/parseOklab.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklab/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklch/parseOklch.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklch/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/convertP3ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/convertXyz65ToP3.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/definition.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/definition.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.1/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.1/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.1/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.1/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.1/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 = new RegExp(\"^\" + num_per_none + \"$\");\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rgb/parseRgbLegacy.js\nconst rgb_num_old = new RegExp(`^rgba?\\\\(\\\\s*${num$1}${c}${num$1}${c}${num$1}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`);\nconst rgb_per_old = 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 void 0;\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.1/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.1/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.1/node_modules/culori/src/modes.js\nconst converters$1 = {};\nconst modes = {};\nconst parsers = [];\nconst colorProfiles = {};\nconst identity = (v) => v;\nconst useMode = (definition$15) => {\n\tconverters$1[definition$15.mode] = {\n\t\t...converters$1[definition$15.mode],\n\t\t...definition$15.toMode\n\t};\n\tObject.keys(definition$15.fromMode || {}).forEach((k$2) => {\n\t\tif (!converters$1[k$2]) converters$1[k$2] = {};\n\t\tconverters$1[k$2][definition$15.mode] = definition$15.fromMode[k$2];\n\t});\n\tif (!definition$15.ranges) definition$15.ranges = {};\n\tif (!definition$15.difference) definition$15.difference = {};\n\tdefinition$15.channels.forEach((channel) => {\n\t\tif (definition$15.ranges[channel] === void 0) definition$15.ranges[channel] = [0, 1];\n\t\tif (!definition$15.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);\n\t\tif (typeof definition$15.interpolate[channel] === \"function\") definition$15.interpolate[channel] = { use: definition$15.interpolate[channel] };\n\t\tif (!definition$15.interpolate[channel].fixup) definition$15.interpolate[channel].fixup = identity;\n\t});\n\tmodes[definition$15.mode] = definition$15;\n\t(definition$15.parse || []).forEach((parser) => {\n\t\tuseParser(parser, definition$15.mode);\n\t});\n\treturn converter_default(definition$15.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.1/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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\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 void 0;\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) return void 0;\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) return void 0;\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) return void 0;\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 void 0;\n\t\t\tcontinue;\n\t\t}\n\t\treturn void 0;\n\t}\n\tif (coords.length < 3 || coords.length > 4) return void 0;\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) return void 0;\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 void 0;\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) return void 0;\n\tcoords.unshift(token.value);\n\treturn coords;\n}\nconst parse = (color) => {\n\tif (typeof color !== \"string\") return void 0;\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.1/node_modules/culori/src/rgb/parseRgb.js\nfunction parseRgb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"rgb\" && parsed[0] !== \"rgba\") return void 0;\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 void 0;\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.1/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.1/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.1/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.1/node_modules/culori/src/interpolate/linear.js\nconst interpolatorLinear = interpolatorPiecewise(lerp);\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/node_modules/culori/src/rgb/definition.js\nconst definition$14 = {\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$14;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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) => {\n\tlet r$1 = linearize$2(a98.r);\n\tlet g = linearize$2(a98.g);\n\tlet b = linearize$2(a98.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.alpha !== void 0) res.alpha = a98.alpha;\n\treturn res;\n};\nvar convertA98ToXyz65_default = convertA98ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/node_modules/culori/src/lrgb/convertRgbToLrgb.js\nconst fn$2 = (c$1 = 0) => {\n\tconst abs = Math.abs(c$1);\n\tif (abs <= .04045) return c$1 / 12.92;\n\treturn (Math.sign(c$1) || 1) * Math.pow((abs + .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$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 convertRgbToLrgb_default = convertRgbToLrgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertRgbToXyz65.js\nconst convertRgbToXyz65 = (rgb$2) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);\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.1/node_modules/culori/src/lrgb/convertLrgbToRgb.js\nconst fn$1 = (c$1 = 0) => {\n\tconst abs = Math.abs(c$1);\n\tif (abs > .0031308) return (Math.sign(c$1) || 1) * (1.055 * Math.pow(abs, 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$1(r$1),\n\t\tg: fn$1(g),\n\t\tb: fn$1(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.1/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.1/node_modules/culori/src/a98/definition.js\nconst definition$13 = {\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$13;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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.1/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 = Math.max(r$1, g, b), m = Math.min(r$1, 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: .5 * (M + m)\n\t};\n\tif (M - m !== 0) res.h = (M === r$1 ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r$1) / (M - m) + 2 : (r$1 - g) / (M - 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.1/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.1/node_modules/culori/src/hsl/parseHslLegacy.js\nconst hsl_old = 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.1/node_modules/culori/src/hsl/parseHsl.js\nfunction parseHsl(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hsl\" && parsed[0] !== \"hsla\") return void 0;\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 void 0;\n\t\tres.h = h.value;\n\t}\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) return void 0;\n\t\tres.s = s.value / 100;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) return void 0;\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.1/node_modules/culori/src/fixup/hue.js\nconst hue = (hues, fn$3) => {\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$3(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.1/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$2, idx) => {\n\t\t\tlet delta = diffs[k$2] ? diffs[k$2](ConvStd, ConvSmp) : ConvStd[k$2] - ConvSmp[k$2];\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.1/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.1/node_modules/culori/src/hsl/definition.js\nconst definition$12 = {\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$12;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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$1 = 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$1),\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$1),\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$1)\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$1),\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$1),\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$1)\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.1/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 = Math.max(r$1, g, b), m = Math.min(r$1, 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) res.h = (M === r$1 ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r$1) / (M - m) + 2 : (r$1 - g) / (M - 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.1/node_modules/culori/src/hsv/definition.js\nconst definition$11 = {\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$2 = definition$11;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/node_modules/culori/src/hwb/convertRgbToHwb.js\nfunction convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === void 0) return void 0;\n\tlet s = hsv.s !== void 0 ? hsv.s : 0;\n\tlet v = hsv.v !== void 0 ? 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 !== void 0) res.h = hsv.h;\n\tif (hsv.alpha !== void 0) res.alpha = hsv.alpha;\n\treturn res;\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/hwb/parseHwb.js\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== \"hwb\") return void 0;\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 void 0;\n\t\tres.h = h.value;\n\t}\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) return void 0;\n\t\tres.w = w.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) return void 0;\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.1/node_modules/culori/src/hwb/definition.js\nconst definition$10 = {\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$3 = definition$10;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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$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.1/node_modules/culori/src/lab/convertLabToXyz50.js\nlet fn = (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(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(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.1/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.1/node_modules/culori/src/lab/convertLabToRgb.js\nconst convertLabToRgb = (lab) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab));\nvar convertLabToRgb_default = convertLabToRgb;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/convertRgbToXyz50.js\nconst convertRgbToXyz50 = (rgb$2) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);\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.1/node_modules/culori/src/lab/convertXyz50ToLab.js\nconst f = (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(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(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.1/node_modules/culori/src/lab/convertRgbToLab.js\nconst convertRgbToLab = (rgb$2) => {\n\tlet res = convertXyz50ToLab_default(convertRgbToXyz50_default(rgb$2));\n\tif (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.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.1/node_modules/culori/src/lab/parseLab.js\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lab\") return void 0;\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 void 0;\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.1/node_modules/culori/src/lab/definition.js\nconst definition$9 = {\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: [-100, 100],\n\t\tb: [-100, 100]\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$4 = definition$9;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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.1/node_modules/culori/src/lch/parseLch.js\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"lch\") return void 0;\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 void 0;\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 void 0;\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.1/node_modules/culori/src/lch/definition.js\nconst definition$8 = {\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$8;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/lrgb/definition.js\nconst definition$7 = {\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$7;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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 * .9999999984505198 + .39633779217376786 * a + .2158037580607588 * b, 3);\n\tlet M = Math.pow(l * 1.0000000088817609 - .10556134232365635 * a - .06385417477170591 * b, 3);\n\tlet S = Math.pow(l * 1.0000000546724108 - .08948418209496575 * a - 1.2914855378640917 * b, 3);\n\tlet res = {\n\t\tmode: \"lrgb\",\n\t\tr: 4.076741661347994 * L - 3.307711590408193 * M + .230969928729428 * S,\n\t\tg: -1.2684380040921763 * L + 2.6097574006633715 * M - .3413193963102197 * S,\n\t\tb: -.004196086541837188 * L - .7034186144594493 * M + 1.7076147009309444 * 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.1/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(.41222147079999993 * r$1 + .5363325363 * g + .0514459929 * b);\n\tlet M = Math.cbrt(.2119034981999999 * r$1 + .6806995450999999 * g + .1073969566 * b);\n\tlet S = Math.cbrt(.08830246189999998 * r$1 + .2817188376 * g + .6299787005000002 * b);\n\tlet res = {\n\t\tmode: \"oklab\",\n\t\tl: .2104542553 * L + .793617785 * M - .0040720468 * S,\n\t\ta: 1.9779984951 * L - 2.428592205 * M + .4505937099 * S,\n\t\tb: .0259040371 * L + .7827717662 * M - .808675766 * 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.1/node_modules/culori/src/oklab/convertRgbToOklab.js\nconst convertRgbToOklab = (rgb$2) => {\n\tlet res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$2));\n\tif (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.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.1/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.1/node_modules/culori/src/oklab/parseOklab.js\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklab\") return void 0;\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 void 0;\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.1/node_modules/culori/src/oklab/definition.js\nconst definition$6 = {\n\t...definition_default$4,\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$6;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/oklch/parseOklch.js\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== \"oklch\") return void 0;\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 void 0;\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 void 0;\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.1/node_modules/culori/src/oklch/definition.js\nconst definition$5 = {\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$5;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/p3/convertP3ToXyz65.js\nconst convertP3ToXyz65 = (rgb$2) => {\n\tlet { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);\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.1/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.1/node_modules/culori/src/p3/definition.js\nconst definition$4 = {\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$4;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js\nconst gamma$1 = (v) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) return Math.sign(v) * Math.pow(abs, 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.1/node_modules/culori/src/prophoto/convertProphotoToXyz50.js\nconst linearize$1 = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) return Math.sign(v) * Math.pow(abs, 1.8);\n\treturn v / 16;\n};\nconst convertProphotoToXyz50 = (prophoto) => {\n\tlet r$1 = linearize$1(prophoto.r);\n\tlet g = linearize$1(prophoto.g);\n\tlet b = linearize$1(prophoto.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.alpha !== void 0) res.alpha = prophoto.alpha;\n\treturn res;\n};\nvar convertProphotoToXyz50_default = convertProphotoToXyz50;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/prophoto/definition.js\nconst definition$3 = {\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$3;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js\nconst α$1 = 1.09929682680944;\nconst β$1 = .018053968510807;\nconst gamma = (v) => {\n\tconst abs = Math.abs(v);\n\tif (abs > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs, .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.1/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js\nconst α = 1.09929682680944;\nconst β = .018053968510807;\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) return v / 4.5;\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / .45);\n};\nconst convertRec2020ToXyz65 = (rec2020) => {\n\tlet r$1 = 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: .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.alpha !== void 0) res.alpha = rec2020.alpha;\n\treturn res;\n};\nvar convertRec2020ToXyz65_default = convertRec2020ToXyz65;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/rec2020/definition.js\nconst definition$2 = {\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$2;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz50/definition.js\nconst definition$1 = {\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$1;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js\nconst convertXyz65ToXyz50 = (xyz65) => {\n\tlet { x, y, z, alpha } = xyz65;\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.1/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js\nconst convertXyz50ToXyz65 = (xyz50) => {\n\tlet { x, y, z, alpha } = xyz50;\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.1/node_modules/culori/src/xyz65/definition.js\nconst definition = {\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;\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/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.1/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$1 = converter_default(\"rgb\");\nconst hsl = converter_default(\"hsl\");\nconst serializeHex = (color) => {\n\tif (color === void 0) return void 0;\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 void 0;\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 void 0;\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\treturn void 0;\n};\nconst formatHex = (c$1) => serializeHex(rgb$1(c$1));\nconst formatHex8 = (c$1) => serializeHex8(rgb$1(c$1));\n\n//#endregion\n//#region ../../node_modules/.pnpm/culori@4.0.1/node_modules/culori/src/clamp.js\nconst rgb = 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(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 void 0;\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\treturn (color) => {\n\t\tcolor = _prepare_default(color);\n\t\tif (color === void 0) return void 0;\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-BZ5Le1WD.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\",\n\thsl: \"hsl\",\n\thsv: \"hsv\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlch: \"lch\",\n\tlrgb: \"srgb-linear\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\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\ta98: \"a98\",\n\t\"display-p3\": \"p3\",\n\thsl: \"hsl\",\n\thsv: \"hsv\",\n\thwb: \"hwb\",\n\tlab: \"lab\",\n\tlch: \"lch\",\n\toklab: \"oklab\",\n\toklch: \"oklch\",\n\t\"prophoto-rgb\": \"prophoto\",\n\trec2020: \"rec2020\",\n\tsrgb: \"rgb\",\n\t\"srgb-linear\": \"lrgb\",\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\t}\n\t\tcase \"hsl\": {\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.s,\n\t\t\t\tresult.l\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"hsv\": {\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\t}\n\t\tcase \"hwb\": {\n\t\t\tcomponents = [\n\t\t\t\tresult.h ?? 0,\n\t\t\t\tresult.w,\n\t\t\t\tresult.b\n\t\t\t];\n\t\t\tbreak;\n\t\t}\n\t\tcase \"lab\":\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\t}\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\t}\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\t}\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\":\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\treturn {\n\t\t\t\tmode: \"hsl\",\n\t\t\t\th,\n\t\t\t\ts,\n\t\t\t\tl,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"hsv\": {\n\t\t\tconst [h, s, v] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"hsv\",\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 \"hwb\": {\n\t\t\tconst [h, w, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"hwb\",\n\t\t\t\th,\n\t\t\t\tw,\n\t\t\t\tb,\n\t\t\t\talpha: value.alpha\n\t\t\t};\n\t\t}\n\t\tcase \"lab\":\n\t\tcase \"oklab\": {\n\t\t\tconst [l, a, b] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: 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 \"xyz-d50\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"xyz50\",\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\tcase \"xyz-d65\": {\n\t\t\tconst [x, y, z] = value.components;\n\t\t\treturn {\n\t\t\t\tmode: \"xyz65\",\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}\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) {\n\t\t\treturn \"^\".concat(transform(p, 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$3 = isMatch.bind(null, regexp);\n\tfn$3.options = options;\n\tfn$3.pattern = pattern;\n\tfn$3.regexp = regexp;\n\treturn fn$3;\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\t}\n\t\t}\n\t}\n}\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) => 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/** 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);\n}\nconst converters = {\n\ta98: useMode(definition_default),\n\thsl: useMode(definition_default$1),\n\thsv: useMode(definition_default$2),\n\thwb: useMode(definition_default$3),\n\tlab: 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\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};\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) {\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tconst converter$1 = converters[conversionSpace];\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(converter$1(toGamut(\"rgb\", conversionSpace)(culoriColor))),\n\t\tp3: formatCss(converter$1(toGamut(\"p3\", conversionSpace)(culoriColor))),\n\t\trec2020: formatCss(converter$1(toGamut(\"rec2020\", conversionSpace)(culoriColor)))\n\t};\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\tconst inset = value?.inset === true ? \"inset\" : void 0;\n\treturn [\n\t\tinset,\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\t}\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\t}\n\t\t\tcase \"fontWeight\": {\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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\t}\n\t\t\tdefault: {\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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$2, v] of declarations) output.push(`${indent}${k$2}: ${v};`);\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 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\t}\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\": `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\t}\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\t}\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$2 of Object.keys(token.value)) declarations[k$2] = makeCSSVar(`${token.localID ?? token.token.id}-${k$2}`, { 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\t}\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\t}\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\t}\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: `-webkit-linear-gradient(${value})`,\n\t\t\t\t\t\t\t\t\t\"-webkit-background-clip\": \"text\",\n\t\t\t\t\t\t\t\t\t\"-webkit-text-fill-color\": \"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\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\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\t}\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 }) {\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\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] = token.value;\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\trootRule.declarations[localID] = token.value.srgb;\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tp3Rule.declarations[localID] = token.value.p3;\n\t\t\t\t\trec2020Rule.declarations[localID] = token.value.rec2020;\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] ??= alias.value;\n\t\t\t\t\t\trec2020Rule.declarations[alias.localID] ??= alias.value;\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] = shorthand;\n\t\t\t\tfor (const [name, value] of Object.entries(token.value)) rootRule.declarations[name === \".\" ? localID : [localID, name].join(\"-\")] = value;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const { selectors, tokens, mode } 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\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] = token.value;\n\t\t\telse if (token.value.srgb && token.value.p3 && token.value.rec2020) {\n\t\t\t\tselectorRule.declarations[localID] = token.value.srgb;\n\t\t\t\tif (token.value.p3 !== token.value.srgb) {\n\t\t\t\t\tselectorP3Rule.declarations[localID] = token.value.p3;\n\t\t\t\t\tselectorRec2020Rule.declarations[localID] = token.value.rec2020;\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] ??= alias.value;\n\t\t\t\t\t\tselectorRec2020Rule.declarations[alias.localID] ??= alias.value;\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] = shorthand;\n\t\t\t\tfor (const [name, subvalue] of Object.entries(token.value)) selectorRule.declarations[`${localID}-${name}`] = subvalue;\n\t\t\t}\n\t\t\tfor (const alias of aliasTokens) if (alias.localID && typeof alias.value === \"string\") selectorAliasDeclarations[alias.localID] = alias.value;\n\t\t}\n\t\tfor (const [name, value] of Object.entries(selectorAliasDeclarations)) selectorRule.declarations[name] ??= value;\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 } = 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\tconst cssTokens = getTransforms({\n\t\t\t\tformat: FORMAT_ID,\n\t\t\t\tid: \"*\",\n\t\t\t\tmode: \"*\"\n\t\t\t});\n\t\t\tif (cssTokens.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});\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) setTransform(id, {\n\t\t\t\t\t\tformat: FORMAT_ID,\n\t\t\t\t\t\tlocalID,\n\t\t\t\t\t\tvalue: transformedValue,\n\t\t\t\t\t\tmode\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}), \"\\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: [-100, 100],\n\t\tb: [-100, 100]\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","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 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\tlet L = Math.pow(\n\t\tl * 0.99999999845051981432 +\n\t\t\t0.39633779217376785678 * a +\n\t\t\t0.21580375806075880339 * b,\n\t\t3\n\t);\n\tlet M = Math.pow(\n\t\tl * 1.0000000088817607767 -\n\t\t\t0.1055613423236563494 * a -\n\t\t\t0.063854174771705903402 * b,\n\t\t3\n\t);\n\tlet S = Math.pow(\n\t\tl * 1.0000000546724109177 -\n\t\t\t0.089484182094965759684 * a -\n\t\t\t1.2914855378640917399 * b,\n\t\t3\n\t);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t+4.076741661347994 * L -\n\t\t\t3.307711590408193 * M +\n\t\t\t0.230969928729428 * S,\n\t\tg:\n\t\t\t-1.2684380040921763 * L +\n\t\t\t2.6097574006633715 * M -\n\t\t\t0.3413193963102197 * S,\n\t\tb:\n\t\t\t-0.004196086541837188 * L -\n\t\t\t0.7034186144594493 * M +\n\t\t\t1.7076147009309444 * 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\tlet L = Math.cbrt(\n\t\t0.41222147079999993 * r + 0.5363325363 * g + 0.0514459929 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034981999999 * r + 0.6806995450999999 * g + 0.1073969566 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.08830246189999998 * r + 0.2817188376 * g + 0.6299787005000002 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl: 0.2104542553 * L + 0.793617785 * M - 0.0040720468 * S,\n\t\ta: 1.9779984951 * L - 2.428592205 * M + 0.4505937099 * S,\n\t\tb: 0.0259040371 * L + 0.7827717662 * M - 0.808675766 * 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","import { CSS_TO_CULORI, kebabCase, parseColor, tokenToCulori } from \"./string-BZ5Le1WD.js\";\nimport { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHsv, modeHwb, modeLab, modeLch, modeLrgb, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, 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);\n}\nconst converters = {\n\ta98: useMode(modeA98),\n\thsl: useMode(modeHsl),\n\thsv: useMode(modeHsv),\n\thwb: useMode(modeHwb),\n\tlab: useMode(modeLab),\n\tlch: useMode(modeLch),\n\tlrgb: useMode(modeLrgb),\n\toklab: useMode(modeOklab),\n\toklch: useMode(modeOklch),\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};\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) {\n\tconst conversionSpace = CSS_TO_CULORI[$value.colorSpace] || \"oklab\";\n\tconst converter = converters[conversionSpace];\n\treturn {\n\t\t\".\": formatCss(culoriColor),\n\t\tsrgb: formatCss(converter(toGamut(\"rgb\", conversionSpace)(culoriColor))),\n\t\tp3: formatCss(converter(toGamut(\"p3\", conversionSpace)(culoriColor))),\n\t\trec2020: formatCss(converter(toGamut(\"rec2020\", conversionSpace)(culoriColor)))\n\t};\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\tconst inset = value?.inset === true ? \"inset\" : void 0;\n\treturn [\n\t\tinset,\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\t}\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\t}\n\t\t\tcase \"fontWeight\": {\n\t\t\t\ttransformedValue = transformFontWeight({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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\t}\n\t\t\tdefault: {\n\t\t\t\ttransformedValue = transformString({ $value: subvalue }, options);\n\t\t\t\tbreak;\n\t\t\t}\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 { defaultAliasTransform, generateShorthand, makeCSSVar, 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 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\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 map.has-key($_token, \"__tz-error\") {\n @error map.get($_token, \"__tz-error\");\n }\n @return map.get($_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 } 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: 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', 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 build from './build.js';\nimport 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 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,79],"mappings":"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"}
|