Skip to content

Commit ea1c383

Browse files
jakex7kligarski
authored andcommitted
feat: add codegen ios.componentProvider to package.json (#2567)
## Description Add a newly introduced field `ios.componentProvider` to the `codegen` configuration to create an association map between JS components and their native implementations. See more information here: software-mansion/react-native-svg#2572 ## Changes - added `codegenConfig.ios.componentProvider` field to package.json ### Before ```objc Class<RCTComponentViewProtocol> RCTThirdPartyFabricComponentsProvider(const char *name) { static std::unordered_map<std::string, Class (*)(void)> sFabricComponentsClassMap = { // ... {"RNSFullWindowOverlay", RNSFullWindowOverlayCls}, // 3 {"RNSModalScreen", RNSModalScreenCls}, // 3 {"RNSScreenContainer", RNSScreenContainerCls}, // 3 {"RNSScreenContentWrapper", RNSScreenContentWrapperCls}, // 3 {"RNSScreenFooter", RNSScreenFooterCls}, // 3 {"RNSScreen", RNSScreenCls}, // 3 {"RNSScreenNavigationContainer", RNSScreenNavigationContainerCls}, // 3 {"RNSScreenStackHeaderConfig", RNSScreenStackHeaderConfigCls}, // 3 {"RNSScreenStackHeaderSubview", RNSScreenStackHeaderSubviewCls}, // 3 {"RNSScreenStack", RNSScreenStackCls}, // 3 {"RNSSearchBar", RNSSearchBarCls}, // 3 // ... ``` ### After ```objc @implementation RCTThirdPartyComponentsProvider + (NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents { return @{ @"RNSFullWindowOverlay": NSClassFromString(@"RNSFullWindowOverlay"), // react-native-screens @"RNSModalScreen": NSClassFromString(@"RNSModalScreen"), // react-native-screens @"RNSScreenContainer": NSClassFromString(@"RNSScreenContainer"), // react-native-screens @"RNSScreenContentWrapper": NSClassFromString(@"RNSScreenContentWrapper"), // react-native-screens @"RNSScreenFooter": NSClassFromString(@"RNSScreenFooter"), // react-native-screens @"RNSScreen": NSClassFromString(@"RNSScreen"), // react-native-screens @"RNSScreenNavigationContainer": NSClassFromString(@"RNSScreenNavigationContainer"), // react-native-screens @"RNSScreenStackHeaderConfig": NSClassFromString(@"RNSScreenStackHeaderConfig"), // react-native-screens @"RNSScreenStackHeaderSubview": NSClassFromString(@"RNSScreenStackHeaderSubview"), // react-native-screens @"RNSScreenStack": NSClassFromString(@"RNSScreenStack"), // react-native-screens @"RNSSearchBar": NSClassFromString(@"RNSSearchBar"), // react-native-screens }; } ``` ## Test code and steps to reproduce Run `pod install` in React Native 0.77 app and see `RCTThirdPartyFabricComponentsProvider` to check the content
1 parent a269ece commit ea1c383

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

package.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,21 @@
156156
"jsSrcsDir": "./src/fabric",
157157
"android": {
158158
"javaPackageName": "com.swmansion.rnscreens"
159+
},
160+
"ios": {
161+
"componentProvider": {
162+
"RNSFullWindowOverlay": "RNSFullWindowOverlay",
163+
"RNSModalScreen": "RNSModalScreen",
164+
"RNSScreenContainer": "RNSScreenContainer",
165+
"RNSScreenContentWrapper": "RNSScreenContentWrapper",
166+
"RNSScreenFooter": "RNSScreenFooter",
167+
"RNSScreen": "RNSScreen",
168+
"RNSScreenNavigationContainer": "RNSScreenNavigationContainer",
169+
"RNSScreenStackHeaderConfig": "RNSScreenStackHeaderConfig",
170+
"RNSScreenStackHeaderSubview": "RNSScreenStackHeaderSubview",
171+
"RNSScreenStack": "RNSScreenStack",
172+
"RNSSearchBar": "RNSSearchBar"
173+
}
159174
}
160175
},
161176
"packageManager": "[email protected]"

0 commit comments

Comments
 (0)