diff --git a/packages/excalidraw/element/mutateElement.ts b/packages/excalidraw/element/mutateElement.ts index de0adeeff4..1d7e9d46ed 100644 --- a/packages/excalidraw/element/mutateElement.ts +++ b/packages/excalidraw/element/mutateElement.ts @@ -107,8 +107,6 @@ export const mutateElement = >( export const newElementWith = ( element: TElement, updates: ElementUpdate, - /** pass `true` to always regenerate */ - force = false, ): TElement => { let didChange = false; for (const key in updates) { @@ -125,7 +123,7 @@ export const newElementWith = ( } } - if (!didChange && !force) { + if (!didChange) { return element; } diff --git a/packages/excalidraw/scene/Fonts.ts b/packages/excalidraw/scene/Fonts.ts index ff241a40f1..cc50881427 100644 --- a/packages/excalidraw/scene/Fonts.ts +++ b/packages/excalidraw/scene/Fonts.ts @@ -1,5 +1,5 @@ import { isTextElement } from "../element"; -import { newElementWith } from "../element/mutateElement"; +import { getContainerElement } from "../element/textElement"; import type { ExcalidrawElement, ExcalidrawTextElement, @@ -46,14 +46,18 @@ export class Fonts { let didUpdate = false; - this.scene.mapElements((element) => { + const elementsMap = this.scene.getNonDeletedElementsMap(); + + for (const element of this.scene.getNonDeletedElements()) { if (isTextElement(element)) { didUpdate = true; ShapeCache.delete(element); - return newElementWith(element, {}, true); + const container = getContainerElement(element, elementsMap); + if (container) { + ShapeCache.delete(container); + } } - return element; - }); + } if (didUpdate) { this.scene.triggerUpdate();