From 1d5b41dabb9f7ec15aa07360f8cf727bc27d5cf1 Mon Sep 17 00:00:00 2001 From: David Luzar <5153846+dwelle@users.noreply.github.com> Date: Mon, 1 Jul 2024 14:04:58 +0200 Subject: [PATCH] fix: stop updating text versions on init (#8191) --- packages/excalidraw/element/mutateElement.ts | 4 +--- packages/excalidraw/scene/Fonts.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) 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();