fix: Error when a zoomable element is removed during zoom initialization (#2624)

- Closes: #2410
This commit is contained in:
Dermot Duffy
2026-07-26 20:54:07 -07:00
committed by GitHub
parent ad89aa9538
commit 231e3087b7
4 changed files with 12 additions and 7 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@cycjimmy/jsmpeg-player": "^6.0.5", "@cycjimmy/jsmpeg-player": "^6.0.5",
"@dermotduffy/panzoom": "^4.5.1", "@dermotduffy/panzoom": "^4.6.2",
"@egjs/hammerjs": "^2.0.17", "@egjs/hammerjs": "^2.0.17",
"@graphiteds/core": "^1.9.21", "@graphiteds/core": "^1.9.21",
"@lit-labs/scoped-registry-mixin": "^1.0.3", "@lit-labs/scoped-registry-mixin": "^1.0.3",
+3 -1
View File
@@ -18,7 +18,7 @@ import {
export class ZoomController { export class ZoomController {
private _element: HTMLElement; private _element: HTMLElement;
private _panzoom?: PanzoomObject; private _panzoom: PanzoomObject | null = null;
// Is the controller zoomed in at all? // Is the controller zoomed in at all?
private _zoomed = false; private _zoomed = false;
@@ -184,6 +184,8 @@ export class ZoomController {
this._resizeObserver.disconnect(); this._resizeObserver.disconnect();
this._element.removeEventListener('panzoomchange', this._debouncedChangeHandler); this._element.removeEventListener('panzoomchange', this._debouncedChangeHandler);
this._panzoom = null;
} }
public setDefaultSettings(config: PartialZoomSettings | null): void { public setDefaultSettings(config: PartialZoomSettings | null): void {
@@ -655,6 +655,9 @@ describe('ZoomController', () => {
controller.activate(); controller.activate();
expect(controller.isActivated()).toBe(true); expect(controller.isActivated()).toBe(true);
controller.deactivate();
expect(controller.isActivated()).toBe(false);
}); });
it('should not zoom or pan when zoom is disabled', () => { it('should not zoom or pan when zoom is disabled', () => {
+5 -5
View File
@@ -209,10 +209,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@dermotduffy/panzoom@npm:^4.5.1": "@dermotduffy/panzoom@npm:^4.6.2":
version: 4.5.1 version: 4.6.2
resolution: "@dermotduffy/panzoom@npm:4.5.1" resolution: "@dermotduffy/panzoom@npm:4.6.2"
checksum: 10c0/566f62a81714f9b836b6c0138cdc9913577c3854fe7ce6b609e26734c6692a3db5c9282945930bb6e83c0a70befa269203694f9aeb588e8831842a698c7b51cf checksum: 10c0/a9c105a2be9dfd1f20e87dc091263579c0f1f4ce6ea0dfe045aa1c5d8c2aea9417783b3f994276e4a840b4bb78f1a048953d4ce7e056ad4d45ed31fae8158b5e
languageName: node languageName: node
linkType: hard linkType: hard
@@ -2324,7 +2324,7 @@ __metadata:
resolution: "advanced-camera-card@workspace:." resolution: "advanced-camera-card@workspace:."
dependencies: dependencies:
"@cycjimmy/jsmpeg-player": "npm:^6.0.5" "@cycjimmy/jsmpeg-player": "npm:^6.0.5"
"@dermotduffy/panzoom": "npm:^4.5.1" "@dermotduffy/panzoom": "npm:^4.6.2"
"@egjs/hammerjs": "npm:^2.0.17" "@egjs/hammerjs": "npm:^2.0.17"
"@eslint/eslintrc": "npm:^3.3.6" "@eslint/eslintrc": "npm:^3.3.6"
"@eslint/js": "npm:^9.24.0" "@eslint/js": "npm:^9.24.0"