@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
45 lines (44 loc) • 1.48 kB
JavaScript
import { routerContext } from "./routerContext.js";
import { SafeFragment } from "./SafeFragment.js";
import { Matches } from "./Matches.js";
import { serializeMatchTransfer } from "./registryTransfer.js";
import { createComponent, mergeProps } from "@solidjs/web";
import * as Solid from "solid-js";
import { isServer } from "@tanstack/router-core/isServer";
//#region src/RouterProvider.tsx
var RouterContext = routerContext;
function RouterContextProvider({ router, children, ...rest }) {
if (Object.keys(rest).length > 0) Solid.runWithOwner(null, () => {
router.update({
...router.options,
...rest,
context: {
...router.options.context,
...rest.context
}
});
});
const ready = Solid.createMemo(() => isServer && !router._serverResult ? router.load().then(() => true) : true);
return createComponent(router.options.Wrap || SafeFragment, { get children() {
return createComponent(RouterContext, {
value: router,
get children() {
return createComponent(Solid.Show, {
get when() {
return ready();
},
children: (_) => {
if (isServer) serializeMatchTransfer(router);
return children();
}
});
}
});
} });
}
function RouterProvider({ router, ...rest }) {
return createComponent(RouterContextProvider, mergeProps({ router }, rest, { children: () => createComponent(Matches, {}) }));
}
//#endregion
export { RouterContextProvider, RouterProvider };
//# sourceMappingURL=RouterProvider.js.map