Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5e2f50b

Browse files
authored
ReScript 12 compatibility (#79)
1 parent 52f4127 commit 5e2f50b

13 files changed

+389
-243
lines changed

‎src/BottomTabs.bs.js‎

Lines changed: 19 additions & 3 deletions
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 make1ドル = internal.Screen;
14+
var $$Screen = {
15+
make: make1ドル
16+
};
17+
var make2ドル = internal.Group;
18+
var Group = {
19+
make: make2ドル
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 */

‎src/BottomTabs.res‎

Lines changed: 45 additions & 35 deletions
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"

‎src/Drawer.bs.js‎

Lines changed: 19 additions & 3 deletions
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 make1ドル = internal.Screen;
12+
var $$Screen = {
13+
make: make1ドル
14+
};
15+
var make2ドル = internal.Group;
16+
var Group = {
17+
make: make2ドル
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 */

‎src/Drawer.res‎

Lines changed: 47 additions & 37 deletions
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

‎src/Interop.js‎

Lines changed: 0 additions & 10 deletions
This file was deleted.

‎src/MaterialBottomTabs.bs.js‎

Lines changed: 20 additions & 4 deletions
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 make1ドル = internal.Screen;
14+
var $$Screen = {
15+
make: make1ドル
16+
};
17+
var make2ドル = internal.Group;
18+
var Group = {
19+
make: make2ドル
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)

AltStyle によって変換されたページ (->オリジナル) /