import { __name as e } from "./chunk-AGHRB4JF.js";
import { clear as t, common_default as n, configureSvgSize as r, getAccDescription as i, getAccTitle as a, getConfig2 as o, getDiagramTitle as s, setAccDescription as c, setAccTitle as l, setDiagramTitle as u } from "./chunk-ICPOFSXX.js";
import { selectSvgElement as d } from "./chunk-426QAEUC.js";
import { parseFontSize as f } from "./chunk-5PVQY5BW.js";
import { at as p } from "../../../../roughjs/bundled/rough.esm.js";
//#region ../../node_modules/mermaid/dist/chunks/mermaid.core/ishikawaDiagram-UXIWVN3A.mjs
var m = (function() {
	var t = /* @__PURE__ */ e(function(e, t, n, r) {
		for (n ||= {}, r = e.length; r--; n[e[r]] = t);
		return n;
	}, "o"), n = [1, 4], r = [1, 14], i = [1, 12], a = [1, 13], o = [
		6,
		7,
		8
	], s = [1, 20], c = [1, 18], l = [1, 19], u = [
		6,
		7,
		11
	], d = [
		1,
		6,
		13,
		14
	], f = [1, 23], p = [1, 24], m = [
		1,
		6,
		7,
		11,
		13,
		14
	], h = {
		trace: /* @__PURE__ */ e(function() {}, "trace"),
		yy: {},
		symbols_: {
			error: 2,
			start: 3,
			ishikawa: 4,
			spaceLines: 5,
			SPACELINE: 6,
			NL: 7,
			ISHIKAWA: 8,
			document: 9,
			stop: 10,
			EOF: 11,
			statement: 12,
			SPACELIST: 13,
			TEXT: 14,
			$accept: 0,
			$end: 1
		},
		terminals_: {
			2: "error",
			6: "SPACELINE",
			7: "NL",
			8: "ISHIKAWA",
			11: "EOF",
			13: "SPACELIST",
			14: "TEXT"
		},
		productions_: [
			0,
			[3, 1],
			[3, 2],
			[5, 1],
			[5, 2],
			[5, 2],
			[4, 2],
			[4, 3],
			[10, 1],
			[10, 1],
			[10, 1],
			[10, 2],
			[10, 2],
			[9, 3],
			[9, 2],
			[12, 2],
			[12, 1],
			[12, 1],
			[12, 1]
		],
		performAction: /* @__PURE__ */ e(function(e, t, n, r, i, a, o) {
			var s = a.length - 1;
			switch (i) {
				case 6:
				case 7: return r;
				case 15:
					r.addNode(a[s - 1].length, a[s].trim());
					break;
				case 16:
					r.addNode(0, a[s].trim());
					break;
			}
		}, "anonymous"),
		table: [
			{
				3: 1,
				4: 2,
				5: 3,
				6: [1, 5],
				8: n
			},
			{ 1: [3] },
			{ 1: [2, 1] },
			{
				4: 6,
				6: [1, 7],
				7: [1, 8],
				8: n
			},
			{
				6: r,
				7: [1, 10],
				9: 9,
				12: 11,
				13: i,
				14: a
			},
			t(o, [2, 3]),
			{ 1: [2, 2] },
			t(o, [2, 4]),
			t(o, [2, 5]),
			{
				1: [2, 6],
				6: r,
				12: 15,
				13: i,
				14: a
			},
			{
				6: r,
				9: 16,
				12: 11,
				13: i,
				14: a
			},
			{
				6: s,
				7: c,
				10: 17,
				11: l
			},
			t(u, [2, 18], { 14: [1, 21] }),
			t(u, [2, 16]),
			t(u, [2, 17]),
			{
				6: s,
				7: c,
				10: 22,
				11: l
			},
			{
				1: [2, 7],
				6: r,
				12: 15,
				13: i,
				14: a
			},
			t(d, [2, 14], {
				7: f,
				11: p
			}),
			t(m, [2, 8]),
			t(m, [2, 9]),
			t(m, [2, 10]),
			t(u, [2, 15]),
			t(d, [2, 13], {
				7: f,
				11: p
			}),
			t(m, [2, 11]),
			t(m, [2, 12])
		],
		defaultActions: {
			2: [2, 1],
			6: [2, 2]
		},
		parseError: /* @__PURE__ */ e(function(e, t) {
			if (t.recoverable) this.trace(e);
			else {
				var n = Error(e);
				throw n.hash = t, n;
			}
		}, "parseError"),
		parse: /* @__PURE__ */ e(function(t) {
			var n = 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(t, 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;
			}
			e(b, "popStack");
			function x() {
				var e = i.pop() || h.lex() || p;
				return typeof e != "number" && (e instanceof Array && (i = e, e = i.pop()), e = n.symbols_[e] || e), e;
			}
			e(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")
	};
	h.lexer = /* @__PURE__ */ (function() {
		return {
			EOF: 1,
			parseError: /* @__PURE__ */ e(function(e, t) {
				if (this.yy.parser) this.yy.parser.parseError(e, t);
				else throw Error(e);
			}, "parseError"),
			setInput: /* @__PURE__ */ e(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__ */ e(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__ */ e(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__ */ e(function() {
				return this._more = !0, this;
			}, "more"),
			reject: /* @__PURE__ */ e(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__ */ e(function(e) {
				this.unput(this.match.slice(e));
			}, "less"),
			pastInput: /* @__PURE__ */ e(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__ */ e(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__ */ e(function() {
				var e = this.pastInput(), t = Array(e.length + 1).join("-");
				return e + this.upcomingInput() + "\n" + t + "^";
			}, "showPosition"),
			test_match: /* @__PURE__ */ e(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__ */ e(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__ */ e(function() {
				return this.next() || this.lex();
			}, "lex"),
			begin: /* @__PURE__ */ e(function(e) {
				this.conditionStack.push(e);
			}, "begin"),
			popState: /* @__PURE__ */ e(function() {
				return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
			}, "popState"),
			_currentRules: /* @__PURE__ */ e(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__ */ e(function(e) {
				return e = this.conditionStack.length - 1 - Math.abs(e || 0), e >= 0 ? this.conditionStack[e] : "INITIAL";
			}, "topState"),
			pushState: /* @__PURE__ */ e(function(e) {
				this.begin(e);
			}, "pushState"),
			stateStackSize: /* @__PURE__ */ e(function() {
				return this.conditionStack.length;
			}, "stateStackSize"),
			options: { "case-insensitive": !0 },
			performAction: /* @__PURE__ */ e(function(e, t, n, r) {
				switch (n) {
					case 0: return 6;
					case 1: return 8;
					case 2: return 8;
					case 3: return 6;
					case 4: return 7;
					case 5: return 13;
					case 6: return 14;
					case 7: return 11;
				}
			}, "anonymous"),
			rules: [
				/^(?:\s*%%.*)/i,
				/^(?:ishikawa-beta\b)/i,
				/^(?:ishikawa\b)/i,
				/^(?:[\s]+[\n])/i,
				/^(?:[\n]+)/i,
				/^(?:[\s]+)/i,
				/^(?:[^\n]+)/i,
				/^(?:$)/i
			],
			conditions: { INITIAL: {
				rules: [
					0,
					1,
					2,
					3,
					4,
					5,
					6,
					7
				],
				inclusive: !0
			} }
		};
	})();
	function g() {
		this.yy = {};
	}
	return e(g, "Parser"), g.prototype = h, h.Parser = g, new g();
})();
m.parser = m;
var h = m, g = class {
	constructor() {
		this.stack = [], this.clear = this.clear.bind(this), this.addNode = this.addNode.bind(this), this.getRoot = this.getRoot.bind(this);
	}
	static {
		e(this, "IshikawaDB");
	}
	clear() {
		this.root = void 0, this.stack = [], this.baseLevel = void 0, t();
	}
	getRoot() {
		return this.root;
	}
	addNode(e, t) {
		let r = n.sanitizeText(t, o());
		if (!this.root) {
			this.root = {
				text: r,
				children: []
			}, this.stack = [{
				level: 0,
				node: this.root
			}], u(r);
			return;
		}
		this.baseLevel ??= e;
		let i = e - this.baseLevel + 1;
		for (i <= 0 && (i = 1); this.stack.length > 1 && this.stack[this.stack.length - 1].level >= i;) this.stack.pop();
		let a = this.stack[this.stack.length - 1].node, s = {
			text: r,
			children: []
		};
		a.children.push(s), this.stack.push({
			level: i,
			node: s
		});
	}
	getAccTitle() {
		return a();
	}
	setAccTitle(e) {
		l(e);
	}
	getAccDescription() {
		return i();
	}
	setAccDescription(e) {
		c(e);
	}
	getDiagramTitle() {
		return s();
	}
	setDiagramTitle(e) {
		u(e);
	}
}, _ = 14, v = 250, y = 30, b = 60, x = 5, S = 82 * Math.PI / 180, C = Math.cos(S), w = Math.sin(S), T = /* @__PURE__ */ e((e, t, n) => {
	let i = e.node().getBBox(), a = i.width + t * 2, o = i.height + t * 2;
	r(e, o, a, n), e.attr("viewBox", `${i.x - t} ${i.y - t} ${a} ${o}`);
}, "applyPaddedViewBox"), E = /* @__PURE__ */ e((e, t, n, r) => {
	let i = r.db.getRoot();
	if (!i) return;
	let a = o(), { look: s, handDrawnSeed: c, themeVariables: l } = a, u = f(a.fontSize)[0] ?? _, m = s === "handDrawn", h = i.children ?? [], g = a.ishikawa?.diagramPadding ?? 20, y = a.ishikawa?.useMaxWidth ?? !1, b = d(t), x = b.append("g").attr("class", "ishikawa"), S = m ? p.svg(b.node()) : void 0, C = S ? {
		roughSvg: S,
		seed: c ?? 0,
		lineColor: l?.lineColor ?? "#333",
		fillColor: l?.mainBkg ?? "#fff"
	} : void 0, w = `ishikawa-arrow-${t}`;
	m || x.append("defs").append("marker").attr("id", w).attr("viewBox", "0 0 10 10").attr("refX", 0).attr("refY", 5).attr("markerWidth", 6).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 10 0 L 0 5 L 10 10 Z").attr("class", "ishikawa-arrow");
	let E = 0, k = v, A = m ? void 0 : L(x, E, k, E, k, "ishikawa-spine");
	if (O(x, E, k, i.text, u, C), !h.length) {
		m && L(x, E, k, E, k, "ishikawa-spine", C), T(b, g, y);
		return;
	}
	E -= 20;
	let j = h.filter((e, t) => t % 2 == 0), N = h.filter((e, t) => t % 2 == 1), P = D(j), F = D(N), I = P.total + F.total, R = v, z = v;
	if (I > 0) {
		let e = v * 2, t = v * .3;
		R = Math.max(t, e * (P.total / I)), z = Math.max(t, e * (F.total / I));
	}
	let B = u * 2;
	R = Math.max(R, P.max * B), z = Math.max(z, F.max * B), k = Math.max(R, v), A && A.attr("y1", k).attr("y2", k), x.select(".ishikawa-head-group").attr("transform", `translate(0,${k})`);
	let V = Math.ceil(h.length / 2);
	for (let e = 0; e < V; e++) {
		let t = x.append("g").attr("class", "ishikawa-pair");
		for (let [n, r, i] of [[
			h[e * 2],
			-1,
			R
		], [
			h[e * 2 + 1],
			1,
			z
		]]) n && M(t, n, E, k, r, i, u, C);
		E = t.selectAll("text").nodes().reduce((e, t) => Math.min(e, t.getBBox().x), Infinity);
	}
	if (m) L(x, E, k, 0, k, "ishikawa-spine", C);
	else {
		A.attr("x1", E);
		let e = `url(#${w})`;
		x.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start", e);
	}
	T(b, g, y);
}, "draw"), D = /* @__PURE__ */ e((t) => {
	let n = /* @__PURE__ */ e((e) => e.children.reduce((e, t) => e + 1 + n(t), 0), "countDescendants");
	return t.reduce((e, t) => {
		let r = n(t);
		return e.total += r, e.max = Math.max(e.max, r), e;
	}, {
		total: 0,
		max: 0
	});
}, "sideStats"), O = /* @__PURE__ */ e((e, t, n, r, i, a) => {
	let o = Math.max(6, Math.floor(110 / (i * .6))), s = e.append("g").attr("class", "ishikawa-head-group").attr("transform", `translate(${t},${n})`), c = F(s, P(r, o), 0, 0, "ishikawa-head-label", "start", i), l = c.node().getBBox(), u = Math.max(60, l.width + 6), d = Math.max(40, l.height * 2 + 40), f = `M 0 ${-d / 2} L 0 ${d / 2} Q ${u * 2.4} 0 0 ${-d / 2} Z`;
	if (a) {
		let e = a.roughSvg.path(f, {
			roughness: 1.5,
			seed: a.seed,
			fill: a.fillColor,
			fillStyle: "hachure",
			fillWeight: 2.5,
			hachureGap: 5,
			stroke: a.lineColor,
			strokeWidth: 2
		});
		s.insert(() => e, ":first-child").attr("class", "ishikawa-head");
	} else s.insert("path", ":first-child").attr("class", "ishikawa-head").attr("d", f);
	c.attr("transform", `translate(${(u - l.width) / 2 - l.x + 3},${-l.y - l.height / 2})`);
}, "drawHead"), k = /* @__PURE__ */ e((t, n) => {
	let r = [], i = [], a = /* @__PURE__ */ e((e, t, o) => {
		let s = n === -1 ? [...e].reverse() : e;
		for (let e of s) {
			let n = r.length, s = e.children ?? [];
			r.push({
				depth: o,
				text: P(e.text, 15),
				parentIndex: t,
				childCount: s.length
			}), o % 2 == 0 ? (i.push(n), s.length && a(s, n, o + 1)) : (s.length && a(s, n, o + 1), i.push(n));
		}
	}, "walk");
	return a(t, -1, 2), {
		entries: r,
		yOrder: i
	};
}, "flattenTree"), A = /* @__PURE__ */ e((e, t, n, r, i, a, o) => {
	let s = e.append("g").attr("class", "ishikawa-label-group"), c = F(s, t, n, r + 11 * i, "ishikawa-label cause", "middle", a).node().getBBox();
	if (o) {
		let e = o.roughSvg.rectangle(c.x - 20, c.y - 2, c.width + 40, c.height + 4, {
			roughness: 1.5,
			seed: o.seed,
			fill: o.fillColor,
			fillStyle: "hachure",
			fillWeight: 2.5,
			hachureGap: 5,
			stroke: o.lineColor,
			strokeWidth: 2
		});
		s.insert(() => e, ":first-child").attr("class", "ishikawa-label-box");
	} else s.insert("rect", ":first-child").attr("class", "ishikawa-label-box").attr("x", c.x - 20).attr("y", c.y - 2).attr("width", c.width + 40).attr("height", c.height + 4);
}, "drawCauseLabel"), j = /* @__PURE__ */ e((e, t, n, r, i, a) => {
	let o = Math.sqrt(r * r + i * i);
	if (o === 0) return;
	let s = r / o, c = i / o, l = -c * 6, u = s * 6, d = t, f = n, p = `M ${d} ${f} L ${d - s * 6 * 2 + l} ${f - c * 6 * 2 + u} L ${d - s * 6 * 2 - l} ${f - c * 6 * 2 - u} Z`, m = a.roughSvg.path(p, {
		roughness: 1,
		seed: a.seed,
		fill: a.lineColor,
		fillStyle: "solid",
		stroke: a.lineColor,
		strokeWidth: 1
	});
	e.append(() => m);
}, "drawArrowMarker"), M = /* @__PURE__ */ e((e, t, n, r, i, a, o, s) => {
	let c = t.children ?? [], l = a * (c.length ? 1 : .2), u = -C * l, d = w * l * i, f = n + u, p = r + d;
	if (L(e, n, r, f, p, "ishikawa-branch", s), s && j(e, n, r, n - f, r - p, s), A(e, t.text, f, p, i, o, s), !c.length) return;
	let { entries: m, yOrder: h } = k(c, i), g = m.length, _ = Array(g);
	for (let [e, t] of h.entries()) _[t] = r + d * ((e + 1) / (g + 1));
	let v = /* @__PURE__ */ new Map();
	v.set(-1, {
		x0: n,
		y0: r,
		x1: f,
		y1: p,
		childCount: c.length,
		childrenDrawn: 0
	});
	let S = -C, T = w * i, E = i < 0 ? "ishikawa-label up" : "ishikawa-label down";
	for (let [t, n] of m.entries()) {
		let r = _[t], i = v.get(n.parentIndex), a = e.append("g").attr("class", "ishikawa-sub-group"), c = 0, l = 0, u = 0;
		if (n.depth % 2 == 0) {
			let e = i.y1 - i.y0;
			c = I(i.x0, i.x1, e ? (r - i.y0) / e : .5), l = r, u = c - (n.childCount > 0 ? b + n.childCount * x : y), L(a, c, r, u, r, "ishikawa-sub-branch", s), s && j(a, c, r, 1, 0, s), F(a, n.text, u, r, "ishikawa-label align", "end", o);
		} else {
			let e = i.childrenDrawn++;
			c = I(i.x0, i.x1, (i.childCount - e) / (i.childCount + 1)), l = i.y0, u = c + S * ((r - l) / T), L(a, c, l, u, r, "ishikawa-sub-branch", s), s && j(a, c, l, c - u, l - r, s), F(a, n.text, u, r, E, "end", o);
		}
		n.childCount > 0 && v.set(t, {
			x0: c,
			y0: l,
			x1: u,
			y1: r,
			childCount: n.childCount,
			childrenDrawn: 0
		});
	}
}, "drawBranch"), N = /* @__PURE__ */ e((e) => e.split(/<br\s*\/?>|\n/), "splitLines"), P = /* @__PURE__ */ e((e, t) => {
	if (e.length <= t) return e;
	let n = [];
	for (let r of e.split(/\s+/)) {
		let e = n.length - 1;
		e >= 0 && n[e].length + 1 + r.length <= t ? n[e] += " " + r : n.push(r);
	}
	return n.join("\n");
}, "wrapText"), F = /* @__PURE__ */ e((e, t, n, r, i, a, o) => {
	let s = N(t), c = o * 1.05, l = e.append("text").attr("class", i).attr("text-anchor", a).attr("x", n).attr("y", r - (s.length - 1) * c / 2);
	for (let [e, t] of s.entries()) l.append("tspan").attr("x", n).attr("dy", e === 0 ? 0 : c).text(t);
	return l;
}, "drawMultilineText"), I = /* @__PURE__ */ e((e, t, n) => e + (t - e) * n, "lerp"), L = /* @__PURE__ */ e((e, t, n, r, i, a, o) => {
	if (o) {
		let s = o.roughSvg.line(t, n, r, i, {
			roughness: 1.5,
			seed: o.seed,
			stroke: o.lineColor,
			strokeWidth: 2
		});
		e.append(() => s).attr("class", a);
		return;
	}
	return e.append("line").attr("class", a).attr("x1", t).attr("y1", n).attr("x2", r).attr("y2", i);
}, "drawLine"), R = {
	parser: h,
	get db() {
		return new g();
	},
	renderer: { draw: E },
	styles: /* @__PURE__ */ e((e) => `
.ishikawa .ishikawa-spine,
.ishikawa .ishikawa-branch,
.ishikawa .ishikawa-sub-branch {
  stroke: ${e.lineColor};
  stroke-width: 2;
  fill: none;
}

.ishikawa .ishikawa-sub-branch {
  stroke-width: 1;
}

.ishikawa .ishikawa-arrow {
  fill: ${e.lineColor};
}

.ishikawa .ishikawa-head {
  fill: ${e.mainBkg};
  stroke: ${e.lineColor};
  stroke-width: 2;
}

.ishikawa .ishikawa-label-box {
  fill: ${e.mainBkg};
  stroke: ${e.lineColor};
  stroke-width: 2;
}

.ishikawa text {
  font-family: ${e.fontFamily};
  font-size: ${e.fontSize};
  fill: ${e.textColor};
}

.ishikawa .ishikawa-head-label {
  font-weight: 600;
  text-anchor: middle;
  dominant-baseline: middle;
  font-size: 14px;
}

.ishikawa .ishikawa-label {
  text-anchor: end;
}

.ishikawa .ishikawa-label.cause {
  text-anchor: middle;
  dominant-baseline: middle;
}

.ishikawa .ishikawa-label.align {
  text-anchor: end;
  dominant-baseline: middle;
}

.ishikawa .ishikawa-label.up {
  dominant-baseline: baseline;
}

.ishikawa .ishikawa-label.down {
  dominant-baseline: hanging;
}
`, "getStyles")
};
//#endregion
export { R as diagram };
