{"version":3,"sources":["../src/SuspensePromise.tsx","../src/useSuspensePromise.ts","../src/usePromiseCache.ts","../src/contexts/PromiseCacheContext.ts"],"sourcesContent":["import { type FunctionComponent } from 'react'\nimport type { Key, ResolvedData, SuspensePromiseOptions } from './types'\nimport { useSuspensePromise } from './useSuspensePromise'\n\n/**\n * @experimental This is experimental feature.\n */\nexport type SuspensePromiseProps<TData, TKey extends Key> = {\n  options: SuspensePromiseOptions<TData, TKey>\n  children: FunctionComponent<ResolvedData<TData>>\n}\n\n/**\n * @experimental This is experimental feature.\n */\nexport const SuspensePromise = <TData, TKey extends Key>({\n  children: Children,\n  options,\n}: SuspensePromiseProps<TData, TKey>) => <Children {...useSuspensePromise<TData, TKey>(options)} />\n","import { useMemo, useSyncExternalStore } from 'react'\nimport type { Key, ResolvedData, SuspensePromiseOptions } from './types'\nimport { usePromiseCache } from './usePromiseCache'\n\n/**\n * @experimental This is experimental feature.\n */\nexport const useSuspensePromise = <TData, TKey extends Key>(\n  options: SuspensePromiseOptions<TData, TKey>\n): ResolvedData<TData> => {\n  const promiseCache = usePromiseCache()\n  const syncData = () => promiseCache.suspend(options)\n  const data = useSyncExternalStore<TData>(\n    (sync) => promiseCache.subscribe(options.promiseKey, sync).unsubscribe,\n    syncData,\n    syncData\n  )\n\n  return useMemo(\n    () => ({\n      promiseKey: options.promiseKey,\n      data,\n      reset: () => promiseCache.reset(),\n    }),\n    [data, options.promiseKey, promiseCache]\n  )\n}\n","import { useContext } from 'react'\nimport { PromiseCacheContext } from './contexts'\n\n/**\n * @experimental This is experimental feature.\n */\nexport const usePromiseCache = () => {\n  const promiseCache = useContext(PromiseCacheContext)\n\n  if (promiseCache == null) {\n    throw new Error('PromiseCacheProvider should be in parent')\n  }\n\n  return promiseCache\n}\n","import { createContext } from 'react'\nimport type { PromiseCache } from '../PromiseCache'\n\nexport const PromiseCacheContext = createContext<PromiseCache | null>(null)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,gBAA8C;;;ACA9C,IAAAC,gBAA2B;;;ACA3B,mBAA8B;AAGvB,IAAM,0BAAsB,4BAAmC,IAAI;;;ADGnE,IAAM,kBAAkB,MAAM;AACnC,QAAM,mBAAe,0BAAW,mBAAmB;AAEnD,MAAI,gBAAgB,MAAM;AACxB,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA,SAAO;AACT;;;ADPO,IAAM,qBAAqB,CAChC,YACwB;AACxB,QAAM,eAAe,gBAAgB;AACrC,QAAM,WAAW,MAAM,aAAa,QAAQ,OAAO;AACnD,QAAM,WAAO;AAAA,IACX,CAAC,SAAS,aAAa,UAAU,QAAQ,YAAY,IAAI,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,EACF;AAEA,aAAO;AAAA,IACL,OAAO;AAAA,MACL,YAAY,QAAQ;AAAA,MACpB;AAAA,MACA,OAAO,MAAM,aAAa,MAAM;AAAA,IAClC;AAAA,IACA,CAAC,MAAM,QAAQ,YAAY,YAAY;AAAA,EACzC;AACF;;;ADRyC;AAHlC,IAAM,kBAAkB,CAA0B;AAAA,EACvD,UAAU;AAAA,EACV;AACF,MAAyC,4CAAC,6BAAa,mBAAgC,OAAO,EAAG;","names":["import_react","import_react"]}