diff --git a/packages/core/src/container/ZoomPane/index.tsx b/packages/core/src/container/ZoomPane/index.tsx index 657ce573..00a35e2f 100644 --- a/packages/core/src/container/ZoomPane/index.tsx +++ b/packages/core/src/container/ZoomPane/index.tsx @@ -57,6 +57,7 @@ const ZoomPane = ({ noWheelClassName, noPanClassName, }: ZoomPaneProps) => { + const timerId = useRef>(); const store = useStoreApi(); const isZoomingOrPanning = useRef(false); const zoomPane = useRef(null); @@ -200,12 +201,23 @@ const ZoomPane = ({ const flowTransform = eventToFlowTransform(event.transform); prevTransform.current = flowTransform; - onViewportChangeEnd?.(flowTransform); - onMoveEnd?.(event.sourceEvent as MouseEvent | TouchEvent, flowTransform); + const handleOnMoveEnd = () => { + onViewportChangeEnd?.(flowTransform); + onMoveEnd?.(event.sourceEvent as MouseEvent | TouchEvent, flowTransform); + }; + console.log(panOnScroll); + if (panOnScroll) { + clearTimeout(timerId.current); + timerId.current = setTimeout(() => { + handleOnMoveEnd(); + }, 150); + } else { + handleOnMoveEnd(); + } } }); } - }, [d3Zoom, onMoveEnd]); + }, [d3Zoom, onMoveEnd, panOnScroll]); useEffect(() => { if (d3Zoom) {