Files
jp 0917366cdf Separate JSON API backend (vm_api.py) + React+TanStack frontend scaffold
- vm_api.py: pure FastAPI JSON API on :8098 with CORS
- vm-api.service: systemd unit for API (replaces inline HTML vm_web.py for frontend)
- vm_web.py: kept intact as fallback; Apache now proxies /api/ -> :8098
- frontend/: Vite + React + TanStack Query scaffold
- Apache vhost updated: DocumentRoot -> frontend/dist, /api/ proxy, SPA fallback
- All original HTML pages still functional via :8099 during transition
2026-08-13 17:42:33 +01:00

46 lines
1.6 KiB
JavaScript

import { CatchBoundary } from "./CatchBoundary.js";
import { useRouter } from "./useRouter.js";
import { isNotFound } from "@tanstack/router-core";
import "react";
import { isServer } from "@tanstack/router-core/isServer";
import { jsx } from "react/jsx-runtime";
import { useStore } from "@tanstack/react-store";
//#region src/not-found.tsx
function CatchNotFound(props) {
const router = useRouter();
if (isServer ?? router.isServer) {
const resetKey = `not-found-${router.stores.location.get().pathname}-${router.stores.status.get()}`;
return /* @__PURE__ */ jsx(CatchBoundary, {
getResetKey: () => resetKey,
onCatch: (error, errorInfo) => {
if (isNotFound(error)) props.onCatch?.(error, errorInfo);
else throw error;
},
errorComponent: ({ error }) => {
if (isNotFound(error)) return props.fallback?.(error);
else throw error;
},
children: props.children
});
}
const resetKey = `not-found-${useStore(router.stores.location, (location) => location.pathname)}-${useStore(router.stores.status, (status) => status)}`;
return /* @__PURE__ */ jsx(CatchBoundary, {
getResetKey: () => resetKey,
onCatch: (error, errorInfo) => {
if (isNotFound(error)) props.onCatch?.(error, errorInfo);
else throw error;
},
errorComponent: ({ error }) => {
if (isNotFound(error)) return props.fallback?.(error);
else throw error;
},
children: props.children
});
}
function DefaultGlobalNotFound() {
return /* @__PURE__ */ jsx("p", { children: "Not Found" });
}
//#endregion
export { CatchNotFound, DefaultGlobalNotFound };
//# sourceMappingURL=not-found.js.map