From 28dac6108f483f24705e081cb99295ba211002b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Tue, 4 Apr 2023 06:34:55 -0700 Subject: [PATCH] Implement ReactNativePrivateInterface.createPublicTextInstance Summary: This exposes a new method in the private interface used by React so we can merge https://github.com/facebook/react/pull/26516 We're adding support for text instances in React Native (as defined in https://github.com/react-native-community/discussions-and-proposals/pull/607). See D44632362 for the full implementation. Changelog: [internal] bypass-github-export-checks Reviewed By: sammy-SC Differential Revision: D44663223 fbshipit-source-id: 70ca3ca9d2edefaa73a396f43c2d560c6d1422f1 --- .../ReactFabricPublicInstance/ReactFabricPublicInstance.js | 7 +++++++ .../Libraries/ReactPrivate/ReactNativePrivateInterface.js | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js b/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js index dd010f27a986c0..93253d4e702056 100644 --- a/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +++ b/packages/react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js @@ -178,6 +178,13 @@ export function createPublicInstance( return new ReactFabricHostComponent(tag, viewConfig, internalInstanceHandle); } +export function createPublicTextInstance(internalInstanceHandle: mixed): {} { + // React will call this method to create text instances but we'll return an + // empty object for now. These instances are only created lazily when + // traversing the tree, and that's not enabled yet. + return {}; +} + export function getNativeTagFromPublicInstance( publicInstance: ReactFabricHostComponent, ): number { diff --git a/packages/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js b/packages/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js index 69a1709b60a02d..7fa27171826753 100644 --- a/packages/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js +++ b/packages/react-native/Libraries/ReactPrivate/ReactNativePrivateInterface.js @@ -18,6 +18,7 @@ import typeof RCTEventEmitter from '../EventEmitter/RCTEventEmitter'; import typeof CustomEvent from '../Events/CustomEvent'; import typeof { createPublicInstance, + createPublicTextInstance, getNativeTagFromPublicInstance, getNodeFromPublicInstance, } from '../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance'; @@ -94,6 +95,10 @@ module.exports = { return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance') .createPublicInstance; }, + get createPublicTextInstance(): createPublicTextInstance { + return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance') + .createPublicTextInstance; + }, get getNativeTagFromPublicInstance(): getNativeTagFromPublicInstance { return require('../ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance') .getNativeTagFromPublicInstance;