import { ConfigProvider, theme } from "antd"; import zhTW from "antd/locale/zh_TW"; import dayjs from "dayjs"; import "dayjs/locale/zh-tw"; import React from "react"; import ReactDOM from "react-dom/client"; import { createBrowserRouter, RouterProvider } from "react-router-dom"; import { BaseEnumerator } from "./Engine/CatanEngine/CoroutineV2/Core/BaseEnumerator"; import { GameItemsProvider } from "@/context/GameItemsContext"; import Lobby from "./UI/Lobby"; import Login from "./UI/Login"; import { ModalProvider } from "./UIControl/ModalContext"; // utils import "@/FormTableExt/TableExt/CSSettingsV3Ext"; import "@/utils/ArrayExtension"; import "@/utils/catan"; import "@/utils/NumberExtension"; import "@/utils/String"; import "./index.css"; // 初始化 BaseEnumerator BaseEnumerator.Init(); // 設定 dayjs 語言 dayjs.locale("zh-tw"); // 依目前網址推導部署子路徑(專案不一定放在網站根目錄,例如 /Line_Project_Bot/) function getBasename(): string { let path: string = location.pathname.replace(/index\.html$/, ""); // 去除已知路由字尾,避免在 /lobby 重新整理時把路由誤當成資料夾 path = path.replace(/lobby\/?$/, ""); if (!path.endsWith("/")) { path += "/"; } return path; } // 路由設定 const router = createBrowserRouter([ { path: "/", element: }, { path: "/lobby", element: }, ], { basename: getBasename() }); // Render // 注意:不能用 React.StrictMode — 開發模式雙重掛載會讓 NetManagerSD 等靜態單例的連線互相覆蓋 ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( <> );