{"version":3,"file":"data-provider.cjs","sources":["../../src/api/data-provider.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport { createContext, useContext, ReactNode } from \"react\";\nimport { QueryParams } from \"../util/query-string\";\nimport { APIConfigOptions } from \"./types\";\nimport { useAPIResult } from \"./provider\";\n\ninterface DataProviderCtx {\n  [key: string]: string | object | object[] | null;\n}\n\ninterface DataProviderProps {\n  children?: ReactNode;\n  key: string;\n  data: any;\n}\n\nconst APIResultContext = createContext<DataProviderCtx>({});\n\nexport function DataProvider(props: DataProviderProps) {\n  const { children, key, data } = props;\n  const baseValue = useContext(APIResultContext);\n  const value = { ...baseValue, [key]: data };\n  return h(APIResultContext.Provider, { value }, children);\n}\n\ninterface APIDataProviderProps extends Partial<APIConfigOptions> {\n  key: string;\n  route: string;\n  params?: QueryParams;\n  children?: ReactNode;\n}\n\nexport function APIDataProvider<T>(props: APIDataProviderProps) {\n  const { route, params, children, key, ...opts } = props;\n  const data: T | null = useAPIResult(route, params, opts);\n  return h(DataProvider, { key, data }, children);\n}\n\nexport function useData(key: string) {\n  return useContext(APIResultContext)[key];\n}\n"],"names":["createContext","useContext","h","useAPIResult"],"mappings":";;;;;;;AAgBA,MAAM,mBAAmBA,MAAAA,cAA+B,EAAE;AAEnD,SAAS,aAAa,OAA0B;AACrD,QAAM,EAAE,UAAU,KAAK,KAAA,IAAS;AAChC,QAAM,YAAYC,MAAAA,WAAW,gBAAgB;AAC7C,QAAM,QAAQ,EAAE,GAAG,WAAW,CAAC,GAAG,GAAG,KAAA;AACrC,SAAOC,WAAAA,QAAE,iBAAiB,UAAU,EAAE,MAAA,GAAS,QAAQ;AACzD;AASO,SAAS,gBAAmB,OAA6B;AAC9D,QAAM,EAAE,OAAO,QAAQ,UAAU,KAAK,GAAG,SAAS;AAClD,QAAM,OAAiBC,SAAAA,aAAa,OAAO,QAAQ,IAAI;AACvD,SAAOD,WAAAA,QAAE,cAAc,EAAE,KAAK,KAAA,GAAQ,QAAQ;AAChD;AAEO,SAAS,QAAQ,KAAa;AACnC,SAAOD,MAAAA,WAAW,gBAAgB,EAAE,GAAG;AACzC;;;;"}