UNPKG

react-native-screens

Version:
40 lines (34 loc) 1.08 kB
import { NativeStackNavigatorProps } from '../native-stack/types'; interface HostInstance { _internalInstanceHandle: { stateNode: { node: Record<string, unknown>; }; }; _nativeTag: number; } type LocalGlobal = typeof global & Record<string, unknown>; export function isFabric() { return !!(global as LocalGlobal)._IS_FABRIC; } let findHostInstance: (ref: React.Component) => HostInstance | null = () => { return null; }; if (isFabric()) { try { findHostInstance = // eslint-disable-next-line @typescript-eslint/no-var-requires require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED; } catch (e) { throw new Error('[RNScreens] Cannot import `findHostInstance_DEPRECATED`.'); } } export function getShadowNodeWrapperAndTagFromRef( ref: React.Ref<NativeStackNavigatorProps> | React.Component ) { const hostInstance = findHostInstance(ref as React.Component); return { shadowNodeWrapper: hostInstance?._internalInstanceHandle.stateNode.node, tag: hostInstance?._nativeTag, }; }