@sanity/ui-workshop
Version:
An environment for designing, reviewing, and quality-testing React components.
88 lines • 2.4 kB
TypeScript
import { WorkshopPlugin } from "@sanity/ui-workshop";
/** @beta */
type PerfTestRunFn<TargetType = unknown> = (context: {
target: TargetType;
}) => Promise<void> | void;
/** @internal */
interface PerfTest<TargetType = unknown> {
description?: string;
name: string;
title?: string;
ref: React.MutableRefObject<TargetType | null>;
run: PerfTestRunFn<TargetType>;
}
/** @internal */
interface PerfTestResult {
name: string;
renders: PerfTestRenderResult[];
timing?: {
avgDuration: number;
sumDuration: number;
runs: number;
};
}
/** @internal */
interface PerfTestDetail {
description?: string;
name: string;
title?: string;
}
/**
* @see React.ProfilerOnRenderCallback
* @internal
*/
interface PerfTestRenderResult {
id: string;
phase: 'mount' | 'update' | 'nested-update';
actualDuration: number;
baseDuration: number;
startTime: number;
commitTime: number;
/** @deprecated - this will be removed in the next major version */
interactions: Set<{
__count: number;
id: number;
name: string;
timestamp: number;
}>;
}
/** @internal */
interface PerfState {
results: PerfTestResult[];
activeTest?: string;
testDetails: PerfTestDetail[];
tests: PerfTest[];
}
/** @internal */
interface PerfContextValue {
activeTest?: string;
addRenderResult: (testName: string, result: PerfTestRenderResult) => void;
clearResults: (testName: string) => void;
registerTest: (test: PerfTest) => () => void;
results: PerfTestResult[];
runTest: (testName: string) => void;
testDetails: PerfTestDetail[];
tests: PerfTest[];
}
/** @internal */
/** @internal */
declare function usePerf(): PerfContextValue;
/** @beta */
interface PerfTestHookProps<TargetType = unknown> {
ref: React.MutableRefObject<TargetType | null>;
Wrapper: React.ElementType<{
children?: React.ReactNode;
}>;
}
/** @beta */
interface PerfTestProps<TargetType = unknown> {
description?: string;
name: string;
run: PerfTestRunFn<TargetType>;
title?: string;
}
/** @beta */
declare function usePerfTest<TargetType = unknown>(props: PerfTestProps<TargetType>): PerfTestHookProps<TargetType>;
/** @internal */
declare function perfPlugin(): WorkshopPlugin;
export { type PerfContextValue, PerfState, PerfTest, PerfTestDetail, PerfTestHookProps, PerfTestProps, PerfTestRenderResult, PerfTestResult, PerfTestRunFn, perfPlugin, usePerf, usePerfTest };