From aee32ebc4d9383c5790e32d3d9b07b9cad0a8974 Mon Sep 17 00:00:00 2001 From: Nick Lefever Date: Thu, 11 Dec 2025 06:24:22 -0800 Subject: [PATCH 1/2] Add optional props generation support (#54724) Summary: Add support to codegen to generate native optional props for component properties that are defined as optional and have no default value. Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D87843978 --- .../react-native-codegen/src/CodegenSchema.js | 4 + .../generators/components/GeneratePropsCpp.js | 89 +++++++++++++++++-- .../generators/components/GeneratePropsH.js | 10 +++ 3 files changed, 98 insertions(+), 5 deletions(-) diff --git a/packages/react-native-codegen/src/CodegenSchema.js b/packages/react-native-codegen/src/CodegenSchema.js index 674a48279632..472d9d3084ab 100644 --- a/packages/react-native-codegen/src/CodegenSchema.js +++ b/packages/react-native-codegen/src/CodegenSchema.js @@ -128,6 +128,10 @@ export type OptionsShape = $ReadOnly<{ // Use for components currently being renamed in paper // Will use new name if it is available and fallback to this name paperComponentNameDeprecated?: string, + // Use to generate C++ Props with optional types for properties defined as optional + generateOptionalProperties?: boolean, + // Use to generate C++ Props with optional types for object properties defined as optional + generateOptionalObjectProperties?: boolean, }>; export type ExtendsPropsShape = $ReadOnly<{ diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js b/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js index 29298d90bf66..29f14c693d6b 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsCpp.js @@ -79,6 +79,7 @@ function generatePropsDiffString( component: ComponentShape, debugProps: string = '', includeGetDebugPropsImplementation?: boolean = false, + generateOptionalProperties?: boolean = false, ) { const diffProps = component.props .map(prop => { @@ -88,39 +89,116 @@ function generatePropsDiffString( case 'Int32TypeAnnotation': case 'BooleanTypeAnnotation': case 'MixedTypeAnnotation': - return ` + if ( + prop.optional && + prop.typeAnnotation.default == null && + generateOptionalProperties + ) { + return ` + if (${prop.name} != oldProps->${prop.name}) { + if (${prop.name}.has_value()) { + result["${prop.name}"] = ${prop.name}.value(); + } else { + result["${prop.name}"] = folly::dynamic(nullptr); + } + }`; + } else { + return ` if (${prop.name} != oldProps->${prop.name}) { result["${prop.name}"] = ${prop.name}; }`; + } case 'DoubleTypeAnnotation': case 'FloatTypeAnnotation': - return ` + if ( + prop.optional && + prop.typeAnnotation.default == null && + generateOptionalProperties + ) { + return ` + if ((${prop.name} != oldProps->${prop.name})) { + if (${prop.name}.has_value()) { + if (!oldProps->${prop.name}.has_value() || !(std::isnan(${prop.name}.value()) && std::isnan(oldProps->${prop.name}.value()))) { + result["${prop.name}"] = ${prop.name}.value(); + } + } else { + result["${prop.name}"] = folly::dynamic(nullptr); + } + }`; + } else { + return ` if ((${prop.name} != oldProps->${prop.name}) && !(std::isnan(${prop.name}) && std::isnan(oldProps->${prop.name}))) { result["${prop.name}"] = ${prop.name}; }`; + } case 'ArrayTypeAnnotation': case 'ObjectTypeAnnotation': case 'StringEnumTypeAnnotation': case 'Int32EnumTypeAnnotation': - return ` + if ( + prop.optional && + prop.typeAnnotation.default == null && + generateOptionalProperties + ) { + return ` + if (${prop.name} != oldProps->${prop.name}) { + if (${prop.name}.has_value()) { + result["${prop.name}"] = toDynamic(${prop.name}.value()); + } else { + result["${prop.name}"] = folly::dynamic(nullptr); + } + }`; + } else { + return ` if (${prop.name} != oldProps->${prop.name}) { result["${prop.name}"] = toDynamic(${prop.name}); }`; + } case 'ReservedPropTypeAnnotation': switch (typeAnnotation.name) { case 'ColorPrimitive': - return ` + if ( + prop.optional && + prop.typeAnnotation.default == null && + generateOptionalProperties + ) { + return ` + if (${prop.name} != oldProps->${prop.name}) { + if (${prop.name}.has_value()) { + result["${prop.name}"] = *${prop.name}.value(); + } else { + result["${prop.name}"] = folly::dynamic(nullptr); + } + }`; + } else { + return ` if (${prop.name} != oldProps->${prop.name}) { result["${prop.name}"] = *${prop.name}; }`; + } case 'ImageSourcePrimitive': case 'PointPrimitive': case 'EdgeInsetsPrimitive': case 'DimensionPrimitive': - return ` + if ( + prop.optional && + prop.typeAnnotation.default == null && + generateOptionalProperties + ) { + return ` + if (${prop.name} != oldProps->${prop.name}) { + if (${prop.name}.has_value()) { + result["${prop.name}"] = toDynamic(${prop.name}.value()); + } else { + result["${prop.name}"] = folly::dynamic(nullptr); + } + }`; + } else { + return ` if (${prop.name} != oldProps->${prop.name}) { result["${prop.name}"] = toDynamic(${prop.name}); }`; + } case 'ImageRequestPrimitive': // Shouldn't be used in props throw new Error( @@ -275,6 +353,7 @@ module.exports = { component, debugProps, includeGetDebugPropsImplementation, + component.generateOptionalProperties, ); const imports = getImports(component.props); diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js index 5ff0a8c6f0e6..8bc35bd8d3f8 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js @@ -529,6 +529,7 @@ function generatePropsString( componentName: string, props: $ReadOnlyArray>, nameParts: $ReadOnlyArray, + generateOptionalProperties?: boolean = false, ) { return props .map(prop => { @@ -542,6 +543,14 @@ function generatePropsString( prop, ); + if ( + prop.optional && + prop.typeAnnotation.default == null && + generateOptionalProperties + ) { + return `std::optional<${nativeType}> ${prop.name}${defaultInitializer};`; + } + return `${nativeType} ${prop.name}${defaultInitializer};`; }) .join('\n' + ' '); @@ -834,6 +843,7 @@ module.exports = { componentName, component.props, [], + component.generateOptionalProperties, ); const extendString = getClassExtendString(component); const extendsImports = getExtendsImports(component.extendsProps); From 09049b6b9d93d7d4874653b74dc290715aa33ae4 Mon Sep 17 00:00:00 2001 From: Nick Lefever Date: Thu, 11 Dec 2025 06:24:22 -0800 Subject: [PATCH 2/2] Add fixtures for optional props generation (#54725) Summary: See title Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D87843980 --- .../components/__test_fixtures__/fixtures.js | 972 ++++++++ ...enerateComponentDescriptorCpp-test.js.snap | 140 ++ .../GenerateComponentDescriptorH-test.js.snap | 150 ++ .../GenerateComponentHObjCpp-test.js.snap | 125 + .../GenerateEventEmitterCpp-test.js.snap | 110 + .../GenerateEventEmitterH-test.js.snap | 145 ++ .../GeneratePropsCpp-test.js.snap | 564 +++++ .../__snapshots__/GeneratePropsH-test.js.snap | 2058 ++++++++++++++--- .../GeneratePropsJavaDelegate-test.js.snap | 332 +++ .../GeneratePropsJavaInterface-test.js.snap | 169 ++ .../GeneratePropsJavaPojo-test.js.snap | 1472 ++++++++++-- .../GenerateShadowNodeCpp-test.js.snap | 115 + .../GenerateShadowNodeH-test.js.snap | 190 ++ .../GenerateStateCpp-test.js.snap | 110 + .../__snapshots__/GenerateStateH-test.js.snap | 125 + .../__snapshots__/GenerateTests-test.js.snap | 440 ++++ ...artyFabricComponentsProviderH-test.js.snap | 5 + ...abricComponentsProviderObjCpp-test.js.snap | 10 + .../GenerateViewConfigJs-test.js.snap | 196 ++ 19 files changed, 6934 insertions(+), 494 deletions(-) diff --git a/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js b/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js index 4b1693e31970..6be534fee9eb 100644 --- a/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js +++ b/packages/react-native-codegen/src/generators/components/__test_fixtures__/fixtures.js @@ -1916,6 +1916,973 @@ const EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES: SchemaType = { }, }; +const ARRAY_PROPS_WITH_OPTIONAL_GEN: SchemaType = { + modules: { + Slider: { + type: 'Component', + components: { + ArrayPropsNativeComponent: { + generateOptionalProperties: true, + extendsProps: [ + { + type: 'ReactNativeBuiltInType', + knownTypeName: 'ReactNativeCoreViewProps', + }, + ], + events: [], + props: [ + { + name: 'names', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringTypeAnnotation', + }, + }, + }, + { + name: 'disableds', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'BooleanTypeAnnotation', + }, + }, + }, + { + name: 'progress', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'Int32TypeAnnotation', + }, + }, + }, + { + name: 'radii', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'FloatTypeAnnotation', + }, + }, + }, + { + name: 'colors', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'ColorPrimitive', + }, + }, + }, + { + name: 'srcs', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'ImageSourcePrimitive', + }, + }, + }, + { + name: 'points', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'PointPrimitive', + }, + }, + }, + { + name: 'dimensions', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'DimensionPrimitive', + }, + }, + }, + { + name: 'sizes', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringEnumTypeAnnotation', + default: 'small', + options: ['small', 'large'], + }, + }, + }, + { + name: 'object', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + }, + { + name: 'array', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + // This needs to stay the same as the object above + // to confirm that the structs are generated + // with unique non-colliding names + name: 'object', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + }, + ], + }, + }, + }, + { + name: 'arrayOfArrayOfObject', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + }, + }, + { + name: 'arrayOfMixed', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'MixedTypeAnnotation', + }, + }, + }, + ], + commands: [], + }, + }, + }, + }, +}; + +const ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN: SchemaType = { + modules: { + Slider: { + type: 'Component', + components: { + ArrayPropsNativeComponent: { + generateOptionalProperties: true, + extendsProps: [ + { + type: 'ReactNativeBuiltInType', + knownTypeName: 'ReactNativeCoreViewProps', + }, + ], + events: [], + props: [ + { + name: 'nativePrimitives', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'colors', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'ColorPrimitive', + }, + }, + }, + { + name: 'srcs', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'ImageSourcePrimitive', + }, + }, + }, + { + name: 'points', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ReservedPropTypeAnnotation', + name: 'PointPrimitive', + }, + }, + }, + ], + }, + }, + }, + ], + commands: [], + }, + }, + }, + }, +}; + +const OBJECT_PROPS_WITH_OPTIONAL_GEN: SchemaType = { + modules: { + ObjectPropsNativeComponent: { + type: 'Component', + components: { + ObjectProps: { + generateOptionalProperties: true, + extendsProps: [ + { + type: 'ReactNativeBuiltInType', + knownTypeName: 'ReactNativeCoreViewProps', + }, + ], + events: [], + props: [ + { + name: 'objectProp', + optional: true, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + { + name: 'booleanProp', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: false, + }, + }, + { + name: 'floatProp', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 0.0, + }, + }, + { + name: 'intProp', + optional: true, + typeAnnotation: { + type: 'Int32TypeAnnotation', + default: 0, + }, + }, + { + name: 'stringUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: 'user_default', + }, + }, + { + name: 'booleanUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: true, + }, + }, + { + name: 'floatUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 3.14, + }, + }, + { + name: 'intUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'Int32TypeAnnotation', + default: 9999, + }, + }, + { + name: 'stringEnumProp', + optional: true, + typeAnnotation: { + type: 'StringEnumTypeAnnotation', + default: 'option1', + options: ['option1'], + }, + }, + { + name: 'intEnumProp', + optional: true, + typeAnnotation: { + type: 'Int32EnumTypeAnnotation', + default: 0, + options: [0], + }, + }, + { + name: 'objectArrayProp', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'array', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringTypeAnnotation', + }, + }, + }, + ], + }, + }, + { + name: 'objectPrimitiveRequiredProp', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'image', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'ImageSourcePrimitive', + }, + }, + { + name: 'color', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'ColorPrimitive', + }, + }, + { + name: 'point', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'PointPrimitive', + }, + }, + ], + }, + }, + { + name: 'nestedPropA', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'nestedPropB', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'nestedPropC', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + ], + }, + }, + { + name: 'nestedArrayAsProperty', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'arrayProp', + optional: false, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: false, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + }, + ], + }, + }, + ], + }, + }, + ], + commands: [], + }, + }, + }, + }, +}; + +const ALL_PROP: SchemaType = { + modules: { + AllPropsNativeComponent: { + type: 'Component', + components: { + AllProp: { + extendsProps: [ + { + type: 'ReactNativeBuiltInType', + knownTypeName: 'ReactNativeCoreViewProps', + }, + ], + events: [], + props: [ + { + name: 'stringPropNoDefault', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: null, + }, + }, + { + name: 'booleanPropNoDefault', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: null, + }, + }, + { + name: 'floatPropNoDefault', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: null, + }, + }, + { + name: 'stringProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + { + name: 'booleanProp', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: false, + }, + }, + { + name: 'floatProp', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 0.0, + }, + }, + { + name: 'intProp', + optional: true, + typeAnnotation: { + type: 'Int32TypeAnnotation', + default: 0, + }, + }, + { + name: 'stringUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: 'user_default', + }, + }, + { + name: 'booleanUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: true, + }, + }, + { + name: 'floatUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 3.14, + }, + }, + { + name: 'intUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'Int32TypeAnnotation', + default: 9999, + }, + }, + { + name: 'stringEnumProp', + optional: true, + typeAnnotation: { + type: 'StringEnumTypeAnnotation', + default: 'option1', + options: ['option1'], + }, + }, + { + name: 'intEnumProp', + optional: true, + typeAnnotation: { + type: 'Int32EnumTypeAnnotation', + default: 0, + options: [0], + }, + }, + { + name: 'objectArrayProp', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'array', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringTypeAnnotation', + }, + }, + }, + ], + }, + }, + { + name: 'objectPrimitiveRequiredProp', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'image', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'ImageSourcePrimitive', + }, + }, + { + name: 'color', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'ColorPrimitive', + }, + }, + { + name: 'point', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'PointPrimitive', + }, + }, + ], + }, + }, + { + name: 'nestedPropA', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'nestedPropB', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'nestedPropC', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + ], + }, + }, + { + name: 'nestedArrayAsProperty', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'arrayProp', + optional: false, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: false, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + }, + ], + }, + }, + ], + commands: [], + }, + }, + }, + }, +}; + +const ALL_PROP_WITH_OPTIONAL_GEN: SchemaType = { + modules: { + AllPropsNativeComponent: { + type: 'Component', + components: { + AllPropWithOptionalGen: { + generateOptionalProperties: true, + extendsProps: [ + { + type: 'ReactNativeBuiltInType', + knownTypeName: 'ReactNativeCoreViewProps', + }, + ], + events: [], + props: [ + { + name: 'stringPropNoDefault', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: null, + }, + }, + { + name: 'booleanPropNoDefault', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: null, + }, + }, + { + name: 'floatPropNoDefault', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: null, + }, + }, + { + name: 'stringProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + { + name: 'booleanProp', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: false, + }, + }, + { + name: 'floatProp', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 0.0, + }, + }, + { + name: 'intProp', + optional: true, + typeAnnotation: { + type: 'Int32TypeAnnotation', + default: 0, + }, + }, + { + name: 'stringUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: 'user_default', + }, + }, + { + name: 'booleanUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: true, + }, + }, + { + name: 'floatUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 3.14, + }, + }, + { + name: 'intUserDefaultProp', + optional: true, + typeAnnotation: { + type: 'Int32TypeAnnotation', + default: 9999, + }, + }, + { + name: 'stringEnumProp', + optional: true, + typeAnnotation: { + type: 'StringEnumTypeAnnotation', + default: 'option1', + options: ['option1'], + }, + }, + { + name: 'intEnumProp', + optional: true, + typeAnnotation: { + type: 'Int32EnumTypeAnnotation', + default: 0, + options: [0], + }, + }, + { + name: 'objectArrayProp', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'array', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringTypeAnnotation', + }, + }, + }, + ], + }, + }, + { + name: 'objectPrimitiveRequiredProp', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'image', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'ImageSourcePrimitive', + }, + }, + { + name: 'color', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'ColorPrimitive', + }, + }, + { + name: 'point', + optional: true, + typeAnnotation: { + type: 'ReservedPropTypeAnnotation', + name: 'PointPrimitive', + }, + }, + ], + }, + }, + { + name: 'nestedPropA', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'nestedPropB', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'nestedPropC', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + ], + }, + }, + { + name: 'nestedArrayAsProperty', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'arrayProp', + optional: false, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: false, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', + }, + }, + ], + }, + }, + }, + ], + }, + }, + ], + commands: [], + }, + }, + }, + }, +}; + module.exports = { NO_PROPS_NO_EVENTS, INTERFACE_ONLY, @@ -1946,4 +2913,9 @@ module.exports = { EXCLUDE_ANDROID, EXCLUDE_ANDROID_IOS, EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES, + ARRAY_PROPS_WITH_OPTIONAL_GEN, + ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN, + OBJECT_PROPS_WITH_OPTIONAL_GEN, + ALL_PROP, + ALL_PROP_WITH_OPTIONAL_GEN, }; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorCpp-test.js.snap index 84accf396ae9..06e0e9942c2e 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorCpp-test.js.snap @@ -1,5 +1,61 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateComponentDescriptorCpp can generate fixture ALL_PROP 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorCpp.js + */ + +#include +#include +#include + +namespace facebook::react { + +void ALL_PROP_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorCpp can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorCpp.js + */ + +#include +#include +#include + +namespace facebook::react { + +void ALL_PROP_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "ComponentDescriptors.cpp" => " @@ -56,6 +112,62 @@ registry->add(concreteComponentDescriptorProvider " +/** + * 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: GenerateComponentDescriptorCpp.js + */ + +#include +#include +#include + +namespace facebook::react { + +void ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorCpp.js + */ + +#include +#include +#include + +namespace facebook::react { + +void ARRAY_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorCpp can generate fixture BOOLEAN_PROP 1`] = ` Map { "ComponentDescriptors.cpp" => " @@ -673,6 +785,34 @@ registry->add(concreteComponentDescriptorProvider " +/** + * 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: GenerateComponentDescriptorCpp.js + */ + +#include +#include +#include + +namespace facebook::react { + +void OBJECT_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorCpp can generate fixture POINT_PROP 1`] = ` Map { "ComponentDescriptors.cpp" => " diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorH-test.js.snap index 605f4a219389..382340f857a6 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentDescriptorH-test.js.snap @@ -1,5 +1,65 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateComponentDescriptorH can generate fixture ALL_PROP 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorH.js + */ + +#pragma once + +#include +#include +#include + +namespace facebook::react { + +using AllPropComponentDescriptor = ConcreteComponentDescriptor; + +void ALL_PROP_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorH can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorH.js + */ + +#pragma once + +#include +#include +#include + +namespace facebook::react { + +using AllPropWithOptionalGenComponentDescriptor = ConcreteComponentDescriptor; + +void ALL_PROP_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS 1`] = ` Map { "ComponentDescriptors.h" => " @@ -60,6 +120,66 @@ void ARRAY_PROPS_WITH_NESTED_OBJECT_registerComponentDescriptorsFromCodegen( } `; +exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorH.js + */ + +#pragma once + +#include +#include +#include + +namespace facebook::react { + +using ArrayPropsNativeComponentComponentDescriptor = ConcreteComponentDescriptor; + +void ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorH.js + */ + +#pragma once + +#include +#include +#include + +namespace facebook::react { + +using ArrayPropsNativeComponentComponentDescriptor = ConcreteComponentDescriptor; + +void ARRAY_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorH can generate fixture BOOLEAN_PROP 1`] = ` Map { "ComponentDescriptors.h" => " @@ -721,6 +841,36 @@ void OBJECT_PROPS_registerComponentDescriptorsFromCodegen( } `; +exports[`GenerateComponentDescriptorH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ComponentDescriptors.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: GenerateComponentDescriptorH.js + */ + +#pragma once + +#include +#include +#include + +namespace facebook::react { + +using ObjectPropsComponentDescriptor = ConcreteComponentDescriptor; + +void OBJECT_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorH can generate fixture POINT_PROP 1`] = ` Map { "ComponentDescriptors.h" => " diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap index ec36879712a1..3b4436fe56e2 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateComponentHObjCpp-test.js.snap @@ -1,5 +1,55 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateComponentHObjCpp can generate fixture ALL_PROP 1`] = ` +Map { + "RCTComponentViewHelpers.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: GenerateComponentHObjCpp.js +*/ + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTAllPropViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + +exports[`GenerateComponentHObjCpp can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "RCTComponentViewHelpers.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: GenerateComponentHObjCpp.js +*/ + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTAllPropWithOptionalGenViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + exports[`GenerateComponentHObjCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "RCTComponentViewHelpers.h" => "/** @@ -50,6 +100,56 @@ NS_ASSUME_NONNULL_END", } `; +exports[`GenerateComponentHObjCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "RCTComponentViewHelpers.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: GenerateComponentHObjCpp.js +*/ + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTArrayPropsNativeComponentViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + +exports[`GenerateComponentHObjCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "RCTComponentViewHelpers.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: GenerateComponentHObjCpp.js +*/ + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTArrayPropsNativeComponentViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + exports[`GenerateComponentHObjCpp can generate fixture BOOLEAN_PROP 1`] = ` Map { "RCTComponentViewHelpers.h" => "/** @@ -763,6 +863,31 @@ NS_ASSUME_NONNULL_END", } `; +exports[`GenerateComponentHObjCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "RCTComponentViewHelpers.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: GenerateComponentHObjCpp.js +*/ + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RCTObjectPropsViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + exports[`GenerateComponentHObjCpp can generate fixture POINT_PROP 1`] = ` Map { "RCTComponentViewHelpers.h" => "/** diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterCpp-test.js.snap index 78c49307b2db..051df30ffd66 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateEventEmitterCpp-test.js.snap @@ -1,5 +1,49 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateEventEmitterCpp can generate fixture ALL_PROP 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterCpp.js + */ + +#include + + +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterCpp.js + */ + +#include + + +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + exports[`GenerateEventEmitterCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "EventEmitters.cpp" => " @@ -37,6 +81,50 @@ Map { #include +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterCpp.js + */ + +#include + + +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterCpp.js + */ + +#include + + namespace facebook::react { } // namespace facebook::react @@ -670,6 +758,28 @@ Map { #include +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterCpp.js + */ + +#include + + namespace facebook::react { } // namespace facebook::react 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 b6de40820ccb..cedfb282318c 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 @@ -1,5 +1,63 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateEventEmitterH can generate fixture ALL_PROP 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterH.js + */ +#pragma once + +#include + + +namespace facebook::react { +class AllPropEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterH.js + */ +#pragma once + +#include + + +namespace facebook::react { +class AllPropWithOptionalGenEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +} // namespace facebook::react +", +} +`; + exports[`GenerateEventEmitterH can generate fixture ARRAY_PROPS 1`] = ` Map { "EventEmitters.h" => " @@ -52,6 +110,64 @@ class ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterH.js + */ +#pragma once + +#include + + +namespace facebook::react { +class ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterH.js + */ +#pragma once + +#include + + +namespace facebook::react { +class ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + }; } // namespace facebook::react ", @@ -784,6 +900,35 @@ class ObjectPropsEventEmitter : public ViewEventEmitter { +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "EventEmitters.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: GenerateEventEmitterH.js + */ +#pragma once + +#include + + +namespace facebook::react { +class ObjectPropsEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + }; } // namespace facebook::react ", diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap index 6f20264efd38..34a27a535977 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsCpp-test.js.snap @@ -1,5 +1,287 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GeneratePropsCpp can generate fixture ALL_PROP 1`] = ` +Map { + "Props.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: GeneratePropsCpp.js + */ + +#include +#include +#include +#include + +namespace facebook::react { + +AllPropProps::AllPropProps( + const PropsParserContext &context, + const AllPropProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + stringPropNoDefault(convertRawProp(context, rawProps, \\"stringPropNoDefault\\", sourceProps.stringPropNoDefault, {})), + booleanPropNoDefault(convertRawProp(context, rawProps, \\"booleanPropNoDefault\\", sourceProps.booleanPropNoDefault, {})), + floatPropNoDefault(convertRawProp(context, rawProps, \\"floatPropNoDefault\\", sourceProps.floatPropNoDefault, {})), + stringProp(convertRawProp(context, rawProps, \\"stringProp\\", sourceProps.stringProp, {std::string{\\"\\"}})), + booleanProp(convertRawProp(context, rawProps, \\"booleanProp\\", sourceProps.booleanProp, {false})), + floatProp(convertRawProp(context, rawProps, \\"floatProp\\", sourceProps.floatProp, {0.0})), + intProp(convertRawProp(context, rawProps, \\"intProp\\", sourceProps.intProp, {0})), + stringUserDefaultProp(convertRawProp(context, rawProps, \\"stringUserDefaultProp\\", sourceProps.stringUserDefaultProp, {std::string{\\"user_default\\"}})), + booleanUserDefaultProp(convertRawProp(context, rawProps, \\"booleanUserDefaultProp\\", sourceProps.booleanUserDefaultProp, {true})), + floatUserDefaultProp(convertRawProp(context, rawProps, \\"floatUserDefaultProp\\", sourceProps.floatUserDefaultProp, {3.14})), + intUserDefaultProp(convertRawProp(context, rawProps, \\"intUserDefaultProp\\", sourceProps.intUserDefaultProp, {9999})), + stringEnumProp(convertRawProp(context, rawProps, \\"stringEnumProp\\", sourceProps.stringEnumProp, {AllPropStringEnumProp::Option1})), + intEnumProp(convertRawProp(context, rawProps, \\"intEnumProp\\", sourceProps.intEnumProp, {AllPropIntEnumProp::IntEnumProp0})), + objectArrayProp(convertRawProp(context, rawProps, \\"objectArrayProp\\", sourceProps.objectArrayProp, {})), + objectPrimitiveRequiredProp(convertRawProp(context, rawProps, \\"objectPrimitiveRequiredProp\\", sourceProps.objectPrimitiveRequiredProp, {})), + nestedPropA(convertRawProp(context, rawProps, \\"nestedPropA\\", sourceProps.nestedPropA, {})), + nestedArrayAsProperty(convertRawProp(context, rawProps, \\"nestedArrayAsProperty\\", sourceProps.nestedArrayAsProperty, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName AllPropProps::getDiffPropsImplementationTarget() const { + return \\"AllProp\\"; +} + +folly::dynamic AllPropProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = AllPropProps(); + const AllPropProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); + if (this == oldProps) { + return folly::dynamic::object(); + } + folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + + if (stringPropNoDefault != oldProps->stringPropNoDefault) { + result[\\"stringPropNoDefault\\"] = stringPropNoDefault; + } + + if (booleanPropNoDefault != oldProps->booleanPropNoDefault) { + result[\\"booleanPropNoDefault\\"] = booleanPropNoDefault; + } + + if ((floatPropNoDefault != oldProps->floatPropNoDefault) && !(std::isnan(floatPropNoDefault) && std::isnan(oldProps->floatPropNoDefault))) { + result[\\"floatPropNoDefault\\"] = floatPropNoDefault; + } + + if (stringProp != oldProps->stringProp) { + result[\\"stringProp\\"] = stringProp; + } + + if (booleanProp != oldProps->booleanProp) { + result[\\"booleanProp\\"] = booleanProp; + } + + if ((floatProp != oldProps->floatProp) && !(std::isnan(floatProp) && std::isnan(oldProps->floatProp))) { + result[\\"floatProp\\"] = floatProp; + } + + if (intProp != oldProps->intProp) { + result[\\"intProp\\"] = intProp; + } + + if (stringUserDefaultProp != oldProps->stringUserDefaultProp) { + result[\\"stringUserDefaultProp\\"] = stringUserDefaultProp; + } + + if (booleanUserDefaultProp != oldProps->booleanUserDefaultProp) { + result[\\"booleanUserDefaultProp\\"] = booleanUserDefaultProp; + } + + if ((floatUserDefaultProp != oldProps->floatUserDefaultProp) && !(std::isnan(floatUserDefaultProp) && std::isnan(oldProps->floatUserDefaultProp))) { + result[\\"floatUserDefaultProp\\"] = floatUserDefaultProp; + } + + if (intUserDefaultProp != oldProps->intUserDefaultProp) { + result[\\"intUserDefaultProp\\"] = intUserDefaultProp; + } + + if (stringEnumProp != oldProps->stringEnumProp) { + result[\\"stringEnumProp\\"] = toDynamic(stringEnumProp); + } + + if (intEnumProp != oldProps->intEnumProp) { + result[\\"intEnumProp\\"] = toDynamic(intEnumProp); + } + + if (objectArrayProp != oldProps->objectArrayProp) { + result[\\"objectArrayProp\\"] = toDynamic(objectArrayProp); + } + + if (objectPrimitiveRequiredProp != oldProps->objectPrimitiveRequiredProp) { + result[\\"objectPrimitiveRequiredProp\\"] = toDynamic(objectPrimitiveRequiredProp); + } + + if (nestedPropA != oldProps->nestedPropA) { + result[\\"nestedPropA\\"] = toDynamic(nestedPropA); + } + + if (nestedArrayAsProperty != oldProps->nestedArrayAsProperty) { + result[\\"nestedArrayAsProperty\\"] = toDynamic(nestedArrayAsProperty); + } + return result; +} +#endif + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsCpp can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Props.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: GeneratePropsCpp.js + */ + +#include +#include +#include +#include + +namespace facebook::react { + +AllPropWithOptionalGenProps::AllPropWithOptionalGenProps( + const PropsParserContext &context, + const AllPropWithOptionalGenProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + stringPropNoDefault(convertRawProp(context, rawProps, \\"stringPropNoDefault\\", sourceProps.stringPropNoDefault, {})), + booleanPropNoDefault(convertRawProp(context, rawProps, \\"booleanPropNoDefault\\", sourceProps.booleanPropNoDefault, {})), + floatPropNoDefault(convertRawProp(context, rawProps, \\"floatPropNoDefault\\", sourceProps.floatPropNoDefault, {})), + stringProp(convertRawProp(context, rawProps, \\"stringProp\\", sourceProps.stringProp, {std::string{\\"\\"}})), + booleanProp(convertRawProp(context, rawProps, \\"booleanProp\\", sourceProps.booleanProp, {false})), + floatProp(convertRawProp(context, rawProps, \\"floatProp\\", sourceProps.floatProp, {0.0})), + intProp(convertRawProp(context, rawProps, \\"intProp\\", sourceProps.intProp, {0})), + stringUserDefaultProp(convertRawProp(context, rawProps, \\"stringUserDefaultProp\\", sourceProps.stringUserDefaultProp, {std::string{\\"user_default\\"}})), + booleanUserDefaultProp(convertRawProp(context, rawProps, \\"booleanUserDefaultProp\\", sourceProps.booleanUserDefaultProp, {true})), + floatUserDefaultProp(convertRawProp(context, rawProps, \\"floatUserDefaultProp\\", sourceProps.floatUserDefaultProp, {3.14})), + intUserDefaultProp(convertRawProp(context, rawProps, \\"intUserDefaultProp\\", sourceProps.intUserDefaultProp, {9999})), + stringEnumProp(convertRawProp(context, rawProps, \\"stringEnumProp\\", sourceProps.stringEnumProp, {AllPropWithOptionalGenStringEnumProp::Option1})), + intEnumProp(convertRawProp(context, rawProps, \\"intEnumProp\\", sourceProps.intEnumProp, {AllPropWithOptionalGenIntEnumProp::IntEnumProp0})), + objectArrayProp(convertRawProp(context, rawProps, \\"objectArrayProp\\", sourceProps.objectArrayProp, {})), + objectPrimitiveRequiredProp(convertRawProp(context, rawProps, \\"objectPrimitiveRequiredProp\\", sourceProps.objectPrimitiveRequiredProp, {})), + nestedPropA(convertRawProp(context, rawProps, \\"nestedPropA\\", sourceProps.nestedPropA, {})), + nestedArrayAsProperty(convertRawProp(context, rawProps, \\"nestedArrayAsProperty\\", sourceProps.nestedArrayAsProperty, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName AllPropWithOptionalGenProps::getDiffPropsImplementationTarget() const { + return \\"AllPropWithOptionalGen\\"; +} + +folly::dynamic AllPropWithOptionalGenProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = AllPropWithOptionalGenProps(); + const AllPropWithOptionalGenProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); + if (this == oldProps) { + return folly::dynamic::object(); + } + folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + + if (stringPropNoDefault != oldProps->stringPropNoDefault) { + if (stringPropNoDefault.has_value()) { + result[\\"stringPropNoDefault\\"] = stringPropNoDefault.value(); + } else { + result[\\"stringPropNoDefault\\"] = folly::dynamic(nullptr); + } + } + + if (booleanPropNoDefault != oldProps->booleanPropNoDefault) { + if (booleanPropNoDefault.has_value()) { + result[\\"booleanPropNoDefault\\"] = booleanPropNoDefault.value(); + } else { + result[\\"booleanPropNoDefault\\"] = folly::dynamic(nullptr); + } + } + + if ((floatPropNoDefault != oldProps->floatPropNoDefault)) { + if (floatPropNoDefault.has_value()) { + if (!oldProps->floatPropNoDefault.has_value() || !(std::isnan(floatPropNoDefault.value()) && std::isnan(oldProps->floatPropNoDefault.value()))) { + result[\\"floatPropNoDefault\\"] = floatPropNoDefault.value(); + } + } else { + result[\\"floatPropNoDefault\\"] = folly::dynamic(nullptr); + } + } + + if (stringProp != oldProps->stringProp) { + result[\\"stringProp\\"] = stringProp; + } + + if (booleanProp != oldProps->booleanProp) { + result[\\"booleanProp\\"] = booleanProp; + } + + if ((floatProp != oldProps->floatProp) && !(std::isnan(floatProp) && std::isnan(oldProps->floatProp))) { + result[\\"floatProp\\"] = floatProp; + } + + if (intProp != oldProps->intProp) { + result[\\"intProp\\"] = intProp; + } + + if (stringUserDefaultProp != oldProps->stringUserDefaultProp) { + result[\\"stringUserDefaultProp\\"] = stringUserDefaultProp; + } + + if (booleanUserDefaultProp != oldProps->booleanUserDefaultProp) { + result[\\"booleanUserDefaultProp\\"] = booleanUserDefaultProp; + } + + if ((floatUserDefaultProp != oldProps->floatUserDefaultProp) && !(std::isnan(floatUserDefaultProp) && std::isnan(oldProps->floatUserDefaultProp))) { + result[\\"floatUserDefaultProp\\"] = floatUserDefaultProp; + } + + if (intUserDefaultProp != oldProps->intUserDefaultProp) { + result[\\"intUserDefaultProp\\"] = intUserDefaultProp; + } + + if (stringEnumProp != oldProps->stringEnumProp) { + result[\\"stringEnumProp\\"] = toDynamic(stringEnumProp); + } + + if (intEnumProp != oldProps->intEnumProp) { + result[\\"intEnumProp\\"] = toDynamic(intEnumProp); + } + + if (objectArrayProp != oldProps->objectArrayProp) { + result[\\"objectArrayProp\\"] = toDynamic(objectArrayProp); + } + + if (objectPrimitiveRequiredProp != oldProps->objectPrimitiveRequiredProp) { + result[\\"objectPrimitiveRequiredProp\\"] = toDynamic(objectPrimitiveRequiredProp); + } + + if (nestedPropA != oldProps->nestedPropA) { + result[\\"nestedPropA\\"] = toDynamic(nestedPropA); + } + + if (nestedArrayAsProperty != oldProps->nestedArrayAsProperty) { + result[\\"nestedArrayAsProperty\\"] = toDynamic(nestedArrayAsProperty); + } + return result; +} +#endif + +} // namespace facebook::react +", +} +`; + exports[`GeneratePropsCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "Props.cpp" => " @@ -168,6 +450,230 @@ folly::dynamic ArrayPropsNativeComponentProps::getDiffProps( } `; +exports[`GeneratePropsCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Props.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: GeneratePropsCpp.js + */ + +#include +#include +#include + +namespace facebook::react { + +ArrayPropsNativeComponentProps::ArrayPropsNativeComponentProps( + const PropsParserContext &context, + const ArrayPropsNativeComponentProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + nativePrimitives(convertRawProp(context, rawProps, \\"nativePrimitives\\", sourceProps.nativePrimitives, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName ArrayPropsNativeComponentProps::getDiffPropsImplementationTarget() const { + return \\"ArrayPropsNativeComponent\\"; +} + +folly::dynamic ArrayPropsNativeComponentProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = ArrayPropsNativeComponentProps(); + const ArrayPropsNativeComponentProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); + if (this == oldProps) { + return folly::dynamic::object(); + } + folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + + if (nativePrimitives != oldProps->nativePrimitives) { + if (nativePrimitives.has_value()) { + result[\\"nativePrimitives\\"] = toDynamic(nativePrimitives.value()); + } else { + result[\\"nativePrimitives\\"] = folly::dynamic(nullptr); + } + } + return result; +} +#endif + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Props.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: GeneratePropsCpp.js + */ + +#include +#include +#include +#include +#include + +namespace facebook::react { + +ArrayPropsNativeComponentProps::ArrayPropsNativeComponentProps( + const PropsParserContext &context, + const ArrayPropsNativeComponentProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + names(convertRawProp(context, rawProps, \\"names\\", sourceProps.names, {})), + disableds(convertRawProp(context, rawProps, \\"disableds\\", sourceProps.disableds, {})), + progress(convertRawProp(context, rawProps, \\"progress\\", sourceProps.progress, {})), + radii(convertRawProp(context, rawProps, \\"radii\\", sourceProps.radii, {})), + colors(convertRawProp(context, rawProps, \\"colors\\", sourceProps.colors, {})), + srcs(convertRawProp(context, rawProps, \\"srcs\\", sourceProps.srcs, {})), + points(convertRawProp(context, rawProps, \\"points\\", sourceProps.points, {})), + dimensions(convertRawProp(context, rawProps, \\"dimensions\\", sourceProps.dimensions, {})), + sizes(convertRawProp(context, rawProps, \\"sizes\\", ArrayPropsNativeComponentSizesMaskWrapped{ .value = sourceProps.sizes }, {static_cast(ArrayPropsNativeComponentSizes::Small)}).value), + object(convertRawProp(context, rawProps, \\"object\\", sourceProps.object, {})), + array(convertRawProp(context, rawProps, \\"array\\", sourceProps.array, {})), + arrayOfArrayOfObject(convertRawProp(context, rawProps, \\"arrayOfArrayOfObject\\", sourceProps.arrayOfArrayOfObject, {})), + arrayOfMixed(convertRawProp(context, rawProps, \\"arrayOfMixed\\", sourceProps.arrayOfMixed, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName ArrayPropsNativeComponentProps::getDiffPropsImplementationTarget() const { + return \\"ArrayPropsNativeComponent\\"; +} + +folly::dynamic ArrayPropsNativeComponentProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = ArrayPropsNativeComponentProps(); + const ArrayPropsNativeComponentProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); + if (this == oldProps) { + return folly::dynamic::object(); + } + folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + + if (names != oldProps->names) { + if (names.has_value()) { + result[\\"names\\"] = toDynamic(names.value()); + } else { + result[\\"names\\"] = folly::dynamic(nullptr); + } + } + + if (disableds != oldProps->disableds) { + if (disableds.has_value()) { + result[\\"disableds\\"] = toDynamic(disableds.value()); + } else { + result[\\"disableds\\"] = folly::dynamic(nullptr); + } + } + + if (progress != oldProps->progress) { + if (progress.has_value()) { + result[\\"progress\\"] = toDynamic(progress.value()); + } else { + result[\\"progress\\"] = folly::dynamic(nullptr); + } + } + + if (radii != oldProps->radii) { + if (radii.has_value()) { + result[\\"radii\\"] = toDynamic(radii.value()); + } else { + result[\\"radii\\"] = folly::dynamic(nullptr); + } + } + + if (colors != oldProps->colors) { + if (colors.has_value()) { + result[\\"colors\\"] = toDynamic(colors.value()); + } else { + result[\\"colors\\"] = folly::dynamic(nullptr); + } + } + + if (srcs != oldProps->srcs) { + if (srcs.has_value()) { + result[\\"srcs\\"] = toDynamic(srcs.value()); + } else { + result[\\"srcs\\"] = folly::dynamic(nullptr); + } + } + + if (points != oldProps->points) { + if (points.has_value()) { + result[\\"points\\"] = toDynamic(points.value()); + } else { + result[\\"points\\"] = folly::dynamic(nullptr); + } + } + + if (dimensions != oldProps->dimensions) { + if (dimensions.has_value()) { + result[\\"dimensions\\"] = toDynamic(dimensions.value()); + } else { + result[\\"dimensions\\"] = folly::dynamic(nullptr); + } + } + + if (sizes != oldProps->sizes) { + if (sizes.has_value()) { + result[\\"sizes\\"] = toDynamic(sizes.value()); + } else { + result[\\"sizes\\"] = folly::dynamic(nullptr); + } + } + + if (object != oldProps->object) { + if (object.has_value()) { + result[\\"object\\"] = toDynamic(object.value()); + } else { + result[\\"object\\"] = folly::dynamic(nullptr); + } + } + + if (array != oldProps->array) { + if (array.has_value()) { + result[\\"array\\"] = toDynamic(array.value()); + } else { + result[\\"array\\"] = folly::dynamic(nullptr); + } + } + + if (arrayOfArrayOfObject != oldProps->arrayOfArrayOfObject) { + if (arrayOfArrayOfObject.has_value()) { + result[\\"arrayOfArrayOfObject\\"] = toDynamic(arrayOfArrayOfObject.value()); + } else { + result[\\"arrayOfArrayOfObject\\"] = folly::dynamic(nullptr); + } + } + + if (arrayOfMixed != oldProps->arrayOfMixed) { + if (arrayOfMixed.has_value()) { + result[\\"arrayOfMixed\\"] = toDynamic(arrayOfMixed.value()); + } else { + result[\\"arrayOfMixed\\"] = folly::dynamic(nullptr); + } + } + return result; +} +#endif + +} // namespace facebook::react +", +} +`; + exports[`GeneratePropsCpp can generate fixture BOOLEAN_PROP 1`] = ` Map { "Props.cpp" => " @@ -1425,6 +1931,64 @@ folly::dynamic ObjectPropsProps::getDiffProps( } `; +exports[`GeneratePropsCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Props.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: GeneratePropsCpp.js + */ + +#include +#include +#include +#include + +namespace facebook::react { + +ObjectPropsProps::ObjectPropsProps( + const PropsParserContext &context, + const ObjectPropsProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + objectProp(convertRawProp(context, rawProps, \\"objectProp\\", sourceProps.objectProp, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName ObjectPropsProps::getDiffPropsImplementationTarget() const { + return \\"ObjectProps\\"; +} + +folly::dynamic ObjectPropsProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = ObjectPropsProps(); + const ObjectPropsProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); + if (this == oldProps) { + return folly::dynamic::object(); + } + folly::dynamic result = HostPlatformViewProps::getDiffProps(prevProps); + + if (objectProp != oldProps->objectProp) { + if (objectProp.has_value()) { + result[\\"objectProp\\"] = toDynamic(objectProp.value()); + } else { + result[\\"objectProp\\"] = folly::dynamic(nullptr); + } + } + return result; +} +#endif + +} // namespace facebook::react +", +} +`; + exports[`GeneratePropsCpp can generate fixture POINT_PROP 1`] = ` Map { "Props.cpp" => " diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap index c99267865507..06e042555b03 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`GeneratePropsH can generate fixture ARRAY_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture ALL_PROP 1`] = ` Map { "Props.h" => " /** @@ -13,278 +13,319 @@ Map { */ #pragma once -#include +#include #include #include -#include #include #include #include #include #include #include -#include namespace facebook::react { -using ArrayPropsNativeComponentSizesMask = uint32_t; - -struct ArrayPropsNativeComponentSizesMaskWrapped { - ArrayPropsNativeComponentSizesMask value; -}; - -enum class ArrayPropsNativeComponentSizes: ArrayPropsNativeComponentSizesMask { - Small = 1 << 0, - Large = 1 << 1 -}; +enum class AllPropStringEnumProp { Option1 }; -constexpr bool operator&( - ArrayPropsNativeComponentSizesMask const lhs, - enum ArrayPropsNativeComponentSizes const rhs) { - return lhs & static_cast(rhs); +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropStringEnumProp &result) { + auto string = (std::string)value; + if (string == \\"option1\\") { result = AllPropStringEnumProp::Option1; return; } + abort(); } -constexpr ArrayPropsNativeComponentSizesMask operator|( - ArrayPropsNativeComponentSizesMask const lhs, - enum ArrayPropsNativeComponentSizes const rhs) { - return lhs | static_cast(rhs); +static inline std::string toString(const AllPropStringEnumProp &value) { + switch (value) { + case AllPropStringEnumProp::Option1: return \\"option1\\"; + default: + abort(); + } } -constexpr void operator|=( - ArrayPropsNativeComponentSizesMask &lhs, - enum ArrayPropsNativeComponentSizes const rhs) { - lhs = lhs | static_cast(rhs); +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropStringEnumProp &value) { + return toString(value); } +#endif +enum class AllPropIntEnumProp { IntEnumProp0 = 0 }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentSizesMaskWrapped &wrapped) { - auto items = std::vector{value}; - for (const auto &item : items) { - if (item == \\"small\\") { - wrapped.value |= ArrayPropsNativeComponentSizes::Small; - continue; - } - if (item == \\"large\\") { - wrapped.value |= ArrayPropsNativeComponentSizes::Large; - continue; - } - abort(); +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropIntEnumProp &result) { + assert(value.hasType()); + auto integerValue = (int)value; + switch (integerValue) { + case 0: + result = AllPropIntEnumProp::IntEnumProp0; + return; + default: + abort(); } } -static inline std::string toString(const ArrayPropsNativeComponentSizesMaskWrapped &wrapped) { - auto result = std::string{}; - auto separator = std::string{\\", \\"}; +static inline std::string toString(const AllPropIntEnumProp &value) { + switch (value) { + case AllPropIntEnumProp::IntEnumProp0: return \\"0\\"; + default: + abort(); + } +} - if (wrapped.value & ArrayPropsNativeComponentSizes::Small) { - result += \\"small\\" + separator; - } - if (wrapped.value & ArrayPropsNativeComponentSizes::Large) { - result += \\"large\\" + separator; - } - if (!result.empty()) { - result.erase(result.length() - separator.length()); - } - return result; +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropIntEnumProp &value) { + switch (value) { + case AllPropIntEnumProp::IntEnumProp0: return 0; + default: + abort(); + } } -struct ArrayPropsNativeComponentObjectStruct { - std::string stringProp{std::string{\\"\\"}}; +#endif +struct AllPropObjectArrayPropStruct { + std::vector array{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentObjectStruct&) const = default; + bool operator==(const AllPropObjectArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"stringProp\\"] = stringProp; + result[\\"array\\"] = ::facebook::react::toDynamic(array); return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentObjectStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropObjectArrayPropStruct &result) { auto map = (std::unordered_map)value; - auto tmp_stringProp = map.find(\\"stringProp\\"); - if (tmp_stringProp != map.end()) { - fromRawValue(context, tmp_stringProp->second, result.stringProp); + auto tmp_array = map.find(\\"array\\"); + if (tmp_array != map.end()) { + fromRawValue(context, tmp_array->second, result.array); } } -static inline std::string toString(const ArrayPropsNativeComponentObjectStruct &value) { - return \\"[Object ArrayPropsNativeComponentObjectStruct]\\"; +static inline std::string toString(const AllPropObjectArrayPropStruct &value) { + return \\"[Object AllPropObjectArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentObjectStruct &value) { +static inline folly::dynamic toDynamic(const AllPropObjectArrayPropStruct &value) { return value.toDynamic(); } #endif -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { - auto items = (std::vector)value; - for (const auto &item : items) { - ArrayPropsNativeComponentObjectStruct newItem; - fromRawValue(context, item, newItem); - result.emplace_back(newItem); +struct AllPropObjectPrimitiveRequiredPropStruct { + ImageSource image{}; + SharedColor color{}; + Point point{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropObjectPrimitiveRequiredPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"image\\"] = ::facebook::react::toDynamic(image); + result[\\"color\\"] = ::facebook::react::toDynamic(color); + result[\\"point\\"] = ::facebook::react::toDynamic(point); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropObjectPrimitiveRequiredPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_image = map.find(\\"image\\"); + if (tmp_image != map.end()) { + fromRawValue(context, tmp_image->second, result.image); + } + auto tmp_color = map.find(\\"color\\"); + if (tmp_color != map.end()) { + fromRawValue(context, tmp_color->second, result.color); + } + auto tmp_point = map.find(\\"point\\"); + if (tmp_point != map.end()) { + fromRawValue(context, tmp_point->second, result.point); } } +static inline std::string toString(const AllPropObjectPrimitiveRequiredPropStruct &value) { + return \\"[Object AllPropObjectPrimitiveRequiredPropStruct]\\"; +} -struct ArrayPropsNativeComponentArrayObjectStruct { - std::string stringProp{std::string{\\"\\"}}; +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropObjectPrimitiveRequiredPropStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropNestedPropANestedPropBStruct { + std::string nestedPropC{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentArrayObjectStruct&) const = default; + bool operator==(const AllPropNestedPropANestedPropBStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"stringProp\\"] = stringProp; + result[\\"nestedPropC\\"] = nestedPropC; return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayObjectStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropNestedPropANestedPropBStruct &result) { auto map = (std::unordered_map)value; - auto tmp_stringProp = map.find(\\"stringProp\\"); - if (tmp_stringProp != map.end()) { - fromRawValue(context, tmp_stringProp->second, result.stringProp); + auto tmp_nestedPropC = map.find(\\"nestedPropC\\"); + if (tmp_nestedPropC != map.end()) { + fromRawValue(context, tmp_nestedPropC->second, result.nestedPropC); } } -static inline std::string toString(const ArrayPropsNativeComponentArrayObjectStruct &value) { - return \\"[Object ArrayPropsNativeComponentArrayObjectStruct]\\"; +static inline std::string toString(const AllPropNestedPropANestedPropBStruct &value) { + return \\"[Object AllPropNestedPropANestedPropBStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayObjectStruct &value) { +static inline folly::dynamic toDynamic(const AllPropNestedPropANestedPropBStruct &value) { return value.toDynamic(); } #endif -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { - auto items = (std::vector)value; - for (const auto &item : items) { - ArrayPropsNativeComponentArrayObjectStruct newItem; - fromRawValue(context, item, newItem); - result.emplace_back(newItem); +struct AllPropNestedPropAStruct { + AllPropNestedPropANestedPropBStruct nestedPropB{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropNestedPropAStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"nestedPropB\\"] = ::facebook::react::toDynamic(nestedPropB); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropNestedPropAStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_nestedPropB = map.find(\\"nestedPropB\\"); + if (tmp_nestedPropB != map.end()) { + fromRawValue(context, tmp_nestedPropB->second, result.nestedPropB); } } +static inline std::string toString(const AllPropNestedPropAStruct &value) { + return \\"[Object AllPropNestedPropAStruct]\\"; +} -struct ArrayPropsNativeComponentArrayStruct { - std::vector object{}; +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropNestedPropAStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropNestedArrayAsPropertyArrayPropStruct { + std::string stringProp{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentArrayStruct&) const = default; + bool operator==(const AllPropNestedArrayAsPropertyArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"object\\"] = ::facebook::react::toDynamic(object); + result[\\"stringProp\\"] = stringProp; return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropNestedArrayAsPropertyArrayPropStruct &result) { auto map = (std::unordered_map)value; - auto tmp_object = map.find(\\"object\\"); - if (tmp_object != map.end()) { - fromRawValue(context, tmp_object->second, result.object); + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); } } -static inline std::string toString(const ArrayPropsNativeComponentArrayStruct &value) { - return \\"[Object ArrayPropsNativeComponentArrayStruct]\\"; +static inline std::string toString(const AllPropNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object AllPropNestedArrayAsPropertyArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayStruct &value) { +static inline folly::dynamic toDynamic(const AllPropNestedArrayAsPropertyArrayPropStruct &value) { return value.toDynamic(); } #endif -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { auto items = (std::vector)value; for (const auto &item : items) { - ArrayPropsNativeComponentArrayStruct newItem; + AllPropNestedArrayAsPropertyArrayPropStruct newItem; fromRawValue(context, item, newItem); result.emplace_back(newItem); } } -struct ArrayPropsNativeComponentArrayOfArrayOfObjectStruct { - std::string stringProp{std::string{\\"\\"}}; +struct AllPropNestedArrayAsPropertyStruct { + std::vector arrayProp{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct&) const = default; + bool operator==(const AllPropNestedArrayAsPropertyStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"stringProp\\"] = stringProp; + result[\\"arrayProp\\"] = ::facebook::react::toDynamic(arrayProp); return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropNestedArrayAsPropertyStruct &result) { auto map = (std::unordered_map)value; - auto tmp_stringProp = map.find(\\"stringProp\\"); - if (tmp_stringProp != map.end()) { - fromRawValue(context, tmp_stringProp->second, result.stringProp); + auto tmp_arrayProp = map.find(\\"arrayProp\\"); + if (tmp_arrayProp != map.end()) { + fromRawValue(context, tmp_arrayProp->second, result.arrayProp); } } -static inline std::string toString(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { - return \\"[Object ArrayPropsNativeComponentArrayOfArrayOfObjectStruct]\\"; +static inline std::string toString(const AllPropNestedArrayAsPropertyStruct &value) { + return \\"[Object AllPropNestedArrayAsPropertyStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { +static inline folly::dynamic toDynamic(const AllPropNestedArrayAsPropertyStruct &value) { return value.toDynamic(); } #endif - -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector> &result) { - auto items = (std::vector>)value; - for (const std::vector &item : items) { - auto nestedArray = std::vector{}; - for (const RawValue &nestedItem : item) { - ArrayPropsNativeComponentArrayOfArrayOfObjectStruct newItem; - fromRawValue(context, nestedItem, newItem); - nestedArray.emplace_back(newItem); - } - result.emplace_back(nestedArray); - } -} - -class ArrayPropsNativeComponentProps final : public ViewProps { +class AllPropProps final : public ViewProps { public: - ArrayPropsNativeComponentProps() = default; - ArrayPropsNativeComponentProps(const PropsParserContext& context, const ArrayPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + AllPropProps() = default; + AllPropProps(const PropsParserContext& context, const AllPropProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - std::vector names{}; - std::vector disableds{}; - std::vector progress{}; - std::vector radii{}; - std::vector colors{}; - std::vector srcs{}; - std::vector points{}; - std::vector dimensions{}; - ArrayPropsNativeComponentSizesMask sizes{static_cast(ArrayPropsNativeComponentSizes::Small)}; - std::vector object{}; - std::vector array{}; - std::vector> arrayOfArrayOfObject{}; - std::vector arrayOfMixed{}; + std::string stringPropNoDefault{}; + bool booleanPropNoDefault{}; + Float floatPropNoDefault{}; + std::string stringProp{std::string{\\"\\"}}; + bool booleanProp{false}; + Float floatProp{0.0}; + int intProp{0}; + std::string stringUserDefaultProp{std::string{\\"user_default\\"}}; + bool booleanUserDefaultProp{true}; + Float floatUserDefaultProp{3.14}; + int intUserDefaultProp{9999}; + AllPropStringEnumProp stringEnumProp{AllPropStringEnumProp::Option1}; + AllPropIntEnumProp intEnumProp{AllPropIntEnumProp::IntEnumProp0}; + AllPropObjectArrayPropStruct objectArrayProp{}; + AllPropObjectPrimitiveRequiredPropStruct objectPrimitiveRequiredProp{}; + AllPropNestedPropAStruct nestedPropA{}; + AllPropNestedArrayAsPropertyStruct nestedArrayAsProperty{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -300,7 +341,7 @@ class ArrayPropsNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +exports[`GeneratePropsH can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` Map { "Props.h" => " /** @@ -325,61 +366,1093 @@ Map { namespace facebook::react { -struct ArrayPropsNativeComponentNativePrimitivesStruct { - std::vector colors{}; +enum class AllPropWithOptionalGenStringEnumProp { Option1 }; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenStringEnumProp &result) { + auto string = (std::string)value; + if (string == \\"option1\\") { result = AllPropWithOptionalGenStringEnumProp::Option1; return; } + abort(); +} + +static inline std::string toString(const AllPropWithOptionalGenStringEnumProp &value) { + switch (value) { + case AllPropWithOptionalGenStringEnumProp::Option1: return \\"option1\\"; + default: + abort(); + } +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenStringEnumProp &value) { + return toString(value); +} +#endif +enum class AllPropWithOptionalGenIntEnumProp { IntEnumProp0 = 0 }; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenIntEnumProp &result) { + assert(value.hasType()); + auto integerValue = (int)value; + switch (integerValue) { + case 0: + result = AllPropWithOptionalGenIntEnumProp::IntEnumProp0; + return; + default: + abort(); + } +} + +static inline std::string toString(const AllPropWithOptionalGenIntEnumProp &value) { + switch (value) { + case AllPropWithOptionalGenIntEnumProp::IntEnumProp0: return \\"0\\"; + default: + abort(); + } +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenIntEnumProp &value) { + switch (value) { + case AllPropWithOptionalGenIntEnumProp::IntEnumProp0: return 0; + default: + abort(); + } +} +#endif +struct AllPropWithOptionalGenObjectArrayPropStruct { + std::vector array{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalGenObjectArrayPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"array\\"] = ::facebook::react::toDynamic(array); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenObjectArrayPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_array = map.find(\\"array\\"); + if (tmp_array != map.end()) { + fromRawValue(context, tmp_array->second, result.array); + } +} + +static inline std::string toString(const AllPropWithOptionalGenObjectArrayPropStruct &value) { + return \\"[Object AllPropWithOptionalGenObjectArrayPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenObjectArrayPropStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct { + ImageSource image{}; + SharedColor color{}; + Point point{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"image\\"] = ::facebook::react::toDynamic(image); + result[\\"color\\"] = ::facebook::react::toDynamic(color); + result[\\"point\\"] = ::facebook::react::toDynamic(point); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_image = map.find(\\"image\\"); + if (tmp_image != map.end()) { + fromRawValue(context, tmp_image->second, result.image); + } + auto tmp_color = map.find(\\"color\\"); + if (tmp_color != map.end()) { + fromRawValue(context, tmp_color->second, result.color); + } + auto tmp_point = map.find(\\"point\\"); + if (tmp_point != map.end()) { + fromRawValue(context, tmp_point->second, result.point); + } +} + +static inline std::string toString(const AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct &value) { + return \\"[Object AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropWithOptionalGenNestedPropANestedPropBStruct { + std::string nestedPropC{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalGenNestedPropANestedPropBStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"nestedPropC\\"] = nestedPropC; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenNestedPropANestedPropBStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_nestedPropC = map.find(\\"nestedPropC\\"); + if (tmp_nestedPropC != map.end()) { + fromRawValue(context, tmp_nestedPropC->second, result.nestedPropC); + } +} + +static inline std::string toString(const AllPropWithOptionalGenNestedPropANestedPropBStruct &value) { + return \\"[Object AllPropWithOptionalGenNestedPropANestedPropBStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenNestedPropANestedPropBStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropWithOptionalGenNestedPropAStruct { + AllPropWithOptionalGenNestedPropANestedPropBStruct nestedPropB{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalGenNestedPropAStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"nestedPropB\\"] = ::facebook::react::toDynamic(nestedPropB); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenNestedPropAStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_nestedPropB = map.find(\\"nestedPropB\\"); + if (tmp_nestedPropB != map.end()) { + fromRawValue(context, tmp_nestedPropB->second, result.nestedPropB); + } +} + +static inline std::string toString(const AllPropWithOptionalGenNestedPropAStruct &value) { + return \\"[Object AllPropWithOptionalGenNestedPropAStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenNestedPropAStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} + +static inline std::string toString(const AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + AllPropWithOptionalGenNestedArrayAsPropertyArrayPropStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct AllPropWithOptionalGenNestedArrayAsPropertyStruct { + std::vector arrayProp{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalGenNestedArrayAsPropertyStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"arrayProp\\"] = ::facebook::react::toDynamic(arrayProp); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenNestedArrayAsPropertyStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_arrayProp = map.find(\\"arrayProp\\"); + if (tmp_arrayProp != map.end()) { + fromRawValue(context, tmp_arrayProp->second, result.arrayProp); + } +} + +static inline std::string toString(const AllPropWithOptionalGenNestedArrayAsPropertyStruct &value) { + return \\"[Object AllPropWithOptionalGenNestedArrayAsPropertyStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalGenNestedArrayAsPropertyStruct &value) { + return value.toDynamic(); +} +#endif +class AllPropWithOptionalGenProps final : public ViewProps { + public: + AllPropWithOptionalGenProps() = default; + AllPropWithOptionalGenProps(const PropsParserContext& context, const AllPropWithOptionalGenProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + std::optional stringPropNoDefault{}; + std::optional booleanPropNoDefault{}; + std::optional floatPropNoDefault{}; + std::string stringProp{std::string{\\"\\"}}; + bool booleanProp{false}; + Float floatProp{0.0}; + int intProp{0}; + std::string stringUserDefaultProp{std::string{\\"user_default\\"}}; + bool booleanUserDefaultProp{true}; + Float floatUserDefaultProp{3.14}; + int intUserDefaultProp{9999}; + AllPropWithOptionalGenStringEnumProp stringEnumProp{AllPropWithOptionalGenStringEnumProp::Option1}; + AllPropWithOptionalGenIntEnumProp intEnumProp{AllPropWithOptionalGenIntEnumProp::IntEnumProp0}; + AllPropWithOptionalGenObjectArrayPropStruct objectArrayProp{}; + AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct objectPrimitiveRequiredProp{}; + AllPropWithOptionalGenNestedPropAStruct nestedPropA{}; + AllPropWithOptionalGenNestedArrayAsPropertyStruct nestedArrayAsProperty{}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture ARRAY_PROPS 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +using ArrayPropsNativeComponentSizesMask = uint32_t; + +struct ArrayPropsNativeComponentSizesMaskWrapped { + ArrayPropsNativeComponentSizesMask value; +}; + +enum class ArrayPropsNativeComponentSizes: ArrayPropsNativeComponentSizesMask { + Small = 1 << 0, + Large = 1 << 1 +}; + +constexpr bool operator&( + ArrayPropsNativeComponentSizesMask const lhs, + enum ArrayPropsNativeComponentSizes const rhs) { + return lhs & static_cast(rhs); +} + +constexpr ArrayPropsNativeComponentSizesMask operator|( + ArrayPropsNativeComponentSizesMask const lhs, + enum ArrayPropsNativeComponentSizes const rhs) { + return lhs | static_cast(rhs); +} + +constexpr void operator|=( + ArrayPropsNativeComponentSizesMask &lhs, + enum ArrayPropsNativeComponentSizes const rhs) { + lhs = lhs | static_cast(rhs); +} + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentSizesMaskWrapped &wrapped) { + auto items = std::vector{value}; + for (const auto &item : items) { + if (item == \\"small\\") { + wrapped.value |= ArrayPropsNativeComponentSizes::Small; + continue; + } + if (item == \\"large\\") { + wrapped.value |= ArrayPropsNativeComponentSizes::Large; + continue; + } + abort(); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentSizesMaskWrapped &wrapped) { + auto result = std::string{}; + auto separator = std::string{\\", \\"}; + + if (wrapped.value & ArrayPropsNativeComponentSizes::Small) { + result += \\"small\\" + separator; + } + if (wrapped.value & ArrayPropsNativeComponentSizes::Large) { + result += \\"large\\" + separator; + } + if (!result.empty()) { + result.erase(result.length() - separator.length()); + } + return result; +} +struct ArrayPropsNativeComponentObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentObjectStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentObjectStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentObjectStruct &value) { + return \\"[Object ArrayPropsNativeComponentObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentObjectStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsNativeComponentArrayObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentArrayObjectStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayObjectStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentArrayObjectStruct &value) { + return \\"[Object ArrayPropsNativeComponentArrayObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayObjectStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentArrayObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsNativeComponentArrayStruct { + std::vector object{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentArrayStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"object\\"] = ::facebook::react::toDynamic(object); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_object = map.find(\\"object\\"); + if (tmp_object != map.end()) { + fromRawValue(context, tmp_object->second, result.object); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentArrayStruct &value) { + return \\"[Object ArrayPropsNativeComponentArrayStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentArrayStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsNativeComponentArrayOfArrayOfObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { + return \\"[Object ArrayPropsNativeComponentArrayOfArrayOfObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector> &result) { + auto items = (std::vector>)value; + for (const std::vector &item : items) { + auto nestedArray = std::vector{}; + for (const RawValue &nestedItem : item) { + ArrayPropsNativeComponentArrayOfArrayOfObjectStruct newItem; + fromRawValue(context, nestedItem, newItem); + nestedArray.emplace_back(newItem); + } + result.emplace_back(nestedArray); + } +} + +class ArrayPropsNativeComponentProps final : public ViewProps { + public: + ArrayPropsNativeComponentProps() = default; + ArrayPropsNativeComponentProps(const PropsParserContext& context, const ArrayPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + std::vector names{}; + std::vector disableds{}; + std::vector progress{}; + std::vector radii{}; + std::vector colors{}; + std::vector srcs{}; + std::vector points{}; + std::vector dimensions{}; + ArrayPropsNativeComponentSizesMask sizes{static_cast(ArrayPropsNativeComponentSizes::Small)}; + std::vector object{}; + std::vector array{}; + std::vector> arrayOfArrayOfObject{}; + std::vector arrayOfMixed{}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +struct ArrayPropsNativeComponentNativePrimitivesStruct { + std::vector colors{}; + std::vector srcs{}; + std::vector points{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentNativePrimitivesStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"colors\\"] = ::facebook::react::toDynamic(colors); + result[\\"srcs\\"] = ::facebook::react::toDynamic(srcs); + result[\\"points\\"] = ::facebook::react::toDynamic(points); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentNativePrimitivesStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_colors = map.find(\\"colors\\"); + if (tmp_colors != map.end()) { + fromRawValue(context, tmp_colors->second, result.colors); + } + auto tmp_srcs = map.find(\\"srcs\\"); + if (tmp_srcs != map.end()) { + fromRawValue(context, tmp_srcs->second, result.srcs); + } + auto tmp_points = map.find(\\"points\\"); + if (tmp_points != map.end()) { + fromRawValue(context, tmp_points->second, result.points); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { + return \\"[Object ArrayPropsNativeComponentNativePrimitivesStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentNativePrimitivesStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + +class ArrayPropsNativeComponentProps final : public ViewProps { + public: + ArrayPropsNativeComponentProps() = default; + ArrayPropsNativeComponentProps(const PropsParserContext& context, const ArrayPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + std::vector nativePrimitives{}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +struct ArrayPropsNativeComponentNativePrimitivesStruct { + std::vector colors{}; std::vector srcs{}; std::vector points{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentNativePrimitivesStruct&) const = default; + bool operator==(const ArrayPropsNativeComponentNativePrimitivesStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"colors\\"] = ::facebook::react::toDynamic(colors); + result[\\"srcs\\"] = ::facebook::react::toDynamic(srcs); + result[\\"points\\"] = ::facebook::react::toDynamic(points); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentNativePrimitivesStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_colors = map.find(\\"colors\\"); + if (tmp_colors != map.end()) { + fromRawValue(context, tmp_colors->second, result.colors); + } + auto tmp_srcs = map.find(\\"srcs\\"); + if (tmp_srcs != map.end()) { + fromRawValue(context, tmp_srcs->second, result.srcs); + } + auto tmp_points = map.find(\\"points\\"); + if (tmp_points != map.end()) { + fromRawValue(context, tmp_points->second, result.points); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { + return \\"[Object ArrayPropsNativeComponentNativePrimitivesStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentNativePrimitivesStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + +class ArrayPropsNativeComponentProps final : public ViewProps { + public: + ArrayPropsNativeComponentProps() = default; + ArrayPropsNativeComponentProps(const PropsParserContext& context, const ArrayPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + std::optional> nativePrimitives{}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +using ArrayPropsNativeComponentSizesMask = uint32_t; + +struct ArrayPropsNativeComponentSizesMaskWrapped { + ArrayPropsNativeComponentSizesMask value; +}; + +enum class ArrayPropsNativeComponentSizes: ArrayPropsNativeComponentSizesMask { + Small = 1 << 0, + Large = 1 << 1 +}; + +constexpr bool operator&( + ArrayPropsNativeComponentSizesMask const lhs, + enum ArrayPropsNativeComponentSizes const rhs) { + return lhs & static_cast(rhs); +} + +constexpr ArrayPropsNativeComponentSizesMask operator|( + ArrayPropsNativeComponentSizesMask const lhs, + enum ArrayPropsNativeComponentSizes const rhs) { + return lhs | static_cast(rhs); +} + +constexpr void operator|=( + ArrayPropsNativeComponentSizesMask &lhs, + enum ArrayPropsNativeComponentSizes const rhs) { + lhs = lhs | static_cast(rhs); +} + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentSizesMaskWrapped &wrapped) { + auto items = std::vector{value}; + for (const auto &item : items) { + if (item == \\"small\\") { + wrapped.value |= ArrayPropsNativeComponentSizes::Small; + continue; + } + if (item == \\"large\\") { + wrapped.value |= ArrayPropsNativeComponentSizes::Large; + continue; + } + abort(); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentSizesMaskWrapped &wrapped) { + auto result = std::string{}; + auto separator = std::string{\\", \\"}; + + if (wrapped.value & ArrayPropsNativeComponentSizes::Small) { + result += \\"small\\" + separator; + } + if (wrapped.value & ArrayPropsNativeComponentSizes::Large) { + result += \\"large\\" + separator; + } + if (!result.empty()) { + result.erase(result.length() - separator.length()); + } + return result; +} +struct ArrayPropsNativeComponentObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentObjectStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentObjectStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentObjectStruct &value) { + return \\"[Object ArrayPropsNativeComponentObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentObjectStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsNativeComponentArrayObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentArrayObjectStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"colors\\"] = ::facebook::react::toDynamic(colors); - result[\\"srcs\\"] = ::facebook::react::toDynamic(srcs); - result[\\"points\\"] = ::facebook::react::toDynamic(points); + result[\\"stringProp\\"] = stringProp; return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentNativePrimitivesStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayObjectStruct &result) { auto map = (std::unordered_map)value; - auto tmp_colors = map.find(\\"colors\\"); - if (tmp_colors != map.end()) { - fromRawValue(context, tmp_colors->second, result.colors); + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); } - auto tmp_srcs = map.find(\\"srcs\\"); - if (tmp_srcs != map.end()) { - fromRawValue(context, tmp_srcs->second, result.srcs); +} + +static inline std::string toString(const ArrayPropsNativeComponentArrayObjectStruct &value) { + return \\"[Object ArrayPropsNativeComponentArrayObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayObjectStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsNativeComponentArrayObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); } - auto tmp_points = map.find(\\"points\\"); - if (tmp_points != map.end()) { - fromRawValue(context, tmp_points->second, result.points); +} + + +struct ArrayPropsNativeComponentArrayStruct { + std::vector object{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentArrayStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"object\\"] = ::facebook::react::toDynamic(object); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_object = map.find(\\"object\\"); + if (tmp_object != map.end()) { + fromRawValue(context, tmp_object->second, result.object); } } -static inline std::string toString(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { - return \\"[Object ArrayPropsNativeComponentNativePrimitivesStruct]\\"; +static inline std::string toString(const ArrayPropsNativeComponentArrayStruct &value) { + return \\"[Object ArrayPropsNativeComponentArrayStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayStruct &value) { return value.toDynamic(); } #endif -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { auto items = (std::vector)value; for (const auto &item : items) { - ArrayPropsNativeComponentNativePrimitivesStruct newItem; + ArrayPropsNativeComponentArrayStruct newItem; fromRawValue(context, item, newItem); result.emplace_back(newItem); } } + +struct ArrayPropsNativeComponentArrayOfArrayOfObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} + +static inline std::string toString(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { + return \\"[Object ArrayPropsNativeComponentArrayOfArrayOfObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { + return value.toDynamic(); +} +#endif + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector> &result) { + auto items = (std::vector>)value; + for (const std::vector &item : items) { + auto nestedArray = std::vector{}; + for (const RawValue &nestedItem : item) { + ArrayPropsNativeComponentArrayOfArrayOfObjectStruct newItem; + fromRawValue(context, nestedItem, newItem); + nestedArray.emplace_back(newItem); + } + result.emplace_back(nestedArray); + } +} + class ArrayPropsNativeComponentProps final : public ViewProps { public: ArrayPropsNativeComponentProps() = default; @@ -387,7 +1460,19 @@ class ArrayPropsNativeComponentProps final : public ViewProps { #pragma mark - Props - std::vector nativePrimitives{}; + std::optional> names{}; + std::optional> disableds{}; + std::optional> progress{}; + std::optional> radii{}; + std::optional> colors{}; + std::optional> srcs{}; + std::optional> points{}; + std::optional> dimensions{}; + std::optional sizes{static_cast(ArrayPropsNativeComponentSizes::Small)}; + std::optional> object{}; + std::optional> array{}; + std::optional>> arrayOfArrayOfObject{}; + std::optional> arrayOfMixed{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1115,26 +2200,154 @@ static inline std::string toString(const Int32EnumPropsNativeComponentMaxInterva } } -#ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const Int32EnumPropsNativeComponentMaxInterval &value) { - switch (value) { - case Int32EnumPropsNativeComponentMaxInterval::MaxInterval0: return 0; - case Int32EnumPropsNativeComponentMaxInterval::MaxInterval1: return 1; - case Int32EnumPropsNativeComponentMaxInterval::MaxInterval2: return 2; - default: - abort(); - } -} -#endif +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const Int32EnumPropsNativeComponentMaxInterval &value) { + switch (value) { + case Int32EnumPropsNativeComponentMaxInterval::MaxInterval0: return 0; + case Int32EnumPropsNativeComponentMaxInterval::MaxInterval1: return 1; + case Int32EnumPropsNativeComponentMaxInterval::MaxInterval2: return 2; + default: + abort(); + } +} +#endif + +class Int32EnumPropsNativeComponentProps final : public ViewProps { + public: + Int32EnumPropsNativeComponentProps() = default; + Int32EnumPropsNativeComponentProps(const PropsParserContext& context, const Int32EnumPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + Int32EnumPropsNativeComponentMaxInterval maxInterval{Int32EnumPropsNativeComponentMaxInterval::MaxInterval0}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture INTEGER_PROPS 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include + +namespace facebook::react { + +class IntegerPropNativeComponentProps final : public ViewProps { + public: + IntegerPropNativeComponentProps() = default; + IntegerPropNativeComponentProps(const PropsParserContext& context, const IntegerPropNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + int progress1{0}; + int progress2{-1}; + int progress3{10}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture INTERFACE_ONLY 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include + +namespace facebook::react { + +class InterfaceOnlyComponentProps final : public ViewProps { + public: + InterfaceOnlyComponentProps() = default; + InterfaceOnlyComponentProps(const PropsParserContext& context, const InterfaceOnlyComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + std::string accessibilityHint{std::string{\\"\\"}}; + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture MIXED_PROP 1`] = ` +Map { + "Props.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: GeneratePropsH.js + */ +#pragma once + +#include +#include +#include + +namespace facebook::react { -class Int32EnumPropsNativeComponentProps final : public ViewProps { +class MixedPropNativeComponentProps final : public ViewProps { public: - Int32EnumPropsNativeComponentProps() = default; - Int32EnumPropsNativeComponentProps(const PropsParserContext& context, const Int32EnumPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + MixedPropNativeComponentProps() = default; + MixedPropNativeComponentProps(const PropsParserContext& context, const MixedPropNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - Int32EnumPropsNativeComponentMaxInterval maxInterval{Int32EnumPropsNativeComponentMaxInterval::MaxInterval0}; + folly::dynamic mixedProp{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1150,7 +2363,7 @@ class Int32EnumPropsNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture INTEGER_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture MULTI_NATIVE_PROP 1`] = ` Map { "Props.h" => " /** @@ -1166,19 +2379,23 @@ Map { #include #include #include +#include +#include +#include namespace facebook::react { -class IntegerPropNativeComponentProps final : public ViewProps { +class ImageColorPropNativeComponentProps final : public ViewProps { public: - IntegerPropNativeComponentProps() = default; - IntegerPropNativeComponentProps(const PropsParserContext& context, const IntegerPropNativeComponentProps &sourceProps, const RawProps &rawProps); + ImageColorPropNativeComponentProps() = default; + ImageColorPropNativeComponentProps(const PropsParserContext& context, const ImageColorPropNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - int progress1{0}; - int progress2{-1}; - int progress3{10}; + ImageSource thumbImage{}; + SharedColor color{}; + SharedColor thumbTintColor{}; + Point point{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1194,7 +2411,7 @@ class IntegerPropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture INTERFACE_ONLY 1`] = ` +exports[`GeneratePropsH can generate fixture NO_PROPS_NO_EVENTS 1`] = ` Map { "Props.h" => " /** @@ -1213,14 +2430,14 @@ Map { namespace facebook::react { -class InterfaceOnlyComponentProps final : public ViewProps { +class NoPropsNoEventsComponentProps final : public ViewProps { public: - InterfaceOnlyComponentProps() = default; - InterfaceOnlyComponentProps(const PropsParserContext& context, const InterfaceOnlyComponentProps &sourceProps, const RawProps &rawProps); + NoPropsNoEventsComponentProps() = default; + NoPropsNoEventsComponentProps(const PropsParserContext& context, const NoPropsNoEventsComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - std::string accessibilityHint{std::string{\\"\\"}}; + #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1236,7 +2453,7 @@ class InterfaceOnlyComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture MIXED_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture OBJECT_PROPS 1`] = ` Map { "Props.h" => " /** @@ -1249,110 +2466,415 @@ Map { */ #pragma once -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +enum class ObjectPropsStringEnumProp { Option1 }; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsStringEnumProp &result) { + auto string = (std::string)value; + if (string == \\"option1\\") { result = ObjectPropsStringEnumProp::Option1; return; } + abort(); +} + +static inline std::string toString(const ObjectPropsStringEnumProp &value) { + switch (value) { + case ObjectPropsStringEnumProp::Option1: return \\"option1\\"; + default: + abort(); + } +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsStringEnumProp &value) { + return toString(value); +} +#endif +enum class ObjectPropsIntEnumProp { IntEnumProp0 = 0 }; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsIntEnumProp &result) { + assert(value.hasType()); + auto integerValue = (int)value; + switch (integerValue) { + case 0: + result = ObjectPropsIntEnumProp::IntEnumProp0; + return; + default: + abort(); + } +} + +static inline std::string toString(const ObjectPropsIntEnumProp &value) { + switch (value) { + case ObjectPropsIntEnumProp::IntEnumProp0: return \\"0\\"; + default: + abort(); + } +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsIntEnumProp &value) { + switch (value) { + case ObjectPropsIntEnumProp::IntEnumProp0: return 0; + default: + abort(); + } +} +#endif +struct ObjectPropsObjectPropObjectArrayPropStruct { + std::vector array{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropObjectArrayPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"array\\"] = ::facebook::react::toDynamic(array); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropObjectArrayPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_array = map.find(\\"array\\"); + if (tmp_array != map.end()) { + fromRawValue(context, tmp_array->second, result.array); + } +} + +static inline std::string toString(const ObjectPropsObjectPropObjectArrayPropStruct &value) { + return \\"[Object ObjectPropsObjectPropObjectArrayPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropObjectArrayPropStruct &value) { + return value.toDynamic(); +} +#endif + +struct ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct { + ImageSource image{}; + SharedColor color{}; + Point point{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"image\\"] = ::facebook::react::toDynamic(image); + result[\\"color\\"] = ::facebook::react::toDynamic(color); + result[\\"point\\"] = ::facebook::react::toDynamic(point); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_image = map.find(\\"image\\"); + if (tmp_image != map.end()) { + fromRawValue(context, tmp_image->second, result.image); + } + auto tmp_color = map.find(\\"color\\"); + if (tmp_color != map.end()) { + fromRawValue(context, tmp_color->second, result.color); + } + auto tmp_point = map.find(\\"point\\"); + if (tmp_point != map.end()) { + fromRawValue(context, tmp_point->second, result.point); + } +} + +static inline std::string toString(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &value) { + return \\"[Object ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &value) { + return value.toDynamic(); +} +#endif + +struct ObjectPropsObjectPropNestedPropANestedPropBStruct { + std::string nestedPropC{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropNestedPropANestedPropBStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"nestedPropC\\"] = nestedPropC; + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedPropANestedPropBStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_nestedPropC = map.find(\\"nestedPropC\\"); + if (tmp_nestedPropC != map.end()) { + fromRawValue(context, tmp_nestedPropC->second, result.nestedPropC); + } +} + +static inline std::string toString(const ObjectPropsObjectPropNestedPropANestedPropBStruct &value) { + return \\"[Object ObjectPropsObjectPropNestedPropANestedPropBStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedPropANestedPropBStruct &value) { + return value.toDynamic(); +} +#endif + +struct ObjectPropsObjectPropNestedPropAStruct { + ObjectPropsObjectPropNestedPropANestedPropBStruct nestedPropB{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropNestedPropAStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"nestedPropB\\"] = ::facebook::react::toDynamic(nestedPropB); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedPropAStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_nestedPropB = map.find(\\"nestedPropB\\"); + if (tmp_nestedPropB != map.end()) { + fromRawValue(context, tmp_nestedPropB->second, result.nestedPropB); + } +} + +static inline std::string toString(const ObjectPropsObjectPropNestedPropAStruct &value) { + return \\"[Object ObjectPropsObjectPropNestedPropAStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedPropAStruct &value) { + return value.toDynamic(); +} +#endif -namespace facebook::react { +struct ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct { + std::string stringProp{std::string{\\"\\"}}; -class MixedPropNativeComponentProps final : public ViewProps { - public: - MixedPropNativeComponentProps() = default; - MixedPropNativeComponentProps(const PropsParserContext& context, const MixedPropNativeComponentProps &sourceProps, const RawProps &rawProps); -#pragma mark - Props +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct&) const = default; - folly::dynamic mixedProp{}; + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif +}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &result) { + auto map = (std::unordered_map)value; - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } +} - -}; +static inline std::string toString(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct]\\"; +} -} // namespace facebook::react -", +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { + return value.toDynamic(); } -`; +#endif -exports[`GeneratePropsH can generate fixture MULTI_NATIVE_PROP 1`] = ` -Map { - "Props.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: GeneratePropsH.js - */ -#pragma once +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} -#include -#include -#include -#include -#include -#include -namespace facebook::react { +struct ObjectPropsObjectPropNestedArrayAsPropertyStruct { + std::vector arrayProp{}; -class ImageColorPropNativeComponentProps final : public ViewProps { - public: - ImageColorPropNativeComponentProps() = default; - ImageColorPropNativeComponentProps(const PropsParserContext& context, const ImageColorPropNativeComponentProps &sourceProps, const RawProps &rawProps); -#pragma mark - Props +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyStruct&) const = default; - ImageSource thumbImage{}; - SharedColor color{}; - SharedColor thumbTintColor{}; - Point point{}; + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"arrayProp\\"] = ::facebook::react::toDynamic(arrayProp); + return result; + } +#endif +}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedArrayAsPropertyStruct &result) { + auto map = (std::unordered_map)value; - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif + auto tmp_arrayProp = map.find(\\"arrayProp\\"); + if (tmp_arrayProp != map.end()) { + fromRawValue(context, tmp_arrayProp->second, result.arrayProp); + } +} - -}; +static inline std::string toString(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { + return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyStruct]\\"; +} -} // namespace facebook::react -", +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { + return value.toDynamic(); } -`; +#endif -exports[`GeneratePropsH can generate fixture NO_PROPS_NO_EVENTS 1`] = ` -Map { - "Props.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: GeneratePropsH.js - */ -#pragma once +struct ObjectPropsObjectPropStruct { + std::string stringProp{std::string{\\"\\"}}; + bool booleanProp{false}; + Float floatProp{0.0}; + int intProp{0}; + std::string stringUserDefaultProp{std::string{\\"user_default\\"}}; + bool booleanUserDefaultProp{true}; + Float floatUserDefaultProp{3.14}; + int intUserDefaultProp{9999}; + ObjectPropsStringEnumProp stringEnumProp{ObjectPropsStringEnumProp::Option1}; + ObjectPropsIntEnumProp intEnumProp{ObjectPropsIntEnumProp::IntEnumProp0}; + ObjectPropsObjectPropObjectArrayPropStruct objectArrayProp{}; + ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct objectPrimitiveRequiredProp{}; + ObjectPropsObjectPropNestedPropAStruct nestedPropA{}; + ObjectPropsObjectPropNestedArrayAsPropertyStruct nestedArrayAsProperty{}; -#include -#include -#include -namespace facebook::react { +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropStruct&) const = default; -class NoPropsNoEventsComponentProps final : public ViewProps { + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + result[\\"booleanProp\\"] = booleanProp; + result[\\"floatProp\\"] = floatProp; + result[\\"intProp\\"] = intProp; + result[\\"stringUserDefaultProp\\"] = stringUserDefaultProp; + result[\\"booleanUserDefaultProp\\"] = booleanUserDefaultProp; + result[\\"floatUserDefaultProp\\"] = floatUserDefaultProp; + result[\\"intUserDefaultProp\\"] = intUserDefaultProp; + result[\\"stringEnumProp\\"] = ::facebook::react::toDynamic(stringEnumProp); + result[\\"intEnumProp\\"] = ::facebook::react::toDynamic(intEnumProp); + result[\\"objectArrayProp\\"] = ::facebook::react::toDynamic(objectArrayProp); + result[\\"objectPrimitiveRequiredProp\\"] = ::facebook::react::toDynamic(objectPrimitiveRequiredProp); + result[\\"nestedPropA\\"] = ::facebook::react::toDynamic(nestedPropA); + result[\\"nestedArrayAsProperty\\"] = ::facebook::react::toDynamic(nestedArrayAsProperty); + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_stringProp = map.find(\\"stringProp\\"); + if (tmp_stringProp != map.end()) { + fromRawValue(context, tmp_stringProp->second, result.stringProp); + } + auto tmp_booleanProp = map.find(\\"booleanProp\\"); + if (tmp_booleanProp != map.end()) { + fromRawValue(context, tmp_booleanProp->second, result.booleanProp); + } + auto tmp_floatProp = map.find(\\"floatProp\\"); + if (tmp_floatProp != map.end()) { + fromRawValue(context, tmp_floatProp->second, result.floatProp); + } + auto tmp_intProp = map.find(\\"intProp\\"); + if (tmp_intProp != map.end()) { + fromRawValue(context, tmp_intProp->second, result.intProp); + } + auto tmp_stringUserDefaultProp = map.find(\\"stringUserDefaultProp\\"); + if (tmp_stringUserDefaultProp != map.end()) { + fromRawValue(context, tmp_stringUserDefaultProp->second, result.stringUserDefaultProp); + } + auto tmp_booleanUserDefaultProp = map.find(\\"booleanUserDefaultProp\\"); + if (tmp_booleanUserDefaultProp != map.end()) { + fromRawValue(context, tmp_booleanUserDefaultProp->second, result.booleanUserDefaultProp); + } + auto tmp_floatUserDefaultProp = map.find(\\"floatUserDefaultProp\\"); + if (tmp_floatUserDefaultProp != map.end()) { + fromRawValue(context, tmp_floatUserDefaultProp->second, result.floatUserDefaultProp); + } + auto tmp_intUserDefaultProp = map.find(\\"intUserDefaultProp\\"); + if (tmp_intUserDefaultProp != map.end()) { + fromRawValue(context, tmp_intUserDefaultProp->second, result.intUserDefaultProp); + } + auto tmp_stringEnumProp = map.find(\\"stringEnumProp\\"); + if (tmp_stringEnumProp != map.end()) { + fromRawValue(context, tmp_stringEnumProp->second, result.stringEnumProp); + } + auto tmp_intEnumProp = map.find(\\"intEnumProp\\"); + if (tmp_intEnumProp != map.end()) { + fromRawValue(context, tmp_intEnumProp->second, result.intEnumProp); + } + auto tmp_objectArrayProp = map.find(\\"objectArrayProp\\"); + if (tmp_objectArrayProp != map.end()) { + fromRawValue(context, tmp_objectArrayProp->second, result.objectArrayProp); + } + auto tmp_objectPrimitiveRequiredProp = map.find(\\"objectPrimitiveRequiredProp\\"); + if (tmp_objectPrimitiveRequiredProp != map.end()) { + fromRawValue(context, tmp_objectPrimitiveRequiredProp->second, result.objectPrimitiveRequiredProp); + } + auto tmp_nestedPropA = map.find(\\"nestedPropA\\"); + if (tmp_nestedPropA != map.end()) { + fromRawValue(context, tmp_nestedPropA->second, result.nestedPropA); + } + auto tmp_nestedArrayAsProperty = map.find(\\"nestedArrayAsProperty\\"); + if (tmp_nestedArrayAsProperty != map.end()) { + fromRawValue(context, tmp_nestedArrayAsProperty->second, result.nestedArrayAsProperty); + } +} + +static inline std::string toString(const ObjectPropsObjectPropStruct &value) { + return \\"[Object ObjectPropsObjectPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropStruct &value) { + return value.toDynamic(); +} +#endif +class ObjectPropsProps final : public ViewProps { public: - NoPropsNoEventsComponentProps() = default; - NoPropsNoEventsComponentProps(const PropsParserContext& context, const NoPropsNoEventsComponentProps &sourceProps, const RawProps &rawProps); + ObjectPropsProps() = default; + ObjectPropsProps(const PropsParserContext& context, const ObjectPropsProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - + ObjectPropsObjectPropStruct objectProp{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1368,7 +2890,7 @@ class NoPropsNoEventsComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture OBJECT_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` Map { "Props.h" => " /** @@ -1789,7 +3311,7 @@ class ObjectPropsProps final : public ViewProps { #pragma mark - Props - ObjectPropsObjectPropStruct objectProp{}; + std::optional objectProp{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap index dafc0b2da273..ccb712e66c5a 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap @@ -1,5 +1,181 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GeneratePropsJavaDelegate can generate fixture ALL_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/AllPropManagerDelegate.java" => "/** +* 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: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.BaseViewManager; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.LayoutShadowNode; + +@SuppressWarnings(\\"deprecation\\") +public class AllPropManagerDelegate & AllPropManagerInterface> extends BaseViewManagerDelegate { + public AllPropManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case \\"stringPropNoDefault\\": + mViewManager.setStringPropNoDefault(view, value == null ? null : (String) value); + break; + case \\"booleanPropNoDefault\\": + mViewManager.setBooleanPropNoDefault(view, value == null ? null : (Boolean) value); + break; + case \\"floatPropNoDefault\\": + mViewManager.setFloatPropNoDefault(view, value == null ? null : ((Double) value).floatValue()); + break; + case \\"stringProp\\": + mViewManager.setStringProp(view, value == null ? \\"\\" : (String) value); + break; + case \\"booleanProp\\": + mViewManager.setBooleanProp(view, value == null ? false : (boolean) value); + break; + case \\"floatProp\\": + mViewManager.setFloatProp(view, value == null ? 0f : ((Double) value).floatValue()); + break; + case \\"intProp\\": + mViewManager.setIntProp(view, value == null ? 0 : ((Double) value).intValue()); + break; + case \\"stringUserDefaultProp\\": + mViewManager.setStringUserDefaultProp(view, value == null ? \\"user_default\\" : (String) value); + break; + case \\"booleanUserDefaultProp\\": + mViewManager.setBooleanUserDefaultProp(view, value == null ? true : (boolean) value); + break; + case \\"floatUserDefaultProp\\": + mViewManager.setFloatUserDefaultProp(view, value == null ? 3.14f : ((Double) value).floatValue()); + break; + case \\"intUserDefaultProp\\": + mViewManager.setIntUserDefaultProp(view, value == null ? 9999 : ((Double) value).intValue()); + break; + case \\"stringEnumProp\\": + mViewManager.setStringEnumProp(view, (String) value); + break; + case \\"intEnumProp\\": + mViewManager.setIntEnumProp(view, value == null ? 0 : ((Double) value).intValue()); + break; + case \\"objectArrayProp\\": + mViewManager.setObjectArrayProp(view, (ReadableMap) value); + break; + case \\"objectPrimitiveRequiredProp\\": + mViewManager.setObjectPrimitiveRequiredProp(view, (ReadableMap) value); + break; + case \\"nestedPropA\\": + mViewManager.setNestedPropA(view, (ReadableMap) value); + break; + case \\"nestedArrayAsProperty\\": + mViewManager.setNestedArrayAsProperty(view, (ReadableMap) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} +", +} +`; + +exports[`GeneratePropsJavaDelegate can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/AllPropWithOptionalGenManagerDelegate.java" => "/** +* 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: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.BaseViewManager; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.LayoutShadowNode; + +@SuppressWarnings(\\"deprecation\\") +public class AllPropWithOptionalGenManagerDelegate & AllPropWithOptionalGenManagerInterface> extends BaseViewManagerDelegate { + public AllPropWithOptionalGenManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case \\"stringPropNoDefault\\": + mViewManager.setStringPropNoDefault(view, value == null ? null : (String) value); + break; + case \\"booleanPropNoDefault\\": + mViewManager.setBooleanPropNoDefault(view, value == null ? null : (Boolean) value); + break; + case \\"floatPropNoDefault\\": + mViewManager.setFloatPropNoDefault(view, value == null ? null : ((Double) value).floatValue()); + break; + case \\"stringProp\\": + mViewManager.setStringProp(view, value == null ? \\"\\" : (String) value); + break; + case \\"booleanProp\\": + mViewManager.setBooleanProp(view, value == null ? false : (boolean) value); + break; + case \\"floatProp\\": + mViewManager.setFloatProp(view, value == null ? 0f : ((Double) value).floatValue()); + break; + case \\"intProp\\": + mViewManager.setIntProp(view, value == null ? 0 : ((Double) value).intValue()); + break; + case \\"stringUserDefaultProp\\": + mViewManager.setStringUserDefaultProp(view, value == null ? \\"user_default\\" : (String) value); + break; + case \\"booleanUserDefaultProp\\": + mViewManager.setBooleanUserDefaultProp(view, value == null ? true : (boolean) value); + break; + case \\"floatUserDefaultProp\\": + mViewManager.setFloatUserDefaultProp(view, value == null ? 3.14f : ((Double) value).floatValue()); + break; + case \\"intUserDefaultProp\\": + mViewManager.setIntUserDefaultProp(view, value == null ? 9999 : ((Double) value).intValue()); + break; + case \\"stringEnumProp\\": + mViewManager.setStringEnumProp(view, (String) value); + break; + case \\"intEnumProp\\": + mViewManager.setIntEnumProp(view, value == null ? 0 : ((Double) value).intValue()); + break; + case \\"objectArrayProp\\": + mViewManager.setObjectArrayProp(view, (ReadableMap) value); + break; + case \\"objectPrimitiveRequiredProp\\": + mViewManager.setObjectPrimitiveRequiredProp(view, (ReadableMap) value); + break; + case \\"nestedPropA\\": + mViewManager.setNestedPropA(view, (ReadableMap) value); + break; + case \\"nestedArrayAsProperty\\": + mViewManager.setNestedArrayAsProperty(view, (ReadableMap) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} +", +} +`; + exports[`GeneratePropsJavaDelegate can generate fixture ARRAY_PROPS 1`] = ` Map { "java/com/facebook/react/viewmanagers/ArrayPropsNativeComponentManagerDelegate.java" => "/** @@ -116,6 +292,122 @@ public class ArrayPropsNativeComponentManagerDelegate "/** +* 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: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.uimanager.BaseViewManager; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.LayoutShadowNode; + +@SuppressWarnings(\\"deprecation\\") +public class ArrayPropsNativeComponentManagerDelegate & ArrayPropsNativeComponentManagerInterface> extends BaseViewManagerDelegate { + public ArrayPropsNativeComponentManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case \\"nativePrimitives\\": + mViewManager.setNativePrimitives(view, (ReadableArray) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} +", +} +`; + +exports[`GeneratePropsJavaDelegate can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsNativeComponentManagerDelegate.java" => "/** +* 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: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.uimanager.BaseViewManager; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.LayoutShadowNode; + +@SuppressWarnings(\\"deprecation\\") +public class ArrayPropsNativeComponentManagerDelegate & ArrayPropsNativeComponentManagerInterface> extends BaseViewManagerDelegate { + public ArrayPropsNativeComponentManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case \\"names\\": + mViewManager.setNames(view, (ReadableArray) value); + break; + case \\"disableds\\": + mViewManager.setDisableds(view, (ReadableArray) value); + break; + case \\"progress\\": + mViewManager.setProgress(view, (ReadableArray) value); + break; + case \\"radii\\": + mViewManager.setRadii(view, (ReadableArray) value); + break; + case \\"colors\\": + mViewManager.setColors(view, (ReadableArray) value); + break; + case \\"srcs\\": + mViewManager.setSrcs(view, (ReadableArray) value); + break; + case \\"points\\": + mViewManager.setPoints(view, (ReadableArray) value); + break; + case \\"dimensions\\": + mViewManager.setDimensions(view, (ReadableArray) value); + break; + case \\"sizes\\": + mViewManager.setSizes(view, (ReadableArray) value); + break; + case \\"object\\": + mViewManager.setObject(view, (ReadableArray) value); + break; + case \\"array\\": + mViewManager.setArray(view, (ReadableArray) value); + break; + case \\"arrayOfArrayOfObject\\": + mViewManager.setArrayOfArrayOfObject(view, (ReadableArray) value); + break; + case \\"arrayOfMixed\\": + mViewManager.setArrayOfMixed(view, (ReadableArray) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} +", +} +`; + exports[`GeneratePropsJavaDelegate can generate fixture BOOLEAN_PROP 1`] = ` Map { "java/com/facebook/react/viewmanagers/BooleanPropNativeComponentManagerDelegate.java" => "/** @@ -992,6 +1284,46 @@ public class ObjectPropsManagerDelegate "/** +* 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: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.BaseViewManager; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.LayoutShadowNode; + +@SuppressWarnings(\\"deprecation\\") +public class ObjectPropsManagerDelegate & ObjectPropsManagerInterface> extends BaseViewManagerDelegate { + public ObjectPropsManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case \\"objectProp\\": + mViewManager.setObjectProp(view, (ReadableMap) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} +", +} +`; + exports[`GeneratePropsJavaDelegate can generate fixture POINT_PROP 1`] = ` Map { "java/com/facebook/react/viewmanagers/PointPropNativeComponentManagerDelegate.java" => "/** diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap index 5398cbdf6867..7c73b5e93477 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaInterface-test.js.snap @@ -1,5 +1,87 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GeneratePropsJavaInterface can generate fixture ALL_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/AllPropManagerInterface.java" => "/** +* 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: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; + +public interface AllPropManagerInterface extends ViewManagerWithGeneratedInterface { + void setStringPropNoDefault(T view, @Nullable String value); + void setBooleanPropNoDefault(T view, @Nullable Boolean value); + void setFloatPropNoDefault(T view, @Nullable Float value); + void setStringProp(T view, @Nullable String value); + void setBooleanProp(T view, boolean value); + void setFloatProp(T view, float value); + void setIntProp(T view, int value); + void setStringUserDefaultProp(T view, @Nullable String value); + void setBooleanUserDefaultProp(T view, boolean value); + void setFloatUserDefaultProp(T view, float value); + void setIntUserDefaultProp(T view, int value); + void setStringEnumProp(T view, @Nullable String value); + void setIntEnumProp(T view, @Nullable Integer value); + void setObjectArrayProp(T view, @Nullable ReadableMap value); + void setObjectPrimitiveRequiredProp(T view, @Nullable ReadableMap value); + void setNestedPropA(T view, @Nullable ReadableMap value); + void setNestedArrayAsProperty(T view, @Nullable ReadableMap value); +} +", +} +`; + +exports[`GeneratePropsJavaInterface can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/AllPropWithOptionalGenManagerInterface.java" => "/** +* 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: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; + +public interface AllPropWithOptionalGenManagerInterface extends ViewManagerWithGeneratedInterface { + void setStringPropNoDefault(T view, @Nullable String value); + void setBooleanPropNoDefault(T view, @Nullable Boolean value); + void setFloatPropNoDefault(T view, @Nullable Float value); + void setStringProp(T view, @Nullable String value); + void setBooleanProp(T view, boolean value); + void setFloatProp(T view, float value); + void setIntProp(T view, int value); + void setStringUserDefaultProp(T view, @Nullable String value); + void setBooleanUserDefaultProp(T view, boolean value); + void setFloatUserDefaultProp(T view, float value); + void setIntUserDefaultProp(T view, int value); + void setStringEnumProp(T view, @Nullable String value); + void setIntEnumProp(T view, @Nullable Integer value); + void setObjectArrayProp(T view, @Nullable ReadableMap value); + void setObjectPrimitiveRequiredProp(T view, @Nullable ReadableMap value); + void setNestedPropA(T view, @Nullable ReadableMap value); + void setNestedArrayAsProperty(T view, @Nullable ReadableMap value); +} +", +} +`; + exports[`GeneratePropsJavaInterface can generate fixture ARRAY_PROPS 1`] = ` Map { "java/com/facebook/react/viewmanagers/ArrayPropsNativeComponentManagerInterface.java" => "/** @@ -62,6 +144,68 @@ public interface ArrayPropsNativeComponentManagerInterface exten } `; +exports[`GeneratePropsJavaInterface can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsNativeComponentManagerInterface.java" => "/** +* 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: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; + +public interface ArrayPropsNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { + void setNativePrimitives(T view, @Nullable ReadableArray value); +} +", +} +`; + +exports[`GeneratePropsJavaInterface can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsNativeComponentManagerInterface.java" => "/** +* 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: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; + +public interface ArrayPropsNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { + void setNames(T view, @Nullable ReadableArray value); + void setDisableds(T view, @Nullable ReadableArray value); + void setProgress(T view, @Nullable ReadableArray value); + void setRadii(T view, @Nullable ReadableArray value); + void setColors(T view, @Nullable ReadableArray value); + void setSrcs(T view, @Nullable ReadableArray value); + void setPoints(T view, @Nullable ReadableArray value); + void setDimensions(T view, @Nullable ReadableArray value); + void setSizes(T view, @Nullable ReadableArray value); + void setObject(T view, @Nullable ReadableArray value); + void setArray(T view, @Nullable ReadableArray value); + void setArrayOfArrayOfObject(T view, @Nullable ReadableArray value); + void setArrayOfMixed(T view, @Nullable ReadableArray value); +} +", +} +`; + exports[`GeneratePropsJavaInterface can generate fixture BOOLEAN_PROP 1`] = ` Map { "java/com/facebook/react/viewmanagers/BooleanPropNativeComponentManagerInterface.java" => "/** @@ -581,6 +725,31 @@ public interface ObjectPropsManagerInterface extends ViewManager } `; +exports[`GeneratePropsJavaInterface can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ObjectPropsManagerInterface.java" => "/** +* 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: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; + +public interface ObjectPropsManagerInterface extends ViewManagerWithGeneratedInterface { + void setObjectProp(T view, @Nullable ReadableMap value); +} +", +} +`; + exports[`GeneratePropsJavaInterface can generate fixture POINT_PROP 1`] = ` Map { "java/com/facebook/react/viewmanagers/PointPropNativeComponentManagerInterface.java" => "/** diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaPojo-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaPojo-test.js.snap index f84e9d42bacf..faba4b075d6f 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaPojo-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaPojo-test.js.snap @@ -1,8 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture ALL_PROP 1`] = ` Map { - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsObjectElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropPropsObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -11,21 +11,55 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; + +import com.facebook.proguard.annotations.DoNotStrip; +import java.util.ArrayList; + +@DoNotStrip +public class AllPropPropsObjectArrayProp { + private ArrayList mArray; + @DoNotStrip + public ArrayList getArray() { + return mArray; + } +} +", + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropPropsObjectPrimitiveRequiredProp.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; @DoNotStrip -public class ArrayPropsNativeComponentPropsObjectElement { - private @Nullable String mStringProp; +public class AllPropPropsObjectPrimitiveRequiredProp { + private @Nullable ReadableMap mImage; + private @Nullable Integer mColor; + private @Nullable ReadableMap mPoint; @DoNotStrip - public @Nullable String getStringProp() { - return mStringProp; + public @Nullable ReadableMap getImage() { + return mImage; + } + @DoNotStrip + public @Nullable Integer getColor() { + return mColor; + } + @DoNotStrip + public @Nullable ReadableMap getPoint() { + return mPoint; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElementObjectElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropPropsNestedPropANestedPropB.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -34,21 +68,21 @@ public class ArrayPropsNativeComponentPropsObjectElement { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ArrayPropsNativeComponentPropsArrayElementObjectElement { - private @Nullable String mStringProp; +public class AllPropPropsNestedPropANestedPropB { + private @Nullable String mNestedPropC; @DoNotStrip - public @Nullable String getStringProp() { - return mStringProp; + public @Nullable String getNestedPropC() { + return mNestedPropC; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropPropsNestedPropA.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -57,21 +91,20 @@ public class ArrayPropsNativeComponentPropsArrayElementObjectElement { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; -import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentPropsArrayElement { - private ArrayList mObject; +public class AllPropPropsNestedPropA { + private AllPropPropsNestedPropANestedPropB mNestedPropB; @DoNotStrip - public ArrayList getObject() { - return mObject; + public AllPropPropsNestedPropANestedPropB getNestedPropB() { + return mNestedPropB; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropPropsNestedArrayAsPropertyArrayPropElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -80,13 +113,13 @@ public class ArrayPropsNativeComponentPropsArrayElement { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { +public class AllPropPropsNestedArrayAsPropertyArrayPropElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -94,7 +127,7 @@ public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropPropsNestedArrayAsProperty.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -103,89 +136,129 @@ public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.Dynamic; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.yoga.YogaValue; import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentProps { - private ArrayList mNames; - private ArrayList mDisableds; - private ArrayList mProgress; - private ArrayList mRadii; - private ArrayList mColors; - private ArrayList mSrcs; - private ArrayList mPoints; - private ArrayList mDimensions; - private ArrayList mSizes; - private ArrayList mObject; - private ArrayList mArray; - private ArrayList> mArrayOfArrayOfObject; - private ArrayList mArrayOfMixed; +public class AllPropPropsNestedArrayAsProperty { + private ArrayList mArrayProp; @DoNotStrip - public ArrayList getNames() { - return mNames; + public ArrayList getArrayProp() { + return mArrayProp; } +} +", + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.AllPropsNativeComponent; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class AllPropProps { + private @Nullable String mStringPropNoDefault; + private @Nullable Boolean mBooleanPropNoDefault; + private @Nullable Float mFloatPropNoDefault; + private @Nullable String mStringProp; + private boolean mBooleanProp; + private float mFloatProp; + private int mIntProp; + private @Nullable String mStringUserDefaultProp; + private boolean mBooleanUserDefaultProp; + private float mFloatUserDefaultProp; + private int mIntUserDefaultProp; + private @Nullable String mStringEnumProp; + private @Nullable Integer mIntEnumProp; + private AllPropPropsObjectArrayProp mObjectArrayProp; + private AllPropPropsObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; + private AllPropPropsNestedPropA mNestedPropA; + private AllPropPropsNestedArrayAsProperty mNestedArrayAsProperty; @DoNotStrip - public ArrayList getDisableds() { - return mDisableds; + public @Nullable String getStringPropNoDefault() { + return mStringPropNoDefault; } @DoNotStrip - public ArrayList getProgress() { - return mProgress; + public @Nullable Boolean getBooleanPropNoDefault() { + return mBooleanPropNoDefault; } @DoNotStrip - public ArrayList getRadii() { - return mRadii; + public @Nullable Float getFloatPropNoDefault() { + return mFloatPropNoDefault; } @DoNotStrip - public ArrayList getColors() { - return mColors; + public @Nullable String getStringProp() { + return mStringProp; } @DoNotStrip - public ArrayList getSrcs() { - return mSrcs; + public boolean getBooleanProp() { + return mBooleanProp; } @DoNotStrip - public ArrayList getPoints() { - return mPoints; + public float getFloatProp() { + return mFloatProp; } @DoNotStrip - public ArrayList getDimensions() { - return mDimensions; + public int getIntProp() { + return mIntProp; } @DoNotStrip - public ArrayList getSizes() { - return mSizes; + public @Nullable String getStringUserDefaultProp() { + return mStringUserDefaultProp; } @DoNotStrip - public ArrayList getObject() { - return mObject; + public boolean getBooleanUserDefaultProp() { + return mBooleanUserDefaultProp; } @DoNotStrip - public ArrayList getArray() { - return mArray; + public float getFloatUserDefaultProp() { + return mFloatUserDefaultProp; } @DoNotStrip - public ArrayList> getArrayOfArrayOfObject() { - return mArrayOfArrayOfObject; + public int getIntUserDefaultProp() { + return mIntUserDefaultProp; } @DoNotStrip - public ArrayList getArrayOfMixed() { - return mArrayOfMixed; + public @Nullable String getStringEnumProp() { + return mStringEnumProp; + } + @DoNotStrip + public @Nullable Integer getIntEnumProp() { + return mIntEnumProp; + } + @DoNotStrip + public AllPropPropsObjectArrayProp getObjectArrayProp() { + return mObjectArrayProp; + } + @DoNotStrip + public AllPropPropsObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { + return mObjectPrimitiveRequiredProp; + } + @DoNotStrip + public AllPropPropsNestedPropA getNestedPropA() { + return mNestedPropA; + } + @DoNotStrip + public AllPropPropsNestedArrayAsProperty getNestedArrayAsProperty() { + return mNestedArrayAsProperty; } } ", } `; -exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` Map { - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsNativePrimitivesElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenPropsObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -194,32 +267,55 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.ReadableMap; import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentPropsNativePrimitivesElement { - private ArrayList mColors; - private ArrayList mSrcs; - private ArrayList mPoints; +public class AllPropWithOptionalGenPropsObjectArrayProp { + private ArrayList mArray; @DoNotStrip - public ArrayList getColors() { - return mColors; + public ArrayList getArray() { + return mArray; + } +} +", + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenPropsObjectPrimitiveRequiredProp.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.AllPropsNativeComponent; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; + +@DoNotStrip +public class AllPropWithOptionalGenPropsObjectPrimitiveRequiredProp { + private @Nullable ReadableMap mImage; + private @Nullable Integer mColor; + private @Nullable ReadableMap mPoint; + @DoNotStrip + public @Nullable ReadableMap getImage() { + return mImage; } @DoNotStrip - public ArrayList getSrcs() { - return mSrcs; + public @Nullable Integer getColor() { + return mColor; } @DoNotStrip - public ArrayList getPoints() { - return mPoints; + public @Nullable ReadableMap getPoint() { + return mPoint; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenPropsNestedPropANestedPropB.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -228,26 +324,21 @@ public class ArrayPropsNativeComponentPropsNativePrimitivesElement { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; +import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; -import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentProps { - private ArrayList mNativePrimitives; +public class AllPropWithOptionalGenPropsNestedPropANestedPropB { + private @Nullable String mNestedPropC; @DoNotStrip - public ArrayList getNativePrimitives() { - return mNativePrimitives; + public @Nullable String getNestedPropC() { + return mNestedPropC; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture BOOLEAN_PROP 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/BooleanPropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenPropsNestedPropA.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -256,25 +347,20 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class BooleanPropNativeComponentProps { - private boolean mDisabled; +public class AllPropWithOptionalGenPropsNestedPropA { + private AllPropWithOptionalGenPropsNestedPropANestedPropB mNestedPropB; @DoNotStrip - public boolean getDisabled() { - return mDisabled; + public AllPropWithOptionalGenPropsNestedPropANestedPropB getNestedPropB() { + return mNestedPropB; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture COLOR_PROP 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/ColorPropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenPropsNestedArrayAsPropertyArrayPropElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -283,26 +369,21 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ColorPropNativeComponentProps { - private @Nullable Integer mTintColor; +public class AllPropWithOptionalGenPropsNestedArrayAsPropertyArrayPropElement { + private @Nullable String mStringProp; @DoNotStrip - public @Nullable Integer getTintColor() { - return mTintColor; + public @Nullable String getStringProp() { + return mStringProp; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture COMMANDS 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/CommandNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenPropsNestedArrayAsProperty.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -311,12 +392,688 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.AllPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; +import java.util.ArrayList; @DoNotStrip -public class CommandNativeComponentProps { +public class AllPropWithOptionalGenPropsNestedArrayAsProperty { + private ArrayList mArrayProp; + @DoNotStrip + public ArrayList getArrayProp() { + return mArrayProp; + } +} +", + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalGenProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.AllPropsNativeComponent; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class AllPropWithOptionalGenProps { + private @Nullable String mStringPropNoDefault; + private @Nullable Boolean mBooleanPropNoDefault; + private @Nullable Float mFloatPropNoDefault; + private @Nullable String mStringProp; + private boolean mBooleanProp; + private float mFloatProp; + private int mIntProp; + private @Nullable String mStringUserDefaultProp; + private boolean mBooleanUserDefaultProp; + private float mFloatUserDefaultProp; + private int mIntUserDefaultProp; + private @Nullable String mStringEnumProp; + private @Nullable Integer mIntEnumProp; + private AllPropWithOptionalGenPropsObjectArrayProp mObjectArrayProp; + private AllPropWithOptionalGenPropsObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; + private AllPropWithOptionalGenPropsNestedPropA mNestedPropA; + private AllPropWithOptionalGenPropsNestedArrayAsProperty mNestedArrayAsProperty; + @DoNotStrip + public @Nullable String getStringPropNoDefault() { + return mStringPropNoDefault; + } + @DoNotStrip + public @Nullable Boolean getBooleanPropNoDefault() { + return mBooleanPropNoDefault; + } + @DoNotStrip + public @Nullable Float getFloatPropNoDefault() { + return mFloatPropNoDefault; + } + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } + @DoNotStrip + public boolean getBooleanProp() { + return mBooleanProp; + } + @DoNotStrip + public float getFloatProp() { + return mFloatProp; + } + @DoNotStrip + public int getIntProp() { + return mIntProp; + } + @DoNotStrip + public @Nullable String getStringUserDefaultProp() { + return mStringUserDefaultProp; + } + @DoNotStrip + public boolean getBooleanUserDefaultProp() { + return mBooleanUserDefaultProp; + } + @DoNotStrip + public float getFloatUserDefaultProp() { + return mFloatUserDefaultProp; + } + @DoNotStrip + public int getIntUserDefaultProp() { + return mIntUserDefaultProp; + } + @DoNotStrip + public @Nullable String getStringEnumProp() { + return mStringEnumProp; + } + @DoNotStrip + public @Nullable Integer getIntEnumProp() { + return mIntEnumProp; + } + @DoNotStrip + public AllPropWithOptionalGenPropsObjectArrayProp getObjectArrayProp() { + return mObjectArrayProp; + } + @DoNotStrip + public AllPropWithOptionalGenPropsObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { + return mObjectPrimitiveRequiredProp; + } + @DoNotStrip + public AllPropWithOptionalGenPropsNestedPropA getNestedPropA() { + return mNestedPropA; + } + @DoNotStrip + public AllPropWithOptionalGenPropsNestedArrayAsProperty getNestedArrayAsProperty() { + return mNestedArrayAsProperty; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsObjectElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsObjectElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElementObjectElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsArrayElementObjectElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsArrayElement { + private ArrayList mObject; + @DoNotStrip + public ArrayList getObject() { + return mObject; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.Dynamic; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.yoga.YogaValue; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentProps { + private ArrayList mNames; + private ArrayList mDisableds; + private ArrayList mProgress; + private ArrayList mRadii; + private ArrayList mColors; + private ArrayList mSrcs; + private ArrayList mPoints; + private ArrayList mDimensions; + private ArrayList mSizes; + private ArrayList mObject; + private ArrayList mArray; + private ArrayList> mArrayOfArrayOfObject; + private ArrayList mArrayOfMixed; + @DoNotStrip + public ArrayList getNames() { + return mNames; + } + @DoNotStrip + public ArrayList getDisableds() { + return mDisableds; + } + @DoNotStrip + public ArrayList getProgress() { + return mProgress; + } + @DoNotStrip + public ArrayList getRadii() { + return mRadii; + } + @DoNotStrip + public ArrayList getColors() { + return mColors; + } + @DoNotStrip + public ArrayList getSrcs() { + return mSrcs; + } + @DoNotStrip + public ArrayList getPoints() { + return mPoints; + } + @DoNotStrip + public ArrayList getDimensions() { + return mDimensions; + } + @DoNotStrip + public ArrayList getSizes() { + return mSizes; + } + @DoNotStrip + public ArrayList getObject() { + return mObject; + } + @DoNotStrip + public ArrayList getArray() { + return mArray; + } + @DoNotStrip + public ArrayList> getArrayOfArrayOfObject() { + return mArrayOfArrayOfObject; + } + @DoNotStrip + public ArrayList getArrayOfMixed() { + return mArrayOfMixed; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsNativePrimitivesElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsNativePrimitivesElement { + private ArrayList mColors; + private ArrayList mSrcs; + private ArrayList mPoints; + @DoNotStrip + public ArrayList getColors() { + return mColors; + } + @DoNotStrip + public ArrayList getSrcs() { + return mSrcs; + } + @DoNotStrip + public ArrayList getPoints() { + return mPoints; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentProps { + private ArrayList mNativePrimitives; + @DoNotStrip + public ArrayList getNativePrimitives() { + return mNativePrimitives; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsNativePrimitivesElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsNativePrimitivesElement { + private ArrayList mColors; + private ArrayList mSrcs; + private ArrayList mPoints; + @DoNotStrip + public ArrayList getColors() { + return mColors; + } + @DoNotStrip + public ArrayList getSrcs() { + return mSrcs; + } + @DoNotStrip + public ArrayList getPoints() { + return mPoints; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentProps { + private ArrayList mNativePrimitives; + @DoNotStrip + public ArrayList getNativePrimitives() { + return mNativePrimitives; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsObjectElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsObjectElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElementObjectElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsArrayElementObjectElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsArrayElement { + private ArrayList mObject; + @DoNotStrip + public ArrayList getObject() { + return mObject; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.Dynamic; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.yoga.YogaValue; +import java.util.ArrayList; + +@DoNotStrip +public class ArrayPropsNativeComponentProps { + private ArrayList mNames; + private ArrayList mDisableds; + private ArrayList mProgress; + private ArrayList mRadii; + private ArrayList mColors; + private ArrayList mSrcs; + private ArrayList mPoints; + private ArrayList mDimensions; + private ArrayList mSizes; + private ArrayList mObject; + private ArrayList mArray; + private ArrayList> mArrayOfArrayOfObject; + private ArrayList mArrayOfMixed; + @DoNotStrip + public ArrayList getNames() { + return mNames; + } + @DoNotStrip + public ArrayList getDisableds() { + return mDisableds; + } + @DoNotStrip + public ArrayList getProgress() { + return mProgress; + } + @DoNotStrip + public ArrayList getRadii() { + return mRadii; + } + @DoNotStrip + public ArrayList getColors() { + return mColors; + } + @DoNotStrip + public ArrayList getSrcs() { + return mSrcs; + } + @DoNotStrip + public ArrayList getPoints() { + return mPoints; + } + @DoNotStrip + public ArrayList getDimensions() { + return mDimensions; + } + @DoNotStrip + public ArrayList getSizes() { + return mSizes; + } + @DoNotStrip + public ArrayList getObject() { + return mObject; + } + @DoNotStrip + public ArrayList getArray() { + return mArray; + } + @DoNotStrip + public ArrayList> getArrayOfArrayOfObject() { + return mArrayOfArrayOfObject; + } + @DoNotStrip + public ArrayList getArrayOfMixed() { + return mArrayOfMixed; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture BOOLEAN_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Switch/BooleanPropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Switch; + +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class BooleanPropNativeComponentProps { + private boolean mDisabled; + @DoNotStrip + public boolean getDisabled() { + return mDisabled; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture COLOR_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Switch/ColorPropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Switch; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ColorPropNativeComponentProps { + private @Nullable Integer mTintColor; + @DoNotStrip + public @Nullable Integer getTintColor() { + return mTintColor; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture COMMANDS 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Switch/CommandNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Switch; + +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class CommandNativeComponentProps { } @@ -605,17 +1362,240 @@ public class FloatPropNativeComponentProps { return mBlurRadius5; } @DoNotStrip - public float getBlurRadius6() { - return mBlurRadius6; + public float getBlurRadius6() { + return mBlurRadius6; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture IMAGE_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ImagePropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; + +@DoNotStrip +public class ImagePropNativeComponentProps { + private @Nullable ReadableMap mThumbImage; + @DoNotStrip + public @Nullable ReadableMap getThumbImage() { + return mThumbImage; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture INSETS_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ScrollView/InsetsPropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.ScrollView; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; + +@DoNotStrip +public class InsetsPropNativeComponentProps { + private @Nullable ReadableMap mContentInset; + @DoNotStrip + public @Nullable ReadableMap getContentInset() { + return mContentInset; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture INT32_ENUM_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Switch/Int32EnumPropsNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Switch; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class Int32EnumPropsNativeComponentProps { + private @Nullable Integer mMaxInterval; + @DoNotStrip + public @Nullable Integer getMaxInterval() { + return mMaxInterval; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture INTEGER_PROPS 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Switch/IntegerPropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Switch; + +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class IntegerPropNativeComponentProps { + private int mProgress1; + private int mProgress2; + private int mProgress3; + @DoNotStrip + public int getProgress1() { + return mProgress1; + } + @DoNotStrip + public int getProgress2() { + return mProgress2; + } + @DoNotStrip + public int getProgress3() { + return mProgress3; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture INTERFACE_ONLY 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Switch/InterfaceOnlyComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Switch; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class InterfaceOnlyComponentProps { + private @Nullable String mAccessibilityHint; + @DoNotStrip + public @Nullable String getAccessibilityHint() { + return mAccessibilityHint; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture MIXED_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/CustomView/MixedPropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.CustomView; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.Dynamic; + +@DoNotStrip +public class MixedPropNativeComponentProps { + private Dynamic mMixedProp; + @DoNotStrip + public Dynamic getMixedProp() { + return mMixedProp; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture MULTI_NATIVE_PROP 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ImageColorPropNativeComponentProps.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.Slider; + +import androidx.annotation.Nullable; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; + +@DoNotStrip +public class ImageColorPropNativeComponentProps { + private @Nullable ReadableMap mThumbImage; + private @Nullable Integer mColor; + private @Nullable Integer mThumbTintColor; + private @Nullable ReadableMap mPoint; + @DoNotStrip + public @Nullable ReadableMap getThumbImage() { + return mThumbImage; + } + @DoNotStrip + public @Nullable Integer getColor() { + return mColor; + } + @DoNotStrip + public @Nullable Integer getThumbTintColor() { + return mThumbTintColor; + } + @DoNotStrip + public @Nullable ReadableMap getPoint() { + return mPoint; } } ", } `; -exports[`GeneratePropsJavaPojo can generate fixture IMAGE_PROP 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture NO_PROPS_NO_EVENTS 1`] = ` Map { - "java/com/facebook/react/viewmanagers/Slider/ImagePropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/NoPropsNoEvents/NoPropsNoEventsComponentProps.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -624,27 +1604,22 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.NoPropsNoEvents; -import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.ReadableMap; @DoNotStrip -public class ImagePropNativeComponentProps { - private @Nullable ReadableMap mThumbImage; - @DoNotStrip - public @Nullable ReadableMap getThumbImage() { - return mThumbImage; - } +public class NoPropsNoEventsComponentProps { + + } ", } `; -exports[`GeneratePropsJavaPojo can generate fixture INSETS_PROP 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture OBJECT_PROPS 1`] = ` Map { - "java/com/facebook/react/viewmanagers/ScrollView/InsetsPropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -653,27 +1628,21 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.ScrollView; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; -import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.ReadableMap; +import java.util.ArrayList; @DoNotStrip -public class InsetsPropNativeComponentProps { - private @Nullable ReadableMap mContentInset; +public class ObjectPropsPropsObjectPropObjectArrayProp { + private ArrayList mArray; @DoNotStrip - public @Nullable ReadableMap getContentInset() { - return mContentInset; + public ArrayList getArray() { + return mArray; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture INT32_ENUM_PROP 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/Int32EnumPropsNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -682,26 +1651,32 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.ReadableMap; @DoNotStrip -public class Int32EnumPropsNativeComponentProps { - private @Nullable Integer mMaxInterval; +public class ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp { + private @Nullable ReadableMap mImage; + private @Nullable Integer mColor; + private @Nullable ReadableMap mPoint; @DoNotStrip - public @Nullable Integer getMaxInterval() { - return mMaxInterval; + public @Nullable ReadableMap getImage() { + return mImage; + } + @DoNotStrip + public @Nullable Integer getColor() { + return mColor; + } + @DoNotStrip + public @Nullable ReadableMap getPoint() { + return mPoint; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture INTEGER_PROPS 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/IntegerPropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedPropANestedPropB.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -710,35 +1685,43 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; +import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class IntegerPropNativeComponentProps { - private int mProgress1; - private int mProgress2; - private int mProgress3; - @DoNotStrip - public int getProgress1() { - return mProgress1; - } +public class ObjectPropsPropsObjectPropNestedPropANestedPropB { + private @Nullable String mNestedPropC; @DoNotStrip - public int getProgress2() { - return mProgress2; + public @Nullable String getNestedPropC() { + return mNestedPropC; } +} +", + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedPropA.java" => "/** +* 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. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; + +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class ObjectPropsPropsObjectPropNestedPropA { + private ObjectPropsPropsObjectPropNestedPropANestedPropB mNestedPropB; @DoNotStrip - public int getProgress3() { - return mProgress3; + public ObjectPropsPropsObjectPropNestedPropANestedPropB getNestedPropB() { + return mNestedPropB; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture INTERFACE_ONLY 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/InterfaceOnlyComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -747,26 +1730,21 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class InterfaceOnlyComponentProps { - private @Nullable String mAccessibilityHint; +public class ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement { + private @Nullable String mStringProp; @DoNotStrip - public @Nullable String getAccessibilityHint() { - return mAccessibilityHint; + public @Nullable String getStringProp() { + return mStringProp; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture MIXED_PROP 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/CustomView/MixedPropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedArrayAsProperty.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -775,26 +1753,21 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.CustomView; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.Dynamic; +import java.util.ArrayList; @DoNotStrip -public class MixedPropNativeComponentProps { - private Dynamic mMixedProp; +public class ObjectPropsPropsObjectPropNestedArrayAsProperty { + private ArrayList mArrayProp; @DoNotStrip - public Dynamic getMixedProp() { - return mMixedProp; + public ArrayList getArrayProp() { + return mArrayProp; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture MULTI_NATIVE_PROP 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Slider/ImageColorPropNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -803,42 +1776,86 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Slider; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.bridge.ReadableMap; @DoNotStrip -public class ImageColorPropNativeComponentProps { - private @Nullable ReadableMap mThumbImage; - private @Nullable Integer mColor; - private @Nullable Integer mThumbTintColor; - private @Nullable ReadableMap mPoint; +public class ObjectPropsPropsObjectProp { + private @Nullable String mStringProp; + private boolean mBooleanProp; + private float mFloatProp; + private int mIntProp; + private @Nullable String mStringUserDefaultProp; + private boolean mBooleanUserDefaultProp; + private float mFloatUserDefaultProp; + private int mIntUserDefaultProp; + private @Nullable String mStringEnumProp; + private @Nullable Integer mIntEnumProp; + private ObjectPropsPropsObjectPropObjectArrayProp mObjectArrayProp; + private ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; + private ObjectPropsPropsObjectPropNestedPropA mNestedPropA; + private ObjectPropsPropsObjectPropNestedArrayAsProperty mNestedArrayAsProperty; @DoNotStrip - public @Nullable ReadableMap getThumbImage() { - return mThumbImage; + public @Nullable String getStringProp() { + return mStringProp; } @DoNotStrip - public @Nullable Integer getColor() { - return mColor; + public boolean getBooleanProp() { + return mBooleanProp; } @DoNotStrip - public @Nullable Integer getThumbTintColor() { - return mThumbTintColor; + public float getFloatProp() { + return mFloatProp; } @DoNotStrip - public @Nullable ReadableMap getPoint() { - return mPoint; + public int getIntProp() { + return mIntProp; + } + @DoNotStrip + public @Nullable String getStringUserDefaultProp() { + return mStringUserDefaultProp; + } + @DoNotStrip + public boolean getBooleanUserDefaultProp() { + return mBooleanUserDefaultProp; + } + @DoNotStrip + public float getFloatUserDefaultProp() { + return mFloatUserDefaultProp; + } + @DoNotStrip + public int getIntUserDefaultProp() { + return mIntUserDefaultProp; + } + @DoNotStrip + public @Nullable String getStringEnumProp() { + return mStringEnumProp; + } + @DoNotStrip + public @Nullable Integer getIntEnumProp() { + return mIntEnumProp; + } + @DoNotStrip + public ObjectPropsPropsObjectPropObjectArrayProp getObjectArrayProp() { + return mObjectArrayProp; + } + @DoNotStrip + public ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { + return mObjectPrimitiveRequiredProp; + } + @DoNotStrip + public ObjectPropsPropsObjectPropNestedPropA getNestedPropA() { + return mNestedPropA; + } + @DoNotStrip + public ObjectPropsPropsObjectPropNestedArrayAsProperty getNestedArrayAsProperty() { + return mNestedArrayAsProperty; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture NO_PROPS_NO_EVENTS 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/NoPropsNoEvents/NoPropsNoEventsComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsProps.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -847,20 +1864,23 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.NoPropsNoEvents; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class NoPropsNoEventsComponentProps { - - +public class ObjectPropsProps { + private ObjectPropsPropsObjectProp mObjectProp; + @DoNotStrip + public ObjectPropsPropsObjectProp getObjectProp() { + return mObjectProp; + } } ", } `; -exports[`GeneratePropsJavaPojo can generate fixture OBJECT_PROPS 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` Map { "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeCpp-test.js.snap index fb6c6404a1ee..9b9718920ca4 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateShadowNodeCpp-test.js.snap @@ -1,5 +1,51 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateShadowNodeCpp can generate fixture ALL_PROP 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeCpp.js + */ + +#include + +namespace facebook::react { + +extern const char AllPropComponentName[] = \\"AllProp\\"; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeCpp can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeCpp.js + */ + +#include + +namespace facebook::react { + +extern const char AllPropWithOptionalGenComponentName[] = \\"AllPropWithOptionalGen\\"; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "ShadowNodes.cpp" => " @@ -46,6 +92,52 @@ extern const char ArrayPropsNativeComponentComponentName[] = \\"ArrayPropsNative } `; +exports[`GenerateShadowNodeCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeCpp.js + */ + +#include + +namespace facebook::react { + +extern const char ArrayPropsNativeComponentComponentName[] = \\"ArrayPropsNativeComponent\\"; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeCpp.js + */ + +#include + +namespace facebook::react { + +extern const char ArrayPropsNativeComponentComponentName[] = \\"ArrayPropsNativeComponent\\"; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeCpp can generate fixture BOOLEAN_PROP 1`] = ` Map { "ShadowNodes.cpp" => " @@ -553,6 +645,29 @@ extern const char ObjectPropsComponentName[] = \\"ObjectProps\\"; } `; +exports[`GenerateShadowNodeCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeCpp.js + */ + +#include + +namespace facebook::react { + +extern const char ObjectPropsComponentName[] = \\"ObjectProps\\"; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeCpp can generate fixture POINT_PROP 1`] = ` Map { "ShadowNodes.cpp" => " 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 00c65ca1865c..f8639b5b4732 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 @@ -1,5 +1,81 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateShadowNodeH can generate fixture ALL_PROP 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeH.js + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace facebook::react { + +JSI_EXPORT extern const char AllPropComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using AllPropShadowNode = ConcreteViewShadowNode< + AllPropComponentName, + AllPropProps, + AllPropEventEmitter, + AllPropState>; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeH can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeH.js + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace facebook::react { + +JSI_EXPORT extern const char AllPropWithOptionalGenComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using AllPropWithOptionalGenShadowNode = ConcreteViewShadowNode< + AllPropWithOptionalGenComponentName, + AllPropWithOptionalGenProps, + AllPropWithOptionalGenEventEmitter, + AllPropWithOptionalGenState>; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeH can generate fixture ARRAY_PROPS 1`] = ` Map { "ShadowNodes.h" => " @@ -76,6 +152,82 @@ using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< } `; +exports[`GenerateShadowNodeH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeH.js + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace facebook::react { + +JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< + ArrayPropsNativeComponentComponentName, + ArrayPropsNativeComponentProps, + ArrayPropsNativeComponentEventEmitter, + ArrayPropsNativeComponentState>; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeH.js + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace facebook::react { + +JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< + ArrayPropsNativeComponentComponentName, + ArrayPropsNativeComponentProps, + ArrayPropsNativeComponentEventEmitter, + ArrayPropsNativeComponentState>; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeH can generate fixture BOOLEAN_PROP 1`] = ` Map { "ShadowNodes.h" => " @@ -905,6 +1057,44 @@ using ObjectPropsShadowNode = ConcreteViewShadowNode< } `; +exports[`GenerateShadowNodeH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ShadowNodes.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: GenerateShadowNodeH.js + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace facebook::react { + +JSI_EXPORT extern const char ObjectPropsComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using ObjectPropsShadowNode = ConcreteViewShadowNode< + ObjectPropsComponentName, + ObjectPropsProps, + ObjectPropsEventEmitter, + ObjectPropsState>; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeH can generate fixture POINT_PROP 1`] = ` Map { "ShadowNodes.h" => " 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 index 0a4a8d39f160..ae3816ce069a 100644 --- 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 @@ -1,5 +1,49 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateStateCpp can generate fixture ALL_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::react { + + + +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 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::react { + + + +} // namespace facebook::react +", +} +`; + exports[`GenerateStateCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "States.cpp" => " @@ -39,6 +83,50 @@ namespace facebook::react { +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 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::react { + + + +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 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::react { + + + } // namespace facebook::react ", } @@ -523,6 +611,28 @@ namespace facebook::react { +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 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::react { + + + } // namespace facebook::react ", } 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 index 17f35712b028..dd8f2b623a45 100644 --- 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 @@ -1,5 +1,55 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateStateH can generate fixture ALL_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 + +#include +#ifdef RN_SERIALIZABLE_STATE +#include +#endif + +namespace facebook::react { + +using AllPropState = StateData; + +} // namespace facebook::react", +} +`; + +exports[`GenerateStateH can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 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 + +#include +#ifdef RN_SERIALIZABLE_STATE +#include +#endif + +namespace facebook::react { + +using AllPropWithOptionalGenState = StateData; + +} // namespace facebook::react", +} +`; + exports[`GenerateStateH can generate fixture ARRAY_PROPS 1`] = ` Map { "States.h" => "/** @@ -50,6 +100,56 @@ using ArrayPropsNativeComponentState = StateData; } `; +exports[`GenerateStateH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 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 + +#include +#ifdef RN_SERIALIZABLE_STATE +#include +#endif + +namespace facebook::react { + +using ArrayPropsNativeComponentState = StateData; + +} // namespace facebook::react", +} +`; + +exports[`GenerateStateH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 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 + +#include +#ifdef RN_SERIALIZABLE_STATE +#include +#endif + +namespace facebook::react { + +using ArrayPropsNativeComponentState = StateData; + +} // namespace facebook::react", +} +`; + exports[`GenerateStateH can generate fixture BOOLEAN_PROP 1`] = ` Map { "States.h" => "/** @@ -602,6 +702,31 @@ using ObjectPropsState = StateData; } `; +exports[`GenerateStateH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 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 + +#include +#ifdef RN_SERIALIZABLE_STATE +#include +#endif + +namespace facebook::react { + +using ObjectPropsState = StateData; + +} // namespace facebook::react", +} +`; + exports[`GenerateStateH can generate fixture POINT_PROP 1`] = ` Map { "States.h" => "/** diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateTests-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateTests-test.js.snap index 7c84b28cbaf9..85b071c1d3e8 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateTests-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateTests-test.js.snap @@ -1,5 +1,337 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateTests can generate fixture ALL_PROP 1`] = ` +Map { + "Tests.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: GenerateTests.js + * */ + +#include +#include +#include +#include +#include +#include +#include + +using namespace facebook::react; + +TEST(AllPropProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_stringPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringPropNoDefault\\", \\"foo\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_booleanPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanPropNoDefault\\", true)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_floatPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatPropNoDefault\\", 0.1)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_stringProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringProp\\", \\"foo\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_booleanProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanProp\\", false)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_floatProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatProp\\", 0)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_stringUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringUserDefaultProp\\", \\"user_default\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_booleanUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanUserDefaultProp\\", true)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_floatUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatUserDefaultProp\\", 3.14)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropProps_stringEnumProp_Option1, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringEnumProp\\", \\"option1\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropProps(parserContext, sourceProps, rawProps); +}", +} +`; + +exports[`GenerateTests can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Tests.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: GenerateTests.js + * */ + +#include +#include +#include +#include +#include +#include +#include + +using namespace facebook::react; + +TEST(AllPropWithOptionalGenProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_stringPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringPropNoDefault\\", \\"foo\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_booleanPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanPropNoDefault\\", true)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_floatPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatPropNoDefault\\", 0.1)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_stringProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringProp\\", \\"foo\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_booleanProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanProp\\", false)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_floatProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatProp\\", 0)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_stringUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringUserDefaultProp\\", \\"user_default\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_booleanUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanUserDefaultProp\\", true)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_floatUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatUserDefaultProp\\", 3.14)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalGenProps_stringEnumProp_Option1, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringEnumProp\\", \\"option1\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalGenProps(parserContext, sourceProps, rawProps); +}", +} +`; + exports[`GenerateTests can generate fixture ARRAY_PROPS 1`] = ` Map { "Tests.cpp" => "/** @@ -72,6 +404,78 @@ TEST(ArrayPropsNativeComponentProps_DoesNotDie, etc) { } `; +exports[`GenerateTests can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Tests.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: GenerateTests.js + * */ + +#include +#include +#include +#include +#include +#include + +using namespace facebook::react; + +TEST(ArrayPropsNativeComponentProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + ArrayPropsNativeComponentProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + ArrayPropsNativeComponentProps(parserContext, sourceProps, rawProps); +}", +} +`; + +exports[`GenerateTests can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Tests.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: GenerateTests.js + * */ + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace facebook::react; + +TEST(ArrayPropsNativeComponentProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + ArrayPropsNativeComponentProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + ArrayPropsNativeComponentProps(parserContext, sourceProps, rawProps); +}", +} +`; + exports[`GenerateTests can generate fixture BOOLEAN_PROP 1`] = ` Map { "Tests.cpp" => "/** @@ -1094,6 +1498,42 @@ TEST(ObjectPropsProps_DoesNotDie, etc) { } `; +exports[`GenerateTests can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "Tests.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: GenerateTests.js + * */ + +#include +#include +#include +#include +#include +#include +#include + +using namespace facebook::react; + +TEST(ObjectPropsProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + ObjectPropsProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + ObjectPropsProps(parserContext, sourceProps, rawProps); +}", +} +`; + exports[`GenerateTests can generate fixture POINT_PROP 1`] = ` Map { "Tests.cpp" => "/** diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderH-test.js.snap index e20b751dda78..2bdd58140f03 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderH-test.js.snap @@ -56,6 +56,11 @@ Class CommandNativeComponentCls(void) __attribute__((u Class ExcludedAndroidComponentCls(void) __attribute__((used)); // EXCLUDE_ANDROID Class MultiFileIncludedNativeComponentCls(void) __attribute__((used)); // EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES +Class ArrayPropsNativeComponentCls(void) __attribute__((used)); // ARRAY_PROPS_WITH_OPTIONAL_GEN +Class ArrayPropsNativeComponentCls(void) __attribute__((used)); // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN +Class ObjectPropsCls(void) __attribute__((used)); // OBJECT_PROPS_WITH_OPTIONAL_GEN +Class AllPropCls(void) __attribute__((used)); // ALL_PROP +Class AllPropWithOptionalGenCls(void) __attribute__((used)); // ALL_PROP_WITH_OPTIONAL_GEN #endif #endif diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderObjCpp-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderObjCpp-test.js.snap index 7543550f9946..9c322875e52d 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderObjCpp-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateThirdPartyFabricComponentsProviderObjCpp-test.js.snap @@ -83,6 +83,16 @@ Class RCTThirdPartyFabricComponentsProvider(const char {\\"MultiFileIncludedNativeComponent\\", MultiFileIncludedNativeComponentCls}, // EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES + + {\\"ArrayPropsNativeComponent\\", ArrayPropsNativeComponentCls}, // ARRAY_PROPS_WITH_OPTIONAL_GEN + + {\\"ArrayPropsNativeComponent\\", ArrayPropsNativeComponentCls}, // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN + + {\\"ObjectProps\\", ObjectPropsCls}, // OBJECT_PROPS_WITH_OPTIONAL_GEN + + {\\"AllProp\\", AllPropCls}, // ALL_PROP + + {\\"AllPropWithOptionalGen\\", AllPropWithOptionalGenCls}, // ALL_PROP_WITH_OPTIONAL_GEN #endif #endif }; diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap index da3d5840023b..9b0746a4fa94 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GenerateViewConfigJs-test.js.snap @@ -1,5 +1,97 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`GenerateViewConfigJs can generate fixture ALL_PROP 1`] = ` +Map { + "ALL_PROPNativeViewConfig.js" => " +/** + * 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. + * + * @flow + * + * @generated by codegen project: GenerateViewConfigJs.js + */ + +'use strict'; + +const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); + +let nativeComponentName = 'AllProp'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"AllProp\\", + validAttributes: { + stringPropNoDefault: true, + booleanPropNoDefault: true, + floatPropNoDefault: true, + stringProp: true, + booleanProp: true, + floatProp: true, + intProp: true, + stringUserDefaultProp: true, + booleanUserDefaultProp: true, + floatUserDefaultProp: true, + intUserDefaultProp: true, + stringEnumProp: true, + intEnumProp: true, + objectArrayProp: true, + objectPrimitiveRequiredProp: true, + nestedPropA: true, + nestedArrayAsProperty: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + +exports[`GenerateViewConfigJs can generate fixture ALL_PROP_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ALL_PROP_WITH_OPTIONAL_GENNativeViewConfig.js" => " +/** + * 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. + * + * @flow + * + * @generated by codegen project: GenerateViewConfigJs.js + */ + +'use strict'; + +const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); + +let nativeComponentName = 'AllPropWithOptionalGen'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"AllPropWithOptionalGen\\", + validAttributes: { + stringPropNoDefault: true, + booleanPropNoDefault: true, + floatPropNoDefault: true, + stringProp: true, + booleanProp: true, + floatProp: true, + intProp: true, + stringUserDefaultProp: true, + booleanUserDefaultProp: true, + floatUserDefaultProp: true, + intUserDefaultProp: true, + stringEnumProp: true, + intEnumProp: true, + objectArrayProp: true, + objectPrimitiveRequiredProp: true, + nestedPropA: true, + nestedArrayAsProperty: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + exports[`GenerateViewConfigJs can generate fixture ARRAY_PROPS 1`] = ` Map { "ARRAY_PROPSNativeViewConfig.js" => " @@ -74,6 +166,80 @@ export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL } `; +exports[`GenerateViewConfigJs can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GENNativeViewConfig.js" => " +/** + * 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. + * + * @flow + * + * @generated by codegen project: GenerateViewConfigJs.js + */ + +'use strict'; + +const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); + +let nativeComponentName = 'ArrayPropsNativeComponent'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"ArrayPropsNativeComponent\\", + validAttributes: { + nativePrimitives: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + +exports[`GenerateViewConfigJs can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "ARRAY_PROPS_WITH_OPTIONAL_GENNativeViewConfig.js" => " +/** + * 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. + * + * @flow + * + * @generated by codegen project: GenerateViewConfigJs.js + */ + +'use strict'; + +const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); + +let nativeComponentName = 'ArrayPropsNativeComponent'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"ArrayPropsNativeComponent\\", + validAttributes: { + names: true, + disableds: true, + progress: true, + radii: true, + colors: { + process: (req => 'default' in req ? req.default : req)(require('react-native/Libraries/StyleSheet/processColorArray')) + }, + srcs: true, + points: true, + dimensions: true, + sizes: true, + object: true, + array: true, + arrayOfArrayOfObject: true, + arrayOfMixed: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + exports[`GenerateViewConfigJs can generate fixture BOOLEAN_PROP 1`] = ` Map { "BOOLEAN_PROPNativeViewConfig.js" => " @@ -864,6 +1030,36 @@ export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL } `; +exports[`GenerateViewConfigJs can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +Map { + "OBJECT_PROPS_WITH_OPTIONAL_GENNativeViewConfig.js" => " +/** + * 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. + * + * @flow + * + * @generated by codegen project: GenerateViewConfigJs.js + */ + +'use strict'; + +const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); + +let nativeComponentName = 'ObjectProps'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"ObjectProps\\", + validAttributes: { + objectProp: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + exports[`GenerateViewConfigJs can generate fixture POINT_PROP 1`] = ` Map { "POINT_PROPNativeViewConfig.js" => "