add utility to compute container coords from bound text

This commit is contained in:
Aakansha Doshi 2023-03-06 15:40:14 +05:30
parent 83780b91d2
commit 752c7cf66e

View File

@ -231,8 +231,9 @@ export const handleBindTextResize = (
container,
nextHeight,
);
const { y } = computeContainerCoords(textElement, container.type);
mutateElement(container, {
y: textElement.y - BOUND_TEXT_PADDING,
y,
height: containerHeight,
});
}
@ -636,6 +637,27 @@ export const computeBoundTextElementCoords = (
};
};
export const computeContainerCoords = (
boundTextElement: ExcalidrawTextElement,
containerType: string,
) => {
let offsetX = BOUND_TEXT_PADDING;
let offsetY = BOUND_TEXT_PADDING;
if (containerType === "ellipse") {
offsetX += (boundTextElement.width / 2) * (1 - Math.sqrt(2) / 2);
offsetY += (boundTextElement.height / 2) * (1 - Math.sqrt(2) / 2);
}
if (containerType === "diamond") {
offsetX += boundTextElement.width / 4;
offsetY += boundTextElement.height / 4;
}
return {
x: boundTextElement.x - offsetX,
y: boundTextElement.y - offsetY,
};
};
export const getTextElementAngle = (textElement: ExcalidrawTextElement) => {
const container = getContainerElement(textElement);
if (!container || isArrowElement(container)) {