UNPKG

1.88 kBSource Map (JSON)View Raw
1{"version":3,"names":["useThenable","create","promise","React","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;;;;;;AAEe,SAASA,WAAT,CAAwBC,MAAxB,EAAsD;EACnE,MAAM,CAACC,OAAD,IAAYC,KAAK,CAACC,QAAN,CAAeH,MAAf,CAAlB;EAEA,IAAII,YAAsC,GAAG,CAAC,KAAD,EAAQC,SAAR,CAA7C,CAHmE,CAKnE;;EACAJ,OAAO,CAACK,IAAR,CAAcC,MAAD,IAAY;IACvBH,YAAY,GAAG,CAAC,IAAD,EAAOG,MAAP,CAAf;EACD,CAFD;EAIA,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBP,KAAK,CAACC,QAAN,CAAeC,YAAf,CAA1B;EACA,MAAM,CAACM,QAAD,IAAaF,KAAnB;EAEAN,KAAK,CAACS,SAAN,CAAgB,MAAM;IACpB,IAAIC,SAAS,GAAG,KAAhB;;IAEA,MAAMC,OAAO,GAAG,YAAY;MAC1B,IAAIN,MAAJ;;MAEA,IAAI;QACFA,MAAM,GAAG,MAAMN,OAAf;MACD,CAFD,SAEU;QACR,IAAI,CAACW,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,CAACX,OAAD,EAAUS,QAAV,CAtBH;EAwBA,OAAOF,KAAP;AACD"}
\No newline at end of file