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, container,
nextHeight, nextHeight,
); );
const { y } = computeContainerCoords(textElement, container.type);
mutateElement(container, { mutateElement(container, {
y: textElement.y - BOUND_TEXT_PADDING, y,
height: containerHeight, 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) => { export const getTextElementAngle = (textElement: ExcalidrawTextElement) => {
const container = getContainerElement(textElement); const container = getContainerElement(textElement);
if (!container || isArrowElement(container)) { if (!container || isArrowElement(container)) {