import { PageLoader } from "@allurereport/web-components";
import "@allurereport/web-components/index.css";
import { render } from "preact";
import { useEffect, useMemo } from "preact/compat";
import "@/assets/scss/index.scss";
import { BaseLayout } from "@/components/BaseLayout";
import Behaviors from "@/components/Behaviors";
import Categories from "@/components/Categories";
import Graphs from "@/components/Graphs";
import Overview from "@/components/Overview";
import Packages from "@/components/Packages";
import Suites from "@/components/Suites";
import { TestResultView } from "@/components/TestResultView";
import Timeline from "@/components/Timeline";
import { currentLocale, getLocale } from "@/stores";
import { handleHashChange, route } from "@/stores/router";
const tabComponents = {
overview: Overview,
behaviors: Behaviors,
categories: Categories,
graphs: Graphs,
packages: Packages,
suites: Suites,
timeline: Timeline,
testresult: TestResultView,
};
const App = () => {
useEffect(() => {
getLocale();
handleHashChange();
}, []);
useEffect(() => {
globalThis.addEventListener("hashchange", handleHashChange);
return () => {
globalThis.removeEventListener("hashchange", handleHashChange);
};
}, []);
const ActiveComponent = useMemo(
() => tabComponents[route.value.tabName] || (() => null),
// oxlint-disable-next-line eslint-plugin-react-hooks/exhaustive-deps
[route.value.tabName],
);
if (!currentLocale.value) {
return ;
}
return (
);
};
const rootElement = document.getElementById("app");
(async () => {
render(, rootElement);
})();