mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
79 lines
1.9 KiB
TypeScript
79 lines
1.9 KiB
TypeScript
/**
|
|
* @file
|
|
* @copyright 2020 Aleksej Komarov
|
|
* @license MIT
|
|
*/
|
|
|
|
// Themes
|
|
import './styles/main.scss';
|
|
import './styles/themes/abductor.scss';
|
|
import './styles/themes/cardtable.scss';
|
|
import './styles/themes/hackerman.scss';
|
|
import './styles/themes/malfunction.scss';
|
|
import './styles/themes/neutral.scss';
|
|
import './styles/themes/ntos.scss';
|
|
import './styles/themes/paper.scss';
|
|
import './styles/themes/pda-retro.scss';
|
|
import './styles/themes/retro.scss';
|
|
import './styles/themes/syndicate.scss';
|
|
import './styles/themes/wizard.scss';
|
|
import './styles/themes/abstract.scss';
|
|
|
|
import { StoreProvider, configureStore } from './store';
|
|
|
|
import { captureExternalLinks } from './links';
|
|
import { createRenderer } from './renderer';
|
|
import { perf } from 'common/perf';
|
|
import { setupGlobalEvents } from './events';
|
|
import { setupHotKeys } from './hotkeys';
|
|
import { setupHotReloading } from 'tgui-dev-server/link/client.cjs';
|
|
|
|
perf.mark('inception', window.performance?.timing?.navigationStart);
|
|
perf.mark('init');
|
|
|
|
const store = configureStore();
|
|
|
|
const renderApp = createRenderer(() => {
|
|
const { getRoutedComponent } = require('./routes');
|
|
const Component = getRoutedComponent(store);
|
|
return (
|
|
<StoreProvider store={store}>
|
|
<Component />
|
|
</StoreProvider>
|
|
);
|
|
});
|
|
|
|
const setupApp = () => {
|
|
// Delay setup
|
|
if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', setupApp);
|
|
return;
|
|
}
|
|
|
|
setupGlobalEvents();
|
|
setupHotKeys();
|
|
captureExternalLinks();
|
|
|
|
// Re-render UI on store updates
|
|
store.subscribe(renderApp);
|
|
|
|
// Dispatch incoming messages as store actions
|
|
Byond.subscribe((type, payload) => store.dispatch({ type, payload }));
|
|
|
|
// Enable hot module reloading
|
|
if (module.hot) {
|
|
setupHotReloading();
|
|
// prettier-ignore
|
|
module.hot.accept([
|
|
'./components',
|
|
'./debug',
|
|
'./layouts',
|
|
'./routes',
|
|
], () => {
|
|
renderApp();
|
|
});
|
|
}
|
|
};
|
|
|
|
setupApp();
|