1 | import { p as St, f as $ } from "./flowDb-0019c359.js";
|
2 | import { h as S, u as Lt, r as Et, p as _t, l as Tt, d as D, f as tt, G as Nt } from "./layout-816c0a3e.js";
|
3 | import { j as x, o as G, p as z, q as et, c as J, f as rt, l as I, r as V, t as At } from "./mermaid-9357f3d0.js";
|
4 | import { a as N, b as at, i as nt, c as _, e as st, d as it, f as Ct, g as It } from "./styles-9a36b1c0.js";
|
5 | import { l as Bt } from "./line-a77fdd5a.js";
|
6 | import { s as Mt } from "./selectAll-9c9e0fdb.js";
|
7 | import "./index-b9fa59d5.js";
|
8 | import "./edges-9aecf713.js";
|
9 | import "./createText-8ca1146d.js";
|
10 | import "./svgDraw-c2b80d25.js";
|
11 | import "./array-2ff2c7a6.js";
|
12 | import "./constant-2fe7eae5.js";
|
13 | function Dt(r) {
|
14 | if (!r.ok)
|
15 | throw new Error(r.status + " " + r.statusText);
|
16 | return r.text();
|
17 | }
|
18 | function Pt(r, e) {
|
19 | return fetch(r, e).then(Dt);
|
20 | }
|
21 | function Rt(r) {
|
22 | return (e, t) => Pt(e, t).then((n) => new DOMParser().parseFromString(n, r));
|
23 | }
|
24 | var Gt = Rt("image/svg+xml"), Y = {
|
25 | normal: Wt,
|
26 | vee: $t,
|
27 | undirected: Vt
|
28 | };
|
29 | function Ut(r) {
|
30 | Y = r;
|
31 | }
|
32 | function Wt(r, e, t, n) {
|
33 | var a = r.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto"), s = a.append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
34 | N(s, t[n + "Style"]), t[n + "Class"] && s.attr("class", t[n + "Class"]);
|
35 | }
|
36 | function $t(r, e, t, n) {
|
37 | var a = r.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto"), s = a.append("path").attr("d", "M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
38 | N(s, t[n + "Style"]), t[n + "Class"] && s.attr("class", t[n + "Class"]);
|
39 | }
|
40 | function Vt(r, e, t, n) {
|
41 | var a = r.append("marker").attr("id", e).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto"), s = a.append("path").attr("d", "M 0 5 L 10 5").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
42 | N(s, t[n + "Style"]), t[n + "Class"] && s.attr("class", t[n + "Class"]);
|
43 | }
|
44 | function zt(r, e) {
|
45 | var t = r;
|
46 | return t.node().appendChild(e.label), N(t, e.labelStyle), t;
|
47 | }
|
48 | function Yt(r, e) {
|
49 | for (var t = r.append("text"), n = Ht(e.label).split(`
|
50 | `), a = 0; a < n.length; a++)
|
51 | t.append("tspan").attr("xml:space", "preserve").attr("dy", "1em").attr("x", "1").text(n[a]);
|
52 | return N(t, e.labelStyle), t;
|
53 | }
|
54 | function Ht(r) {
|
55 | for (var e = "", t = !1, n, a = 0; a < r.length; ++a)
|
56 | if (n = r[a], t) {
|
57 | switch (n) {
|
58 | case "n":
|
59 | e += `
|
60 | `;
|
61 | break;
|
62 | default:
|
63 | e += n;
|
64 | }
|
65 | t = !1;
|
66 | } else
|
67 | n === "\\" ? t = !0 : e += n;
|
68 | return e;
|
69 | }
|
70 | function K(r, e, t) {
|
71 | var n = e.label, a = r.append("g");
|
72 | e.labelType === "svg" ? zt(a, e) : typeof n != "string" || e.labelType === "html" ? at(a, e) : Yt(a, e);
|
73 | var s = a.node().getBBox(), i;
|
74 | switch (t) {
|
75 | case "top":
|
76 | i = -e.height / 2;
|
77 | break;
|
78 | case "bottom":
|
79 | i = e.height / 2 - s.height;
|
80 | break;
|
81 | default:
|
82 | i = -s.height / 2;
|
83 | }
|
84 | return a.attr("transform", "translate(" + -s.width / 2 + "," + i + ")"), a;
|
85 | }
|
86 | var H = function(r, e) {
|
87 | var t = e.nodes().filter(function(s) {
|
88 | return nt(e, s);
|
89 | }), n = r.selectAll("g.cluster").data(t, function(s) {
|
90 | return s;
|
91 | });
|
92 | _(n.exit(), e).style("opacity", 0).remove();
|
93 | var a = n.enter().append("g").attr("class", "cluster").attr("id", function(s) {
|
94 | var i = e.node(s);
|
95 | return i.id;
|
96 | }).style("opacity", 0).each(function(s) {
|
97 | var i = e.node(s), o = x(this);
|
98 | x(this).append("rect");
|
99 | var c = o.append("g").attr("class", "label");
|
100 | K(c, i, i.clusterLabelPos);
|
101 | });
|
102 | return n = n.merge(a), n = _(n, e).style("opacity", 1), n.selectAll("rect").each(function(s) {
|
103 | var i = e.node(s), o = x(this);
|
104 | N(o, i.style);
|
105 | }), n;
|
106 | };
|
107 | function Xt(r) {
|
108 | H = r;
|
109 | }
|
110 | let X = function(r, e) {
|
111 | var t = r.selectAll("g.edgeLabel").data(e.edges(), function(a) {
|
112 | return st(a);
|
113 | }).classed("update", !0);
|
114 | t.exit().remove(), t.enter().append("g").classed("edgeLabel", !0).style("opacity", 0), t = r.selectAll("g.edgeLabel"), t.each(function(a) {
|
115 | var s = x(this);
|
116 | s.select(".label").remove();
|
117 | var i = e.edge(a), o = K(s, e.edge(a), 0).classed("label", !0), c = o.node().getBBox();
|
118 | i.labelId && o.attr("id", i.labelId), S(i, "width") || (i.width = c.width), S(i, "height") || (i.height = c.height);
|
119 | });
|
120 | var n;
|
121 | return t.exit ? n = t.exit() : n = t.selectAll(null), _(n, e).style("opacity", 0).remove(), t;
|
122 | };
|
123 | function Ft(r) {
|
124 | X = r;
|
125 | }
|
126 | function O(r, e) {
|
127 | return r.intersect(e);
|
128 | }
|
129 | var F = function(r, e, t) {
|
130 | var n = r.selectAll("g.edgePath").data(e.edges(), function(i) {
|
131 | return st(i);
|
132 | }).classed("update", !0), a = Zt(n, e);
|
133 | Ot(n, e);
|
134 | var s = n.merge !== void 0 ? n.merge(a) : n;
|
135 | return _(s, e).style("opacity", 1), s.each(function(i) {
|
136 | var o = x(this), c = e.edge(i);
|
137 | c.elem = this, c.id && o.attr("id", c.id), it(
|
138 | o,
|
139 | c.class,
|
140 | (o.classed("update") ? "update " : "") + "edgePath"
|
141 | );
|
142 | }), s.selectAll("path.path").each(function(i) {
|
143 | var o = e.edge(i);
|
144 | o.arrowheadId = Lt("arrowhead");
|
145 | var c = x(this).attr("marker-end", function() {
|
146 | return "url(" + Qt(location.href, o.arrowheadId) + ")";
|
147 | }).style("fill", "none");
|
148 | _(c, e).attr("d", function(d) {
|
149 | return Jt(e, d);
|
150 | }), N(c, o.style);
|
151 | }), s.selectAll("defs *").remove(), s.selectAll("defs").each(function(i) {
|
152 | var o = e.edge(i), c = t[o.arrowhead];
|
153 | c(x(this), o.arrowheadId, o, "arrowhead");
|
154 | }), s;
|
155 | };
|
156 | function qt(r) {
|
157 | F = r;
|
158 | }
|
159 | function Qt(r, e) {
|
160 | var t = r.split("#")[0];
|
161 | return t + "#" + e;
|
162 | }
|
163 | function Jt(r, e) {
|
164 | var t = r.edge(e), n = r.node(e.v), a = r.node(e.w), s = t.points.slice(1, t.points.length - 1);
|
165 | return s.unshift(O(n, s[0])), s.push(O(a, s[s.length - 1])), ot(t, s);
|
166 | }
|
167 | function ot(r, e) {
|
168 | var t = (Bt || Gt.line)().x(function(n) {
|
169 | return n.x;
|
170 | }).y(function(n) {
|
171 | return n.y;
|
172 | });
|
173 | return (t.curve || t.interpolate)(r.curve), t(e);
|
174 | }
|
175 | function Kt(r) {
|
176 | var e = r.getBBox(), t = r.ownerSVGElement.getScreenCTM().inverse().multiply(r.getScreenCTM()).translate(e.width / 2, e.height / 2);
|
177 | return { x: t.e, y: t.f };
|
178 | }
|
179 | function Zt(r, e) {
|
180 | var t = r.enter().append("g").attr("class", "edgePath").style("opacity", 0);
|
181 | return t.append("path").attr("class", "path").attr("d", function(n) {
|
182 | var a = e.edge(n), s = e.node(n.v).elem, i = Et(a.points.length).map(function() {
|
183 | return Kt(s);
|
184 | });
|
185 | return ot(a, i);
|
186 | }), t.append("defs"), t;
|
187 | }
|
188 | function Ot(r, e) {
|
189 | var t = r.exit();
|
190 | _(t, e).style("opacity", 0).remove();
|
191 | }
|
192 | var q = function(r, e, t) {
|
193 | var n = e.nodes().filter(function(i) {
|
194 | return !nt(e, i);
|
195 | }), a = r.selectAll("g.node").data(n, function(i) {
|
196 | return i;
|
197 | }).classed("update", !0);
|
198 | a.exit().remove(), a.enter().append("g").attr("class", "node").style("opacity", 0), a = r.selectAll("g.node"), a.each(function(i) {
|
199 | var o = e.node(i), c = x(this);
|
200 | it(
|
201 | c,
|
202 | o.class,
|
203 | (c.classed("update") ? "update " : "") + "node"
|
204 | ), c.select("g.label").remove();
|
205 | var d = c.append("g").attr("class", "label"), l = K(d, o), y = t[o.shape], h = _t(l.node().getBBox(), "width", "height");
|
206 | o.elem = this, o.id && c.attr("id", o.id), o.labelId && d.attr("id", o.labelId), S(o, "width") && (h.width = o.width), S(o, "height") && (h.height = o.height), h.width += o.paddingLeft + o.paddingRight, h.height += o.paddingTop + o.paddingBottom, d.attr(
|
207 | "transform",
|
208 | "translate(" + (o.paddingLeft - o.paddingRight) / 2 + "," + (o.paddingTop - o.paddingBottom) / 2 + ")"
|
209 | );
|
210 | var u = x(this);
|
211 | u.select(".label-container").remove();
|
212 | var p = y(u, h, o).classed("label-container", !0);
|
213 | N(p, o.style);
|
214 | var m = p.node().getBBox();
|
215 | o.width = m.width, o.height = m.height;
|
216 | });
|
217 | var s;
|
218 | return a.exit ? s = a.exit() : s = a.selectAll(null), _(s, e).style("opacity", 0).remove(), a;
|
219 | };
|
220 | function jt(r) {
|
221 | q = r;
|
222 | }
|
223 | function te(r, e) {
|
224 | var t = r.filter(function() {
|
225 | return !x(this).classed("update");
|
226 | });
|
227 | function n(a) {
|
228 | var s = e.node(a);
|
229 | return "translate(" + s.x + "," + s.y + ")";
|
230 | }
|
231 | t.attr("transform", n), _(r, e).style("opacity", 1).attr("transform", n), _(t.selectAll("rect"), e).attr("width", function(a) {
|
232 | return e.node(a).width;
|
233 | }).attr("height", function(a) {
|
234 | return e.node(a).height;
|
235 | }).attr("x", function(a) {
|
236 | var s = e.node(a);
|
237 | return -s.width / 2;
|
238 | }).attr("y", function(a) {
|
239 | var s = e.node(a);
|
240 | return -s.height / 2;
|
241 | });
|
242 | }
|
243 | function ee(r, e) {
|
244 | var t = r.filter(function() {
|
245 | return !x(this).classed("update");
|
246 | });
|
247 | function n(a) {
|
248 | var s = e.edge(a);
|
249 | return S(s, "x") ? "translate(" + s.x + "," + s.y + ")" : "";
|
250 | }
|
251 | t.attr("transform", n), _(r, e).style("opacity", 1).attr("transform", n);
|
252 | }
|
253 | function re(r, e) {
|
254 | var t = r.filter(function() {
|
255 | return !x(this).classed("update");
|
256 | });
|
257 | function n(a) {
|
258 | var s = e.node(a);
|
259 | return "translate(" + s.x + "," + s.y + ")";
|
260 | }
|
261 | t.attr("transform", n), _(r, e).style("opacity", 1).attr("transform", n);
|
262 | }
|
263 | function lt(r, e, t, n) {
|
264 | var a = r.x, s = r.y, i = a - n.x, o = s - n.y, c = Math.sqrt(e * e * o * o + t * t * i * i), d = Math.abs(e * t * i / c);
|
265 | n.x < a && (d = -d);
|
266 | var l = Math.abs(e * t * o / c);
|
267 | return n.y < s && (l = -l), { x: a + d, y: s + l };
|
268 | }
|
269 | function ae(r, e, t) {
|
270 | return lt(r, e, e, t);
|
271 | }
|
272 | function ne(r, e, t, n) {
|
273 | var a, s, i, o, c, d, l, y, h, u, p, m, f, v, k;
|
274 | if (a = e.y - r.y, i = r.x - e.x, c = e.x * r.y - r.x * e.y, h = a * t.x + i * t.y + c, u = a * n.x + i * n.y + c, !(h !== 0 && u !== 0 && j(h, u)) && (s = n.y - t.y, o = t.x - n.x, d = n.x * t.y - t.x * n.y, l = s * r.x + o * r.y + d, y = s * e.x + o * e.y + d, !(l !== 0 && y !== 0 && j(l, y)) && (p = a * o - s * i, p !== 0)))
|
275 | return m = Math.abs(p / 2), f = i * d - o * c, v = f < 0 ? (f - m) / p : (f + m) / p, f = s * c - a * d, k = f < 0 ? (f - m) / p : (f + m) / p, { x: v, y: k };
|
276 | }
|
277 | function j(r, e) {
|
278 | return r * e > 0;
|
279 | }
|
280 | function T(r, e, t) {
|
281 | var n = r.x, a = r.y, s = [], i = Number.POSITIVE_INFINITY, o = Number.POSITIVE_INFINITY;
|
282 | e.forEach(function(p) {
|
283 | i = Math.min(i, p.x), o = Math.min(o, p.y);
|
284 | });
|
285 | for (var c = n - r.width / 2 - i, d = a - r.height / 2 - o, l = 0; l < e.length; l++) {
|
286 | var y = e[l], h = e[l < e.length - 1 ? l + 1 : 0], u = ne(
|
287 | r,
|
288 | t,
|
289 | { x: c + y.x, y: d + y.y },
|
290 | { x: c + h.x, y: d + h.y }
|
291 | );
|
292 | u && s.push(u);
|
293 | }
|
294 | return s.length ? (s.length > 1 && s.sort(function(p, m) {
|
295 | var f = p.x - t.x, v = p.y - t.y, k = Math.sqrt(f * f + v * v), B = m.x - t.x, E = m.y - t.y, U = Math.sqrt(B * B + E * E);
|
296 | return k < U ? -1 : k === U ? 0 : 1;
|
297 | }), s[0]) : (console.log("NO INTERSECTION FOUND, RETURN NODE CENTER", r), r);
|
298 | }
|
299 | function Z(r, e) {
|
300 | var t = r.x, n = r.y, a = e.x - t, s = e.y - n, i = r.width / 2, o = r.height / 2, c, d;
|
301 | return Math.abs(s) * i > Math.abs(a) * o ? (s < 0 && (o = -o), c = s === 0 ? 0 : o * a / s, d = o) : (a < 0 && (i = -i), c = i, d = a === 0 ? 0 : i * s / a), { x: t + c, y: n + d };
|
302 | }
|
303 | var Q = {
|
304 | rect: ie,
|
305 | ellipse: oe,
|
306 | circle: le,
|
307 | diamond: ce
|
308 | };
|
309 | function se(r) {
|
310 | Q = r;
|
311 | }
|
312 | function ie(r, e, t) {
|
313 | var n = r.insert("rect", ":first-child").attr("rx", t.rx).attr("ry", t.ry).attr("x", -e.width / 2).attr("y", -e.height / 2).attr("width", e.width).attr("height", e.height);
|
314 | return t.intersect = function(a) {
|
315 | return Z(t, a);
|
316 | }, n;
|
317 | }
|
318 | function oe(r, e, t) {
|
319 | var n = e.width / 2, a = e.height / 2, s = r.insert("ellipse", ":first-child").attr("x", -e.width / 2).attr("y", -e.height / 2).attr("rx", n).attr("ry", a);
|
320 | return t.intersect = function(i) {
|
321 | return lt(t, n, a, i);
|
322 | }, s;
|
323 | }
|
324 | function le(r, e, t) {
|
325 | var n = Math.max(e.width, e.height) / 2, a = r.insert("circle", ":first-child").attr("x", -e.width / 2).attr("y", -e.height / 2).attr("r", n);
|
326 | return t.intersect = function(s) {
|
327 | return ae(t, n, s);
|
328 | }, a;
|
329 | }
|
330 | function ce(r, e, t) {
|
331 | var n = e.width * Math.SQRT2 / 2, a = e.height * Math.SQRT2 / 2, s = [
|
332 | { x: 0, y: -a },
|
333 | { x: -n, y: 0 },
|
334 | { x: 0, y: a },
|
335 | { x: n, y: 0 }
|
336 | ], i = r.insert("polygon", ":first-child").attr(
|
337 | "points",
|
338 | s.map(function(o) {
|
339 | return o.x + "," + o.y;
|
340 | }).join(" ")
|
341 | );
|
342 | return t.intersect = function(o) {
|
343 | return T(t, s, o);
|
344 | }, i;
|
345 | }
|
346 | function de() {
|
347 | var r = function(e, t) {
|
348 | fe(t);
|
349 | var n = P(e, "output"), a = P(n, "clusters"), s = P(n, "edgePaths"), i = X(P(n, "edgeLabels"), t), o = q(P(n, "nodes"), t, Q);
|
350 | Tt(t), re(o, t), ee(i, t), F(s, t, Y);
|
351 | var c = H(a, t);
|
352 | te(c, t), pe(t);
|
353 | };
|
354 | return r.createNodes = function(e) {
|
355 | return arguments.length ? (jt(e), r) : q;
|
356 | }, r.createClusters = function(e) {
|
357 | return arguments.length ? (Xt(e), r) : H;
|
358 | }, r.createEdgeLabels = function(e) {
|
359 | return arguments.length ? (Ft(e), r) : X;
|
360 | }, r.createEdgePaths = function(e) {
|
361 | return arguments.length ? (qt(e), r) : F;
|
362 | }, r.shapes = function(e) {
|
363 | return arguments.length ? (se(e), r) : Q;
|
364 | }, r.arrows = function(e) {
|
365 | return arguments.length ? (Ut(e), r) : Y;
|
366 | }, r;
|
367 | }
|
368 | var he = {
|
369 | paddingLeft: 10,
|
370 | paddingRight: 10,
|
371 | paddingTop: 10,
|
372 | paddingBottom: 10,
|
373 | rx: 0,
|
374 | ry: 0,
|
375 | shape: "rect"
|
376 | }, ue = {
|
377 | arrowhead: "normal",
|
378 | curve: G
|
379 | };
|
380 | function fe(r) {
|
381 | r.nodes().forEach(function(e) {
|
382 | var t = r.node(e);
|
383 | !S(t, "label") && !r.children(e).length && (t.label = e), S(t, "paddingX") && D(t, {
|
384 | paddingLeft: t.paddingX,
|
385 | paddingRight: t.paddingX
|
386 | }), S(t, "paddingY") && D(t, {
|
387 | paddingTop: t.paddingY,
|
388 | paddingBottom: t.paddingY
|
389 | }), S(t, "padding") && D(t, {
|
390 | paddingLeft: t.padding,
|
391 | paddingRight: t.padding,
|
392 | paddingTop: t.padding,
|
393 | paddingBottom: t.padding
|
394 | }), D(t, he), tt(["paddingLeft", "paddingRight", "paddingTop", "paddingBottom"], function(n) {
|
395 | t[n] = Number(t[n]);
|
396 | }), S(t, "width") && (t._prevWidth = t.width), S(t, "height") && (t._prevHeight = t.height);
|
397 | }), r.edges().forEach(function(e) {
|
398 | var t = r.edge(e);
|
399 | S(t, "label") || (t.label = ""), D(t, ue);
|
400 | });
|
401 | }
|
402 | function pe(r) {
|
403 | tt(r.nodes(), function(e) {
|
404 | var t = r.node(e);
|
405 | S(t, "_prevWidth") ? t.width = t._prevWidth : delete t.width, S(t, "_prevHeight") ? t.height = t._prevHeight : delete t.height, delete t._prevWidth, delete t._prevHeight;
|
406 | });
|
407 | }
|
408 | function P(r, e) {
|
409 | var t = r.select("g." + e);
|
410 | return t.empty() && (t = r.append("g").attr("class", e)), t;
|
411 | }
|
412 | function ct(r, e, t) {
|
413 | const n = e.width, a = e.height, s = (n + a) * 0.9, i = [
|
414 | { x: s / 2, y: 0 },
|
415 | { x: s, y: -s / 2 },
|
416 | { x: s / 2, y: -s },
|
417 | { x: 0, y: -s / 2 }
|
418 | ], o = A(r, s, s, i);
|
419 | return t.intersect = function(c) {
|
420 | return T(t, i, c);
|
421 | }, o;
|
422 | }
|
423 | function dt(r, e, t) {
|
424 | const a = e.height, s = a / 4, i = e.width + 2 * s, o = [
|
425 | { x: s, y: 0 },
|
426 | { x: i - s, y: 0 },
|
427 | { x: i, y: -a / 2 },
|
428 | { x: i - s, y: -a },
|
429 | { x: s, y: -a },
|
430 | { x: 0, y: -a / 2 }
|
431 | ], c = A(r, i, a, o);
|
432 | return t.intersect = function(d) {
|
433 | return T(t, o, d);
|
434 | }, c;
|
435 | }
|
436 | function ht(r, e, t) {
|
437 | const n = e.width, a = e.height, s = [
|
438 | { x: -a / 2, y: 0 },
|
439 | { x: n, y: 0 },
|
440 | { x: n, y: -a },
|
441 | { x: -a / 2, y: -a },
|
442 | { x: 0, y: -a / 2 }
|
443 | ], i = A(r, n, a, s);
|
444 | return t.intersect = function(o) {
|
445 | return T(t, s, o);
|
446 | }, i;
|
447 | }
|
448 | function ut(r, e, t) {
|
449 | const n = e.width, a = e.height, s = [
|
450 | { x: -2 * a / 6, y: 0 },
|
451 | { x: n - a / 6, y: 0 },
|
452 | { x: n + 2 * a / 6, y: -a },
|
453 | { x: a / 6, y: -a }
|
454 | ], i = A(r, n, a, s);
|
455 | return t.intersect = function(o) {
|
456 | return T(t, s, o);
|
457 | }, i;
|
458 | }
|
459 | function ft(r, e, t) {
|
460 | const n = e.width, a = e.height, s = [
|
461 | { x: 2 * a / 6, y: 0 },
|
462 | { x: n + a / 6, y: 0 },
|
463 | { x: n - 2 * a / 6, y: -a },
|
464 | { x: -a / 6, y: -a }
|
465 | ], i = A(r, n, a, s);
|
466 | return t.intersect = function(o) {
|
467 | return T(t, s, o);
|
468 | }, i;
|
469 | }
|
470 | function pt(r, e, t) {
|
471 | const n = e.width, a = e.height, s = [
|
472 | { x: -2 * a / 6, y: 0 },
|
473 | { x: n + 2 * a / 6, y: 0 },
|
474 | { x: n - a / 6, y: -a },
|
475 | { x: a / 6, y: -a }
|
476 | ], i = A(r, n, a, s);
|
477 | return t.intersect = function(o) {
|
478 | return T(t, s, o);
|
479 | }, i;
|
480 | }
|
481 | function yt(r, e, t) {
|
482 | const n = e.width, a = e.height, s = [
|
483 | { x: a / 6, y: 0 },
|
484 | { x: n - a / 6, y: 0 },
|
485 | { x: n + 2 * a / 6, y: -a },
|
486 | { x: -2 * a / 6, y: -a }
|
487 | ], i = A(r, n, a, s);
|
488 | return t.intersect = function(o) {
|
489 | return T(t, s, o);
|
490 | }, i;
|
491 | }
|
492 | function vt(r, e, t) {
|
493 | const n = e.width, a = e.height, s = [
|
494 | { x: 0, y: 0 },
|
495 | { x: n + a / 2, y: 0 },
|
496 | { x: n, y: -a / 2 },
|
497 | { x: n + a / 2, y: -a },
|
498 | { x: 0, y: -a }
|
499 | ], i = A(r, n, a, s);
|
500 | return t.intersect = function(o) {
|
501 | return T(t, s, o);
|
502 | }, i;
|
503 | }
|
504 | function gt(r, e, t) {
|
505 | const n = e.height, a = e.width + n / 4, s = r.insert("rect", ":first-child").attr("rx", n / 2).attr("ry", n / 2).attr("x", -a / 2).attr("y", -n / 2).attr("width", a).attr("height", n);
|
506 | return t.intersect = function(i) {
|
507 | return Z(t, i);
|
508 | }, s;
|
509 | }
|
510 | function mt(r, e, t) {
|
511 | const n = e.width, a = e.height, s = [
|
512 | { x: 0, y: 0 },
|
513 | { x: n, y: 0 },
|
514 | { x: n, y: -a },
|
515 | { x: 0, y: -a },
|
516 | { x: 0, y: 0 },
|
517 | { x: -8, y: 0 },
|
518 | { x: n + 8, y: 0 },
|
519 | { x: n + 8, y: -a },
|
520 | { x: -8, y: -a },
|
521 | { x: -8, y: 0 }
|
522 | ], i = A(r, n, a, s);
|
523 | return t.intersect = function(o) {
|
524 | return T(t, s, o);
|
525 | }, i;
|
526 | }
|
527 | function wt(r, e, t) {
|
528 | const n = e.width, a = n / 2, s = a / (2.5 + n / 50), i = e.height + s, o = "M 0," + s + " a " + a + "," + s + " 0,0,0 " + n + " 0 a " + a + "," + s + " 0,0,0 " + -n + " 0 l 0," + i + " a " + a + "," + s + " 0,0,0 " + n + " 0 l 0," + -i, c = r.attr("label-offset-y", s).insert("path", ":first-child").attr("d", o).attr("transform", "translate(" + -n / 2 + "," + -(i / 2 + s) + ")");
|
529 | return t.intersect = function(d) {
|
530 | const l = Z(t, d), y = l.x - t.x;
|
531 | if (a != 0 && (Math.abs(y) < t.width / 2 || Math.abs(y) == t.width / 2 && Math.abs(l.y - t.y) > t.height / 2 - s)) {
|
532 | let h = s * s * (1 - y * y / (a * a));
|
533 | h != 0 && (h = Math.sqrt(h)), h = s - h, d.y - t.y > 0 && (h = -h), l.y += h;
|
534 | }
|
535 | return l;
|
536 | }, c;
|
537 | }
|
538 | function ye(r) {
|
539 | r.shapes().question = ct, r.shapes().hexagon = dt, r.shapes().stadium = gt, r.shapes().subroutine = mt, r.shapes().cylinder = wt, r.shapes().rect_left_inv_arrow = ht, r.shapes().lean_right = ut, r.shapes().lean_left = ft, r.shapes().trapezoid = pt, r.shapes().inv_trapezoid = yt, r.shapes().rect_right_inv_arrow = vt;
|
540 | }
|
541 | function ve(r) {
|
542 | r({ question: ct }), r({ hexagon: dt }), r({ stadium: gt }), r({ subroutine: mt }), r({ cylinder: wt }), r({ rect_left_inv_arrow: ht }), r({ lean_right: ut }), r({ lean_left: ft }), r({ trapezoid: pt }), r({ inv_trapezoid: yt }), r({ rect_right_inv_arrow: vt });
|
543 | }
|
544 | function A(r, e, t, n) {
|
545 | return r.insert("polygon", ":first-child").attr(
|
546 | "points",
|
547 | n.map(function(a) {
|
548 | return a.x + "," + a.y;
|
549 | }).join(" ")
|
550 | ).attr("transform", "translate(" + -e / 2 + "," + t / 2 + ")");
|
551 | }
|
552 | const ge = {
|
553 | addToRender: ye,
|
554 | addToRenderV2: ve
|
555 | }, xt = {}, me = function(r) {
|
556 | const e = Object.keys(r);
|
557 | for (const t of e)
|
558 | xt[t] = r[t];
|
559 | }, bt = function(r, e, t, n, a, s) {
|
560 | const i = n ? n.select(`[id="${t}"]`) : x(`[id="${t}"]`), o = a || document;
|
561 | Object.keys(r).forEach(function(d) {
|
562 | const l = r[d];
|
563 | let y = "default";
|
564 | l.classes.length > 0 && (y = l.classes.join(" "));
|
565 | const h = z(l.styles);
|
566 | let u = l.text !== void 0 ? l.text : l.id, p;
|
567 | if (et(J().flowchart.htmlLabels)) {
|
568 | const v = {
|
569 | label: u.replace(
|
570 | /fa[blrs]?:fa-[\w-]+/g,
|
571 | (k) => `<i class='${k.replace(":", " ")}'></i>`
|
572 | )
|
573 | };
|
574 | p = at(i, v).node(), p.parentNode.removeChild(p);
|
575 | } else {
|
576 | const v = o.createElementNS("http://www.w3.org/2000/svg", "text");
|
577 | v.setAttribute("style", h.labelStyle.replace("color:", "fill:"));
|
578 | const k = u.split(rt.lineBreakRegex);
|
579 | for (const B of k) {
|
580 | const E = o.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
581 | E.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve"), E.setAttribute("dy", "1em"), E.setAttribute("x", "1"), E.textContent = B, v.appendChild(E);
|
582 | }
|
583 | p = v;
|
584 | }
|
585 | let m = 0, f = "";
|
586 | switch (l.type) {
|
587 | case "round":
|
588 | m = 5, f = "rect";
|
589 | break;
|
590 | case "square":
|
591 | f = "rect";
|
592 | break;
|
593 | case "diamond":
|
594 | f = "question";
|
595 | break;
|
596 | case "hexagon":
|
597 | f = "hexagon";
|
598 | break;
|
599 | case "odd":
|
600 | f = "rect_left_inv_arrow";
|
601 | break;
|
602 | case "lean_right":
|
603 | f = "lean_right";
|
604 | break;
|
605 | case "lean_left":
|
606 | f = "lean_left";
|
607 | break;
|
608 | case "trapezoid":
|
609 | f = "trapezoid";
|
610 | break;
|
611 | case "inv_trapezoid":
|
612 | f = "inv_trapezoid";
|
613 | break;
|
614 | case "odd_right":
|
615 | f = "rect_left_inv_arrow";
|
616 | break;
|
617 | case "circle":
|
618 | f = "circle";
|
619 | break;
|
620 | case "ellipse":
|
621 | f = "ellipse";
|
622 | break;
|
623 | case "stadium":
|
624 | f = "stadium";
|
625 | break;
|
626 | case "subroutine":
|
627 | f = "subroutine";
|
628 | break;
|
629 | case "cylinder":
|
630 | f = "cylinder";
|
631 | break;
|
632 | case "group":
|
633 | f = "rect";
|
634 | break;
|
635 | default:
|
636 | f = "rect";
|
637 | }
|
638 | I.warn("Adding node", l.id, l.domId), e.setNode(s.db.lookUpDomId(l.id), {
|
639 | labelType: "svg",
|
640 | labelStyle: h.labelStyle,
|
641 | shape: f,
|
642 | label: p,
|
643 | rx: m,
|
644 | ry: m,
|
645 | class: y,
|
646 | style: h.style,
|
647 | id: s.db.lookUpDomId(l.id)
|
648 | });
|
649 | });
|
650 | }, kt = function(r, e, t) {
|
651 | let n = 0, a, s;
|
652 | if (r.defaultStyle !== void 0) {
|
653 | const i = z(r.defaultStyle);
|
654 | a = i.style, s = i.labelStyle;
|
655 | }
|
656 | r.forEach(function(i) {
|
657 | n++;
|
658 | const o = "L-" + i.start + "-" + i.end, c = "LS-" + i.start, d = "LE-" + i.end, l = {};
|
659 | i.type === "arrow_open" ? l.arrowhead = "none" : l.arrowhead = "normal";
|
660 | let y = "", h = "";
|
661 | if (i.style !== void 0) {
|
662 | const u = z(i.style);
|
663 | y = u.style, h = u.labelStyle;
|
664 | } else
|
665 | switch (i.stroke) {
|
666 | case "normal":
|
667 | y = "fill:none", a !== void 0 && (y = a), s !== void 0 && (h = s);
|
668 | break;
|
669 | case "dotted":
|
670 | y = "fill:none;stroke-width:2px;stroke-dasharray:3;";
|
671 | break;
|
672 | case "thick":
|
673 | y = " stroke-width: 3.5px;fill:none";
|
674 | break;
|
675 | }
|
676 | l.style = y, l.labelStyle = h, i.interpolate !== void 0 ? l.curve = V(i.interpolate, G) : r.defaultInterpolate !== void 0 ? l.curve = V(r.defaultInterpolate, G) : l.curve = V(xt.curve, G), i.text === void 0 ? i.style !== void 0 && (l.arrowheadStyle = "fill: #333") : (l.arrowheadStyle = "fill: #333", l.labelpos = "c", et(J().flowchart.htmlLabels) ? (l.labelType = "html", l.label = `<span id="L-${o}" class="edgeLabel L-${c}' L-${d}" style="${l.labelStyle}">${i.text.replace(
|
677 | /fa[blrs]?:fa-[\w-]+/g,
|
678 | (u) => `<i class='${u.replace(":", " ")}'></i>`
|
679 | )}</span>`) : (l.labelType = "text", l.label = i.text.replace(rt.lineBreakRegex, `
|
680 | `), i.style === void 0 && (l.style = l.style || "stroke: #333; stroke-width: 1.5px;fill:none"), l.labelStyle = l.labelStyle.replace("color:", "fill:"))), l.id = o, l.class = c + " " + d, l.minlen = i.length || 1, e.setEdge(t.db.lookUpDomId(i.start), t.db.lookUpDomId(i.end), l, n);
|
681 | });
|
682 | }, we = function(r, e) {
|
683 | I.info("Extracting classes"), e.db.clear();
|
684 | try {
|
685 | return e.parse(r), e.db.getClasses();
|
686 | } catch (t) {
|
687 | return I.error(t), {};
|
688 | }
|
689 | }, xe = function(r, e, t, n) {
|
690 | I.info("Drawing flowchart"), n.db.clear();
|
691 | const { securityLevel: a, flowchart: s } = J();
|
692 | let i;
|
693 | a === "sandbox" && (i = x("#i" + e));
|
694 | const o = a === "sandbox" ? x(i.nodes()[0].contentDocument.body) : x("body"), c = a === "sandbox" ? i.nodes()[0].contentDocument : document;
|
695 | try {
|
696 | n.parser.parse(r);
|
697 | } catch {
|
698 | I.debug("Parsing failed");
|
699 | }
|
700 | let d = n.db.getDirection();
|
701 | d === void 0 && (d = "TD");
|
702 | const l = s.nodeSpacing || 50, y = s.rankSpacing || 50, h = new Nt({
|
703 | multigraph: !0,
|
704 | compound: !0
|
705 | }).setGraph({
|
706 | rankdir: d,
|
707 | nodesep: l,
|
708 | ranksep: y,
|
709 | marginx: 8,
|
710 | marginy: 8
|
711 | }).setDefaultEdgeLabel(function() {
|
712 | return {};
|
713 | });
|
714 | let u;
|
715 | const p = n.db.getSubGraphs();
|
716 | for (let g = p.length - 1; g >= 0; g--)
|
717 | u = p[g], n.db.addVertex(u.id, u.title, "group", void 0, u.classes);
|
718 | const m = n.db.getVertices();
|
719 | I.warn("Get vertices", m);
|
720 | const f = n.db.getEdges();
|
721 | let v = 0;
|
722 | for (v = p.length - 1; v >= 0; v--) {
|
723 | u = p[v], Mt("cluster").append("text");
|
724 | for (let g = 0; g < u.nodes.length; g++)
|
725 | I.warn(
|
726 | "Setting subgraph",
|
727 | u.nodes[g],
|
728 | n.db.lookUpDomId(u.nodes[g]),
|
729 | n.db.lookUpDomId(u.id)
|
730 | ), h.setParent(n.db.lookUpDomId(u.nodes[g]), n.db.lookUpDomId(u.id));
|
731 | }
|
732 | bt(m, h, e, o, c, n), kt(f, h, n);
|
733 | const k = new de();
|
734 | ge.addToRender(k), k.arrows().none = function(b, L, w, M) {
|
735 | const C = b.append("marker").attr("id", L).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 0 0 L 0 0 z");
|
736 | N(C, w[M + "Style"]);
|
737 | }, k.arrows().normal = function(b, L) {
|
738 | b.append("marker").attr("id", L).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 8).attr("markerHeight", 6).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowheadPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
|
739 | };
|
740 | const B = o.select(`[id="${e}"]`), E = o.select("#" + e + " g");
|
741 | for (k(E, h), E.selectAll("g.node").attr("title", function() {
|
742 | return n.db.getTooltip(this.id);
|
743 | }), n.db.indexNodes("subGraph" + v), v = 0; v < p.length; v++)
|
744 | if (u = p[v], u.title !== "undefined") {
|
745 | const g = c.querySelectorAll(
|
746 | "#" + e + ' [id="' + n.db.lookUpDomId(u.id) + '"] rect'
|
747 | ), b = c.querySelectorAll(
|
748 | "#" + e + ' [id="' + n.db.lookUpDomId(u.id) + '"]'
|
749 | ), L = g[0].x.baseVal.value, w = g[0].y.baseVal.value, M = g[0].width.baseVal.value, C = x(b[0]).select(".label");
|
750 | C.attr("transform", `translate(${L + M / 2}, ${w + 14})`), C.attr("id", e + "Text");
|
751 | for (let W = 0; W < u.classes.length; W++)
|
752 | b[0].classList.add(u.classes[W]);
|
753 | }
|
754 | if (!s.htmlLabels) {
|
755 | const g = c.querySelectorAll('[id="' + e + '"] .edgeLabel .label');
|
756 | for (const b of g) {
|
757 | const L = b.getBBox(), w = c.createElementNS("http://www.w3.org/2000/svg", "rect");
|
758 | w.setAttribute("rx", 0), w.setAttribute("ry", 0), w.setAttribute("width", L.width), w.setAttribute("height", L.height), b.insertBefore(w, b.firstChild);
|
759 | }
|
760 | }
|
761 | At(h, B, s.diagramPadding, s.useMaxWidth), Object.keys(m).forEach(function(g) {
|
762 | const b = m[g];
|
763 | if (b.link) {
|
764 | const L = o.select("#" + e + ' [id="' + n.db.lookUpDomId(g) + '"]');
|
765 | if (L) {
|
766 | const w = c.createElementNS("http://www.w3.org/2000/svg", "a");
|
767 | w.setAttributeNS("http://www.w3.org/2000/svg", "class", b.classes.join(" ")), w.setAttributeNS("http://www.w3.org/2000/svg", "href", b.link), w.setAttributeNS("http://www.w3.org/2000/svg", "rel", "noopener"), a === "sandbox" ? w.setAttributeNS("http://www.w3.org/2000/svg", "target", "_top") : b.linkTarget && w.setAttributeNS("http://www.w3.org/2000/svg", "target", b.linkTarget);
|
768 | const M = L.insert(function() {
|
769 | return w;
|
770 | }, ":first-child"), R = L.select(".label-container");
|
771 | R && M.append(function() {
|
772 | return R.node();
|
773 | });
|
774 | const C = L.select(".label");
|
775 | C && M.append(function() {
|
776 | return C.node();
|
777 | });
|
778 | }
|
779 | }
|
780 | });
|
781 | }, be = {
|
782 | setConf: me,
|
783 | addVertices: bt,
|
784 | addEdges: kt,
|
785 | getClasses: we,
|
786 | draw: xe
|
787 | }, De = {
|
788 | parser: St,
|
789 | db: $,
|
790 | renderer: Ct,
|
791 | styles: It,
|
792 | init: (r) => {
|
793 | r.flowchart || (r.flowchart = {}), r.flowchart.arrowMarkerAbsolute = r.arrowMarkerAbsolute, be.setConf(r.flowchart), $.clear(), $.setGen("gen-1");
|
794 | }
|
795 | };
|
796 | export {
|
797 | De as diagram
|
798 | };
|