bananas-commerce-admin
Version:
What's this, an admin for apes?
31 lines • 1.79 kB
JavaScript
import React from "react";
import { Route, Routes } from "react-router-dom";
import Stack from "@mui/material/Stack";
import ErrorScreen from "../containers/ErrorScreen";
import PageErrorBoundary from "../containers/PageErrorBoundary";
import PageLoader from "../containers/PageLoader";
import { useRouter } from "../contexts/RouterContext";
import DashboardPage from "../pages/DashboardPage";
export const Router = ({ dashboard, extensions }) => {
extensions ??= Array.isArray(extensions) ? extensions : [];
const { routes } = useRouter();
const Dashboard = dashboard ?? DashboardPage;
const extensionsMap = new Map(extensions.map(({ app, pages }) => [app, pages]));
const pageRoutes = routes.map((route) => {
const hit = extensionsMap.get(route.app)?.(route);
if (hit == null)
return;
const page = "page" in hit ? hit.page : hit;
const request = "request" in hit ? hit.request : undefined;
const defaultRequest = "defaultRequest" in hit ? hit.defaultRequest : undefined;
const offline = "offline" in hit ? hit.offline : undefined;
const Element = () => (React.createElement(PageErrorBoundary, { errorPage: ErrorScreen },
React.createElement(PageLoader, { defaultRequest: defaultRequest, offline: offline, page: page, request: request, route: route })));
return React.createElement(Route, { key: route.path, element: React.createElement(Element, null), path: route.path });
});
return (React.createElement(Stack, { sx: { width: "100%", minHeight: "100%" } },
React.createElement(Routes, null,
React.createElement(Route, { index: true, element: React.createElement(Dashboard, null) }),
pageRoutes)));
};
//# sourceMappingURL=Router.js.map