mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-17 22:39:56 +02:00
35 lines
900 B
TypeScript
35 lines
900 B
TypeScript
import type { LayoutData } from '../../types.ts';
|
|
import type { D3Selection } from '../../../types.ts';
|
|
import { insertCluster } from '../../rendering-elements/clusters.js';
|
|
import { insertEdge } from '../../rendering-elements/edges.js';
|
|
import { positionNode } from '../../rendering-elements/nodes.js';
|
|
|
|
export async function adjustLayout(
|
|
data4Layout: LayoutData,
|
|
groups: {
|
|
edgePaths: D3Selection<SVGGElement>;
|
|
rootGroups: D3Selection<SVGGElement>;
|
|
[key: string]: D3Selection<SVGGElement>;
|
|
}
|
|
): Promise<void> {
|
|
for (const node of data4Layout.nodes) {
|
|
if (node.isGroup) {
|
|
await insertCluster(groups.clusters, node);
|
|
} else {
|
|
positionNode(node);
|
|
}
|
|
}
|
|
|
|
for (const edge of data4Layout.edges) {
|
|
insertEdge(
|
|
groups.edgePaths,
|
|
edge,
|
|
{},
|
|
data4Layout.type,
|
|
edge.start,
|
|
edge.end,
|
|
data4Layout.diagramId
|
|
);
|
|
}
|
|
}
|