fix(panOnScroll): only trigger onMoveEnd once closes #675

This commit is contained in:
moklick
2022-08-31 17:30:38 +02:00
parent a9b3ef1d5e
commit 693a71cc63
+15 -3
View File
@@ -57,6 +57,7 @@ const ZoomPane = ({
noWheelClassName, noWheelClassName,
noPanClassName, noPanClassName,
}: ZoomPaneProps) => { }: ZoomPaneProps) => {
const timerId = useRef<ReturnType<typeof setTimeout>>();
const store = useStoreApi(); const store = useStoreApi();
const isZoomingOrPanning = useRef(false); const isZoomingOrPanning = useRef(false);
const zoomPane = useRef<HTMLDivElement>(null); const zoomPane = useRef<HTMLDivElement>(null);
@@ -200,12 +201,23 @@ const ZoomPane = ({
const flowTransform = eventToFlowTransform(event.transform); const flowTransform = eventToFlowTransform(event.transform);
prevTransform.current = flowTransform; prevTransform.current = flowTransform;
onViewportChangeEnd?.(flowTransform); const handleOnMoveEnd = () => {
onMoveEnd?.(event.sourceEvent as MouseEvent | TouchEvent, flowTransform); 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(() => { useEffect(() => {
if (d3Zoom) { if (d3Zoom) {