Merge pull request #5547 from xyflow/fix/moveend

fix(panzoom): always call onMoveEnd when onMoveStart was called #5429
This commit is contained in:
Moritz Klack
2025-10-14 12:42:47 +02:00
committed by GitHub
3 changed files with 8 additions and 8 deletions

View File

@@ -0,0 +1,5 @@
---
'@xyflow/system': patch
---
Always call onMoveEnd when onMoveStart was called

View File

@@ -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;

View File

@@ -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,