@yorz/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +119 -0
  3. package/dist/_commonjsHelpers-DyI1JsEH.js +34 -0
  4. package/dist/abnfDiagram-VRR7QNED-UQS77aUi.js +119 -0
  5. package/dist/api-DrYc_Ds_.js +129852 -0
  6. package/dist/arc-B1cAL3U1.js +132 -0
  7. package/dist/architectureDiagram-ZJ3FMSHR-CfWOhs-q.js +8816 -0
  8. package/dist/blockDiagram-677ZJIJ3-CLOAAFZa.js +3796 -0
  9. package/dist/c4Diagram-LMCZKHZV-BGdELGkb.js +2483 -0
  10. package/dist/certs-BeimSwB3.js +14071 -0
  11. package/dist/certs-C4t5lAmJ.js +14071 -0
  12. package/dist/certs-CLLngjpY.js +14071 -0
  13. package/dist/certs-D3fTB-0_.js +14071 -0
  14. package/dist/channel-_gQD3mZ8.js +8 -0
  15. package/dist/chunk-2Q5K7J3B-DIJkMPWD.js +20 -0
  16. package/dist/chunk-32BRIVSS-CIQb7-9I.js +117 -0
  17. package/dist/chunk-5VM5RSS4-DmlAsh6o.js +20 -0
  18. package/dist/chunk-EX3LRPZG-BEXyn5R-.js +1989 -0
  19. package/dist/chunk-JWPE2WC7-XiIefccF.js +17 -0
  20. package/dist/chunk-MOJQB5TN-CC5OBDWw.js +861 -0
  21. package/dist/chunk-RYQCIY6F-DQacsGpB.js +475 -0
  22. package/dist/chunk-V7JOEXUC-TLRsIUvf.js +2027 -0
  23. package/dist/chunk-VR4S4FIN-9AfN7RDF.js +25 -0
  24. package/dist/chunk-XXDRQBXY-DhWucSRr.js +14 -0
  25. package/dist/classDiagram-OUVF2IWQ-CN55rRkB.js +20 -0
  26. package/dist/classDiagram-v2-EOCWNBFH-CN55rRkB.js +20 -0
  27. package/dist/cli/index.js +5430 -0
  28. package/dist/cose-bilkent-JH36ORCC-8uGYe6_d.js +4944 -0
  29. package/dist/cynefin-VYW2F7L2-BwTeE-TI.js +32061 -0
  30. package/dist/cynefinDiagram-TSTJHNR4-DM7ixE-v.js +454 -0
  31. package/dist/cytoscape.esm-BTopYfIb.js +30347 -0
  32. package/dist/dagre-VKFMJZFB-blEDoYen.js +522 -0
  33. package/dist/defaultLocale-wHUL1xE2.js +207 -0
  34. package/dist/diagram-FQU43EPY-MEZlmmdi.js +633 -0
  35. package/dist/diagram-G47NLZAW-DZOZvHqp.js +857 -0
  36. package/dist/diagram-NH7WQ7WH-ChpmPbZz.js +213 -0
  37. package/dist/diagram-OA4YK3LP-oy4yvrnL.js +489 -0
  38. package/dist/diagram-WEI45ONY-B3nx1cYt.js +305 -0
  39. package/dist/ebnfDiagram-CCIWWBDH-BASj7BoO.js +139 -0
  40. package/dist/erDiagram-Q63AITRT-lujHq-S9.js +1239 -0
  41. package/dist/flowDiagram-23GEKE2U-BdsAVPgU.js +2349 -0
  42. package/dist/ganttDiagram-NO4QXBWP-DUUP4lsu.js +3733 -0
  43. package/dist/gitGraphDiagram-IHSO6WYX-BdIPAtb0.js +1374 -0
  44. package/dist/graph-CE8jV7cI.js +2043 -0
  45. package/dist/gui/assets/abnfDiagram-VRR7QNED-DE_Lwnyj.js +1 -0
  46. package/dist/gui/assets/arc-0XKFeKL1.js +1 -0
  47. package/dist/gui/assets/architectureDiagram-ZJ3FMSHR-WVMr6CTB.js +36 -0
  48. package/dist/gui/assets/blockDiagram-677ZJIJ3-JmkelTQ6.js +132 -0
  49. package/dist/gui/assets/c4Diagram-LMCZKHZV-BYvSE_vv.js +10 -0
  50. package/dist/gui/assets/channel-BhMtSKKb.js +1 -0
  51. package/dist/gui/assets/chunk-2Q5K7J3B-cgJ3ifz_.js +1 -0
  52. package/dist/gui/assets/chunk-32BRIVSS-DR-AYVVA.js +1 -0
  53. package/dist/gui/assets/chunk-5VM5RSS4-Di4z9gEz.js +15 -0
  54. package/dist/gui/assets/chunk-EX3LRPZG-CtCaJMGG.js +231 -0
  55. package/dist/gui/assets/chunk-JWPE2WC7-EjoKlGne.js +1 -0
  56. package/dist/gui/assets/chunk-MOJQB5TN-ndMzM7-f.js +88 -0
  57. package/dist/gui/assets/chunk-RYQCIY6F-CDdJsSDv.js +1 -0
  58. package/dist/gui/assets/chunk-V7JOEXUC-BptnbB4R.js +206 -0
  59. package/dist/gui/assets/chunk-VR4S4FIN-CF8Dsx8K.js +1 -0
  60. package/dist/gui/assets/chunk-XXDRQBXY-CgGWri-V.js +1 -0
  61. package/dist/gui/assets/classDiagram-OUVF2IWQ-DiPaZ7LY.js +1 -0
  62. package/dist/gui/assets/classDiagram-v2-EOCWNBFH-DiPaZ7LY.js +1 -0
  63. package/dist/gui/assets/cose-bilkent-JH36ORCC-Bm9uE-P8.js +1 -0
  64. package/dist/gui/assets/cynefin-VYW2F7L2-Dd-Apprt.js +178 -0
  65. package/dist/gui/assets/cynefinDiagram-TSTJHNR4-DpGBOFX2.js +62 -0
  66. package/dist/gui/assets/cytoscape.esm-OyMbaexL.js +331 -0
  67. package/dist/gui/assets/dagre-VKFMJZFB-DmKBW-UB.js +4 -0
  68. package/dist/gui/assets/defaultLocale-DX6XiGOO.js +1 -0
  69. package/dist/gui/assets/diagram-FQU43EPY-CYuUGN7Z.js +3 -0
  70. package/dist/gui/assets/diagram-G47NLZAW-BZ-zUUWn.js +24 -0
  71. package/dist/gui/assets/diagram-NH7WQ7WH-D2qb5dA_.js +24 -0
  72. package/dist/gui/assets/diagram-OA4YK3LP-BSy8-VUz.js +30 -0
  73. package/dist/gui/assets/diagram-WEI45ONY-B-vTVzM8.js +41 -0
  74. package/dist/gui/assets/ebnfDiagram-CCIWWBDH-cKb33glS.js +1 -0
  75. package/dist/gui/assets/erDiagram-Q63AITRT-DvWEFI1U.js +85 -0
  76. package/dist/gui/assets/flowDiagram-23GEKE2U-CfvFgLP2.js +156 -0
  77. package/dist/gui/assets/ganttDiagram-NO4QXBWP-BnDujV-k.js +292 -0
  78. package/dist/gui/assets/gitGraphDiagram-IHSO6WYX-Sv91FaB5.js +106 -0
  79. package/dist/gui/assets/graph-DOmOIIwC.js +1 -0
  80. package/dist/gui/assets/index-Bp9JnkhK.css +1 -0
  81. package/dist/gui/assets/index-Do-LzYBw.js +21 -0
  82. package/dist/gui/assets/infoDiagram-FWYZ7A6U-BE3WS_us.js +2 -0
  83. package/dist/gui/assets/init-Gi6I4Gst.js +1 -0
  84. package/dist/gui/assets/ishikawaDiagram-FXEZZL3T-FObQPAd_.js +70 -0
  85. package/dist/gui/assets/journeyDiagram-5HDEW3XC-D3RAFL7x.js +139 -0
  86. package/dist/gui/assets/kanban-definition-HUTT4EX6-Bx1DS2KG.js +89 -0
  87. package/dist/gui/assets/katex-HP8lGamR.js +257 -0
  88. package/dist/gui/assets/layout-D-LzfAck.js +1 -0
  89. package/dist/gui/assets/linear-oevdTPQK.js +1 -0
  90. package/dist/gui/assets/map-DxJ2ADlA.js +1 -0
  91. package/dist/gui/assets/mermaid.core-jn1Xktvs.js +314 -0
  92. package/dist/gui/assets/mindmap-definition-LN4V7U3C-xLT5IJki.js +96 -0
  93. package/dist/gui/assets/ordinal-Cboi1Yqb.js +1 -0
  94. package/dist/gui/assets/pegDiagram-2B236MQR-DToAMrXG.js +1 -0
  95. package/dist/gui/assets/pieDiagram-ENE6RG2P-Cw6tv4YJ.js +39 -0
  96. package/dist/gui/assets/quadrantDiagram-ABIIQ3AL-GW5Knopm.js +7 -0
  97. package/dist/gui/assets/railroadDiagram-RFXS5EU6-CuP1sa-2.js +1 -0
  98. package/dist/gui/assets/requirementDiagram-TGXJPOKE-D8IcCo1X.js +84 -0
  99. package/dist/gui/assets/sankeyDiagram-HTMAVEWB-CfT_C9uh.js +40 -0
  100. package/dist/gui/assets/sequenceDiagram-DBY2YBRQ-BwUwWFYe.js +162 -0
  101. package/dist/gui/assets/sizeCapture-X5ZJPWSS-DyBlcl4H.js +1 -0
  102. package/dist/gui/assets/stateDiagram-2N3HPSRC-yv8DkbvF.js +1 -0
  103. package/dist/gui/assets/stateDiagram-v2-6OUMAXLB-BspjtPpt.js +1 -0
  104. package/dist/gui/assets/swimlanes-5IMT3BWC-BnOmKdmr.js +2 -0
  105. package/dist/gui/assets/swimlanesDiagram-G3AALYLV-BgPC3dJX.js +8 -0
  106. package/dist/gui/assets/timeline-definition-FHXFAJF6-C6_-GVjE.js +120 -0
  107. package/dist/gui/assets/vennDiagram-L72KCM5P-D_N0uLk2.js +34 -0
  108. package/dist/gui/assets/wardleyDiagram-EHGQE667-CnNoxFYY.js +78 -0
  109. package/dist/gui/assets/xychartDiagram-FW5EYKEG-CloORw9z.js +7 -0
  110. package/dist/gui/index.html +13 -0
  111. package/dist/index--GoVvfUP.js +5447 -0
  112. package/dist/index-3-WDiDAh.js +5466 -0
  113. package/dist/index-CHBXZAxg.js +5460 -0
  114. package/dist/index-DeCq8xn7.js +5460 -0
  115. package/dist/infoDiagram-FWYZ7A6U-D9wo93kg.js +32 -0
  116. package/dist/init-DDGa2CQM.js +17 -0
  117. package/dist/ishikawaDiagram-FXEZZL3T-DZh3_kt2.js +968 -0
  118. package/dist/journeyDiagram-5HDEW3XC-C8RWHIn0.js +1256 -0
  119. package/dist/kanban-definition-HUTT4EX6-B7qQtB5a.js +1053 -0
  120. package/dist/katex-WjDlQEfU.js +14500 -0
  121. package/dist/layout-DQAYh_L7.js +2360 -0
  122. package/dist/linear-C_kZRZXS.js +341 -0
  123. package/dist/map-BElV7BMC.js +299 -0
  124. package/dist/mermaid.core-Dy_tFRs7.js +26495 -0
  125. package/dist/mindmap-definition-LN4V7U3C-BzHCd5Ab.js +1181 -0
  126. package/dist/ordinal-C2kkg180.js +77 -0
  127. package/dist/pegDiagram-2B236MQR-B046bQWM.js +127 -0
  128. package/dist/pieDiagram-ENE6RG2P-B5_W2CZy.js +316 -0
  129. package/dist/quadrantDiagram-ABIIQ3AL-Bbpt496h.js +1342 -0
  130. package/dist/railroadDiagram-RFXS5EU6-10XIH3X0.js +93 -0
  131. package/dist/requirementDiagram-TGXJPOKE-Dt1QyccY.js +1205 -0
  132. package/dist/sankeyDiagram-HTMAVEWB-CnqRAq7M.js +1274 -0
  133. package/dist/sequenceDiagram-DBY2YBRQ-DtJLSXoz.js +4515 -0
  134. package/dist/sizeCapture-X5ZJPWSS-DUl5ZEo3.js +63 -0
  135. package/dist/stateDiagram-2N3HPSRC-b-qzcVNj.js +449 -0
  136. package/dist/stateDiagram-v2-6OUMAXLB-KjDlRfc7.js +20 -0
  137. package/dist/swimlanes-5IMT3BWC-CAjGnQLa.js +8553 -0
  138. package/dist/swimlanesDiagram-G3AALYLV-DiOi9bzU.js +16 -0
  139. package/dist/timeline-definition-FHXFAJF6-Bme2FWbh.js +1597 -0
  140. package/dist/vennDiagram-L72KCM5P-BUQgnZDB.js +2516 -0
  141. package/dist/wardleyDiagram-EHGQE667-DHR2Avlu.js +976 -0
  142. package/dist/xychartDiagram-FW5EYKEG-V4K5eBMS.js +2000 -0
  143. package/package.json +73 -0
@@ -0,0 +1,522 @@
1
+ #!/usr/bin/env node
2
+ import { c as clear$2, w as write, a as adjustClustersAndEdges, f as findNonClusterChild, b as clusterDb, s as sortNodesByHierarchy } from "./chunk-RYQCIY6F-DQacsGpB.js";
3
+ import { _ as __name, am as markers_default, an as clear2, ao as clear, ap as clear$1, l as log, c as getConfig2, aq as updateNodeBounds, ar as setNodeElem, ae as insertNode, as as getSubGraphTitleMargins, af as positionNode, ad as insertCluster, at as insertEdge, au as positionEdgeLabel, av as insertEdgeLabel } from "./mermaid.core-Dy_tFRs7.js";
4
+ import { G as Graph } from "./graph-CE8jV7cI.js";
5
+ import { l as layout } from "./layout-DQAYh_L7.js";
6
+ var clamp = /* @__PURE__ */ __name((value, min, max) => Math.max(min, Math.min(max, value)), "clamp");
7
+ var getDefaultSelfLoopSide = /* @__PURE__ */ __name((rankdir = "TB") => {
8
+ switch (rankdir) {
9
+ case "BT":
10
+ return "bottom";
11
+ case "LR":
12
+ return "right";
13
+ case "RL":
14
+ return "left";
15
+ case "TB":
16
+ default:
17
+ return "top";
18
+ }
19
+ }, "getDefaultSelfLoopSide");
20
+ var shouldMergeSelfLoopSegments = /* @__PURE__ */ __name((diagramType) => diagramType === "flowchart" || diagramType === "flowchart-v2" || diagramType === "stateDiagram", "shouldMergeSelfLoopSegments");
21
+ var getSelfLoopSide = /* @__PURE__ */ __name((graph, node, segments, originalNodeId, rankdir) => {
22
+ const layoutHints = [];
23
+ const dummyNodeIds = /* @__PURE__ */ new Set();
24
+ segments.forEach(({ start, end }) => {
25
+ if (start !== originalNodeId) {
26
+ dummyNodeIds.add(start);
27
+ }
28
+ if (end !== originalNodeId) {
29
+ dummyNodeIds.add(end);
30
+ }
31
+ });
32
+ dummyNodeIds.forEach((id) => {
33
+ const dummyNode = graph.node(id);
34
+ if (typeof dummyNode?.x === "number" && typeof dummyNode?.y === "number") {
35
+ layoutHints.push(dummyNode);
36
+ }
37
+ });
38
+ if (layoutHints.length === 0) {
39
+ segments.forEach(({ edge }) => {
40
+ (edge.points ?? []).forEach((point) => {
41
+ if (typeof point?.x === "number" && typeof point?.y === "number") {
42
+ layoutHints.push(point);
43
+ }
44
+ });
45
+ });
46
+ }
47
+ if (layoutHints.length === 0) {
48
+ return getDefaultSelfLoopSide(rankdir);
49
+ }
50
+ const center = layoutHints.reduce(
51
+ (acc, point) => ({
52
+ x: acc.x + point.x / layoutHints.length,
53
+ y: acc.y + point.y / layoutHints.length
54
+ }),
55
+ { x: 0, y: 0 }
56
+ );
57
+ const dx = center.x - node.x;
58
+ const dy = center.y - node.y;
59
+ if (Math.abs(dx) > Math.abs(dy)) {
60
+ return dx > 0 ? "right" : "left";
61
+ }
62
+ if (Math.abs(dy) > 0) {
63
+ return dy > 0 ? "bottom" : "top";
64
+ }
65
+ return getDefaultSelfLoopSide(rankdir);
66
+ }, "getSelfLoopSide");
67
+ var getSelfLoopPoints = /* @__PURE__ */ __name((node, side = "top", yOffset = 0, labelWidth = 0) => {
68
+ const x = node.x;
69
+ const y = node.y - yOffset;
70
+ const halfWidth = node.width / 2;
71
+ const halfHeight = node.height / 2;
72
+ const maxSpan = Math.max(36, Math.min(100, node.width * 0.8));
73
+ const span = clamp(Math.max(labelWidth, node.width * 0.35), 36, maxSpan);
74
+ const depth = clamp(Math.min(node.width, node.height) * 0.45, 24, 48);
75
+ switch (side) {
76
+ case "bottom": {
77
+ const bottom = y + halfHeight;
78
+ return [
79
+ { x: x - span / 2, y: bottom },
80
+ { x: x - span / 2, y: bottom + depth },
81
+ { x: x + span / 2, y: bottom + depth },
82
+ { x: x + span / 2, y: bottom }
83
+ ];
84
+ }
85
+ case "right": {
86
+ const right = x + halfWidth;
87
+ return [
88
+ { x: right, y: y - span / 2 },
89
+ { x: right + depth, y: y - span / 2 },
90
+ { x: right + depth, y: y + span / 2 },
91
+ { x: right, y: y + span / 2 }
92
+ ];
93
+ }
94
+ case "left": {
95
+ const left = x - halfWidth;
96
+ return [
97
+ { x: left, y: y - span / 2 },
98
+ { x: left - depth, y: y - span / 2 },
99
+ { x: left - depth, y: y + span / 2 },
100
+ { x: left, y: y + span / 2 }
101
+ ];
102
+ }
103
+ case "top":
104
+ default: {
105
+ const top = y - halfHeight;
106
+ return [
107
+ { x: x - span / 2, y: top },
108
+ { x: x - span / 2, y: top - depth },
109
+ { x: x + span / 2, y: top - depth },
110
+ { x: x + span / 2, y: top }
111
+ ];
112
+ }
113
+ }
114
+ }, "getSelfLoopPoints");
115
+ var getSelfLoopLabelPosition = /* @__PURE__ */ __name((node, points, side = "top", yOffset = 0, label = {}) => {
116
+ const gap = 4;
117
+ const x = node.x;
118
+ const y = node.y - yOffset;
119
+ const labelWidth = label.width ?? 0;
120
+ const labelHeight = label.height ?? 0;
121
+ switch (side) {
122
+ case "bottom":
123
+ return { x, y: Math.max(...points.map((point) => point.y)) + labelHeight / 2 + gap };
124
+ case "right":
125
+ return { x: Math.max(...points.map((point) => point.x)) + labelWidth / 2 + gap, y };
126
+ case "left":
127
+ return { x: Math.min(...points.map((point) => point.x)) - labelWidth / 2 - gap, y };
128
+ case "top":
129
+ default:
130
+ return { x, y: Math.min(...points.map((point) => point.y)) - labelHeight / 2 - gap };
131
+ }
132
+ }, "getSelfLoopLabelPosition");
133
+ var getEdgesToRender = /* @__PURE__ */ __name((graph, yOffset = 0, { mergeSelfLoops = true } = {}) => {
134
+ const selfLoopEdgeGroups = /* @__PURE__ */ new Map();
135
+ const edgesToRender = [];
136
+ const rankdir = graph.graph()?.rankdir;
137
+ graph.edges().forEach((e) => {
138
+ const edge = graph.edge(e);
139
+ if (mergeSelfLoops && edge.selfLoop) {
140
+ const key = edge.selfLoop.id;
141
+ if (!selfLoopEdgeGroups.has(key)) {
142
+ selfLoopEdgeGroups.set(key, []);
143
+ }
144
+ selfLoopEdgeGroups.get(key).push({ edge, start: e.v, end: e.w });
145
+ } else {
146
+ edgesToRender.push({ edge, start: e.v, end: e.w });
147
+ }
148
+ });
149
+ selfLoopEdgeGroups.forEach((segments) => {
150
+ if (segments.length !== 3) {
151
+ segments.forEach((segment) => edgesToRender.push(segment));
152
+ return;
153
+ }
154
+ segments.sort((a, b) => a.edge.selfLoop.order - b.edge.selfLoop.order);
155
+ const [firstSegment, middleSegment, lastSegment] = segments;
156
+ const originalEdge = firstSegment.edge.originalEdge ?? middleSegment.edge.originalEdge ?? lastSegment.edge.originalEdge ?? middleSegment.edge;
157
+ const node = graph.node(originalEdge.start);
158
+ if (!node) {
159
+ segments.forEach((segment) => edgesToRender.push(segment));
160
+ return;
161
+ }
162
+ const label = {
163
+ width: middleSegment.edge.width,
164
+ height: middleSegment.edge.height
165
+ };
166
+ const side = getSelfLoopSide(graph, node, segments, originalEdge.start, rankdir);
167
+ const points = getSelfLoopPoints(node, side, yOffset, label.width ?? 0);
168
+ const labelPosition = getSelfLoopLabelPosition(node, points, side, yOffset, label);
169
+ const mergedEdge = {
170
+ ...middleSegment.edge,
171
+ ...originalEdge,
172
+ id: originalEdge.id,
173
+ points,
174
+ start: originalEdge.start,
175
+ end: originalEdge.end,
176
+ x: labelPosition.x,
177
+ y: labelPosition.y,
178
+ width: label.width,
179
+ height: label.height,
180
+ labelStyle: middleSegment.edge.labelStyle,
181
+ fromCluster: firstSegment.edge.fromCluster ?? middleSegment.edge.fromCluster ?? lastSegment.edge.fromCluster,
182
+ toCluster: firstSegment.edge.toCluster ?? middleSegment.edge.toCluster ?? lastSegment.edge.toCluster
183
+ };
184
+ delete mergedEdge.selfLoop;
185
+ delete mergedEdge.originalEdge;
186
+ edgesToRender.push({ edge: mergedEdge, start: mergedEdge.start, end: mergedEdge.end });
187
+ });
188
+ return edgesToRender;
189
+ }, "getEdgesToRender");
190
+ var recursiveRender = /* @__PURE__ */ __name(async (_elem, graph, diagramType, id, parentCluster, siteConfig) => {
191
+ log.warn("Graph in recursive render:XAX", write(graph), parentCluster);
192
+ const dir = graph.graph().rankdir;
193
+ log.trace("Dir in recursive render - dir:", dir);
194
+ const elem = _elem.insert("g").attr("class", "root");
195
+ if (!graph.nodes()) {
196
+ log.info("No nodes found for", graph);
197
+ } else {
198
+ log.info("Recursive render XXX", graph.nodes());
199
+ }
200
+ if (graph.edges().length > 0) {
201
+ log.info("Recursive edges", graph.edge(graph.edges()[0]));
202
+ }
203
+ const clusters = elem.insert("g").attr("class", "clusters");
204
+ const edgePaths = elem.insert("g").attr("class", "edgePaths");
205
+ const edgeLabels = elem.insert("g").attr("class", "edgeLabels");
206
+ const nodes = elem.insert("g").attr("class", "nodes");
207
+ const mergeSelfLoops = shouldMergeSelfLoopSegments(diagramType);
208
+ await Promise.all(
209
+ graph.nodes().map(async function(v) {
210
+ const node = graph.node(v);
211
+ if (parentCluster !== void 0) {
212
+ const data = JSON.parse(JSON.stringify(parentCluster.clusterData));
213
+ log.trace(
214
+ "Setting data for parent cluster XXX\n Node.id = ",
215
+ v,
216
+ "\n data=",
217
+ data.height,
218
+ "\nParent cluster",
219
+ parentCluster.height
220
+ );
221
+ graph.setNode(parentCluster.id, data);
222
+ if (!graph.parent(v)) {
223
+ log.trace("Setting parent", v, parentCluster.id);
224
+ graph.setParent(v, parentCluster.id, data);
225
+ }
226
+ }
227
+ log.info("(Insert) Node XXX" + v + ": " + JSON.stringify(graph.node(v)));
228
+ if (node?.clusterNode) {
229
+ log.info("Cluster identified XBX", v, node.width, graph.node(v));
230
+ const { ranksep, nodesep } = graph.graph();
231
+ node.graph.setGraph({
232
+ ...node.graph.graph(),
233
+ ranksep: ranksep + 25,
234
+ nodesep
235
+ });
236
+ const o = await recursiveRender(
237
+ nodes,
238
+ node.graph,
239
+ diagramType,
240
+ id,
241
+ graph.node(v),
242
+ siteConfig
243
+ );
244
+ const newEl = o.elem;
245
+ updateNodeBounds(node, newEl);
246
+ node.diff = o.diff || 0;
247
+ log.info(
248
+ "New compound node after recursive render XAX",
249
+ v,
250
+ "width",
251
+ // node,
252
+ node.width,
253
+ "height",
254
+ node.height
255
+ // node.x,
256
+ // node.y
257
+ );
258
+ setNodeElem(newEl, node);
259
+ } else {
260
+ if (graph.children(v).length > 0) {
261
+ log.trace(
262
+ "Cluster - the non recursive path XBX",
263
+ v,
264
+ node.id,
265
+ node,
266
+ node.width,
267
+ "Graph:",
268
+ graph
269
+ );
270
+ log.trace(findNonClusterChild(node.id, graph));
271
+ clusterDb.set(node.id, { id: findNonClusterChild(node.id, graph), node });
272
+ } else {
273
+ log.trace("Node - the non recursive path XAX", v, nodes, graph.node(v), dir);
274
+ await insertNode(nodes, graph.node(v), { config: siteConfig, dir });
275
+ }
276
+ }
277
+ })
278
+ );
279
+ const processEdges = /* @__PURE__ */ __name(async () => {
280
+ const edgePromises = graph.edges().map(async function(e) {
281
+ const edge = graph.edge(e.v, e.w, e.name);
282
+ log.info("Edge " + e.v + " -> " + e.w + ": " + JSON.stringify(e));
283
+ log.info("Edge " + e.v + " -> " + e.w + ": ", e, " ", JSON.stringify(graph.edge(e)));
284
+ log.info(
285
+ "Fix",
286
+ clusterDb,
287
+ "ids:",
288
+ e.v,
289
+ e.w,
290
+ "Translating: ",
291
+ clusterDb.get(e.v),
292
+ clusterDb.get(e.w)
293
+ );
294
+ if (mergeSelfLoops && edge.selfLoop) {
295
+ if (edge.selfLoop.order !== 1) {
296
+ return;
297
+ }
298
+ const segmentId = edge.id;
299
+ edge.id = edge.selfLoop.id;
300
+ await insertEdgeLabel(edgeLabels, edge);
301
+ edge.id = segmentId;
302
+ return;
303
+ }
304
+ await insertEdgeLabel(edgeLabels, edge);
305
+ });
306
+ await Promise.all(edgePromises);
307
+ }, "processEdges");
308
+ await processEdges();
309
+ log.info("Graph before layout:", JSON.stringify(write(graph)));
310
+ log.info("############################################# XXX");
311
+ log.info("### Layout ### XXX");
312
+ log.info("############################################# XXX");
313
+ layout(graph);
314
+ log.info("Graph after layout:", JSON.stringify(write(graph)));
315
+ let diff = 0;
316
+ let { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);
317
+ await Promise.all(
318
+ sortNodesByHierarchy(graph).map(async function(v) {
319
+ const node = graph.node(v);
320
+ log.info(
321
+ "Position XBX => " + v + ": (" + node.x,
322
+ "," + node.y,
323
+ ") width: ",
324
+ node.width,
325
+ " height: ",
326
+ node.height
327
+ );
328
+ if (node?.clusterNode) {
329
+ node.y += subGraphTitleTotalMargin;
330
+ log.info(
331
+ "A tainted cluster node XBX1",
332
+ v,
333
+ node.id,
334
+ node.width,
335
+ node.height,
336
+ node.x,
337
+ node.y,
338
+ graph.parent(v)
339
+ );
340
+ clusterDb.get(node.id).node = node;
341
+ positionNode(node);
342
+ } else {
343
+ if (graph.children(v).length > 0) {
344
+ log.info(
345
+ "A pure cluster node XBX1",
346
+ v,
347
+ node.id,
348
+ node.x,
349
+ node.y,
350
+ node.width,
351
+ node.height,
352
+ graph.parent(v)
353
+ );
354
+ node.height += subGraphTitleTotalMargin;
355
+ graph.node(node.parentId);
356
+ const halfPadding = node?.padding / 2 || 0;
357
+ const labelHeight = node?.labelBBox?.height || 0;
358
+ const offsetY = labelHeight - halfPadding || 0;
359
+ log.debug("OffsetY", offsetY, "labelHeight", labelHeight, "halfPadding", halfPadding);
360
+ await insertCluster(clusters, node);
361
+ clusterDb.get(node.id).node = node;
362
+ } else {
363
+ const parent = graph.node(node.parentId);
364
+ node.y += subGraphTitleTotalMargin / 2;
365
+ log.info(
366
+ "A regular node XBX1 - using the padding",
367
+ node.id,
368
+ "parent",
369
+ node.parentId,
370
+ node.width,
371
+ node.height,
372
+ node.x,
373
+ node.y,
374
+ "offsetY",
375
+ node.offsetY,
376
+ "parent",
377
+ parent,
378
+ parent?.offsetY,
379
+ node
380
+ );
381
+ positionNode(node);
382
+ }
383
+ }
384
+ })
385
+ );
386
+ const edgeOffsetY = subGraphTitleTotalMargin / 2;
387
+ const edgesToRender = getEdgesToRender(graph, edgeOffsetY, { mergeSelfLoops });
388
+ edgesToRender.forEach(function({ edge, start, end }) {
389
+ log.info("Edge " + start + " -> " + end + ": " + JSON.stringify(edge), edge);
390
+ edge.points.forEach((point) => point.y += edgeOffsetY);
391
+ const startNode = graph.node(start);
392
+ const endNode = graph.node(end);
393
+ const paths = insertEdge(edgePaths, edge, clusterDb, diagramType, startNode, endNode, id);
394
+ positionEdgeLabel(edge, paths);
395
+ });
396
+ graph.nodes().forEach(function(v) {
397
+ const n = graph.node(v);
398
+ log.info(v, n.type, n.diff);
399
+ if (n.isGroup) {
400
+ diff = n.diff;
401
+ }
402
+ });
403
+ log.warn("Returning from recursive render XAX", elem, diff);
404
+ return { elem, diff };
405
+ }, "recursiveRender");
406
+ var render = /* @__PURE__ */ __name(async (data4Layout, svg) => {
407
+ const graph = new Graph({
408
+ multigraph: true,
409
+ compound: true
410
+ }).setGraph({
411
+ rankdir: data4Layout.direction,
412
+ nodesep: data4Layout.config?.nodeSpacing || data4Layout.config?.flowchart?.nodeSpacing || data4Layout.nodeSpacing,
413
+ ranksep: data4Layout.config?.rankSpacing || data4Layout.config?.flowchart?.rankSpacing || data4Layout.rankSpacing,
414
+ marginx: 8,
415
+ marginy: 8
416
+ }).setDefaultEdgeLabel(function() {
417
+ return {};
418
+ });
419
+ const element = svg.select("g");
420
+ markers_default(element, data4Layout.markers, data4Layout.type, data4Layout.diagramId);
421
+ clear2();
422
+ clear();
423
+ clear$1();
424
+ clear$2();
425
+ data4Layout.nodes.forEach((node) => {
426
+ graph.setNode(node.id, { ...node });
427
+ if (node.parentId) {
428
+ graph.setParent(node.id, node.parentId);
429
+ }
430
+ });
431
+ log.debug("Edges:", data4Layout.edges);
432
+ data4Layout.edges.forEach((edge) => {
433
+ if (edge.start === edge.end) {
434
+ const nodeId = edge.start;
435
+ const specialId1 = nodeId + "---" + nodeId + "---1";
436
+ const specialId2 = nodeId + "---" + nodeId + "---2";
437
+ const node = graph.node(nodeId);
438
+ graph.setNode(specialId1, {
439
+ domId: specialId1,
440
+ id: specialId1,
441
+ parentId: node.parentId,
442
+ labelStyle: "",
443
+ label: "",
444
+ padding: 0,
445
+ shape: "labelRect",
446
+ // shape: 'rect',
447
+ style: "",
448
+ width: 10,
449
+ height: 10
450
+ });
451
+ graph.setParent(specialId1, node.parentId);
452
+ graph.setNode(specialId2, {
453
+ domId: specialId2,
454
+ id: specialId2,
455
+ parentId: node.parentId,
456
+ labelStyle: "",
457
+ padding: 0,
458
+ // shape: 'rect',
459
+ shape: "labelRect",
460
+ label: "",
461
+ style: "",
462
+ width: 10,
463
+ height: 10
464
+ });
465
+ graph.setParent(specialId2, node.parentId);
466
+ const originalEdge = structuredClone(edge);
467
+ const edge1 = structuredClone(edge);
468
+ const edgeMid = structuredClone(edge);
469
+ const edge2 = structuredClone(edge);
470
+ edge1.originalEdge = originalEdge;
471
+ edge1.selfLoop = { id: originalEdge.id, order: 0 };
472
+ edgeMid.originalEdge = originalEdge;
473
+ edgeMid.selfLoop = { id: originalEdge.id, order: 1 };
474
+ edge2.originalEdge = originalEdge;
475
+ edge2.selfLoop = { id: originalEdge.id, order: 2 };
476
+ edge1.label = "";
477
+ edge1.arrowTypeEnd = "none";
478
+ edge1.endLabelLeft = "";
479
+ edge1.endLabelRight = "";
480
+ edge1.startLabelLeft = "";
481
+ edge1.id = nodeId + "-cyclic-special-1";
482
+ edgeMid.startLabelRight = "";
483
+ edgeMid.startLabelLeft = "";
484
+ edgeMid.endLabelLeft = "";
485
+ edgeMid.endLabelRight = "";
486
+ edgeMid.arrowTypeStart = "none";
487
+ edgeMid.arrowTypeEnd = "none";
488
+ edgeMid.id = nodeId + "-cyclic-special-mid";
489
+ edge2.label = "";
490
+ edge2.startLabelRight = "";
491
+ edge2.startLabelLeft = "";
492
+ edge2.arrowTypeStart = "none";
493
+ if (node.isGroup) {
494
+ edge1.fromCluster = nodeId;
495
+ edge2.toCluster = nodeId;
496
+ }
497
+ edge2.id = nodeId + "-cyclic-special-2";
498
+ edge2.arrowTypeStart = "none";
499
+ graph.setEdge(nodeId, specialId1, edge1, nodeId + "-cyclic-special-0");
500
+ graph.setEdge(specialId1, specialId2, edgeMid, nodeId + "-cyclic-special-1");
501
+ graph.setEdge(specialId2, nodeId, edge2, nodeId + "-cyclic-special-2");
502
+ } else {
503
+ graph.setEdge(edge.start, edge.end, { ...edge }, edge.id);
504
+ }
505
+ });
506
+ log.warn("Graph at first:", JSON.stringify(write(graph)));
507
+ adjustClustersAndEdges(graph);
508
+ log.warn("Graph after XAX:", JSON.stringify(write(graph)));
509
+ const siteConfig = getConfig2();
510
+ await recursiveRender(
511
+ element,
512
+ graph,
513
+ data4Layout.type,
514
+ data4Layout.diagramId,
515
+ void 0,
516
+ siteConfig
517
+ );
518
+ }, "render");
519
+ export {
520
+ getEdgesToRender,
521
+ render
522
+ };