Browse Source

fix scrollToCenter when no elements supplied (#1222)

* fix scrollToCenter when no elements supplied

* make getCommonBounds return default values on empty elements
David Luzar 5 years ago
parent
commit
4dd947b261
2 changed files with 11 additions and 0 deletions
  1. 4 0
      src/element/bounds.ts
  2. 7 0
      src/scene/scroll.ts

+ 4 - 0
src/element/bounds.ts

@@ -187,6 +187,10 @@ export function getArrowPoints(
 }
 
 export function getCommonBounds(elements: readonly ExcalidrawElement[]) {
+  if (!elements.length) {
+    return [0, 0, 0, 0];
+  }
+
   let minX = Infinity;
   let maxX = -Infinity;
   let minY = Infinity;

+ 7 - 0
src/scene/scroll.ts

@@ -9,6 +9,13 @@ export function normalizeScroll(pos: number) {
 export function calculateScrollCenter(
   elements: readonly ExcalidrawElement[],
 ): { scrollX: FlooredNumber; scrollY: FlooredNumber } {
+  if (!elements.length) {
+    return {
+      scrollX: normalizeScroll(0),
+      scrollY: normalizeScroll(0),
+    };
+  }
+
   const [x1, y1, x2, y2] = getCommonBounds(elements);
 
   const centerX = (x1 + x2) / 2;