@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
34 lines (33 loc) • 1.11 kB
JavaScript
import { TSR_DEFERRED_PROMISE, defer } from "@tanstack/router-core";
import { createComponent } from "solid-js/web";
import * as Solid from "solid-js";
//#region src/awaited.tsx
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];
}
function Await(props) {
if (!("fallback" in props)) return createComponent(AwaitInner, props);
return createComponent(Solid.Suspense, {
get fallback() {
return props.fallback;
},
get children() {
return createComponent(AwaitInner, props);
}
});
}
function AwaitInner(props) {
const [resource] = Solid.createResource(() => defer(props.promise), async (promise) => ({ value: await promise }));
return createComponent(Solid.Show, {
get when() {
return resource();
},
children: (result) => props.children(result().value)
});
}
//#endregion
export { Await, useAwaited };
//# sourceMappingURL=awaited.js.map