{"version":3,"sources":["../../src/getPromise/index.ts"],"names":["_root","_promise","_value","_reject","_resolve","_path"],"mappings":";;;AAcA,IAAM,UAAA,GAAa,CAAI,KAAqC,KAAA;AAC1D,EAAA,MAAM,OAAO,KAAMA,CAAAA,CAAAA;AAEnB,EAAA,MAAM,OAAO,IAAKC,CAAAA,CAAAA;AAElB,EAAI,IAAA,OAAA;AAEJ,EAAA,IAAI,IAAM,EAAA;AACR,IAAA,OAAA,GAAU,IAAKA,CAAAA,CAAAA;AAAA,GACjB,MAAA,IAAW,IAAK,CAAA,QAAA,CAASC,CAAQ,EAAA;AAC/B,IAAA,OAAA,GACE,IAAKA,CAAAA,CAAAA,KAAW,KACZ,CAAA,GAAA,OAAA,CAAQ,OAAQ,CAAA,IAAA,CAAKA,CAAM,CAAA,GAC3B,OAAQ,CAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAMA,CAAM,CAAA;AAAA,GACjC,MAAA;AACL,IAAA,IAAI,QAAiC,EAAA,OAAA;AAErC,IAAA,OAAA,GAAU,IAAI,OAAA,CAAa,CAAC,GAAA,EAAK,GAAQ,KAAA;AACvC,MAAW,QAAA,GAAA,GAAA;AAEX,MAAU,OAAA,GAAA,GAAA;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAKD,CAAW,GAAA;AAAA,MACdA,CAAU,EAAA,OAAA;AAAA,MACVE,CAAA,EAAA,OAAA;AAAA,MACAC,CAAA,EAAA;AAAA,KACF;AAAA;AAGF,EAAO,OAAA,KAAA,CAAMC,IAAQ,OAAQ,CAAA,IAAA,CAAK,MAAM,KAAM,CAAA,GAAA,EAAK,CAAI,GAAA,OAAA;AACzD,CAAA;AAEA,IAAO,kBAAQ,GAAA","file":"chunk-WPWWOKTH.cjs","sourcesContent":["import type { AsyncState } from '../types';\n\n/**\n * @returns a promise that resolves with the current value of the given {@link state}.\n * If the state is not yet loaded, the promise waits until a value is available.\n * @example\n * ```js\n * getPromise(asyncState).then((value) => {\n *   console.log('Loaded value:', value);\n * }).catch((error) => {\n *   console.error('Failed to load:', error);\n * });\n * ```\n */\nconst getPromise = <T>(state: AsyncState<T>): Promise<T> => {\n  const root = state._root;\n\n  const data = root._promise;\n\n  let promise: Promise<any>;\n\n  if (data) {\n    promise = data._promise;\n  } else if (root.isLoaded._value) {\n    promise =\n      root._value !== undefined\n        ? Promise.resolve(root._value)\n        : Promise.reject(root.error._value);\n  } else {\n    let _resolve!: (value: any) => void, _reject!: (error: any) => void;\n\n    promise = new Promise<any>((res, rej) => {\n      _resolve = res;\n\n      _reject = rej;\n    });\n\n    root._promise = {\n      _promise: promise,\n      _reject,\n      _resolve,\n    };\n  }\n\n  return state._path ? promise.then(() => state.get()) : promise;\n};\n\nexport default getPromise;\n"]}