fix(panzoom): always call onMoveEnd when onMoveStart was called #5429
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user