prasi-bun/app/web/src/index.tsx

45 lines
1.2 KiB
TypeScript

import { Root as ReactRoot, createRoot } from "react-dom/client";
import { defineReact, defineWindow } from "web-utils";
import { apiProxy } from "./base/load/api/api-proxy";
import { loadApiProxyDef } from "./base/load/api/api-proxy-def";
import { dbProxy } from "./base/load/db/db-proxy";
import { Root } from "./base/root";
import "./index.css";
import { registerMobile } from "./render/live/logic/mobile";
import { sworkerAddCache, sworkerRegister } from "./sworker-boot";
import { w } from "./utils/types/general";
const start = async () => {
let react = {
root: null as null | ReactRoot,
};
w.mobile = registerMobile();
const cur = new URL(w.basehost || location.href);
const base_url = `${cur.protocol}//${cur.host}`;
w._db = dbProxy(base_url);
try {
await loadApiProxyDef(base_url, false);
w._api = apiProxy(base_url);
} catch (e) {
console.warn("Failed to load API:", base_url);
}
w.serverurl = base_url;
sworkerRegister(react);
defineReact();
await defineWindow(false);
sworkerAddCache(base_url);
const el = document.getElementById("root");
if (el) {
react.root = createRoot(el);
react.root.render(<Root />);
}
};
start();