import { createContext, useContext, useMemo, useState } from "react"; import { LayoutRectangle } from "react-native"; interface MultiLineChartContextState { width: number; height: number; setCanvasSize: React.Dispatch>; minY: number; maxY: number; } export const MultiLineChartContext = createContext( undefined ); interface MultiLineChartProviderProps { points: Record; width?: number; height?: number; } export const MultiLineChartProvider: React.FC< React.PropsWithChildren > = ({ points, children }) => { const [canvasSize, setCanvasSize] = useState({ height: 0, width: 0, x: 0, y: 0, }); const { minY, maxY } = useMemo(() => { const minY = Math.min(...Object.values(points).map((p) => Math.min(...p.map(([, y]) => y)))); const maxY = Math.max(...Object.values(points).map((p) => Math.max(...p.map(([, y]) => y)))); return { minY, maxY }; }, [points]); return ( {children} ); }; export const useMultiLineChartContext = () => { const context = useContext(MultiLineChartContext); if (!context) { throw new Error("useMultiLineChartContext must be used within a MultiLineChartProvider"); } return context; };