UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

44 lines (43 loc) 1.11 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 inner = createComponent(InnerAwait, { deferred, ready: Solid.createMemo(async () => { await deferred; return true; }), get children() { return props.children; } }); if (props.fallback === void 0) return inner; return createComponent(Solid.Loading, { get fallback() { return props.fallback; }, children: inner }); } //#endregion export { Await, useAwaited }; //# sourceMappingURL=awaited.js.map