import { t as e } from "./linear-BePtLBEt.js";
import { r as t } from "./chunk-GEFDOKGD-bXEkwPrJ.js";
import { n, r } from "./src-hxErHTV1.js";
import { B as i, C as a, E as o, L as s, V as c, W as l, _ as u, a as d, c as f, d as p, v as m, y as h } from "./chunk-7R4GIKGN-DiZ1HYFd.js";
import { t as g } from "./ordinal-BKo-UFaW.js";
import { t as _ } from "./init-Bdvvvy1Z.js";
import { t as v } from "./line-xLJn8e8J.js";
import { t as y } from "./chunk-HHEYEP7N-BdiTBCvb.js";
import { t as b } from "./chunk-PU5JKC2W-CAfe4Tg3.js";
//#region node_modules/d3-array/src/range.js
function x(e, t, n) {
	e = +e, t = +t, n = (i = arguments.length) < 2 ? (t = e, e = 0, 1) : i < 3 ? 1 : +n;
	for (var r = -1, i = Math.max(0, Math.ceil((t - e) / n)) | 0, a = Array(i); ++r < i;) a[r] = e + r * n;
	return a;
}
//#endregion
//#region node_modules/d3-scale/src/band.js
function S() {
	var e = g().unknown(void 0), t = e.domain, n = e.range, r = 0, i = 1, a, o, s = !1, c = 0, l = 0, u = .5;
	delete e.unknown;
	function d() {
		var e = t().length, d = i < r, f = d ? i : r, p = d ? r : i;
		a = (p - f) / Math.max(1, e - c + l * 2), s && (a = Math.floor(a)), f += (p - f - a * (e - c)) * u, o = a * (1 - c), s && (f = Math.round(f), o = Math.round(o));
		var m = x(e).map(function(e) {
			return f + a * e;
		});
		return n(d ? m.reverse() : m);
	}
	return e.domain = function(e) {
		return arguments.length ? (t(e), d()) : t();
	}, e.range = function(e) {
		return arguments.length ? ([r, i] = e, r = +r, i = +i, d()) : [r, i];
	}, e.rangeRound = function(e) {
		return [r, i] = e, r = +r, i = +i, s = !0, d();
	}, e.bandwidth = function() {
		return o;
	}, e.step = function() {
		return a;
	}, e.round = function(e) {
		return arguments.length ? (s = !!e, d()) : s;
	}, e.padding = function(e) {
		return arguments.length ? (c = Math.min(1, l = +e), d()) : c;
	}, e.paddingInner = function(e) {
		return arguments.length ? (c = Math.min(1, e), d()) : c;
	}, e.paddingOuter = function(e) {
		return arguments.length ? (l = +e, d()) : l;
	}, e.align = function(e) {
		return arguments.length ? (u = Math.max(0, Math.min(1, e)), d()) : u;
	}, e.copy = function() {
		return S(t(), [r, i]).round(s).paddingInner(c).paddingOuter(l).align(u);
	}, _.apply(d(), arguments);
}
//#endregion
//#region node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-JWTSCODW.mjs
var C = (function() {
	var e = /* @__PURE__ */ n(function(e, t, n, r) {
		for (n ||= {}, r = e.length; r--; n[e[r]] = t);
		return n;
	}, "o"), t = [
		1,
		10,
		12,
		14,
		16,
		18,
		19,
		21,
		23
	], r = [2, 6], i = [1, 3], a = [1, 5], o = [1, 6], s = [1, 7], c = [
		1,
		5,
		10,
		12,
		14,
		16,
		18,
		19,
		21,
		23,
		34,
		35,
		36
	], l = [1, 25], u = [1, 26], d = [1, 28], f = [1, 29], p = [1, 30], m = [1, 31], h = [1, 32], g = [1, 33], _ = [1, 34], v = [1, 35], y = [1, 36], b = [1, 37], x = [1, 43], S = [1, 42], C = [1, 47], w = [1, 50], T = [
		1,
		10,
		12,
		14,
		16,
		18,
		19,
		21,
		23,
		34,
		35,
		36
	], E = [
		1,
		10,
		12,
		14,
		16,
		18,
		19,
		21,
		23,
		24,
		26,
		27,
		28,
		34,
		35,
		36
	], D = [
		1,
		10,
		12,
		14,
		16,
		18,
		19,
		21,
		23,
		24,
		26,
		27,
		28,
		34,
		35,
		36,
		41,
		42,
		43,
		44,
		45,
		46,
		47,
		48,
		49,
		50
	], O = [1, 64], k = {
		trace: /* @__PURE__ */ n(function() {}, "trace"),
		yy: {},
		symbols_: {
			error: 2,
			start: 3,
			eol: 4,
			XYCHART: 5,
			chartConfig: 6,
			document: 7,
			CHART_ORIENTATION: 8,
			statement: 9,
			title: 10,
			text: 11,
			X_AXIS: 12,
			parseXAxis: 13,
			Y_AXIS: 14,
			parseYAxis: 15,
			LINE: 16,
			plotData: 17,
			BAR: 18,
			acc_title: 19,
			acc_title_value: 20,
			acc_descr: 21,
			acc_descr_value: 22,
			acc_descr_multiline_value: 23,
			SQUARE_BRACES_START: 24,
			commaSeparatedNumbers: 25,
			SQUARE_BRACES_END: 26,
			NUMBER_WITH_DECIMAL: 27,
			COMMA: 28,
			xAxisData: 29,
			bandData: 30,
			ARROW_DELIMITER: 31,
			commaSeparatedTexts: 32,
			yAxisData: 33,
			NEWLINE: 34,
			SEMI: 35,
			EOF: 36,
			alphaNum: 37,
			STR: 38,
			MD_STR: 39,
			alphaNumToken: 40,
			AMP: 41,
			NUM: 42,
			ALPHA: 43,
			PLUS: 44,
			EQUALS: 45,
			MULT: 46,
			DOT: 47,
			BRKT: 48,
			MINUS: 49,
			UNDERSCORE: 50,
			$accept: 0,
			$end: 1
		},
		terminals_: {
			2: "error",
			5: "XYCHART",
			8: "CHART_ORIENTATION",
			10: "title",
			12: "X_AXIS",
			14: "Y_AXIS",
			16: "LINE",
			18: "BAR",
			19: "acc_title",
			20: "acc_title_value",
			21: "acc_descr",
			22: "acc_descr_value",
			23: "acc_descr_multiline_value",
			24: "SQUARE_BRACES_START",
			26: "SQUARE_BRACES_END",
			27: "NUMBER_WITH_DECIMAL",
			28: "COMMA",
			31: "ARROW_DELIMITER",
			34: "NEWLINE",
			35: "SEMI",
			36: "EOF",
			38: "STR",
			39: "MD_STR",
			41: "AMP",
			42: "NUM",
			43: "ALPHA",
			44: "PLUS",
			45: "EQUALS",
			46: "MULT",
			47: "DOT",
			48: "BRKT",
			49: "MINUS",
			50: "UNDERSCORE"
		},
		productions_: [
			0,
			[3, 2],
			[3, 3],
			[3, 2],
			[3, 1],
			[6, 1],
			[7, 0],
			[7, 2],
			[9, 2],
			[9, 2],
			[9, 2],
			[9, 2],
			[9, 2],
			[9, 3],
			[9, 2],
			[9, 3],
			[9, 2],
			[9, 2],
			[9, 1],
			[17, 3],
			[25, 3],
			[25, 1],
			[13, 1],
			[13, 2],
			[13, 1],
			[29, 1],
			[29, 3],
			[30, 3],
			[32, 3],
			[32, 1],
			[15, 1],
			[15, 2],
			[15, 1],
			[33, 3],
			[4, 1],
			[4, 1],
			[4, 1],
			[11, 1],
			[11, 1],
			[11, 1],
			[37, 1],
			[37, 2],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1],
			[40, 1]
		],
		performAction: /* @__PURE__ */ n(function(e, t, n, r, i, a, o) {
			var s = a.length - 1;
			switch (i) {
				case 5:
					r.setOrientation(a[s]);
					break;
				case 9:
					r.setDiagramTitle(a[s].text.trim());
					break;
				case 12:
					r.setLineData({
						text: "",
						type: "text"
					}, a[s]);
					break;
				case 13:
					r.setLineData(a[s - 1], a[s]);
					break;
				case 14:
					r.setBarData({
						text: "",
						type: "text"
					}, a[s]);
					break;
				case 15:
					r.setBarData(a[s - 1], a[s]);
					break;
				case 16:
					this.$ = a[s].trim(), r.setAccTitle(this.$);
					break;
				case 17:
				case 18:
					this.$ = a[s].trim(), r.setAccDescription(this.$);
					break;
				case 19:
					this.$ = a[s - 1];
					break;
				case 20:
					this.$ = [Number(a[s - 2]), ...a[s]];
					break;
				case 21:
					this.$ = [Number(a[s])];
					break;
				case 22:
					r.setXAxisTitle(a[s]);
					break;
				case 23:
					r.setXAxisTitle(a[s - 1]);
					break;
				case 24:
					r.setXAxisTitle({
						type: "text",
						text: ""
					});
					break;
				case 25:
					r.setXAxisBand(a[s]);
					break;
				case 26:
					r.setXAxisRangeData(Number(a[s - 2]), Number(a[s]));
					break;
				case 27:
					this.$ = a[s - 1];
					break;
				case 28:
					this.$ = [a[s - 2], ...a[s]];
					break;
				case 29:
					this.$ = [a[s]];
					break;
				case 30:
					r.setYAxisTitle(a[s]);
					break;
				case 31:
					r.setYAxisTitle(a[s - 1]);
					break;
				case 32:
					r.setYAxisTitle({
						type: "text",
						text: ""
					});
					break;
				case 33:
					r.setYAxisRangeData(Number(a[s - 2]), Number(a[s]));
					break;
				case 37:
					this.$ = {
						text: a[s],
						type: "text"
					};
					break;
				case 38:
					this.$ = {
						text: a[s],
						type: "text"
					};
					break;
				case 39:
					this.$ = {
						text: a[s],
						type: "markdown"
					};
					break;
				case 40:
					this.$ = a[s];
					break;
				case 41:
					this.$ = a[s - 1] + "" + a[s];
					break;
			}
		}, "anonymous"),
		table: [
			e(t, r, {
				3: 1,
				4: 2,
				7: 4,
				5: i,
				34: a,
				35: o,
				36: s
			}),
			{ 1: [3] },
			e(t, r, {
				4: 2,
				7: 4,
				3: 8,
				5: i,
				34: a,
				35: o,
				36: s
			}),
			e(t, r, {
				4: 2,
				7: 4,
				6: 9,
				3: 10,
				5: i,
				8: [1, 11],
				34: a,
				35: o,
				36: s
			}),
			{
				1: [2, 4],
				9: 12,
				10: [1, 13],
				12: [1, 14],
				14: [1, 15],
				16: [1, 16],
				18: [1, 17],
				19: [1, 18],
				21: [1, 19],
				23: [1, 20]
			},
			e(c, [2, 34]),
			e(c, [2, 35]),
			e(c, [2, 36]),
			{ 1: [2, 1] },
			e(t, r, {
				4: 2,
				7: 4,
				3: 21,
				5: i,
				34: a,
				35: o,
				36: s
			}),
			{ 1: [2, 3] },
			e(c, [2, 5]),
			e(t, [2, 7], {
				4: 22,
				34: a,
				35: o,
				36: s
			}),
			{
				11: 23,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			{
				11: 39,
				13: 38,
				24: x,
				27: S,
				29: 40,
				30: 41,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			{
				11: 45,
				15: 44,
				27: C,
				33: 46,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			{
				11: 49,
				17: 48,
				24: w,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			{
				11: 52,
				17: 51,
				24: w,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			{ 20: [1, 53] },
			{ 22: [1, 54] },
			e(T, [2, 18]),
			{ 1: [2, 2] },
			e(T, [2, 8]),
			e(T, [2, 9]),
			e(E, [2, 37], {
				40: 55,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			}),
			e(E, [2, 38]),
			e(E, [2, 39]),
			e(D, [2, 40]),
			e(D, [2, 42]),
			e(D, [2, 43]),
			e(D, [2, 44]),
			e(D, [2, 45]),
			e(D, [2, 46]),
			e(D, [2, 47]),
			e(D, [2, 48]),
			e(D, [2, 49]),
			e(D, [2, 50]),
			e(D, [2, 51]),
			e(T, [2, 10]),
			e(T, [2, 22], {
				30: 41,
				29: 56,
				24: x,
				27: S
			}),
			e(T, [2, 24]),
			e(T, [2, 25]),
			{ 31: [1, 57] },
			{
				11: 59,
				32: 58,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			e(T, [2, 11]),
			e(T, [2, 30], {
				33: 60,
				27: C
			}),
			e(T, [2, 32]),
			{ 31: [1, 61] },
			e(T, [2, 12]),
			{
				17: 62,
				24: w
			},
			{
				25: 63,
				27: O
			},
			e(T, [2, 14]),
			{
				17: 65,
				24: w
			},
			e(T, [2, 16]),
			e(T, [2, 17]),
			e(D, [2, 41]),
			e(T, [2, 23]),
			{ 27: [1, 66] },
			{ 26: [1, 67] },
			{
				26: [2, 29],
				28: [1, 68]
			},
			e(T, [2, 31]),
			{ 27: [1, 69] },
			e(T, [2, 13]),
			{ 26: [1, 70] },
			{
				26: [2, 21],
				28: [1, 71]
			},
			e(T, [2, 15]),
			e(T, [2, 26]),
			e(T, [2, 27]),
			{
				11: 59,
				32: 72,
				37: 24,
				38: l,
				39: u,
				40: 27,
				41: d,
				42: f,
				43: p,
				44: m,
				45: h,
				46: g,
				47: _,
				48: v,
				49: y,
				50: b
			},
			e(T, [2, 33]),
			e(T, [2, 19]),
			{
				25: 73,
				27: O
			},
			{ 26: [2, 28] },
			{ 26: [2, 20] }
		],
		defaultActions: {
			8: [2, 1],
			10: [2, 3],
			21: [2, 2],
			72: [2, 28],
			73: [2, 20]
		},
		parseError: /* @__PURE__ */ n(function(e, t) {
			if (t.recoverable) this.trace(e);
			else {
				var n = Error(e);
				throw n.hash = t, n;
			}
		}, "parseError"),
		parse: /* @__PURE__ */ n(function(e) {
			var t = this, r = [0], i = [], a = [null], o = [], s = this.table, c = "", l = 0, u = 0, d = 0, f = 2, p = 1, m = o.slice.call(arguments, 1), h = Object.create(this.lexer), g = { yy: {} };
			for (var _ in this.yy) Object.prototype.hasOwnProperty.call(this.yy, _) && (g.yy[_] = this.yy[_]);
			h.setInput(e, g.yy), g.yy.lexer = h, g.yy.parser = this, h.yylloc === void 0 && (h.yylloc = {});
			var v = h.yylloc;
			o.push(v);
			var y = h.options && h.options.ranges;
			typeof g.yy.parseError == "function" ? this.parseError = g.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
			function b(e) {
				r.length -= 2 * e, a.length -= e, o.length -= e;
			}
			n(b, "popStack");
			function x() {
				var e = i.pop() || h.lex() || p;
				return typeof e != "number" && (e instanceof Array && (i = e, e = i.pop()), e = t.symbols_[e] || e), e;
			}
			n(x, "lex");
			for (var S, C, w, T, E, D = {}, O, k, A, j;;) {
				if (w = r[r.length - 1], this.defaultActions[w] ? T = this.defaultActions[w] : (S ??= x(), T = s[w] && s[w][S]), T === void 0 || !T.length || !T[0]) {
					var M = "";
					for (O in j = [], s[w]) this.terminals_[O] && O > f && j.push("'" + this.terminals_[O] + "'");
					M = h.showPosition ? "Parse error on line " + (l + 1) + ":\n" + h.showPosition() + "\nExpecting " + j.join(", ") + ", got '" + (this.terminals_[S] || S) + "'" : "Parse error on line " + (l + 1) + ": Unexpected " + (S == p ? "end of input" : "'" + (this.terminals_[S] || S) + "'"), this.parseError(M, {
						text: h.match,
						token: this.terminals_[S] || S,
						line: h.yylineno,
						loc: v,
						expected: j
					});
				}
				if (T[0] instanceof Array && T.length > 1) throw Error("Parse Error: multiple actions possible at state: " + w + ", token: " + S);
				switch (T[0]) {
					case 1:
						r.push(S), a.push(h.yytext), o.push(h.yylloc), r.push(T[1]), S = null, C ? (S = C, C = null) : (u = h.yyleng, c = h.yytext, l = h.yylineno, v = h.yylloc, d > 0 && d--);
						break;
					case 2:
						if (k = this.productions_[T[1]][1], D.$ = a[a.length - k], D._$ = {
							first_line: o[o.length - (k || 1)].first_line,
							last_line: o[o.length - 1].last_line,
							first_column: o[o.length - (k || 1)].first_column,
							last_column: o[o.length - 1].last_column
						}, y && (D._$.range = [o[o.length - (k || 1)].range[0], o[o.length - 1].range[1]]), E = this.performAction.apply(D, [
							c,
							u,
							l,
							g.yy,
							T[1],
							a,
							o
						].concat(m)), E !== void 0) return E;
						k && (r = r.slice(0, -1 * k * 2), a = a.slice(0, -1 * k), o = o.slice(0, -1 * k)), r.push(this.productions_[T[1]][0]), a.push(D.$), o.push(D._$), A = s[r[r.length - 2]][r[r.length - 1]], r.push(A);
						break;
					case 3: return !0;
				}
			}
			return !0;
		}, "parse")
	};
	k.lexer = /* @__PURE__ */ (function() {
		return {
			EOF: 1,
			parseError: /* @__PURE__ */ n(function(e, t) {
				if (this.yy.parser) this.yy.parser.parseError(e, t);
				else throw Error(e);
			}, "parseError"),
			setInput: /* @__PURE__ */ n(function(e, t) {
				return this.yy = t || this.yy || {}, this._input = e, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
					first_line: 1,
					first_column: 0,
					last_line: 1,
					last_column: 0
				}, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this;
			}, "setInput"),
			input: /* @__PURE__ */ n(function() {
				var e = this._input[0];
				return this.yytext += e, this.yyleng++, this.offset++, this.match += e, this.matched += e, e.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), e;
			}, "input"),
			unput: /* @__PURE__ */ n(function(e) {
				var t = e.length, n = e.split(/(?:\r\n?|\n)/g);
				this._input = e + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - t), this.offset -= t;
				var r = this.match.split(/(?:\r\n?|\n)/g);
				this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), n.length - 1 && (this.yylineno -= n.length - 1);
				var i = this.yylloc.range;
				return this.yylloc = {
					first_line: this.yylloc.first_line,
					last_line: this.yylineno + 1,
					first_column: this.yylloc.first_column,
					last_column: n ? (n.length === r.length ? this.yylloc.first_column : 0) + r[r.length - n.length].length - n[0].length : this.yylloc.first_column - t
				}, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - t]), this.yyleng = this.yytext.length, this;
			}, "unput"),
			more: /* @__PURE__ */ n(function() {
				return this._more = !0, this;
			}, "more"),
			reject: /* @__PURE__ */ n(function() {
				if (this.options.backtrack_lexer) this._backtrack = !0;
				else return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), {
					text: "",
					token: null,
					line: this.yylineno
				});
				return this;
			}, "reject"),
			less: /* @__PURE__ */ n(function(e) {
				this.unput(this.match.slice(e));
			}, "less"),
			pastInput: /* @__PURE__ */ n(function() {
				var e = this.matched.substr(0, this.matched.length - this.match.length);
				return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "");
			}, "pastInput"),
			upcomingInput: /* @__PURE__ */ n(function() {
				var e = this.match;
				return e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "");
			}, "upcomingInput"),
			showPosition: /* @__PURE__ */ n(function() {
				var e = this.pastInput(), t = Array(e.length + 1).join("-");
				return e + this.upcomingInput() + "\n" + t + "^";
			}, "showPosition"),
			test_match: /* @__PURE__ */ n(function(e, t) {
				var n, r, i;
				if (this.options.backtrack_lexer && (i = {
					yylineno: this.yylineno,
					yylloc: {
						first_line: this.yylloc.first_line,
						last_line: this.last_line,
						first_column: this.yylloc.first_column,
						last_column: this.yylloc.last_column
					},
					yytext: this.yytext,
					match: this.match,
					matches: this.matches,
					matched: this.matched,
					yyleng: this.yyleng,
					offset: this.offset,
					_more: this._more,
					_input: this._input,
					yy: this.yy,
					conditionStack: this.conditionStack.slice(0),
					done: this.done
				}, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), r = e[0].match(/(?:\r\n?|\n).*/g), r && (this.yylineno += r.length), this.yylloc = {
					first_line: this.yylloc.last_line,
					last_line: this.yylineno + 1,
					first_column: this.yylloc.last_column,
					last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + e[0].length
				}, this.yytext += e[0], this.match += e[0], this.matches = e, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(e[0].length), this.matched += e[0], n = this.performAction.call(this, this.yy, this, t, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), n) return n;
				if (this._backtrack) {
					for (var a in i) this[a] = i[a];
					return !1;
				}
				return !1;
			}, "test_match"),
			next: /* @__PURE__ */ n(function() {
				if (this.done) return this.EOF;
				this._input || (this.done = !0);
				var e, t, n, r;
				this._more || (this.yytext = "", this.match = "");
				for (var i = this._currentRules(), a = 0; a < i.length; a++) if (n = this._input.match(this.rules[i[a]]), n && (!t || n[0].length > t[0].length)) {
					if (t = n, r = a, this.options.backtrack_lexer) {
						if (e = this.test_match(n, i[a]), e !== !1) return e;
						if (this._backtrack) {
							t = !1;
							continue;
						} else return !1;
					} else if (!this.options.flex) break;
				}
				return t ? (e = this.test_match(t, i[r]), e === !1 ? !1 : e) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
					text: "",
					token: null,
					line: this.yylineno
				});
			}, "next"),
			lex: /* @__PURE__ */ n(function() {
				return this.next() || this.lex();
			}, "lex"),
			begin: /* @__PURE__ */ n(function(e) {
				this.conditionStack.push(e);
			}, "begin"),
			popState: /* @__PURE__ */ n(function() {
				return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
			}, "popState"),
			_currentRules: /* @__PURE__ */ n(function() {
				return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
			}, "_currentRules"),
			topState: /* @__PURE__ */ n(function(e) {
				return e = this.conditionStack.length - 1 - Math.abs(e || 0), e >= 0 ? this.conditionStack[e] : "INITIAL";
			}, "topState"),
			pushState: /* @__PURE__ */ n(function(e) {
				this.begin(e);
			}, "pushState"),
			stateStackSize: /* @__PURE__ */ n(function() {
				return this.conditionStack.length;
			}, "stateStackSize"),
			options: { "case-insensitive": !0 },
			performAction: /* @__PURE__ */ n(function(e, t, n, r) {
				switch (n) {
					case 0: break;
					case 1: break;
					case 2: return this.popState(), 34;
					case 3: return this.popState(), 34;
					case 4: return 34;
					case 5: break;
					case 6: return 10;
					case 7: return this.pushState("acc_title"), 19;
					case 8: return this.popState(), "acc_title_value";
					case 9: return this.pushState("acc_descr"), 21;
					case 10: return this.popState(), "acc_descr_value";
					case 11:
						this.pushState("acc_descr_multiline");
						break;
					case 12:
						this.popState();
						break;
					case 13: return "acc_descr_multiline_value";
					case 14: return 5;
					case 15: return 5;
					case 16: return 8;
					case 17: return this.pushState("axis_data"), "X_AXIS";
					case 18: return this.pushState("axis_data"), "Y_AXIS";
					case 19: return this.pushState("axis_band_data"), 24;
					case 20: return 31;
					case 21: return this.pushState("data"), 16;
					case 22: return this.pushState("data"), 18;
					case 23: return this.pushState("data_inner"), 24;
					case 24: return 27;
					case 25: return this.popState(), 26;
					case 26:
						this.popState();
						break;
					case 27:
						this.pushState("string");
						break;
					case 28:
						this.popState();
						break;
					case 29: return "STR";
					case 30: return 24;
					case 31: return 26;
					case 32: return 43;
					case 33: return "COLON";
					case 34: return 44;
					case 35: return 28;
					case 36: return 45;
					case 37: return 46;
					case 38: return 48;
					case 39: return 50;
					case 40: return 47;
					case 41: return 41;
					case 42: return 49;
					case 43: return 42;
					case 44: break;
					case 45: return 35;
					case 46: return 36;
				}
			}, "anonymous"),
			rules: [
				/^(?:%%(?!\{)[^\n]*)/i,
				/^(?:[^\}]%%[^\n]*)/i,
				/^(?:(\r?\n))/i,
				/^(?:(\r?\n))/i,
				/^(?:[\n\r]+)/i,
				/^(?:%%[^\n]*)/i,
				/^(?:title\b)/i,
				/^(?:accTitle\s*:\s*)/i,
				/^(?:(?!\n||)*[^\n]*)/i,
				/^(?:accDescr\s*:\s*)/i,
				/^(?:(?!\n||)*[^\n]*)/i,
				/^(?:accDescr\s*\{\s*)/i,
				/^(?:\})/i,
				/^(?:[^\}]*)/i,
				/^(?:xychart-beta\b)/i,
				/^(?:xychart\b)/i,
				/^(?:(?:vertical|horizontal))/i,
				/^(?:x-axis\b)/i,
				/^(?:y-axis\b)/i,
				/^(?:\[)/i,
				/^(?:-->)/i,
				/^(?:line\b)/i,
				/^(?:bar\b)/i,
				/^(?:\[)/i,
				/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,
				/^(?:\])/i,
				/^(?:(?:`\)                                    \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+                  \{ return MD_STR; \}\n<md_string>\(\?:`))/i,
				/^(?:["])/i,
				/^(?:["])/i,
				/^(?:[^"]*)/i,
				/^(?:\[)/i,
				/^(?:\])/i,
				/^(?:[A-Za-z]+)/i,
				/^(?::)/i,
				/^(?:\+)/i,
				/^(?:,)/i,
				/^(?:=)/i,
				/^(?:\*)/i,
				/^(?:#)/i,
				/^(?:[\_])/i,
				/^(?:\.)/i,
				/^(?:&)/i,
				/^(?:-)/i,
				/^(?:[0-9]+)/i,
				/^(?:\s+)/i,
				/^(?:;)/i,
				/^(?:$)/i
			],
			conditions: {
				data_inner: {
					rules: [
						0,
						1,
						4,
						5,
						6,
						7,
						9,
						11,
						14,
						15,
						16,
						17,
						18,
						21,
						22,
						24,
						25,
						26,
						27,
						30,
						31,
						32,
						33,
						34,
						35,
						36,
						37,
						38,
						39,
						40,
						41,
						42,
						43,
						44,
						45,
						46
					],
					inclusive: !0
				},
				data: {
					rules: [
						0,
						1,
						3,
						4,
						5,
						6,
						7,
						9,
						11,
						14,
						15,
						16,
						17,
						18,
						21,
						22,
						23,
						26,
						27,
						30,
						31,
						32,
						33,
						34,
						35,
						36,
						37,
						38,
						39,
						40,
						41,
						42,
						43,
						44,
						45,
						46
					],
					inclusive: !0
				},
				axis_band_data: {
					rules: [
						0,
						1,
						4,
						5,
						6,
						7,
						9,
						11,
						14,
						15,
						16,
						17,
						18,
						21,
						22,
						25,
						26,
						27,
						30,
						31,
						32,
						33,
						34,
						35,
						36,
						37,
						38,
						39,
						40,
						41,
						42,
						43,
						44,
						45,
						46
					],
					inclusive: !0
				},
				axis_data: {
					rules: [
						0,
						1,
						2,
						4,
						5,
						6,
						7,
						9,
						11,
						14,
						15,
						16,
						17,
						18,
						19,
						20,
						21,
						22,
						24,
						26,
						27,
						30,
						31,
						32,
						33,
						34,
						35,
						36,
						37,
						38,
						39,
						40,
						41,
						42,
						43,
						44,
						45,
						46
					],
					inclusive: !0
				},
				acc_descr_multiline: {
					rules: [12, 13],
					inclusive: !1
				},
				acc_descr: {
					rules: [10],
					inclusive: !1
				},
				acc_title: {
					rules: [8],
					inclusive: !1
				},
				title: {
					rules: [],
					inclusive: !1
				},
				md_string: {
					rules: [],
					inclusive: !1
				},
				string: {
					rules: [28, 29],
					inclusive: !1
				},
				INITIAL: {
					rules: [
						0,
						1,
						4,
						5,
						6,
						7,
						9,
						11,
						14,
						15,
						16,
						17,
						18,
						21,
						22,
						26,
						27,
						30,
						31,
						32,
						33,
						34,
						35,
						36,
						37,
						38,
						39,
						40,
						41,
						42,
						43,
						44,
						45,
						46
					],
					inclusive: !0
				}
			}
		};
	})();
	function A() {
		this.yy = {};
	}
	return n(A, "Parser"), A.prototype = k, k.Parser = A, new A();
})();
C.parser = C;
var w = C;
function T(e) {
	return e.type === "bar";
}
n(T, "isBarPlot");
function E(e) {
	return e.type === "band";
}
n(E, "isBandAxisData");
function D(e) {
	return e.type === "linear";
}
n(D, "isLinearAxisData");
var O = class {
	constructor(e) {
		this.parentGroup = e;
	}
	static {
		n(this, "TextDimensionCalculatorWithFont");
	}
	getMaxDimension(e, t) {
		if (!this.parentGroup) return {
			width: e.reduce((e, t) => Math.max(t.length, e), 0) * t,
			height: t
		};
		let n = {
			width: 0,
			height: 0
		}, r = this.parentGroup.append("g").attr("visibility", "hidden").attr("font-size", t);
		for (let i of e) {
			let e = b(r, 1, i), a = e ? e.width : i.length * t, o = e ? e.height : t;
			n.width = Math.max(n.width, a), n.height = Math.max(n.height, o);
		}
		return r.remove(), n;
	}
}, k = .7, A = .2, j = class {
	constructor(e, t, n, r) {
		this.axisConfig = e, this.title = t, this.textDimensionCalculator = n, this.axisThemeConfig = r, this.boundingRect = {
			x: 0,
			y: 0,
			width: 0,
			height: 0
		}, this.axisPosition = "left", this.showTitle = !1, this.showLabel = !1, this.showTick = !1, this.showAxisLine = !1, this.outerPadding = 0, this.titleTextHeight = 0, this.labelTextHeight = 0, this.range = [0, 10], this.boundingRect = {
			x: 0,
			y: 0,
			width: 0,
			height: 0
		}, this.axisPosition = "left";
	}
	static {
		n(this, "BaseAxis");
	}
	setRange(e) {
		this.range = e, this.axisPosition === "left" || this.axisPosition === "right" ? this.boundingRect.height = e[1] - e[0] : this.boundingRect.width = e[1] - e[0], this.recalculateScale();
	}
	getRange() {
		return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];
	}
	setAxisPosition(e) {
		this.axisPosition = e, this.setRange(this.range);
	}
	getTickDistance() {
		let e = this.getRange();
		return Math.abs(e[0] - e[1]) / this.getTickValues().length;
	}
	getAxisOuterPadding() {
		return this.outerPadding;
	}
	getLabelDimension() {
		return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map((e) => e.toString()), this.axisConfig.labelFontSize);
	}
	recalculateOuterPaddingToDrawBar() {
		k * this.getTickDistance() > this.outerPadding * 2 && (this.outerPadding = Math.floor(k * this.getTickDistance() / 2)), this.recalculateScale();
	}
	calculateSpaceIfDrawnHorizontally(e) {
		let t = e.height;
		if (this.axisConfig.showAxisLine && t > this.axisConfig.axisLineWidth && (t -= this.axisConfig.axisLineWidth, this.showAxisLine = !0), this.axisConfig.showLabel) {
			let n = this.getLabelDimension(), r = A * e.width;
			this.outerPadding = Math.min(n.width / 2, r);
			let i = n.height + this.axisConfig.labelPadding * 2;
			this.labelTextHeight = n.height, i <= t && (t -= i, this.showLabel = !0);
		}
		if (this.axisConfig.showTick && t >= this.axisConfig.tickLength && (this.showTick = !0, t -= this.axisConfig.tickLength), this.axisConfig.showTitle && this.title) {
			let e = this.textDimensionCalculator.getMaxDimension([this.title], this.axisConfig.titleFontSize), n = e.height + this.axisConfig.titlePadding * 2;
			this.titleTextHeight = e.height, n <= t && (t -= n, this.showTitle = !0);
		}
		this.boundingRect.width = e.width, this.boundingRect.height = e.height - t;
	}
	calculateSpaceIfDrawnVertical(e) {
		let t = e.width;
		if (this.axisConfig.showAxisLine && t > this.axisConfig.axisLineWidth && (t -= this.axisConfig.axisLineWidth, this.showAxisLine = !0), this.axisConfig.showLabel) {
			let n = this.getLabelDimension(), r = A * e.height;
			this.outerPadding = Math.min(n.height / 2, r);
			let i = n.width + this.axisConfig.labelPadding * 2;
			i <= t && (t -= i, this.showLabel = !0);
		}
		if (this.axisConfig.showTick && t >= this.axisConfig.tickLength && (this.showTick = !0, t -= this.axisConfig.tickLength), this.axisConfig.showTitle && this.title) {
			let e = this.textDimensionCalculator.getMaxDimension([this.title], this.axisConfig.titleFontSize), n = e.height + this.axisConfig.titlePadding * 2;
			this.titleTextHeight = e.height, n <= t && (t -= n, this.showTitle = !0);
		}
		this.boundingRect.width = e.width - t, this.boundingRect.height = e.height;
	}
	calculateSpace(e) {
		return this.axisPosition === "left" || this.axisPosition === "right" ? this.calculateSpaceIfDrawnVertical(e) : this.calculateSpaceIfDrawnHorizontally(e), this.recalculateScale(), {
			width: this.boundingRect.width,
			height: this.boundingRect.height
		};
	}
	setBoundingBoxXY(e) {
		this.boundingRect.x = e.x, this.boundingRect.y = e.y;
	}
	getDrawableElementsForLeftAxis() {
		let e = [];
		if (this.showAxisLine) {
			let t = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;
			e.push({
				type: "path",
				groupTexts: ["left-axis", "axisl-line"],
				data: [{
					path: `M ${t},${this.boundingRect.y} L ${t},${this.boundingRect.y + this.boundingRect.height} `,
					strokeFill: this.axisThemeConfig.axisLineColor,
					strokeWidth: this.axisConfig.axisLineWidth
				}]
			});
		}
		if (this.showLabel && e.push({
			type: "text",
			groupTexts: ["left-axis", "label"],
			data: this.getTickValues().map((e) => ({
				text: e.toString(),
				x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),
				y: this.getScaleValue(e),
				fill: this.axisThemeConfig.labelColor,
				fontSize: this.axisConfig.labelFontSize,
				rotation: 0,
				verticalPos: "middle",
				horizontalPos: "right"
			}))
		}), this.showTick) {
			let t = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);
			e.push({
				type: "path",
				groupTexts: ["left-axis", "ticks"],
				data: this.getTickValues().map((e) => ({
					path: `M ${t},${this.getScaleValue(e)} L ${t - this.axisConfig.tickLength},${this.getScaleValue(e)}`,
					strokeFill: this.axisThemeConfig.tickColor,
					strokeWidth: this.axisConfig.tickWidth
				}))
			});
		}
		return this.showTitle && e.push({
			type: "text",
			groupTexts: ["left-axis", "title"],
			data: [{
				text: this.title,
				x: this.boundingRect.x + this.axisConfig.titlePadding,
				y: this.boundingRect.y + this.boundingRect.height / 2,
				fill: this.axisThemeConfig.titleColor,
				fontSize: this.axisConfig.titleFontSize,
				rotation: 270,
				verticalPos: "top",
				horizontalPos: "center"
			}]
		}), e;
	}
	getDrawableElementsForBottomAxis() {
		let e = [];
		if (this.showAxisLine) {
			let t = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;
			e.push({
				type: "path",
				groupTexts: ["bottom-axis", "axis-line"],
				data: [{
					path: `M ${this.boundingRect.x},${t} L ${this.boundingRect.x + this.boundingRect.width},${t}`,
					strokeFill: this.axisThemeConfig.axisLineColor,
					strokeWidth: this.axisConfig.axisLineWidth
				}]
			});
		}
		if (this.showLabel && e.push({
			type: "text",
			groupTexts: ["bottom-axis", "label"],
			data: this.getTickValues().map((e) => ({
				text: e.toString(),
				x: this.getScaleValue(e),
				y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),
				fill: this.axisThemeConfig.labelColor,
				fontSize: this.axisConfig.labelFontSize,
				rotation: 0,
				verticalPos: "top",
				horizontalPos: "center"
			}))
		}), this.showTick) {
			let t = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);
			e.push({
				type: "path",
				groupTexts: ["bottom-axis", "ticks"],
				data: this.getTickValues().map((e) => ({
					path: `M ${this.getScaleValue(e)},${t} L ${this.getScaleValue(e)},${t + this.axisConfig.tickLength}`,
					strokeFill: this.axisThemeConfig.tickColor,
					strokeWidth: this.axisConfig.tickWidth
				}))
			});
		}
		return this.showTitle && e.push({
			type: "text",
			groupTexts: ["bottom-axis", "title"],
			data: [{
				text: this.title,
				x: this.range[0] + (this.range[1] - this.range[0]) / 2,
				y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight,
				fill: this.axisThemeConfig.titleColor,
				fontSize: this.axisConfig.titleFontSize,
				rotation: 0,
				verticalPos: "top",
				horizontalPos: "center"
			}]
		}), e;
	}
	getDrawableElementsForTopAxis() {
		let e = [];
		if (this.showAxisLine) {
			let t = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;
			e.push({
				type: "path",
				groupTexts: ["top-axis", "axis-line"],
				data: [{
					path: `M ${this.boundingRect.x},${t} L ${this.boundingRect.x + this.boundingRect.width},${t}`,
					strokeFill: this.axisThemeConfig.axisLineColor,
					strokeWidth: this.axisConfig.axisLineWidth
				}]
			});
		}
		if (this.showLabel && e.push({
			type: "text",
			groupTexts: ["top-axis", "label"],
			data: this.getTickValues().map((e) => ({
				text: e.toString(),
				x: this.getScaleValue(e),
				y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding,
				fill: this.axisThemeConfig.labelColor,
				fontSize: this.axisConfig.labelFontSize,
				rotation: 0,
				verticalPos: "top",
				horizontalPos: "center"
			}))
		}), this.showTick) {
			let t = this.boundingRect.y;
			e.push({
				type: "path",
				groupTexts: ["top-axis", "ticks"],
				data: this.getTickValues().map((e) => ({
					path: `M ${this.getScaleValue(e)},${t + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(e)},${t + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`,
					strokeFill: this.axisThemeConfig.tickColor,
					strokeWidth: this.axisConfig.tickWidth
				}))
			});
		}
		return this.showTitle && e.push({
			type: "text",
			groupTexts: ["top-axis", "title"],
			data: [{
				text: this.title,
				x: this.boundingRect.x + this.boundingRect.width / 2,
				y: this.boundingRect.y + this.axisConfig.titlePadding,
				fill: this.axisThemeConfig.titleColor,
				fontSize: this.axisConfig.titleFontSize,
				rotation: 0,
				verticalPos: "top",
				horizontalPos: "center"
			}]
		}), e;
	}
	getDrawableElements() {
		if (this.axisPosition === "left") return this.getDrawableElementsForLeftAxis();
		if (this.axisPosition === "right") throw Error("Drawing of right axis is not implemented");
		return this.axisPosition === "bottom" ? this.getDrawableElementsForBottomAxis() : this.axisPosition === "top" ? this.getDrawableElementsForTopAxis() : [];
	}
}, M = class extends j {
	static {
		n(this, "BandAxis");
	}
	constructor(e, t, n, r, i) {
		super(e, r, i, t), this.categories = n, this.scale = S().domain(this.categories).range(this.getRange());
	}
	setRange(e) {
		super.setRange(e);
	}
	recalculateScale() {
		this.scale = S().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5), r.trace("BandAxis axis final categories, range: ", this.categories, this.getRange());
	}
	getTickValues() {
		return this.categories;
	}
	getScaleValue(e) {
		return this.scale(e) ?? this.getRange()[0];
	}
}, ee = class extends j {
	static {
		n(this, "LinearAxis");
	}
	constructor(t, n, r, i, a) {
		super(t, i, a, n), this.domain = r, this.scale = e().domain(this.domain).range(this.getRange());
	}
	getTickValues() {
		return this.scale.ticks();
	}
	recalculateScale() {
		let t = [...this.domain];
		this.axisPosition === "left" && t.reverse(), this.scale = e().domain(t).range(this.getRange());
	}
	getScaleValue(e) {
		return this.scale(e);
	}
};
function N(e, t, n, r) {
	let i = new O(r);
	return E(e) ? new M(t, n, e.categories, e.title, i) : new ee(t, n, [e.min, e.max], e.title, i);
}
n(N, "getAxis");
var te = class {
	constructor(e, t, n, r) {
		this.textDimensionCalculator = e, this.chartConfig = t, this.chartData = n, this.chartThemeConfig = r, this.boundingRect = {
			x: 0,
			y: 0,
			width: 0,
			height: 0
		}, this.showChartTitle = !1;
	}
	static {
		n(this, "ChartTitle");
	}
	setBoundingBoxXY(e) {
		this.boundingRect.x = e.x, this.boundingRect.y = e.y;
	}
	calculateSpace(e) {
		let t = this.textDimensionCalculator.getMaxDimension([this.chartData.title], this.chartConfig.titleFontSize), n = Math.max(t.width, e.width), r = t.height + 2 * this.chartConfig.titlePadding;
		return t.width <= n && t.height <= r && this.chartConfig.showTitle && this.chartData.title && (this.boundingRect.width = n, this.boundingRect.height = r, this.showChartTitle = !0), {
			width: this.boundingRect.width,
			height: this.boundingRect.height
		};
	}
	getDrawableElements() {
		let e = [];
		return this.showChartTitle && e.push({
			groupTexts: ["chart-title"],
			type: "text",
			data: [{
				fontSize: this.chartConfig.titleFontSize,
				text: this.chartData.title,
				verticalPos: "middle",
				horizontalPos: "center",
				x: this.boundingRect.x + this.boundingRect.width / 2,
				y: this.boundingRect.y + this.boundingRect.height / 2,
				fill: this.chartThemeConfig.titleColor,
				rotation: 0
			}]
		}), e;
	}
};
function ne(e, t, n, r) {
	return new te(new O(r), e, t, n);
}
n(ne, "getChartTitleComponent");
var re = class {
	constructor(e, t, n, r, i) {
		this.plotData = e, this.xAxis = t, this.yAxis = n, this.orientation = r, this.plotIndex = i;
	}
	static {
		n(this, "LinePlot");
	}
	getDrawableElement() {
		let e = this.plotData.data.map((e) => [this.xAxis.getScaleValue(e[0]), this.yAxis.getScaleValue(e[1])]), t;
		return t = this.orientation === "horizontal" ? v().y((e) => e[0]).x((e) => e[1])(e) : v().x((e) => e[0]).y((e) => e[1])(e), t ? [{
			groupTexts: ["plot", `line-plot-${this.plotIndex}`],
			type: "path",
			data: [{
				path: t,
				strokeFill: this.plotData.strokeFill,
				strokeWidth: this.plotData.strokeWidth
			}]
		}] : [];
	}
}, ie = class {
	constructor(e, t, n, r, i, a) {
		this.barData = e, this.boundingRect = t, this.xAxis = n, this.yAxis = r, this.orientation = i, this.plotIndex = a;
	}
	static {
		n(this, "BarPlot");
	}
	getDrawableElement() {
		let e = this.barData.data.map((e) => [this.xAxis.getScaleValue(e[0]), this.yAxis.getScaleValue(e[1])]), t = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * .95, n = t / 2;
		return this.orientation === "horizontal" ? [{
			groupTexts: ["plot", `bar-plot-${this.plotIndex}`],
			type: "rect",
			data: e.map((e) => ({
				x: this.boundingRect.x,
				y: e[0] - n,
				height: t,
				width: e[1] - this.boundingRect.x,
				fill: this.barData.fill,
				strokeWidth: 0,
				strokeFill: this.barData.fill
			}))
		}] : [{
			groupTexts: ["plot", `bar-plot-${this.plotIndex}`],
			type: "rect",
			data: e.map((e) => ({
				x: e[0] - n,
				y: e[1],
				width: t,
				height: this.boundingRect.y + this.boundingRect.height - e[1],
				fill: this.barData.fill,
				strokeWidth: 0,
				strokeFill: this.barData.fill
			}))
		}];
	}
}, ae = class {
	constructor(e, t, n) {
		this.chartConfig = e, this.chartData = t, this.chartThemeConfig = n, this.boundingRect = {
			x: 0,
			y: 0,
			width: 0,
			height: 0
		};
	}
	static {
		n(this, "BasePlot");
	}
	setAxes(e, t) {
		this.xAxis = e, this.yAxis = t;
	}
	setBoundingBoxXY(e) {
		this.boundingRect.x = e.x, this.boundingRect.y = e.y;
	}
	calculateSpace(e) {
		return this.boundingRect.width = e.width, this.boundingRect.height = e.height, {
			width: this.boundingRect.width,
			height: this.boundingRect.height
		};
	}
	getDrawableElements() {
		if (!(this.xAxis && this.yAxis)) throw Error("Axes must be passed to render Plots");
		let e = [];
		for (let [t, n] of this.chartData.plots.entries()) switch (n.type) {
			case "line":
				{
					let r = new re(n, this.xAxis, this.yAxis, this.chartConfig.chartOrientation, t);
					e.push(...r.getDrawableElement());
				}
				break;
			case "bar":
				{
					let r = new ie(n, this.boundingRect, this.xAxis, this.yAxis, this.chartConfig.chartOrientation, t);
					e.push(...r.getDrawableElement());
				}
				break;
		}
		return e;
	}
};
function P(e, t, n) {
	return new ae(e, t, n);
}
n(P, "getPlotComponent");
var oe = class {
	constructor(e, t, n, r) {
		this.chartConfig = e, this.chartData = t, this.componentStore = {
			title: ne(e, t, n, r),
			plot: P(e, t, n),
			xAxis: N(t.xAxis, e.xAxis, {
				titleColor: n.xAxisTitleColor,
				labelColor: n.xAxisLabelColor,
				tickColor: n.xAxisTickColor,
				axisLineColor: n.xAxisLineColor
			}, r),
			yAxis: N(t.yAxis, e.yAxis, {
				titleColor: n.yAxisTitleColor,
				labelColor: n.yAxisLabelColor,
				tickColor: n.yAxisTickColor,
				axisLineColor: n.yAxisLineColor
			}, r)
		};
	}
	static {
		n(this, "Orchestrator");
	}
	calculateVerticalSpace() {
		let e = this.chartConfig.width, t = this.chartConfig.height, n = 0, r = 0, i = Math.floor(e * this.chartConfig.plotReservedSpacePercent / 100), a = Math.floor(t * this.chartConfig.plotReservedSpacePercent / 100), o = this.componentStore.plot.calculateSpace({
			width: i,
			height: a
		});
		e -= o.width, t -= o.height, o = this.componentStore.title.calculateSpace({
			width: this.chartConfig.width,
			height: t
		}), r = o.height, t -= o.height, this.componentStore.xAxis.setAxisPosition("bottom"), o = this.componentStore.xAxis.calculateSpace({
			width: e,
			height: t
		}), t -= o.height, this.componentStore.yAxis.setAxisPosition("left"), o = this.componentStore.yAxis.calculateSpace({
			width: e,
			height: t
		}), n = o.width, e -= o.width, e > 0 && (i += e, e = 0), t > 0 && (a += t, t = 0), this.componentStore.plot.calculateSpace({
			width: i,
			height: a
		}), this.componentStore.plot.setBoundingBoxXY({
			x: n,
			y: r
		}), this.componentStore.xAxis.setRange([n, n + i]), this.componentStore.xAxis.setBoundingBoxXY({
			x: n,
			y: r + a
		}), this.componentStore.yAxis.setRange([r, r + a]), this.componentStore.yAxis.setBoundingBoxXY({
			x: 0,
			y: r
		}), this.chartData.plots.some((e) => T(e)) && this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();
	}
	calculateHorizontalSpace() {
		let e = this.chartConfig.width, t = this.chartConfig.height, n = 0, r = 0, i = 0, a = Math.floor(e * this.chartConfig.plotReservedSpacePercent / 100), o = Math.floor(t * this.chartConfig.plotReservedSpacePercent / 100), s = this.componentStore.plot.calculateSpace({
			width: a,
			height: o
		});
		e -= s.width, t -= s.height, s = this.componentStore.title.calculateSpace({
			width: this.chartConfig.width,
			height: t
		}), n = s.height, t -= s.height, this.componentStore.xAxis.setAxisPosition("left"), s = this.componentStore.xAxis.calculateSpace({
			width: e,
			height: t
		}), e -= s.width, r = s.width, this.componentStore.yAxis.setAxisPosition("top"), s = this.componentStore.yAxis.calculateSpace({
			width: e,
			height: t
		}), t -= s.height, i = n + s.height, e > 0 && (a += e, e = 0), t > 0 && (o += t, t = 0), this.componentStore.plot.calculateSpace({
			width: a,
			height: o
		}), this.componentStore.plot.setBoundingBoxXY({
			x: r,
			y: i
		}), this.componentStore.yAxis.setRange([r, r + a]), this.componentStore.yAxis.setBoundingBoxXY({
			x: r,
			y: n
		}), this.componentStore.xAxis.setRange([i, i + o]), this.componentStore.xAxis.setBoundingBoxXY({
			x: 0,
			y: i
		}), this.chartData.plots.some((e) => T(e)) && this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();
	}
	calculateSpace() {
		this.chartConfig.chartOrientation === "horizontal" ? this.calculateHorizontalSpace() : this.calculateVerticalSpace();
	}
	getDrawableElement() {
		this.calculateSpace();
		let e = [];
		this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);
		for (let t of Object.values(this.componentStore)) e.push(...t.getDrawableElements());
		return e;
	}
}, se = class {
	static {
		n(this, "XYChartBuilder");
	}
	static build(e, t, n, r) {
		return new oe(e, t, n, r).getDrawableElement();
	}
}, F = 0, I, L = W(), R = U(), z = G(), B = R.plotColorPalette.split(",").map((e) => e.trim()), V = !1, H = !1;
function U() {
	let e = o(), n = h();
	return t(e.xyChart, n.themeVariables.xyChart);
}
n(U, "getChartDefaultThemeConfig");
function W() {
	let e = h();
	return t(p.xyChart, e.xyChart);
}
n(W, "getChartDefaultConfig");
function G() {
	return {
		yAxis: {
			type: "linear",
			title: "",
			min: Infinity,
			max: -Infinity
		},
		xAxis: {
			type: "band",
			title: "",
			categories: []
		},
		title: "",
		plots: []
	};
}
n(G, "getChartDefaultData");
function K(e) {
	let t = h();
	return s(e.trim(), t);
}
n(K, "textSanitizer");
function q(e) {
	I = e;
}
n(q, "setTmpSVGG");
function J(e) {
	e === "horizontal" ? L.chartOrientation = "horizontal" : L.chartOrientation = "vertical";
}
n(J, "setOrientation");
function Y(e) {
	z.xAxis.title = K(e.text);
}
n(Y, "setXAxisTitle");
function X(e, t) {
	z.xAxis = {
		type: "linear",
		title: z.xAxis.title,
		min: e,
		max: t
	}, V = !0;
}
n(X, "setXAxisRangeData");
function ce(e) {
	z.xAxis = {
		type: "band",
		title: z.xAxis.title,
		categories: e.map((e) => K(e.text))
	}, V = !0;
}
n(ce, "setXAxisBand");
function le(e) {
	z.yAxis.title = K(e.text);
}
n(le, "setYAxisTitle");
function ue(e, t) {
	z.yAxis = {
		type: "linear",
		title: z.yAxis.title,
		min: e,
		max: t
	}, H = !0;
}
n(ue, "setYAxisRangeData");
function de(e) {
	let t = Math.min(...e), n = Math.max(...e), r = D(z.yAxis) ? z.yAxis.min : Infinity, i = D(z.yAxis) ? z.yAxis.max : -Infinity;
	z.yAxis = {
		type: "linear",
		title: z.yAxis.title,
		min: Math.min(r, t),
		max: Math.max(i, n)
	};
}
n(de, "setYAxisRangeFromPlotData");
function Z(e) {
	let t = [];
	if (e.length === 0) return t;
	if (!V) {
		let t = D(z.xAxis) ? z.xAxis.min : Infinity, n = D(z.xAxis) ? z.xAxis.max : -Infinity;
		X(Math.min(t, 1), Math.max(n, e.length));
	}
	if (H || de(e), E(z.xAxis) && (t = z.xAxis.categories.map((t, n) => [t, e[n]])), D(z.xAxis)) {
		let n = z.xAxis.min, r = z.xAxis.max, i = (r - n) / (e.length - 1), a = [];
		for (let e = n; e <= r; e += i) a.push(`${e}`);
		t = a.map((t, n) => [t, e[n]]);
	}
	return t;
}
n(Z, "transformDataWithoutCategory");
function Q(e) {
	return B[e === 0 ? 0 : e % B.length];
}
n(Q, "getPlotColorFromPalette");
function fe(e, t) {
	let n = Z(t);
	z.plots.push({
		type: "line",
		strokeFill: Q(F),
		strokeWidth: 2,
		data: n
	}), F++;
}
n(fe, "setLineData");
function pe(e, t) {
	let n = Z(t);
	z.plots.push({
		type: "bar",
		fill: Q(F),
		data: n
	}), F++;
}
n(pe, "setBarData");
function me() {
	if (z.plots.length === 0) throw Error("No Plot to render, please provide a plot with some data");
	return z.title = a(), se.build(L, z, R, I);
}
n(me, "getDrawableElem");
function he() {
	return R;
}
n(he, "getChartThemeConfig");
function ge() {
	return L;
}
n(ge, "getChartConfig");
function $() {
	return z;
}
n($, "getXYChartData");
var _e = {
	parser: w,
	db: {
		getDrawableElem: me,
		clear: /* @__PURE__ */ n(function() {
			d(), F = 0, L = W(), z = G(), R = U(), B = R.plotColorPalette.split(",").map((e) => e.trim()), V = !1, H = !1;
		}, "clear"),
		setAccTitle: c,
		getAccTitle: m,
		setDiagramTitle: l,
		getDiagramTitle: a,
		getAccDescription: u,
		setAccDescription: i,
		setOrientation: J,
		setXAxisTitle: Y,
		setXAxisRangeData: X,
		setXAxisBand: ce,
		setYAxisTitle: le,
		setYAxisRangeData: ue,
		setLineData: fe,
		setBarData: pe,
		setTmpSVGG: q,
		getChartThemeConfig: he,
		getChartConfig: ge,
		getXYChartData: $
	},
	renderer: { draw: /* @__PURE__ */ n((e, t, i, a) => {
		let o = a.db, s = o.getChartThemeConfig(), c = o.getChartConfig(), l = o.getXYChartData().plots[0].data.map((e) => e[1]);
		function u(e) {
			return e === "top" ? "text-before-edge" : "middle";
		}
		n(u, "getDominantBaseLine");
		function d(e) {
			return e === "left" ? "start" : e === "right" ? "end" : "middle";
		}
		n(d, "getTextAnchor");
		function p(e) {
			return `translate(${e.x}, ${e.y}) rotate(${e.rotation || 0})`;
		}
		n(p, "getTextTransformation"), r.debug("Rendering xychart chart\n" + e);
		let m = y(t), h = m.append("g").attr("class", "main"), g = h.append("rect").attr("width", c.width).attr("height", c.height).attr("class", "background");
		f(m, c.height, c.width, !0), m.attr("viewBox", `0 0 ${c.width} ${c.height}`), g.attr("fill", s.backgroundColor), o.setTmpSVGG(m.append("g").attr("class", "mermaid-tmp-group"));
		let _ = o.getDrawableElem(), v = {};
		function b(e) {
			let t = h, n = "";
			for (let [r] of e.entries()) {
				let i = h;
				r > 0 && v[n] && (i = v[n]), n += e[r], t = v[n], t ||= v[n] = i.append("g").attr("class", e[r]);
			}
			return t;
		}
		n(b, "getGroup");
		for (let e of _) {
			if (e.data.length === 0) continue;
			let t = b(e.groupTexts);
			switch (e.type) {
				case "rect":
					if (t.selectAll("rect").data(e.data).enter().append("rect").attr("x", (e) => e.x).attr("y", (e) => e.y).attr("width", (e) => e.width).attr("height", (e) => e.height).attr("fill", (e) => e.fill).attr("stroke", (e) => e.strokeFill).attr("stroke-width", (e) => e.strokeWidth), c.showDataLabel) if (c.chartOrientation === "horizontal") {
						let r = function(e, t) {
							let { data: n, label: r } = e;
							return t * r.length * i <= n.width - 10;
						};
						n(r, "fitsHorizontally");
						let i = .7, a = e.data.map((e, t) => ({
							data: e,
							label: l[t].toString()
						})).filter((e) => e.data.width > 0 && e.data.height > 0), o = a.map((e) => {
							let { data: t } = e, n = t.height * .7;
							for (; !r(e, n) && n > 0;) --n;
							return n;
						}), s = Math.floor(Math.min(...o));
						t.selectAll("text").data(a).enter().append("text").attr("x", (e) => e.data.x + e.data.width - 10).attr("y", (e) => e.data.y + e.data.height / 2).attr("text-anchor", "end").attr("dominant-baseline", "middle").attr("fill", "black").attr("font-size", `${s}px`).text((e) => e.label);
					} else {
						let r = function(e, t, n) {
							let { data: r, label: i } = e, a = t * i.length * .7, o = r.x + r.width / 2, s = o - a / 2, c = o + a / 2, l = s >= r.x && c <= r.x + r.width, u = r.y + n + t <= r.y + r.height;
							return l && u;
						};
						n(r, "fitsInBar");
						let i = e.data.map((e, t) => ({
							data: e,
							label: l[t].toString()
						})).filter((e) => e.data.width > 0 && e.data.height > 0), a = i.map((e) => {
							let { data: t, label: n } = e, i = t.width / (n.length * .7);
							for (; !r(e, i, 10) && i > 0;) --i;
							return i;
						}), o = Math.floor(Math.min(...a));
						t.selectAll("text").data(i).enter().append("text").attr("x", (e) => e.data.x + e.data.width / 2).attr("y", (e) => e.data.y + 10).attr("text-anchor", "middle").attr("dominant-baseline", "hanging").attr("fill", "black").attr("font-size", `${o}px`).text((e) => e.label);
					}
					break;
				case "text":
					t.selectAll("text").data(e.data).enter().append("text").attr("x", 0).attr("y", 0).attr("fill", (e) => e.fill).attr("font-size", (e) => e.fontSize).attr("dominant-baseline", (e) => u(e.verticalPos)).attr("text-anchor", (e) => d(e.horizontalPos)).attr("transform", (e) => p(e)).text((e) => e.text);
					break;
				case "path":
					t.selectAll("path").data(e.data).enter().append("path").attr("d", (e) => e.path).attr("fill", (e) => e.fill ? e.fill : "none").attr("stroke", (e) => e.strokeFill).attr("stroke-width", (e) => e.strokeWidth);
					break;
			}
		}
	}, "draw") }
};
//#endregion
export { _e as diagram };

//# sourceMappingURL=xychartDiagram-JWTSCODW-DjFaG2VD.js.map