/** * @file Context for providing external data references to nodes for async data loading */ import * as React from "react"; import type { ExternalDataReference } from "../../types/NodeDefinition"; export type ExternalDataContextValue = { refs: Record; }; export const ExternalDataContext = React.createContext(null); ExternalDataContext.displayName = "ExternalDataContext"; export type ExternalDataProviderProps = { children: React.ReactNode; refs?: Record; }; export const ExternalDataProvider: React.FC = ({ children, refs = {} }) => { const contextValue: ExternalDataContextValue = React.useMemo(() => ({ refs }), [refs]); return {children}; }; export const useExternalDataRefs = (): ExternalDataContextValue => { const context = React.useContext(ExternalDataContext); if (!context) { throw new Error("useExternalDataRefs must be used within an ExternalDataProvider"); } return context; }; export const useExternalDataRef = (nodeId: string): ExternalDataReference | undefined => { const { refs } = useExternalDataRefs(); return refs[nodeId]; };