@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
30 lines • 1.08 kB
JSX
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