feat(noderenderer): render child nodes

This commit is contained in:
Christopher Möller
2021-10-20 16:57:44 +02:00
parent a0b8aa6fcb
commit 767fbd4377
8 changed files with 180 additions and 69 deletions
+15 -1
View File
@@ -61,7 +61,7 @@ export const getMarkerId = (marker: EdgeMarkerType | undefined): string => {
.join('&');
};
const connectionExists = (edge: Edge, elements: Elements) => {
const connectionExists = (edge: Edge, elements: Edge[]) => {
return elements.some(
(el) =>
isEdge(el) &&
@@ -294,6 +294,10 @@ function applyChanges(changes: NodeChange[] | EdgeChange[], elements: any[]): an
const initElements: any[] = [];
return elements.reduce((res: any[], item: any) => {
if (item.childNodes) {
item.childNodes = applyChanges(changes, item.childNodes);
}
const currentChange = changes.find((c) => c.id === item.id);
if (currentChange) {
@@ -338,3 +342,13 @@ export function applyNodeChanges(changes: NodeChange[], nodes: Node[]): Node[] {
export function applyEdgeChanges(changes: EdgeChange[], edges: Edge[]): Edge[] {
return applyChanges(changes, edges) as Edge[];
}
export function flattenNodes(nodes: Node[] | undefined): Node[] {
if (!nodes) {
return [];
}
return nodes.reduce<Node[]>((result, node) => {
return result.concat([node, ...flattenNodes(node.childNodes)]);
}, []);
}