fix: bound text rotation across alignments (#9914)

Co-authored-by: A-Mundanilkunathil <aaronchackom2002@gmail.com>
This commit is contained in:
Christopher Tangonan
2025-08-29 03:31:23 -07:00
committed by GitHub
parent 3085f4af81
commit ae89608985
6 changed files with 220 additions and 13 deletions
+19 -3
View File
@@ -35,6 +35,7 @@ import {
getContainerElement,
handleBindTextResize,
getBoundTextMaxWidth,
computeBoundTextPosition,
} from "./textElement";
import {
getMinTextElementWidth,
@@ -225,7 +226,16 @@ const rotateSingleElement = (
scene.getElement<ExcalidrawTextElementWithContainer>(boundTextElementId);
if (textElement && !isArrowElement(element)) {
scene.mutateElement(textElement, { angle });
const { x, y } = computeBoundTextPosition(
element,
textElement,
scene.getNonDeletedElementsMap(),
);
scene.mutateElement(textElement, {
angle,
x,
y,
});
}
}
};
@@ -416,9 +426,15 @@ const rotateMultipleElements = (
const boundText = getBoundTextElement(element, elementsMap);
if (boundText && !isArrowElement(element)) {
const { x, y } = computeBoundTextPosition(
element,
boundText,
elementsMap,
);
scene.mutateElement(boundText, {
x: boundText.x + (rotatedCX - cx),
y: boundText.y + (rotatedCY - cy),
x,
y,
angle: normalizeRadians((centerAngle + origAngle) as Radians),
});
}