UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

45 lines (44 loc) 1.09 kB
import { TSR_DEFERRED_PROMISE, defer } from "@tanstack/router-core"; import { createComponent } from "@solidjs/web"; import * as Solid from "solid-js"; //#region src/awaited.tsx function useAwaited({ promise: _promise }) { const promise = defer(_promise); return [Solid.createMemo(async () => await promise)(), promise]; } function InnerAwait(props) { return createComponent(Solid.Show, { get when() { return props.ready(); }, children: (_) => { const state = props.deferred[TSR_DEFERRED_PROMISE]; if (state.status === "error") throw state.error; return props.children(state.data); } }); } function Await(props) { const deferred = defer(props.promise); const ready = Solid.createMemo(async () => { await deferred; return true; }); return createComponent(Solid.Loading, { get fallback() { return props.fallback; }, get children() { return createComponent(InnerAwait, { deferred, ready, get children() { return props.children; } }); } }); } //#endregion export { Await, useAwaited }; //# sourceMappingURL=awaited.js.map