UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

1 lines 2.14 kB
{"version":3,"file":"awaited.cjs","names":["Solid","TSR_DEFERRED_PROMISE","defer","DeferredPromise","SolidNode","AwaitOptions","promise","Promise","T","useAwaited","_promise","status","error","data","InnerAwait","props","children","res","Await","fallback","result","_$createComponent","Loading"],"sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nfunction InnerAwait<T>(props: {\n promise: Promise<T>\n children: (res: T) => SolidNode\n}) {\n const [data] = useAwaited({ promise: props.promise })\n return props.children(data) as any\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n return (\n <Solid.Loading fallback={props.fallback as any}>\n <InnerAwait promise={props.promise}>{props.children}</InnerAwait>\n </Solid.Loading>\n )\n}\n"],"mappings":";;;;;;AAUA,SAAgBS,WAAc,EAC5BH,SAASI,YACkC;CAC3C,MAAMJ,WAAAA,GAAAA,sBAAAA,OAAgBI,SAAS;AAE/B,KAAIJ,QAAQL,sBAAAA,sBAAsBU,WAAW,UAC3C,OAAML;AAGR,KAAIA,QAAQL,sBAAAA,sBAAsBU,WAAW,QAC3C,OAAML,QAAQL,sBAAAA,sBAAsBW;AAGtC,QAAO,CAACN,QAAQL,sBAAAA,sBAAsBY,MAAMP,QAAQ;;AAGtD,SAASQ,WAAcC,OAGpB;CACD,MAAM,CAACF,QAAQJ,WAAW,EAAEH,SAASS,MAAMT,SAAS,CAAC;AACrD,QAAOS,MAAMC,SAASH,KAAK;;AAG7B,SAAgBK,MACdH,OAIA;AACA,SAAA,GAAA,aAAA,iBACGf,SAAMsB,SAAO;EAAA,IAACH,WAAQ;AAAA,UAAEJ,MAAMI;;EAAe,IAAAH,WAAA;AAAA,WAAA,GAAA,aAAA,iBAC3CF,YAAU;IAAA,IAACR,UAAO;AAAA,YAAES,MAAMT;;IAAO,IAAAU,WAAA;AAAA,YAAGD,MAAMC;;IAAQ,CAAA;;EAAA,CAAA"}