@d3plus/color 3.0.0-alpha.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d3plus-color.full.js","sources":["../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../src/add.js","../../../node_modules/internmap/src/index.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/ordinal.js","../src/defaults.js","../src/assign.js","../src/contrast.js","../src/legible.js","../src/lighter.js","../src/subtract.js"],"sourcesContent":["export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorAdd\n @desc Adds two colors together.\n @param {String} c1 The first color, a valid CSS color string.\n @param {String} c2 The second color, also a valid CSS color string.\n @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.\n @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.\n @returns {String}\n*/\nexport default function(c1, c2, o1 = 1, o2 = 1) {\n c1 = hsl(c1);\n c2 = hsl(c2);\n let d = Math.abs(c2.h * o2 - c1.h * o1);\n if (d > 180) d -= 360;\n let h = (Math.min(c1.h, c2.h) + d / 2) % 360;\n const l = c1.l + (c2.l * o2 - c1.l * o1) / 2,\n s = c1.s + (c2.s * o2 - c1.s * o1) / 2;\n // a = o1 + (o2 - o1) / 2;\n if (h < 0) h += 360;\n return hsl(`hsl(${h},${s * 100}%,${l * 100}%)`).toString();\n // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {scaleOrdinal} from \"d3-scale\";\n\n/**\n @namespace {Object} colorDefaults\n @desc A set of default color values used when assigning colors based on data.\n *\n * | Name | Default | Description |\n * |---|---|---|\n * | dark | \"#555555\" | Used in the [contrast](#contrast) function when the color given is very light. |\n * | light | \"#f7f7f7\" | Used in the [contrast](#contrast) function when the color given is very dark. |\n * | missing | \"#cccccc\" | Used in the [assign](#assign) function when the value passed is `null` or `undefined`. |\n * | off | \"#C44536\" | Used in the [assign](#assign) function when the value passed is `false`. |\n * | on | \"#6A994E\" | Used in the [assign](#assign) function when the value passed is `true`. |\n * | scale | \"#4281A4\", \"#F6AE2D\", \"#C44536\", \"#2A9D8F\", \"#6A994E\", \"#CEB54A\", \"#5E548E\", \"#C08497\", \"#99582A\", \"#8C8C99\", \"#1D3557\", \"#D08C60\", \"#6D2E46\", \"#8BB19C\", \"#52796F\", \"#5E60CE\", \"#985277\", \"#5C374C\" | An ordinal scale used in the [assign](#assign) function for non-valid color strings and numbers. |\n*/\nconst defaults = {\n dark: \"#555555\",\n light: \"#f7f7f7\",\n missing: \"#cccccc\",\n off: \"#C44536\",\n on: \"#6A994E\",\n scale: scaleOrdinal().range([\n \"#4281A4\",\n \"#F6AE2D\",\n \"#C44536\",\n \"#2A9D8F\",\n \"#6A994E\",\n \"#CEB54A\",\n \"#5E548E\",\n \"#C08497\",\n \"#99582A\",\n \"#8C8C99\",\n \"#1D3557\",\n \"#D08C60\",\n \"#6D2E46\",\n \"#8BB19C\",\n \"#52796F\",\n \"#5E60CE\",\n \"#985277\",\n \"#5C374C\"\n ])\n};\n\n/**\n Returns a color based on a key, whether it is present in a user supplied object or in the default object.\n @returns {String}\n @private\n*/\nexport function getColor(k, u = {}) {\n return k in u ? u[k] : k in defaults ? defaults[k] : defaults.missing;\n}\n\nexport default defaults;\n","import {color} from \"d3-color\";\nimport {getColor} from \"./defaults.js\";\n\n/**\n @function colorAssign\n @desc Assigns a color to a value using a predefined set of defaults.\n @param {String} c A valid CSS color string.\n @param {Object} [u = defaults] An object containing overrides of the default colors.\n @returns {String}\n*/\nexport default function(c, u = {}) {\n\n // If the value is null or undefined, set to grey.\n if ([null, void 0].indexOf(c) >= 0) return getColor(\"missing\", u);\n // Else if the value is true, set to green.\n else if (c === true) return getColor(\"on\", u);\n // Else if the value is false, set to red.\n else if (c === false) return getColor(\"off\", u);\n\n const p = color(c);\n // If the value is not a valid color string, use the color scale.\n if (!p) return getColor(\"scale\", u)(c);\n\n return c.toString();\n\n}\n","import {getColor} from \"./defaults.js\";\nimport {rgb} from \"d3-color\";\n\n/**\n @function colorContrast\n @desc A set of default color values used when assigning colors based on data.\n @param {String} c A valid CSS color string.\n @param {Object} [u = defaults] An object containing overrides of the default colors.\n @returns {String}\n*/\nexport default function(c, u = {}) {\n c = rgb(c);\n const yiq = (c.r * 299 + c.g * 587 + c.b * 114) / 1000;\n return yiq >= 128 ? getColor(\"dark\", u) : getColor(\"light\", u);\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorLegible\n @desc Darkens a color so that it will appear legible on a white background.\n @param {String} c A valid CSS color string.\n @returns {String}\n*/\nexport default function(c) {\n c = hsl(c);\n if (c.l > 0.45) {\n if (c.s > 0.8) c.s = 0.8;\n c.l = 0.45;\n }\n return c.toString();\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorLighter\n @desc Similar to d3.color.brighter, except that this also reduces saturation so that colors don't appear neon.\n @param {String} c A valid CSS color string.\n @param {String} [i = 0.5] A value from 0 to 1 dictating the strength of the function.\n @returns {String}\n*/\nexport default function(c, i = 0.5) {\n c = hsl(c);\n i *= 1 - c.l;\n c.l += i;\n c.s -= i;\n return c.toString();\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorSubtract\n @desc Subtracts one color from another.\n @param {String} c1 The base color, a valid CSS color string.\n @param {String} c2 The color to remove from the base color, also a valid CSS color string.\n @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.\n @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.\n @returns {String}\n*/\nexport default function(c1, c2, o1 = 1, o2 = 1) {\n c1 = hsl(c1);\n c2 = hsl(c2);\n let d = c2.h * o2 - c1.h * o1;\n if (Math.abs(d) > 180) d -= 360;\n let h = (c1.h - d) % 360;\n const l = c1.l - (c2.l * o2 - c1.l * o1) / 2,\n s = c1.s - (c2.s * o2 - c1.s * o1) / 2;\n // a = o1 - (o2 - o1) / 2;\n if (h < 0) h += 360;\n return hsl(`hsl(${h},${s * 100}%,${l * 100}%)`).toString();\n // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();\n}\n"],"names":["constructor","factory","prototype","extend","parent","definition","Object","create","key","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","define","color","copy","channels","assign","displayable","rgb","hex","color_formatHex","formatHex","formatHex8","color_formatHex8","formatHsl","color_formatHsl","formatRgb","color_formatRgb","toString","hslConvert","format","m","l","trim","toLowerCase","exec","length","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","NaN","n","r","g","b","a","rgbConvert","o","opacity","arguments","k","Math","pow","clamp","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","isNaN","max","min","value","round","h","s","Hsl","hsl","m2","m1","hsl2rgb","clamph","clampt","c1","c2","o1","o2","d","abs","InternMap","Map","get","intern_get","has","set","intern_set","delete","intern_delete","entries","keyof","defineProperties","_intern","_key","valueOf","initRange","domain","range","implicit","Symbol","ordinal","index","unknown","scale","i","undefined","push","_","slice","Array","from","apply","defaults","dark","light","missing","off","on","scaleOrdinal","getColor","u","c","indexOf","p","yiq"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAe,eAASA,CAAAA,WAAW,EAAEC,OAAO,EAAEC,SAAS,EAAA;EACrDF,IAAAA,WAAAA,CAAYE,SAAS,GAAGD,OAAQC,CAAAA,SAAS,GAAGA,SAAAA;EAC5CA,IAAAA,SAAAA,CAAUF,WAAW,GAAGA,WAAAA;EAC1B;EAEO,SAASG,MAAAA,CAAOC,MAAM,EAAEC,UAAU,EAAA;EACvC,IAAA,IAAIH,SAAYI,GAAAA,MAAAA,CAAOC,MAAM,CAACH,OAAOF,SAAS,CAAA;MAC9C,IAAK,IAAIM,OAAOH,UAAYH,CAAAA,SAAS,CAACM,GAAI,CAAA,GAAGH,UAAU,CAACG,GAAI,CAAA;MAC5D,OAAON,SAAAA;EACT;;ECPO,SAASO,KAAS,GAAA;EAElB,IAAIC,SAAS,GAAI;EACjB,IAAIC,QAAW,GAAA,CAAA,GAAID,MAAO;EAEjC,IAAIE,GAAAA,GAAM,qBACNC,EAAAA,GAAAA,GAAM,mDACNC,EAAAA,GAAAA,GAAM,sDACNC,KAAQ,GAAA,oBAAA,EACRC,YAAe,GAAA,IAAIC,MAAO,CAAA,CAAC,OAAO,EAAEL,GAAAA,CAAI,CAAC,EAAEA,GAAI,CAAA,CAAC,EAAEA,GAAI,CAAA,IAAI,CAAC,CAAA,EAC3DM,YAAe,GAAA,IAAID,OAAO,CAAC,OAAO,EAAEH,GAAAA,CAAI,CAAC,EAAEA,IAAI,CAAC,EAAEA,GAAI,CAAA,IAAI,CAAC,CAAA,EAC3DK,gBAAgB,IAAIF,MAAAA,CAAO,CAAC,QAAQ,EAAEL,GAAAA,CAAI,CAAC,EAAEA,GAAI,CAAA,CAAC,EAAEA,GAAAA,CAAI,CAAC,EAAEC,IAAI,IAAI,CAAC,CACpEO,EAAAA,aAAAA,GAAgB,IAAIH,MAAAA,CAAO,CAAC,QAAQ,EAAEH,GAAI,CAAA,CAAC,EAAEA,GAAAA,CAAI,CAAC,EAAEA,GAAAA,CAAI,CAAC,EAAED,GAAI,CAAA,IAAI,CAAC,CAAA,EACpEQ,YAAe,GAAA,IAAIJ,MAAO,CAAA,CAAC,OAAO,EAAEJ,IAAI,CAAC,EAAEC,GAAI,CAAA,CAAC,EAAEA,GAAAA,CAAI,IAAI,CAAC,CAAA,EAC3DQ,aAAgB,GAAA,IAAIL,MAAO,CAAA,CAAC,QAAQ,EAAEJ,GAAAA,CAAI,CAAC,EAAEC,GAAI,CAAA,CAAC,EAAEA,GAAAA,CAAI,CAAC,EAAED,GAAI,CAAA,IAAI,CAAC,CAAA;EAExE,IAAIU,KAAQ,GAAA;MACVC,SAAW,EAAA,QAAA;MACXC,YAAc,EAAA,QAAA;MACdC,IAAM,EAAA,QAAA;MACNC,UAAY,EAAA,QAAA;MACZC,KAAO,EAAA,QAAA;MACPC,KAAO,EAAA,QAAA;MACPC,MAAQ,EAAA,QAAA;MACRC,KAAO,EAAA,QAAA;MACPC,cAAgB,EAAA,QAAA;MAChBC,IAAM,EAAA,QAAA;MACNC,UAAY,EAAA,QAAA;MACZC,KAAO,EAAA,QAAA;MACPC,SAAW,EAAA,QAAA;MACXC,SAAW,EAAA,QAAA;MACXC,UAAY,EAAA,QAAA;MACZC,SAAW,EAAA,QAAA;MACXC,KAAO,EAAA,QAAA;MACPC,cAAgB,EAAA,QAAA;MAChBC,QAAU,EAAA,QAAA;MACVC,OAAS,EAAA,QAAA;MACTC,IAAM,EAAA,QAAA;MACNC,QAAU,EAAA,QAAA;MACVC,QAAU,EAAA,QAAA;MACVC,aAAe,EAAA,QAAA;MACfC,QAAU,EAAA,QAAA;MACVC,SAAW,EAAA,QAAA;MACXC,QAAU,EAAA,QAAA;MACVC,SAAW,EAAA,QAAA;MACXC,WAAa,EAAA,QAAA;MACbC,cAAgB,EAAA,QAAA;MAChBC,UAAY,EAAA,QAAA;MACZC,UAAY,EAAA,QAAA;MACZC,OAAS,EAAA,QAAA;MACTC,UAAY,EAAA,QAAA;MACZC,YAAc,EAAA,QAAA;MACdC,aAAe,EAAA,QAAA;MACfC,aAAe,EAAA,QAAA;MACfC,aAAe,EAAA,QAAA;MACfC,aAAe,EAAA,QAAA;MACfC,UAAY,EAAA,QAAA;MACZC,QAAU,EAAA,QAAA;MACVC,WAAa,EAAA,QAAA;MACbC,OAAS,EAAA,QAAA;MACTC,OAAS,EAAA,QAAA;MACTC,UAAY,EAAA,QAAA;MACZC,SAAW,EAAA,QAAA;MACXC,WAAa,EAAA,QAAA;MACbC,WAAa,EAAA,QAAA;MACbC,OAAS,EAAA,QAAA;MACTC,SAAW,EAAA,QAAA;MACXC,UAAY,EAAA,QAAA;MACZC,IAAM,EAAA,QAAA;MACNC,SAAW,EAAA,QAAA;MACXC,IAAM,EAAA,QAAA;MACNC,KAAO,EAAA,QAAA;MACPC,WAAa,EAAA,QAAA;MACbC,IAAM,EAAA,QAAA;MACNC,QAAU,EAAA,QAAA;MACVC,OAAS,EAAA,QAAA;MACTC,SAAW,EAAA,QAAA;MACXC,MAAQ,EAAA,QAAA;MACRC,KAAO,EAAA,QAAA;MACPC,KAAO,EAAA,QAAA;MACPC,QAAU,EAAA,QAAA;MACVC,aAAe,EAAA,QAAA;MACfC,SAAW,EAAA,QAAA;MACXC,YAAc,EAAA,QAAA;MACdC,SAAW,EAAA,QAAA;MACXC,UAAY,EAAA,QAAA;MACZC,SAAW,EAAA,QAAA;MACXC,oBAAsB,EAAA,QAAA;MACtBC,SAAW,EAAA,QAAA;MACXC,UAAY,EAAA,QAAA;MACZC,SAAW,EAAA,QAAA;MACXC,SAAW,EAAA,QAAA;MACXC,WAAa,EAAA,QAAA;MACbC,aAAe,EAAA,QAAA;MACfC,YAAc,EAAA,QAAA;MACdC,cAAgB,EAAA,QAAA;MAChBC,cAAgB,EAAA,QAAA;MAChBC,cAAgB,EAAA,QAAA;MAChBC,WAAa,EAAA,QAAA;MACbC,IAAM,EAAA,QAAA;MACNC,SAAW,EAAA,QAAA;MACXC,KAAO,EAAA,QAAA;MACPC,OAAS,EAAA,QAAA;MACTC,MAAQ,EAAA,QAAA;MACRC,gBAAkB,EAAA,QAAA;MAClBC,UAAY,EAAA,QAAA;MACZC,YAAc,EAAA,QAAA;MACdC,YAAc,EAAA,QAAA;MACdC,cAAgB,EAAA,QAAA;MAChBC,eAAiB,EAAA,QAAA;MACjBC,iBAAmB,EAAA,QAAA;MACnBC,eAAiB,EAAA,QAAA;MACjBC,eAAiB,EAAA,QAAA;MACjBC,YAAc,EAAA,QAAA;MACdC,SAAW,EAAA,QAAA;MACXC,SAAW,EAAA,QAAA;MACXC,QAAU,EAAA,QAAA;MACVC,WAAa,EAAA,QAAA;MACbC,IAAM,EAAA,QAAA;MACNC,OAAS,EAAA,QAAA;MACTC,KAAO,EAAA,QAAA;MACPC,SAAW,EAAA,QAAA;MACXC,MAAQ,EAAA,QAAA;MACRC,SAAW,EAAA,QAAA;MACXC,MAAQ,EAAA,QAAA;MACRC,aAAe,EAAA,QAAA;MACfC,SAAW,EAAA,QAAA;MACXC,aAAe,EAAA,QAAA;MACfC,aAAe,EAAA,QAAA;MACfC,UAAY,EAAA,QAAA;MACZC,SAAW,EAAA,QAAA;MACXC,IAAM,EAAA,QAAA;MACNC,IAAM,EAAA,QAAA;MACNC,IAAM,EAAA,QAAA;MACNC,UAAY,EAAA,QAAA;MACZC,MAAQ,EAAA,QAAA;MACRC,aAAe,EAAA,QAAA;MACfC,GAAK,EAAA,QAAA;MACLC,SAAW,EAAA,QAAA;MACXC,SAAW,EAAA,QAAA;MACXC,WAAa,EAAA,QAAA;MACbC,MAAQ,EAAA,QAAA;MACRC,UAAY,EAAA,QAAA;MACZC,QAAU,EAAA,QAAA;MACVC,QAAU,EAAA,QAAA;MACVC,MAAQ,EAAA,QAAA;MACRC,MAAQ,EAAA,QAAA;MACRC,OAAS,EAAA,QAAA;MACTC,SAAW,EAAA,QAAA;MACXC,SAAW,EAAA,QAAA;MACXC,SAAW,EAAA,QAAA;MACXC,IAAM,EAAA,QAAA;MACNC,WAAa,EAAA,QAAA;MACbC,SAAW,EAAA,QAAA;MACXC,GAAK,EAAA,QAAA;MACLC,IAAM,EAAA,QAAA;MACNC,OAAS,EAAA,QAAA;MACTC,MAAQ,EAAA,QAAA;MACRC,SAAW,EAAA,QAAA;MACXC,MAAQ,EAAA,QAAA;MACRC,KAAO,EAAA,QAAA;MACPC,KAAO,EAAA,QAAA;MACPC,UAAY,EAAA,QAAA;MACZC,MAAQ,EAAA,QAAA;MACRC,WAAa,EAAA;EACf,CAAA;EAEAC,MAAAA,CAAOnK,OAAOoK,KAAO,EAAA;EACnBC,IAAAA,IAAAA,CAAAA,CAAKC,QAAQ,EAAA;UACX,OAAOzK,MAAAA,CAAO0K,MAAM,CAAC,IAAI,IAAI,CAAChL,WAAW,EAAE,IAAI,EAAE+K,QAAAA,CAAAA;EACnD,KAAA;EACAE,IAAAA,WAAAA,CAAAA,GAAAA;EACE,QAAA,OAAO,IAAI,CAACC,GAAG,EAAA,CAAGD,WAAW,EAAA;EAC/B,KAAA;MACAE,GAAKC,EAAAA,eAAAA;MACLC,SAAWD,EAAAA,eAAAA;MACXE,UAAYC,EAAAA,gBAAAA;MACZC,SAAWC,EAAAA,eAAAA;MACXC,SAAWC,EAAAA,eAAAA;MACXC,QAAUD,EAAAA;EACZ,CAAA,CAAA;EAEA,SAASP,eAAAA,GAAAA;EACP,IAAA,OAAO,IAAI,CAACF,GAAG,EAAA,CAAGG,SAAS,EAAA;EAC7B;EAEA,SAASE,gBAAAA,GAAAA;EACP,IAAA,OAAO,IAAI,CAACL,GAAG,EAAA,CAAGI,UAAU,EAAA;EAC9B;EAEA,SAASG,eAAAA,GAAAA;MACP,OAAOI,UAAAA,CAAW,IAAI,CAAA,CAAEL,SAAS,EAAA;EACnC;EAEA,SAASG,eAAAA,GAAAA;EACP,IAAA,OAAO,IAAI,CAACT,GAAG,EAAA,CAAGQ,SAAS,EAAA;EAC7B;EAEe,SAASb,MAAMiB,MAAM,EAAA;EAClC,IAAA,IAAIC,CAAGC,EAAAA,CAAAA;EACPF,IAAAA,MAAAA,GAAS,CAACA,MAAAA,GAAS,EAAC,EAAGG,IAAI,GAAGC,WAAW,EAAA;MACzC,OAAQH,CAAAA,CAAAA,GAAIhL,KAAMoL,CAAAA,IAAI,CAACL,MAAAA,CAAM,KAAME,CAAID,GAAAA,CAAC,CAAC,CAAA,CAAE,CAACK,MAAM,EAAEL,CAAAA,GAAIM,QAASN,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA,EAAKC,CAAM,KAAA,CAAA,GAAIM,IAAKP,CAAAA,CAAAA,CAAAA;SACrFC,CAAM,KAAA,CAAA,GAAI,IAAIO,GAAAA,CAAI,CAACR,IAAK,IAAI,GAAQA,GAAAA,CAAAA,IAAK,CAAI,GAAA,IAAA,EAAO,CAACA,IAAK,IAAI,GAAQA,GAAAA,CAAAA,GAAI,IAAO,EAAEA,CAAAA,CAAAA,GAAI,GAAE,KAAM,CAAMA,GAAAA,CAAAA,GAAI,GAAM,EAAA,CAAA,CAAA;EAC/GC,OAAAA,CAAAA,KAAM,IAAIQ,IAAKT,CAAAA,CAAAA,IAAK,EAAK,GAAA,IAAA,EAAMA,KAAK,EAAK,GAAA,IAAA,EAAMA,CAAK,IAAA,CAAA,GAAI,MAAM,CAACA,IAAI,IAAG,IAAK;EAC3EC,OAAAA,CAAAA,KAAM,CAAIQ,GAAAA,IAAAA,CAAK,CAACT,IAAK,KAAK,GAAQA,GAAAA,CAAAA,IAAK,CAAI,GAAA,IAAA,EAAO,CAAM,IAAA,CAAA,GAAI,GAAQA,GAAAA,CAAAA,IAAK,IAAI,IAAO,EAACA,CAAK,IAAA,CAAA,GAAI,GAAQA,GAAAA,CAAAA,GAAI,IAAO,EAAC,CAAA,CAAEA,CAAI,GAAA,GAAE,KAAM,CAAMA,GAAAA,CAAAA,GAAI,GAAG,IAAK;EAClJ,OAAA,IAAA;UACCA,CAAAA,CAAI/K,GAAAA,YAAAA,CAAamL,IAAI,CAACL,MAAAA,CAAM,IAAK,IAAIS,GAAIR,CAAAA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAE,CAAA,CAAA;EAC5D,OAACA,CAAAA,CAAAA,GAAI7K,YAAaiL,CAAAA,IAAI,CAACL,MAAAA,CAAM,IAAK,IAAIS,GAAIR,CAAAA,CAAC,CAAC,CAAA,CAAE,GAAG,GAAA,GAAM,GAAKA,EAAAA,CAAC,CAAC,CAAA,CAAE,GAAG,GAAA,GAAM,GAAKA,EAAAA,CAAC,CAAC,CAAA,CAAE,GAAG,GAAA,GAAM,GAAK,EAAA,CAAA,CAAA;SAChG,CAACA,CAAI5K,GAAAA,aAAAA,CAAcgL,IAAI,CAACL,OAAM,IAAKU,IAAAA,CAAKT,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,CAAA;EAC9D,OAACA,CAAAA,CAAAA,GAAI3K,aAAc+K,CAAAA,IAAI,CAACL,MAAAA,CAAM,IAAKU,IAAAA,CAAKT,CAAC,CAAC,CAAE,CAAA,GAAG,MAAM,GAAKA,EAAAA,CAAC,CAAC,CAAA,CAAE,GAAG,GAAA,GAAM,GAAKA,EAAAA,CAAC,CAAC,CAAA,CAAE,GAAG,GAAA,GAAM,GAAKA,EAAAA,CAAC,CAAC,CAAA,CAAE;SAClG,CAACA,IAAI1K,YAAa8K,CAAAA,IAAI,CAACL,MAAM,CAAA,IAAKW,IAAKV,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,GAAG,GAAKA,EAAAA,CAAC,CAAC,CAAE,CAAA,GAAG,GAAK,EAAA,CAAA,CAAA;SACrE,CAACA,CAAIzK,GAAAA,aAAAA,CAAc6K,IAAI,CAACL,MAAM,CAAA,IAAKW,IAAKV,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,GAAG,GAAKA,EAAAA,CAAC,CAAC,CAAA,CAAE,GAAG,GAAA,EAAKA,CAAC,CAAC,CAAE,CAAA,CAAA;SAC1ExK,KAAMmL,CAAAA,cAAc,CAACZ,MAAUQ,CAAAA,GAAAA,IAAAA,CAAK/K,KAAK,CAACuK,MAAAA,CAAO;EACjDA,OAAAA,MAAAA,KAAW,gBAAgB,IAAIS,GAAAA,CAAII,GAAKA,EAAAA,GAAAA,EAAKA,KAAK,CAClD,CAAA,GAAA,IAAA;EACR;EAEA,SAASL,KAAKM,CAAC,EAAA;MACb,OAAO,IAAIL,IAAIK,CAAK,IAAA,EAAA,GAAK,MAAMA,CAAK,IAAA,CAAA,GAAI,IAAMA,EAAAA,CAAAA,GAAI,IAAM,EAAA,CAAA,CAAA;EAC1D;EAEA,SAASJ,KAAKK,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAA;EACtB,IAAA,IAAIA,CAAK,IAAA,CAAA,EAAGH,CAAIC,GAAAA,CAAAA,GAAIC,CAAIJ,GAAAA,GAAAA;EACxB,IAAA,OAAO,IAAIJ,GAAAA,CAAIM,CAAGC,EAAAA,CAAAA,EAAGC,CAAGC,EAAAA,CAAAA,CAAAA;EAC1B;EAEO,SAASC,WAAWC,CAAC,EAAA;EAC1B,IAAA,IAAI,EAAEA,CAAAA,YAAazM,KAAI,CAAA,EAAIyM,IAAIrC,KAAMqC,CAAAA,CAAAA,CAAAA;MACrC,IAAI,CAACA,CAAG,EAAA,OAAO,IAAIX,GAAAA;EACnBW,IAAAA,CAAAA,GAAIA,EAAEhC,GAAG,EAAA;EACT,IAAA,OAAO,IAAIqB,GAAAA,CAAIW,CAAEL,CAAAA,CAAC,EAAEK,CAAAA,CAAEJ,CAAC,EAAEI,CAAEH,CAAAA,CAAC,EAAEG,CAAAA,CAAEC,OAAO,CAAA;EACzC;EAEO,SAASjC,IAAI2B,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEI,OAAO,EAAA;EAClC,IAAA,OAAOC,SAAUhB,CAAAA,MAAM,KAAK,CAAA,GAAIa,UAAWJ,CAAAA,CAAAA,CAAAA,GAAK,IAAIN,GAAAA,CAAIM,CAAGC,EAAAA,CAAAA,EAAGC,CAAGI,EAAAA,OAAAA,IAAW,OAAO,CAAIA,GAAAA,OAAAA,CAAAA;EACzF;EAEO,SAASZ,IAAIM,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEI,OAAO,EAAA;MAClC,IAAI,CAACN,CAAC,GAAG,CAACA,CAAAA;MACV,IAAI,CAACC,CAAC,GAAG,CAACA,CAAAA;MACV,IAAI,CAACC,CAAC,GAAG,CAACA,CAAAA;MACV,IAAI,CAACI,OAAO,GAAG,CAACA,OAAAA;EAClB;EAEAvC,MAAO2B,CAAAA,GAAAA,EAAKrB,GAAK/K,EAAAA,MAAAA,CAAOM,KAAO,EAAA;EAC7BE,IAAAA,QAAAA,CAAAA,CAAS0M,CAAC,EAAA;EACRA,QAAAA,CAAAA,GAAIA,KAAK,IAAO1M,GAAAA,QAAAA,GAAW2M,IAAKC,CAAAA,GAAG,CAAC5M,QAAU0M,EAAAA,CAAAA,CAAAA;EAC9C,QAAA,OAAO,IAAId,GAAI,CAAA,IAAI,CAACM,CAAC,GAAGQ,GAAG,IAAI,CAACP,CAAC,GAAGO,CAAAA,EAAG,IAAI,CAACN,CAAC,GAAGM,CAAG,EAAA,IAAI,CAACF,OAAO,CAAA;EACjE,KAAA;EACAzM,IAAAA,MAAAA,CAAAA,CAAO2M,CAAC,EAAA;EACNA,QAAAA,CAAAA,GAAIA,KAAK,IAAO3M,GAAAA,MAAAA,GAAS4M,IAAKC,CAAAA,GAAG,CAAC7M,MAAQ2M,EAAAA,CAAAA,CAAAA;EAC1C,QAAA,OAAO,IAAId,GAAI,CAAA,IAAI,CAACM,CAAC,GAAGQ,GAAG,IAAI,CAACP,CAAC,GAAGO,CAAAA,EAAG,IAAI,CAACN,CAAC,GAAGM,CAAG,EAAA,IAAI,CAACF,OAAO,CAAA;EACjE,KAAA;EACAjC,IAAAA,GAAAA,CAAAA,GAAAA;EACE,QAAA,OAAO,IAAI;EACb,KAAA;EACAsC,IAAAA,KAAAA,CAAAA,GAAAA;UACE,OAAO,IAAIjB,IAAIkB,MAAO,CAAA,IAAI,CAACZ,CAAC,CAAA,EAAGY,OAAO,IAAI,CAACX,CAAC,CAAGW,EAAAA,MAAAA,CAAO,IAAI,CAACV,CAAC,GAAGW,MAAO,CAAA,IAAI,CAACP,OAAO,CAAA,CAAA;EACpF,KAAA;EACAlC,IAAAA,WAAAA,CAAAA,GAAAA;EACE,QAAA,OAAO,IAAE,IAAO,IAAI,CAAC4B,CAAC,IAAI,IAAI,CAACA,CAAC,GAAG,KAAA,IAC3B,IAAQ,IAAA,IAAI,CAACC,CAAC,IAAI,IAAI,CAACA,CAAC,GAAG,KAAA,IAC3B,IAAQ,IAAA,IAAI,CAACC,CAAC,IAAI,IAAI,CAACA,CAAC,GAAG,KAC3B,IAAA,CAAA,IAAK,IAAI,CAACI,OAAO,IAAI,IAAI,CAACA,OAAO,IAAI,CAAA;EAC/C,KAAA;MACAhC,GAAKwC,EAAAA,aAAAA;MACLtC,SAAWsC,EAAAA,aAAAA;MACXrC,UAAYsC,EAAAA,cAAAA;MACZlC,SAAWmC,EAAAA,aAAAA;MACXjC,QAAUiC,EAAAA;EACZ,CAAA,CAAA,CAAA;EAEA,SAASF,aAAAA,GAAAA;EACP,IAAA,OAAO,CAAC,CAAC,EAAExC,GAAI,CAAA,IAAI,CAAC0B,CAAC,CAAA,CAAA,EAAI1B,GAAI,CAAA,IAAI,CAAC2B,CAAC,CAAA,CAAA,EAAI3B,IAAI,IAAI,CAAC4B,CAAC,CAAG,CAAA,CAAA;EACtD;EAEA,SAASa,cAAAA,GAAAA;EACP,IAAA,OAAO,CAAC,CAAC,EAAEzC,GAAAA,CAAI,IAAI,CAAC0B,CAAC,CAAI1B,CAAAA,EAAAA,GAAAA,CAAI,IAAI,CAAC2B,CAAC,CAAA,CAAA,EAAI3B,IAAI,IAAI,CAAC4B,CAAC,CAAA,CAAA,EAAI5B,GAAI,CAAC2C,CAAAA,KAAAA,CAAM,IAAI,CAACX,OAAO,CAAI,GAAA,CAAA,GAAI,IAAI,CAACA,OAAM,IAAK,GAAM,CAAA,CAAA,CAAA;EAC5G;EAEA,SAASU,aAAAA,GAAAA;EACP,IAAA,MAAMb,CAAIU,GAAAA,MAAAA,CAAO,IAAI,CAACP,OAAO,CAAA;EAC7B,IAAA,OAAO,CAAGH,EAAAA,CAAAA,KAAM,CAAI,GAAA,MAAA,GAAS,UAAUS,MAAO,CAAA,IAAI,CAACZ,CAAC,CAAE,CAAA,EAAE,EAAEY,MAAAA,CAAO,IAAI,CAACX,CAAC,CAAE,CAAA,EAAE,EAAEW,MAAAA,CAAO,IAAI,CAACV,CAAC,CAAIC,CAAAA,EAAAA,CAAAA,KAAM,CAAI,GAAA,GAAA,GAAM,CAAC,EAAE,EAAEA,CAAE,CAAA,CAAC,CAAC,CAAE,CAAA;EAC3H;EAEA,SAASU,OAAOP,OAAO,EAAA;MACrB,OAAOW,KAAAA,CAAMX,OAAW,CAAA,GAAA,CAAA,GAAIG,IAAKS,CAAAA,GAAG,CAAC,CAAGT,EAAAA,IAAAA,CAAKU,GAAG,CAAC,CAAGb,EAAAA,OAAAA,CAAAA,CAAAA;EACtD;EAEA,SAASM,OAAOQ,KAAK,EAAA;MACnB,OAAOX,IAAAA,CAAKS,GAAG,CAAC,CAAGT,EAAAA,IAAAA,CAAKU,GAAG,CAAC,GAAKV,EAAAA,IAAAA,CAAKY,KAAK,CAACD,KAAU,CAAA,IAAA,CAAA,CAAA,CAAA;EACxD;EAEA,SAAS9C,IAAI8C,KAAK,EAAA;EAChBA,IAAAA,KAAAA,GAAQR,MAAOQ,CAAAA,KAAAA,CAAAA;MACf,OAAQA,CAAAA,KAAQ,GAAA,EAAA,GAAK,MAAM,EAAC,IAAKA,KAAMrC,CAAAA,QAAQ,CAAC,EAAA,CAAA;EAClD;EAEA,SAASa,KAAK0B,CAAC,EAAEC,CAAC,EAAEpC,CAAC,EAAEgB,CAAC,EAAA;EACtB,IAAA,IAAIA,CAAK,IAAA,CAAA,EAAGmB,CAAIC,GAAAA,CAAAA,GAAIpC,CAAIW,GAAAA,GAAAA;EACnB,SAAA,IAAIX,CAAK,IAAA,CAAA,IAAKA,CAAK,IAAA,CAAA,EAAGmC,IAAIC,CAAIzB,GAAAA,GAAAA;WAC9B,IAAIyB,CAAAA,IAAK,GAAGD,CAAIxB,GAAAA,GAAAA;EACrB,IAAA,OAAO,IAAI0B,GAAAA,CAAIF,CAAGC,EAAAA,CAAAA,EAAGpC,CAAGgB,EAAAA,CAAAA,CAAAA;EAC1B;EAEO,SAASnB,WAAWqB,CAAC,EAAA;EAC1B,IAAA,IAAIA,CAAamB,YAAAA,GAAAA,EAAK,OAAO,IAAIA,IAAInB,CAAEiB,CAAAA,CAAC,EAAEjB,CAAAA,CAAEkB,CAAC,EAAElB,CAAAA,CAAElB,CAAC,EAAEkB,EAAEC,OAAO,CAAA;EAC7D,IAAA,IAAI,EAAED,CAAAA,YAAazM,KAAI,CAAA,EAAIyM,IAAIrC,KAAMqC,CAAAA,CAAAA,CAAAA;MACrC,IAAI,CAACA,CAAG,EAAA,OAAO,IAAImB,GAAAA;MACnB,IAAInB,CAAAA,YAAamB,KAAK,OAAOnB,CAAAA;EAC7BA,IAAAA,CAAAA,GAAIA,EAAEhC,GAAG,EAAA;EACT,IAAA,IAAI2B,IAAIK,CAAEL,CAAAA,CAAC,GAAG,GAAA,EACVC,IAAII,CAAEJ,CAAAA,CAAC,GAAG,GAAA,EACVC,IAAIG,CAAEH,CAAAA,CAAC,GAAG,GACViB,EAAAA,GAAAA,GAAMV,KAAKU,GAAG,CAACnB,CAAGC,EAAAA,CAAAA,EAAGC,IACrBgB,GAAMT,GAAAA,IAAAA,CAAKS,GAAG,CAAClB,CAAAA,EAAGC,GAAGC,CACrBoB,CAAAA,EAAAA,CAAAA,GAAIxB,GACJyB,EAAAA,CAAAA,GAAIL,MAAMC,GACVhC,EAAAA,CAAAA,GAAI,CAAC+B,GAAAA,GAAMC,GAAE,IAAK,CAAA;EACtB,IAAA,IAAII,CAAG,EAAA;EACL,QAAA,IAAIvB,CAAMkB,KAAAA,GAAAA,EAAKI,CAAI,GAACrB,CAAAA,CAAAA,GAAIC,CAAAA,IAAKqB,CAAI,GAACtB,CAAAA,CAAAA,GAAIC,CAAAA,IAAK,CAAA;eACtC,IAAID,CAAAA,KAAMiB,KAAKI,CAAI,GAACpB,CAAAA,CAAIF,GAAAA,CAAAA,IAAKuB,CAAI,GAAA,CAAA;EACjCD,aAAAA,CAAAA,GAAI,CAACtB,CAAIC,GAAAA,CAAAA,IAAKsB,CAAI,GAAA,CAAA;EACvBA,QAAAA,CAAAA,IAAKpC,CAAI,GAAA,GAAA,GAAM+B,GAAMC,GAAAA,GAAAA,GAAM,IAAID,GAAMC,GAAAA,GAAAA;UACrCG,CAAK,IAAA,EAAA;OACA,MAAA;EACLC,QAAAA,CAAAA,GAAIpC,CAAI,GAAA,CAAA,IAAKA,CAAI,GAAA,CAAA,GAAI,CAAImC,GAAAA,CAAAA;EAC3B;EACA,IAAA,OAAO,IAAIE,GAAIF,CAAAA,CAAAA,EAAGC,CAAGpC,EAAAA,CAAAA,EAAGkB,EAAEC,OAAO,CAAA;EACnC;EAEO,SAASmB,IAAIH,CAAC,EAAEC,CAAC,EAAEpC,CAAC,EAAEmB,OAAO,EAAA;EAClC,IAAA,OAAOC,SAAUhB,CAAAA,MAAM,KAAK,CAAA,GAAIP,UAAWsC,CAAAA,CAAAA,CAAAA,GAAK,IAAIE,GAAAA,CAAIF,CAAGC,EAAAA,CAAAA,EAAGpC,CAAGmB,EAAAA,OAAAA,IAAW,OAAO,CAAIA,GAAAA,OAAAA,CAAAA;EACzF;EAEA,SAASkB,IAAIF,CAAC,EAAEC,CAAC,EAAEpC,CAAC,EAAEmB,OAAO,EAAA;MAC3B,IAAI,CAACgB,CAAC,GAAG,CAACA,CAAAA;MACV,IAAI,CAACC,CAAC,GAAG,CAACA,CAAAA;MACV,IAAI,CAACpC,CAAC,GAAG,CAACA,CAAAA;MACV,IAAI,CAACmB,OAAO,GAAG,CAACA,OAAAA;EAClB;EAEAvC,MAAOyD,CAAAA,GAAAA,EAAKC,GAAKnO,EAAAA,MAAAA,CAAOM,KAAO,EAAA;EAC7BE,IAAAA,QAAAA,CAAAA,CAAS0M,CAAC,EAAA;EACRA,QAAAA,CAAAA,GAAIA,KAAK,IAAO1M,GAAAA,QAAAA,GAAW2M,IAAKC,CAAAA,GAAG,CAAC5M,QAAU0M,EAAAA,CAAAA,CAAAA;EAC9C,QAAA,OAAO,IAAIgB,GAAI,CAAA,IAAI,CAACF,CAAC,EAAE,IAAI,CAACC,CAAC,EAAE,IAAI,CAACpC,CAAC,GAAGqB,CAAG,EAAA,IAAI,CAACF,OAAO,CAAA;EACzD,KAAA;EACAzM,IAAAA,MAAAA,CAAAA,CAAO2M,CAAC,EAAA;EACNA,QAAAA,CAAAA,GAAIA,KAAK,IAAO3M,GAAAA,MAAAA,GAAS4M,IAAKC,CAAAA,GAAG,CAAC7M,MAAQ2M,EAAAA,CAAAA,CAAAA;EAC1C,QAAA,OAAO,IAAIgB,GAAI,CAAA,IAAI,CAACF,CAAC,EAAE,IAAI,CAACC,CAAC,EAAE,IAAI,CAACpC,CAAC,GAAGqB,CAAG,EAAA,IAAI,CAACF,OAAO,CAAA;EACzD,KAAA;EACAjC,IAAAA,GAAAA,CAAAA,GAAAA;UACE,IAAIiD,CAAAA,GAAI,IAAI,CAACA,CAAC,GAAG,GAAM,GAAC,CAAA,IAAI,CAACA,CAAC,GAAG,CAAA,IAAK,GAClCC,EAAAA,CAAAA,GAAIN,MAAMK,CAAML,CAAAA,IAAAA,KAAAA,CAAM,IAAI,CAACM,CAAC,CAAA,GAAI,IAAI,IAAI,CAACA,CAAC,EAC1CpC,CAAAA,GAAI,IAAI,CAACA,CAAC,EACVuC,EAAKvC,GAAAA,CAAAA,GAAI,CAACA,CAAAA,GAAI,MAAMA,CAAI,GAAA,CAAA,GAAIA,CAAAA,IAAKoC,CAAAA,EACjCI,EAAK,GAAA,CAAA,GAAIxC,CAAIuC,GAAAA,EAAAA;UACjB,OAAO,IAAIhC,GACTkC,CAAAA,OAAAA,CAAQN,CAAK,IAAA,GAAA,GAAMA,CAAI,GAAA,GAAA,GAAMA,CAAI,GAAA,GAAA,EAAKK,EAAID,EAAAA,EAAAA,CAAAA,EAC1CE,OAAQN,CAAAA,CAAAA,EAAGK,IAAID,EACfE,CAAAA,EAAAA,OAAAA,CAAQN,CAAI,GAAA,GAAA,GAAMA,CAAI,GAAA,GAAA,GAAMA,CAAI,GAAA,GAAA,EAAKK,EAAID,EAAAA,EAAAA,CAAAA,EACzC,IAAI,CAACpB,OAAO,CAAA;EAEhB,KAAA;EACAK,IAAAA,KAAAA,CAAAA,GAAAA;UACE,OAAO,IAAIa,IAAIK,MAAO,CAAA,IAAI,CAACP,CAAC,CAAA,EAAGQ,OAAO,IAAI,CAACP,CAAC,CAAGO,EAAAA,MAAAA,CAAO,IAAI,CAAC3C,CAAC,GAAG0B,MAAO,CAAA,IAAI,CAACP,OAAO,CAAA,CAAA;EACpF,KAAA;EACAlC,IAAAA,WAAAA,CAAAA,GAAAA;EACE,QAAA,OAAO,CAAC,CAAA,IAAK,IAAI,CAACmD,CAAC,IAAI,IAAI,CAACA,CAAC,IAAI,CAAKN,IAAAA,KAAAA,CAAM,IAAI,CAACM,CAAC,CAAA,KAC1C,CAAK,IAAA,IAAI,CAACpC,CAAC,IAAI,IAAI,CAACA,CAAC,IAAI,CAAA,IACzB,CAAK,IAAA,IAAI,CAACmB,OAAO,IAAI,IAAI,CAACA,OAAO,IAAI,CAAA;EAC/C,KAAA;EACA3B,IAAAA,SAAAA,CAAAA,GAAAA;EACE,QAAA,MAAMwB,CAAIU,GAAAA,MAAAA,CAAO,IAAI,CAACP,OAAO,CAAA;EAC7B,QAAA,OAAO,GAAGH,CAAM,KAAA,CAAA,GAAI,MAAS,GAAA,OAAA,CAAA,EAAU0B,OAAO,IAAI,CAACP,CAAC,CAAA,CAAE,EAAE,EAAEQ,MAAAA,CAAO,IAAI,CAACP,CAAC,CAAI,GAAA,GAAA,CAAI,GAAG,EAAEO,OAAO,IAAI,CAAC3C,CAAC,CAAA,GAAI,IAAI,CAAC,EAAEgB,CAAM,KAAA,CAAA,GAAI,MAAM,CAAC,EAAE,EAAEA,CAAE,CAAA,CAAC,CAAC,CAAE,CAAA;EACzI;EACF,CAAA,CAAA,CAAA;EAEA,SAAS0B,OAAOT,KAAK,EAAA;EACnBA,IAAAA,KAAAA,GAAQ,CAACA,KAAS,IAAA,CAAA,IAAK,GAAA;MACvB,OAAOA,KAAAA,GAAQ,CAAIA,GAAAA,KAAAA,GAAQ,GAAMA,GAAAA,KAAAA;EACnC;EAEA,SAASU,OAAOV,KAAK,EAAA;MACnB,OAAOX,IAAAA,CAAKS,GAAG,CAAC,CAAA,EAAGT,KAAKU,GAAG,CAAC,GAAGC,KAAS,IAAA,CAAA,CAAA,CAAA;EAC1C;EAEA,+CACA,SAASQ,OAAAA,CAAQN,CAAC,EAAEK,EAAE,EAAED,EAAE,EAAA;EACxB,IAAA,OAAO,CAACJ,CAAI,GAAA,EAAA,GAAKK,EAAK,GAACD,CAAAA,EAAAA,GAAKC,EAAC,IAAKL,CAAI,GAAA,EAAA,GAChCA,CAAI,GAAA,GAAA,GAAMI,EACVJ,GAAAA,CAAAA,GAAI,GAAMK,GAAAA,EAAAA,GAAK,CAACD,EAAKC,GAAAA,EAAC,KAAM,GAAML,GAAAA,CAAAA,CAAK,GAAA,EAAA,GACvCK,EAAC,IAAK,GAAA;EACd;;ECzYA;;;;;;;;EAQA,GACe,YAASI,CAAAA,EAAE,EAAEC,EAAE,EAAEC,EAAK,GAAA,CAAC,EAAEC,EAAAA,GAAK,CAAC,EAAA;EAC5CH,IAAAA,EAAAA,GAAKN,GAAIM,CAAAA,EAAAA,CAAAA;EACTC,IAAAA,EAAAA,GAAKP,GAAIO,CAAAA,EAAAA,CAAAA;MACT,IAAIG,CAAAA,GAAI1B,IAAK2B,CAAAA,GAAG,CAACJ,EAAAA,CAAGV,CAAC,GAAGY,EAAAA,GAAKH,EAAGT,CAAAA,CAAC,GAAGW,EAAAA,CAAAA;MACpC,IAAIE,CAAAA,GAAI,KAAKA,CAAK,IAAA,GAAA;EAClB,IAAA,IAAIb,CAAI,GAACb,CAAAA,IAAAA,CAAKU,GAAG,CAACY,EAAAA,CAAGT,CAAC,EAAEU,EAAGV,CAAAA,CAAC,CAAIa,GAAAA,CAAAA,GAAI,CAAA,IAAK,GAAA;EACzC,IAAA,MAAMhD,CAAI4C,GAAAA,EAAAA,CAAG5C,CAAC,GAAG,CAAC6C,EAAG7C,CAAAA,CAAC,GAAG+C,EAAAA,GAAKH,EAAG5C,CAAAA,CAAC,GAAG8C,EAAC,IAAK,CACrCV,EAAAA,CAAAA,GAAIQ,EAAGR,CAAAA,CAAC,GAAIS,CAAAA,EAAAA,CAAGT,CAAC,GAAGW,EAAKH,GAAAA,EAAAA,CAAGR,CAAC,GAAGU,EAAC,IAAK,CAAA;;MAE3C,IAAIX,CAAAA,GAAI,GAAGA,CAAK,IAAA,GAAA;EAChB,IAAA,OAAOG,IAAI,CAAC,IAAI,EAAEH,CAAAA,CAAE,CAAC,EAAEC,CAAAA,GAAI,GAAI,CAAA,EAAE,EAAEpC,CAAI,GAAA,GAAA,CAAI,EAAE,CAAC,EAAEJ,QAAQ,EAAA;EACxD;EACF;;ECvBO,MAAMsD,SAAkBC,SAAAA,GAAAA,CAAAA;EAM7BC,IAAAA,GAAAA,CAAI5O,GAAG,EAAE;EACP,QAAA,OAAO,KAAK,CAAC4O,GAAIC,CAAAA,UAAAA,CAAW,IAAI,EAAE7O,GAAAA,CAAAA,CAAAA;EACpC;EACA8O,IAAAA,GAAAA,CAAI9O,GAAG,EAAE;EACP,QAAA,OAAO,KAAK,CAAC8O,GAAID,CAAAA,UAAAA,CAAW,IAAI,EAAE7O,GAAAA,CAAAA,CAAAA;EACpC;MACA+O,GAAI/O,CAAAA,GAAG,EAAEyN,KAAK,EAAE;EACd,QAAA,OAAO,KAAK,CAACsB,GAAAA,CAAIC,UAAW,CAAA,IAAI,EAAEhP,GAAMyN,CAAAA,EAAAA,KAAAA,CAAAA;EAC1C;EACAwB,IAAAA,MAAAA,CAAOjP,GAAG,EAAE;EACV,QAAA,OAAO,KAAK,CAACiP,MAAOC,CAAAA,aAAAA,CAAc,IAAI,EAAElP,GAAAA,CAAAA,CAAAA;EAC1C;EAhBAR,IAAAA,WAAAA,CAAY2P,OAAO,EAAEnP,GAAMoP,GAAAA,KAAK,CAAE;UAChC,KAAK,EAAA;UACLtP,MAAOuP,CAAAA,gBAAgB,CAAC,IAAI,EAAE;cAACC,OAAS,EAAA;EAAC7B,gBAAAA,KAAAA,EAAO,IAAIkB,GAAAA;EAAK,aAAA;cAAGY,IAAM,EAAA;kBAAC9B,KAAOzN,EAAAA;EAAG;EAAC,SAAA,CAAA;EAC9E,QAAA,IAAImP,OAAW,IAAA,IAAA,EAAM,KAAK,MAAM,CAACnP,GAAAA,EAAKyN,KAAM,CAAA,IAAI0B,OAAS,CAAA,IAAI,CAACJ,GAAG,CAAC/O,GAAKyN,EAAAA,KAAAA,CAAAA;EACzE;EAaF;EAmBA,SAASoB,WAAW,EAACS,OAAO,EAAEC,IAAI,EAAC,EAAE9B,KAAK,EAAA;EACxC,IAAA,MAAMzN,MAAMuP,IAAK9B,CAAAA,KAAAA,CAAAA;EACjB,IAAA,OAAO6B,QAAQR,GAAG,CAAC9O,OAAOsP,OAAQV,CAAAA,GAAG,CAAC5O,GAAOyN,CAAAA,GAAAA,KAAAA;EAC/C;EAEA,SAASuB,WAAW,EAACM,OAAO,EAAEC,IAAI,EAAC,EAAE9B,KAAK,EAAA;EACxC,IAAA,MAAMzN,MAAMuP,IAAK9B,CAAAA,KAAAA,CAAAA;EACjB,IAAA,IAAI6B,QAAQR,GAAG,CAAC9O,MAAM,OAAOsP,OAAAA,CAAQV,GAAG,CAAC5O,GAAAA,CAAAA;MACzCsP,OAAQP,CAAAA,GAAG,CAAC/O,GAAKyN,EAAAA,KAAAA,CAAAA;MACjB,OAAOA,KAAAA;EACT;EAEA,SAASyB,cAAc,EAACI,OAAO,EAAEC,IAAI,EAAC,EAAE9B,KAAK,EAAA;EAC3C,IAAA,MAAMzN,MAAMuP,IAAK9B,CAAAA,KAAAA,CAAAA;MACjB,IAAI6B,OAAAA,CAAQR,GAAG,CAAC9O,GAAM,CAAA,EAAA;UACpByN,KAAQ6B,GAAAA,OAAAA,CAAQV,GAAG,CAAC5O,GAAAA,CAAAA;EACpBsP,QAAAA,OAAAA,CAAQL,MAAM,CAACjP,GAAAA,CAAAA;EACjB;MACA,OAAOyN,KAAAA;EACT;EAEA,SAAS2B,MAAM3B,KAAK,EAAA;EAClB,IAAA,OAAOA,UAAU,IAAQ,IAAA,OAAOA,UAAU,QAAWA,GAAAA,KAAAA,CAAM+B,OAAO,EAAK/B,GAAAA,KAAAA;EACzE;;EC5DO,SAASgC,SAAAA,CAAUC,MAAM,EAAEC,KAAK,EAAA;EACrC,IAAA,OAAQ/C,UAAUhB,MAAM;UACtB,KAAK,CAAA;EAAG,YAAA;UACR,KAAK,CAAA;cAAG,IAAI,CAAC+D,KAAK,CAACD,MAAAA,CAAAA;EAAS,YAAA;EAC5B,QAAA;EAAS,YAAA,IAAI,CAACC,KAAK,CAACA,KAAAA,CAAAA,CAAOD,MAAM,CAACA,MAAAA,CAAAA;EAAS,YAAA;EAC7C;EACA,IAAA,OAAO,IAAI;EACb;;ECJO,MAAME,QAAWC,GAAAA,MAAAA,CAAO,UAAY,CAAA;EAE5B,SAASC,OAAAA,GAAAA;MACtB,IAAIC,KAAAA,GAAQ,IAAIrB,SACZgB,EAAAA,EAAAA,MAAAA,GAAS,EAAE,EACXC,KAAAA,GAAQ,EAAE,EACVK,OAAUJ,GAAAA,QAAAA;EAEd,IAAA,SAASK,MAAMzB,CAAC,EAAA;UACd,IAAI0B,CAAAA,GAAIH,KAAMnB,CAAAA,GAAG,CAACJ,CAAAA,CAAAA;EAClB,QAAA,IAAI0B,MAAMC,SAAW,EAAA;cACnB,IAAIH,OAAAA,KAAYJ,UAAU,OAAOI,OAAAA;EACjCD,YAAAA,KAAAA,CAAMhB,GAAG,CAACP,CAAAA,EAAG0B,IAAIR,MAAOU,CAAAA,IAAI,CAAC5B,CAAK,CAAA,GAAA,CAAA,CAAA;EACpC;EACA,QAAA,OAAOmB,KAAK,CAACO,CAAIP,GAAAA,KAAAA,CAAM/D,MAAM,CAAC;EAChC;MAEAqE,KAAMP,CAAAA,MAAM,GAAG,SAASW,CAAC,EAAA;EACvB,QAAA,IAAI,CAACzD,SAAUhB,CAAAA,MAAM,EAAE,OAAO8D,OAAOY,KAAK,EAAA;UAC1CZ,MAAS,GAAA,EAAE,EAAEK,KAAAA,GAAQ,IAAIrB,SAAAA,EAAAA;UACzB,KAAK,MAAMjB,SAAS4C,CAAG,CAAA;cACrB,IAAIN,KAAAA,CAAMjB,GAAG,CAACrB,KAAQ,CAAA,EAAA;EACtBsC,YAAAA,KAAAA,CAAMhB,GAAG,CAACtB,KAAAA,EAAOiC,MAAOU,CAAAA,IAAI,CAAC3C,KAAS,CAAA,GAAA,CAAA,CAAA;EACxC;UACA,OAAOwC,KAAAA;EACT,KAAA;MAEAA,KAAMN,CAAAA,KAAK,GAAG,SAASU,CAAC,EAAA;EACtB,QAAA,OAAOzD,SAAUhB,CAAAA,MAAM,IAAI+D,KAAQY,GAAAA,KAAAA,CAAMC,IAAI,CAACH,CAAIJ,CAAAA,EAAAA,KAAI,IAAKN,KAAAA,CAAMW,KAAK,EAAA;EACxE,KAAA;MAEAL,KAAMD,CAAAA,OAAO,GAAG,SAASK,CAAC,EAAA;EACxB,QAAA,OAAOzD,UAAUhB,MAAM,IAAIoE,OAAUK,GAAAA,CAAAA,EAAGJ,KAAI,IAAKD,OAAAA;EACnD,KAAA;EAEAC,IAAAA,KAAAA,CAAM3F,IAAI,GAAG,WAAA;EACX,QAAA,OAAOwF,OAAQJ,CAAAA,MAAAA,EAAQC,KAAOK,CAAAA,CAAAA,OAAO,CAACA,OAAAA,CAAAA;EACxC,KAAA;MAEAP,SAAUgB,CAAAA,KAAK,CAACR,KAAOrD,EAAAA,SAAAA,CAAAA;MAEvB,OAAOqD,KAAAA;EACT;;EC3CA;;;;;;;;;;;;EAYA,SACMS,QAAW,GAAA;MACfC,IAAM,EAAA,SAAA;MACNC,KAAO,EAAA,SAAA;MACPC,OAAS,EAAA,SAAA;MACTC,GAAK,EAAA,SAAA;MACLC,EAAI,EAAA,SAAA;MACJd,KAAOe,EAAAA,OAAAA,EAAAA,CAAerB,KAAK,CAAC;EAC1B,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA,SAAA;EACA,QAAA;EACD,KAAA;EACH;EAEA;;;;EAIA,GACO,SAASsB,QAAAA,CAASpE,CAAC,EAAEqE,CAAAA,GAAI,EAAE,EAAA;EAChC,IAAA,OAAOrE,CAAKqE,IAAAA,CAAAA,GAAIA,CAAC,CAACrE,CAAE,CAAA,GAAGA,CAAK6D,IAAAA,QAAAA,GAAWA,QAAQ,CAAC7D,CAAE,CAAA,GAAG6D,SAASG,OAAO;EACvE;;EC/CA;;;;;;EAMA,GACe,eAASM,CAAAA,CAAC,EAAED,CAAAA,GAAI,EAAE,EAAA;;MAG/B,IAAI;EAAC,QAAA,IAAA;UAAM;EAAO,KAAA,CAACE,OAAO,CAACD,CAAAA,CAAAA,IAAM,CAAG,EAAA,OAAOF,SAAS,SAAWC,EAAAA,CAAAA,CAAAA;EAE1D,SAAA,IAAIC,CAAM,KAAA,IAAA,EAAM,OAAOF,QAAAA,CAAS,IAAMC,EAAAA,CAAAA,CAAAA;EAEtC,SAAA,IAAIC,CAAM,KAAA,KAAA,EAAO,OAAOF,QAAAA,CAAS,KAAOC,EAAAA,CAAAA,CAAAA;EAE7C,IAAA,MAAMG,IAAIhH,KAAM8G,CAAAA,CAAAA,CAAAA;;EAEhB,IAAA,IAAI,CAACE,CAAAA,EAAG,OAAOJ,QAAAA,CAAS,SAASC,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA;EAEpC,IAAA,OAAOA,EAAE/F,QAAQ,EAAA;EAEnB;;ECtBA;;;;;;EAMA,GACe,iBAAS+F,CAAAA,CAAC,EAAED,CAAAA,GAAI,EAAE,EAAA;EAC/BC,IAAAA,CAAAA,GAAIzG,GAAIyG,CAAAA,CAAAA,CAAAA;EACR,IAAA,MAAMG,GAAM,GAACH,CAAAA,CAAAA,CAAE9E,CAAC,GAAG,GAAA,GAAM8E,CAAE7E,CAAAA,CAAC,GAAG,GAAM6E,GAAAA,CAAAA,CAAE5E,CAAC,GAAG,GAAE,IAAK,IAAA;EAClD,IAAA,OAAO+E,OAAO,GAAML,GAAAA,QAAAA,CAAS,MAAQC,EAAAA,CAAAA,CAAAA,GAAKD,SAAS,OAASC,EAAAA,CAAAA,CAAAA;EAC9D;;ECZA;;;;;EAKA,GACe,iBAASC,CAAC,EAAA;EACvBA,IAAAA,CAAAA,GAAIrD,GAAIqD,CAAAA,CAAAA,CAAAA;MACR,IAAIA,CAAAA,CAAE3F,CAAC,GAAG,IAAM,EAAA;EACd,QAAA,IAAI2F,EAAEvD,CAAC,GAAG,GAAKuD,EAAAA,CAAAA,CAAEvD,CAAC,GAAG,GAAA;EACrBuD,QAAAA,CAAAA,CAAE3F,CAAC,GAAG,IAAA;EACR;EACA,IAAA,OAAO2F,EAAE/F,QAAQ,EAAA;EACnB;;ECbA;;;;;;EAMA,GACe,gBAAA,CAAS+F,CAAC,EAAEjB,IAAI,GAAG,EAAA;EAChCiB,IAAAA,CAAAA,GAAIrD,GAAIqD,CAAAA,CAAAA,CAAAA;MACRjB,CAAK,IAAA,CAAA,GAAIiB,EAAE3F,CAAC;EACZ2F,IAAAA,CAAAA,CAAE3F,CAAC,IAAI0E,CAAAA;EACPiB,IAAAA,CAAAA,CAAEvD,CAAC,IAAIsC,CAAAA;EACP,IAAA,OAAOiB,EAAE/F,QAAQ,EAAA;EACnB;;ECbA;;;;;;;;EAQA,GACe,iBAASgD,CAAAA,EAAE,EAAEC,EAAE,EAAEC,EAAK,GAAA,CAAC,EAAEC,EAAAA,GAAK,CAAC,EAAA;EAC5CH,IAAAA,EAAAA,GAAKN,GAAIM,CAAAA,EAAAA,CAAAA;EACTC,IAAAA,EAAAA,GAAKP,GAAIO,CAAAA,EAAAA,CAAAA;EACT,IAAA,IAAIG,IAAIH,EAAGV,CAAAA,CAAC,GAAGY,EAAKH,GAAAA,EAAAA,CAAGT,CAAC,GAAGW,EAAAA;EAC3B,IAAA,IAAIxB,IAAK2B,CAAAA,GAAG,CAACD,CAAAA,CAAAA,GAAK,KAAKA,CAAK,IAAA,GAAA;EAC5B,IAAA,IAAIb,IAAI,CAACS,GAAGT,CAAC,GAAGa,CAAAA,IAAK,GAAA;EACrB,IAAA,MAAMhD,CAAI4C,GAAAA,EAAAA,CAAG5C,CAAC,GAAG,CAAC6C,EAAG7C,CAAAA,CAAC,GAAG+C,EAAAA,GAAKH,EAAG5C,CAAAA,CAAC,GAAG8C,EAAC,IAAK,CACrCV,EAAAA,CAAAA,GAAIQ,EAAGR,CAAAA,CAAC,GAAIS,CAAAA,EAAAA,CAAGT,CAAC,GAAGW,EAAKH,GAAAA,EAAAA,CAAGR,CAAC,GAAGU,EAAC,IAAK,CAAA;;MAE3C,IAAIX,CAAAA,GAAI,GAAGA,CAAK,IAAA,GAAA;EAChB,IAAA,OAAOG,IAAI,CAAC,IAAI,EAAEH,CAAAA,CAAE,CAAC,EAAEC,CAAAA,GAAI,GAAI,CAAA,EAAE,EAAEpC,CAAI,GAAA,GAAA,CAAI,EAAE,CAAC,EAAEJ,QAAQ,EAAA;EACxD;EACF;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,3,4,5]}
@@ -0,0 +1,84 @@
1
+ /*
2
+ @d3plus/color v3.0.0
3
+ Color functions that extent the ability of d3-color.
4
+ Copyright (c) 2025 D3plus - https://d3plus.org
5
+ @license MIT
6
+ */
7
+ (e=>{"function"==typeof define&&define.amd?define(e):e()})(function(){if("undefined"!=typeof window){try{if("undefined"==typeof SVGElement||Boolean(SVGElement.prototype.innerHTML))return}catch(e){return}function r(e){switch(e.nodeType){case 1:var t=e,n="";return n+="<"+t.tagName,t.hasAttributes()&&[].forEach.call(t.attributes,function(e){n+=" "+e.name+'="'+e.value+'"'}),n+=">",t.hasChildNodes()&&[].forEach.call(t.childNodes,function(e){n+=r(e)}),n+="</"+t.tagName+">";case 3:return e.textContent.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");case 8:return"\x3c!--"+e.nodeValue+"--\x3e"}}Object.defineProperty(SVGElement.prototype,"innerHTML",{get:function(){var t="";return[].forEach.call(this.childNodes,function(e){t+=r(e)}),t},set:function(e){for(;this.firstChild;)this.removeChild(this.firstChild);try{var t=new DOMParser,n=(t.async=!1,"<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"+e+"</svg>"),r=t.parseFromString(n,"text/xml").documentElement;[].forEach.call(r.childNodes,function(e){this.appendChild(this.ownerDocument.importNode(e,!0))}.bind(this))}catch(e){throw new Error("Error parsing markup string")}}}),Object.defineProperty(SVGElement.prototype,"innerSVG",{get:function(){return this.innerHTML},set:function(e){this.innerHTML=e}})}}),((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("@d3plus/color",["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).d3plus={})})(this,function(e){function t(e,t,n){(e.prototype=t.prototype=n).constructor=e}function n(e,t){var n,r=Object.create(e.prototype);for(n in t)r[n]=t[n];return r}function h(){}var r=1/.7,i="\\s*([+-]?\\d+)\\s*",a="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",o="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",s=/^#([0-9a-f]{3,8})$/,l=new RegExp(`^rgb\\(${i},${i},${i}\\)$`),u=new RegExp(`^rgb\\(${o},${o},${o}\\)$`),_=new RegExp(`^rgba\\(${i},${i},${i},${a}\\)$`),L=new RegExp(`^rgba\\(${o},${o},${o},${a}\\)$`),T=new RegExp(`^hsl\\(${a},${o},${o}\\)$`),V=new RegExp(`^hsla\\(${a},${o},${o},${a}\\)$`),c={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function g(){return this.rgb().formatHex()}function d(){return this.rgb().formatRgb()}function f(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=s.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?p(t):3===n?new y(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?m(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?m(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=l.exec(e))?new y(t[1],t[2],t[3],1):(t=u.exec(e))?new y(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=_.exec(e))?m(t[1],t[2],t[3],t[4]):(t=L.exec(e))?m(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=T.exec(e))?N(t[1],t[2]/100,t[3]/100,1):(t=V.exec(e))?N(t[1],t[2]/100,t[3]/100,t[4]):c.hasOwnProperty(e)?p(c[e]):"transparent"===e?new y(NaN,NaN,NaN,0):null}function p(e){return new y(e>>16&255,e>>8&255,255&e,1)}function m(e,t,n,r){return new y(e=r<=0?t=n=NaN:e,t,n,r)}function b(e,t,n,r){return 1===arguments.length?(i=(i=e)instanceof h?i:f(i))?new y((i=i.rgb()).r,i.g,i.b,i.opacity):new y:new y(e,t,n,null==r?1:r);var i}function y(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function w(){return"#"+x(this.r)+x(this.g)+x(this.b)}function k(){var e=v(this.opacity);return(1===e?"rgb(":"rgba(")+$(this.r)+`, ${$(this.g)}, `+$(this.b)+(1===e?")":`, ${e})`)}function v(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function $(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function x(e){return((e=$(e))<16?"0":"")+e.toString(16)}function N(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||1<=n?e=t=NaN:t<=0&&(e=NaN),new C(e,t,n,r)}function E(e){var t,n,r,i,a,o,s,l;return e instanceof C?new C(e.h,e.s,e.l,e.opacity):(e=e instanceof h?e:f(e))?e instanceof C?e:(t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=NaN,l=((a=Math.max(t,n,r))+i)/2,(s=a-i)?(o=t===a?(n-r)/s+6*(n<r):n===a?(r-t)/s+2:(t-n)/s+4,s/=l<.5?a+i:2-a-i,o*=60):s=0<l&&l<1?0:o,new C(o,s,l,e.opacity)):new C}function M(e,t,n,r){return 1===arguments.length?E(e):new C(e,t,n,null==r?1:r)}function C(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function S(e){return(e=(e||0)%360)<0?e+360:e}function H(e){return Math.max(0,Math.min(1,e||0))}
8
+ /* From FvD 13.37, CSS Color Module Level 3 */function A(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}
9
+ /**
10
+ @function colorAdd
11
+ @desc Adds two colors together.
12
+ @param {String} c1 The first color, a valid CSS color string.
13
+ @param {String} c2 The second color, also a valid CSS color string.
14
+ @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.
15
+ @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.
16
+ @returns {String}
17
+ */t(h,f,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:g,formatHex:g,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return E(this).formatHsl()},formatRgb:d,toString:d}),t(y,b,n(h,{brighter(e){return e=null==e?r:Math.pow(r,e),new y(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new y(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new y($(this.r),$(this.g),$(this.b),v(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:w,formatHex:w,formatHex8:function(){return"#"+x(this.r)+x(this.g)+x(this.b)+x(255*(isNaN(this.opacity)?1:this.opacity))},formatRgb:k,toString:k})),t(C,M,n(h,{brighter(e){return e=null==e?r:Math.pow(r,e),new C(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new C(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,t=n+(n<.5?n:1-n)*t,n=2*n-t;return new y(A(240<=e?e-240:120+e,n,t),A(e,n,t),A(e<120?240+e:e-120,n,t),this.opacity)},clamp(){return new C(S(this.h),H(this.s),H(this.l),v(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){var e=v(this.opacity);return(1===e?"hsl(":"hsla(")+S(this.h)+`, ${100*H(this.s)}%, ${100*H(this.l)}%`+(1===e?")":`, ${e})`)}}));class q extends Map{get(e){return super.get(O(this,e))}has(e){return super.has(O(this,e))}set(e,t){return super.set((({_intern:e,_key:t},n)=>(t=t(n),e.has(t)?e.get(t):(e.set(t,n),n)))(this,e),t)}delete(e){return super.delete((({_intern:e,_key:t},n)=>(t=t(n),e.has(t)&&(n=e.get(t),e.delete(t)),n))(this,e))}constructor(n,e=function(e){return null!==e&&"object"==typeof e?e.valueOf():e}){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=n)for(let[e,t]of n)this.set(e,t)}}function O({_intern:e,_key:t},n){t=t(n);return e.has(t)?e.get(t):n}let R=Symbol("implicit");
18
+ /**
19
+ @namespace {Object} colorDefaults
20
+ @desc A set of default color values used when assigning colors based on data.
21
+ *
22
+ * | Name | Default | Description |
23
+ * |---|---|---|
24
+ * | dark | "#555555" | Used in the [contrast](#contrast) function when the color given is very light. |
25
+ * | light | "#f7f7f7" | Used in the [contrast](#contrast) function when the color given is very dark. |
26
+ * | missing | "#cccccc" | Used in the [assign](#assign) function when the value passed is `null` or `undefined`. |
27
+ * | off | "#C44536" | Used in the [assign](#assign) function when the value passed is `false`. |
28
+ * | on | "#6A994E" | Used in the [assign](#assign) function when the value passed is `true`. |
29
+ * | scale | "#4281A4", "#F6AE2D", "#C44536", "#2A9D8F", "#6A994E", "#CEB54A", "#5E548E", "#C08497", "#99582A", "#8C8C99", "#1D3557", "#D08C60", "#6D2E46", "#8BB19C", "#52796F", "#5E60CE", "#985277", "#5C374C" | An ordinal scale used in the [assign](#assign) function for non-valid color strings and numbers. |
30
+ */let j={dark:"#555555",light:"#f7f7f7",missing:"#cccccc",off:"#C44536",on:"#6A994E",scale:function e(){var n=new q,r=[],i=[],a=R;function o(e){let t=n.get(e);if(void 0===t){if(a!==R)return a;n.set(e,t=r.push(e)-1)}return i[t%i.length]}return o.domain=function(e){if(!arguments.length)return r.slice();r=[],n=new q;for(var t of e)n.has(t)||n.set(t,r.push(t)-1);return o},o.range=function(e){return arguments.length?(i=Array.from(e),o):i.slice()},o.unknown=function(e){return arguments.length?(a=e,o):a},o.copy=function(){return e(r,i).unknown(a)},function(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}.apply(o,arguments),o}().range(["#4281A4","#F6AE2D","#C44536","#2A9D8F","#6A994E","#CEB54A","#5E548E","#C08497","#99582A","#8C8C99","#1D3557","#D08C60","#6D2E46","#8BB19C","#52796F","#5E60CE","#985277","#5C374C"])};
31
+ /**
32
+ Returns a color based on a key, whether it is present in a user supplied object or in the default object.
33
+ @returns {String}
34
+ @private
35
+ */function D(e,t={}){return e in t?t[e]:e in j?j[e]:j.missing}
36
+ /**
37
+ @function colorAssign
38
+ @desc Assigns a color to a value using a predefined set of defaults.
39
+ @param {String} c A valid CSS color string.
40
+ @param {Object} [u = defaults] An object containing overrides of the default colors.
41
+ @returns {String}
42
+ */e.colorAdd=function(e,t,n=1,r=1){e=M(e),t=M(t);let i=Math.abs(t.h*r-e.h*n),a=(180<i&&(i-=360),(Math.min(e.h,t.h)+i/2)%360);var o=e.l+(t.l*r-e.l*n)/2,t=e.s+(t.s*r-e.s*n)/2;
43
+ // a = o1 + (o2 - o1) / 2;
44
+ return a<0&&(a+=360),M(`hsl(${a},${100*t}%,${100*o}%)`).toString();
45
+ // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();
46
+ },e.colorAssign=function(e,t={}){
47
+ // If the value is null or undefined, set to grey.
48
+ return 0<=[null,void 0].indexOf(e)?D("missing",t):!0===e?D("on",t):!1===e?D("off",t):
49
+ // If the value is not a valid color string, use the color scale.
50
+ f(e)?e.toString():D("scale",t)(e)}
51
+ /**
52
+ @function colorContrast
53
+ @desc A set of default color values used when assigning colors based on data.
54
+ @param {String} c A valid CSS color string.
55
+ @param {Object} [u = defaults] An object containing overrides of the default colors.
56
+ @returns {String}
57
+ */,e.colorContrast=function(e,t={}){return D(128<=(299*(e=b(e)).r+587*e.g+114*e.b)/1e3?"dark":"light",t)}
58
+ /**
59
+ @function colorLegible
60
+ @desc Darkens a color so that it will appear legible on a white background.
61
+ @param {String} c A valid CSS color string.
62
+ @returns {String}
63
+ */,e.colorDefaults=j,e.colorLegible=function(e){return.45<(e=M(e)).l&&(.8<e.s&&(e.s=.8),e.l=.45),e.toString()}
64
+ /**
65
+ @function colorLighter
66
+ @desc Similar to d3.color.brighter, except that this also reduces saturation so that colors don't appear neon.
67
+ @param {String} c A valid CSS color string.
68
+ @param {String} [i = 0.5] A value from 0 to 1 dictating the strength of the function.
69
+ @returns {String}
70
+ */,e.colorLighter=function(e,t=.5){return t*=1-(e=M(e)).l,e.l+=t,e.s-=t,e.toString()}
71
+ /**
72
+ @function colorSubtract
73
+ @desc Subtracts one color from another.
74
+ @param {String} c1 The base color, a valid CSS color string.
75
+ @param {String} c2 The color to remove from the base color, also a valid CSS color string.
76
+ @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.
77
+ @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.
78
+ @returns {String}
79
+ */,e.colorSubtract=function(e,t,n=1,r=1){e=M(e);let i=(t=M(t)).h*r-e.h*n,a=(180<Math.abs(i)&&(i-=360),(e.h-i)%360);var o=e.l-(t.l*r-e.l*n)/2,t=e.s-(t.s*r-e.s*n)/2;
80
+ // a = o1 - (o2 - o1) / 2;
81
+ return a<0&&(a+=360),M(`hsl(${a},${100*t}%,${100*o}%)`).toString();
82
+ // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();
83
+ }});
84
+ //# sourceMappingURL=d3plus-color.full.js.map
@@ -0,0 +1,275 @@
1
+ /*
2
+ @d3plus/color v3.0.0
3
+ Color functions that extent the ability of d3-color.
4
+ Copyright (c) 2025 D3plus - https://d3plus.org
5
+ @license MIT
6
+ */
7
+
8
+ (function (factory) {
9
+ typeof define === 'function' && define.amd ? define(factory) :
10
+ factory();
11
+ })((function () { 'use strict';
12
+
13
+ if (typeof window !== "undefined") {
14
+ (function () {
15
+ try {
16
+ if (typeof SVGElement === 'undefined' || Boolean(SVGElement.prototype.innerHTML)) {
17
+ return;
18
+ }
19
+ } catch (e) {
20
+ return;
21
+ }
22
+
23
+ function serializeNode (node) {
24
+ switch (node.nodeType) {
25
+ case 1:
26
+ return serializeElementNode(node);
27
+ case 3:
28
+ return serializeTextNode(node);
29
+ case 8:
30
+ return serializeCommentNode(node);
31
+ }
32
+ }
33
+
34
+ function serializeTextNode (node) {
35
+ return node.textContent.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
36
+ }
37
+
38
+ function serializeCommentNode (node) {
39
+ return '<!--' + node.nodeValue + '-->'
40
+ }
41
+
42
+ function serializeElementNode (node) {
43
+ var output = '';
44
+
45
+ output += '<' + node.tagName;
46
+
47
+ if (node.hasAttributes()) {
48
+ [].forEach.call(node.attributes, function(attrNode) {
49
+ output += ' ' + attrNode.name + '="' + attrNode.value + '"';
50
+ });
51
+ }
52
+
53
+ output += '>';
54
+
55
+ if (node.hasChildNodes()) {
56
+ [].forEach.call(node.childNodes, function(childNode) {
57
+ output += serializeNode(childNode);
58
+ });
59
+ }
60
+
61
+ output += '</' + node.tagName + '>';
62
+
63
+ return output;
64
+ }
65
+
66
+ Object.defineProperty(SVGElement.prototype, 'innerHTML', {
67
+ get: function () {
68
+ var output = '';
69
+
70
+ [].forEach.call(this.childNodes, function(childNode) {
71
+ output += serializeNode(childNode);
72
+ });
73
+
74
+ return output;
75
+ },
76
+ set: function (markup) {
77
+ while (this.firstChild) {
78
+ this.removeChild(this.firstChild);
79
+ }
80
+
81
+ try {
82
+ var dXML = new DOMParser();
83
+ dXML.async = false;
84
+
85
+ var sXML = '<svg xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'>' + markup + '</svg>';
86
+ var svgDocElement = dXML.parseFromString(sXML, 'text/xml').documentElement;
87
+
88
+ [].forEach.call(svgDocElement.childNodes, function(childNode) {
89
+ this.appendChild(this.ownerDocument.importNode(childNode, true));
90
+ }.bind(this));
91
+ } catch (e) {
92
+ throw new Error('Error parsing markup string');
93
+ }
94
+ }
95
+ });
96
+
97
+ Object.defineProperty(SVGElement.prototype, 'innerSVG', {
98
+ get: function () {
99
+ return this.innerHTML;
100
+ },
101
+ set: function (markup) {
102
+ this.innerHTML = markup;
103
+ }
104
+ });
105
+
106
+ })();
107
+ }
108
+
109
+ }));
110
+
111
+ (function (global, factory) {
112
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color'), require('d3-scale')) :
113
+ typeof define === 'function' && define.amd ? define('@d3plus/color', ['exports', 'd3-color', 'd3-scale'], factory) :
114
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3plus = {}, global.d3Color, global.d3Scale));
115
+ })(this, (function (exports, d3Color, d3Scale) { 'use strict';
116
+
117
+ /**
118
+ @function colorAdd
119
+ @desc Adds two colors together.
120
+ @param {String} c1 The first color, a valid CSS color string.
121
+ @param {String} c2 The second color, also a valid CSS color string.
122
+ @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.
123
+ @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.
124
+ @returns {String}
125
+ */ function add(c1, c2, o1 = 1, o2 = 1) {
126
+ c1 = d3Color.hsl(c1);
127
+ c2 = d3Color.hsl(c2);
128
+ let d = Math.abs(c2.h * o2 - c1.h * o1);
129
+ if (d > 180) d -= 360;
130
+ let h = (Math.min(c1.h, c2.h) + d / 2) % 360;
131
+ const l = c1.l + (c2.l * o2 - c1.l * o1) / 2, s = c1.s + (c2.s * o2 - c1.s * o1) / 2;
132
+ // a = o1 + (o2 - o1) / 2;
133
+ if (h < 0) h += 360;
134
+ return d3Color.hsl(`hsl(${h},${s * 100}%,${l * 100}%)`).toString();
135
+ // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();
136
+ }
137
+
138
+ /**
139
+ @namespace {Object} colorDefaults
140
+ @desc A set of default color values used when assigning colors based on data.
141
+ *
142
+ * | Name | Default | Description |
143
+ * |---|---|---|
144
+ * | dark | "#555555" | Used in the [contrast](#contrast) function when the color given is very light. |
145
+ * | light | "#f7f7f7" | Used in the [contrast](#contrast) function when the color given is very dark. |
146
+ * | missing | "#cccccc" | Used in the [assign](#assign) function when the value passed is `null` or `undefined`. |
147
+ * | off | "#C44536" | Used in the [assign](#assign) function when the value passed is `false`. |
148
+ * | on | "#6A994E" | Used in the [assign](#assign) function when the value passed is `true`. |
149
+ * | scale | "#4281A4", "#F6AE2D", "#C44536", "#2A9D8F", "#6A994E", "#CEB54A", "#5E548E", "#C08497", "#99582A", "#8C8C99", "#1D3557", "#D08C60", "#6D2E46", "#8BB19C", "#52796F", "#5E60CE", "#985277", "#5C374C" | An ordinal scale used in the [assign](#assign) function for non-valid color strings and numbers. |
150
+ */ const defaults = {
151
+ dark: "#555555",
152
+ light: "#f7f7f7",
153
+ missing: "#cccccc",
154
+ off: "#C44536",
155
+ on: "#6A994E",
156
+ scale: d3Scale.scaleOrdinal().range([
157
+ "#4281A4",
158
+ "#F6AE2D",
159
+ "#C44536",
160
+ "#2A9D8F",
161
+ "#6A994E",
162
+ "#CEB54A",
163
+ "#5E548E",
164
+ "#C08497",
165
+ "#99582A",
166
+ "#8C8C99",
167
+ "#1D3557",
168
+ "#D08C60",
169
+ "#6D2E46",
170
+ "#8BB19C",
171
+ "#52796F",
172
+ "#5E60CE",
173
+ "#985277",
174
+ "#5C374C"
175
+ ])
176
+ };
177
+ /**
178
+ Returns a color based on a key, whether it is present in a user supplied object or in the default object.
179
+ @returns {String}
180
+ @private
181
+ */ function getColor(k, u = {}) {
182
+ return k in u ? u[k] : k in defaults ? defaults[k] : defaults.missing;
183
+ }
184
+
185
+ /**
186
+ @function colorAssign
187
+ @desc Assigns a color to a value using a predefined set of defaults.
188
+ @param {String} c A valid CSS color string.
189
+ @param {Object} [u = defaults] An object containing overrides of the default colors.
190
+ @returns {String}
191
+ */ function assign(c, u = {}) {
192
+ // If the value is null or undefined, set to grey.
193
+ if ([
194
+ null,
195
+ void 0
196
+ ].indexOf(c) >= 0) return getColor("missing", u);
197
+ else if (c === true) return getColor("on", u);
198
+ else if (c === false) return getColor("off", u);
199
+ const p = d3Color.color(c);
200
+ // If the value is not a valid color string, use the color scale.
201
+ if (!p) return getColor("scale", u)(c);
202
+ return c.toString();
203
+ }
204
+
205
+ /**
206
+ @function colorContrast
207
+ @desc A set of default color values used when assigning colors based on data.
208
+ @param {String} c A valid CSS color string.
209
+ @param {Object} [u = defaults] An object containing overrides of the default colors.
210
+ @returns {String}
211
+ */ function contrast(c, u = {}) {
212
+ c = d3Color.rgb(c);
213
+ const yiq = (c.r * 299 + c.g * 587 + c.b * 114) / 1000;
214
+ return yiq >= 128 ? getColor("dark", u) : getColor("light", u);
215
+ }
216
+
217
+ /**
218
+ @function colorLegible
219
+ @desc Darkens a color so that it will appear legible on a white background.
220
+ @param {String} c A valid CSS color string.
221
+ @returns {String}
222
+ */ function legible(c) {
223
+ c = d3Color.hsl(c);
224
+ if (c.l > 0.45) {
225
+ if (c.s > 0.8) c.s = 0.8;
226
+ c.l = 0.45;
227
+ }
228
+ return c.toString();
229
+ }
230
+
231
+ /**
232
+ @function colorLighter
233
+ @desc Similar to d3.color.brighter, except that this also reduces saturation so that colors don't appear neon.
234
+ @param {String} c A valid CSS color string.
235
+ @param {String} [i = 0.5] A value from 0 to 1 dictating the strength of the function.
236
+ @returns {String}
237
+ */ function lighter(c, i = 0.5) {
238
+ c = d3Color.hsl(c);
239
+ i *= 1 - c.l;
240
+ c.l += i;
241
+ c.s -= i;
242
+ return c.toString();
243
+ }
244
+
245
+ /**
246
+ @function colorSubtract
247
+ @desc Subtracts one color from another.
248
+ @param {String} c1 The base color, a valid CSS color string.
249
+ @param {String} c2 The color to remove from the base color, also a valid CSS color string.
250
+ @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.
251
+ @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.
252
+ @returns {String}
253
+ */ function subtract(c1, c2, o1 = 1, o2 = 1) {
254
+ c1 = d3Color.hsl(c1);
255
+ c2 = d3Color.hsl(c2);
256
+ let d = c2.h * o2 - c1.h * o1;
257
+ if (Math.abs(d) > 180) d -= 360;
258
+ let h = (c1.h - d) % 360;
259
+ const l = c1.l - (c2.l * o2 - c1.l * o1) / 2, s = c1.s - (c2.s * o2 - c1.s * o1) / 2;
260
+ // a = o1 - (o2 - o1) / 2;
261
+ if (h < 0) h += 360;
262
+ return d3Color.hsl(`hsl(${h},${s * 100}%,${l * 100}%)`).toString();
263
+ // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();
264
+ }
265
+
266
+ exports.colorAdd = add;
267
+ exports.colorAssign = assign;
268
+ exports.colorContrast = contrast;
269
+ exports.colorDefaults = defaults;
270
+ exports.colorLegible = legible;
271
+ exports.colorLighter = lighter;
272
+ exports.colorSubtract = subtract;
273
+
274
+ }));
275
+ //# sourceMappingURL=d3plus-color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d3plus-color.js","sources":["../src/add.js","../src/defaults.js","../src/assign.js","../src/contrast.js","../src/legible.js","../src/lighter.js","../src/subtract.js"],"sourcesContent":["import {hsl} from \"d3-color\";\n\n/**\n @function colorAdd\n @desc Adds two colors together.\n @param {String} c1 The first color, a valid CSS color string.\n @param {String} c2 The second color, also a valid CSS color string.\n @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.\n @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.\n @returns {String}\n*/\nexport default function(c1, c2, o1 = 1, o2 = 1) {\n c1 = hsl(c1);\n c2 = hsl(c2);\n let d = Math.abs(c2.h * o2 - c1.h * o1);\n if (d > 180) d -= 360;\n let h = (Math.min(c1.h, c2.h) + d / 2) % 360;\n const l = c1.l + (c2.l * o2 - c1.l * o1) / 2,\n s = c1.s + (c2.s * o2 - c1.s * o1) / 2;\n // a = o1 + (o2 - o1) / 2;\n if (h < 0) h += 360;\n return hsl(`hsl(${h},${s * 100}%,${l * 100}%)`).toString();\n // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();\n}\n","import {scaleOrdinal} from \"d3-scale\";\n\n/**\n @namespace {Object} colorDefaults\n @desc A set of default color values used when assigning colors based on data.\n *\n * | Name | Default | Description |\n * |---|---|---|\n * | dark | \"#555555\" | Used in the [contrast](#contrast) function when the color given is very light. |\n * | light | \"#f7f7f7\" | Used in the [contrast](#contrast) function when the color given is very dark. |\n * | missing | \"#cccccc\" | Used in the [assign](#assign) function when the value passed is `null` or `undefined`. |\n * | off | \"#C44536\" | Used in the [assign](#assign) function when the value passed is `false`. |\n * | on | \"#6A994E\" | Used in the [assign](#assign) function when the value passed is `true`. |\n * | scale | \"#4281A4\", \"#F6AE2D\", \"#C44536\", \"#2A9D8F\", \"#6A994E\", \"#CEB54A\", \"#5E548E\", \"#C08497\", \"#99582A\", \"#8C8C99\", \"#1D3557\", \"#D08C60\", \"#6D2E46\", \"#8BB19C\", \"#52796F\", \"#5E60CE\", \"#985277\", \"#5C374C\" | An ordinal scale used in the [assign](#assign) function for non-valid color strings and numbers. |\n*/\nconst defaults = {\n dark: \"#555555\",\n light: \"#f7f7f7\",\n missing: \"#cccccc\",\n off: \"#C44536\",\n on: \"#6A994E\",\n scale: scaleOrdinal().range([\n \"#4281A4\",\n \"#F6AE2D\",\n \"#C44536\",\n \"#2A9D8F\",\n \"#6A994E\",\n \"#CEB54A\",\n \"#5E548E\",\n \"#C08497\",\n \"#99582A\",\n \"#8C8C99\",\n \"#1D3557\",\n \"#D08C60\",\n \"#6D2E46\",\n \"#8BB19C\",\n \"#52796F\",\n \"#5E60CE\",\n \"#985277\",\n \"#5C374C\"\n ])\n};\n\n/**\n Returns a color based on a key, whether it is present in a user supplied object or in the default object.\n @returns {String}\n @private\n*/\nexport function getColor(k, u = {}) {\n return k in u ? u[k] : k in defaults ? defaults[k] : defaults.missing;\n}\n\nexport default defaults;\n","import {color} from \"d3-color\";\nimport {getColor} from \"./defaults.js\";\n\n/**\n @function colorAssign\n @desc Assigns a color to a value using a predefined set of defaults.\n @param {String} c A valid CSS color string.\n @param {Object} [u = defaults] An object containing overrides of the default colors.\n @returns {String}\n*/\nexport default function(c, u = {}) {\n\n // If the value is null or undefined, set to grey.\n if ([null, void 0].indexOf(c) >= 0) return getColor(\"missing\", u);\n // Else if the value is true, set to green.\n else if (c === true) return getColor(\"on\", u);\n // Else if the value is false, set to red.\n else if (c === false) return getColor(\"off\", u);\n\n const p = color(c);\n // If the value is not a valid color string, use the color scale.\n if (!p) return getColor(\"scale\", u)(c);\n\n return c.toString();\n\n}\n","import {getColor} from \"./defaults.js\";\nimport {rgb} from \"d3-color\";\n\n/**\n @function colorContrast\n @desc A set of default color values used when assigning colors based on data.\n @param {String} c A valid CSS color string.\n @param {Object} [u = defaults] An object containing overrides of the default colors.\n @returns {String}\n*/\nexport default function(c, u = {}) {\n c = rgb(c);\n const yiq = (c.r * 299 + c.g * 587 + c.b * 114) / 1000;\n return yiq >= 128 ? getColor(\"dark\", u) : getColor(\"light\", u);\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorLegible\n @desc Darkens a color so that it will appear legible on a white background.\n @param {String} c A valid CSS color string.\n @returns {String}\n*/\nexport default function(c) {\n c = hsl(c);\n if (c.l > 0.45) {\n if (c.s > 0.8) c.s = 0.8;\n c.l = 0.45;\n }\n return c.toString();\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorLighter\n @desc Similar to d3.color.brighter, except that this also reduces saturation so that colors don't appear neon.\n @param {String} c A valid CSS color string.\n @param {String} [i = 0.5] A value from 0 to 1 dictating the strength of the function.\n @returns {String}\n*/\nexport default function(c, i = 0.5) {\n c = hsl(c);\n i *= 1 - c.l;\n c.l += i;\n c.s -= i;\n return c.toString();\n}\n","import {hsl} from \"d3-color\";\n\n/**\n @function colorSubtract\n @desc Subtracts one color from another.\n @param {String} c1 The base color, a valid CSS color string.\n @param {String} c2 The color to remove from the base color, also a valid CSS color string.\n @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.\n @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.\n @returns {String}\n*/\nexport default function(c1, c2, o1 = 1, o2 = 1) {\n c1 = hsl(c1);\n c2 = hsl(c2);\n let d = c2.h * o2 - c1.h * o1;\n if (Math.abs(d) > 180) d -= 360;\n let h = (c1.h - d) % 360;\n const l = c1.l - (c2.l * o2 - c1.l * o1) / 2,\n s = c1.s - (c2.s * o2 - c1.s * o1) / 2;\n // a = o1 - (o2 - o1) / 2;\n if (h < 0) h += 360;\n return hsl(`hsl(${h},${s * 100}%,${l * 100}%)`).toString();\n // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();\n}\n"],"names":["c1","c2","o1","o2","hsl","d","Math","abs","h","min","l","s","toString","defaults","dark","light","missing","off","on","scale","scaleOrdinal","range","getColor","k","u","c","indexOf","p","color","rgb","yiq","r","g","b","i"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /*
2
+ @d3plus/color v3.0.0
3
+ Color functions that extent the ability of d3-color.
4
+ Copyright (c) 2025 D3plus - https://d3plus.org
5
+ @license MIT
6
+ */
7
+ (e=>{"function"==typeof define&&define.amd?define(e):e()})(function(){if("undefined"!=typeof window){try{if("undefined"==typeof SVGElement||Boolean(SVGElement.prototype.innerHTML))return}catch(e){return}function r(e){switch(e.nodeType){case 1:var t=e,n="";return n+="<"+t.tagName,t.hasAttributes()&&[].forEach.call(t.attributes,function(e){n+=" "+e.name+'="'+e.value+'"'}),n+=">",t.hasChildNodes()&&[].forEach.call(t.childNodes,function(e){n+=r(e)}),n+="</"+t.tagName+">";case 3:return e.textContent.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");case 8:return"\x3c!--"+e.nodeValue+"--\x3e"}}Object.defineProperty(SVGElement.prototype,"innerHTML",{get:function(){var t="";return[].forEach.call(this.childNodes,function(e){t+=r(e)}),t},set:function(e){for(;this.firstChild;)this.removeChild(this.firstChild);try{var t=new DOMParser,n=(t.async=!1,"<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"+e+"</svg>"),r=t.parseFromString(n,"text/xml").documentElement;[].forEach.call(r.childNodes,function(e){this.appendChild(this.ownerDocument.importNode(e,!0))}.bind(this))}catch(e){throw new Error("Error parsing markup string")}}}),Object.defineProperty(SVGElement.prototype,"innerSVG",{get:function(){return this.innerHTML},set:function(e){this.innerHTML=e}})}}),((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("d3-color"),require("d3-scale")):"function"==typeof define&&define.amd?define("@d3plus/color",["exports","d3-color","d3-scale"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).d3plus={},e.d3Color,e.d3Scale)})(this,function(e,s,t){
8
+ /**
9
+ @namespace {Object} colorDefaults
10
+ @desc A set of default color values used when assigning colors based on data.
11
+ *
12
+ * | Name | Default | Description |
13
+ * |---|---|---|
14
+ * | dark | "#555555" | Used in the [contrast](#contrast) function when the color given is very light. |
15
+ * | light | "#f7f7f7" | Used in the [contrast](#contrast) function when the color given is very dark. |
16
+ * | missing | "#cccccc" | Used in the [assign](#assign) function when the value passed is `null` or `undefined`. |
17
+ * | off | "#C44536" | Used in the [assign](#assign) function when the value passed is `false`. |
18
+ * | on | "#6A994E" | Used in the [assign](#assign) function when the value passed is `true`. |
19
+ * | scale | "#4281A4", "#F6AE2D", "#C44536", "#2A9D8F", "#6A994E", "#CEB54A", "#5E548E", "#C08497", "#99582A", "#8C8C99", "#1D3557", "#D08C60", "#6D2E46", "#8BB19C", "#52796F", "#5E60CE", "#985277", "#5C374C" | An ordinal scale used in the [assign](#assign) function for non-valid color strings and numbers. |
20
+ */let n={dark:"#555555",light:"#f7f7f7",missing:"#cccccc",off:"#C44536",on:"#6A994E",scale:t.scaleOrdinal().range(["#4281A4","#F6AE2D","#C44536","#2A9D8F","#6A994E","#CEB54A","#5E548E","#C08497","#99582A","#8C8C99","#1D3557","#D08C60","#6D2E46","#8BB19C","#52796F","#5E60CE","#985277","#5C374C"])};
21
+ /**
22
+ Returns a color based on a key, whether it is present in a user supplied object or in the default object.
23
+ @returns {String}
24
+ @private
25
+ */function r(e,t={}){return e in t?t[e]:e in n?n[e]:n.missing}
26
+ /**
27
+ @function colorAssign
28
+ @desc Assigns a color to a value using a predefined set of defaults.
29
+ @param {String} c A valid CSS color string.
30
+ @param {Object} [u = defaults] An object containing overrides of the default colors.
31
+ @returns {String}
32
+ */e.colorAdd=
33
+ /**
34
+ @function colorAdd
35
+ @desc Adds two colors together.
36
+ @param {String} c1 The first color, a valid CSS color string.
37
+ @param {String} c2 The second color, also a valid CSS color string.
38
+ @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.
39
+ @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.
40
+ @returns {String}
41
+ */function(e,t,n=1,r=1){e=s.hsl(e),t=s.hsl(t);let o=Math.abs(t.h*r-e.h*n),i=(180<o&&(o-=360),(Math.min(e.h,t.h)+o/2)%360);var l=e.l+(t.l*r-e.l*n)/2,t=e.s+(t.s*r-e.s*n)/2;
42
+ // a = o1 + (o2 - o1) / 2;
43
+ return i<0&&(i+=360),s.hsl(`hsl(${i},${100*t}%,${100*l}%)`).toString();
44
+ // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();
45
+ },e.colorAssign=function(e,t={}){
46
+ // If the value is null or undefined, set to grey.
47
+ return 0<=[null,void 0].indexOf(e)?r("missing",t):!0===e?r("on",t):!1===e?r("off",t):
48
+ // If the value is not a valid color string, use the color scale.
49
+ s.color(e)?e.toString():r("scale",t)(e)}
50
+ /**
51
+ @function colorContrast
52
+ @desc A set of default color values used when assigning colors based on data.
53
+ @param {String} c A valid CSS color string.
54
+ @param {Object} [u = defaults] An object containing overrides of the default colors.
55
+ @returns {String}
56
+ */,e.colorContrast=function(e,t={}){return r(128<=(299*(e=s.rgb(e)).r+587*e.g+114*e.b)/1e3?"dark":"light",t)}
57
+ /**
58
+ @function colorLegible
59
+ @desc Darkens a color so that it will appear legible on a white background.
60
+ @param {String} c A valid CSS color string.
61
+ @returns {String}
62
+ */,e.colorDefaults=n,e.colorLegible=function(e){return.45<(e=s.hsl(e)).l&&(.8<e.s&&(e.s=.8),e.l=.45),e.toString()}
63
+ /**
64
+ @function colorLighter
65
+ @desc Similar to d3.color.brighter, except that this also reduces saturation so that colors don't appear neon.
66
+ @param {String} c A valid CSS color string.
67
+ @param {String} [i = 0.5] A value from 0 to 1 dictating the strength of the function.
68
+ @returns {String}
69
+ */,e.colorLighter=function(e,t=.5){return t*=1-(e=s.hsl(e)).l,e.l+=t,e.s-=t,e.toString()}
70
+ /**
71
+ @function colorSubtract
72
+ @desc Subtracts one color from another.
73
+ @param {String} c1 The base color, a valid CSS color string.
74
+ @param {String} c2 The color to remove from the base color, also a valid CSS color string.
75
+ @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.
76
+ @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.
77
+ @returns {String}
78
+ */,e.colorSubtract=function(e,t,n=1,r=1){e=s.hsl(e);let o=(t=s.hsl(t)).h*r-e.h*n,i=(180<Math.abs(o)&&(o-=360),(e.h-o)%360);var l=e.l-(t.l*r-e.l*n)/2,t=e.s-(t.s*r-e.s*n)/2;
79
+ // a = o1 - (o2 - o1) / 2;
80
+ return i<0&&(i+=360),s.hsl(`hsl(${i},${100*t}%,${100*l}%)`).toString();
81
+ // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();
82
+ }});
83
+ //# sourceMappingURL=d3plus-color.js.map