From 61538e7431cb60d24558f6a559ff4bdbdef08210 Mon Sep 17 00:00:00 2001 From: Nick Lefever Date: Fri, 28 Nov 2025 04:55:36 -0800 Subject: [PATCH 1/4] Add optional props generation support Summary: See title Changelog: [Internal] 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 099404b22d97af..ac1836e233e0ad 100644 --- a/packages/react-native-codegen/src/CodegenSchema.js +++ b/packages/react-native-codegen/src/CodegenSchema.js @@ -130,6 +130,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 29298d90bf669d..29f14c693d6bb4 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 5ff0a8c6f0e640..8bc35bd8d3f8ed 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 ca7a71fd2ec7cf2cf91f4fa6991d59a7440aee2e Mon Sep 17 00:00:00 2001 From: Nick Lefever Date: Fri, 28 Nov 2025 04:55:36 -0800 Subject: [PATCH 2/4] Add fixtures for optional props generation Summary: See title Changelog: [Internal] 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 7c23413463c088..ce84f1baabb8a6 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 84accf396ae90a..06e0e9942c2e4a 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 605f4a21938960..382340f857a686 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 ec36879712a18a..3b4436fe56e267 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 78c49307b2db21..051df30ffd66c5 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 b6de40820ccb6d..cedfb282318ccc 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 6f20264efd385d..34a27a53597730 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 c9926786550749..06e042555b03e7 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 dafc0b2da273a3..ccb712e66c5a22 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 5398cbdf6867ab..7c73b5e9347712 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 f84e9d42bacf56..faba4b075d6fa4 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 fb6c6404a1ee45..9b9718920ca4cc 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 00c65ca1865cbc..f8639b5b47324c 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 0a4a8d39f1606e..ae3816ce069aea 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 17f35712b0285a..dd8f2b623a45ba 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 7c84b28cbaf951..85b071c1d3e885 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 e20b751dda7807..2bdd58140f03c5 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 7543550f9946f4..9c322875e52d20 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 da3d5840023bc7..9b0746a4fa942d 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" => " From e8b4bdf3b07c61ffd1e4c42989dda6c2dfff890f Mon Sep 17 00:00:00 2001 From: Nick Lefever Date: Fri, 28 Nov 2025 04:55:36 -0800 Subject: [PATCH 3/4] Implement optional object props generation Summary: See title Changelog: [Internal] Differential Revision: D87843979 --- .../generators/components/GeneratePropsH.js | 47 +++++++++++++++++-- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js index 8bc35bd8d3f8ed..eb66941e692a95 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js @@ -590,7 +590,12 @@ function generateStructsForComponent( componentName: string, component: ComponentShape, ): string { - const structs = generateStructs(componentName, component.props, []); + const structs = generateStructs( + componentName, + component.props, + [], + component.generateOptionalObjectProperties, + ); const structArray = Array.from(structs.values()); if (structArray.length < 1) { return ''; @@ -602,6 +607,7 @@ function generateStructs( componentName: string, properties: $ReadOnlyArray>, nameParts: Array, + generateOptionalObjectProperties?: boolean = false, ): StructsMap { const structs: StructsMap = new Map(); properties.forEach(prop => { @@ -614,6 +620,7 @@ function generateStructs( componentName, elementProperties, nameParts.concat([prop.name]), + generateOptionalObjectProperties, ); nestedStructs.forEach(function (value, key) { structs.set(key, value); @@ -624,6 +631,7 @@ function generateStructs( componentName, nameParts.concat([prop.name]), typeAnnotation.properties, + generateOptionalObjectProperties, ); } @@ -638,6 +646,7 @@ function generateStructs( componentName, elementProperties, nameParts.concat([prop.name]), + generateOptionalObjectProperties, ); nestedStructs.forEach(function (value, key) { structs.set(key, value); @@ -649,6 +658,7 @@ function generateStructs( componentName, nameParts.concat([prop.name]), elementProperties, + generateOptionalObjectProperties, ); // Generate the conversion function for std:vector. @@ -690,6 +700,7 @@ function generateStructs( componentName, nameParts.concat([prop.name]), elementProperties, + generateOptionalObjectProperties, ); // Generate the conversion function for std:vector. @@ -716,6 +727,7 @@ function generateStruct( componentName: string, nameParts: $ReadOnlyArray, properties: $ReadOnlyArray>, + generateOptionalObjectProperties?: boolean = false, ): void { const structNameParts = nameParts; const structName = generateStructName(componentName, structNameParts); @@ -723,6 +735,7 @@ function generateStruct( componentName, properties, structNameParts, + generateOptionalObjectProperties, ); properties.forEach((property: NamedShape) => { @@ -753,7 +766,13 @@ function generateStruct( `Properties are expected for ObjectTypeAnnotation (see ${name} in ${componentName})`, ); } - generateStruct(structs, componentName, nameParts.concat([name]), props); + generateStruct( + structs, + componentName, + nameParts.concat([name]), + props, + generateOptionalObjectProperties, + ); return; case 'MixedTypeAnnotation': return; @@ -785,9 +804,29 @@ function generateStruct( case 'DoubleTypeAnnotation': case 'FloatTypeAnnotation': case 'MixedTypeAnnotation': - return `result["${name}"] = ${name};`; + if ( + property.optional && + property.typeAnnotation.default == null && + generateOptionalObjectProperties + ) { + return `if (${name}.has_value()) { + result["${name}"] = ${name}.value(); + }`; + } else { + return `result["${name}"] = ${name};`; + } default: - return `result["${name}"] = ::facebook::react::toDynamic(${name});`; + if ( + property.optional && + property.typeAnnotation.default == null && + generateOptionalObjectProperties + ) { + return `if (${name}.has_value()) { + result["${name}"] = ::facebook::react::toDynamic(${name}.value()); + }`; + } else { + return `result["${name}"] = ::facebook::react::toDynamic(${name});`; + } } }) .join('\n '); From 988cee9b11a4e8457c8eab35778397db4710ed5e Mon Sep 17 00:00:00 2001 From: Nick Lefever Date: Fri, 28 Nov 2025 05:50:45 -0800 Subject: [PATCH 4/4] Add fixtures for optional object generation Summary: See title Changelog: [Internal] Differential Revision: D87843977 --- .../components/__test_fixtures__/fixtures.js | 1700 +++++++--- ...enerateComponentDescriptorCpp-test.js.snap | 118 +- .../GenerateComponentDescriptorH-test.js.snap | 126 +- .../GenerateComponentHObjCpp-test.js.snap | 106 +- .../GenerateEventEmitterCpp-test.js.snap | 88 + .../GenerateEventEmitterH-test.js.snap | 122 +- .../GeneratePropsCpp-test.js.snap | 480 ++- .../__snapshots__/GeneratePropsH-test.js.snap | 3001 ++++++++++++----- .../GeneratePropsJavaDelegate-test.js.snap | 262 +- .../GeneratePropsJavaInterface-test.js.snap | 140 +- .../GeneratePropsJavaPojo-test.js.snap | 1378 ++++++-- .../GenerateShadowNodeCpp-test.js.snap | 98 +- .../GenerateShadowNodeH-test.js.snap | 194 +- .../GenerateStateCpp-test.js.snap | 88 + .../__snapshots__/GenerateStateH-test.js.snap | 106 +- .../__snapshots__/GenerateTests-test.js.snap | 298 +- ...artyFabricComponentsProviderH-test.js.snap | 10 +- ...abricComponentsProviderObjCpp-test.js.snap | 18 +- .../GenerateViewConfigJs-test.js.snap | 162 +- 19 files changed, 6879 insertions(+), 1616 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 ce84f1baabb8a6..afbfd7c7e5187d 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,13 +1916,12 @@ const EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES: SchemaType = { }, }; -const ARRAY_PROPS_WITH_OPTIONAL_GEN: SchemaType = { +const ALL_PROP: SchemaType = { modules: { - Slider: { + AllPropsNativeComponent: { type: 'Component', components: { - ArrayPropsNativeComponent: { - generateOptionalProperties: true, + AllProp: { extendsProps: [ { type: 'ReactNativeBuiltInType', @@ -1932,296 +1931,146 @@ const ARRAY_PROPS_WITH_OPTIONAL_GEN: SchemaType = { events: [], props: [ { - name: 'names', + name: 'stringPropNoDefault', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'StringTypeAnnotation', - }, + type: 'StringTypeAnnotation', + default: null, }, }, { - name: 'disableds', + name: 'booleanPropNoDefault', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'BooleanTypeAnnotation', - }, + type: 'BooleanTypeAnnotation', + default: null, }, }, { - name: 'progress', + name: 'floatPropNoDefault', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'Int32TypeAnnotation', - }, + type: 'FloatTypeAnnotation', + default: null, }, }, { - name: 'radii', + name: 'stringProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'FloatTypeAnnotation', - }, + type: 'StringTypeAnnotation', + default: '', }, }, { - name: 'colors', + name: 'booleanProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ReservedPropTypeAnnotation', - name: 'ColorPrimitive', - }, + type: 'BooleanTypeAnnotation', + default: false, }, }, { - name: 'srcs', + name: 'floatProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ReservedPropTypeAnnotation', - name: 'ImageSourcePrimitive', - }, + type: 'FloatTypeAnnotation', + default: 0.0, }, }, { - name: 'points', + name: 'intProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ReservedPropTypeAnnotation', - name: 'PointPrimitive', - }, + type: 'Int32TypeAnnotation', + default: 0, }, }, { - name: 'dimensions', + name: 'stringUserDefaultProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ReservedPropTypeAnnotation', - name: 'DimensionPrimitive', - }, + type: 'StringTypeAnnotation', + default: 'user_default', }, }, { - name: 'sizes', + name: 'booleanUserDefaultProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'StringEnumTypeAnnotation', - default: 'small', - options: ['small', 'large'], - }, + type: 'BooleanTypeAnnotation', + default: true, }, }, { - name: 'object', + name: 'floatUserDefaultProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ObjectTypeAnnotation', - properties: [ - { - name: 'stringProp', - optional: true, - typeAnnotation: { - type: 'StringTypeAnnotation', - default: '', - }, - }, - ], - }, + type: 'FloatTypeAnnotation', + default: 3.14, }, }, { - name: 'array', + name: 'intUserDefaultProp', 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: '', - }, - }, - ], - }, - }, - }, - ], - }, + type: 'Int32TypeAnnotation', + default: 9999, }, }, { - name: 'arrayOfArrayOfObject', + name: 'stringEnumProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ObjectTypeAnnotation', - properties: [ - { - name: 'stringProp', - optional: true, - typeAnnotation: { - type: 'StringTypeAnnotation', - default: '', - }, - }, - ], - }, - }, + type: 'StringEnumTypeAnnotation', + default: 'option1', + options: ['option1'], }, }, { - name: 'arrayOfMixed', + name: 'intEnumProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'MixedTypeAnnotation', - }, + type: 'Int32EnumTypeAnnotation', + default: 0, + options: [0], }, }, - ], - 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, + name: 'objectArrayProp', + optional: false, 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', - }, + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'array', + optional: true, + typeAnnotation: { + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringTypeAnnotation', }, }, - ], - }, + }, + ], }, }, - ], - 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, + name: 'objectPrimitiveRequiredProp', + optional: false, typeAnnotation: { type: 'ObjectTypeAnnotation', properties: [ { - name: 'stringProp', + name: 'string', optional: true, typeAnnotation: { type: 'StringTypeAnnotation', - default: '', + default: 'defaultString', }, }, { - name: 'booleanProp', + name: 'boolean', optional: true, typeAnnotation: { type: 'BooleanTypeAnnotation', @@ -2229,176 +2078,114 @@ const OBJECT_PROPS_WITH_OPTIONAL_GEN: SchemaType = { }, }, { - name: 'floatProp', + name: 'float', optional: true, typeAnnotation: { type: 'FloatTypeAnnotation', - default: 0.0, - }, - }, - { - name: 'intProp', - optional: true, - typeAnnotation: { - type: 'Int32TypeAnnotation', - default: 0, + default: 3.14, }, }, { - name: 'stringUserDefaultProp', + name: 'stringNoDefault', optional: true, typeAnnotation: { type: 'StringTypeAnnotation', - default: 'user_default', + default: null, }, }, { - name: 'booleanUserDefaultProp', + name: 'booleanNoDefault', optional: true, typeAnnotation: { type: 'BooleanTypeAnnotation', - default: true, + default: null, }, }, { - name: 'floatUserDefaultProp', + name: 'floatNoDefault', optional: true, typeAnnotation: { type: 'FloatTypeAnnotation', - default: 3.14, + default: null, }, }, { - name: 'intUserDefaultProp', + name: 'image', optional: true, typeAnnotation: { - type: 'Int32TypeAnnotation', - default: 9999, + type: 'ReservedPropTypeAnnotation', + name: 'ImageSourcePrimitive', }, }, { - name: 'stringEnumProp', + name: 'color', optional: true, typeAnnotation: { - type: 'StringEnumTypeAnnotation', - default: 'option1', - options: ['option1'], + type: 'ReservedPropTypeAnnotation', + name: 'ColorPrimitive', }, }, { - name: 'intEnumProp', + name: 'point', 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', - }, - }, - }, - ], + type: 'ReservedPropTypeAnnotation', + name: 'PointPrimitive', }, }, + ], + }, + }, + { + name: 'nestedPropA', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ { - name: 'objectPrimitiveRequiredProp', + name: 'nestedPropB', 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', + name: 'nestedPropC', 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: '', - }, - }, - ], + type: 'StringTypeAnnotation', + default: '', }, }, ], }, }, + ], + }, + }, + { + name: 'nestedArrayAsProperty', + optional: false, + typeAnnotation: { + type: 'ObjectTypeAnnotation', + properties: [ { - name: 'nestedArrayAsProperty', + name: 'arrayProp', 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: '', - }, - }, - ], + type: 'ArrayTypeAnnotation', + elementType: { + type: 'ObjectTypeAnnotation', + properties: [ + { + name: 'stringProp', + optional: false, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: '', }, }, - }, - ], + ], + }, }, }, ], @@ -2412,12 +2199,13 @@ const OBJECT_PROPS_WITH_OPTIONAL_GEN: SchemaType = { }, }; -const ALL_PROP: SchemaType = { +const ALL_PROP_WITH_OPTIONAL_GEN: SchemaType = { modules: { AllPropsNativeComponent: { type: 'Component', components: { - AllProp: { + AllPropWithOptionalGen: { + generateOptionalProperties: true, extendsProps: [ { type: 'ReactNativeBuiltInType', @@ -2557,6 +2345,54 @@ const ALL_PROP: SchemaType = { typeAnnotation: { type: 'ObjectTypeAnnotation', properties: [ + { + name: 'string', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: 'defaultString', + }, + }, + { + name: 'boolean', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: false, + }, + }, + { + name: 'float', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 3.14, + }, + }, + { + name: 'stringNoDefault', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: null, + }, + }, + { + name: 'booleanNoDefault', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: null, + }, + }, + { + name: 'floatNoDefault', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: null, + }, + }, { name: 'image', optional: true, @@ -2647,13 +2483,14 @@ const ALL_PROP: SchemaType = { }, }; -const ALL_PROP_WITH_OPTIONAL_GEN: SchemaType = { +const ALL_PROP_WITH_OPTIONAL_OBJECT_GEN: SchemaType = { modules: { AllPropsNativeComponent: { type: 'Component', components: { - AllPropWithOptionalGen: { + AllPropWithOptionalObjectGen: { generateOptionalProperties: true, + generateOptionalObjectProperties: true, extendsProps: [ { type: 'ReactNativeBuiltInType', @@ -2751,125 +2588,1168 @@ const ALL_PROP_WITH_OPTIONAL_GEN: SchemaType = { }, }, { - name: 'stringEnumProp', - optional: true, - typeAnnotation: { - type: 'StringEnumTypeAnnotation', - default: 'option1', - options: ['option1'], - }, + 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: 'string', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: 'defaultString', + }, + }, + { + name: 'boolean', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: false, + }, + }, + { + name: 'float', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: 3.14, + }, + }, + { + name: 'stringNoDefault', + optional: true, + typeAnnotation: { + type: 'StringTypeAnnotation', + default: null, + }, + }, + { + name: 'booleanNoDefault', + optional: true, + typeAnnotation: { + type: 'BooleanTypeAnnotation', + default: null, + }, + }, + { + name: 'floatNoDefault', + optional: true, + typeAnnotation: { + type: 'FloatTypeAnnotation', + default: null, + }, + }, + { + 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 ARRAY_PROPS_WITH_OPTIONAL_GEN: SchemaType = { + modules: { + Slider: { + type: 'Component', + components: { + ArrayPropsWithOptionalGenNativeComponent: { + 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_OPTIONAL_OBJECT_GEN: SchemaType = { + modules: { + Slider: { + type: 'Component', + components: { + ArrayPropsWithOptionalObjectGenNativeComponent: { + generateOptionalProperties: true, + generateOptionalObjectProperties: 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: { + ArrayPropsOptionalGenNativeComponent: { + 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 ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN: SchemaType = { + modules: { + Slider: { + type: 'Component', + components: { + ArrayPropsOptionalObjectGenNativeComponent: { + generateOptionalProperties: true, + generateOptionalObjectProperties: 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: { + ObjectPropsWithOptionalGen: { + 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 OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN: SchemaType = { + modules: { + ObjectPropsNativeComponent: { + type: 'Component', + components: { + ObjectPropsWithOptionalObjectGen: { + generateOptionalProperties: true, + generateOptionalObjectProperties: true, + extendsProps: [ + { + type: 'ReactNativeBuiltInType', + knownTypeName: 'ReactNativeCoreViewProps', }, + ], + events: [], + props: [ { - name: 'intEnumProp', + name: 'objectProp', optional: true, - typeAnnotation: { - type: 'Int32EnumTypeAnnotation', - default: 0, - options: [0], - }, - }, - { - name: 'objectArrayProp', - optional: false, typeAnnotation: { type: 'ObjectTypeAnnotation', properties: [ { - name: 'array', + name: 'stringProp', optional: true, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'StringTypeAnnotation', - }, + type: 'StringTypeAnnotation', + default: '', }, }, - ], - }, - }, - { - name: 'objectPrimitiveRequiredProp', - optional: false, - typeAnnotation: { - type: 'ObjectTypeAnnotation', - properties: [ { - name: 'image', + name: 'booleanProp', optional: true, typeAnnotation: { - type: 'ReservedPropTypeAnnotation', - name: 'ImageSourcePrimitive', + type: 'BooleanTypeAnnotation', + default: false, }, }, { - name: 'color', + name: 'floatProp', optional: true, typeAnnotation: { - type: 'ReservedPropTypeAnnotation', - name: 'ColorPrimitive', + type: 'FloatTypeAnnotation', + default: 0.0, }, }, { - name: 'point', + name: 'intProp', optional: true, typeAnnotation: { - type: 'ReservedPropTypeAnnotation', - name: 'PointPrimitive', + type: 'Int32TypeAnnotation', + default: 0, }, }, - ], - }, - }, - { - name: 'nestedPropA', - optional: false, - typeAnnotation: { - type: 'ObjectTypeAnnotation', - properties: [ { - name: 'nestedPropB', + 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: 'nestedPropC', + name: 'array', optional: true, typeAnnotation: { - type: 'StringTypeAnnotation', - default: '', + type: 'ArrayTypeAnnotation', + elementType: { + type: 'StringTypeAnnotation', + }, }, }, ], }, }, - ], - }, - }, - { - name: 'nestedArrayAsProperty', - optional: false, - typeAnnotation: { - type: 'ObjectTypeAnnotation', - properties: [ { - name: 'arrayProp', + name: 'objectPrimitiveRequiredProp', optional: false, typeAnnotation: { - type: 'ArrayTypeAnnotation', - elementType: { - type: 'ObjectTypeAnnotation', - properties: [ - { - name: 'stringProp', - optional: false, - typeAnnotation: { - type: 'StringTypeAnnotation', - default: '', + 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: '', + }, + }, + ], }, }, - ], - }, + }, + ], }, }, ], @@ -2913,9 +3793,13 @@ module.exports = { EXCLUDE_ANDROID, EXCLUDE_ANDROID_IOS, EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES, + ALL_PROP, + ALL_PROP_WITH_OPTIONAL_GEN, + ALL_PROP_WITH_OPTIONAL_OBJECT_GEN, ARRAY_PROPS_WITH_OPTIONAL_GEN, + ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN, ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN, + ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN, OBJECT_PROPS_WITH_OPTIONAL_GEN, - ALL_PROP, - ALL_PROP_WITH_OPTIONAL_GEN, + OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 06e0e9942c2e4a..6800b176061689 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 @@ -56,6 +56,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 ALL_PROP_WITH_OPTIONAL_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "ComponentDescriptors.cpp" => " @@ -132,7 +160,35 @@ namespace facebook::react { void ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( std::shared_ptr registry) { -registry->add(concreteComponentDescriptorProvider()); +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); } } // namespace facebook::react @@ -160,7 +216,35 @@ namespace facebook::react { void ARRAY_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( std::shared_ptr registry) { -registry->add(concreteComponentDescriptorProvider()); +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); } } // namespace facebook::react @@ -805,7 +889,35 @@ namespace facebook::react { void OBJECT_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( std::shared_ptr registry) { -registry->add(concreteComponentDescriptorProvider()); +registry->add(concreteComponentDescriptorProvider()); +} + +} // namespace facebook::react +", +} +`; + +exports[`GenerateComponentDescriptorCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry) { +registry->add(concreteComponentDescriptorProvider()); } } // namespace facebook::react 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 382340f857a686..8657a4701bff65 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 @@ -60,6 +60,36 @@ void ALL_PROP_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( } `; +exports[`GenerateComponentDescriptorH can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 AllPropWithOptionalObjectGenComponentDescriptor = ConcreteComponentDescriptor; + +void ALL_PROP_WITH_OPTIONAL_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS 1`] = ` Map { "ComponentDescriptors.h" => " @@ -140,7 +170,7 @@ Map { namespace facebook::react { -using ArrayPropsNativeComponentComponentDescriptor = ConcreteComponentDescriptor; +using ArrayPropsOptionalGenNativeComponentComponentDescriptor = ConcreteComponentDescriptor; void ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( std::shared_ptr registry); @@ -150,6 +180,36 @@ void ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN_registerComponentDescripto } `; +exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 ArrayPropsOptionalObjectGenNativeComponentComponentDescriptor = ConcreteComponentDescriptor; + +void ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` Map { "ComponentDescriptors.h" => " @@ -170,7 +230,7 @@ Map { namespace facebook::react { -using ArrayPropsNativeComponentComponentDescriptor = ConcreteComponentDescriptor; +using ArrayPropsWithOptionalGenNativeComponentComponentDescriptor = ConcreteComponentDescriptor; void ARRAY_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( std::shared_ptr registry); @@ -180,6 +240,36 @@ void ARRAY_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( } `; +exports[`GenerateComponentDescriptorH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 ArrayPropsWithOptionalObjectGenNativeComponentComponentDescriptor = ConcreteComponentDescriptor; + +void ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN_registerComponentDescriptorsFromCodegen( + std::shared_ptr registry); + +} // namespace facebook::react +", +} +`; + exports[`GenerateComponentDescriptorH can generate fixture BOOLEAN_PROP 1`] = ` Map { "ComponentDescriptors.h" => " @@ -861,7 +951,7 @@ Map { namespace facebook::react { -using ObjectPropsComponentDescriptor = ConcreteComponentDescriptor; +using ObjectPropsWithOptionalGenComponentDescriptor = ConcreteComponentDescriptor; void OBJECT_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( std::shared_ptr registry); @@ -871,6 +961,36 @@ void OBJECT_PROPS_WITH_OPTIONAL_GEN_registerComponentDescriptorsFromCodegen( } `; +exports[`GenerateComponentDescriptorH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 ObjectPropsWithOptionalObjectGenComponentDescriptor = ConcreteComponentDescriptor; + +void OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 3b4436fe56e267..2038213ab7b0ee 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 @@ -50,6 +50,31 @@ NS_ASSUME_NONNULL_END", } `; +exports[`GenerateComponentHObjCpp can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 RCTAllPropWithOptionalObjectGenViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + exports[`GenerateComponentHObjCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "RCTComponentViewHelpers.h" => "/** @@ -117,7 +142,32 @@ Map { NS_ASSUME_NONNULL_BEGIN -@protocol RCTArrayPropsNativeComponentViewProtocol +@protocol RCTArrayPropsOptionalGenNativeComponentViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + +exports[`GenerateComponentHObjCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 RCTArrayPropsOptionalObjectGenNativeComponentViewProtocol @end @@ -142,7 +192,32 @@ Map { NS_ASSUME_NONNULL_BEGIN -@protocol RCTArrayPropsNativeComponentViewProtocol +@protocol RCTArrayPropsWithOptionalGenNativeComponentViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + +exports[`GenerateComponentHObjCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 RCTArrayPropsWithOptionalObjectGenNativeComponentViewProtocol @end @@ -880,7 +955,32 @@ Map { NS_ASSUME_NONNULL_BEGIN -@protocol RCTObjectPropsViewProtocol +@protocol RCTObjectPropsWithOptionalGenViewProtocol + +@end + +NS_ASSUME_NONNULL_END", +} +`; + +exports[`GenerateComponentHObjCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 RCTObjectPropsWithOptionalObjectGenViewProtocol @end 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 051df30ffd66c5..b7511e59fa0fb6 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 @@ -37,6 +37,28 @@ Map { #include +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 @@ -103,6 +125,28 @@ Map { #include +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 @@ -125,6 +169,28 @@ Map { #include +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 @@ -780,6 +846,28 @@ Map { #include +namespace facebook::react { + +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 cedfb282318ccc..618ec42e3e6b0b 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 @@ -52,6 +52,35 @@ class AllPropWithOptionalGenEventEmitter : public ViewEventEmitter { +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 AllPropWithOptionalObjectGenEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + }; } // namespace facebook::react ", @@ -133,7 +162,36 @@ Map { namespace facebook::react { -class ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { +class ArrayPropsOptionalGenNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 ArrayPropsOptionalObjectGenNativeComponentEventEmitter : public ViewEventEmitter { public: using ViewEventEmitter::ViewEventEmitter; @@ -162,7 +220,36 @@ Map { namespace facebook::react { -class ArrayPropsNativeComponentEventEmitter : public ViewEventEmitter { +class ArrayPropsWithOptionalGenNativeComponentEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 ArrayPropsWithOptionalObjectGenNativeComponentEventEmitter : public ViewEventEmitter { public: using ViewEventEmitter::ViewEventEmitter; @@ -923,7 +1010,36 @@ Map { namespace facebook::react { -class ObjectPropsEventEmitter : public ViewEventEmitter { +class ObjectPropsWithOptionalGenEventEmitter : public ViewEventEmitter { + public: + using ViewEventEmitter::ViewEventEmitter; + + + +}; +} // namespace facebook::react +", +} +`; + +exports[`GenerateEventEmitterH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 ObjectPropsWithOptionalObjectGenEventEmitter : public ViewEventEmitter { public: using ViewEventEmitter::ViewEventEmitter; 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 34a27a53597730..fbf62c1c987f07 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 @@ -282,6 +282,154 @@ folly::dynamic AllPropWithOptionalGenProps::getDiffProps( } `; +exports[`GeneratePropsCpp can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 { + +AllPropWithOptionalObjectGenProps::AllPropWithOptionalObjectGenProps( + const PropsParserContext &context, + const AllPropWithOptionalObjectGenProps &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, {AllPropWithOptionalObjectGenStringEnumProp::Option1})), + intEnumProp(convertRawProp(context, rawProps, \\"intEnumProp\\", sourceProps.intEnumProp, {AllPropWithOptionalObjectGenIntEnumProp::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 AllPropWithOptionalObjectGenProps::getDiffPropsImplementationTarget() const { + return \\"AllPropWithOptionalObjectGen\\"; +} + +folly::dynamic AllPropWithOptionalObjectGenProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = AllPropWithOptionalObjectGenProps(); + const AllPropWithOptionalObjectGenProps* 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" => " @@ -468,24 +616,81 @@ Map { namespace facebook::react { -ArrayPropsNativeComponentProps::ArrayPropsNativeComponentProps( +ArrayPropsOptionalGenNativeComponentProps::ArrayPropsOptionalGenNativeComponentProps( const PropsParserContext &context, - const ArrayPropsNativeComponentProps &sourceProps, + const ArrayPropsOptionalGenNativeComponentProps &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\\"; +ComponentName ArrayPropsOptionalGenNativeComponentProps::getDiffPropsImplementationTarget() const { + return \\"ArrayPropsOptionalGenNativeComponent\\"; } -folly::dynamic ArrayPropsNativeComponentProps::getDiffProps( +folly::dynamic ArrayPropsOptionalGenNativeComponentProps::getDiffProps( const Props* prevProps) const { - static const auto defaultProps = ArrayPropsNativeComponentProps(); - const ArrayPropsNativeComponentProps* oldProps = prevProps == nullptr + static const auto defaultProps = ArrayPropsOptionalGenNativeComponentProps(); + const ArrayPropsOptionalGenNativeComponentProps* oldProps = prevProps == nullptr ? &defaultProps - : static_cast(prevProps); + : 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_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 { + +ArrayPropsOptionalObjectGenNativeComponentProps::ArrayPropsOptionalObjectGenNativeComponentProps( + const PropsParserContext &context, + const ArrayPropsOptionalObjectGenNativeComponentProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + nativePrimitives(convertRawProp(context, rawProps, \\"nativePrimitives\\", sourceProps.nativePrimitives, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName ArrayPropsOptionalObjectGenNativeComponentProps::getDiffPropsImplementationTarget() const { + return \\"ArrayPropsOptionalObjectGenNativeComponent\\"; +} + +folly::dynamic ArrayPropsOptionalObjectGenNativeComponentProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = ArrayPropsOptionalObjectGenNativeComponentProps(); + const ArrayPropsOptionalObjectGenNativeComponentProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); if (this == oldProps) { return folly::dynamic::object(); } @@ -527,9 +732,9 @@ Map { namespace facebook::react { -ArrayPropsNativeComponentProps::ArrayPropsNativeComponentProps( +ArrayPropsWithOptionalGenNativeComponentProps::ArrayPropsWithOptionalGenNativeComponentProps( const PropsParserContext &context, - const ArrayPropsNativeComponentProps &sourceProps, + const ArrayPropsWithOptionalGenNativeComponentProps &sourceProps, const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), names(convertRawProp(context, rawProps, \\"names\\", sourceProps.names, {})), @@ -540,23 +745,190 @@ ArrayPropsNativeComponentProps::ArrayPropsNativeComponentProps( 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), + sizes(convertRawProp(context, rawProps, \\"sizes\\", ArrayPropsWithOptionalGenNativeComponentSizesMaskWrapped{ .value = sourceProps.sizes }, {static_cast(ArrayPropsWithOptionalGenNativeComponentSizes::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\\"; +ComponentName ArrayPropsWithOptionalGenNativeComponentProps::getDiffPropsImplementationTarget() const { + return \\"ArrayPropsWithOptionalGenNativeComponent\\"; } -folly::dynamic ArrayPropsNativeComponentProps::getDiffProps( +folly::dynamic ArrayPropsWithOptionalGenNativeComponentProps::getDiffProps( const Props* prevProps) const { - static const auto defaultProps = ArrayPropsNativeComponentProps(); - const ArrayPropsNativeComponentProps* oldProps = prevProps == nullptr + static const auto defaultProps = ArrayPropsWithOptionalGenNativeComponentProps(); + const ArrayPropsWithOptionalGenNativeComponentProps* oldProps = prevProps == nullptr ? &defaultProps - : static_cast(prevProps); + : 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 ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 { + +ArrayPropsWithOptionalObjectGenNativeComponentProps::ArrayPropsWithOptionalObjectGenNativeComponentProps( + const PropsParserContext &context, + const ArrayPropsWithOptionalObjectGenNativeComponentProps &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\\", ArrayPropsWithOptionalObjectGenNativeComponentSizesMaskWrapped{ .value = sourceProps.sizes }, {static_cast(ArrayPropsWithOptionalObjectGenNativeComponentSizes::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 ArrayPropsWithOptionalObjectGenNativeComponentProps::getDiffPropsImplementationTarget() const { + return \\"ArrayPropsWithOptionalObjectGenNativeComponent\\"; +} + +folly::dynamic ArrayPropsWithOptionalObjectGenNativeComponentProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = ArrayPropsWithOptionalObjectGenNativeComponentProps(); + const ArrayPropsWithOptionalObjectGenNativeComponentProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); if (this == oldProps) { return folly::dynamic::object(); } @@ -1950,24 +2322,82 @@ Map { namespace facebook::react { -ObjectPropsProps::ObjectPropsProps( +ObjectPropsWithOptionalGenProps::ObjectPropsWithOptionalGenProps( const PropsParserContext &context, - const ObjectPropsProps &sourceProps, + const ObjectPropsWithOptionalGenProps &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\\"; +ComponentName ObjectPropsWithOptionalGenProps::getDiffPropsImplementationTarget() const { + return \\"ObjectPropsWithOptionalGen\\"; } -folly::dynamic ObjectPropsProps::getDiffProps( +folly::dynamic ObjectPropsWithOptionalGenProps::getDiffProps( const Props* prevProps) const { - static const auto defaultProps = ObjectPropsProps(); - const ObjectPropsProps* oldProps = prevProps == nullptr + static const auto defaultProps = ObjectPropsWithOptionalGenProps(); + const ObjectPropsWithOptionalGenProps* oldProps = prevProps == nullptr ? &defaultProps - : static_cast(prevProps); + : 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 OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 { + +ObjectPropsWithOptionalObjectGenProps::ObjectPropsWithOptionalObjectGenProps( + const PropsParserContext &context, + const ObjectPropsWithOptionalObjectGenProps &sourceProps, + const RawProps &rawProps): ViewProps(context, sourceProps, rawProps), + + objectProp(convertRawProp(context, rawProps, \\"objectProp\\", sourceProps.objectProp, {})) {} + +#ifdef RN_SERIALIZABLE_STATE +ComponentName ObjectPropsWithOptionalObjectGenProps::getDiffPropsImplementationTarget() const { + return \\"ObjectPropsWithOptionalObjectGen\\"; +} + +folly::dynamic ObjectPropsWithOptionalObjectGenProps::getDiffProps( + const Props* prevProps) const { + static const auto defaultProps = ObjectPropsWithOptionalObjectGenProps(); + const ObjectPropsWithOptionalObjectGenProps* oldProps = prevProps == nullptr + ? &defaultProps + : static_cast(prevProps); if (this == oldProps) { return folly::dynamic::object(); } 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 06e042555b03e7..9caeed3455d11b 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 @@ -112,6 +112,12 @@ static inline folly::dynamic toDynamic(const AllPropObjectArrayPropStruct &value #endif struct AllPropObjectPrimitiveRequiredPropStruct { + std::string string{std::string{\\"defaultString\\"}}; + bool boolean{false}; + Float float{3.14}; + std::string stringNoDefault{}; + bool booleanNoDefault{}; + Float floatNoDefault{}; ImageSource image{}; SharedColor color{}; Point point{}; @@ -122,6 +128,12 @@ struct AllPropObjectPrimitiveRequiredPropStruct { folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); + result[\\"string\\"] = string; + result[\\"boolean\\"] = boolean; + result[\\"float\\"] = float; + result[\\"stringNoDefault\\"] = stringNoDefault; + result[\\"booleanNoDefault\\"] = booleanNoDefault; + result[\\"floatNoDefault\\"] = floatNoDefault; result[\\"image\\"] = ::facebook::react::toDynamic(image); result[\\"color\\"] = ::facebook::react::toDynamic(color); result[\\"point\\"] = ::facebook::react::toDynamic(point); @@ -133,6 +145,30 @@ struct AllPropObjectPrimitiveRequiredPropStruct { static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropObjectPrimitiveRequiredPropStruct &result) { auto map = (std::unordered_map)value; + auto tmp_string = map.find(\\"string\\"); + if (tmp_string != map.end()) { + fromRawValue(context, tmp_string->second, result.string); + } + auto tmp_boolean = map.find(\\"boolean\\"); + if (tmp_boolean != map.end()) { + fromRawValue(context, tmp_boolean->second, result.boolean); + } + auto tmp_float = map.find(\\"float\\"); + if (tmp_float != map.end()) { + fromRawValue(context, tmp_float->second, result.float); + } + auto tmp_stringNoDefault = map.find(\\"stringNoDefault\\"); + if (tmp_stringNoDefault != map.end()) { + fromRawValue(context, tmp_stringNoDefault->second, result.stringNoDefault); + } + auto tmp_booleanNoDefault = map.find(\\"booleanNoDefault\\"); + if (tmp_booleanNoDefault != map.end()) { + fromRawValue(context, tmp_booleanNoDefault->second, result.booleanNoDefault); + } + auto tmp_floatNoDefault = map.find(\\"floatNoDefault\\"); + if (tmp_floatNoDefault != map.end()) { + fromRawValue(context, tmp_floatNoDefault->second, result.floatNoDefault); + } auto tmp_image = map.find(\\"image\\"); if (tmp_image != map.end()) { fromRawValue(context, tmp_image->second, result.image); @@ -453,6 +489,12 @@ static inline folly::dynamic toDynamic(const AllPropWithOptionalGenObjectArrayPr #endif struct AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct { + std::string string{std::string{\\"defaultString\\"}}; + bool boolean{false}; + Float float{3.14}; + std::string stringNoDefault{}; + bool booleanNoDefault{}; + Float floatNoDefault{}; ImageSource image{}; SharedColor color{}; Point point{}; @@ -463,6 +505,12 @@ struct AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct { folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); + result[\\"string\\"] = string; + result[\\"boolean\\"] = boolean; + result[\\"float\\"] = float; + result[\\"stringNoDefault\\"] = stringNoDefault; + result[\\"booleanNoDefault\\"] = booleanNoDefault; + result[\\"floatNoDefault\\"] = floatNoDefault; result[\\"image\\"] = ::facebook::react::toDynamic(image); result[\\"color\\"] = ::facebook::react::toDynamic(color); result[\\"point\\"] = ::facebook::react::toDynamic(point); @@ -474,6 +522,30 @@ struct AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct { static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalGenObjectPrimitiveRequiredPropStruct &result) { auto map = (std::unordered_map)value; + auto tmp_string = map.find(\\"string\\"); + if (tmp_string != map.end()) { + fromRawValue(context, tmp_string->second, result.string); + } + auto tmp_boolean = map.find(\\"boolean\\"); + if (tmp_boolean != map.end()) { + fromRawValue(context, tmp_boolean->second, result.boolean); + } + auto tmp_float = map.find(\\"float\\"); + if (tmp_float != map.end()) { + fromRawValue(context, tmp_float->second, result.float); + } + auto tmp_stringNoDefault = map.find(\\"stringNoDefault\\"); + if (tmp_stringNoDefault != map.end()) { + fromRawValue(context, tmp_stringNoDefault->second, result.stringNoDefault); + } + auto tmp_booleanNoDefault = map.find(\\"booleanNoDefault\\"); + if (tmp_booleanNoDefault != map.end()) { + fromRawValue(context, tmp_booleanNoDefault->second, result.booleanNoDefault); + } + auto tmp_floatNoDefault = map.find(\\"floatNoDefault\\"); + if (tmp_floatNoDefault != map.end()) { + fromRawValue(context, tmp_floatNoDefault->second, result.floatNoDefault); + } auto tmp_image = map.find(\\"image\\"); if (tmp_image != map.end()) { fromRawValue(context, tmp_image->second, result.image); @@ -682,7 +754,7 @@ class AllPropWithOptionalGenProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture ARRAY_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_GEN 1`] = ` Map { "Props.h" => " /** @@ -695,484 +767,369 @@ 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 AllPropWithOptionalObjectGenStringEnumProp { 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, AllPropWithOptionalObjectGenStringEnumProp &result) { + auto string = (std::string)value; + if (string == \\"option1\\") { result = AllPropWithOptionalObjectGenStringEnumProp::Option1; return; } + abort(); } -constexpr ArrayPropsNativeComponentSizesMask operator|( - ArrayPropsNativeComponentSizesMask const lhs, - enum ArrayPropsNativeComponentSizes const rhs) { - return lhs | static_cast(rhs); +static inline std::string toString(const AllPropWithOptionalObjectGenStringEnumProp &value) { + switch (value) { + case AllPropWithOptionalObjectGenStringEnumProp::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 AllPropWithOptionalObjectGenStringEnumProp &value) { + return toString(value); } +#endif +enum class AllPropWithOptionalObjectGenIntEnumProp { 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, AllPropWithOptionalObjectGenIntEnumProp &result) { + assert(value.hasType()); + auto integerValue = (int)value; + switch (integerValue) { + case 0: + result = AllPropWithOptionalObjectGenIntEnumProp::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 AllPropWithOptionalObjectGenIntEnumProp &value) { + switch (value) { + case AllPropWithOptionalObjectGenIntEnumProp::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 AllPropWithOptionalObjectGenIntEnumProp &value) { + switch (value) { + case AllPropWithOptionalObjectGenIntEnumProp::IntEnumProp0: return 0; + default: + abort(); + } } -struct ArrayPropsNativeComponentObjectStruct { - std::string stringProp{std::string{\\"\\"}}; +#endif +struct AllPropWithOptionalObjectGenObjectArrayPropStruct { + std::optional> array{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentObjectStruct&) const = default; + bool operator==(const AllPropWithOptionalObjectGenObjectArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"stringProp\\"] = stringProp; + if (array.has_value()) { + result[\\"array\\"] = ::facebook::react::toDynamic(array.value()); + } 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, AllPropWithOptionalObjectGenObjectArrayPropStruct &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 AllPropWithOptionalObjectGenObjectArrayPropStruct &value) { + return \\"[Object AllPropWithOptionalObjectGenObjectArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentObjectStruct &value) { +static inline folly::dynamic toDynamic(const AllPropWithOptionalObjectGenObjectArrayPropStruct &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 AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct { + std::string string{std::string{\\"defaultString\\"}}; + bool boolean{false}; + Float float{3.14}; + std::optional stringNoDefault{}; + std::optional booleanNoDefault{}; + std::optional floatNoDefault{}; + std::optional image{}; + std::optional color{}; + std::optional point{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"string\\"] = string; + result[\\"boolean\\"] = boolean; + result[\\"float\\"] = float; + if (stringNoDefault.has_value()) { + result[\\"stringNoDefault\\"] = stringNoDefault.value(); + } + if (booleanNoDefault.has_value()) { + result[\\"booleanNoDefault\\"] = booleanNoDefault.value(); + } + if (floatNoDefault.has_value()) { + result[\\"floatNoDefault\\"] = floatNoDefault.value(); + } + if (image.has_value()) { + result[\\"image\\"] = ::facebook::react::toDynamic(image.value()); + } + if (color.has_value()) { + result[\\"color\\"] = ::facebook::react::toDynamic(color.value()); + } + if (point.has_value()) { + result[\\"point\\"] = ::facebook::react::toDynamic(point.value()); + } + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct &result) { + auto map = (std::unordered_map)value; + + auto tmp_string = map.find(\\"string\\"); + if (tmp_string != map.end()) { + fromRawValue(context, tmp_string->second, result.string); + } + auto tmp_boolean = map.find(\\"boolean\\"); + if (tmp_boolean != map.end()) { + fromRawValue(context, tmp_boolean->second, result.boolean); + } + auto tmp_float = map.find(\\"float\\"); + if (tmp_float != map.end()) { + fromRawValue(context, tmp_float->second, result.float); + } + auto tmp_stringNoDefault = map.find(\\"stringNoDefault\\"); + if (tmp_stringNoDefault != map.end()) { + fromRawValue(context, tmp_stringNoDefault->second, result.stringNoDefault); + } + auto tmp_booleanNoDefault = map.find(\\"booleanNoDefault\\"); + if (tmp_booleanNoDefault != map.end()) { + fromRawValue(context, tmp_booleanNoDefault->second, result.booleanNoDefault); + } + auto tmp_floatNoDefault = map.find(\\"floatNoDefault\\"); + if (tmp_floatNoDefault != map.end()) { + fromRawValue(context, tmp_floatNoDefault->second, result.floatNoDefault); + } + 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 AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct &value) { + return \\"[Object AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct]\\"; +} -struct ArrayPropsNativeComponentArrayObjectStruct { - std::string stringProp{std::string{\\"\\"}}; +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropWithOptionalObjectGenNestedPropANestedPropBStruct { + std::string nestedPropC{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentArrayObjectStruct&) const = default; + bool operator==(const AllPropWithOptionalObjectGenNestedPropANestedPropBStruct&) 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, AllPropWithOptionalObjectGenNestedPropANestedPropBStruct &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 AllPropWithOptionalObjectGenNestedPropANestedPropBStruct &value) { + return \\"[Object AllPropWithOptionalObjectGenNestedPropANestedPropBStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayObjectStruct &value) { +static inline folly::dynamic toDynamic(const AllPropWithOptionalObjectGenNestedPropANestedPropBStruct &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 AllPropWithOptionalObjectGenNestedPropAStruct { + AllPropWithOptionalObjectGenNestedPropANestedPropBStruct nestedPropB{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const AllPropWithOptionalObjectGenNestedPropAStruct&) 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, AllPropWithOptionalObjectGenNestedPropAStruct &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 AllPropWithOptionalObjectGenNestedPropAStruct &value) { + return \\"[Object AllPropWithOptionalObjectGenNestedPropAStruct]\\"; +} -struct ArrayPropsNativeComponentArrayStruct { - std::vector object{}; +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const AllPropWithOptionalObjectGenNestedPropAStruct &value) { + return value.toDynamic(); +} +#endif + +struct AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct { + std::string stringProp{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentArrayStruct&) const = default; + bool operator==(const AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct&) 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, AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct &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 AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayStruct &value) { +static inline folly::dynamic toDynamic(const AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct &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; + AllPropWithOptionalObjectGenNestedArrayAsPropertyArrayPropStruct newItem; fromRawValue(context, item, newItem); result.emplace_back(newItem); } } -struct ArrayPropsNativeComponentArrayOfArrayOfObjectStruct { - std::string stringProp{std::string{\\"\\"}}; +struct AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct { + std::vector arrayProp{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct&) const = default; + bool operator==(const AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct&) 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, AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct &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 AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct &value) { + return \\"[Object AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentArrayOfArrayOfObjectStruct &value) { +static inline folly::dynamic toDynamic(const AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct &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 AllPropWithOptionalObjectGenProps final : public ViewProps { public: - ArrayPropsNativeComponentProps() = default; - ArrayPropsNativeComponentProps(const PropsParserContext& context, const ArrayPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + AllPropWithOptionalObjectGenProps() = default; + AllPropWithOptionalObjectGenProps(const PropsParserContext& context, const AllPropWithOptionalObjectGenProps &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; - - 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{}; + 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}; + AllPropWithOptionalObjectGenStringEnumProp stringEnumProp{AllPropWithOptionalObjectGenStringEnumProp::Option1}; + AllPropWithOptionalObjectGenIntEnumProp intEnumProp{AllPropWithOptionalObjectGenIntEnumProp::IntEnumProp0}; + AllPropWithOptionalObjectGenObjectArrayPropStruct objectArrayProp{}; + AllPropWithOptionalObjectGenObjectPrimitiveRequiredPropStruct objectPrimitiveRequiredProp{}; + AllPropWithOptionalObjectGenNestedPropAStruct nestedPropA{}; + AllPropWithOptionalObjectGenNestedArrayAsPropertyStruct nestedArrayAsProperty{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1188,7 +1145,7 @@ class ArrayPropsNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` +exports[`GeneratePropsH can generate fixture ARRAY_PROPS 1`] = ` Map { "Props.h" => " /** @@ -1460,19 +1417,19 @@ class ArrayPropsNativeComponentProps final : public ViewProps { #pragma mark - Props - 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{}; + 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; @@ -1488,7 +1445,7 @@ class ArrayPropsNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture BOOLEAN_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` Map { "Props.h" => " /** @@ -1501,63 +1458,81 @@ Map { */ #pragma once +#include #include #include +#include #include +#include +#include +#include +#include namespace facebook::react { -class BooleanPropNativeComponentProps final : public ViewProps { - public: - BooleanPropNativeComponentProps() = default; - BooleanPropNativeComponentProps(const PropsParserContext& context, const BooleanPropNativeComponentProps &sourceProps, const RawProps &rawProps); - -#pragma mark - Props - - bool disabled{false}; +struct ArrayPropsNativeComponentNativePrimitivesStruct { + std::vector colors{}; + std::vector srcs{}; + std::vector points{}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif +#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 }; -} // namespace facebook::react -", +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); + } } -`; -exports[`GeneratePropsH can generate fixture COLOR_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 std::string toString(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { + return \\"[Object ArrayPropsNativeComponentNativePrimitivesStruct]\\"; +} -#include -#include -#include -#include +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsNativeComponentNativePrimitivesStruct &value) { + return value.toDynamic(); +} +#endif -namespace facebook::react { +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 ColorPropNativeComponentProps final : public ViewProps { +class ArrayPropsNativeComponentProps final : public ViewProps { public: - ColorPropNativeComponentProps() = default; - ColorPropNativeComponentProps(const PropsParserContext& context, const ColorPropNativeComponentProps &sourceProps, const RawProps &rawProps); + ArrayPropsNativeComponentProps() = default; + ArrayPropsNativeComponentProps(const PropsParserContext& context, const ArrayPropsNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - SharedColor tintColor{}; + std::vector nativePrimitives{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1573,7 +1548,7 @@ class ColorPropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture COMMANDS 1`] = ` +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` Map { "Props.h" => " /** @@ -1586,62 +1561,81 @@ Map { */ #pragma once +#include #include #include +#include #include +#include +#include +#include +#include namespace facebook::react { -class CommandNativeComponentProps final : public ViewProps { - public: - CommandNativeComponentProps() = default; - CommandNativeComponentProps(const PropsParserContext& context, const CommandNativeComponentProps &sourceProps, const RawProps &rawProps); - -#pragma mark - Props - - +struct ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct { + std::vector colors{}; + std::vector srcs{}; + std::vector points{}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct&) 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 }; -} // namespace facebook::react -", +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct &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); + } } -`; -exports[`GeneratePropsH can generate fixture COMMANDS_AND_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 +static inline std::string toString(const ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct &value) { + return \\"[Object ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct]\\"; +} -#include -#include -#include +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct &value) { + return value.toDynamic(); +} +#endif -namespace facebook::react { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsOptionalGenNativeComponentNativePrimitivesStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} -class CommandNativeComponentProps final : public ViewProps { +class ArrayPropsOptionalGenNativeComponentProps final : public ViewProps { public: - CommandNativeComponentProps() = default; - CommandNativeComponentProps(const PropsParserContext& context, const CommandNativeComponentProps &sourceProps, const RawProps &rawProps); + ArrayPropsOptionalGenNativeComponentProps() = default; + ArrayPropsOptionalGenNativeComponentProps(const PropsParserContext& context, const ArrayPropsOptionalGenNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - std::string accessibilityHint{std::string{\\"\\"}}; + std::optional> nativePrimitives{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1657,7 +1651,7 @@ class CommandNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture DIMENSION_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN 1`] = ` Map { "Props.h" => " /** @@ -1670,69 +1664,87 @@ Map { */ #pragma once +#include #include #include -#include +#include #include -#include +#include +#include +#include +#include namespace facebook::react { -class DimensionPropNativeComponentProps final : public ViewProps { - public: - DimensionPropNativeComponentProps() = default; - DimensionPropNativeComponentProps(const PropsParserContext& context, const DimensionPropNativeComponentProps &sourceProps, const RawProps &rawProps); - -#pragma mark - Props - - YGValue marginBack{}; +struct ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct { + std::optional> colors{}; + std::optional> srcs{}; + std::optional> points{}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct&) const = default; - + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + if (colors.has_value()) { + result[\\"colors\\"] = ::facebook::react::toDynamic(colors.value()); + } + if (srcs.has_value()) { + result[\\"srcs\\"] = ::facebook::react::toDynamic(srcs.value()); + } + if (points.has_value()) { + result[\\"points\\"] = ::facebook::react::toDynamic(points.value()); + } + return result; + } +#endif }; -} // namespace facebook::react -", +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct &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); + } } -`; -exports[`GeneratePropsH can generate fixture DOUBLE_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 +static inline std::string toString(const ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct &value) { + return \\"[Object ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct]\\"; +} -#include -#include -#include +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct &value) { + return value.toDynamic(); +} +#endif -namespace facebook::react { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsOptionalObjectGenNativeComponentNativePrimitivesStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} -class DoublePropNativeComponentProps final : public ViewProps { +class ArrayPropsOptionalObjectGenNativeComponentProps final : public ViewProps { public: - DoublePropNativeComponentProps() = default; - DoublePropNativeComponentProps(const PropsParserContext& context, const DoublePropNativeComponentProps &sourceProps, const RawProps &rawProps); + ArrayPropsOptionalObjectGenNativeComponentProps() = default; + ArrayPropsOptionalObjectGenNativeComponentProps(const PropsParserContext& context, const ArrayPropsOptionalObjectGenNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - double blurRadius{0.0}; - double blurRadius2{0.001}; - double blurRadius3{2.1}; - double blurRadius4{0.0}; - double blurRadius5{1.0}; - double blurRadius6{0.0}; + std::optional> nativePrimitives{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1748,7 +1760,7 @@ class DoublePropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture EVENT_NESTED_OBJECT_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` Map { "Props.h" => " /** @@ -1761,104 +1773,278 @@ Map { */ #pragma once +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include namespace facebook::react { -class EventsNestedObjectNativeComponentProps final : public ViewProps { - public: - EventsNestedObjectNativeComponentProps() = default; - EventsNestedObjectNativeComponentProps(const PropsParserContext& context, const EventsNestedObjectNativeComponentProps &sourceProps, const RawProps &rawProps); +using ArrayPropsWithOptionalGenNativeComponentSizesMask = uint32_t; -#pragma mark - Props +struct ArrayPropsWithOptionalGenNativeComponentSizesMaskWrapped { + ArrayPropsWithOptionalGenNativeComponentSizesMask value; +}; - bool disabled{false}; +enum class ArrayPropsWithOptionalGenNativeComponentSizes: ArrayPropsWithOptionalGenNativeComponentSizesMask { + Small = 1 << 0, + Large = 1 << 1 +}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; +constexpr bool operator&( + ArrayPropsWithOptionalGenNativeComponentSizesMask const lhs, + enum ArrayPropsWithOptionalGenNativeComponentSizes const rhs) { + return lhs & static_cast(rhs); +} - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif +constexpr ArrayPropsWithOptionalGenNativeComponentSizesMask operator|( + ArrayPropsWithOptionalGenNativeComponentSizesMask const lhs, + enum ArrayPropsWithOptionalGenNativeComponentSizes const rhs) { + return lhs | static_cast(rhs); +} - +constexpr void operator|=( + ArrayPropsWithOptionalGenNativeComponentSizesMask &lhs, + enum ArrayPropsWithOptionalGenNativeComponentSizes const rhs) { + lhs = lhs | static_cast(rhs); +} + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsWithOptionalGenNativeComponentSizesMaskWrapped &wrapped) { + auto items = std::vector{value}; + for (const auto &item : items) { + if (item == \\"small\\") { + wrapped.value |= ArrayPropsWithOptionalGenNativeComponentSizes::Small; + continue; + } + if (item == \\"large\\") { + wrapped.value |= ArrayPropsWithOptionalGenNativeComponentSizes::Large; + continue; + } + abort(); + } +} + +static inline std::string toString(const ArrayPropsWithOptionalGenNativeComponentSizesMaskWrapped &wrapped) { + auto result = std::string{}; + auto separator = std::string{\\", \\"}; + + if (wrapped.value & ArrayPropsWithOptionalGenNativeComponentSizes::Small) { + result += \\"small\\" + separator; + } + if (wrapped.value & ArrayPropsWithOptionalGenNativeComponentSizes::Large) { + result += \\"large\\" + separator; + } + if (!result.empty()) { + result.erase(result.length() - separator.length()); + } + return result; +} +struct ArrayPropsWithOptionalGenNativeComponentObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalGenNativeComponentObjectStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"stringProp\\"] = stringProp; + return result; + } +#endif }; -} // namespace facebook::react -", +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsWithOptionalGenNativeComponentObjectStruct &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); + } } -`; -exports[`GeneratePropsH can generate fixture EVENT_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 +static inline std::string toString(const ArrayPropsWithOptionalGenNativeComponentObjectStruct &value) { + return \\"[Object ArrayPropsWithOptionalGenNativeComponentObjectStruct]\\"; +} -#include -#include -#include +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalGenNativeComponentObjectStruct &value) { + return value.toDynamic(); +} +#endif -namespace facebook::react { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsWithOptionalGenNativeComponentObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} -class EventsNativeComponentProps final : public ViewProps { - public: - EventsNativeComponentProps() = default; - EventsNativeComponentProps(const PropsParserContext& context, const EventsNativeComponentProps &sourceProps, const RawProps &rawProps); -#pragma mark - Props +struct ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct { + std::string stringProp{std::string{\\"\\"}}; - bool disabled{false}; - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct&) const = default; - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif + 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, ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct &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 ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct &value) { + return \\"[Object ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct &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) { + ArrayPropsWithOptionalGenNativeComponentArrayObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsWithOptionalGenNativeComponentArrayStruct { + std::vector object{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalGenNativeComponentArrayStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + result[\\"object\\"] = ::facebook::react::toDynamic(object); + return result; + } +#endif }; -} // namespace facebook::react -", +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsWithOptionalGenNativeComponentArrayStruct &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); + } } -`; -exports[`GeneratePropsH can generate fixture EVENTS_WITH_PAPER_NAME 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 std::string toString(const ArrayPropsWithOptionalGenNativeComponentArrayStruct &value) { + return \\"[Object ArrayPropsWithOptionalGenNativeComponentArrayStruct]\\"; +} -#include -#include -#include +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalGenNativeComponentArrayStruct &value) { + return value.toDynamic(); +} +#endif -namespace facebook::react { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, std::vector &result) { + auto items = (std::vector)value; + for (const auto &item : items) { + ArrayPropsWithOptionalGenNativeComponentArrayStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} -class InterfaceOnlyComponentProps final : public ViewProps { + +struct ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct&) 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, ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct &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 ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct &value) { + return \\"[Object ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct &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) { + ArrayPropsWithOptionalGenNativeComponentArrayOfArrayOfObjectStruct newItem; + fromRawValue(context, nestedItem, newItem); + nestedArray.emplace_back(newItem); + } + result.emplace_back(nestedArray); + } +} + +class ArrayPropsWithOptionalGenNativeComponentProps final : public ViewProps { public: - InterfaceOnlyComponentProps() = default; - InterfaceOnlyComponentProps(const PropsParserContext& context, const InterfaceOnlyComponentProps &sourceProps, const RawProps &rawProps); + ArrayPropsWithOptionalGenNativeComponentProps() = default; + ArrayPropsWithOptionalGenNativeComponentProps(const PropsParserContext& context, const ArrayPropsWithOptionalGenNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - + 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(ArrayPropsWithOptionalGenNativeComponentSizes::Small)}; + std::optional> object{}; + std::optional> array{}; + std::optional>> arrayOfArrayOfObject{}; + std::optional> arrayOfMixed{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1874,7 +2060,7 @@ class InterfaceOnlyComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture EXCLUDE_ANDROID 1`] = ` +exports[`GeneratePropsH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` Map { "Props.h" => " /** @@ -1887,20 +2073,280 @@ Map { */ #pragma once +#include #include #include +#include +#include #include +#include +#include +#include +#include +#include namespace facebook::react { -class ExcludedAndroidComponentProps final : public ViewProps { - public: - ExcludedAndroidComponentProps() = default; - ExcludedAndroidComponentProps(const PropsParserContext& context, const ExcludedAndroidComponentProps &sourceProps, const RawProps &rawProps); +using ArrayPropsWithOptionalObjectGenNativeComponentSizesMask = uint32_t; -#pragma mark - Props +struct ArrayPropsWithOptionalObjectGenNativeComponentSizesMaskWrapped { + ArrayPropsWithOptionalObjectGenNativeComponentSizesMask value; +}; - +enum class ArrayPropsWithOptionalObjectGenNativeComponentSizes: ArrayPropsWithOptionalObjectGenNativeComponentSizesMask { + Small = 1 << 0, + Large = 1 << 1 +}; + +constexpr bool operator&( + ArrayPropsWithOptionalObjectGenNativeComponentSizesMask const lhs, + enum ArrayPropsWithOptionalObjectGenNativeComponentSizes const rhs) { + return lhs & static_cast(rhs); +} + +constexpr ArrayPropsWithOptionalObjectGenNativeComponentSizesMask operator|( + ArrayPropsWithOptionalObjectGenNativeComponentSizesMask const lhs, + enum ArrayPropsWithOptionalObjectGenNativeComponentSizes const rhs) { + return lhs | static_cast(rhs); +} + +constexpr void operator|=( + ArrayPropsWithOptionalObjectGenNativeComponentSizesMask &lhs, + enum ArrayPropsWithOptionalObjectGenNativeComponentSizes const rhs) { + lhs = lhs | static_cast(rhs); +} + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsWithOptionalObjectGenNativeComponentSizesMaskWrapped &wrapped) { + auto items = std::vector{value}; + for (const auto &item : items) { + if (item == \\"small\\") { + wrapped.value |= ArrayPropsWithOptionalObjectGenNativeComponentSizes::Small; + continue; + } + if (item == \\"large\\") { + wrapped.value |= ArrayPropsWithOptionalObjectGenNativeComponentSizes::Large; + continue; + } + abort(); + } +} + +static inline std::string toString(const ArrayPropsWithOptionalObjectGenNativeComponentSizesMaskWrapped &wrapped) { + auto result = std::string{}; + auto separator = std::string{\\", \\"}; + + if (wrapped.value & ArrayPropsWithOptionalObjectGenNativeComponentSizes::Small) { + result += \\"small\\" + separator; + } + if (wrapped.value & ArrayPropsWithOptionalObjectGenNativeComponentSizes::Large) { + result += \\"large\\" + separator; + } + if (!result.empty()) { + result.erase(result.length() - separator.length()); + } + return result; +} +struct ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct&) 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, ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct &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 ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct &value) { + return \\"[Object ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct &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) { + ArrayPropsWithOptionalObjectGenNativeComponentObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct&) 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, ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct &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 ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct &value) { + return \\"[Object ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct &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) { + ArrayPropsWithOptionalObjectGenNativeComponentArrayObjectStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct { + std::optional> object{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct&) const = default; + + folly::dynamic toDynamic() const { + folly::dynamic result = folly::dynamic::object(); + if (object.has_value()) { + result[\\"object\\"] = ::facebook::react::toDynamic(object.value()); + } + return result; + } +#endif +}; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct &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 ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct &value) { + return \\"[Object ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct &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) { + ArrayPropsWithOptionalObjectGenNativeComponentArrayStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct&) 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, ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct &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 ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct &value) { + return \\"[Object ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct &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) { + ArrayPropsWithOptionalObjectGenNativeComponentArrayOfArrayOfObjectStruct newItem; + fromRawValue(context, nestedItem, newItem); + nestedArray.emplace_back(newItem); + } + result.emplace_back(nestedArray); + } +} + +class ArrayPropsWithOptionalObjectGenNativeComponentProps final : public ViewProps { + public: + ArrayPropsWithOptionalObjectGenNativeComponentProps() = default; + ArrayPropsWithOptionalObjectGenNativeComponentProps(const PropsParserContext& context, const ArrayPropsWithOptionalObjectGenNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + 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(ArrayPropsWithOptionalObjectGenNativeComponentSizes::Small)}; + std::optional> object{}; + std::optional> array{}; + std::optional>> arrayOfArrayOfObject{}; + std::optional> arrayOfMixed{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1916,7 +2362,7 @@ class ExcludedAndroidComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture EXCLUDE_ANDROID_IOS 1`] = ` +exports[`GeneratePropsH can generate fixture BOOLEAN_PROP 1`] = ` Map { "Props.h" => " /** @@ -1935,14 +2381,14 @@ Map { namespace facebook::react { -class ExcludedAndroidIosComponentProps final : public ViewProps { +class BooleanPropNativeComponentProps final : public ViewProps { public: - ExcludedAndroidIosComponentProps() = default; - ExcludedAndroidIosComponentProps(const PropsParserContext& context, const ExcludedAndroidIosComponentProps &sourceProps, const RawProps &rawProps); + BooleanPropNativeComponentProps() = default; + BooleanPropNativeComponentProps(const PropsParserContext& context, const BooleanPropNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - + bool disabled{false}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -1958,7 +2404,7 @@ class ExcludedAndroidIosComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES 1`] = ` +exports[`GeneratePropsH can generate fixture COLOR_PROP 1`] = ` Map { "Props.h" => " /** @@ -1974,35 +2420,18 @@ Map { #include #include #include +#include namespace facebook::react { -class ExcludedIosComponentProps final : public ViewProps { - public: - ExcludedIosComponentProps() = default; - ExcludedIosComponentProps(const PropsParserContext& context, const ExcludedIosComponentProps &sourceProps, const RawProps &rawProps); - -#pragma mark - Props - - - - #ifdef RN_SERIALIZABLE_STATE - ComponentName getDiffPropsImplementationTarget() const override; - - folly::dynamic getDiffProps(const Props* prevProps) const override; - #endif - - -}; - -class MultiFileIncludedNativeComponentProps final : public ViewProps { +class ColorPropNativeComponentProps final : public ViewProps { public: - MultiFileIncludedNativeComponentProps() = default; - MultiFileIncludedNativeComponentProps(const PropsParserContext& context, const MultiFileIncludedNativeComponentProps &sourceProps, const RawProps &rawProps); + ColorPropNativeComponentProps() = default; + ColorPropNativeComponentProps(const PropsParserContext& context, const ColorPropNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - bool disabled{true}; + SharedColor tintColor{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2018,7 +2447,7 @@ class MultiFileIncludedNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture FLOAT_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture COMMANDS 1`] = ` Map { "Props.h" => " /** @@ -2037,19 +2466,14 @@ Map { namespace facebook::react { -class FloatPropNativeComponentProps final : public ViewProps { +class CommandNativeComponentProps final : public ViewProps { public: - FloatPropNativeComponentProps() = default; - FloatPropNativeComponentProps(const PropsParserContext& context, const FloatPropNativeComponentProps &sourceProps, const RawProps &rawProps); + CommandNativeComponentProps() = default; + CommandNativeComponentProps(const PropsParserContext& context, const CommandNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - Float blurRadius{0.0}; - Float blurRadius2{0.001}; - Float blurRadius3{2.1}; - Float blurRadius4{0.0}; - Float blurRadius5{1.0}; - Float blurRadius6{0.0}; + #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2065,7 +2489,7 @@ class FloatPropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture IMAGE_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture COMMANDS_AND_PROPS 1`] = ` Map { "Props.h" => " /** @@ -2081,18 +2505,17 @@ Map { #include #include #include -#include namespace facebook::react { -class ImagePropNativeComponentProps final : public ViewProps { +class CommandNativeComponentProps final : public ViewProps { public: - ImagePropNativeComponentProps() = default; - ImagePropNativeComponentProps(const PropsParserContext& context, const ImagePropNativeComponentProps &sourceProps, const RawProps &rawProps); + CommandNativeComponentProps() = default; + CommandNativeComponentProps(const PropsParserContext& context, const CommandNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - ImageSource thumbImage{}; + std::string accessibilityHint{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2108,7 +2531,7 @@ class ImagePropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture INSETS_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture DIMENSION_PROP 1`] = ` Map { "Props.h" => " /** @@ -2123,19 +2546,20 @@ Map { #include #include +#include #include -#include +#include namespace facebook::react { -class InsetsPropNativeComponentProps final : public ViewProps { +class DimensionPropNativeComponentProps final : public ViewProps { public: - InsetsPropNativeComponentProps() = default; - InsetsPropNativeComponentProps(const PropsParserContext& context, const InsetsPropNativeComponentProps &sourceProps, const RawProps &rawProps); + DimensionPropNativeComponentProps() = default; + DimensionPropNativeComponentProps(const PropsParserContext& context, const DimensionPropNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - EdgeInsets contentInset{}; + YGValue marginBack{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2151,7 +2575,7 @@ class InsetsPropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture INT32_ENUM_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture DOUBLE_PROPS 1`] = ` Map { "Props.h" => " /** @@ -2170,56 +2594,61 @@ Map { namespace facebook::react { -enum class Int32EnumPropsNativeComponentMaxInterval { MaxInterval0 = 0, MaxInterval1 = 1, MaxInterval2 = 2 }; +class DoublePropNativeComponentProps final : public ViewProps { + public: + DoublePropNativeComponentProps() = default; + DoublePropNativeComponentProps(const PropsParserContext& context, const DoublePropNativeComponentProps &sourceProps, const RawProps &rawProps); -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, Int32EnumPropsNativeComponentMaxInterval &result) { - assert(value.hasType()); - auto integerValue = (int)value; - switch (integerValue) { - case 0: - result = Int32EnumPropsNativeComponentMaxInterval::MaxInterval0; - return; - case 1: - result = Int32EnumPropsNativeComponentMaxInterval::MaxInterval1; - return; - case 2: - result = Int32EnumPropsNativeComponentMaxInterval::MaxInterval2; - return; - default: - abort(); - } -} +#pragma mark - Props -static inline std::string toString(const Int32EnumPropsNativeComponentMaxInterval &value) { - switch (value) { - case Int32EnumPropsNativeComponentMaxInterval::MaxInterval0: return \\"0\\"; - case Int32EnumPropsNativeComponentMaxInterval::MaxInterval1: return \\"1\\"; - case Int32EnumPropsNativeComponentMaxInterval::MaxInterval2: return \\"2\\"; - default: - abort(); - } -} + double blurRadius{0.0}; + double blurRadius2{0.001}; + double blurRadius3{2.1}; + double blurRadius4{0.0}; + double blurRadius5{1.0}; + double blurRadius6{0.0}; -#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(); - } + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +} // namespace facebook::react +", } -#endif +`; -class Int32EnumPropsNativeComponentProps final : public ViewProps { +exports[`GeneratePropsH can generate fixture EVENT_NESTED_OBJECT_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 EventsNestedObjectNativeComponentProps final : public ViewProps { public: - Int32EnumPropsNativeComponentProps() = default; - Int32EnumPropsNativeComponentProps(const PropsParserContext& context, const Int32EnumPropsNativeComponentProps &sourceProps, const RawProps &rawProps); + EventsNestedObjectNativeComponentProps() = default; + EventsNestedObjectNativeComponentProps(const PropsParserContext& context, const EventsNestedObjectNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - Int32EnumPropsNativeComponentMaxInterval maxInterval{Int32EnumPropsNativeComponentMaxInterval::MaxInterval0}; + bool disabled{false}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2235,7 +2664,7 @@ class Int32EnumPropsNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture INTEGER_PROPS 1`] = ` +exports[`GeneratePropsH can generate fixture EVENT_PROPS 1`] = ` Map { "Props.h" => " /** @@ -2254,16 +2683,14 @@ Map { namespace facebook::react { -class IntegerPropNativeComponentProps final : public ViewProps { +class EventsNativeComponentProps final : public ViewProps { public: - IntegerPropNativeComponentProps() = default; - IntegerPropNativeComponentProps(const PropsParserContext& context, const IntegerPropNativeComponentProps &sourceProps, const RawProps &rawProps); + EventsNativeComponentProps() = default; + EventsNativeComponentProps(const PropsParserContext& context, const EventsNativeComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - int progress1{0}; - int progress2{-1}; - int progress3{10}; + bool disabled{false}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2279,7 +2706,7 @@ class IntegerPropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture INTERFACE_ONLY 1`] = ` +exports[`GeneratePropsH can generate fixture EVENTS_WITH_PAPER_NAME 1`] = ` Map { "Props.h" => " /** @@ -2305,7 +2732,7 @@ class InterfaceOnlyComponentProps final : public ViewProps { #pragma mark - Props - std::string accessibilityHint{std::string{\\"\\"}}; + #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2321,7 +2748,7 @@ class InterfaceOnlyComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture MIXED_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture EXCLUDE_ANDROID 1`] = ` Map { "Props.h" => " /** @@ -2340,14 +2767,14 @@ Map { namespace facebook::react { -class MixedPropNativeComponentProps final : public ViewProps { +class ExcludedAndroidComponentProps final : public ViewProps { public: - MixedPropNativeComponentProps() = default; - MixedPropNativeComponentProps(const PropsParserContext& context, const MixedPropNativeComponentProps &sourceProps, const RawProps &rawProps); + ExcludedAndroidComponentProps() = default; + ExcludedAndroidComponentProps(const PropsParserContext& context, const ExcludedAndroidComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - folly::dynamic mixedProp{}; + #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2363,7 +2790,7 @@ class MixedPropNativeComponentProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture MULTI_NATIVE_PROP 1`] = ` +exports[`GeneratePropsH can generate fixture EXCLUDE_ANDROID_IOS 1`] = ` Map { "Props.h" => " /** @@ -2379,23 +2806,124 @@ Map { #include #include #include -#include -#include -#include namespace facebook::react { -class ImageColorPropNativeComponentProps final : public ViewProps { +class ExcludedAndroidIosComponentProps final : public ViewProps { public: - ImageColorPropNativeComponentProps() = default; - ImageColorPropNativeComponentProps(const PropsParserContext& context, const ImageColorPropNativeComponentProps &sourceProps, const RawProps &rawProps); + ExcludedAndroidIosComponentProps() = default; + ExcludedAndroidIosComponentProps(const PropsParserContext& context, const ExcludedAndroidIosComponentProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - ImageSource thumbImage{}; - SharedColor color{}; - SharedColor thumbTintColor{}; - Point point{}; + + + #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 EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES 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 ExcludedIosComponentProps final : public ViewProps { + public: + ExcludedIosComponentProps() = default; + ExcludedIosComponentProps(const PropsParserContext& context, const ExcludedIosComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + + + #ifdef RN_SERIALIZABLE_STATE + ComponentName getDiffPropsImplementationTarget() const override; + + folly::dynamic getDiffProps(const Props* prevProps) const override; + #endif + + +}; + +class MultiFileIncludedNativeComponentProps final : public ViewProps { + public: + MultiFileIncludedNativeComponentProps() = default; + MultiFileIncludedNativeComponentProps(const PropsParserContext& context, const MultiFileIncludedNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + bool disabled{true}; + + #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 FLOAT_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 FloatPropNativeComponentProps final : public ViewProps { + public: + FloatPropNativeComponentProps() = default; + FloatPropNativeComponentProps(const PropsParserContext& context, const FloatPropNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + Float blurRadius{0.0}; + Float blurRadius2{0.001}; + Float blurRadius3{2.1}; + Float blurRadius4{0.0}; + Float blurRadius5{1.0}; + Float blurRadius6{0.0}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2406,38 +2934,821 @@ class ImageColorPropNativeComponentProps final : public ViewProps { }; -} // namespace facebook::react -", -} -`; - -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 +} // namespace facebook::react +", +} +`; + +exports[`GeneratePropsH can generate fixture IMAGE_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 +#include + +namespace facebook::react { + +class ImagePropNativeComponentProps final : public ViewProps { + public: + ImagePropNativeComponentProps() = default; + ImagePropNativeComponentProps(const PropsParserContext& context, const ImagePropNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + ImageSource thumbImage{}; + + #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 INSETS_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 +#include + +namespace facebook::react { + +class InsetsPropNativeComponentProps final : public ViewProps { + public: + InsetsPropNativeComponentProps() = default; + InsetsPropNativeComponentProps(const PropsParserContext& context, const InsetsPropNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + EdgeInsets contentInset{}; + + #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 INT32_ENUM_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 { + +enum class Int32EnumPropsNativeComponentMaxInterval { MaxInterval0 = 0, MaxInterval1 = 1, MaxInterval2 = 2 }; + +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, Int32EnumPropsNativeComponentMaxInterval &result) { + assert(value.hasType()); + auto integerValue = (int)value; + switch (integerValue) { + case 0: + result = Int32EnumPropsNativeComponentMaxInterval::MaxInterval0; + return; + case 1: + result = Int32EnumPropsNativeComponentMaxInterval::MaxInterval1; + return; + case 2: + result = Int32EnumPropsNativeComponentMaxInterval::MaxInterval2; + return; + default: + abort(); + } +} + +static inline std::string toString(const Int32EnumPropsNativeComponentMaxInterval &value) { + switch (value) { + case Int32EnumPropsNativeComponentMaxInterval::MaxInterval0: return \\"0\\"; + case Int32EnumPropsNativeComponentMaxInterval::MaxInterval1: return \\"1\\"; + case Int32EnumPropsNativeComponentMaxInterval::MaxInterval2: return \\"2\\"; + default: + abort(); + } +} + +#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 MixedPropNativeComponentProps final : public ViewProps { + public: + MixedPropNativeComponentProps() = default; + MixedPropNativeComponentProps(const PropsParserContext& context, const MixedPropNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + folly::dynamic mixedProp{}; + + #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 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 + +#include +#include +#include +#include +#include +#include + +namespace facebook::react { + +class ImageColorPropNativeComponentProps final : public ViewProps { + public: + ImageColorPropNativeComponentProps() = default; + ImageColorPropNativeComponentProps(const PropsParserContext& context, const ImageColorPropNativeComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + ImageSource thumbImage{}; + SharedColor color{}; + SharedColor thumbTintColor{}; + Point point{}; + + #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 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 + +#include +#include +#include + +namespace facebook::react { + +class NoPropsNoEventsComponentProps final : public ViewProps { + public: + NoPropsNoEventsComponentProps() = default; + NoPropsNoEventsComponentProps(const PropsParserContext& context, const NoPropsNoEventsComponentProps &sourceProps, const RawProps &rawProps); + +#pragma mark - Props + + + + #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 OBJECT_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 + +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 + +struct ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct { + std::string stringProp{std::string{\\"\\"}}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct&) 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, ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &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 ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &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) { + ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct newItem; + fromRawValue(context, item, newItem); + result.emplace_back(newItem); + } +} + + +struct ObjectPropsObjectPropNestedArrayAsPropertyStruct { + std::vector arrayProp{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyStruct&) 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, ObjectPropsObjectPropNestedArrayAsPropertyStruct &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 ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { + return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyStruct]\\"; +} + +#ifdef RN_SERIALIZABLE_STATE +static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { + return value.toDynamic(); +} +#endif + +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{}; + + +#ifdef RN_SERIALIZABLE_STATE + bool operator==(const ObjectPropsObjectPropStruct&) const = default; + + 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; -#include -#include -#include + 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); + } +} -namespace facebook::react { +static inline std::string toString(const ObjectPropsObjectPropStruct &value) { + return \\"[Object ObjectPropsObjectPropStruct]\\"; +} -class NoPropsNoEventsComponentProps final : public ViewProps { +#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; @@ -2453,7 +3764,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" => " /** @@ -2478,64 +3789,64 @@ Map { namespace facebook::react { -enum class ObjectPropsStringEnumProp { Option1 }; +enum class ObjectPropsWithOptionalGenStringEnumProp { Option1 }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsStringEnumProp &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenStringEnumProp &result) { auto string = (std::string)value; - if (string == \\"option1\\") { result = ObjectPropsStringEnumProp::Option1; return; } + if (string == \\"option1\\") { result = ObjectPropsWithOptionalGenStringEnumProp::Option1; return; } abort(); } -static inline std::string toString(const ObjectPropsStringEnumProp &value) { +static inline std::string toString(const ObjectPropsWithOptionalGenStringEnumProp &value) { switch (value) { - case ObjectPropsStringEnumProp::Option1: return \\"option1\\"; + case ObjectPropsWithOptionalGenStringEnumProp::Option1: return \\"option1\\"; default: abort(); } } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsStringEnumProp &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenStringEnumProp &value) { return toString(value); } #endif -enum class ObjectPropsIntEnumProp { IntEnumProp0 = 0 }; +enum class ObjectPropsWithOptionalGenIntEnumProp { IntEnumProp0 = 0 }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsIntEnumProp &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenIntEnumProp &result) { assert(value.hasType()); auto integerValue = (int)value; switch (integerValue) { case 0: - result = ObjectPropsIntEnumProp::IntEnumProp0; + result = ObjectPropsWithOptionalGenIntEnumProp::IntEnumProp0; return; default: abort(); } } -static inline std::string toString(const ObjectPropsIntEnumProp &value) { +static inline std::string toString(const ObjectPropsWithOptionalGenIntEnumProp &value) { switch (value) { - case ObjectPropsIntEnumProp::IntEnumProp0: return \\"0\\"; + case ObjectPropsWithOptionalGenIntEnumProp::IntEnumProp0: return \\"0\\"; default: abort(); } } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsIntEnumProp &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenIntEnumProp &value) { switch (value) { - case ObjectPropsIntEnumProp::IntEnumProp0: return 0; + case ObjectPropsWithOptionalGenIntEnumProp::IntEnumProp0: return 0; default: abort(); } } #endif -struct ObjectPropsObjectPropObjectArrayPropStruct { +struct ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct { std::vector array{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropObjectArrayPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2545,7 +3856,7 @@ struct ObjectPropsObjectPropObjectArrayPropStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropObjectArrayPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_array = map.find(\\"array\\"); @@ -2554,24 +3865,24 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropObjectArrayPropStruct &value) { - return \\"[Object ObjectPropsObjectPropObjectArrayPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropObjectArrayPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct { +struct ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct { ImageSource image{}; SharedColor color{}; Point point{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2583,7 +3894,7 @@ struct ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_image = map.find(\\"image\\"); @@ -2600,22 +3911,22 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &value) { - return \\"[Object ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropNestedPropANestedPropBStruct { +struct ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct { std::string nestedPropC{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedPropANestedPropBStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2625,7 +3936,7 @@ struct ObjectPropsObjectPropNestedPropANestedPropBStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedPropANestedPropBStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct &result) { auto map = (std::unordered_map)value; auto tmp_nestedPropC = map.find(\\"nestedPropC\\"); @@ -2634,22 +3945,22 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedPropANestedPropBStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedPropANestedPropBStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedPropANestedPropBStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropNestedPropAStruct { - ObjectPropsObjectPropNestedPropANestedPropBStruct nestedPropB{}; +struct ObjectPropsWithOptionalGenObjectPropNestedPropAStruct { + ObjectPropsWithOptionalGenObjectPropNestedPropANestedPropBStruct nestedPropB{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedPropAStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropNestedPropAStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2659,7 +3970,7 @@ struct ObjectPropsObjectPropNestedPropAStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedPropAStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropNestedPropAStruct &result) { auto map = (std::unordered_map)value; auto tmp_nestedPropB = map.find(\\"nestedPropB\\"); @@ -2668,22 +3979,22 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedPropAStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedPropAStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropNestedPropAStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropNestedPropAStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedPropAStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropNestedPropAStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct { +struct ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct { std::string stringProp{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2693,7 +4004,7 @@ struct ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_stringProp = map.find(\\"stringProp\\"); @@ -2702,32 +4013,32 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct &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) { - ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct newItem; + ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyArrayPropStruct newItem; fromRawValue(context, item, newItem); result.emplace_back(newItem); } } -struct ObjectPropsObjectPropNestedArrayAsPropertyStruct { - std::vector arrayProp{}; +struct ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct { + std::vector arrayProp{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2737,7 +4048,7 @@ struct ObjectPropsObjectPropNestedArrayAsPropertyStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedArrayAsPropertyStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct &result) { auto map = (std::unordered_map)value; auto tmp_arrayProp = map.find(\\"arrayProp\\"); @@ -2746,17 +4057,17 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropStruct { +struct ObjectPropsWithOptionalGenObjectPropStruct { std::string stringProp{std::string{\\"\\"}}; bool booleanProp{false}; Float floatProp{0.0}; @@ -2765,16 +4076,16 @@ struct ObjectPropsObjectPropStruct { 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{}; + ObjectPropsWithOptionalGenStringEnumProp stringEnumProp{ObjectPropsWithOptionalGenStringEnumProp::Option1}; + ObjectPropsWithOptionalGenIntEnumProp intEnumProp{ObjectPropsWithOptionalGenIntEnumProp::IntEnumProp0}; + ObjectPropsWithOptionalGenObjectPropObjectArrayPropStruct objectArrayProp{}; + ObjectPropsWithOptionalGenObjectPropObjectPrimitiveRequiredPropStruct objectPrimitiveRequiredProp{}; + ObjectPropsWithOptionalGenObjectPropNestedPropAStruct nestedPropA{}; + ObjectPropsWithOptionalGenObjectPropNestedArrayAsPropertyStruct nestedArrayAsProperty{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalGenObjectPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -2797,7 +4108,7 @@ struct ObjectPropsObjectPropStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalGenObjectPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_stringProp = map.find(\\"stringProp\\"); @@ -2858,23 +4169,23 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropStruct &value) { - return \\"[Object ObjectPropsObjectPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalGenObjectPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalGenObjectPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalGenObjectPropStruct &value) { return value.toDynamic(); } #endif -class ObjectPropsProps final : public ViewProps { +class ObjectPropsWithOptionalGenProps final : public ViewProps { public: - ObjectPropsProps() = default; - ObjectPropsProps(const PropsParserContext& context, const ObjectPropsProps &sourceProps, const RawProps &rawProps); + ObjectPropsWithOptionalGenProps() = default; + ObjectPropsWithOptionalGenProps(const PropsParserContext& context, const ObjectPropsWithOptionalGenProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - ObjectPropsObjectPropStruct objectProp{}; + std::optional objectProp{}; #ifdef RN_SERIALIZABLE_STATE ComponentName getDiffPropsImplementationTarget() const override; @@ -2890,7 +4201,7 @@ class ObjectPropsProps final : public ViewProps { } `; -exports[`GeneratePropsH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +exports[`GeneratePropsH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` Map { "Props.h" => " /** @@ -2915,74 +4226,76 @@ Map { namespace facebook::react { -enum class ObjectPropsStringEnumProp { Option1 }; +enum class ObjectPropsWithOptionalObjectGenStringEnumProp { Option1 }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsStringEnumProp &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenStringEnumProp &result) { auto string = (std::string)value; - if (string == \\"option1\\") { result = ObjectPropsStringEnumProp::Option1; return; } + if (string == \\"option1\\") { result = ObjectPropsWithOptionalObjectGenStringEnumProp::Option1; return; } abort(); } -static inline std::string toString(const ObjectPropsStringEnumProp &value) { +static inline std::string toString(const ObjectPropsWithOptionalObjectGenStringEnumProp &value) { switch (value) { - case ObjectPropsStringEnumProp::Option1: return \\"option1\\"; + case ObjectPropsWithOptionalObjectGenStringEnumProp::Option1: return \\"option1\\"; default: abort(); } } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsStringEnumProp &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenStringEnumProp &value) { return toString(value); } #endif -enum class ObjectPropsIntEnumProp { IntEnumProp0 = 0 }; +enum class ObjectPropsWithOptionalObjectGenIntEnumProp { IntEnumProp0 = 0 }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsIntEnumProp &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenIntEnumProp &result) { assert(value.hasType()); auto integerValue = (int)value; switch (integerValue) { case 0: - result = ObjectPropsIntEnumProp::IntEnumProp0; + result = ObjectPropsWithOptionalObjectGenIntEnumProp::IntEnumProp0; return; default: abort(); } } -static inline std::string toString(const ObjectPropsIntEnumProp &value) { +static inline std::string toString(const ObjectPropsWithOptionalObjectGenIntEnumProp &value) { switch (value) { - case ObjectPropsIntEnumProp::IntEnumProp0: return \\"0\\"; + case ObjectPropsWithOptionalObjectGenIntEnumProp::IntEnumProp0: return \\"0\\"; default: abort(); } } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsIntEnumProp &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenIntEnumProp &value) { switch (value) { - case ObjectPropsIntEnumProp::IntEnumProp0: return 0; + case ObjectPropsWithOptionalObjectGenIntEnumProp::IntEnumProp0: return 0; default: abort(); } } #endif -struct ObjectPropsObjectPropObjectArrayPropStruct { - std::vector array{}; +struct ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct { + std::optional> array{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropObjectArrayPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); - result[\\"array\\"] = ::facebook::react::toDynamic(array); + if (array.has_value()) { + result[\\"array\\"] = ::facebook::react::toDynamic(array.value()); + } return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropObjectArrayPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_array = map.find(\\"array\\"); @@ -2991,36 +4304,42 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropObjectArrayPropStruct &value) { - return \\"[Object ObjectPropsObjectPropObjectArrayPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropObjectArrayPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct { - ImageSource image{}; - SharedColor color{}; - Point point{}; +struct ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct { + std::optional image{}; + std::optional color{}; + std::optional point{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct&) 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); + if (image.has_value()) { + result[\\"image\\"] = ::facebook::react::toDynamic(image.value()); + } + if (color.has_value()) { + result[\\"color\\"] = ::facebook::react::toDynamic(color.value()); + } + if (point.has_value()) { + result[\\"point\\"] = ::facebook::react::toDynamic(point.value()); + } return result; } #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_image = map.find(\\"image\\"); @@ -3037,22 +4356,22 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &value) { - return \\"[Object ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropObjectPrimitiveRequiredPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropNestedPropANestedPropBStruct { +struct ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct { std::string nestedPropC{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedPropANestedPropBStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -3062,7 +4381,7 @@ struct ObjectPropsObjectPropNestedPropANestedPropBStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedPropANestedPropBStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct &result) { auto map = (std::unordered_map)value; auto tmp_nestedPropC = map.find(\\"nestedPropC\\"); @@ -3071,22 +4390,22 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedPropANestedPropBStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedPropANestedPropBStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedPropANestedPropBStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropNestedPropAStruct { - ObjectPropsObjectPropNestedPropANestedPropBStruct nestedPropB{}; +struct ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct { + ObjectPropsWithOptionalObjectGenObjectPropNestedPropANestedPropBStruct nestedPropB{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedPropAStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -3096,7 +4415,7 @@ struct ObjectPropsObjectPropNestedPropAStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedPropAStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct &result) { auto map = (std::unordered_map)value; auto tmp_nestedPropB = map.find(\\"nestedPropB\\"); @@ -3105,22 +4424,22 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedPropAStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedPropAStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedPropAStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct { +struct ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct { std::string stringProp{std::string{\\"\\"}}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -3130,7 +4449,7 @@ struct ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_stringProp = map.find(\\"stringProp\\"); @@ -3139,32 +4458,32 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct &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) { - ObjectPropsObjectPropNestedArrayAsPropertyArrayPropStruct newItem; + ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyArrayPropStruct newItem; fromRawValue(context, item, newItem); result.emplace_back(newItem); } } -struct ObjectPropsObjectPropNestedArrayAsPropertyStruct { - std::vector arrayProp{}; +struct ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct { + std::vector arrayProp{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropNestedArrayAsPropertyStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -3174,7 +4493,7 @@ struct ObjectPropsObjectPropNestedArrayAsPropertyStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropNestedArrayAsPropertyStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct &result) { auto map = (std::unordered_map)value; auto tmp_arrayProp = map.find(\\"arrayProp\\"); @@ -3183,17 +4502,17 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { - return \\"[Object ObjectPropsObjectPropNestedArrayAsPropertyStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropNestedArrayAsPropertyStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct &value) { return value.toDynamic(); } #endif -struct ObjectPropsObjectPropStruct { +struct ObjectPropsWithOptionalObjectGenObjectPropStruct { std::string stringProp{std::string{\\"\\"}}; bool booleanProp{false}; Float floatProp{0.0}; @@ -3202,16 +4521,16 @@ struct ObjectPropsObjectPropStruct { 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{}; + ObjectPropsWithOptionalObjectGenStringEnumProp stringEnumProp{ObjectPropsWithOptionalObjectGenStringEnumProp::Option1}; + ObjectPropsWithOptionalObjectGenIntEnumProp intEnumProp{ObjectPropsWithOptionalObjectGenIntEnumProp::IntEnumProp0}; + ObjectPropsWithOptionalObjectGenObjectPropObjectArrayPropStruct objectArrayProp{}; + ObjectPropsWithOptionalObjectGenObjectPropObjectPrimitiveRequiredPropStruct objectPrimitiveRequiredProp{}; + ObjectPropsWithOptionalObjectGenObjectPropNestedPropAStruct nestedPropA{}; + ObjectPropsWithOptionalObjectGenObjectPropNestedArrayAsPropertyStruct nestedArrayAsProperty{}; #ifdef RN_SERIALIZABLE_STATE - bool operator==(const ObjectPropsObjectPropStruct&) const = default; + bool operator==(const ObjectPropsWithOptionalObjectGenObjectPropStruct&) const = default; folly::dynamic toDynamic() const { folly::dynamic result = folly::dynamic::object(); @@ -3234,7 +4553,7 @@ struct ObjectPropsObjectPropStruct { #endif }; -static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsObjectPropStruct &result) { +static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ObjectPropsWithOptionalObjectGenObjectPropStruct &result) { auto map = (std::unordered_map)value; auto tmp_stringProp = map.find(\\"stringProp\\"); @@ -3295,23 +4614,23 @@ static inline void fromRawValue(const PropsParserContext& context, const RawValu } } -static inline std::string toString(const ObjectPropsObjectPropStruct &value) { - return \\"[Object ObjectPropsObjectPropStruct]\\"; +static inline std::string toString(const ObjectPropsWithOptionalObjectGenObjectPropStruct &value) { + return \\"[Object ObjectPropsWithOptionalObjectGenObjectPropStruct]\\"; } #ifdef RN_SERIALIZABLE_STATE -static inline folly::dynamic toDynamic(const ObjectPropsObjectPropStruct &value) { +static inline folly::dynamic toDynamic(const ObjectPropsWithOptionalObjectGenObjectPropStruct &value) { return value.toDynamic(); } #endif -class ObjectPropsProps final : public ViewProps { +class ObjectPropsWithOptionalObjectGenProps final : public ViewProps { public: - ObjectPropsProps() = default; - ObjectPropsProps(const PropsParserContext& context, const ObjectPropsProps &sourceProps, const RawProps &rawProps); + ObjectPropsWithOptionalObjectGenProps() = default; + ObjectPropsWithOptionalObjectGenProps(const PropsParserContext& context, const ObjectPropsWithOptionalObjectGenProps &sourceProps, const RawProps &rawProps); #pragma mark - Props - std::optional 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 ccb712e66c5a22..d75596b7c43456 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 @@ -176,6 +176,94 @@ public class AllPropWithOptionalGenManagerDelegate "/** +* 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 AllPropWithOptionalObjectGenManagerDelegate & AllPropWithOptionalObjectGenManagerInterface> extends BaseViewManagerDelegate { + public AllPropWithOptionalObjectGenManagerDelegate(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" => "/** @@ -294,7 +382,7 @@ public class ArrayPropsNativeComponentManagerDelegate "/** + "java/com/facebook/react/viewmanagers/ArrayPropsOptionalGenNativeComponentManagerDelegate.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 @@ -313,8 +401,48 @@ import com.facebook.react.uimanager.BaseViewManagerDelegate; import com.facebook.react.uimanager.LayoutShadowNode; @SuppressWarnings(\\"deprecation\\") -public class ArrayPropsNativeComponentManagerDelegate & ArrayPropsNativeComponentManagerInterface> extends BaseViewManagerDelegate { - public ArrayPropsNativeComponentManagerDelegate(U viewManager) { +public class ArrayPropsOptionalGenNativeComponentManagerDelegate & ArrayPropsOptionalGenNativeComponentManagerInterface> extends BaseViewManagerDelegate { + public ArrayPropsOptionalGenNativeComponentManagerDelegate(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_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsOptionalObjectGenNativeComponentManagerDelegate.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 ArrayPropsOptionalObjectGenNativeComponentManagerDelegate & ArrayPropsOptionalObjectGenNativeComponentManagerInterface> extends BaseViewManagerDelegate { + public ArrayPropsOptionalObjectGenNativeComponentManagerDelegate(U viewManager) { super(viewManager); } @Override @@ -334,7 +462,7 @@ public class ArrayPropsNativeComponentManagerDelegate "/** + "java/com/facebook/react/viewmanagers/ArrayPropsWithOptionalGenNativeComponentManagerDelegate.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 @@ -353,8 +481,84 @@ import com.facebook.react.uimanager.BaseViewManagerDelegate; import com.facebook.react.uimanager.LayoutShadowNode; @SuppressWarnings(\\"deprecation\\") -public class ArrayPropsNativeComponentManagerDelegate & ArrayPropsNativeComponentManagerInterface> extends BaseViewManagerDelegate { - public ArrayPropsNativeComponentManagerDelegate(U viewManager) { +public class ArrayPropsWithOptionalGenNativeComponentManagerDelegate & ArrayPropsWithOptionalGenNativeComponentManagerInterface> extends BaseViewManagerDelegate { + public ArrayPropsWithOptionalGenNativeComponentManagerDelegate(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 ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsWithOptionalObjectGenNativeComponentManagerDelegate.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 ArrayPropsWithOptionalObjectGenNativeComponentManagerDelegate & ArrayPropsWithOptionalObjectGenNativeComponentManagerInterface> extends BaseViewManagerDelegate { + public ArrayPropsWithOptionalObjectGenNativeComponentManagerDelegate(U viewManager) { super(viewManager); } @Override @@ -1286,7 +1490,7 @@ public class ObjectPropsManagerDelegate "/** + "java/com/facebook/react/viewmanagers/ObjectPropsWithOptionalGenManagerDelegate.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 @@ -1305,8 +1509,48 @@ import com.facebook.react.uimanager.BaseViewManagerDelegate; import com.facebook.react.uimanager.LayoutShadowNode; @SuppressWarnings(\\"deprecation\\") -public class ObjectPropsManagerDelegate & ObjectPropsManagerInterface> extends BaseViewManagerDelegate { - public ObjectPropsManagerDelegate(U viewManager) { +public class ObjectPropsWithOptionalGenManagerDelegate & ObjectPropsWithOptionalGenManagerInterface> extends BaseViewManagerDelegate { + public ObjectPropsWithOptionalGenManagerDelegate(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 OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ObjectPropsWithOptionalObjectGenManagerDelegate.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 ObjectPropsWithOptionalObjectGenManagerDelegate & ObjectPropsWithOptionalObjectGenManagerInterface> extends BaseViewManagerDelegate { + public ObjectPropsWithOptionalObjectGenManagerDelegate(U viewManager) { super(viewManager); } @Override 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 7c73b5e9347712..cb0463c7f1f1e6 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 @@ -82,6 +82,47 @@ public interface AllPropWithOptionalGenManagerInterface extends } `; +exports[`GeneratePropsJavaInterface can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/AllPropWithOptionalObjectGenManagerInterface.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 AllPropWithOptionalObjectGenManagerInterface 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" => "/** @@ -146,7 +187,7 @@ 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" => "/** + "java/com/facebook/react/viewmanagers/ArrayPropsOptionalGenNativeComponentManagerInterface.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 @@ -162,7 +203,32 @@ import androidx.annotation.Nullable; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; -public interface ArrayPropsNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { +public interface ArrayPropsOptionalGenNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { + void setNativePrimitives(T view, @Nullable ReadableArray value); +} +", +} +`; + +exports[`GeneratePropsJavaInterface can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsOptionalObjectGenNativeComponentManagerInterface.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 ArrayPropsOptionalObjectGenNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { void setNativePrimitives(T view, @Nullable ReadableArray value); } ", @@ -171,7 +237,7 @@ public interface ArrayPropsNativeComponentManagerInterface exten exports[`GeneratePropsJavaInterface can generate fixture ARRAY_PROPS_WITH_OPTIONAL_GEN 1`] = ` Map { - "java/com/facebook/react/viewmanagers/ArrayPropsNativeComponentManagerInterface.java" => "/** + "java/com/facebook/react/viewmanagers/ArrayPropsWithOptionalGenNativeComponentManagerInterface.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 @@ -187,7 +253,44 @@ import androidx.annotation.Nullable; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; -public interface ArrayPropsNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { +public interface ArrayPropsWithOptionalGenNativeComponentManagerInterface 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 ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ArrayPropsWithOptionalObjectGenNativeComponentManagerInterface.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 ArrayPropsWithOptionalObjectGenNativeComponentManagerInterface extends ViewManagerWithGeneratedInterface { void setNames(T view, @Nullable ReadableArray value); void setDisableds(T view, @Nullable ReadableArray value); void setProgress(T view, @Nullable ReadableArray value); @@ -727,7 +830,7 @@ public interface ObjectPropsManagerInterface extends ViewManager exports[`GeneratePropsJavaInterface can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` Map { - "java/com/facebook/react/viewmanagers/ObjectPropsManagerInterface.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsWithOptionalGenManagerInterface.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 @@ -743,7 +846,32 @@ import androidx.annotation.Nullable; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface; -public interface ObjectPropsManagerInterface extends ViewManagerWithGeneratedInterface { +public interface ObjectPropsWithOptionalGenManagerInterface extends ViewManagerWithGeneratedInterface { + void setObjectProp(T view, @Nullable ReadableMap value); +} +", +} +`; + +exports[`GeneratePropsJavaInterface can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/ObjectPropsWithOptionalObjectGenManagerInterface.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 ObjectPropsWithOptionalObjectGenManagerInterface extends ViewManagerWithGeneratedInterface { void setObjectProp(T view, @Nullable ReadableMap value); } ", 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 faba4b075d6fa4..e7318bb6dd7c1a 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 @@ -42,10 +42,40 @@ import com.facebook.react.bridge.ReadableMap; @DoNotStrip public class AllPropPropsObjectPrimitiveRequiredProp { + private @Nullable String mString; + private boolean mBoolean; + private float mFloat; + private @Nullable String mStringNoDefault; + private @Nullable Boolean mBooleanNoDefault; + private @Nullable Float mFloatNoDefault; private @Nullable ReadableMap mImage; private @Nullable Integer mColor; private @Nullable ReadableMap mPoint; @DoNotStrip + public @Nullable String getString() { + return mString; + } + @DoNotStrip + public boolean getBoolean() { + return mBoolean; + } + @DoNotStrip + public float getFloat() { + return mFloat; + } + @DoNotStrip + public @Nullable String getStringNoDefault() { + return mStringNoDefault; + } + @DoNotStrip + public @Nullable Boolean getBooleanNoDefault() { + return mBooleanNoDefault; + } + @DoNotStrip + public @Nullable Float getFloatNoDefault() { + return mFloatNoDefault; + } + @DoNotStrip public @Nullable ReadableMap getImage() { return mImage; } @@ -298,10 +328,40 @@ import com.facebook.react.bridge.ReadableMap; @DoNotStrip public class AllPropWithOptionalGenPropsObjectPrimitiveRequiredProp { + private @Nullable String mString; + private boolean mBoolean; + private float mFloat; + private @Nullable String mStringNoDefault; + private @Nullable Boolean mBooleanNoDefault; + private @Nullable Float mFloatNoDefault; private @Nullable ReadableMap mImage; private @Nullable Integer mColor; private @Nullable ReadableMap mPoint; @DoNotStrip + public @Nullable String getString() { + return mString; + } + @DoNotStrip + public boolean getBoolean() { + return mBoolean; + } + @DoNotStrip + public float getFloat() { + return mFloat; + } + @DoNotStrip + public @Nullable String getStringNoDefault() { + return mStringNoDefault; + } + @DoNotStrip + public @Nullable Boolean getBooleanNoDefault() { + return mBooleanNoDefault; + } + @DoNotStrip + public @Nullable Float getFloatNoDefault() { + return mFloatNoDefault; + } + @DoNotStrip public @Nullable ReadableMap getImage() { return mImage; } @@ -512,9 +572,9 @@ public class AllPropWithOptionalGenProps { } `; -exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_GEN 1`] = ` Map { - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsObjectElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalObjectGenPropsObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -523,21 +583,85 @@ 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 AllPropWithOptionalObjectGenPropsObjectArrayProp { + private ArrayList mArray; + @DoNotStrip + public ArrayList getArray() { + return mArray; + } +} +", + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalObjectGenPropsObjectPrimitiveRequiredProp.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 AllPropWithOptionalObjectGenPropsObjectPrimitiveRequiredProp { + private @Nullable String mString; + private boolean mBoolean; + private float mFloat; + private @Nullable String mStringNoDefault; + private @Nullable Boolean mBooleanNoDefault; + private @Nullable Float mFloatNoDefault; + private @Nullable ReadableMap mImage; + private @Nullable Integer mColor; + private @Nullable ReadableMap mPoint; @DoNotStrip - public @Nullable String getStringProp() { - return mStringProp; + public @Nullable String getString() { + return mString; + } + @DoNotStrip + public boolean getBoolean() { + return mBoolean; + } + @DoNotStrip + public float getFloat() { + return mFloat; + } + @DoNotStrip + public @Nullable String getStringNoDefault() { + return mStringNoDefault; + } + @DoNotStrip + public @Nullable Boolean getBooleanNoDefault() { + return mBooleanNoDefault; + } + @DoNotStrip + public @Nullable Float getFloatNoDefault() { + return mFloatNoDefault; + } + @DoNotStrip + 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/AllPropWithOptionalObjectGenPropsNestedPropANestedPropB.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -546,21 +670,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 AllPropWithOptionalObjectGenPropsNestedPropANestedPropB { + 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/AllPropWithOptionalObjectGenPropsNestedPropA.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -569,21 +693,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 AllPropWithOptionalObjectGenPropsNestedPropA { + private AllPropWithOptionalObjectGenPropsNestedPropANestedPropB mNestedPropB; @DoNotStrip - public ArrayList getObject() { - return mObject; + public AllPropWithOptionalObjectGenPropsNestedPropANestedPropB getNestedPropB() { + return mNestedPropB; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalObjectGenPropsNestedArrayAsPropertyArrayPropElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -592,13 +715,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 AllPropWithOptionalObjectGenPropsNestedArrayAsPropertyArrayPropElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -606,7 +729,7 @@ public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalObjectGenPropsNestedArrayAsProperty.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -615,89 +738,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 AllPropWithOptionalObjectGenPropsNestedArrayAsProperty { + private ArrayList mArrayProp; @DoNotStrip - public ArrayList getNames() { - return mNames; + public ArrayList getArrayProp() { + return mArrayProp; + } +} +", + "java/com/facebook/react/viewmanagers/AllPropsNativeComponent/AllPropWithOptionalObjectGenProps.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 AllPropWithOptionalObjectGenProps { + 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 AllPropWithOptionalObjectGenPropsObjectArrayProp mObjectArrayProp; + private AllPropWithOptionalObjectGenPropsObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; + private AllPropWithOptionalObjectGenPropsNestedPropA mNestedPropA; + private AllPropWithOptionalObjectGenPropsNestedArrayAsProperty mNestedArrayAsProperty; + @DoNotStrip + public @Nullable String getStringPropNoDefault() { + return mStringPropNoDefault; } @DoNotStrip - public ArrayList getDisableds() { - return mDisableds; + public @Nullable Boolean getBooleanPropNoDefault() { + return mBooleanPropNoDefault; } @DoNotStrip - public ArrayList getProgress() { - return mProgress; + public @Nullable Float getFloatPropNoDefault() { + return mFloatPropNoDefault; } @DoNotStrip - public ArrayList getRadii() { - return mRadii; + public @Nullable String getStringProp() { + return mStringProp; } @DoNotStrip - public ArrayList getColors() { - return mColors; + public boolean getBooleanProp() { + return mBooleanProp; } @DoNotStrip - public ArrayList getSrcs() { - return mSrcs; + public float getFloatProp() { + return mFloatProp; } @DoNotStrip - public ArrayList getPoints() { - return mPoints; + public int getIntProp() { + return mIntProp; } @DoNotStrip - public ArrayList getDimensions() { - return mDimensions; + public @Nullable String getStringUserDefaultProp() { + return mStringUserDefaultProp; } @DoNotStrip - public ArrayList getSizes() { - return mSizes; + public boolean getBooleanUserDefaultProp() { + return mBooleanUserDefaultProp; } @DoNotStrip - public ArrayList getObject() { - return mObject; + public float getFloatUserDefaultProp() { + return mFloatUserDefaultProp; } @DoNotStrip - public ArrayList getArray() { - return mArray; + public int getIntUserDefaultProp() { + return mIntUserDefaultProp; } @DoNotStrip - public ArrayList> getArrayOfArrayOfObject() { - return mArrayOfArrayOfObject; + public @Nullable String getStringEnumProp() { + return mStringEnumProp; } @DoNotStrip - public ArrayList getArrayOfMixed() { - return mArrayOfMixed; + public @Nullable Integer getIntEnumProp() { + return mIntEnumProp; + } + @DoNotStrip + public AllPropWithOptionalObjectGenPropsObjectArrayProp getObjectArrayProp() { + return mObjectArrayProp; + } + @DoNotStrip + public AllPropWithOptionalObjectGenPropsObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { + return mObjectPrimitiveRequiredProp; + } + @DoNotStrip + public AllPropWithOptionalObjectGenPropsNestedPropA getNestedPropA() { + return mNestedPropA; + } + @DoNotStrip + public AllPropWithOptionalObjectGenPropsNestedArrayAsProperty getNestedArrayAsProperty() { + return mNestedArrayAsProperty; } } ", } `; -exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS 1`] = ` Map { - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsNativePrimitivesElement.java" => "/** + "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 @@ -708,30 +871,19 @@ Map { package com.facebook.react.viewmanagers.Slider; +import androidx.annotation.Nullable; 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; - } +public class ArrayPropsNativeComponentPropsObjectElement { + private @Nullable String mStringProp; @DoNotStrip - public ArrayList getPoints() { - return mPoints; + public @Nullable String getStringProp() { + return mStringProp; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** + "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 @@ -742,22 +894,154 @@ public class ArrayPropsNativeComponentPropsNativePrimitivesElement { package com.facebook.react.viewmanagers.Slider; +import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; -import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentProps { - private ArrayList mNativePrimitives; +public class ArrayPropsNativeComponentPropsArrayElementObjectElement { + private @Nullable String mStringProp; @DoNotStrip - public ArrayList getNativePrimitives() { - return mNativePrimitives; + 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_WITH_OPTIONAL_GEN 1`] = ` +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. @@ -819,9 +1103,133 @@ public class ArrayPropsNativeComponentProps { } `; +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsOptionalGenNativeComponentPropsNativePrimitivesElement.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 ArrayPropsOptionalGenNativeComponentPropsNativePrimitivesElement { + 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/ArrayPropsOptionalGenNativeComponentProps.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 ArrayPropsOptionalGenNativeComponentProps { + private ArrayList mNativePrimitives; + @DoNotStrip + public ArrayList getNativePrimitives() { + return mNativePrimitives; + } +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsOptionalObjectGenNativeComponentPropsNativePrimitivesElement.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 ArrayPropsOptionalObjectGenNativeComponentPropsNativePrimitivesElement { + 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/ArrayPropsOptionalObjectGenNativeComponentProps.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 ArrayPropsOptionalObjectGenNativeComponentProps { + 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" => "/** + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalGenNativeComponentPropsObjectElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -836,7 +1244,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ArrayPropsNativeComponentPropsObjectElement { +public class ArrayPropsWithOptionalGenNativeComponentPropsObjectElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -844,7 +1252,7 @@ public class ArrayPropsNativeComponentPropsObjectElement { } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElementObjectElement.java" => "/** + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalGenNativeComponentPropsArrayElementObjectElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -859,7 +1267,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ArrayPropsNativeComponentPropsArrayElementObjectElement { +public class ArrayPropsWithOptionalGenNativeComponentPropsArrayElementObjectElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -867,7 +1275,7 @@ public class ArrayPropsNativeComponentPropsArrayElementObjectElement { } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayElement.java" => "/** + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalGenNativeComponentPropsArrayElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -882,15 +1290,198 @@ import com.facebook.proguard.annotations.DoNotStrip; import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentPropsArrayElement { - private ArrayList mObject; +public class ArrayPropsWithOptionalGenNativeComponentPropsArrayElement { + private ArrayList mObject; @DoNotStrip - public ArrayList getObject() { + public ArrayList getObject() { + return mObject; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalGenNativeComponentPropsArrayOfArrayOfObjectElementElement.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 ArrayPropsWithOptionalGenNativeComponentPropsArrayOfArrayOfObjectElementElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalGenNativeComponentProps.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 ArrayPropsWithOptionalGenNativeComponentProps { + 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_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalObjectGenNativeComponentPropsObjectElement.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 ArrayPropsWithOptionalObjectGenNativeComponentPropsObjectElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalObjectGenNativeComponentPropsArrayElementObjectElement.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 ArrayPropsWithOptionalObjectGenNativeComponentPropsArrayElementObjectElement { + private @Nullable String mStringProp; + @DoNotStrip + public @Nullable String getStringProp() { + return mStringProp; + } +} +", + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalObjectGenNativeComponentPropsArrayElement.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 ArrayPropsWithOptionalObjectGenNativeComponentPropsArrayElement { + private ArrayList mObject; + @DoNotStrip + public ArrayList getObject() { return mObject; } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement.java" => "/** + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalObjectGenNativeComponentPropsArrayOfArrayOfObjectElementElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -905,7 +1496,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { +public class ArrayPropsWithOptionalObjectGenNativeComponentPropsArrayOfArrayOfObjectElementElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -913,7 +1504,7 @@ public class ArrayPropsNativeComponentPropsArrayOfArrayOfObjectElementElement { } } ", - "java/com/facebook/react/viewmanagers/Slider/ArrayPropsNativeComponentProps.java" => "/** + "java/com/facebook/react/viewmanagers/Slider/ArrayPropsWithOptionalObjectGenNativeComponentProps.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -931,7 +1522,7 @@ import com.facebook.yoga.YogaValue; import java.util.ArrayList; @DoNotStrip -public class ArrayPropsNativeComponentProps { +public class ArrayPropsWithOptionalObjectGenNativeComponentProps { private ArrayList mNames; private ArrayList mDisableds; private ArrayList mProgress; @@ -941,9 +1532,9 @@ public class ArrayPropsNativeComponentProps { private ArrayList mPoints; private ArrayList mDimensions; private ArrayList mSizes; - private ArrayList mObject; - private ArrayList mArray; - private ArrayList> mArrayOfArrayOfObject; + private ArrayList mObject; + private ArrayList mArray; + private ArrayList> mArrayOfArrayOfObject; private ArrayList mArrayOfMixed; @DoNotStrip public ArrayList getNames() { @@ -982,15 +1573,15 @@ public class ArrayPropsNativeComponentProps { return mSizes; } @DoNotStrip - public ArrayList getObject() { + public ArrayList getObject() { return mObject; } @DoNotStrip - public ArrayList getArray() { + public ArrayList getArray() { return mArray; } @DoNotStrip - public ArrayList> getArrayOfArrayOfObject() { + public ArrayList> getArrayOfArrayOfObject() { return mArrayOfArrayOfObject; } @DoNotStrip @@ -1420,17 +2011,263 @@ import com.facebook.react.bridge.ReadableMap; public class InsetsPropNativeComponentProps { private @Nullable ReadableMap mContentInset; @DoNotStrip - public @Nullable ReadableMap getContentInset() { - return mContentInset; + 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 NO_PROPS_NO_EVENTS 1`] = ` +Map { + "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 +* LICENSE file in the root directory of this source tree. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +package com.facebook.react.viewmanagers.NoPropsNoEvents; + +import com.facebook.proguard.annotations.DoNotStrip; + +@DoNotStrip +public class NoPropsNoEventsComponentProps { + + +} +", +} +`; + +exports[`GeneratePropsJavaPojo can generate fixture OBJECT_PROPS 1`] = ` +Map { + "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 +* 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; +import java.util.ArrayList; + +@DoNotStrip +public class ObjectPropsPropsObjectPropObjectArrayProp { + private ArrayList mArray; + @DoNotStrip + public ArrayList getArray() { + return mArray; + } +} +", + "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 +* LICENSE file in the root directory of this source tree. +* +* @generated by codegen project: GeneratePropsJavaPojo.js +*/ + +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 ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp { + private @Nullable ReadableMap mImage; + private @Nullable Integer mColor; + private @Nullable ReadableMap mPoint; + @DoNotStrip + 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 INT32_ENUM_PROP 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/Int32EnumPropsNativeComponentProps.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 @@ -1439,26 +2276,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 Int32EnumPropsNativeComponentProps { - private @Nullable Integer mMaxInterval; +public class ObjectPropsPropsObjectPropNestedPropANestedPropB { + private @Nullable String mNestedPropC; @DoNotStrip - public @Nullable Integer getMaxInterval() { - return mMaxInterval; + public @Nullable String getNestedPropC() { + return mNestedPropC; } } ", -} -`; - -exports[`GeneratePropsJavaPojo can generate fixture INTEGER_PROPS 1`] = ` -Map { - "java/com/facebook/react/viewmanagers/Switch/IntegerPropNativeComponentProps.java" => "/** + "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 @@ -1467,35 +2299,20 @@ Map { * @generated by codegen project: GeneratePropsJavaPojo.js */ -package com.facebook.react.viewmanagers.Switch; +package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; 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; - } +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 @@ -1504,26 +2321,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 @@ -1532,26 +2344,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 @@ -1560,42 +2367,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 @@ -1604,22 +2455,25 @@ 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" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectPropObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1634,7 +2488,7 @@ import com.facebook.proguard.annotations.DoNotStrip; import java.util.ArrayList; @DoNotStrip -public class ObjectPropsPropsObjectPropObjectArrayProp { +public class ObjectPropsWithOptionalGenPropsObjectPropObjectArrayProp { private ArrayList mArray; @DoNotStrip public ArrayList getArray() { @@ -1642,7 +2496,7 @@ public class ObjectPropsPropsObjectPropObjectArrayProp { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectPropObjectPrimitiveRequiredProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1658,7 +2512,7 @@ import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReadableMap; @DoNotStrip -public class ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp { +public class ObjectPropsWithOptionalGenPropsObjectPropObjectPrimitiveRequiredProp { private @Nullable ReadableMap mImage; private @Nullable Integer mColor; private @Nullable ReadableMap mPoint; @@ -1676,7 +2530,7 @@ public class ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedPropANestedPropB.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectPropNestedPropANestedPropB.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1691,7 +2545,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedPropANestedPropB { +public class ObjectPropsWithOptionalGenPropsObjectPropNestedPropANestedPropB { private @Nullable String mNestedPropC; @DoNotStrip public @Nullable String getNestedPropC() { @@ -1699,7 +2553,7 @@ public class ObjectPropsPropsObjectPropNestedPropANestedPropB { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedPropA.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectPropNestedPropA.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1713,15 +2567,15 @@ package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedPropA { - private ObjectPropsPropsObjectPropNestedPropANestedPropB mNestedPropB; +public class ObjectPropsWithOptionalGenPropsObjectPropNestedPropA { + private ObjectPropsWithOptionalGenPropsObjectPropNestedPropANestedPropB mNestedPropB; @DoNotStrip - public ObjectPropsPropsObjectPropNestedPropANestedPropB getNestedPropB() { + public ObjectPropsWithOptionalGenPropsObjectPropNestedPropANestedPropB getNestedPropB() { return mNestedPropB; } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectPropNestedArrayAsPropertyArrayPropElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1736,7 +2590,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement { +public class ObjectPropsWithOptionalGenPropsObjectPropNestedArrayAsPropertyArrayPropElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -1744,7 +2598,7 @@ public class ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedArrayAsProperty.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectPropNestedArrayAsProperty.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1759,15 +2613,15 @@ import com.facebook.proguard.annotations.DoNotStrip; import java.util.ArrayList; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedArrayAsProperty { - private ArrayList mArrayProp; +public class ObjectPropsWithOptionalGenPropsObjectPropNestedArrayAsProperty { + private ArrayList mArrayProp; @DoNotStrip - public ArrayList getArrayProp() { + public ArrayList getArrayProp() { return mArrayProp; } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectProp.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenPropsObjectProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1782,7 +2636,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectProp { +public class ObjectPropsWithOptionalGenPropsObjectProp { private @Nullable String mStringProp; private boolean mBooleanProp; private float mFloatProp; @@ -1793,10 +2647,10 @@ public class ObjectPropsPropsObjectProp { private int mIntUserDefaultProp; private @Nullable String mStringEnumProp; private @Nullable Integer mIntEnumProp; - private ObjectPropsPropsObjectPropObjectArrayProp mObjectArrayProp; - private ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; - private ObjectPropsPropsObjectPropNestedPropA mNestedPropA; - private ObjectPropsPropsObjectPropNestedArrayAsProperty mNestedArrayAsProperty; + private ObjectPropsWithOptionalGenPropsObjectPropObjectArrayProp mObjectArrayProp; + private ObjectPropsWithOptionalGenPropsObjectPropObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; + private ObjectPropsWithOptionalGenPropsObjectPropNestedPropA mNestedPropA; + private ObjectPropsWithOptionalGenPropsObjectPropNestedArrayAsProperty mNestedArrayAsProperty; @DoNotStrip public @Nullable String getStringProp() { return mStringProp; @@ -1838,24 +2692,24 @@ public class ObjectPropsPropsObjectProp { return mIntEnumProp; } @DoNotStrip - public ObjectPropsPropsObjectPropObjectArrayProp getObjectArrayProp() { + public ObjectPropsWithOptionalGenPropsObjectPropObjectArrayProp getObjectArrayProp() { return mObjectArrayProp; } @DoNotStrip - public ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { + public ObjectPropsWithOptionalGenPropsObjectPropObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { return mObjectPrimitiveRequiredProp; } @DoNotStrip - public ObjectPropsPropsObjectPropNestedPropA getNestedPropA() { + public ObjectPropsWithOptionalGenPropsObjectPropNestedPropA getNestedPropA() { return mNestedPropA; } @DoNotStrip - public ObjectPropsPropsObjectPropNestedArrayAsProperty getNestedArrayAsProperty() { + public ObjectPropsWithOptionalGenPropsObjectPropNestedArrayAsProperty getNestedArrayAsProperty() { return mNestedArrayAsProperty; } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalGenProps.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1869,10 +2723,10 @@ package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsProps { - private ObjectPropsPropsObjectProp mObjectProp; +public class ObjectPropsWithOptionalGenProps { + private ObjectPropsWithOptionalGenPropsObjectProp mObjectProp; @DoNotStrip - public ObjectPropsPropsObjectProp getObjectProp() { + public ObjectPropsWithOptionalGenPropsObjectProp getObjectProp() { return mObjectProp; } } @@ -1880,9 +2734,9 @@ public class ObjectPropsProps { } `; -exports[`GeneratePropsJavaPojo can generate fixture OBJECT_PROPS_WITH_OPTIONAL_GEN 1`] = ` +exports[`GeneratePropsJavaPojo can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` Map { - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropObjectArrayProp.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectPropObjectArrayProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1897,7 +2751,7 @@ import com.facebook.proguard.annotations.DoNotStrip; import java.util.ArrayList; @DoNotStrip -public class ObjectPropsPropsObjectPropObjectArrayProp { +public class ObjectPropsWithOptionalObjectGenPropsObjectPropObjectArrayProp { private ArrayList mArray; @DoNotStrip public ArrayList getArray() { @@ -1905,7 +2759,7 @@ public class ObjectPropsPropsObjectPropObjectArrayProp { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectPropObjectPrimitiveRequiredProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1921,7 +2775,7 @@ import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReadableMap; @DoNotStrip -public class ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp { +public class ObjectPropsWithOptionalObjectGenPropsObjectPropObjectPrimitiveRequiredProp { private @Nullable ReadableMap mImage; private @Nullable Integer mColor; private @Nullable ReadableMap mPoint; @@ -1939,7 +2793,7 @@ public class ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedPropANestedPropB.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropANestedPropB.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1954,7 +2808,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedPropANestedPropB { +public class ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropANestedPropB { private @Nullable String mNestedPropC; @DoNotStrip public @Nullable String getNestedPropC() { @@ -1962,7 +2816,7 @@ public class ObjectPropsPropsObjectPropNestedPropANestedPropB { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedPropA.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropA.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1976,15 +2830,15 @@ package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedPropA { - private ObjectPropsPropsObjectPropNestedPropANestedPropB mNestedPropB; +public class ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropA { + private ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropANestedPropB mNestedPropB; @DoNotStrip - public ObjectPropsPropsObjectPropNestedPropANestedPropB getNestedPropB() { + public ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropANestedPropB getNestedPropB() { return mNestedPropB; } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectPropNestedArrayAsPropertyArrayPropElement.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -1999,7 +2853,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement { +public class ObjectPropsWithOptionalObjectGenPropsObjectPropNestedArrayAsPropertyArrayPropElement { private @Nullable String mStringProp; @DoNotStrip public @Nullable String getStringProp() { @@ -2007,7 +2861,7 @@ public class ObjectPropsPropsObjectPropNestedArrayAsPropertyArrayPropElement { } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectPropNestedArrayAsProperty.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectPropNestedArrayAsProperty.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -2022,15 +2876,15 @@ import com.facebook.proguard.annotations.DoNotStrip; import java.util.ArrayList; @DoNotStrip -public class ObjectPropsPropsObjectPropNestedArrayAsProperty { - private ArrayList mArrayProp; +public class ObjectPropsWithOptionalObjectGenPropsObjectPropNestedArrayAsProperty { + private ArrayList mArrayProp; @DoNotStrip - public ArrayList getArrayProp() { + public ArrayList getArrayProp() { return mArrayProp; } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsPropsObjectProp.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenPropsObjectProp.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -2045,7 +2899,7 @@ import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsPropsObjectProp { +public class ObjectPropsWithOptionalObjectGenPropsObjectProp { private @Nullable String mStringProp; private boolean mBooleanProp; private float mFloatProp; @@ -2056,10 +2910,10 @@ public class ObjectPropsPropsObjectProp { private int mIntUserDefaultProp; private @Nullable String mStringEnumProp; private @Nullable Integer mIntEnumProp; - private ObjectPropsPropsObjectPropObjectArrayProp mObjectArrayProp; - private ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; - private ObjectPropsPropsObjectPropNestedPropA mNestedPropA; - private ObjectPropsPropsObjectPropNestedArrayAsProperty mNestedArrayAsProperty; + private ObjectPropsWithOptionalObjectGenPropsObjectPropObjectArrayProp mObjectArrayProp; + private ObjectPropsWithOptionalObjectGenPropsObjectPropObjectPrimitiveRequiredProp mObjectPrimitiveRequiredProp; + private ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropA mNestedPropA; + private ObjectPropsWithOptionalObjectGenPropsObjectPropNestedArrayAsProperty mNestedArrayAsProperty; @DoNotStrip public @Nullable String getStringProp() { return mStringProp; @@ -2101,24 +2955,24 @@ public class ObjectPropsPropsObjectProp { return mIntEnumProp; } @DoNotStrip - public ObjectPropsPropsObjectPropObjectArrayProp getObjectArrayProp() { + public ObjectPropsWithOptionalObjectGenPropsObjectPropObjectArrayProp getObjectArrayProp() { return mObjectArrayProp; } @DoNotStrip - public ObjectPropsPropsObjectPropObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { + public ObjectPropsWithOptionalObjectGenPropsObjectPropObjectPrimitiveRequiredProp getObjectPrimitiveRequiredProp() { return mObjectPrimitiveRequiredProp; } @DoNotStrip - public ObjectPropsPropsObjectPropNestedPropA getNestedPropA() { + public ObjectPropsWithOptionalObjectGenPropsObjectPropNestedPropA getNestedPropA() { return mNestedPropA; } @DoNotStrip - public ObjectPropsPropsObjectPropNestedArrayAsProperty getNestedArrayAsProperty() { + public ObjectPropsWithOptionalObjectGenPropsObjectPropNestedArrayAsProperty getNestedArrayAsProperty() { return mNestedArrayAsProperty; } } ", - "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsProps.java" => "/** + "java/com/facebook/react/viewmanagers/ObjectPropsNativeComponent/ObjectPropsWithOptionalObjectGenProps.java" => "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the @@ -2132,10 +2986,10 @@ package com.facebook.react.viewmanagers.ObjectPropsNativeComponent; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ObjectPropsProps { - private ObjectPropsPropsObjectProp mObjectProp; +public class ObjectPropsWithOptionalObjectGenProps { + private ObjectPropsWithOptionalObjectGenPropsObjectProp mObjectProp; @DoNotStrip - public ObjectPropsPropsObjectProp getObjectProp() { + public ObjectPropsWithOptionalObjectGenPropsObjectProp getObjectProp() { return mObjectProp; } } 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 9b9718920ca4cc..ed7c273bdf71e4 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 @@ -46,6 +46,29 @@ extern const char AllPropWithOptionalGenComponentName[] = \\"AllPropWithOptional } `; +exports[`GenerateShadowNodeCpp can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 AllPropWithOptionalObjectGenComponentName[] = \\"AllPropWithOptionalObjectGen\\"; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeCpp can generate fixture ARRAY_PROPS 1`] = ` Map { "ShadowNodes.cpp" => " @@ -108,7 +131,30 @@ Map { namespace facebook::react { -extern const char ArrayPropsNativeComponentComponentName[] = \\"ArrayPropsNativeComponent\\"; +extern const char ArrayPropsOptionalGenNativeComponentComponentName[] = \\"ArrayPropsOptionalGenNativeComponent\\"; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 ArrayPropsOptionalObjectGenNativeComponentComponentName[] = \\"ArrayPropsOptionalObjectGenNativeComponent\\"; } // namespace facebook::react ", @@ -131,7 +177,30 @@ Map { namespace facebook::react { -extern const char ArrayPropsNativeComponentComponentName[] = \\"ArrayPropsNativeComponent\\"; +extern const char ArrayPropsWithOptionalGenNativeComponentComponentName[] = \\"ArrayPropsWithOptionalGenNativeComponent\\"; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 ArrayPropsWithOptionalObjectGenNativeComponentComponentName[] = \\"ArrayPropsWithOptionalObjectGenNativeComponent\\"; } // namespace facebook::react ", @@ -661,7 +730,30 @@ Map { namespace facebook::react { -extern const char ObjectPropsComponentName[] = \\"ObjectProps\\"; +extern const char ObjectPropsWithOptionalGenComponentName[] = \\"ObjectPropsWithOptionalGen\\"; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 ObjectPropsWithOptionalObjectGenComponentName[] = \\"ObjectPropsWithOptionalObjectGen\\"; } // namespace facebook::react ", 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 f8639b5b47324c..c441beb9b39b32 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 @@ -76,6 +76,44 @@ using AllPropWithOptionalGenShadowNode = ConcreteViewShadowNode< } `; +exports[`GenerateShadowNodeH can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 AllPropWithOptionalObjectGenComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using AllPropWithOptionalObjectGenShadowNode = ConcreteViewShadowNode< + AllPropWithOptionalObjectGenComponentName, + AllPropWithOptionalObjectGenProps, + AllPropWithOptionalObjectGenEventEmitter, + AllPropWithOptionalObjectGenState>; + +} // namespace facebook::react +", +} +`; + exports[`GenerateShadowNodeH can generate fixture ARRAY_PROPS 1`] = ` Map { "ShadowNodes.h" => " @@ -174,16 +212,54 @@ Map { namespace facebook::react { -JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; +JSI_EXPORT extern const char ArrayPropsOptionalGenNativeComponentComponentName[]; /* - * \`ShadowNode\` for component. + * \`ShadowNode\` for component. */ -using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< - ArrayPropsNativeComponentComponentName, - ArrayPropsNativeComponentProps, - ArrayPropsNativeComponentEventEmitter, - ArrayPropsNativeComponentState>; +using ArrayPropsOptionalGenNativeComponentShadowNode = ConcreteViewShadowNode< + ArrayPropsOptionalGenNativeComponentComponentName, + ArrayPropsOptionalGenNativeComponentProps, + ArrayPropsOptionalGenNativeComponentEventEmitter, + ArrayPropsOptionalGenNativeComponentState>; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 ArrayPropsOptionalObjectGenNativeComponentComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using ArrayPropsOptionalObjectGenNativeComponentShadowNode = ConcreteViewShadowNode< + ArrayPropsOptionalObjectGenNativeComponentComponentName, + ArrayPropsOptionalObjectGenNativeComponentProps, + ArrayPropsOptionalObjectGenNativeComponentEventEmitter, + ArrayPropsOptionalObjectGenNativeComponentState>; } // namespace facebook::react ", @@ -212,16 +288,54 @@ Map { namespace facebook::react { -JSI_EXPORT extern const char ArrayPropsNativeComponentComponentName[]; +JSI_EXPORT extern const char ArrayPropsWithOptionalGenNativeComponentComponentName[]; /* - * \`ShadowNode\` for component. + * \`ShadowNode\` for component. */ -using ArrayPropsNativeComponentShadowNode = ConcreteViewShadowNode< - ArrayPropsNativeComponentComponentName, - ArrayPropsNativeComponentProps, - ArrayPropsNativeComponentEventEmitter, - ArrayPropsNativeComponentState>; +using ArrayPropsWithOptionalGenNativeComponentShadowNode = ConcreteViewShadowNode< + ArrayPropsWithOptionalGenNativeComponentComponentName, + ArrayPropsWithOptionalGenNativeComponentProps, + ArrayPropsWithOptionalGenNativeComponentEventEmitter, + ArrayPropsWithOptionalGenNativeComponentState>; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 ArrayPropsWithOptionalObjectGenNativeComponentComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using ArrayPropsWithOptionalObjectGenNativeComponentShadowNode = ConcreteViewShadowNode< + ArrayPropsWithOptionalObjectGenNativeComponentComponentName, + ArrayPropsWithOptionalObjectGenNativeComponentProps, + ArrayPropsWithOptionalObjectGenNativeComponentEventEmitter, + ArrayPropsWithOptionalObjectGenNativeComponentState>; } // namespace facebook::react ", @@ -1079,16 +1193,54 @@ Map { namespace facebook::react { -JSI_EXPORT extern const char ObjectPropsComponentName[]; +JSI_EXPORT extern const char ObjectPropsWithOptionalGenComponentName[]; /* - * \`ShadowNode\` for component. + * \`ShadowNode\` for component. */ -using ObjectPropsShadowNode = ConcreteViewShadowNode< - ObjectPropsComponentName, - ObjectPropsProps, - ObjectPropsEventEmitter, - ObjectPropsState>; +using ObjectPropsWithOptionalGenShadowNode = ConcreteViewShadowNode< + ObjectPropsWithOptionalGenComponentName, + ObjectPropsWithOptionalGenProps, + ObjectPropsWithOptionalGenEventEmitter, + ObjectPropsWithOptionalGenState>; + +} // namespace facebook::react +", +} +`; + +exports[`GenerateShadowNodeH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 ObjectPropsWithOptionalObjectGenComponentName[]; + +/* + * \`ShadowNode\` for component. + */ +using ObjectPropsWithOptionalObjectGenShadowNode = ConcreteViewShadowNode< + ObjectPropsWithOptionalObjectGenComponentName, + ObjectPropsWithOptionalObjectGenProps, + ObjectPropsWithOptionalObjectGenEventEmitter, + ObjectPropsWithOptionalObjectGenState>; } // namespace facebook::react ", 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 ae3816ce069aea..2880740bde1dbb 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 @@ -39,6 +39,28 @@ namespace facebook::react { +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 ", } @@ -105,6 +127,28 @@ namespace facebook::react { +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 ", } @@ -127,6 +171,28 @@ namespace facebook::react { +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 ", } @@ -633,6 +699,28 @@ namespace facebook::react { +} // namespace facebook::react +", +} +`; + +exports[`GenerateStateCpp can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 dd8f2b623a45ba..478385b96cae62 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 @@ -50,6 +50,31 @@ using AllPropWithOptionalGenState = StateData; } `; +exports[`GenerateStateH can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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 AllPropWithOptionalObjectGenState = StateData; + +} // namespace facebook::react", +} +`; + exports[`GenerateStateH can generate fixture ARRAY_PROPS 1`] = ` Map { "States.h" => "/** @@ -119,7 +144,32 @@ Map { namespace facebook::react { -using ArrayPropsNativeComponentState = StateData; +using ArrayPropsOptionalGenNativeComponentState = StateData; + +} // namespace facebook::react", +} +`; + +exports[`GenerateStateH can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 ArrayPropsOptionalObjectGenNativeComponentState = StateData; } // namespace facebook::react", } @@ -144,7 +194,32 @@ Map { namespace facebook::react { -using ArrayPropsNativeComponentState = StateData; +using ArrayPropsWithOptionalGenNativeComponentState = StateData; + +} // namespace facebook::react", +} +`; + +exports[`GenerateStateH can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 ArrayPropsWithOptionalObjectGenNativeComponentState = StateData; } // namespace facebook::react", } @@ -721,7 +796,32 @@ Map { namespace facebook::react { -using ObjectPropsState = StateData; +using ObjectPropsWithOptionalGenState = StateData; + +} // namespace facebook::react", +} +`; + +exports[`GenerateStateH can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 ObjectPropsWithOptionalObjectGenState = StateData; } // namespace facebook::react", } 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 85b071c1d3e885..b06982ce8f3139 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 @@ -332,6 +332,172 @@ TEST(AllPropWithOptionalGenProps_stringEnumProp_Option1, etc) { } `; +exports[`GenerateTests can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_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(AllPropWithOptionalObjectGenProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_stringPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringPropNoDefault\\", \\"foo\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_booleanPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanPropNoDefault\\", true)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_floatPropNoDefault, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatPropNoDefault\\", 0.1)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_stringProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringProp\\", \\"foo\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_booleanProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanProp\\", false)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_floatProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatProp\\", 0)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_stringUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringUserDefaultProp\\", \\"user_default\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_booleanUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"booleanUserDefaultProp\\", true)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_floatUserDefaultProp, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"floatUserDefaultProp\\", 3.14)); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +} + +TEST(AllPropWithOptionalObjectGenProps_stringEnumProp_Option1, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + AllPropWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"stringEnumProp\\", \\"option1\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + AllPropWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); +}", +} +`; + exports[`GenerateTests can generate fixture ARRAY_PROPS 1`] = ` Map { "Tests.cpp" => "/** @@ -424,17 +590,52 @@ Map { using namespace facebook::react; -TEST(ArrayPropsNativeComponentProps_DoesNotDie, etc) { +TEST(ArrayPropsOptionalGenNativeComponentProps_DoesNotDie, etc) { RawPropsParser propParser{}; - propParser.prepare(); - ArrayPropsNativeComponentProps sourceProps{}; + propParser.prepare(); + ArrayPropsOptionalGenNativeComponentProps 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); + ArrayPropsOptionalGenNativeComponentProps(parserContext, sourceProps, rawProps); +}", +} +`; + +exports[`GenerateTests can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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(ArrayPropsOptionalObjectGenNativeComponentProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + ArrayPropsOptionalObjectGenNativeComponentProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + ArrayPropsOptionalObjectGenNativeComponentProps(parserContext, sourceProps, rawProps); }", } `; @@ -461,17 +662,54 @@ Map { using namespace facebook::react; -TEST(ArrayPropsNativeComponentProps_DoesNotDie, etc) { +TEST(ArrayPropsWithOptionalGenNativeComponentProps_DoesNotDie, etc) { RawPropsParser propParser{}; - propParser.prepare(); - ArrayPropsNativeComponentProps sourceProps{}; + propParser.prepare(); + ArrayPropsWithOptionalGenNativeComponentProps 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); + ArrayPropsWithOptionalGenNativeComponentProps(parserContext, sourceProps, rawProps); +}", +} +`; + +exports[`GenerateTests can generate fixture ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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(ArrayPropsWithOptionalObjectGenNativeComponentProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + ArrayPropsWithOptionalObjectGenNativeComponentProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + ArrayPropsWithOptionalObjectGenNativeComponentProps(parserContext, sourceProps, rawProps); }", } `; @@ -1519,17 +1757,53 @@ Map { using namespace facebook::react; -TEST(ObjectPropsProps_DoesNotDie, etc) { +TEST(ObjectPropsWithOptionalGenProps_DoesNotDie, etc) { RawPropsParser propParser{}; - propParser.prepare(); - ObjectPropsProps sourceProps{}; + propParser.prepare(); + ObjectPropsWithOptionalGenProps 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); + ObjectPropsWithOptionalGenProps(parserContext, sourceProps, rawProps); +}", +} +`; + +exports[`GenerateTests can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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(ObjectPropsWithOptionalObjectGenProps_DoesNotDie, etc) { + RawPropsParser propParser{}; + propParser.prepare(); + ObjectPropsWithOptionalObjectGenProps sourceProps{}; + RawProps rawProps(folly::dynamic::object(\\"xx_invalid_xx\\", \\"xx_invalid_xx\\")); + + ContextContainer contextContainer{}; + PropsParserContext parserContext{-1, contextContainer}; + + rawProps.parse(propParser); + ObjectPropsWithOptionalObjectGenProps(parserContext, sourceProps, rawProps); }", } `; 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 2bdd58140f03c5..6498bb69fbdc5e 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,11 +56,15 @@ 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 +Class AllPropWithOptionalObjectGenCls(void) __attribute__((used)); // ALL_PROP_WITH_OPTIONAL_OBJECT_GEN +Class ArrayPropsWithOptionalGenNativeComponentCls(void) __attribute__((used)); // ARRAY_PROPS_WITH_OPTIONAL_GEN +Class ArrayPropsWithOptionalObjectGenNativeComponentCls(void) __attribute__((used)); // ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN +Class ArrayPropsOptionalGenNativeComponentCls(void) __attribute__((used)); // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN +Class ArrayPropsOptionalObjectGenNativeComponentCls(void) __attribute__((used)); // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN +Class ObjectPropsWithOptionalGenCls(void) __attribute__((used)); // OBJECT_PROPS_WITH_OPTIONAL_GEN +Class ObjectPropsWithOptionalObjectGenCls(void) __attribute__((used)); // OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 9c322875e52d20..d331384336400b 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 @@ -84,15 +84,23 @@ Class RCTThirdPartyFabricComponentsProvider(const char {\\"MultiFileIncludedNativeComponent\\", MultiFileIncludedNativeComponentCls}, // EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES - {\\"ArrayPropsNativeComponent\\", ArrayPropsNativeComponentCls}, // ARRAY_PROPS_WITH_OPTIONAL_GEN + {\\"AllProp\\", AllPropCls}, // ALL_PROP - {\\"ArrayPropsNativeComponent\\", ArrayPropsNativeComponentCls}, // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN + {\\"AllPropWithOptionalGen\\", AllPropWithOptionalGenCls}, // ALL_PROP_WITH_OPTIONAL_GEN - {\\"ObjectProps\\", ObjectPropsCls}, // OBJECT_PROPS_WITH_OPTIONAL_GEN + {\\"AllPropWithOptionalObjectGen\\", AllPropWithOptionalObjectGenCls}, // ALL_PROP_WITH_OPTIONAL_OBJECT_GEN - {\\"AllProp\\", AllPropCls}, // ALL_PROP + {\\"ArrayPropsWithOptionalGenNativeComponent\\", ArrayPropsWithOptionalGenNativeComponentCls}, // ARRAY_PROPS_WITH_OPTIONAL_GEN - {\\"AllPropWithOptionalGen\\", AllPropWithOptionalGenCls}, // ALL_PROP_WITH_OPTIONAL_GEN + {\\"ArrayPropsWithOptionalObjectGenNativeComponent\\", ArrayPropsWithOptionalObjectGenNativeComponentCls}, // ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN + + {\\"ArrayPropsOptionalGenNativeComponent\\", ArrayPropsOptionalGenNativeComponentCls}, // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_GEN + + {\\"ArrayPropsOptionalObjectGenNativeComponent\\", ArrayPropsOptionalObjectGenNativeComponentCls}, // ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN + + {\\"ObjectPropsWithOptionalGen\\", ObjectPropsWithOptionalGenCls}, // OBJECT_PROPS_WITH_OPTIONAL_GEN + + {\\"ObjectPropsWithOptionalObjectGen\\", ObjectPropsWithOptionalObjectGenCls}, // OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 9b0746a4fa942d..a22f3421309084 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 @@ -92,6 +92,52 @@ export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL } `; +exports[`GenerateViewConfigJs can generate fixture ALL_PROP_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "ALL_PROP_WITH_OPTIONAL_OBJECT_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 = 'AllPropWithOptionalObjectGen'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"AllPropWithOptionalObjectGen\\", + 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" => " @@ -184,9 +230,39 @@ Map { const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); -let nativeComponentName = 'ArrayPropsNativeComponent'; +let nativeComponentName = 'ArrayPropsOptionalGenNativeComponent'; export const __INTERNAL_VIEW_CONFIG = { - uiViewClassName: \\"ArrayPropsNativeComponent\\", + uiViewClassName: \\"ArrayPropsOptionalGenNativeComponent\\", + validAttributes: { + nativePrimitives: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + +exports[`GenerateViewConfigJs can generate fixture ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "ARRAY_PROPS_WITH_NESTED_OBJECT_WITH_OPTIONAL_OBJECT_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 = 'ArrayPropsOptionalObjectGenNativeComponent'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"ArrayPropsOptionalObjectGenNativeComponent\\", validAttributes: { nativePrimitives: true } @@ -214,9 +290,53 @@ Map { const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); -let nativeComponentName = 'ArrayPropsNativeComponent'; +let nativeComponentName = 'ArrayPropsWithOptionalGenNativeComponent'; export const __INTERNAL_VIEW_CONFIG = { - uiViewClassName: \\"ArrayPropsNativeComponent\\", + uiViewClassName: \\"ArrayPropsWithOptionalGenNativeComponent\\", + 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 ARRAY_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "ARRAY_PROPS_WITH_OPTIONAL_OBJECT_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 = 'ArrayPropsWithOptionalObjectGenNativeComponent'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"ArrayPropsWithOptionalObjectGenNativeComponent\\", validAttributes: { names: true, disableds: true, @@ -1048,9 +1168,39 @@ Map { const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry'); -let nativeComponentName = 'ObjectProps'; +let nativeComponentName = 'ObjectPropsWithOptionalGen'; export const __INTERNAL_VIEW_CONFIG = { - uiViewClassName: \\"ObjectProps\\", + uiViewClassName: \\"ObjectPropsWithOptionalGen\\", + validAttributes: { + objectProp: true + } +}; +export default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG); +", +} +`; + +exports[`GenerateViewConfigJs can generate fixture OBJECT_PROPS_WITH_OPTIONAL_OBJECT_GEN 1`] = ` +Map { + "OBJECT_PROPS_WITH_OPTIONAL_OBJECT_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 = 'ObjectPropsWithOptionalObjectGen'; +export const __INTERNAL_VIEW_CONFIG = { + uiViewClassName: \\"ObjectPropsWithOptionalObjectGen\\", validAttributes: { objectProp: true }