Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * Shared GrackleContext definition used by both the real GrackleProvider (in @grackle-ai/web) * and MockGrackleProvider (in this package). Only the raw context + consumer hook live here; * the actual provider with gRPC wiring lives in @grackle-ai/web. * * @module */ import React, { createContext, useContext } from "react"; import type { UseGrackleSocketResult } from "./GrackleContextTypes.js"; /** Re-export the socket result type so consumers can reference it. */ export type { UseGrackleSocketResult }; /** Alias for the context value type. */ export type GrackleContextType = UseGrackleSocketResult; /** The raw React context for Grackle state. */ export const GrackleContext: React.Context<GrackleContextType | undefined> = createContext< GrackleContextType | undefined >(undefined); /** Consumes the Grackle context; must be called within a GrackleProvider or MockGrackleProvider. */ export function useGrackle(): GrackleContextType { const ctx = useContext(GrackleContext); if (!ctx) { throw new Error("useGrackle must be used within GrackleProvider"); } return ctx; } |