* Change to using arrow functions Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> * Add lint rule --------- Co-authored-by: v1b3m <vibenjamin6@gmail.com> Co-authored-by: Matheus <matheus_benini@hotmail.com> Co-authored-by: Charles Bochet <charles@twenty.com>
43 lines
811 B
TypeScript
43 lines
811 B
TypeScript
import { Profiler } from 'react';
|
|
import { Interaction } from 'scheduler/tracing';
|
|
|
|
type OwnProps = {
|
|
id: string;
|
|
children: React.ReactNode;
|
|
};
|
|
|
|
export const TimingProfiler = ({ id, children }: OwnProps) => {
|
|
const handleRender = (
|
|
id: string,
|
|
phase: 'mount' | 'update',
|
|
actualDuration: number,
|
|
baseDuration: number,
|
|
startTime: number,
|
|
commitTime: number,
|
|
interactions: Set<Interaction>,
|
|
) => {
|
|
console.debug(
|
|
'TimingProfiler',
|
|
JSON.stringify(
|
|
{
|
|
id,
|
|
phase,
|
|
actualDuration,
|
|
baseDuration,
|
|
startTime,
|
|
commitTime,
|
|
interactions,
|
|
},
|
|
null,
|
|
2,
|
|
),
|
|
);
|
|
};
|
|
|
|
return (
|
|
<Profiler id={id} onRender={handleRender}>
|
|
{children}
|
|
</Profiler>
|
|
);
|
|
};
|