Skip to content

Commit 6d4abbf

Browse files
rubennortefacebook-github-bot
authored andcommitted
Expose renderer through unstable internals (#58618)
Summary: Expose the renderer proxy as `Renderer` from `react-native/unstable-internals-do-not-use`. Generated Codegen modules can be emitted into consumer packages and need a package entry point for dispatching renderer commands without deep imports. Changelog: [Internal] Reviewed By: cipolleschi Differential Revision: D120991150
1 parent 5e6c552 commit 6d4abbf

3 files changed

Lines changed: 68 additions & 0 deletions

File tree

‎packages/react-native/src/unstable-internals-do-not-use.d.ts‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
// ----------------------------------------------------------------------------
1515

1616
import type * as React from 'react';
17+
import type {ColorValue} from '../types_generated/Libraries/StyleSheet/StyleSheet';
18+
import type {ProcessedColorValue} from '../types_generated/Libraries/StyleSheet/processColor';
1719

1820
// #region AppContainer
1921

@@ -212,3 +214,41 @@ interface PressabilityDebugViewProps {
212214
export const PressabilityDebugView: React.ComponentType<PressabilityDebugViewProps>;
213215

214216
// #endregion
217+
// #region Renderer
218+
219+
/** Renderer APIs used by generated Codegen modules. */
220+
export * as Renderer from '../types_generated/Libraries/ReactNative/RendererImplementation';
221+
222+
// #endregion
223+
// #region Codegen view config helpers
224+
225+
export const colorAttribute:
226+
| true
227+
| Readonly<{
228+
process: typeof import('../types_generated/Libraries/StyleSheet/processColor').default;
229+
}>;
230+
231+
export function processColorArray(
232+
colors: ReadonlyArray<ColorValue> | null | undefined,
233+
): ReadonlyArray<ProcessedColorValue> | null;
234+
235+
type Point = {
236+
x: number | null | undefined;
237+
y: number | null | undefined;
238+
};
239+
240+
export function pointsDiffer(
241+
one: Point | null | undefined,
242+
two: Point | null | undefined,
243+
): boolean;
244+
245+
type EdgeInsets = {
246+
top: number | null | undefined;
247+
left: number | null | undefined;
248+
right: number | null | undefined;
249+
bottom: number | null | undefined;
250+
};
251+
252+
export function insetsDiffer(one: EdgeInsets, two: EdgeInsets): boolean;
253+
254+
// #endregion

‎packages/react-native/src/unstable-internals-do-not-use.js‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,20 @@
4040
// and unstable-internals-do-not-use.js.flow.
4141
// ----------------------------------------------------------------------------
4242

43+
import typeof {colorAttribute} from '../Libraries/Components/View/ReactNativeStyleAttributes';
4344
import typeof getDevServer from '../Libraries/Core/Devtools/getDevServer';
4445
import typeof NativeExceptionsManager from '../Libraries/Core/NativeExceptionsManager';
4546
import typeof AssetSourceResolver from '../Libraries/Image/AssetSourceResolver';
4647
import typeof NativeRedBox from '../Libraries/NativeModules/specs/NativeRedBox';
4748
import typeof NativeSourceCode from '../Libraries/NativeModules/specs/NativeSourceCode';
4849
import typeof {PressabilityDebugView} from '../Libraries/Pressability/PressabilityDebug';
4950
import typeof AppContainer from '../Libraries/ReactNative/AppContainer';
51+
import typeof * as Renderer from '../Libraries/ReactNative/RendererProxy';
5052
import typeof {customDirectEventTypes} from '../Libraries/Renderer/shims/ReactNativeViewConfigRegistry';
53+
import typeof processColorArray from '../Libraries/StyleSheet/processColorArray';
5154
import typeof DevLoadingView from '../Libraries/Utilities/DevLoadingView';
55+
import typeof insetsDiffer from '../Libraries/Utilities/differ/insetsDiffer';
56+
import typeof pointsDiffer from '../Libraries/Utilities/differ/pointsDiffer';
5257
import typeof HMRClient from '../Libraries/Utilities/HMRClient';
5358

5459
// flowlint unsafe-getters-setters:off
@@ -86,4 +91,22 @@ module.exports = {
8691
return require('../Libraries/Pressability/PressabilityDebug')
8792
.PressabilityDebugView;
8893
},
94+
// Generated Codegen modules can be emitted outside this package, so they
95+
// cannot use package-relative imports to access these implementations.
96+
get colorAttribute(): colorAttribute {
97+
return require('../Libraries/Components/View/ReactNativeStyleAttributes')
98+
.colorAttribute;
99+
},
100+
get insetsDiffer(): insetsDiffer {
101+
return require('../Libraries/Utilities/differ/insetsDiffer').default;
102+
},
103+
get pointsDiffer(): pointsDiffer {
104+
return require('../Libraries/Utilities/differ/pointsDiffer').default;
105+
},
106+
get processColorArray(): processColorArray {
107+
return require('../Libraries/StyleSheet/processColorArray').default;
108+
},
109+
get Renderer(): Renderer {
110+
return require('../Libraries/ReactNative/RendererProxy');
111+
},
89112
};

‎packages/react-native/src/unstable-internals-do-not-use.js.flow‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
export {default as AppContainer} from '../Libraries/ReactNative/AppContainer';
1818
export {default as AssetSourceResolver} from '../Libraries/Image/AssetSourceResolver';
19+
export {colorAttribute} from '../Libraries/Components/View/ReactNativeStyleAttributes';
1920
export {customDirectEventTypes} from '../Libraries/Renderer/shims/ReactNativeViewConfigRegistry';
2021
export {default as DevLoadingView} from '../Libraries/Utilities/DevLoadingView';
2122
export {default as getDevServer} from '../Libraries/Core/Devtools/getDevServer';
@@ -24,3 +25,7 @@ export {default as NativeExceptionsManager} from '../Libraries/Core/NativeExcept
2425
export {default as NativeRedBox} from '../Libraries/NativeModules/specs/NativeRedBox';
2526
export {default as NativeSourceCode} from '../Libraries/NativeModules/specs/NativeSourceCode';
2627
export {PressabilityDebugView} from '../Libraries/Pressability/PressabilityDebug';
28+
export {default as insetsDiffer} from '../Libraries/Utilities/differ/insetsDiffer';
29+
export {default as pointsDiffer} from '../Libraries/Utilities/differ/pointsDiffer';
30+
export {default as processColorArray} from '../Libraries/StyleSheet/processColorArray';
31+
export * as Renderer from '../Libraries/ReactNative/RendererProxy';

0 commit comments

Comments
 (0)