Skip to content

Commit 7cee79c

Browse files
authored
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 178d94d commit 7cee79c

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
@@ -153,6 +153,21 @@
153153
"jsSrcsDir": "./src/fabric",
154154
"android": {
155155
"javaPackageName": "com.swmansion.rnscreens"
156+
},
157+
"ios": {
158+
"componentProvider": {
159+
"RNSFullWindowOverlay": "RNSFullWindowOverlay",
160+
"RNSModalScreen": "RNSModalScreen",
161+
"RNSScreenContainer": "RNSScreenContainer",
162+
"RNSScreenContentWrapper": "RNSScreenContentWrapper",
163+
"RNSScreenFooter": "RNSScreenFooter",
164+
"RNSScreen": "RNSScreen",
165+
"RNSScreenNavigationContainer": "RNSScreenNavigationContainer",
166+
"RNSScreenStackHeaderConfig": "RNSScreenStackHeaderConfig",
167+
"RNSScreenStackHeaderSubview": "RNSScreenStackHeaderSubview",
168+
"RNSScreenStack": "RNSScreenStack",
169+
"RNSSearchBar": "RNSSearchBar"
170+
}
156171
}
157172
},
158173
"packageManager": "[email protected]"

0 commit comments

Comments
 (0)