You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
import React from "react";
|
|
import "@app/index.css";
|
|
|
|
// Import feature flags and dev overrides
|
|
import "@core/services/dev-overrides.ts";
|
|
import { enableMapSet } from "immer";
|
|
import "maplibre-gl/dist/maplibre-gl.css";
|
|
import { Suspense } from "react";
|
|
import { createRoot } from "react-dom/client";
|
|
import "./i18n-config.ts";
|
|
import { router } from "@app/routes.tsx";
|
|
import { useAppStore, useMessageStore } from "@core/stores";
|
|
import { type createRouter, RouterProvider } from "@tanstack/react-router";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
declare module "@tanstack/react-router" {
|
|
interface Register {
|
|
router: ReturnType<typeof createRouter>;
|
|
}
|
|
}
|
|
const container = document.getElementById("root") as HTMLElement;
|
|
const root = createRoot(container);
|
|
|
|
function IndexPage() {
|
|
enableMapSet();
|
|
const appStore = useAppStore();
|
|
const messageStore = useMessageStore();
|
|
const translation = useTranslation();
|
|
|
|
const context = React.useMemo(
|
|
() => ({
|
|
stores: {
|
|
app: appStore,
|
|
message: messageStore,
|
|
},
|
|
i18n: translation,
|
|
}),
|
|
[appStore, messageStore, translation],
|
|
);
|
|
|
|
return (
|
|
<React.StrictMode>
|
|
<Suspense fallback={null}>
|
|
<RouterProvider router={router} context={context} />
|
|
</Suspense>
|
|
</React.StrictMode>
|
|
);
|
|
}
|
|
|
|
root.render(<IndexPage />);
|
|
|