From 693a71cc63be1f98b6451f1859ec75be9e606ce3 Mon Sep 17 00:00:00 2001 From: moklick Date: Wed, 31 Aug 2022 17:30:38 +0200 Subject: [PATCH] fix(panOnScroll): only trigger onMoveEnd once closes #675 --- packages/core/src/container/ZoomPane/index.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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) {