UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

130 lines (129 loc) 5.11 kB
const require_runtime = require("./_virtual/_rolldown/runtime.cjs"); const require_CatchBoundary = require("./CatchBoundary.cjs"); const require_useRouter = require("./useRouter.cjs"); const require_useRouterState = require("./useRouterState.cjs"); const require_matchContext = require("./matchContext.cjs"); const require_Transitioner = require("./Transitioner.cjs"); const require_SafeFragment = require("./SafeFragment.cjs"); const require_Match = require("./Match.cjs"); let _tanstack_router_core = require("@tanstack/router-core"); let solid_js_web = require("solid-js/web"); let solid_js = require("solid-js"); solid_js = require_runtime.__toESM(solid_js); let tiny_warning = require("tiny-warning"); tiny_warning = require_runtime.__toESM(tiny_warning); let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer"); //#region src/Matches.tsx function Matches() { const router = require_useRouter.useRouter(); const ResolvedSuspense = (_tanstack_router_core_isServer.isServer ?? router.isServer) || typeof document !== "undefined" && router.ssr ? require_SafeFragment.SafeFragment : solid_js.Suspense; const rootRoute = () => router.routesById[_tanstack_router_core.rootRouteId]; const PendingComponent = rootRoute().options.pendingComponent ?? router.options.defaultPendingComponent; return (0, solid_js_web.createComponent)(router.options.InnerWrap || require_SafeFragment.SafeFragment, { get children() { return (0, solid_js_web.createComponent)(ResolvedSuspense, { get fallback() { return PendingComponent ? (0, solid_js_web.createComponent)(PendingComponent, {}) : null; }, get children() { return [(0, solid_js_web.createComponent)(require_Transitioner.Transitioner, {}), (0, solid_js_web.createComponent)(MatchesInner, {})]; } }); } }); } function MatchesInner() { const router = require_useRouter.useRouter(); const matchId = require_useRouterState.useRouterState({ select: (s) => { return s.matches[0]?.id; } }); const resetKey = require_useRouterState.useRouterState({ select: (s) => s.loadedAt }); const matchComponent = () => { return (0, solid_js_web.createComponent)(solid_js.Show, { get when() { return matchId(); }, get children() { return (0, solid_js_web.createComponent)(require_Match.Match, { get matchId() { return matchId(); } }); } }); }; return (0, solid_js_web.createComponent)(require_matchContext.matchContext.Provider, { value: matchId, get children() { return (0, solid_js_web.memo)(() => !!router.options.disableGlobalCatchBoundary)() ? matchComponent() : (0, solid_js_web.createComponent)(require_CatchBoundary.CatchBoundary, { getResetKey: () => resetKey(), errorComponent: require_CatchBoundary.ErrorComponent, get onCatch() { return process.env.NODE_ENV !== "production" ? (error) => { (0, tiny_warning.default)(false, `The following error wasn't caught by any route! At the very leas t, consider setting an 'errorComponent' in your RootRoute!`); (0, tiny_warning.default)(false, error.message || error.toString()); } : void 0; }, get children() { return matchComponent(); } }); } }); } function useMatchRoute() { const router = require_useRouter.useRouter(); const status = require_useRouterState.useRouterState({ select: (s) => s.status }); return (opts) => { const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts; return solid_js.createMemo(() => { status(); return router.matchRoute(rest, { pending, caseSensitive, fuzzy, includeSearch }); }); }; } function MatchRoute(props) { const status = require_useRouterState.useRouterState({ select: (s) => s.status }); return (0, solid_js_web.createComponent)(solid_js.Show, { get when() { return status(); }, keyed: true, children: (_) => { const params = useMatchRoute()(props)(); const child = props.children; if (typeof child === "function") return child(params); return params ? child : null; } }); } function useMatches(opts) { return require_useRouterState.useRouterState({ select: (state) => { const matches = state.matches; return opts?.select ? opts.select(matches) : matches; } }); } function useParentMatches(opts) { const contextMatchId = solid_js.useContext(require_matchContext.matchContext); return useMatches({ select: (matches) => { matches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId())); return opts?.select ? opts.select(matches) : matches; } }); } function useChildMatches(opts) { const contextMatchId = solid_js.useContext(require_matchContext.matchContext); return useMatches({ select: (matches) => { matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId()) + 1); return opts?.select ? opts.select(matches) : matches; } }); } //#endregion exports.MatchRoute = MatchRoute; exports.Matches = Matches; exports.useChildMatches = useChildMatches; exports.useMatchRoute = useMatchRoute; exports.useMatches = useMatches; exports.useParentMatches = useParentMatches; //# sourceMappingURL=Matches.cjs.map