From 69aba71f79c06bc8637d1b0e81a585520ca93b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20Cervera?= Date: Fri, 2 Jul 2021 07:38:01 -0500 Subject: [PATCH] Cleanup on viewer destroy and register on Viewer() Other changes: - ESLint comment about undeclared variable Map removed, since Map is now registered as a global in .eslintrc.* // eslint-disable-next-line no-undef - Mark as private the property _viewers of OpenSeadragon --- src/openseadragon.js | 6 ++---- src/viewer.js | 5 +++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index e9ca02fb..5b0accb0 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -749,9 +749,7 @@ /* eslint-disable no-redeclare */ function OpenSeadragon( options ){ - var viewer = new OpenSeadragon.Viewer( options ); - OpenSeadragon._viewers.set(viewer.element, viewer); - return viewer; + return new OpenSeadragon.Viewer( options ); } (function( $ ){ @@ -1409,10 +1407,10 @@ function OpenSeadragon( options ){ * Keep track of which {@link Viewer}s have been created. * - Key: {@link Element} to which a Viewer is attached. * - Value: {@link Viewer} of the element defined by the key. + * @private * @static * @type {Object} */ - // eslint-disable-next-line no-undef _viewers: new Map(), /** diff --git a/src/viewer.js b/src/viewer.js index f86bd0c9..ad0668ed 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -481,6 +481,8 @@ $.Viewer = function( options ) { this.drawer.setImageSmoothingEnabled(this.imageSmoothingEnabled); } + // Register the viewer + $._viewers.set(this.element, this); }; $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, /** @lends OpenSeadragon.Viewer.prototype */{ @@ -824,6 +826,9 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, this.canvas = null; this.container = null; + // Unregister the viewer + $._viewers.delete(this.element); + // clear our reference to the main element - they will need to pass it in again, creating a new viewer this.element = null; },