UNPKG

1.9 kBSource Map (JSON)View Raw
1{"version":3,"names":["React","useThenable","create","promise","useState","initialState","undefined","then","result","state","setState","resolved","useEffect","cancelled","resolve"],"sources":["useThenable.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport default function useThenable<T>(create: () => PromiseLike<T>) {\n const [promise] = React.useState(create);\n\n let initialState: [boolean, T | undefined] = [false, undefined];\n\n // Check if our thenable is synchronous\n promise.then((result) => {\n initialState = [true, result];\n });\n\n const [state, setState] = React.useState(initialState);\n const [resolved] = state;\n\n React.useEffect(() => {\n let cancelled = false;\n\n const resolve = async () => {\n let result;\n\n try {\n result = await promise;\n } finally {\n if (!cancelled) {\n setState([true, result]);\n }\n }\n };\n\n if (!resolved) {\n resolve();\n }\n\n return () => {\n cancelled = true;\n };\n }, [promise, resolved]);\n\n return state;\n}\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,eAAe,SAASC,WAAT,CAAwBC,MAAxB,EAAsD;EACnE,MAAM,CAACC,OAAD,IAAYH,KAAK,CAACI,QAAN,CAAeF,MAAf,CAAlB;EAEA,IAAIG,YAAsC,GAAG,CAAC,KAAD,EAAQC,SAAR,CAA7C,CAHmE,CAKnE;;EACAH,OAAO,CAACI,IAAR,CAAcC,MAAD,IAAY;IACvBH,YAAY,GAAG,CAAC,IAAD,EAAOG,MAAP,CAAf;EACD,CAFD;EAIA,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBV,KAAK,CAACI,QAAN,CAAeC,YAAf,CAA1B;EACA,MAAM,CAACM,QAAD,IAAaF,KAAnB;EAEAT,KAAK,CAACY,SAAN,CAAgB,MAAM;IACpB,IAAIC,SAAS,GAAG,KAAhB;;IAEA,MAAMC,OAAO,GAAG,YAAY;MAC1B,IAAIN,MAAJ;;MAEA,IAAI;QACFA,MAAM,GAAG,MAAML,OAAf;MACD,CAFD,SAEU;QACR,IAAI,CAACU,SAAL,EAAgB;UACdH,QAAQ,CAAC,CAAC,IAAD,EAAOF,MAAP,CAAD,CAAR;QACD;MACF;IACF,CAVD;;IAYA,IAAI,CAACG,QAAL,EAAe;MACbG,OAAO;IACR;;IAED,OAAO,MAAM;MACXD,SAAS,GAAG,IAAZ;IACD,CAFD;EAGD,CAtBD,EAsBG,CAACV,OAAD,EAAUQ,QAAV,CAtBH;EAwBA,OAAOF,KAAP;AACD"}
\No newline at end of file