bippy
Version:
hack into react internals
74 lines (73 loc) • 3.4 kB
TypeScript
import { BundleType, ComponentSelector, DevToolsConfig, Fiber, FiberRoot, Flags, HasPseudoClassSelector, HookType, HostConfig, LanePriority, Lanes, MutableSource, OpaqueHandle, OpaqueRoot, React$AbstractComponent, ReactConsumer, ReactContext, ReactPortal, ReactProvider, ReactProviderType, RefObject, RoleSelector, RootTag, Selector, Source, SuspenseHydrationCallbacks, TestNameSelector, TextSelector, Thenable, TransitionTracingCallbacks, TypeOfMode, WorkTag } from "react-reconciler";
//#region src/types.d.ts
interface ReactDevToolsGlobalHook {
checkDCE: (fn: unknown) => void;
supportsFiber: boolean;
supportsFlight: boolean;
renderers: Map<number, ReactRenderer>;
hasUnsupportedRendererAttached: boolean;
onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: void | number) => void;
onCommitFiberUnmount: (rendererID: number, fiber: Fiber$1) => void;
onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
inject: (renderer: ReactRenderer) => number;
_instrumentationSource?: string;
_instrumentationIsActive?: boolean;
_sw?: boolean;
}
/**
* Represents a react-internal Fiber node.
*/
type Fiber$1<T = any> = Omit<Fiber, 'stateNode' | 'dependencies' | 'child' | 'sibling' | 'return' | 'alternate' | 'memoizedProps' | 'pendingProps' | 'memoizedState' | 'updateQueue'> & {
stateNode: T;
dependencies: Dependencies | null;
child: Fiber$1 | null;
sibling: Fiber$1 | null;
return: Fiber$1 | null;
alternate: Fiber$1 | null;
memoizedProps: Props;
pendingProps: Props;
memoizedState: MemoizedState;
updateQueue: {
lastEffect: Effect | null;
[key: string]: unknown;
};
};
interface ReactRenderer {
version: string;
bundleType: 0 | 1;
currentDispatcherRef: React.RefObject<unknown>;
findFiberByHostInstance?: (hostInstance: unknown) => Fiber$1 | null;
overrideHookState?: (fiber: Fiber$1, id: string, path: string[], value: unknown) => void;
overrideProps?: (fiber: Fiber$1, path: string[], value: unknown) => void;
overrideContext?: (fiber: Fiber$1, contextType: unknown, path: string[], value: unknown) => void;
}
interface ContextDependency<T> {
context: ReactContext<T>;
memoizedValue: T;
observedBits: number;
next: ContextDependency<unknown> | null;
}
interface Dependencies {
lanes: Lanes;
firstContext: ContextDependency<unknown> | null;
}
interface Effect {
next: Effect | null;
create: (...args: unknown[]) => unknown;
destroy: ((...args: unknown[]) => unknown) | null;
deps: unknown[] | null;
tag: number;
[key: string]: unknown;
}
interface MemoizedState {
memoizedState: unknown;
next: MemoizedState | null;
[key: string]: unknown;
}
interface Props {
[key: string]: unknown;
}
declare global {
var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
} //#endregion
export { BundleType, ComponentSelector, ContextDependency, Dependencies, DevToolsConfig, Effect, Fiber$1 as Fiber, FiberRoot, Flags, HasPseudoClassSelector, HookType, HostConfig, LanePriority, Lanes, MemoizedState, MutableSource, OpaqueHandle, OpaqueRoot, Props, React$AbstractComponent, ReactConsumer, ReactContext, ReactDevToolsGlobalHook, ReactPortal, ReactProvider, ReactProviderType, ReactRenderer, RefObject, RoleSelector, RootTag, Selector, Source, SuspenseHydrationCallbacks, TestNameSelector, TextSelector, Thenable, TransitionTracingCallbacks, TypeOfMode, WorkTag };