From 8f12fde9eb84bf061ffc674be170d171fdb42bc7 Mon Sep 17 00:00:00 2001 From: peterkogo Date: Wed, 26 Jun 2024 17:23:57 +0200 Subject: [PATCH] Fixed NodeResizer for non-default node origins --- packages/system/src/xyresizer/XYResizer.ts | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/system/src/xyresizer/XYResizer.ts b/packages/system/src/xyresizer/XYResizer.ts index f40c4bf1..c9dae4aa 100644 --- a/packages/system/src/xyresizer/XYResizer.ts +++ b/packages/system/src/xyresizer/XYResizer.ts @@ -216,19 +216,6 @@ export function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }: X prevValues.x = change.x; prevValues.y = change.y; - // Fix expandParent when resizing from top/left - if (parentNode && node.expandParent) { - if (change.x && change.x < 0) { - prevValues.x = 0; - startValues.x = startValues.x - change.x; - } - - if (change.y && change.y < 0) { - prevValues.y = 0; - startValues.y = startValues.y - change.y; - } - } - // when top/left changes, correct the relative positions of child nodes // so that they stay in the same position if (childNodes.length > 0) { @@ -252,6 +239,21 @@ export function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }: X prevValues.height = change.height; } + // Fix expandParent when resizing from top/left + if (parentNode && node.expandParent) { + const xLimit = nodeOrigin[0] * (change.width ?? 0); + if (change.x && change.x < xLimit) { + prevValues.x = xLimit; + startValues.x = startValues.x - (change.x - xLimit); + } + + const yLimit = nodeOrigin[1] * (change.height ?? 0); + if (change.y && change.y < yLimit) { + prevValues.y = yLimit; + startValues.y = startValues.y - (change.y - yLimit); + } + } + const direction = getResizeDirection({ width: prevValues.width, prevWidth,