Browse Source

cache nonDeleted elements (#1626)

David Luzar 5 years ago
parent
commit
ce6f2ff88c
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/scene/globalScene.ts

+ 3 - 1
src/scene/globalScene.ts

@@ -13,6 +13,7 @@ export interface SceneStateCallbackRemover {
 }
 }
 
 
 class GlobalScene {
 class GlobalScene {
+  private nonDeletedElements: readonly NonDeletedExcalidrawElement[] = [];
   private callbacks: Set<SceneStateCallback> = new Set();
   private callbacks: Set<SceneStateCallback> = new Set();
 
 
   constructor(private _elements: readonly ExcalidrawElement[] = []) {}
   constructor(private _elements: readonly ExcalidrawElement[] = []) {}
@@ -22,11 +23,12 @@ class GlobalScene {
   }
   }
 
 
   getElements(): readonly NonDeletedExcalidrawElement[] {
   getElements(): readonly NonDeletedExcalidrawElement[] {
-    return getNonDeletedElements(this._elements);
+    return this.nonDeletedElements;
   }
   }
 
 
   replaceAllElements(nextElements: readonly ExcalidrawElement[]) {
   replaceAllElements(nextElements: readonly ExcalidrawElement[]) {
     this._elements = nextElements;
     this._elements = nextElements;
+    this.nonDeletedElements = getNonDeletedElements(this._elements);
     this.informMutation();
     this.informMutation();
   }
   }