import { lazy, Suspense } from "react";
import { createRoot } from "react-dom/client";
import { Capacitor } from "@capacitor/core";
import App from "./App";
import { startControllerInput } from "./input/controller";
import { currentDisplayLayout } from "./platform/displayLayout";
import { initializeContentSystem } from "./content/contentManager";
import "./styles.css";
import "./ui/dungeonReports.css";
const BottomDisplayApp = lazy(() => import("./platform/BottomDisplayApp").then((module) => ({ default: module.BottomDisplayApp })));
const params = new URLSearchParams(window.location.search);
const displayMode = params.get("display");
const nativeLayoutRequested = params.has("nativeLayout");
if (Capacitor.isNativePlatform() || nativeLayoutRequested) document.documentElement.classList.add("native-platform");
if (displayMode === "top" || displayMode === "bottom") document.documentElement.dataset.displaySurface = displayMode;
document.documentElement.dataset.displayLayout = currentDisplayLayout();
startControllerInput();
void initializeContentSystem();
// React's development StrictMode replays effect cleanup immediately after the
// first mount. The installed R3F Canvas cleanup schedules a forced WebGL
// context loss 500 ms later, even after the live canvas has been reactivated.
// Keep the game root single-mounted so that teardown cannot blank a live scene.
createRoot(document.getElementById("root")!).render(
displayMode === "bottom"
?
: ,
);