diff --git a/packages/react-native/src/unstable-internals-do-not-use.d.ts b/packages/react-native/src/unstable-internals-do-not-use.d.ts index 6c1f3bf54c40..6ca8ac9f1a01 100644 --- a/packages/react-native/src/unstable-internals-do-not-use.d.ts +++ b/packages/react-native/src/unstable-internals-do-not-use.d.ts @@ -14,6 +14,8 @@ // ---------------------------------------------------------------------------- import type * as React from 'react'; +import type {ColorValue} from '../types_generated/Libraries/StyleSheet/StyleSheet'; +import type {ProcessedColorValue} from '../types_generated/Libraries/StyleSheet/processColor'; // #region AppContainer @@ -64,6 +66,17 @@ export class AssetSourceResolver { static pickScale(scales: number[], deviceScale?: number): number; } +// #endregion +// #region ConditionallyIgnoredEventHandlers + +/** + * Marks generated event-handler view-config attributes as conditionally + * ignored on platforms that do not synthesize them from native view managers. + */ +export function ConditionallyIgnoredEventHandlers< + T extends Readonly>, +>(value: T): T | undefined; + // #endregion // #region customDirectEventTypes @@ -212,3 +225,41 @@ interface PressabilityDebugViewProps { export const PressabilityDebugView: React.ComponentType; // #endregion +// #region Renderer + +/** Renderer APIs used by generated Codegen modules. */ +export * as Renderer from '../types_generated/Libraries/ReactNative/RendererImplementation'; + +// #endregion +// #region Codegen view config helpers + +export const colorAttribute: + | true + | Readonly<{ + process: typeof import('../types_generated/Libraries/StyleSheet/processColor').default; + }>; + +export function processColorArray( + colors: ReadonlyArray | null | undefined, +): ReadonlyArray | null; + +type Point = { + x: number | null | undefined; + y: number | null | undefined; +}; + +export function pointsDiffer( + one: Point | null | undefined, + two: Point | null | undefined, +): boolean; + +type EdgeInsets = { + top: number | null | undefined; + left: number | null | undefined; + right: number | null | undefined; + bottom: number | null | undefined; +}; + +export function insetsDiffer(one: EdgeInsets, two: EdgeInsets): boolean; + +// #endregion diff --git a/packages/react-native/src/unstable-internals-do-not-use.js b/packages/react-native/src/unstable-internals-do-not-use.js index 96c7b48e1ab0..a83bbb9b9d02 100644 --- a/packages/react-native/src/unstable-internals-do-not-use.js +++ b/packages/react-native/src/unstable-internals-do-not-use.js @@ -40,15 +40,21 @@ // and unstable-internals-do-not-use.js.flow. // ---------------------------------------------------------------------------- +import typeof {colorAttribute} from '../Libraries/Components/View/ReactNativeStyleAttributes'; import typeof getDevServer from '../Libraries/Core/Devtools/getDevServer'; import typeof NativeExceptionsManager from '../Libraries/Core/NativeExceptionsManager'; import typeof AssetSourceResolver from '../Libraries/Image/AssetSourceResolver'; +import typeof {ConditionallyIgnoredEventHandlers} from '../Libraries/NativeComponent/ViewConfigIgnore'; import typeof NativeRedBox from '../Libraries/NativeModules/specs/NativeRedBox'; import typeof NativeSourceCode from '../Libraries/NativeModules/specs/NativeSourceCode'; import typeof {PressabilityDebugView} from '../Libraries/Pressability/PressabilityDebug'; import typeof AppContainer from '../Libraries/ReactNative/AppContainer'; +import typeof * as Renderer from '../Libraries/ReactNative/RendererProxy'; import typeof {customDirectEventTypes} from '../Libraries/Renderer/shims/ReactNativeViewConfigRegistry'; +import typeof processColorArray from '../Libraries/StyleSheet/processColorArray'; import typeof DevLoadingView from '../Libraries/Utilities/DevLoadingView'; +import typeof insetsDiffer from '../Libraries/Utilities/differ/insetsDiffer'; +import typeof pointsDiffer from '../Libraries/Utilities/differ/pointsDiffer'; import typeof HMRClient from '../Libraries/Utilities/HMRClient'; // flowlint unsafe-getters-setters:off @@ -60,6 +66,12 @@ module.exports = { get AssetSourceResolver(): AssetSourceResolver { return require('../Libraries/Image/AssetSourceResolver').default; }, + get ConditionallyIgnoredEventHandlers(): ConditionallyIgnoredEventHandlers<{ + readonly [name: string]: true, + }> { + return require('../Libraries/NativeComponent/ViewConfigIgnore') + .ConditionallyIgnoredEventHandlers; + }, get customDirectEventTypes(): customDirectEventTypes { return require('../Libraries/Renderer/shims/ReactNativeViewConfigRegistry') .customDirectEventTypes; @@ -86,4 +98,22 @@ module.exports = { return require('../Libraries/Pressability/PressabilityDebug') .PressabilityDebugView; }, + // Generated Codegen modules can be emitted outside this package, so they + // cannot use package-relative imports to access these implementations. + get colorAttribute(): colorAttribute { + return require('../Libraries/Components/View/ReactNativeStyleAttributes') + .colorAttribute; + }, + get insetsDiffer(): insetsDiffer { + return require('../Libraries/Utilities/differ/insetsDiffer').default; + }, + get pointsDiffer(): pointsDiffer { + return require('../Libraries/Utilities/differ/pointsDiffer').default; + }, + get processColorArray(): processColorArray { + return require('../Libraries/StyleSheet/processColorArray').default; + }, + get Renderer(): Renderer { + return require('../Libraries/ReactNative/RendererProxy'); + }, }; diff --git a/packages/react-native/src/unstable-internals-do-not-use.js.flow b/packages/react-native/src/unstable-internals-do-not-use.js.flow index b5f6ddec6a15..5e18d997a876 100644 --- a/packages/react-native/src/unstable-internals-do-not-use.js.flow +++ b/packages/react-native/src/unstable-internals-do-not-use.js.flow @@ -16,6 +16,8 @@ export {default as AppContainer} from '../Libraries/ReactNative/AppContainer'; export {default as AssetSourceResolver} from '../Libraries/Image/AssetSourceResolver'; +export {colorAttribute} from '../Libraries/Components/View/ReactNativeStyleAttributes'; +export {ConditionallyIgnoredEventHandlers} from '../Libraries/NativeComponent/ViewConfigIgnore'; export {customDirectEventTypes} from '../Libraries/Renderer/shims/ReactNativeViewConfigRegistry'; export {default as DevLoadingView} from '../Libraries/Utilities/DevLoadingView'; export {default as getDevServer} from '../Libraries/Core/Devtools/getDevServer'; @@ -24,3 +26,7 @@ export {default as NativeExceptionsManager} from '../Libraries/Core/NativeExcept export {default as NativeRedBox} from '../Libraries/NativeModules/specs/NativeRedBox'; export {default as NativeSourceCode} from '../Libraries/NativeModules/specs/NativeSourceCode'; export {PressabilityDebugView} from '../Libraries/Pressability/PressabilityDebug'; +export {default as insetsDiffer} from '../Libraries/Utilities/differ/insetsDiffer'; +export {default as pointsDiffer} from '../Libraries/Utilities/differ/pointsDiffer'; +export {default as processColorArray} from '../Libraries/StyleSheet/processColorArray'; +export * as Renderer from '../Libraries/ReactNative/RendererProxy';