diff --git a/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js b/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js index 7ddad94e8ec..b7a06c89ed7 100644 --- a/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +++ b/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js @@ -20,7 +20,7 @@ import type { import type {ElementRef} from 'react'; import TextInputState from '../../Components/TextInput/TextInputState'; -import {getNodeFromInternalInstanceHandle} from '../../Renderer/shims/ReactFabric'; +import {getNodeFromInternalInstanceHandle} from '../../ReactNative/RendererProxy'; import {getFabricUIManager} from '../FabricUIManager'; import {create} from './ReactNativeAttributePayload'; import warnForStyleProps from './warnForStyleProps'; diff --git a/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js b/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js index ff9687732db..fe71cec166e 100644 --- a/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +++ b/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js @@ -15,7 +15,7 @@ import type ReactNativeElement from '../../../src/private/webapis/dom/nodes/ReactNativeElement'; import type ReadOnlyText from '../../../src/private/webapis/dom/nodes/ReadOnlyText'; -import typeof ReactFabricType from '../../Renderer/shims/ReactFabric'; +import typeof * as RendererProxyT from '../../ReactNative/RendererProxy'; import type { InternalInstanceHandle, Node, @@ -32,7 +32,7 @@ let PublicInstanceClass: let ReadOnlyTextClass: Class; // Lazy loaded to avoid evaluating the module when using the legacy renderer. -let ReactFabric: ReactFabricType; +let RendererProxy: RendererProxyT; export function createPublicInstance( tag: number, @@ -78,10 +78,10 @@ export function getNodeFromPublicInstance( return null; } - if (ReactFabric == null) { - ReactFabric = require('../../Renderer/shims/ReactFabric'); + if (RendererProxy == null) { + RendererProxy = require('../../ReactNative/RendererProxy'); } - return ReactFabric.getNodeFromInternalInstanceHandle( + return RendererProxy.getNodeFromInternalInstanceHandle( publicInstance.__internalInstanceHandle, ); } diff --git a/packages/react-native/Libraries/ReactNative/RendererImplementation.js b/packages/react-native/Libraries/ReactNative/RendererImplementation.js index 2ba6ef04c83..7a9faac5ac7 100644 --- a/packages/react-native/Libraries/ReactNative/RendererImplementation.js +++ b/packages/react-native/Libraries/ReactNative/RendererImplementation.js @@ -8,7 +8,11 @@ * @flow strict-local */ -import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; +import type { + HostComponent, + InternalInstanceHandle, + Node, +} from '../Renderer/shims/ReactNativeTypes'; import type ReactFabricHostComponent from './ReactFabricPublicInstance/ReactFabricHostComponent'; import type {Element, ElementRef, ElementType} from 'react'; @@ -139,3 +143,21 @@ export function isChildPublicInstance( childInstance, ); } + +export function getNodeFromInternalInstanceHandle( + internalInstanceHandle: InternalInstanceHandle, +): ?Node { + // This is only available in Fabric + return require('../Renderer/shims/ReactFabric').getNodeFromInternalInstanceHandle( + internalInstanceHandle, + ); +} + +export function getPublicInstanceFromInternalInstanceHandle( + internalInstanceHandle: InternalInstanceHandle, +): mixed /*PublicInstance | PublicTextInstance | null*/ { + // This is only available in Fabric + return require('../Renderer/shims/ReactFabric').getPublicInstanceFromInternalInstanceHandle( + internalInstanceHandle, + ); +} diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index a4bff2c9f5c..e92361bd8cd 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -7548,6 +7548,12 @@ declare export function isChildPublicInstance( parentInstance: ReactFabricHostComponent | HostComponent, childInstance: ReactFabricHostComponent | HostComponent ): boolean; +declare export function getNodeFromInternalInstanceHandle( + internalInstanceHandle: InternalInstanceHandle +): ?Node; +declare export function getPublicInstanceFromInternalInstanceHandle( + internalInstanceHandle: InternalInstanceHandle +): mixed; " `; diff --git a/packages/react-native/src/private/webapis/dom/nodes/ReadOnlyNode.js b/packages/react-native/src/private/webapis/dom/nodes/ReadOnlyNode.js index e86862d6c6b..e368332a252 100644 --- a/packages/react-native/src/private/webapis/dom/nodes/ReadOnlyNode.js +++ b/packages/react-native/src/private/webapis/dom/nodes/ReadOnlyNode.js @@ -304,8 +304,10 @@ function setInstanceHandle( export function getShadowNode(node: ReadOnlyNode): ?ShadowNode { // Lazy import Fabric here to avoid DOM Node APIs classes from having side-effects. // With a static import we can't use these classes for Paper-only variants. - const ReactFabric = require('../../../../../Libraries/Renderer/shims/ReactFabric'); - return ReactFabric.getNodeFromInternalInstanceHandle(getInstanceHandle(node)); + const RendererProxy = require('../../../../../Libraries/ReactNative/RendererProxy'); + return RendererProxy.getNodeFromInternalInstanceHandle( + getInstanceHandle(node), + ); } export function getChildNodes( @@ -349,9 +351,9 @@ export function getPublicInstanceFromInternalInstanceHandle( ): ?ReadOnlyNode { // Lazy import Fabric here to avoid DOM Node APIs classes from having side-effects. // With a static import we can't use these classes for Paper-only variants. - const ReactFabric = require('../../../../../Libraries/Renderer/shims/ReactFabric'); + const RendererProxy = require('../../../../../Libraries/ReactNative/RendererProxy'); const mixedPublicInstance = - ReactFabric.getPublicInstanceFromInternalInstanceHandle(instanceHandle); + RendererProxy.getPublicInstanceFromInternalInstanceHandle(instanceHandle); // $FlowExpectedError[incompatible-return] React defines public instances as "mixed" because it can't access the definition from React Native. return mixedPublicInstance; }