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]
}