From 323e1b35c58bca80deb824bc8b136705593a5257 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Mon, 4 Nov 2024 10:41:52 +0100 Subject: [PATCH] fixed evaluateAbsolutePosition for nested nodes --- .changeset/wet-hounds-reply.md | 7 +++++++ packages/system/src/utils/general.ts | 15 +++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 .changeset/wet-hounds-reply.md diff --git a/.changeset/wet-hounds-reply.md b/.changeset/wet-hounds-reply.md new file mode 100644 index 00000000..02d4e669 --- /dev/null +++ b/.changeset/wet-hounds-reply.md @@ -0,0 +1,7 @@ +--- +'@xyflow/system': patch +'@xyflow/react': patch +'@xyflow/svelte': patch +--- + +Fix node intersections in nested flow. diff --git a/packages/system/src/utils/general.ts b/packages/system/src/utils/general.ts index 533c83ee..088209a3 100644 --- a/packages/system/src/utils/general.ts +++ b/packages/system/src/utils/general.ts @@ -252,18 +252,13 @@ export function evaluateAbsolutePosition( nodeLookup: NodeLookup, nodeOrigin: NodeOrigin ): XYPosition { - let nextParentId: string | undefined = parentId; const positionAbsolute = { ...position }; - while (nextParentId) { - const parent = nodeLookup.get(nextParentId); - nextParentId = parent?.parentId; - - if (parent) { - const origin = parent.origin || nodeOrigin; - positionAbsolute.x += parent.internals.positionAbsolute.x - (dimensions.width ?? 0) * origin[0]; - positionAbsolute.y += parent.internals.positionAbsolute.y - (dimensions.height ?? 0) * origin[1]; - } + const parent = nodeLookup.get(parentId); + if (parent) { + const origin = parent.origin || nodeOrigin; + positionAbsolute.x += parent.internals.positionAbsolute.x - (dimensions.width ?? 0) * origin[0]; + positionAbsolute.y += parent.internals.positionAbsolute.y - (dimensions.height ?? 0) * origin[1]; } return positionAbsolute;