fix: restore text dimensions (#5432)

* fix: restore text dimensions

* fix tests

* update readme & changelog

* reduce API surface area by always refreshing dimensions for full `restore()`
This commit is contained in:
David Luzar 2022-10-28 23:31:56 +02:00 committed by GitHub
parent 36bf17cf59
commit c8f6e3faa8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 51 additions and 21 deletions

View file

@ -252,6 +252,23 @@ const getAdjustedDimensions = (
};
};
export const refreshTextDimensions = (
textElement: ExcalidrawTextElement,
text = textElement.text,
) => {
const container = getContainerElement(textElement);
if (container) {
// text = wrapText(text, getFontString(textElement), container.width);
text = wrapText(
text,
getFontString(textElement),
getMaxContainerWidth(container),
);
}
const dimensions = getAdjustedDimensions(textElement, text);
return { text, ...dimensions };
};
export const getMaxContainerWidth = (container: ExcalidrawElement) => {
return getContainerDims(container).width - BOUND_TEXT_PADDING * 2;
};
@ -272,20 +289,10 @@ export const updateTextElement = (
originalText: string;
},
): ExcalidrawTextElement => {
const container = getContainerElement(textElement);
if (container) {
text = wrapText(
originalText,
getFontString(textElement),
getMaxContainerWidth(container),
);
}
const dimensions = getAdjustedDimensions(textElement, text);
return newElementWith(textElement, {
text,
originalText,
isDeleted: isDeleted ?? textElement.isDeleted,
...dimensions,
...refreshTextDimensions(textElement, originalText),
});
};