Files
Cody BrittainandGitHub bcd29944b7 Prettier update (#21722)
No player-facing changes.

Ports several PRs from tgstation, including:

https://github.com/tgstation/tgstation/pull/66862
https://github.com/tgstation/tgstation/pull/80189
https://github.com/tgstation/tgstation/pull/90317
https://github.com/tgstation/tgstation/pull/91379

In addition, removes IntelliCode from the recommended extensions. This
is deprecated, and we prefer not to force the replacement onto
contributors. Contributors may individually choose to use this instead.
2026-01-28 07:16:34 +00:00

68 lines
1.8 KiB
TypeScript

import { perf } from 'common/perf';
import { render } from 'inferno';
import { createLogger } from './logging';
const logger = createLogger('renderer');
let reactRoot: any;
let initialRender: string | boolean = true;
let suspended = false;
// These functions are used purely for profiling.
export const resumeRenderer = () => {
initialRender = initialRender || 'resumed';
suspended = false;
};
export const suspendRenderer = () => {
suspended = true;
};
type CreateRenderer = <T extends unknown[] = [unknown]>(
getVNode?: (...args: T) => any,
) => (...args: T) => void;
// prettier-ignore
export const createRenderer: CreateRenderer = (getVNode) => (...args) => {
perf.mark('render/start');
// Start rendering
if (!reactRoot) {
reactRoot = document.getElementById('react-root');
}
if (getVNode) {
render(getVNode(...args), reactRoot);
}
else {
render(args[0] as any, reactRoot);
}
perf.mark('render/finish');
if (suspended) {
return;
}
// Report rendering time
if (process.env.NODE_ENV !== 'production') {
if (initialRender === 'resumed') {
logger.log('rendered in',
perf.measure('render/start', 'render/finish'));
}
else if (initialRender) {
logger.debug('serving from:', location.href);
logger.debug('bundle entered in',
perf.measure('inception', 'init'));
logger.debug('initialized in',
perf.measure('init', 'render/start'));
logger.log('rendered in',
perf.measure('render/start', 'render/finish'));
logger.log('fully loaded in',
perf.measure('inception', 'render/finish'));
}
else {
logger.debug('rendered in',
perf.measure('render/start', 'render/finish'));
}
}
if (initialRender) {
initialRender = false;
}
};