From f4d21c26f5d00dc3febdb3307cbe1f66eefdbe2e Mon Sep 17 00:00:00 2001 From: Alex Kim <45559664+alex-kim-dev@users.noreply.github.com> Date: Fri, 21 Apr 2023 16:27:25 +0500 Subject: [PATCH] fix: incorrect scaling due to ignoring bound text when finding selection bounds --- src/element/resizeElements.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/element/resizeElements.ts b/src/element/resizeElements.ts index 478a22d561..4a9f01095c 100644 --- a/src/element/resizeElements.ts +++ b/src/element/resizeElements.ts @@ -632,8 +632,17 @@ export const resizeMultipleElements = ( [], ); + // getCommonBoundingBox() uses getBoundTextElement() which returns null for + // original elements from pointerDownState, so we have to find and add these + // bound text elements manually + const boundTextElements = targetElements + .map(({ orig }) => getBoundTextElementId(orig)) + .filter((id): id is string => typeof id === "string") + .map((id) => pointerDownState.originalElements.get(id) ?? null) + .filter(isBoundToContainer); + const { minX, minY, maxX, maxY, midX, midY } = getCommonBoundingBox( - targetElements.map(({ orig }) => orig), + targetElements.map(({ orig }) => orig).concat(boundTextElements), ); const direction = transformHandleType;