From 25949c0b7dc4fcf3730e4314e23799eeb5c07934 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Wed, 21 Sep 2022 10:51:11 -0700 Subject: [PATCH 1/2] Always generate the EventEmitters (#34750) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/34750 This Diff is the first step of enabling the CodeGen to parse and generate a NativeState for the components. The feature has been largely requested by the OSS community but it could be also helpful for people in Meta. To allow the generation of custom `NativeState`, we first have to always generate a `ViewEventEmitter`: that's because the `ConcreteShadowNode` template lists the Generics with this order: `Name`, `Props`, `EventEmitter`, Others... If we skip the `EventEmitters` and we put the `State`, React Native would think that the State is actually an `EventEmitter` and the build step will fail. ## Changelog [General][Added] - Always generate a ViewEventEmitter for Fabric Components Differential Revision: https://internalfb.com/D39509869 fbshipit-source-id: 658e1ccfe74a6649f56ca62836ba23eb9314f120 --- .../GenerateEventEmitterH-test.js.snap | 91 +++++++++ .../GenerateShadowNodeH-test.js.snap | 57 ++++-- .../components/GenerateEventEmitterH.js | 4 +- .../components/GenerateShadowNodeH.js | 16 +- .../GenerateEventEmitterH-test.js.snap | 185 ++++++++++++++++++ .../GenerateShadowNodeH-test.js.snap | 107 +++++++--- packages/rn-tester/Podfile.lock | 2 +- 7 files changed, 402 insertions(+), 60 deletions(-) diff --git a/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateEventEmitterH-test.js.snap b/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateEventEmitterH-test.js.snap index 8ea473f15a6833..e7be3226bd8ca3 100644 --- a/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateEventEmitterH-test.js.snap +++ b/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateEventEmitterH-test.js.snap @@ -19,7 +19,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT ArrayPropsNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -46,7 +53,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT BooleanPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -73,7 +87,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT ColorPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -100,7 +121,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT EdgeInsetsPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -127,7 +155,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT EnumPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -281,7 +316,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT FloatPropsNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -308,7 +350,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT ImagePropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -335,7 +384,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT IntegerPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -398,7 +454,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT MultiNativePropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -425,7 +488,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT NoPropsNoEventsNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -452,7 +522,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT ObjectPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -479,7 +556,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT PointPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -506,7 +590,14 @@ Object { namespace facebook { namespace react { +class JSI_EXPORT StringPropNativeComponentViewEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook diff --git a/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap b/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap index 84724fbf4bd807..136965ddeaacd7 100644 --- a/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap +++ b/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap @@ -14,6 +14,7 @@ Object { #pragma once +#include #include #include #include @@ -28,7 +29,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentViewComponentName[]; */ using ArrayPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< ArrayPropsNativeComponentViewComponentName, - ArrayPropsNativeComponentViewProps>; + ArrayPropsNativeComponentViewProps, + ArrayPropsNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -50,6 +52,7 @@ Object { #pragma once +#include #include #include #include @@ -64,7 +67,8 @@ JSI_EXPORT extern const char BooleanPropNativeComponentViewComponentName[]; */ using BooleanPropNativeComponentViewShadowNode = ConcreteViewShadowNode< BooleanPropNativeComponentViewComponentName, - BooleanPropNativeComponentViewProps>; + BooleanPropNativeComponentViewProps, + BooleanPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -86,6 +90,7 @@ Object { #pragma once +#include #include #include #include @@ -100,7 +105,8 @@ JSI_EXPORT extern const char ColorPropNativeComponentViewComponentName[]; */ using ColorPropNativeComponentViewShadowNode = ConcreteViewShadowNode< ColorPropNativeComponentViewComponentName, - ColorPropNativeComponentViewProps>; + ColorPropNativeComponentViewProps, + ColorPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -122,6 +128,7 @@ Object { #pragma once +#include #include #include #include @@ -136,7 +143,8 @@ JSI_EXPORT extern const char EdgeInsetsPropNativeComponentViewComponentName[]; */ using EdgeInsetsPropNativeComponentViewShadowNode = ConcreteViewShadowNode< EdgeInsetsPropNativeComponentViewComponentName, - EdgeInsetsPropNativeComponentViewProps>; + EdgeInsetsPropNativeComponentViewProps, + EdgeInsetsPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -158,6 +166,7 @@ Object { #pragma once +#include #include #include #include @@ -172,7 +181,8 @@ JSI_EXPORT extern const char EnumPropNativeComponentViewComponentName[]; */ using EnumPropNativeComponentViewShadowNode = ConcreteViewShadowNode< EnumPropNativeComponentViewComponentName, - EnumPropNativeComponentViewProps>; + EnumPropNativeComponentViewProps, + EnumPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -210,7 +220,7 @@ JSI_EXPORT extern const char EventNestedObjectPropsNativeComponentViewComponentN using EventNestedObjectPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< EventNestedObjectPropsNativeComponentViewComponentName, EventNestedObjectPropsNativeComponentViewProps, -EventNestedObjectPropsNativeComponentViewEventEmitter>; + EventNestedObjectPropsNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -248,7 +258,7 @@ JSI_EXPORT extern const char EventPropsNativeComponentViewComponentName[]; using EventPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< EventPropsNativeComponentViewComponentName, EventPropsNativeComponentViewProps, -EventPropsNativeComponentViewEventEmitter>; + EventPropsNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -270,6 +280,7 @@ Object { #pragma once +#include #include #include #include @@ -284,7 +295,8 @@ JSI_EXPORT extern const char FloatPropsNativeComponentViewComponentName[]; */ using FloatPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< FloatPropsNativeComponentViewComponentName, - FloatPropsNativeComponentViewProps>; + FloatPropsNativeComponentViewProps, + FloatPropsNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -306,6 +318,7 @@ Object { #pragma once +#include #include #include #include @@ -320,7 +333,8 @@ JSI_EXPORT extern const char ImagePropNativeComponentViewComponentName[]; */ using ImagePropNativeComponentViewShadowNode = ConcreteViewShadowNode< ImagePropNativeComponentViewComponentName, - ImagePropNativeComponentViewProps>; + ImagePropNativeComponentViewProps, + ImagePropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -342,6 +356,7 @@ Object { #pragma once +#include #include #include #include @@ -356,7 +371,8 @@ JSI_EXPORT extern const char IntegerPropNativeComponentViewComponentName[]; */ using IntegerPropNativeComponentViewShadowNode = ConcreteViewShadowNode< IntegerPropNativeComponentViewComponentName, - IntegerPropNativeComponentViewProps>; + IntegerPropNativeComponentViewProps, + IntegerPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -378,6 +394,7 @@ Object { #pragma once +#include #include #include #include @@ -407,6 +424,7 @@ Object { #pragma once +#include #include #include #include @@ -421,7 +439,8 @@ JSI_EXPORT extern const char MultiNativePropNativeComponentViewComponentName[]; */ using MultiNativePropNativeComponentViewShadowNode = ConcreteViewShadowNode< MultiNativePropNativeComponentViewComponentName, - MultiNativePropNativeComponentViewProps>; + MultiNativePropNativeComponentViewProps, + MultiNativePropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -443,6 +462,7 @@ Object { #pragma once +#include #include #include #include @@ -457,7 +477,8 @@ JSI_EXPORT extern const char NoPropsNoEventsNativeComponentViewComponentName[]; */ using NoPropsNoEventsNativeComponentViewShadowNode = ConcreteViewShadowNode< NoPropsNoEventsNativeComponentViewComponentName, - NoPropsNoEventsNativeComponentViewProps>; + NoPropsNoEventsNativeComponentViewProps, + NoPropsNoEventsNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -479,6 +500,7 @@ Object { #pragma once +#include #include #include #include @@ -493,7 +515,8 @@ JSI_EXPORT extern const char ObjectPropsNativeComponentComponentName[]; */ using ObjectPropsNativeComponentShadowNode = ConcreteViewShadowNode< ObjectPropsNativeComponentComponentName, - ObjectPropsNativeComponentProps>; + ObjectPropsNativeComponentProps, + ObjectPropsNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -515,6 +538,7 @@ Object { #pragma once +#include #include #include #include @@ -529,7 +553,8 @@ JSI_EXPORT extern const char PointPropNativeComponentViewComponentName[]; */ using PointPropNativeComponentViewShadowNode = ConcreteViewShadowNode< PointPropNativeComponentViewComponentName, - PointPropNativeComponentViewProps>; + PointPropNativeComponentViewProps, + PointPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook @@ -551,6 +576,7 @@ Object { #pragma once +#include #include #include #include @@ -565,7 +591,8 @@ JSI_EXPORT extern const char StringPropNativeComponentViewComponentName[]; */ using StringPropNativeComponentViewShadowNode = ConcreteViewShadowNode< StringPropNativeComponentViewComponentName, - StringPropNativeComponentViewProps>; + StringPropNativeComponentViewProps, + StringPropNativeComponentViewEventEmitter> } // namespace react } // namespace facebook diff --git a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js index 269567575c02f0..f61ca1ac091aa4 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js +++ b/packages/react-native-codegen/src/generators/components/GenerateEventEmitterH.js @@ -285,9 +285,7 @@ module.exports = { .filter(Boolean) .reduce((acc, components) => Object.assign(acc, components), {}); - const moduleComponentsWithEvents = Object.keys(moduleComponents).filter( - componentName => moduleComponents[componentName].events.length > 0, - ); + const moduleComponentsWithEvents = Object.keys(moduleComponents); const fileName = 'EventEmitters.h'; diff --git a/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js b/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js index 5159bd6168568a..636fec9535ed7d 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js +++ b/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js @@ -63,7 +63,7 @@ JSI_EXPORT extern const char ${className}ComponentName[]; */ using ${className}ShadowNode = ConcreteViewShadowNode< ${className}ComponentName, - ${className}Props${eventEmitter}>; + ${className}Props${eventEmitter}> `.trim(); module.exports = { @@ -75,8 +75,6 @@ module.exports = { ): FilesOutput { const fileName = 'ShadowNodes.h'; - let hasAnyEvents = false; - const moduleResults = Object.keys(schema.modules) .map(moduleName => { const module = schema.modules[moduleName]; @@ -97,15 +95,7 @@ module.exports = { return; } - const hasEvents = component.events.length > 0; - - if (hasEvents) { - hasAnyEvents = true; - } - - const eventEmitter = hasEvents - ? `,\n${componentName}EventEmitter` - : ''; + const eventEmitter = `,\n ${componentName}EventEmitter`; const replacedTemplate = ComponentTemplate({ className: componentName, @@ -124,7 +114,7 @@ module.exports = { const replacedTemplate = FileTemplate({ componentClasses: moduleResults, libraryName, - imports: hasAnyEvents ? eventEmitterImport : '', + imports: eventEmitterImport, }); return new Map([[fileName, replacedTemplate]]); diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterH-test.js.snap index faacdff12be52a..fffed704338474 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterH-test.js.snap @@ -19,7 +19,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -46,7 +53,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -73,7 +87,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT BooleanPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -100,7 +121,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ColorPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -127,7 +155,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT CommandNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -154,7 +189,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT CommandNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -181,7 +223,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT DoublePropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -361,7 +410,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ExcludedAndroidComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -388,7 +444,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ExcludedAndroidIosComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -415,7 +478,22 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ExcludedIosComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +class JSI_EXPORT MultiFileIncludedNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + + +}; } // namespace react } // namespace facebook @@ -442,7 +520,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT FloatPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -469,7 +554,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ImagePropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -496,7 +588,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT InsetsPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -523,7 +622,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT Int32EnumPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -550,7 +656,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT IntegerPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -613,7 +726,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ImageColorPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -640,7 +760,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT NoPropsNoEventsComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -667,7 +794,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT ObjectPropsEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -694,7 +828,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT PointPropNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -721,7 +862,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT StringEnumPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -748,7 +896,14 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT StringPropComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -775,7 +930,22 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT MultiFile1NativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + + +}; +class JSI_EXPORT MultiFile2NativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; } // namespace react } // namespace facebook @@ -802,7 +972,22 @@ Map { namespace facebook { namespace react { +class JSI_EXPORT MultiComponent1NativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +class JSI_EXPORT MultiComponent2NativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + + +}; } // namespace react } // namespace facebook diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap index fb4988800ad84b..890bbabca5ddf7 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap @@ -14,6 +14,7 @@ Map { #pragma once +#include #include #include #include @@ -28,7 +29,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; */ using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< ArrayPropsNativeComponentComponentName, - ArrayPropsNativeComponentProps>; + ArrayPropsNativeComponentProps, + ArrayPropsNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -50,6 +52,7 @@ Map { #pragma once +#include #include #include #include @@ -64,7 +67,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; */ using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< ArrayPropsNativeComponentComponentName, - ArrayPropsNativeComponentProps>; + ArrayPropsNativeComponentProps, + ArrayPropsNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -86,6 +90,7 @@ Map { #pragma once +#include #include #include #include @@ -100,7 +105,8 @@ JSI_EXPORT extern const char BooleanPropNativeComponentComponentName[]; */ using BooleanPropNativeComponentShadowNode = ConcreteViewShadowNode< BooleanPropNativeComponentComponentName, - BooleanPropNativeComponentProps>; + BooleanPropNativeComponentProps, + BooleanPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -122,6 +128,7 @@ Map { #pragma once +#include #include #include #include @@ -136,7 +143,8 @@ JSI_EXPORT extern const char ColorPropNativeComponentComponentName[]; */ using ColorPropNativeComponentShadowNode = ConcreteViewShadowNode< ColorPropNativeComponentComponentName, - ColorPropNativeComponentProps>; + ColorPropNativeComponentProps, + ColorPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -158,6 +166,7 @@ Map { #pragma once +#include #include #include #include @@ -172,7 +181,8 @@ JSI_EXPORT extern const char CommandNativeComponentComponentName[]; */ using CommandNativeComponentShadowNode = ConcreteViewShadowNode< CommandNativeComponentComponentName, - CommandNativeComponentProps>; + CommandNativeComponentProps, + CommandNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -194,6 +204,7 @@ Map { #pragma once +#include #include #include #include @@ -208,7 +219,8 @@ JSI_EXPORT extern const char CommandNativeComponentComponentName[]; */ using CommandNativeComponentShadowNode = ConcreteViewShadowNode< CommandNativeComponentComponentName, - CommandNativeComponentProps>; + CommandNativeComponentProps, + CommandNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -230,6 +242,7 @@ Map { #pragma once +#include #include #include #include @@ -244,7 +257,8 @@ JSI_EXPORT extern const char DoublePropNativeComponentComponentName[]; */ using DoublePropNativeComponentShadowNode = ConcreteViewShadowNode< DoublePropNativeComponentComponentName, - DoublePropNativeComponentProps>; + DoublePropNativeComponentProps, + DoublePropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -282,7 +296,7 @@ JSI_EXPORT extern const char EventsNestedObjectNativeComponentComponentName[]; using EventsNestedObjectNativeComponentShadowNode = ConcreteViewShadowNode< EventsNestedObjectNativeComponentComponentName, EventsNestedObjectNativeComponentProps, -EventsNestedObjectNativeComponentEventEmitter>; + EventsNestedObjectNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -320,7 +334,7 @@ JSI_EXPORT extern const char EventsNativeComponentComponentName[]; using EventsNativeComponentShadowNode = ConcreteViewShadowNode< EventsNativeComponentComponentName, EventsNativeComponentProps, -EventsNativeComponentEventEmitter>; + EventsNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -342,6 +356,7 @@ Map { #pragma once +#include #include #include #include @@ -371,6 +386,7 @@ Map { #pragma once +#include #include #include #include @@ -385,7 +401,8 @@ JSI_EXPORT extern const char ExcludedAndroidComponentComponentName[]; */ using ExcludedAndroidComponentShadowNode = ConcreteViewShadowNode< ExcludedAndroidComponentComponentName, - ExcludedAndroidComponentProps>; + ExcludedAndroidComponentProps, + ExcludedAndroidComponentEventEmitter> } // namespace react } // namespace facebook @@ -407,6 +424,7 @@ Map { #pragma once +#include #include #include #include @@ -421,7 +439,8 @@ JSI_EXPORT extern const char ExcludedAndroidIosComponentComponentName[]; */ using ExcludedAndroidIosComponentShadowNode = ConcreteViewShadowNode< ExcludedAndroidIosComponentComponentName, - ExcludedAndroidIosComponentProps>; + ExcludedAndroidIosComponentProps, + ExcludedAndroidIosComponentEventEmitter> } // namespace react } // namespace facebook @@ -443,6 +462,7 @@ Map { #pragma once +#include #include #include #include @@ -457,7 +477,8 @@ JSI_EXPORT extern const char ExcludedIosComponentComponentName[]; */ using ExcludedIosComponentShadowNode = ConcreteViewShadowNode< ExcludedIosComponentComponentName, - ExcludedIosComponentProps>; + ExcludedIosComponentProps, + ExcludedIosComponentEventEmitter> JSI_EXPORT extern const char MultiFileIncludedNativeComponentComponentName[]; @@ -466,7 +487,8 @@ JSI_EXPORT extern const char MultiFileIncludedNativeComponentComponentName[]; */ using MultiFileIncludedNativeComponentShadowNode = ConcreteViewShadowNode< MultiFileIncludedNativeComponentComponentName, - MultiFileIncludedNativeComponentProps>; + MultiFileIncludedNativeComponentProps, + MultiFileIncludedNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -488,6 +510,7 @@ Map { #pragma once +#include #include #include #include @@ -502,7 +525,8 @@ JSI_EXPORT extern const char FloatPropNativeComponentComponentName[]; */ using FloatPropNativeComponentShadowNode = ConcreteViewShadowNode< FloatPropNativeComponentComponentName, - FloatPropNativeComponentProps>; + FloatPropNativeComponentProps, + FloatPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -524,6 +548,7 @@ Map { #pragma once +#include #include #include #include @@ -538,7 +563,8 @@ JSI_EXPORT extern const char ImagePropNativeComponentComponentName[]; */ using ImagePropNativeComponentShadowNode = ConcreteViewShadowNode< ImagePropNativeComponentComponentName, - ImagePropNativeComponentProps>; + ImagePropNativeComponentProps, + ImagePropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -560,6 +586,7 @@ Map { #pragma once +#include #include #include #include @@ -574,7 +601,8 @@ JSI_EXPORT extern const char InsetsPropNativeComponentComponentName[]; */ using InsetsPropNativeComponentShadowNode = ConcreteViewShadowNode< InsetsPropNativeComponentComponentName, - InsetsPropNativeComponentProps>; + InsetsPropNativeComponentProps, + InsetsPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -596,6 +624,7 @@ Map { #pragma once +#include #include #include #include @@ -610,7 +639,8 @@ JSI_EXPORT extern const char Int32EnumPropsNativeComponentComponentName[]; */ using Int32EnumPropsNativeComponentShadowNode = ConcreteViewShadowNode< Int32EnumPropsNativeComponentComponentName, - Int32EnumPropsNativeComponentProps>; + Int32EnumPropsNativeComponentProps, + Int32EnumPropsNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -632,6 +662,7 @@ Map { #pragma once +#include #include #include #include @@ -646,7 +677,8 @@ JSI_EXPORT extern const char IntegerPropNativeComponentComponentName[]; */ using IntegerPropNativeComponentShadowNode = ConcreteViewShadowNode< IntegerPropNativeComponentComponentName, - IntegerPropNativeComponentProps>; + IntegerPropNativeComponentProps, + IntegerPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -668,6 +700,7 @@ Map { #pragma once +#include #include #include #include @@ -697,6 +730,7 @@ Map { #pragma once +#include #include #include #include @@ -711,7 +745,8 @@ JSI_EXPORT extern const char ImageColorPropNativeComponentComponentName[]; */ using ImageColorPropNativeComponentShadowNode = ConcreteViewShadowNode< ImageColorPropNativeComponentComponentName, - ImageColorPropNativeComponentProps>; + ImageColorPropNativeComponentProps, + ImageColorPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -733,6 +768,7 @@ Map { #pragma once +#include #include #include #include @@ -747,7 +783,8 @@ JSI_EXPORT extern const char NoPropsNoEventsComponentComponentName[]; */ using NoPropsNoEventsComponentShadowNode = ConcreteViewShadowNode< NoPropsNoEventsComponentComponentName, - NoPropsNoEventsComponentProps>; + NoPropsNoEventsComponentProps, + NoPropsNoEventsComponentEventEmitter> } // namespace react } // namespace facebook @@ -769,6 +806,7 @@ Map { #pragma once +#include #include #include #include @@ -783,7 +821,8 @@ JSI_EXPORT extern const char ObjectPropsComponentName[]; */ using ObjectPropsShadowNode = ConcreteViewShadowNode< ObjectPropsComponentName, - ObjectPropsProps>; + ObjectPropsProps, + ObjectPropsEventEmitter> } // namespace react } // namespace facebook @@ -805,6 +844,7 @@ Map { #pragma once +#include #include #include #include @@ -819,7 +859,8 @@ JSI_EXPORT extern const char PointPropNativeComponentComponentName[]; */ using PointPropNativeComponentShadowNode = ConcreteViewShadowNode< PointPropNativeComponentComponentName, - PointPropNativeComponentProps>; + PointPropNativeComponentProps, + PointPropNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -841,6 +882,7 @@ Map { #pragma once +#include #include #include #include @@ -855,7 +897,8 @@ JSI_EXPORT extern const char StringEnumPropsNativeComponentComponentName[]; */ using StringEnumPropsNativeComponentShadowNode = ConcreteViewShadowNode< StringEnumPropsNativeComponentComponentName, - StringEnumPropsNativeComponentProps>; + StringEnumPropsNativeComponentProps, + StringEnumPropsNativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -877,6 +920,7 @@ Map { #pragma once +#include #include #include #include @@ -891,7 +935,8 @@ JSI_EXPORT extern const char StringPropComponentComponentName[]; */ using StringPropComponentShadowNode = ConcreteViewShadowNode< StringPropComponentComponentName, - StringPropComponentProps>; + StringPropComponentProps, + StringPropComponentEventEmitter> } // namespace react } // namespace facebook @@ -913,6 +958,7 @@ Map { #pragma once +#include #include #include #include @@ -927,7 +973,8 @@ JSI_EXPORT extern const char MultiFile1NativeComponentComponentName[]; */ using MultiFile1NativeComponentShadowNode = ConcreteViewShadowNode< MultiFile1NativeComponentComponentName, - MultiFile1NativeComponentProps>; + MultiFile1NativeComponentProps, + MultiFile1NativeComponentEventEmitter> JSI_EXPORT extern const char MultiFile2NativeComponentComponentName[]; @@ -936,7 +983,8 @@ JSI_EXPORT extern const char MultiFile2NativeComponentComponentName[]; */ using MultiFile2NativeComponentShadowNode = ConcreteViewShadowNode< MultiFile2NativeComponentComponentName, - MultiFile2NativeComponentProps>; + MultiFile2NativeComponentProps, + MultiFile2NativeComponentEventEmitter> } // namespace react } // namespace facebook @@ -958,6 +1006,7 @@ Map { #pragma once +#include #include #include #include @@ -972,7 +1021,8 @@ JSI_EXPORT extern const char MultiComponent1NativeComponentComponentName[]; */ using MultiComponent1NativeComponentShadowNode = ConcreteViewShadowNode< MultiComponent1NativeComponentComponentName, - MultiComponent1NativeComponentProps>; + MultiComponent1NativeComponentProps, + MultiComponent1NativeComponentEventEmitter> JSI_EXPORT extern const char MultiComponent2NativeComponentComponentName[]; @@ -981,7 +1031,8 @@ JSI_EXPORT extern const char MultiComponent2NativeComponentComponentName[]; */ using MultiComponent2NativeComponentShadowNode = ConcreteViewShadowNode< MultiComponent2NativeComponentComponentName, - MultiComponent2NativeComponentProps>; + MultiComponent2NativeComponentProps, + MultiComponent2NativeComponentEventEmitter> } // namespace react } // namespace facebook diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index d0a218d9118bdb..05bbefbe17e07b 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -952,6 +952,6 @@ SPEC CHECKSUMS: Yoga: 1b1a12ff3d86a10565ea7cbe057d42f5e5fb2a07 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: c3d82494e47e0adce02921f2ed9dba2427f0a9ff +PODFILE CHECKSUM: e86c02825ce4e267e6fb3975bae791feb32a94a0 COCOAPODS: 1.11.3 From 5f14be95e3a442db8e2fb85e8691d15e63d0c8c1 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Wed, 21 Sep 2022 10:51:54 -0700 Subject: [PATCH 2/2] Always generate an EmptyNativeState (#34754) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/34754 This Diff is the second step of enabling the CodeGen to parse and generate a NativeState for the components. The feature has been largely requested by the OSS community but it could be also helpful for people in Meta. ## Changelog [General][Added] - Always generate an empty NativeState for Fabric Components Differential Revision: D39696435 fbshipit-source-id: 1172badd603512e70bcf59bca18d8feba56cfe4c --- .../cmake-utils/ReactNative-application.cmake | 7 +- packages/react-native-codegen/DEFS.bzl | 19 + .../GenerateShadowNodeH-test.js.snap | 61 +- .../src/cli/generators/generate-all.js | 1 + .../src/generators/RNCodegen.js | 9 + .../generators/__tests__/RNCodegen-test.js | 2 + .../components/GenerateShadowNodeH.js | 4 +- .../generators/components/GenerateStateCpp.js | 90 ++ .../generators/components/GenerateStateH.js | 105 ++ .../__tests__/GenerateStateCpp-test.js | 27 + .../__tests__/GenerateStateH-test.js | 27 + .../GenerateShadowNodeH-test.js.snap | 111 +- .../GenerateStateCpp-test.js.snap | 649 +++++++++ .../__snapshots__/GenerateStateH-test.js.snap | 1237 +++++++++++++++++ .../generators/modules/GenerateModuleJniH.js | 1 + .../GenerateModuleJniH-test.js.snap | 16 +- packages/rn-tester/Podfile.lock | 2 +- scripts/react_native_pods.rb | 2 + 18 files changed, 2314 insertions(+), 56 deletions(-) create mode 100644 packages/react-native-codegen/src/generators/components/GenerateStateCpp.js create mode 100644 packages/react-native-codegen/src/generators/components/GenerateStateH.js create mode 100644 packages/react-native-codegen/src/generators/components/__tests__/GenerateStateCpp-test.js create mode 100644 packages/react-native-codegen/src/generators/components/__tests__/GenerateStateH-test.js create mode 100644 packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateCpp-test.js.snap create mode 100644 packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateH-test.js.snap diff --git a/ReactAndroid/cmake-utils/ReactNative-application.cmake b/ReactAndroid/cmake-utils/ReactNative-application.cmake index 2471db032a8031..51c0f734c24a8b 100644 --- a/ReactAndroid/cmake-utils/ReactNative-application.cmake +++ b/ReactAndroid/cmake-utils/ReactNative-application.cmake @@ -18,14 +18,14 @@ set(CMAKE_VERBOSE_MAKEFILE on) include(${REACT_ANDROID_DIR}/cmake-utils/Android-prebuilt.cmake) -file(GLOB input_SRC CONFIGURE_DEPENDS +file(GLOB input_SRC CONFIGURE_DEPENDS *.cpp ${PROJECT_BUILD_DIR}/generated/rncli/src/main/jni/*.cpp) add_library(${CMAKE_PROJECT_NAME} SHARED ${input_SRC}) -target_include_directories(${CMAKE_PROJECT_NAME} - PUBLIC +target_include_directories(${CMAKE_PROJECT_NAME} + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_BUILD_DIR}/generated/rncli/src/main/jni) @@ -45,6 +45,7 @@ target_link_libraries(${CMAKE_PROJECT_NAME} react_render_core react_render_debug react_render_graphics + react_render_mapbuffer rrc_view runtimeexecutor turbomodulejsijni diff --git a/packages/react-native-codegen/DEFS.bzl b/packages/react-native-codegen/DEFS.bzl index bd1ba845f035b5..ac56ecc43082c3 100644 --- a/packages/react-native-codegen/DEFS.bzl +++ b/packages/react-native-codegen/DEFS.bzl @@ -263,6 +263,8 @@ def rn_codegen_components( generate_event_emitter_h_name = "generate_event_emitter_h-{}".format(name) generate_props_cpp_name = "generate_props_cpp-{}".format(name) generate_props_h_name = "generated_props_h-{}".format(name) + generate_state_cpp_name = "generate_state_cpp-{}".format(name) + generate_state_h_name = "generated_state_h-{}".format(name) generate_tests_cpp_name = "generate_tests_cpp-{}".format(name) generate_shadow_node_cpp_name = "generated_shadow_node_cpp-{}".format(name) generate_shadow_node_h_name = "generated_shadow_node_h-{}".format(name) @@ -314,6 +316,13 @@ def rn_codegen_components( labels = ["codegen_rule"], ) + fb_native.genrule( + name = generate_state_cpp_name, + cmd = "cp $(location :{})/States.cpp $OUT".format(generate_fixtures_rule_name), + out = "States.cpp", + labels = ["codegen_rule"], + ) + fb_native.genrule( name = generate_tests_cpp_name, cmd = "cp $(location :{})/Tests.cpp $OUT".format(generate_fixtures_rule_name), @@ -328,6 +337,13 @@ def rn_codegen_components( labels = ["codegen_rule"], ) + fb_native.genrule( + name = generate_state_h_name, + cmd = "cp $(location :{})/States.h $OUT".format(generate_fixtures_rule_name), + out = "States.h", + labels = ["codegen_rule"], + ) + fb_native.genrule( name = copy_generated_java_files, # TODO: support different package name internally. @@ -388,12 +404,14 @@ def rn_codegen_components( srcs = [ ":{}".format(generate_event_emitter_cpp_name), ":{}".format(generate_props_cpp_name), + ":{}".format(generate_state_cpp_name), ":{}".format(generate_shadow_node_cpp_name), ], headers = [ ":{}".format(generate_component_descriptor_h_name), ":{}".format(generate_event_emitter_h_name), ":{}".format(generate_props_h_name), + ":{}".format(generate_state_h_name), ":{}".format(generate_shadow_node_h_name), ], header_namespace = "react/renderer/components/{}".format(name), @@ -403,6 +421,7 @@ def rn_codegen_components( "Props.h": ":{}".format(generate_props_h_name), "RCTComponentViewHelpers.h": ":{}".format(generate_component_hobjcpp_name), "ShadowNodes.h": ":{}".format(generate_shadow_node_h_name), + "States.h": ":{}".format(generate_state_h_name), }, fbobjc_compiler_flags = get_apple_compiler_flags(), fbobjc_preprocessor_flags = get_preprocessor_flags_for_build_mode() + get_apple_inspector_flags(), diff --git a/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap b/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap index 136965ddeaacd7..15357bb257178e 100644 --- a/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap +++ b/packages/react-native-codegen/e2e/__tests__/components/__snapshots__/GenerateShadowNodeH-test.js.snap @@ -16,6 +16,7 @@ Object { #include #include +#include #include #include @@ -30,7 +31,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentViewComponentName[]; using ArrayPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< ArrayPropsNativeComponentViewComponentName, ArrayPropsNativeComponentViewProps, - ArrayPropsNativeComponentViewEventEmitter> + ArrayPropsNativeComponentViewEventEmitter, + ArrayPropsNativeComponentViewState>; } // namespace react } // namespace facebook @@ -54,6 +56,7 @@ Object { #include #include +#include #include #include @@ -68,7 +71,8 @@ JSI_EXPORT extern const char BooleanPropNativeComponentViewComponentName[]; using BooleanPropNativeComponentViewShadowNode = ConcreteViewShadowNode< BooleanPropNativeComponentViewComponentName, BooleanPropNativeComponentViewProps, - BooleanPropNativeComponentViewEventEmitter> + BooleanPropNativeComponentViewEventEmitter, + BooleanPropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -92,6 +96,7 @@ Object { #include #include +#include #include #include @@ -106,7 +111,8 @@ JSI_EXPORT extern const char ColorPropNativeComponentViewComponentName[]; using ColorPropNativeComponentViewShadowNode = ConcreteViewShadowNode< ColorPropNativeComponentViewComponentName, ColorPropNativeComponentViewProps, - ColorPropNativeComponentViewEventEmitter> + ColorPropNativeComponentViewEventEmitter, + ColorPropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -130,6 +136,7 @@ Object { #include #include +#include #include #include @@ -144,7 +151,8 @@ JSI_EXPORT extern const char EdgeInsetsPropNativeComponentViewComponentName[]; using EdgeInsetsPropNativeComponentViewShadowNode = ConcreteViewShadowNode< EdgeInsetsPropNativeComponentViewComponentName, EdgeInsetsPropNativeComponentViewProps, - EdgeInsetsPropNativeComponentViewEventEmitter> + EdgeInsetsPropNativeComponentViewEventEmitter, + EdgeInsetsPropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -168,6 +176,7 @@ Object { #include #include +#include #include #include @@ -182,7 +191,8 @@ JSI_EXPORT extern const char EnumPropNativeComponentViewComponentName[]; using EnumPropNativeComponentViewShadowNode = ConcreteViewShadowNode< EnumPropNativeComponentViewComponentName, EnumPropNativeComponentViewProps, - EnumPropNativeComponentViewEventEmitter> + EnumPropNativeComponentViewEventEmitter, + EnumPropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -206,6 +216,7 @@ Object { #include #include +#include #include #include @@ -220,7 +231,8 @@ JSI_EXPORT extern const char EventNestedObjectPropsNativeComponentViewComponentN using EventNestedObjectPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< EventNestedObjectPropsNativeComponentViewComponentName, EventNestedObjectPropsNativeComponentViewProps, - EventNestedObjectPropsNativeComponentViewEventEmitter> + EventNestedObjectPropsNativeComponentViewEventEmitter, + EventNestedObjectPropsNativeComponentViewState>; } // namespace react } // namespace facebook @@ -244,6 +256,7 @@ Object { #include #include +#include #include #include @@ -258,7 +271,8 @@ JSI_EXPORT extern const char EventPropsNativeComponentViewComponentName[]; using EventPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< EventPropsNativeComponentViewComponentName, EventPropsNativeComponentViewProps, - EventPropsNativeComponentViewEventEmitter> + EventPropsNativeComponentViewEventEmitter, + EventPropsNativeComponentViewState>; } // namespace react } // namespace facebook @@ -282,6 +296,7 @@ Object { #include #include +#include #include #include @@ -296,7 +311,8 @@ JSI_EXPORT extern const char FloatPropsNativeComponentViewComponentName[]; using FloatPropsNativeComponentViewShadowNode = ConcreteViewShadowNode< FloatPropsNativeComponentViewComponentName, FloatPropsNativeComponentViewProps, - FloatPropsNativeComponentViewEventEmitter> + FloatPropsNativeComponentViewEventEmitter, + FloatPropsNativeComponentViewState>; } // namespace react } // namespace facebook @@ -320,6 +336,7 @@ Object { #include #include +#include #include #include @@ -334,7 +351,8 @@ JSI_EXPORT extern const char ImagePropNativeComponentViewComponentName[]; using ImagePropNativeComponentViewShadowNode = ConcreteViewShadowNode< ImagePropNativeComponentViewComponentName, ImagePropNativeComponentViewProps, - ImagePropNativeComponentViewEventEmitter> + ImagePropNativeComponentViewEventEmitter, + ImagePropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -358,6 +376,7 @@ Object { #include #include +#include #include #include @@ -372,7 +391,8 @@ JSI_EXPORT extern const char IntegerPropNativeComponentViewComponentName[]; using IntegerPropNativeComponentViewShadowNode = ConcreteViewShadowNode< IntegerPropNativeComponentViewComponentName, IntegerPropNativeComponentViewProps, - IntegerPropNativeComponentViewEventEmitter> + IntegerPropNativeComponentViewEventEmitter, + IntegerPropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -396,6 +416,7 @@ Object { #include #include +#include #include #include @@ -426,6 +447,7 @@ Object { #include #include +#include #include #include @@ -440,7 +462,8 @@ JSI_EXPORT extern const char MultiNativePropNativeComponentViewComponentName[]; using MultiNativePropNativeComponentViewShadowNode = ConcreteViewShadowNode< MultiNativePropNativeComponentViewComponentName, MultiNativePropNativeComponentViewProps, - MultiNativePropNativeComponentViewEventEmitter> + MultiNativePropNativeComponentViewEventEmitter, + MultiNativePropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -464,6 +487,7 @@ Object { #include #include +#include #include #include @@ -478,7 +502,8 @@ JSI_EXPORT extern const char NoPropsNoEventsNativeComponentViewComponentName[]; using NoPropsNoEventsNativeComponentViewShadowNode = ConcreteViewShadowNode< NoPropsNoEventsNativeComponentViewComponentName, NoPropsNoEventsNativeComponentViewProps, - NoPropsNoEventsNativeComponentViewEventEmitter> + NoPropsNoEventsNativeComponentViewEventEmitter, + NoPropsNoEventsNativeComponentViewState>; } // namespace react } // namespace facebook @@ -502,6 +527,7 @@ Object { #include #include +#include #include #include @@ -516,7 +542,8 @@ JSI_EXPORT extern const char ObjectPropsNativeComponentComponentName[]; using ObjectPropsNativeComponentShadowNode = ConcreteViewShadowNode< ObjectPropsNativeComponentComponentName, ObjectPropsNativeComponentProps, - ObjectPropsNativeComponentEventEmitter> + ObjectPropsNativeComponentEventEmitter, + ObjectPropsNativeComponentState>; } // namespace react } // namespace facebook @@ -540,6 +567,7 @@ Object { #include #include +#include #include #include @@ -554,7 +582,8 @@ JSI_EXPORT extern const char PointPropNativeComponentViewComponentName[]; using PointPropNativeComponentViewShadowNode = ConcreteViewShadowNode< PointPropNativeComponentViewComponentName, PointPropNativeComponentViewProps, - PointPropNativeComponentViewEventEmitter> + PointPropNativeComponentViewEventEmitter, + PointPropNativeComponentViewState>; } // namespace react } // namespace facebook @@ -578,6 +607,7 @@ Object { #include #include +#include #include #include @@ -592,7 +622,8 @@ JSI_EXPORT extern const char StringPropNativeComponentViewComponentName[]; using StringPropNativeComponentViewShadowNode = ConcreteViewShadowNode< StringPropNativeComponentViewComponentName, StringPropNativeComponentViewProps, - StringPropNativeComponentViewEventEmitter> + StringPropNativeComponentViewEventEmitter, + StringPropNativeComponentViewState>; } // namespace react } // namespace facebook diff --git a/packages/react-native-codegen/src/cli/generators/generate-all.js b/packages/react-native-codegen/src/cli/generators/generate-all.js index 6ceeedc9eb9b39..46d20751020885 100644 --- a/packages/react-native-codegen/src/cli/generators/generate-all.js +++ b/packages/react-native-codegen/src/cli/generators/generate-all.js @@ -55,6 +55,7 @@ RNCodegen.generate( 'descriptors', 'events', 'props', + 'states', 'tests', 'shadow-nodes', 'modulesAndroid', diff --git a/packages/react-native-codegen/src/generators/RNCodegen.js b/packages/react-native-codegen/src/generators/RNCodegen.js index 78004999db3a0b..b2648c626c1a54 100644 --- a/packages/react-native-codegen/src/generators/RNCodegen.js +++ b/packages/react-native-codegen/src/generators/RNCodegen.js @@ -23,6 +23,8 @@ const generateEventEmitterCpp = require('./components/GenerateEventEmitterCpp.js const generateEventEmitterH = require('./components/GenerateEventEmitterH.js'); const generatePropsCpp = require('./components/GeneratePropsCpp.js'); const generatePropsH = require('./components/GeneratePropsH.js'); +const generateStateCpp = require('./components/GenerateStateCpp.js'); +const generateStateH = require('./components/GenerateStateH.js'); const generateModuleH = require('./modules/GenerateModuleH.js'); const generateModuleCpp = require('./modules/GenerateModuleCpp.js'); const generateModuleObjCpp = require('./modules/GenerateModuleObjCpp'); @@ -61,6 +63,7 @@ type LibraryGenerators = | 'descriptors' | 'events' | 'props' + | 'states' | 'tests' | 'shadow-nodes' | 'modulesAndroid' @@ -82,6 +85,7 @@ type SchemasConfig = $ReadOnly<{ const LIBRARY_GENERATORS = { descriptors: [generateComponentDescriptorH.generate], events: [generateEventEmitterCpp.generate, generateEventEmitterH.generate], + states: [generateStateCpp.generate, generateStateH.generate], props: [ generateComponentHObjCpp.generate, generatePropsCpp.generate, @@ -97,6 +101,8 @@ const LIBRARY_GENERATORS = { generateEventEmitterH.generate, generatePropsCpp.generate, generatePropsH.generate, + generateStateCpp.generate, + generateStateH.generate, generateShadowNodeCpp.generate, generateShadowNodeH.generate, // Java files @@ -110,6 +116,8 @@ const LIBRARY_GENERATORS = { generateComponentHObjCpp.generate, generatePropsCpp.generate, generatePropsH.generate, + generateStateCpp.generate, + generateStateH.generate, generateShadowNodeCpp.generate, generateShadowNodeH.generate, ], @@ -211,6 +219,7 @@ module.exports = { descriptors: outputDirectory, events: outputDirectory, props: outputDirectory, + states: outputDirectory, componentsAndroid: outputDirectory, modulesAndroid: outputDirectory, modulesCxx: outputDirectory, diff --git a/packages/react-native-codegen/src/generators/__tests__/RNCodegen-test.js b/packages/react-native-codegen/src/generators/__tests__/RNCodegen-test.js index f4d59c0e09335e..864a0b06491967 100644 --- a/packages/react-native-codegen/src/generators/__tests__/RNCodegen-test.js +++ b/packages/react-native-codegen/src/generators/__tests__/RNCodegen-test.js @@ -39,6 +39,8 @@ describe('RNCodegen.generate', () => { 'ShadowNodes.cpp': componentsOutputDir, 'Props.h': componentsOutputDir, 'Props.cpp': componentsOutputDir, + 'States.h': componentsOutputDir, + 'States.cpp': componentsOutputDir, 'RCTComponentViewHelpers.h': componentsOutputDir, 'EventEmitters.h': componentsOutputDir, 'EventEmitters.cpp': componentsOutputDir, diff --git a/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js b/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js index 636fec9535ed7d..3e7cf71117ef22 100644 --- a/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js +++ b/packages/react-native-codegen/src/generators/components/GenerateShadowNodeH.js @@ -36,6 +36,7 @@ const FileTemplate = ({ #pragma once ${imports}#include +#include #include #include @@ -63,7 +64,8 @@ JSI_EXPORT extern const char ${className}ComponentName[]; */ using ${className}ShadowNode = ConcreteViewShadowNode< ${className}ComponentName, - ${className}Props${eventEmitter}> + ${className}Props${eventEmitter}, + ${className}State>; `.trim(); module.exports = { diff --git a/packages/react-native-codegen/src/generators/components/GenerateStateCpp.js b/packages/react-native-codegen/src/generators/components/GenerateStateCpp.js new file mode 100644 index 00000000000000..1bbcc0e16e4dee --- /dev/null +++ b/packages/react-native-codegen/src/generators/components/GenerateStateCpp.js @@ -0,0 +1,90 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +'use strict'; + +import type {SchemaType} from '../../CodegenSchema'; + +// File path -> contents +type FilesOutput = Map; + +const FileTemplate = ({ + libraryName, + stateClasses, +}: { + libraryName: string, + stateClasses: string, +}) => ` +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * ${'@'}generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + +${stateClasses} + +} // namespace react +} // namespace facebook +`; + +const StateTemplate = ({stateName}: {stateName: string}) => ''; + +module.exports = { + generate( + libraryName: string, + schema: SchemaType, + packageName?: string, + assumeNonnull: boolean = false, + ): FilesOutput { + const fileName = 'States.cpp'; + + const stateClasses = Object.keys(schema.modules) + .map(moduleName => { + const module = schema.modules[moduleName]; + if (module.type !== 'Component') { + return; + } + + const {components} = module; + // No components in this module + if (components == null) { + return null; + } + + return Object.keys(components) + .map(componentName => { + if (components[componentName].interfaceOnly === true) { + return null; + } + return StateTemplate({ + stateName: `${componentName}State`, + }); + }) + .filter(Boolean) + .join('\n'); + }) + .filter(Boolean) + .join('\n'); + + const replacedTemplate = FileTemplate({ + libraryName, + stateClasses, + }); + + return new Map([[fileName, replacedTemplate]]); + }, +}; diff --git a/packages/react-native-codegen/src/generators/components/GenerateStateH.js b/packages/react-native-codegen/src/generators/components/GenerateStateH.js new file mode 100644 index 00000000000000..76f46403d15d9b --- /dev/null +++ b/packages/react-native-codegen/src/generators/components/GenerateStateH.js @@ -0,0 +1,105 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +'use strict'; + +import type {SchemaType} from '../../CodegenSchema'; + +// File path -> contents +type FilesOutput = Map; + +const FileTemplate = ({ + libraryName, + stateClasses, +}: { + libraryName: string, + stateClasses: string, +}) => ` +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * ${'@'}generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + +${stateClasses} + +} // namespace react +} // namespace facebook +`; + +const StateTemplate = ({stateName}: {stateName: string}) => ` +class ${stateName}State { + public: + ${stateName}State() = default; + +#ifdef ANDROID + ${stateName}State(${stateName}State const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; +`; + +module.exports = { + generate( + libraryName: string, + schema: SchemaType, + packageName?: string, + assumeNonnull: boolean = false, + ): FilesOutput { + const fileName = 'States.h'; + const stateClasses = Object.keys(schema.modules) + .map(moduleName => { + const module = schema.modules[moduleName]; + if (module.type !== 'Component') { + return; + } + + const {components} = module; + // No components in this module + if (components == null) { + return null; + } + + return Object.keys(components) + .map(componentName => { + if (components[componentName].interfaceOnly === true) { + return null; + } + + return StateTemplate({stateName: componentName}); + }) + .filter(Boolean) + .join('\n\n'); + }) + .filter(Boolean) + .join('\n\n'); + + const template = FileTemplate({libraryName, stateClasses}); + return new Map([[fileName, template]]); + }, +}; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/GenerateStateCpp-test.js b/packages/react-native-codegen/src/generators/components/__tests__/GenerateStateCpp-test.js new file mode 100644 index 00000000000000..1ccba96ba02d9b --- /dev/null +++ b/packages/react-native-codegen/src/generators/components/__tests__/GenerateStateCpp-test.js @@ -0,0 +1,27 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + * @oncall react_native + */ + +'use strict'; + +const fixtures = require('../__test_fixtures__/fixtures.js'); +const generator = require('../GenerateStateCpp.js'); + +describe('GenerateStateCpp', () => { + Object.keys(fixtures) + .sort() + .forEach(fixtureName => { + const fixture = fixtures[fixtureName]; + + it(`can generate fixture ${fixtureName}`, () => { + expect(generator.generate(fixtureName, fixture)).toMatchSnapshot(); + }); + }); +}); diff --git a/packages/react-native-codegen/src/generators/components/__tests__/GenerateStateH-test.js b/packages/react-native-codegen/src/generators/components/__tests__/GenerateStateH-test.js new file mode 100644 index 00000000000000..30b6b184b0e51d --- /dev/null +++ b/packages/react-native-codegen/src/generators/components/__tests__/GenerateStateH-test.js @@ -0,0 +1,27 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + * @oncall react_native + */ + +'use strict'; + +const fixtures = require('../__test_fixtures__/fixtures.js'); +const generator = require('../GenerateStateH.js'); + +describe('GenerateStateH', () => { + Object.keys(fixtures) + .sort() + .forEach(fixtureName => { + const fixture = fixtures[fixtureName]; + + it(`can generate fixture ${fixtureName}`, () => { + expect(generator.generate(fixtureName, fixture)).toMatchSnapshot(); + }); + }); +}); diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap index 890bbabca5ddf7..86226abbbd7279 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeH-test.js.snap @@ -16,6 +16,7 @@ Map { #include #include +#include #include #include @@ -30,7 +31,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< ArrayPropsNativeComponentComponentName, ArrayPropsNativeComponentProps, - ArrayPropsNativeComponentEventEmitter> + ArrayPropsNativeComponentEventEmitter, + ArrayPropsNativeComponentState>; } // namespace react } // namespace facebook @@ -54,6 +56,7 @@ Map { #include #include +#include #include #include @@ -68,7 +71,8 @@ JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< ArrayPropsNativeComponentComponentName, ArrayPropsNativeComponentProps, - ArrayPropsNativeComponentEventEmitter> + ArrayPropsNativeComponentEventEmitter, + ArrayPropsNativeComponentState>; } // namespace react } // namespace facebook @@ -92,6 +96,7 @@ Map { #include #include +#include #include #include @@ -106,7 +111,8 @@ JSI_EXPORT extern const char BooleanPropNativeComponentComponentName[]; using BooleanPropNativeComponentShadowNode = ConcreteViewShadowNode< BooleanPropNativeComponentComponentName, BooleanPropNativeComponentProps, - BooleanPropNativeComponentEventEmitter> + BooleanPropNativeComponentEventEmitter, + BooleanPropNativeComponentState>; } // namespace react } // namespace facebook @@ -130,6 +136,7 @@ Map { #include #include +#include #include #include @@ -144,7 +151,8 @@ JSI_EXPORT extern const char ColorPropNativeComponentComponentName[]; using ColorPropNativeComponentShadowNode = ConcreteViewShadowNode< ColorPropNativeComponentComponentName, ColorPropNativeComponentProps, - ColorPropNativeComponentEventEmitter> + ColorPropNativeComponentEventEmitter, + ColorPropNativeComponentState>; } // namespace react } // namespace facebook @@ -168,6 +176,7 @@ Map { #include #include +#include #include #include @@ -182,7 +191,8 @@ JSI_EXPORT extern const char CommandNativeComponentComponentName[]; using CommandNativeComponentShadowNode = ConcreteViewShadowNode< CommandNativeComponentComponentName, CommandNativeComponentProps, - CommandNativeComponentEventEmitter> + CommandNativeComponentEventEmitter, + CommandNativeComponentState>; } // namespace react } // namespace facebook @@ -206,6 +216,7 @@ Map { #include #include +#include #include #include @@ -220,7 +231,8 @@ JSI_EXPORT extern const char CommandNativeComponentComponentName[]; using CommandNativeComponentShadowNode = ConcreteViewShadowNode< CommandNativeComponentComponentName, CommandNativeComponentProps, - CommandNativeComponentEventEmitter> + CommandNativeComponentEventEmitter, + CommandNativeComponentState>; } // namespace react } // namespace facebook @@ -244,6 +256,7 @@ Map { #include #include +#include #include #include @@ -258,7 +271,8 @@ JSI_EXPORT extern const char DoublePropNativeComponentComponentName[]; using DoublePropNativeComponentShadowNode = ConcreteViewShadowNode< DoublePropNativeComponentComponentName, DoublePropNativeComponentProps, - DoublePropNativeComponentEventEmitter> + DoublePropNativeComponentEventEmitter, + DoublePropNativeComponentState>; } // namespace react } // namespace facebook @@ -282,6 +296,7 @@ Map { #include #include +#include #include #include @@ -296,7 +311,8 @@ JSI_EXPORT extern const char EventsNestedObjectNativeComponentComponentName[]; using EventsNestedObjectNativeComponentShadowNode = ConcreteViewShadowNode< EventsNestedObjectNativeComponentComponentName, EventsNestedObjectNativeComponentProps, - EventsNestedObjectNativeComponentEventEmitter> + EventsNestedObjectNativeComponentEventEmitter, + EventsNestedObjectNativeComponentState>; } // namespace react } // namespace facebook @@ -320,6 +336,7 @@ Map { #include #include +#include #include #include @@ -334,7 +351,8 @@ JSI_EXPORT extern const char EventsNativeComponentComponentName[]; using EventsNativeComponentShadowNode = ConcreteViewShadowNode< EventsNativeComponentComponentName, EventsNativeComponentProps, - EventsNativeComponentEventEmitter> + EventsNativeComponentEventEmitter, + EventsNativeComponentState>; } // namespace react } // namespace facebook @@ -358,6 +376,7 @@ Map { #include #include +#include #include #include @@ -388,6 +407,7 @@ Map { #include #include +#include #include #include @@ -402,7 +422,8 @@ JSI_EXPORT extern const char ExcludedAndroidComponentComponentName[]; using ExcludedAndroidComponentShadowNode = ConcreteViewShadowNode< ExcludedAndroidComponentComponentName, ExcludedAndroidComponentProps, - ExcludedAndroidComponentEventEmitter> + ExcludedAndroidComponentEventEmitter, + ExcludedAndroidComponentState>; } // namespace react } // namespace facebook @@ -426,6 +447,7 @@ Map { #include #include +#include #include #include @@ -440,7 +462,8 @@ JSI_EXPORT extern const char ExcludedAndroidIosComponentComponentName[]; using ExcludedAndroidIosComponentShadowNode = ConcreteViewShadowNode< ExcludedAndroidIosComponentComponentName, ExcludedAndroidIosComponentProps, - ExcludedAndroidIosComponentEventEmitter> + ExcludedAndroidIosComponentEventEmitter, + ExcludedAndroidIosComponentState>; } // namespace react } // namespace facebook @@ -464,6 +487,7 @@ Map { #include #include +#include #include #include @@ -478,7 +502,8 @@ JSI_EXPORT extern const char ExcludedIosComponentComponentName[]; using ExcludedIosComponentShadowNode = ConcreteViewShadowNode< ExcludedIosComponentComponentName, ExcludedIosComponentProps, - ExcludedIosComponentEventEmitter> + ExcludedIosComponentEventEmitter, + ExcludedIosComponentState>; JSI_EXPORT extern const char MultiFileIncludedNativeComponentComponentName[]; @@ -488,7 +513,8 @@ JSI_EXPORT extern const char MultiFileIncludedNativeComponentComponentName[]; using MultiFileIncludedNativeComponentShadowNode = ConcreteViewShadowNode< MultiFileIncludedNativeComponentComponentName, MultiFileIncludedNativeComponentProps, - MultiFileIncludedNativeComponentEventEmitter> + MultiFileIncludedNativeComponentEventEmitter, + MultiFileIncludedNativeComponentState>; } // namespace react } // namespace facebook @@ -512,6 +538,7 @@ Map { #include #include +#include #include #include @@ -526,7 +553,8 @@ JSI_EXPORT extern const char FloatPropNativeComponentComponentName[]; using FloatPropNativeComponentShadowNode = ConcreteViewShadowNode< FloatPropNativeComponentComponentName, FloatPropNativeComponentProps, - FloatPropNativeComponentEventEmitter> + FloatPropNativeComponentEventEmitter, + FloatPropNativeComponentState>; } // namespace react } // namespace facebook @@ -550,6 +578,7 @@ Map { #include #include +#include #include #include @@ -564,7 +593,8 @@ JSI_EXPORT extern const char ImagePropNativeComponentComponentName[]; using ImagePropNativeComponentShadowNode = ConcreteViewShadowNode< ImagePropNativeComponentComponentName, ImagePropNativeComponentProps, - ImagePropNativeComponentEventEmitter> + ImagePropNativeComponentEventEmitter, + ImagePropNativeComponentState>; } // namespace react } // namespace facebook @@ -588,6 +618,7 @@ Map { #include #include +#include #include #include @@ -602,7 +633,8 @@ JSI_EXPORT extern const char InsetsPropNativeComponentComponentName[]; using InsetsPropNativeComponentShadowNode = ConcreteViewShadowNode< InsetsPropNativeComponentComponentName, InsetsPropNativeComponentProps, - InsetsPropNativeComponentEventEmitter> + InsetsPropNativeComponentEventEmitter, + InsetsPropNativeComponentState>; } // namespace react } // namespace facebook @@ -626,6 +658,7 @@ Map { #include #include +#include #include #include @@ -640,7 +673,8 @@ JSI_EXPORT extern const char Int32EnumPropsNativeComponentComponentName[]; using Int32EnumPropsNativeComponentShadowNode = ConcreteViewShadowNode< Int32EnumPropsNativeComponentComponentName, Int32EnumPropsNativeComponentProps, - Int32EnumPropsNativeComponentEventEmitter> + Int32EnumPropsNativeComponentEventEmitter, + Int32EnumPropsNativeComponentState>; } // namespace react } // namespace facebook @@ -664,6 +698,7 @@ Map { #include #include +#include #include #include @@ -678,7 +713,8 @@ JSI_EXPORT extern const char IntegerPropNativeComponentComponentName[]; using IntegerPropNativeComponentShadowNode = ConcreteViewShadowNode< IntegerPropNativeComponentComponentName, IntegerPropNativeComponentProps, - IntegerPropNativeComponentEventEmitter> + IntegerPropNativeComponentEventEmitter, + IntegerPropNativeComponentState>; } // namespace react } // namespace facebook @@ -702,6 +738,7 @@ Map { #include #include +#include #include #include @@ -732,6 +769,7 @@ Map { #include #include +#include #include #include @@ -746,7 +784,8 @@ JSI_EXPORT extern const char ImageColorPropNativeComponentComponentName[]; using ImageColorPropNativeComponentShadowNode = ConcreteViewShadowNode< ImageColorPropNativeComponentComponentName, ImageColorPropNativeComponentProps, - ImageColorPropNativeComponentEventEmitter> + ImageColorPropNativeComponentEventEmitter, + ImageColorPropNativeComponentState>; } // namespace react } // namespace facebook @@ -770,6 +809,7 @@ Map { #include #include +#include #include #include @@ -784,7 +824,8 @@ JSI_EXPORT extern const char NoPropsNoEventsComponentComponentName[]; using NoPropsNoEventsComponentShadowNode = ConcreteViewShadowNode< NoPropsNoEventsComponentComponentName, NoPropsNoEventsComponentProps, - NoPropsNoEventsComponentEventEmitter> + NoPropsNoEventsComponentEventEmitter, + NoPropsNoEventsComponentState>; } // namespace react } // namespace facebook @@ -808,6 +849,7 @@ Map { #include #include +#include #include #include @@ -822,7 +864,8 @@ JSI_EXPORT extern const char ObjectPropsComponentName[]; using ObjectPropsShadowNode = ConcreteViewShadowNode< ObjectPropsComponentName, ObjectPropsProps, - ObjectPropsEventEmitter> + ObjectPropsEventEmitter, + ObjectPropsState>; } // namespace react } // namespace facebook @@ -846,6 +889,7 @@ Map { #include #include +#include #include #include @@ -860,7 +904,8 @@ JSI_EXPORT extern const char PointPropNativeComponentComponentName[]; using PointPropNativeComponentShadowNode = ConcreteViewShadowNode< PointPropNativeComponentComponentName, PointPropNativeComponentProps, - PointPropNativeComponentEventEmitter> + PointPropNativeComponentEventEmitter, + PointPropNativeComponentState>; } // namespace react } // namespace facebook @@ -884,6 +929,7 @@ Map { #include #include +#include #include #include @@ -898,7 +944,8 @@ JSI_EXPORT extern const char StringEnumPropsNativeComponentComponentName[]; using StringEnumPropsNativeComponentShadowNode = ConcreteViewShadowNode< StringEnumPropsNativeComponentComponentName, StringEnumPropsNativeComponentProps, - StringEnumPropsNativeComponentEventEmitter> + StringEnumPropsNativeComponentEventEmitter, + StringEnumPropsNativeComponentState>; } // namespace react } // namespace facebook @@ -922,6 +969,7 @@ Map { #include #include +#include #include #include @@ -936,7 +984,8 @@ JSI_EXPORT extern const char StringPropComponentComponentName[]; using StringPropComponentShadowNode = ConcreteViewShadowNode< StringPropComponentComponentName, StringPropComponentProps, - StringPropComponentEventEmitter> + StringPropComponentEventEmitter, + StringPropComponentState>; } // namespace react } // namespace facebook @@ -960,6 +1009,7 @@ Map { #include #include +#include #include #include @@ -974,7 +1024,8 @@ JSI_EXPORT extern const char MultiFile1NativeComponentComponentName[]; using MultiFile1NativeComponentShadowNode = ConcreteViewShadowNode< MultiFile1NativeComponentComponentName, MultiFile1NativeComponentProps, - MultiFile1NativeComponentEventEmitter> + MultiFile1NativeComponentEventEmitter, + MultiFile1NativeComponentState>; JSI_EXPORT extern const char MultiFile2NativeComponentComponentName[]; @@ -984,7 +1035,8 @@ JSI_EXPORT extern const char MultiFile2NativeComponentComponentName[]; using MultiFile2NativeComponentShadowNode = ConcreteViewShadowNode< MultiFile2NativeComponentComponentName, MultiFile2NativeComponentProps, - MultiFile2NativeComponentEventEmitter> + MultiFile2NativeComponentEventEmitter, + MultiFile2NativeComponentState>; } // namespace react } // namespace facebook @@ -1008,6 +1060,7 @@ Map { #include #include +#include #include #include @@ -1022,7 +1075,8 @@ JSI_EXPORT extern const char MultiComponent1NativeComponentComponentName[]; using MultiComponent1NativeComponentShadowNode = ConcreteViewShadowNode< MultiComponent1NativeComponentComponentName, MultiComponent1NativeComponentProps, - MultiComponent1NativeComponentEventEmitter> + MultiComponent1NativeComponentEventEmitter, + MultiComponent1NativeComponentState>; JSI_EXPORT extern const char MultiComponent2NativeComponentComponentName[]; @@ -1032,7 +1086,8 @@ JSI_EXPORT extern const char MultiComponent2NativeComponentComponentName[]; using MultiComponent2NativeComponentShadowNode = ConcreteViewShadowNode< MultiComponent2NativeComponentComponentName, MultiComponent2NativeComponentProps, - MultiComponent2NativeComponentEventEmitter> + MultiComponent2NativeComponentEventEmitter, + MultiComponent2NativeComponentState>; } // namespace react } // namespace facebook diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateCpp-test.js.snap new file mode 100644 index 00000000000000..04084fb1b5a050 --- /dev/null +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateCpp-test.js.snap @@ -0,0 +1,649 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`GenerateStateCpp can generate fixture ARRAY_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture BOOLEAN_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture COLOR_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture COMMANDS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture COMMANDS_AND_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture DOUBLE_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture EVENT_NESTED_OBJECT_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture EVENT_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture EVENTS_WITH_PAPER_NAME 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture EXCLUDE_ANDROID 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture EXCLUDE_ANDROID_IOS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture FLOAT_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture IMAGE_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture INSETS_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture INT32_ENUM_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture INTEGER_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture INTERFACE_ONLY 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture MULTI_NATIVE_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture NO_PROPS_NO_EVENTS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture OBJECT_PROPS 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture POINT_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture STRING_ENUM_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture STRING_PROP 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture TWO_COMPONENTS_DIFFERENT_FILES 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateCpp can generate fixture TWO_COMPONENTS_SAME_FILE 1`] = ` +Map { + "States.cpp" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateCpp.js + */ +#include + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateH-test.js.snap new file mode 100644 index 00000000000000..d450b769097d1e --- /dev/null +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateStateH-test.js.snap @@ -0,0 +1,1237 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`GenerateStateH can generate fixture ARRAY_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ArrayPropsNativeComponentState { + public: + ArrayPropsNativeComponentState() = default; + +#ifdef ANDROID + ArrayPropsNativeComponentState(ArrayPropsNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ArrayPropsNativeComponentState { + public: + ArrayPropsNativeComponentState() = default; + +#ifdef ANDROID + ArrayPropsNativeComponentState(ArrayPropsNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture BOOLEAN_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class BooleanPropNativeComponentState { + public: + BooleanPropNativeComponentState() = default; + +#ifdef ANDROID + BooleanPropNativeComponentState(BooleanPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture COLOR_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ColorPropNativeComponentState { + public: + ColorPropNativeComponentState() = default; + +#ifdef ANDROID + ColorPropNativeComponentState(ColorPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture COMMANDS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class CommandNativeComponentState { + public: + CommandNativeComponentState() = default; + +#ifdef ANDROID + CommandNativeComponentState(CommandNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture COMMANDS_AND_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class CommandNativeComponentState { + public: + CommandNativeComponentState() = default; + +#ifdef ANDROID + CommandNativeComponentState(CommandNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture DOUBLE_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class DoublePropNativeComponentState { + public: + DoublePropNativeComponentState() = default; + +#ifdef ANDROID + DoublePropNativeComponentState(DoublePropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture EVENT_NESTED_OBJECT_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class EventsNestedObjectNativeComponentState { + public: + EventsNestedObjectNativeComponentState() = default; + +#ifdef ANDROID + EventsNestedObjectNativeComponentState(EventsNestedObjectNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture EVENT_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class EventsNativeComponentState { + public: + EventsNativeComponentState() = default; + +#ifdef ANDROID + EventsNativeComponentState(EventsNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture EVENTS_WITH_PAPER_NAME 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture EXCLUDE_ANDROID 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ExcludedAndroidComponentState { + public: + ExcludedAndroidComponentState() = default; + +#ifdef ANDROID + ExcludedAndroidComponentState(ExcludedAndroidComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture EXCLUDE_ANDROID_IOS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ExcludedAndroidIosComponentState { + public: + ExcludedAndroidIosComponentState() = default; + +#ifdef ANDROID + ExcludedAndroidIosComponentState(ExcludedAndroidIosComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ExcludedIosComponentState { + public: + ExcludedIosComponentState() = default; + +#ifdef ANDROID + ExcludedIosComponentState(ExcludedIosComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + + +class MultiFileIncludedNativeComponentState { + public: + MultiFileIncludedNativeComponentState() = default; + +#ifdef ANDROID + MultiFileIncludedNativeComponentState(MultiFileIncludedNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture FLOAT_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class FloatPropNativeComponentState { + public: + FloatPropNativeComponentState() = default; + +#ifdef ANDROID + FloatPropNativeComponentState(FloatPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture IMAGE_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ImagePropNativeComponentState { + public: + ImagePropNativeComponentState() = default; + +#ifdef ANDROID + ImagePropNativeComponentState(ImagePropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture INSETS_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class InsetsPropNativeComponentState { + public: + InsetsPropNativeComponentState() = default; + +#ifdef ANDROID + InsetsPropNativeComponentState(InsetsPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture INT32_ENUM_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class Int32EnumPropsNativeComponentState { + public: + Int32EnumPropsNativeComponentState() = default; + +#ifdef ANDROID + Int32EnumPropsNativeComponentState(Int32EnumPropsNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture INTEGER_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class IntegerPropNativeComponentState { + public: + IntegerPropNativeComponentState() = default; + +#ifdef ANDROID + IntegerPropNativeComponentState(IntegerPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture INTERFACE_ONLY 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture MULTI_NATIVE_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ImageColorPropNativeComponentState { + public: + ImageColorPropNativeComponentState() = default; + +#ifdef ANDROID + ImageColorPropNativeComponentState(ImageColorPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture NO_PROPS_NO_EVENTS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class NoPropsNoEventsComponentState { + public: + NoPropsNoEventsComponentState() = default; + +#ifdef ANDROID + NoPropsNoEventsComponentState(NoPropsNoEventsComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture OBJECT_PROPS 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class ObjectPropsState { + public: + ObjectPropsState() = default; + +#ifdef ANDROID + ObjectPropsState(ObjectPropsState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture POINT_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class PointPropNativeComponentState { + public: + PointPropNativeComponentState() = default; + +#ifdef ANDROID + PointPropNativeComponentState(PointPropNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture STRING_ENUM_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class StringEnumPropsNativeComponentState { + public: + StringEnumPropsNativeComponentState() = default; + +#ifdef ANDROID + StringEnumPropsNativeComponentState(StringEnumPropsNativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture STRING_PROP 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class StringPropComponentState { + public: + StringPropComponentState() = default; + +#ifdef ANDROID + StringPropComponentState(StringPropComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture TWO_COMPONENTS_DIFFERENT_FILES 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class MultiFile1NativeComponentState { + public: + MultiFile1NativeComponentState() = default; + +#ifdef ANDROID + MultiFile1NativeComponentState(MultiFile1NativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + + +class MultiFile2NativeComponentState { + public: + MultiFile2NativeComponentState() = default; + +#ifdef ANDROID + MultiFile2NativeComponentState(MultiFile2NativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; + +exports[`GenerateStateH can generate fixture TWO_COMPONENTS_SAME_FILE 1`] = ` +Map { + "States.h" => " +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Do not edit this file as changes may cause incorrect behavior and will be lost + * once the code is regenerated. + * + * @generated by codegen project: GenerateStateH.js + */ +#pragma once + +#ifdef ANDROID +#include +#include +#include +#endif + +namespace facebook { +namespace react { + + +class MultiComponent1NativeComponentState { + public: + MultiComponent1NativeComponentState() = default; + +#ifdef ANDROID + MultiComponent1NativeComponentState(MultiComponent1NativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + + +class MultiComponent2NativeComponentState { + public: + MultiComponent2NativeComponentState() = default; + +#ifdef ANDROID + MultiComponent2NativeComponentState(MultiComponent2NativeComponentState const &previousState, folly::dynamic data){}; + folly::dynamic getDynamic() const { + return {}; + }; + MapBuffer getMapBuffer() const { + return MapBufferBuilder::EMPTY(); + }; +#endif +}; + + +} // namespace react +} // namespace facebook +", +} +`; diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js index 146e39b46774a9..acfdde7f5bd6ae 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleJniH.js @@ -92,6 +92,7 @@ LOCAL_SHARED_LIBRARIES := libfbjni \ libreact_render_core \ libreact_render_debug \ libreact_render_graphics \ + libreact_render_mapbuffer \ librrc_view \ libturbomodulejsijni \ libyoga diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap index 0a84dc885c4fa7..25ebbd4c262032 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap +++ b/packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleJniH-test.js.snap @@ -54,7 +54,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/SampleWithUppercaseName -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -165,7 +165,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/complex_objects -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -269,7 +269,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/cxx_only_native_modules -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -380,7 +380,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/empty_native_modules -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -491,7 +491,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/native_modules_with_type_aliases -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -610,7 +610,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/real_module_example -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -721,7 +721,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/simple_native_modules -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" @@ -840,7 +840,7 @@ LOCAL_SRC_FILES := $(subst $(LOCAL_PATH)/,,$(LOCAL_SRC_FILES)) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/react/renderer/components/two_modules_different_files -LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics librrc_view libturbomodulejsijni libyoga +LOCAL_SHARED_LIBRARIES := libfbjni libfolly_runtime libglog libjsi libreact_codegen_rncore libreact_debug libreact_nativemodule_core libreact_render_core libreact_render_debug libreact_render_graphics libreact_render_mapbuffer librrc_view libturbomodulejsijni libyoga LOCAL_CFLAGS := \\\\ -DLOG_TAG=\\\\\\"ReactNative\\\\\\" diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 05bbefbe17e07b..fc36e9a1a7ce40 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -944,7 +944,7 @@ SPEC CHECKSUMS: React-RCTTest: 06c388632dc7b30df17af01c8f9e89e641b4d31c React-RCTText: a861fbf2835299d3cc4189697cddd8bd8602afb9 React-RCTVibration: 0386f50996a153b3f39cecbe7d139763ac9a9fdf - React-rncore: 2a6ad37560e94cf7ff32e3f2ae1e708491b4c1f3 + React-rncore: 665c70690f404bbfa3948148de72689672a906d2 React-runtimeexecutor: 97dca9247f4d3cfe0733384b189c6930fbd402b7 ReactCommon: 8e39c4b24da570ea2b631accbf779b5891befe0c ScreenshotManager: 3fc534a218e7b8dde632158411d0f15b0ca8893c diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 5922794f6d8123..25c2e2179fa69a 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -243,6 +243,8 @@ def use_react_native_codegen!(spec, options={}) "EventEmitters.h", "Props.cpp", "Props.h", + "States.cpp", + "States.h", "RCTComponentViewHelpers.h", "ShadowNodes.cpp", "ShadowNodes.h"