UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

30 lines 1.08 kB
import * as Solid from 'solid-js'; import { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'; export function useAwaited({ promise: _promise, }) { const promise = defer(_promise); if (promise[TSR_DEFERRED_PROMISE].status === 'pending') { throw promise; } if (promise[TSR_DEFERRED_PROMISE].status === 'error') { throw promise[TSR_DEFERRED_PROMISE].error; } return [promise[TSR_DEFERRED_PROMISE].data, promise]; } export function Await(props) { if (!('fallback' in props)) { const [resource] = Solid.createResource(() => defer(props.promise), (p) => p, { deferStream: true, }); return (<Solid.Show when={resource()}> {(data) => props.children(data())} </Solid.Show>); } return (<Solid.Suspense fallback={props.fallback}> <AwaitInner {...props}/> </Solid.Suspense>); } function AwaitInner(props) { const [resource] = Solid.createResource(() => defer(props.promise), (p) => p); return props.children(resource()); } //# sourceMappingURL=awaited.jsx.map