1import { useState } from "react";
2import type { XRange } from "./LinePlot";
4/**
5 * One x window and one hover position shared by several plots, so zooming or
6 * pointing at one moves them all. Spread the result into each LinePlot.
7 */
8export function useSharedAxis() {
9 const [xRange, setXRange] = useState<XRange | null>(null);
10 const [hoverX, setHoverX] = useState<number | null>(null);
11 return {
12 xRange,
13 hoverX,
14 onXRangeChange: setXRange,
15 onHover: setHoverX,
16 reset: () => setXRange(null),
17 };
18}