Skip to main content

zoomScale & onZoom

Zoom and pan are built in: scroll or pinch to zoom, drag the background to pan. zoomScale sets the allowed zoom range as [min, max]:

<Graph
graph={data}
zoomScale={[0.5, 8]} // can zoom out to 50%, in to 800%
/>

The default is [0.5, 8].

Try it — scroll inside the frame, then tighten the sliders and notice the limits kick in:

zoomScale={[min, max]} — scroll or pinch inside the frameLive
current zoom 1.00×

Listening to zoom events​

Pass onZoom to be notified on every zoom or pan gesture. It receives the d3 zoom event, whose transform carries the current scale (k) and translation (x, y):

import type { D3ZoomEvent } from "d3-zoom";

<Graph
graph={data}
zoomScale={[0.5, 8]}
onZoom={(event: D3ZoomEvent<SVGElement, unknown>) => {
console.log("zoom level:", event.transform.k);
console.log("pan offset:", event.transform.x, event.transform.y);
}}
/>;

Typical uses:

  • Show a zoom-percentage indicator in your UI.
  • Swap node detail levels (hide labels when zoomed far out).
  • Persist the viewport so users return to where they left off.
tip

onZoom fires on every animation frame of a gesture — debounce or throttle anything expensive you do inside it.