import { useContextKey } from '@kevisual/store/config';
import { QueryRouterServer } from '@kevisual/router';
import { createRoot } from 'react-dom/client';
import { List } from './pages/List';
import { List as UploadAppList } from './pages/upload-apps/List';
import { page } from './app';
import '@build/tailwind/main.css';
// import './tailwind.css';
export const initRoot = (renderRoot?: any) => {
return useContextKey('root', () => {
if (!renderRoot) {
console.error('renderRoot is required');
}
return createRoot(renderRoot);
});
};
export const render = ({ renderRoot }) => {
const root = initRoot(renderRoot);
root.render(
);
};
if (page) {
initRoot(document.getElementById('ai-root'));
page.addPage('/', 'home');
page.addPage('/local-apps', 'local-apps');
page.subscribe('local-apps', () => {
const root = initRoot();
root.render(
);
});
page.addPage('/upload-apps', 'upload-apps');
page.subscribe('upload-apps', () => {
const root = initRoot();
root.render();
});
page.subscribe('home', () => {
page.navigate('/local-apps');
});
}
const app = useContextKey('app', () => {
console.error('app not found');
return null as unknown as QueryRouterServer;
});
if (app) {
app
.route({
path: 'show-home',
key: 'render',
})
.define(async (ctx) => {
let { renderRoot } = ctx.query;
if (!renderRoot) {
ctx.throw(404, 'renderRoot is required');
}
if (typeof renderRoot === 'string') {
renderRoot = document.querySelector(renderRoot);
}
if (!renderRoot) {
ctx.throw(404, 'renderRoot not found');
}
render({
renderRoot,
});
})
.addTo(app);
}