{"version":3,"file":"data-provider-context.cjs","names":[],"sources":["../../src/data/data-provider-context.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport type { DataProvider } from \"./create-data-provider\";\n\nconst DataProviderContext = createContext<DataProvider | null>(null);\n\n/** Props for {@link TempestDataProvider}. */\nexport interface TempestDataProviderProps {\n    /** The data provider to expose to descendant resource hooks. */\n    provider: DataProvider;\n    /** The subtree that consumes the provider. */\n    children: ReactNode;\n}\n\n/**\n * Inject a {@link DataProvider} into the React tree so the resource hooks\n * (`useList`, `useOne`, `useCreate`, …) can resolve it via {@link useDataProvider}.\n *\n * @example\n * const dataProvider = createDataProvider(apiClient);\n * <TempestDataProvider provider={dataProvider}>\n *     <App />\n * </TempestDataProvider>\n */\nexport function TempestDataProvider({ provider, children }: TempestDataProviderProps) {\n    return <DataProviderContext.Provider value={provider}>{children}</DataProviderContext.Provider>;\n}\n\n/**\n * Read the {@link DataProvider} from context.\n *\n * @returns The data provider supplied to the nearest {@link TempestDataProvider}.\n * @throws {Error} When used outside a {@link TempestDataProvider}.\n */\nexport function useDataProvider(): DataProvider {\n    const provider = useContext(DataProviderContext);\n    if (!provider) {\n        throw new Error(\"useDataProvider must be used within a <TempestDataProvider>\");\n    }\n    return provider;\n}\n"],"mappings":"sDAKA,IAAM,GAAA,EAAsB,EAAA,cAAA,CAAmC,IAAI,EAoBnE,SAAgB,EAAoB,CAAE,WAAU,YAAsC,CAClF,OAAO,EAAA,EAAA,IAAA,CAAC,EAAoB,SAArB,CAA8B,MAAO,EAAW,UAAuC,CAAA,CAClG,CAQA,SAAgB,GAAgC,CAC5C,IAAM,GAAA,EAAW,EAAA,WAAA,CAAW,CAAmB,EAC/C,GAAI,CAAC,EACD,MAAU,MAAM,6DAA6D,EAEjF,OAAO,CACX"}