Skip to content

Commit d2f636c

Browse files
committed
ReScript 12 compatibility
1 parent 52f4127 commit d2f636c

13 files changed

+389
-243
lines changed

Diff for: src/BottomTabs.bs.js

+19-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
'use strict';
22

3-
var Interop = require("./Interop");
43
var BottomTabs = require("@react-navigation/bottom-tabs");
54

65
var TabBarBadge = {};
76

87
function Make($star) {
9-
return Interop.adaptNavigatorModule(BottomTabs.createBottomTabNavigator());
8+
var internal = BottomTabs.createBottomTabNavigator();
9+
var make = internal.Navigator;
10+
var $$Navigator = {
11+
make: make
12+
};
13+
var make$1 = internal.Screen;
14+
var $$Screen = {
15+
make: make$1
16+
};
17+
var make$2 = internal.Group;
18+
var Group = {
19+
make: make$2
20+
};
21+
return {
22+
$$Navigator: $$Navigator,
23+
$$Screen: $$Screen,
24+
Group: Group
25+
};
1026
}
1127

1228
var $$Navigation = {};
1329

1430
exports.TabBarBadge = TabBarBadge;
1531
exports.Make = Make;
1632
exports.$$Navigation = $$Navigation;
17-
/* ./Interop Not a pure module */
33+
/* @react-navigation/bottom-tabs Not a pure module */

Diff for: src/BottomTabs.res

+45-35
Original file line numberDiff line numberDiff line change
@@ -96,55 +96,65 @@ and headerParams = {
9696
layout: layout,
9797
}
9898

99+
type navigatorProps = {
100+
id?: string,
101+
initialRouteName?: string,
102+
screenOptions?: screenOptionsParams => options,
103+
backBehavior?: backBehavior,
104+
detachInactiveScreens?: bool,
105+
tabBar?: unit => React.element,
106+
layout?: layoutNavigatorParams => React.element,
107+
children: React.element,
108+
}
109+
110+
type screenProps<'params> = {
111+
name: string,
112+
navigationKey?: string,
113+
options?: screenOptionsParams => options,
114+
initialParams?: 'params,
115+
getId?: getIdOptions => option<string>,
116+
component?: React.component<screenProps>,
117+
getComponent?: unit => React.component<screenProps>,
118+
children?: screenProps => React.element,
119+
}
120+
121+
type groupProps = {
122+
navigationKey?: string,
123+
screenOptions?: screenOptionsParams => options,
124+
}
125+
99126
module type NavigatorModule = {
100127
module Navigator: {
101-
@react.component
102-
let make: (
103-
~id: string=?,
104-
~initialRouteName: string=?,
105-
~screenOptions: screenOptionsParams => options=?,
106-
~backBehavior: backBehavior=?,
107-
~detachInactiveScreens: bool=?,
108-
~tabBar: unit => React.element=?,
109-
~layout: layoutNavigatorParams => React.element=?,
110-
~children: React.element,
111-
) => React.element
128+
let make: React.component<navigatorProps>
112129
}
113130

114131
module Screen: {
115-
@react.component
116-
let make: (
117-
~name: string,
118-
~navigationKey: string=?,
119-
~options: screenOptionsParams => options=?,
120-
~initialParams: 'params=?,
121-
~getId: getIdOptions => option<string>=?,
122-
~component: React.component<screenProps>=?,
123-
~getComponent: unit => React.component<screenProps>=?,
124-
~children: screenProps => React.element=?,
125-
) => React.element
132+
let make: React.component<screenProps<'params>>
126133
}
127134

128135
module Group: {
129-
@react.component
130-
let make: (
131-
~navigationKey: string=?,
132-
~screenOptions: screenOptionsParams => options=?,
133-
) => React.element
136+
let make: React.component<groupProps>
134137
}
135138
}
136139

137-
type navigatorModule
138-
139-
%%private(
140+
module Make = (): NavigatorModule => {
140141
@module("@react-navigation/bottom-tabs")
141-
external createBottomTabNavigator: unit => navigatorModule = "createBottomTabNavigator"
142+
external createBottomTabNavigator: unit => {..} = "createBottomTabNavigator"
142143

143-
@module("./Interop")
144-
external adaptNavigatorModule: navigatorModule => module(NavigatorModule) = "adaptNavigatorModule"
145-
)
144+
let internal = createBottomTabNavigator()
146145

147-
module Make = () => unpack(createBottomTabNavigator()->adaptNavigatorModule)
146+
module Navigator = {
147+
let make = internal["Navigator"]
148+
}
149+
150+
module Screen = {
151+
let make = internal["Screen"]
152+
}
153+
154+
module Group = {
155+
let make = internal["Group"]
156+
}
157+
}
148158

149159
module Navigation = {
150160
@send external jumpTo: (navigation, string, ~params: 'params=?) => unit = "jumpTo"

Diff for: src/Drawer.bs.js

+19-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,26 @@
11
'use strict';
22

3-
var Interop = require("./Interop");
43
var Drawer = require("@react-navigation/drawer");
54

65
function Make($star) {
7-
return Interop.adaptNavigatorModule(Drawer.createDrawerNavigator());
6+
var internal = Drawer.createDrawerNavigator();
7+
var make = internal.Navigator;
8+
var $$Navigator = {
9+
make: make
10+
};
11+
var make$1 = internal.Screen;
12+
var $$Screen = {
13+
make: make$1
14+
};
15+
var make$2 = internal.Group;
16+
var Group = {
17+
make: make$2
18+
};
19+
return {
20+
$$Navigator: $$Navigator,
21+
$$Screen: $$Screen,
22+
Group: Group
23+
};
824
}
925

1026
var $$Navigation = {};
@@ -14,4 +30,4 @@ var DrawerItemList = {};
1430
exports.Make = Make;
1531
exports.$$Navigation = $$Navigation;
1632
exports.DrawerItemList = DrawerItemList;
17-
/* ./Interop Not a pure module */
33+
/* @react-navigation/drawer Not a pure module */

Diff for: src/Drawer.res

+47-37
Original file line numberDiff line numberDiff line change
@@ -92,57 +92,67 @@ type contentComponentProps = {
9292

9393
type drawerStatus = [#"open" | #closed]
9494

95+
type navigatorProps = {
96+
id?: string,
97+
initialRouteName?: string,
98+
screenOptions?: screenOptionsParams => options,
99+
backBehavior?: backBehavior,
100+
defaultStatus?: drawerStatus,
101+
detachInactiveScreens?: bool,
102+
useLegacyImplementation?: bool,
103+
drawerContent?: React.component<contentComponentProps>,
104+
layout?: layoutNavigatorParams => React.element,
105+
children?: React.element,
106+
}
107+
108+
type screenProps<'params> = {
109+
name: string,
110+
navigationKey?: string,
111+
options?: screenOptionsParams => options,
112+
initialParams?: 'params,
113+
getId?: getIdOptions => option<string>,
114+
component?: React.component<screenProps>,
115+
getComponent?: unit => React.component<screenProps>,
116+
children?: screenProps => React.element,
117+
}
118+
119+
type groupProps = {
120+
navigationKey?: string,
121+
screenOptions?: screenOptionsParams => options,
122+
}
123+
95124
module type NavigatorModule = {
96125
module Navigator: {
97-
@react.component
98-
let make: (
99-
~id: string=?,
100-
~initialRouteName: string=?,
101-
~screenOptions: screenOptionsParams => options=?,
102-
~backBehavior: backBehavior=?,
103-
~defaultStatus: drawerStatus=?,
104-
~detachInactiveScreens: bool=?,
105-
~useLegacyImplementation: bool=?,
106-
~drawerContent: React.component<contentComponentProps>=?,
107-
~layout: layoutNavigatorParams => React.element=?,
108-
~children: React.element=?,
109-
) => React.element
126+
let make: React.component<navigatorProps>
110127
}
111128

112129
module Screen: {
113-
@react.component
114-
let make: (
115-
~name: string,
116-
~navigationKey: string=?,
117-
~options: screenOptionsParams => options=?,
118-
~initialParams: 'params=?,
119-
~getId: getIdOptions => option<string>=?,
120-
~component: React.component<screenProps>=?,
121-
~getComponent: unit => React.component<screenProps>=?,
122-
~children: screenProps => React.element=?,
123-
) => React.element
130+
let make: React.component<screenProps<'params>>
124131
}
125132

126133
module Group: {
127-
@react.component
128-
let make: (
129-
~navigationKey: string=?,
130-
~screenOptions: screenOptionsParams => options=?,
131-
) => React.element
134+
let make: React.component<groupProps>
132135
}
133136
}
134137

135-
type navigatorModule
136-
137-
%%private(
138+
module Make = (): NavigatorModule => {
138139
@module("@react-navigation/drawer")
139-
external createDrawerNavigator: unit => navigatorModule = "createDrawerNavigator"
140+
external createDrawerNavigator: unit => {..} = "createDrawerNavigator"
140141

141-
@module("./Interop")
142-
external adaptNavigatorModule: navigatorModule => module(NavigatorModule) = "adaptNavigatorModule"
143-
)
142+
let internal = createDrawerNavigator()
144143

145-
module Make = () => unpack(createDrawerNavigator()->adaptNavigatorModule)
144+
module Navigator = {
145+
let make = internal["Navigator"]
146+
}
147+
148+
module Screen = {
149+
let make = internal["Screen"]
150+
}
151+
152+
module Group = {
153+
let make = internal["Group"]
154+
}
155+
}
146156

147157
module Navigation = {
148158
@send

Diff for: src/Interop.js

-10
This file was deleted.

Diff for: src/MaterialBottomTabs.bs.js

+20-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
'use strict';
22

3-
var Interop = require("./Interop");
4-
var ReactNavigation = require("react-native-paper/react-navigation");
3+
var MaterialBottomTabs = require("@react-navigation/material-bottom-tabs");
54

65
var TabBarBadge = {};
76

87
function Make($star) {
9-
return Interop.adaptNavigatorModule(ReactNavigation.createMaterialBottomTabNavigator());
8+
var internal = MaterialBottomTabs.createMaterialBottomTabNavigator();
9+
var make = internal.Navigator;
10+
var $$Navigator = {
11+
make: make
12+
};
13+
var make$1 = internal.Screen;
14+
var $$Screen = {
15+
make: make$1
16+
};
17+
var make$2 = internal.Group;
18+
var Group = {
19+
make: make$2
20+
};
21+
return {
22+
$$Navigator: $$Navigator,
23+
$$Screen: $$Screen,
24+
Group: Group
25+
};
1026
}
1127

1228
var $$Navigation = {};
1329

1430
exports.TabBarBadge = TabBarBadge;
1531
exports.Make = Make;
1632
exports.$$Navigation = $$Navigation;
17-
/* ./Interop Not a pure module */
33+
/* @react-navigation/material-bottom-tabs Not a pure module */

0 commit comments

Comments
 (0)