From 31dd8efca54c710be251b749a6b06f7b9319fbad Mon Sep 17 00:00:00 2001 From: moklick Date: Tue, 14 Oct 2025 12:14:13 +0200 Subject: [PATCH] fix(panzoom): always call onMoveEnd when onMoveStart was called #5429 --- packages/system/src/xypanzoom/eventhandler.ts | 8 +++----- packages/system/src/xypanzoom/utils.ts | 3 --- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/system/src/xypanzoom/eventhandler.ts b/packages/system/src/xypanzoom/eventhandler.ts index 583563a3..38f90aa5 100644 --- a/packages/system/src/xypanzoom/eventhandler.ts +++ b/packages/system/src/xypanzoom/eventhandler.ts @@ -12,7 +12,7 @@ import { type OnDraggingChange, type OnTransformChange, } from '../types'; -import { isRightClickPan, isWrappedWithClass, transformToViewport, viewChanged, wheelDelta } from './utils'; +import { isRightClickPan, isWrappedWithClass, transformToViewport, wheelDelta } from './utils'; import { isMacOs } from '../utils'; import { ZoomPanValues } from './XYPanZoom'; @@ -128,9 +128,7 @@ export function createPanOnScrollHandler({ zoomPanValues.isPanScrolling = true; onPanZoomStart?.(event, nextViewport); - } - - if (zoomPanValues.isPanScrolling) { + } else { onPanZoom?.(event, nextViewport); zoomPanValues.panScrollTimeout = setTimeout(() => { @@ -236,7 +234,7 @@ export function createPanZoomEndHandler({ onDraggingChange(false); - if (onPanZoomEnd && viewChanged(zoomPanValues.prevViewport, event.transform)) { + if (onPanZoomEnd) { const viewport = transformToViewport(event.transform); zoomPanValues.prevViewport = viewport; diff --git a/packages/system/src/xypanzoom/utils.ts b/packages/system/src/xypanzoom/utils.ts index e8c83694..27190aa9 100644 --- a/packages/system/src/xypanzoom/utils.ts +++ b/packages/system/src/xypanzoom/utils.ts @@ -6,9 +6,6 @@ import { transition } from 'd3-transition'; import { type D3SelectionInstance, type Viewport } from '../types'; import { isMacOs } from '../utils'; -export const viewChanged = (prevViewport: Viewport, eventViewport: any): boolean => - prevViewport.x !== eventViewport.x || prevViewport.y !== eventViewport.y || prevViewport.zoom !== eventViewport.k; - export const transformToViewport = (transform: ZoomTransform): Viewport => ({ x: transform.x, y: transform.y,