@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
33 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);
const data = Solid.createMemo(async () => await promise);
return [data(), promise];
}
function InnerAwait(props) {
return (<Solid.Show when={props.ready()}>
{(_) => {
const state = props.deferred[TSR_DEFERRED_PROMISE];
if (state.status === 'error') {
throw state.error;
}
return props.children(state.data);
}}
</Solid.Show>);
}
export function Await(props) {
const deferred = defer(props.promise);
const ready = Solid.createMemo(async () => {
await deferred;
return true;
});
const inner = (<InnerAwait deferred={deferred} ready={ready}>
{props.children}
</InnerAwait>);
if (props.fallback === undefined) {
return inner;
}
return <Solid.Loading fallback={props.fallback}>{inner}</Solid.Loading>;
}
//# sourceMappingURL=awaited.jsx.map