UNPKG

@generouted/react-router

Version:

Generated file-based routes for React Router and Vite

40 lines (38 loc) 2.12 kB
import { generateModalRoutes, generatePreservedRoutes, generateRegularRoutes } from "./chunk-2IW5HX64.js"; import "./chunk-DZAGGWNQ.js"; // ../generouted/src/react-router.tsx import { Fragment, Suspense } from "react"; import { createBrowserRouter, Outlet, RouterProvider, useLocation } from "react-router-dom"; import { jsx } from "react/jsx-runtime"; 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/**/[\\w[-]*.{jsx,tsx,mdx}", "!**/(_app|404).*"], { eager: true }); var preservedRoutes = generatePreservedRoutes(PRESERVED); var modalRoutes = generateModalRoutes(MODALS); var regularRoutes = generateRegularRoutes(ROUTES, (module, key) => { const index = /index\.(jsx|tsx|mdx)$/.test(key) && !key.includes("pages/index") ? { index: true } : {}; const Element2 = module?.default || Fragment; const Page = () => module?.Pending ? /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(module.Pending, {}), children: /* @__PURE__ */ jsx(Element2, {}) }) : /* @__PURE__ */ jsx(Element2, {}); return { ...index, Component: Page, ErrorBoundary: module?.Catch, loader: module?.Loader, action: module?.Action }; }); var _app = preservedRoutes?.["_app"]; var _404 = preservedRoutes?.["404"]; var Element = _app?.default || Fragment; var App = () => _app?.Pending ? /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(_app.Pending, {}), children: /* @__PURE__ */ jsx(Element, {}) }) : /* @__PURE__ */ jsx(Element, {}); var app = { Component: _app?.default ? App : Outlet, ErrorBoundary: _app?.Catch, loader: _app?.Loader }; var fallback = { path: "*", Component: _404?.default || Fragment }; var routes = [{ ...app, children: [...regularRoutes, fallback] }]; var Routes = () => /* @__PURE__ */ jsx(RouterProvider, { router: createBrowserRouter(routes) }); var Modals = () => { const Modal = modalRoutes[useLocation().state?.modal] || Fragment; return /* @__PURE__ */ jsx(Modal, {}); }; export { Modals, Routes, routes };