From 0e824ae5a7b47ef465a68532b2784709d63f8434 Mon Sep 17 00:00:00 2001
From: Jack Reed <phillipjreed@gmail.com>
Date: Thu, 30 Apr 2020 15:17:20 -0600
Subject: [PATCH] Setup the OpenSeadragonViewer to only zoomToBounds when
 canvasIds change or there is no viewer information from state

---
 src/components/OpenSeadragonViewer.js | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/components/OpenSeadragonViewer.js b/src/components/OpenSeadragonViewer.js
index eb1050a1a..0d7037322 100644
--- a/src/components/OpenSeadragonViewer.js
+++ b/src/components/OpenSeadragonViewer.js
@@ -84,7 +84,7 @@ export class OpenSeadragonViewer extends Component {
       this.viewer.viewport.panTo(viewer, true);
       this.viewer.viewport.zoomTo(viewer.zoom, viewer, true);
     }
-    this.addAllImageSources();
+    this.addAllImageSources(!(viewer));
   }
 
   /**
@@ -128,7 +128,8 @@ export class OpenSeadragonViewer extends Component {
       || !this.nonTiledImagedMatch(prevProps.nonTiledImages)
     ) {
       this.viewer.close();
-      this.addAllImageSources();
+      const canvasesChanged = !(isEqual(canvasWorld.canvasIds, prevProps.canvasWorld.canvasIds));
+      this.addAllImageSources((canvasesChanged || !viewer));
     } else if (!isEqual(canvasWorld.layers, prevProps.canvasWorld.layers)) {
       this.refreshTileProperties();
     } else if (viewer && !this.osdUpdating) {
@@ -203,14 +204,14 @@ export class OpenSeadragonViewer extends Component {
   }
 
   /** */
-  addAllImageSources() {
+  addAllImageSources(zoomAfterAdd = true) {
     const { nonTiledImages, infoResponses } = this.props;
     Promise.all(
       infoResponses.map(infoResponse => this.addTileSource(infoResponse)),
       nonTiledImages.map(image => this.addNonTiledImage(image)),
     ).then(() => {
       if (infoResponses[0] || nonTiledImages[0]) {
-        this.zoomToWorld();
+        if (zoomAfterAdd) this.zoomToWorld();
         this.refreshTileProperties();
       }
     });
-- 
GitLab