/* ============================================================
IBC Labs — App Router
============================================================ */
function parseHash() {
let h = window.location.hash.replace(/^#\/?/, "");
return h || "home";
}
function App() {
const [route, setRoute] = React.useState(parseHash());
React.useEffect(() => {
const onHash = () => setRoute(parseHash());
window.addEventListener("hashchange", onHash);
return () => window.removeEventListener("hashchange", onHash);
}, []);
// navigate handler used by all Link components
React.useEffect(() => {
window.IBC.navigate = (path) => {
if (parseHash() === path) {
window.scrollTo({ top: 0, behavior: "smooth" });
} else {
window.location.hash = "/" + path;
}
};
}, []);
// scroll to top on route change
React.useEffect(() => { window.scrollTo({ top: 0 }); }, [route]);
const [top, sub] = route.split("/");
let view;
switch (top) {
case "home": view = ; break;
case "about": view = ; break;
case "research":
view = sub ? : ;
break;
case "methodologies": view = ; break;
case "concepts": view = ; break;
case "problem": view = ; break;
case "notes": view = ; break;
case "contact": view = ; break;
default: view = ;
}
return (
{view}
);
}
ReactDOM.createRoot(document.getElementById("root")).render();