@sanity/ui-workshop
Version:
An environment for designing, reviewing, and quality-testing React components.
118 lines (103 loc) • 2.54 kB
text/typescript
import {ElementType} from 'react'
import {ReactNode} from 'react'
/** @internal */
export declare 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 */
export declare function perfPlugin(): WorkshopPlugin
/** @internal */
export declare interface PerfState {
results: PerfTestResult[]
activeTest?: string
testDetails: PerfTestDetail[]
tests: PerfTest[]
}
/** @internal */
export declare interface PerfTest<TargetType = unknown> {
description?: string
name: string
title?: string
ref: React.MutableRefObject<TargetType | null>
run: PerfTestRunFn<TargetType>
}
/** @internal */
export declare interface PerfTestDetail {
description?: string
name: string
title?: string
}
/** @beta */
export declare interface PerfTestHookProps<TargetType = unknown> {
ref: React.MutableRefObject<TargetType | null>
Wrapper: React.ElementType<{
children?: React.ReactNode
}>
}
/** @beta */
export declare interface PerfTestProps<TargetType = unknown> {
description?: string
name: string
run: PerfTestRunFn<TargetType>
title?: string
}
/**
* @see React.ProfilerOnRenderCallback
* @internal
*/
export declare interface PerfTestRenderResult {
id: string
phase: 'mount' | 'update' | 'nested-update'
actualDuration: number
baseDuration: number
startTime: number
commitTime: number
/** @deprecated */
interactions: Set<{
__count: number
id: number
name: string
timestamp: number
}>
}
/** @internal */
export declare interface PerfTestResult {
name: string
renders: PerfTestRenderResult[]
timing?: {
avgDuration: number
sumDuration: number
runs: number
}
}
/** @beta */
export declare type PerfTestRunFn<TargetType = unknown> = (context: {
target: TargetType
}) => Promise<void> | void
/** @internal */
export declare function usePerf(): PerfContextValue
/** @beta */
export declare function usePerfTest<TargetType = unknown>(
props: PerfTestProps<TargetType>,
): PerfTestHookProps<TargetType>
/** @public */
declare interface WorkshopPlugin<Options = any> {
name: string
title: string
inspector?: ElementType<{
options: Options
}>
provider?: ElementType<{
children?: ReactNode
options: Options
}>
options?: Options
}
export {}