1
0
Fork 0
onnx-web/gui/src/main.tsx

44 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-01-05 19:42:52 +00:00
/* eslint-disable no-console */
2023-01-05 03:55:25 +00:00
import { mustExist } from '@apextoaster/js-utils';
import * as React from 'react';
import ReactDOM from 'react-dom/client';
import { QueryClient, QueryClientProvider } from 'react-query';
2023-01-05 03:55:25 +00:00
2023-01-05 19:42:52 +00:00
import { makeClient, STATUS_SUCCESS } from './api/client.js';
import { OnnxWeb } from './components/OnnxWeb.js';
export interface Config {
api: {
root: string;
2023-01-05 19:42:52 +00:00
};
}
export async function loadConfig(): Promise<Config> {
const configPath = new URL('./config.json', window.origin);
const configReq = await fetch(configPath);
2023-01-05 19:42:52 +00:00
if (configReq.status === STATUS_SUCCESS) {
return configReq.json();
} else {
throw new Error('could not load config');
}
}
export async function main() {
const config = await loadConfig();
const client = makeClient(config.api.root);
const query = new QueryClient();
2023-01-05 03:55:25 +00:00
const appElement = mustExist(document.getElementById('app'));
const app = ReactDOM.createRoot(appElement);
app.render(<QueryClientProvider client={query}>
<OnnxWeb client={client} />
</QueryClientProvider>);
2023-01-05 03:55:25 +00:00
}
window.addEventListener('load', () => {
console.log('launching onnx-web');
2023-01-05 19:42:52 +00:00
main().catch((err) => {
console.error('error in main', err);
});
}, false);