function usePanScroll()

in packages/react-heat-streams/src/components/HeatStreamsChart.tsx [336:353]


function usePanScroll(
	zoomLevel: number,
): [number, number, (dx: number, dy: number) => void] {
	const [panPosition, setPanPosition] = useState(0)
	const [scrollPosition, setScrollPosition] = useState(0)

	const onScroll = useCallback(
		(dx: number, dy: number): void => {
			const newPanPos = zoomLevel === 1 ? 0 : Math.min(0, panPosition - dx)
			const newScrollPos = Math.max(0, scrollPosition + dy)
			setPanPosition(newPanPos)
			setScrollPosition(newScrollPos)
		},
		[panPosition, scrollPosition, zoomLevel],
	)

	return [panPosition, scrollPosition, onScroll]
}