import { useEffect, useReducer } from 'react' import { findInTree } from './tree' import type { ReactElement } from 'react' import type { SearchFilter } from './tree' export function useIsFirstRender() { let firstRender = false useEffect(() => { firstRender = true }, []) return firstRender } export function useReRender() { const [, forceUpdate] = useReducer(x => ~x, 0) return forceUpdate } const ReactFiberWalkable = new Set(['props', 'children', 'child', 'sibling']) export function findInReactFiber( fiber: ReactElement, filter: F, ) { return findInTree(fiber, filter, { walkable: ReactFiberWalkable, }) }