UNPKG

@generouted/solid-router

Version:

Generated file-based routes for Solid Router and Vite

106 lines (104 loc) 3.18 kB
import { generateModalRoutes, generatePreservedRoutes, generateRegularRoutes } from "./chunk-UKDIJ4XC.js"; // ../generouted/src/solid-router-lazy.tsx import { createComponent as _$createComponent } from "solid-js/web"; import { createMemo, ErrorBoundary, lazy, Show, Suspense } from "solid-js"; import { Router, useLocation } from "@solidjs/router"; var PRESERVED = import.meta.glob("/src/pages/{_app,404}.{jsx,tsx}", { eager: true }); var MODALS = import.meta.glob("/src/pages/**/[+]*.{jsx,tsx}", { eager: true }); var ROUTES = import.meta.glob(["/src/pages/**/[A-Za-z0-9[-]*.{jsx,tsx,mdx}", "/src/pages/**/_layout.{jsx,tsx,mdx}", "!/src/pages/404.{jsx,tsx,mdx}", "!/src/pages/**/_*/**"]); var preservedRoutes = generatePreservedRoutes(PRESERVED); var modalRoutes = generateModalRoutes(MODALS); var regularRoutes = generateRegularRoutes(ROUTES, (module) => { const Default2 = lazy(module); const Pending2 = lazy(() => module().then((module2) => ({ default: module2?.Pending || Fragment }))); const Catch2 = lazy(() => module().then((module2) => ({ default: module2?.Catch || Fragment }))); const Page = (props) => _$createComponent(Suspense, { get fallback() { return _$createComponent(Pending2, {}); }, get children() { return _$createComponent(Default2, props); } }); const Component = (props) => _$createComponent(ErrorBoundary, { fallback: (error, reset) => Catch2({ error, reset }), get children() { return _$createComponent(Page, props); } }); return { component: Component, load: (args) => module().then((mod) => mod?.Loader?.(args) || void 0) }; }); var _app = preservedRoutes?.["_app"]; var _404 = preservedRoutes?.["404"]; var Fragment = (props) => props?.children; var Default = _app?.default || Fragment; var Pending = _app?.Pending || Fragment; var Catch = preservedRoutes?.["_app"]?.Catch; var Modals_ = () => createMemo(() => modalRoutes[useLocation().state?.modal || ""] || Fragment); var Layout = (props) => [_$createComponent(Default, props), " ", _$createComponent(Modals_, {})]; var App = (props) => _$createComponent(ErrorBoundary, { fallback: (error, reset) => Catch?.({ error, reset }), get children() { return _$createComponent(Show, { get when() { return _app?.Pending; }, get fallback() { return _$createComponent(Layout, props); }, get children() { return _$createComponent(Suspense, { get fallback() { return _$createComponent(Pending, {}); }, get children() { return _$createComponent(Layout, props); } }); } }); } }); var app = { path: "", component: _app?.default ? App : Layout, load: _app?.Loader || void 0 }; var fallback = { path: "*", component: _404?.default || Fragment }; var routes = [{ ...app, children: [...regularRoutes, fallback] }]; var Routes = () => _$createComponent(Router, { children: routes }); var Modals = () => (console.warn("[generouted] `<Modals />` will be removed in future releases"), null); export { Modals, Routes, routes };