Browse Source

fix: stop updating text versions on init (#8191)

pull/8198/head
David Luzar 1 year ago committed by GitHub
parent
commit
1d5b41dabb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      packages/excalidraw/element/mutateElement.ts
  2. 14
      packages/excalidraw/scene/Fonts.ts

4
packages/excalidraw/element/mutateElement.ts

@ -107,8 +107,6 @@ export const mutateElement = <TElement extends Mutable<ExcalidrawElement>>( @@ -107,8 +107,6 @@ export const mutateElement = <TElement extends Mutable<ExcalidrawElement>>(
export const newElementWith = <TElement extends ExcalidrawElement>(
element: TElement,
updates: ElementUpdate<TElement>,
/** pass `true` to always regenerate */
force = false,
): TElement => {
let didChange = false;
for (const key in updates) {
@ -125,7 +123,7 @@ export const newElementWith = <TElement extends ExcalidrawElement>( @@ -125,7 +123,7 @@ export const newElementWith = <TElement extends ExcalidrawElement>(
}
}
if (!didChange && !force) {
if (!didChange) {
return element;
}

14
packages/excalidraw/scene/Fonts.ts

@ -1,5 +1,5 @@ @@ -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 { @@ -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();

Loading…
Cancel
Save