@@ -4,76 +4,81 @@ import haxe.extern.EitherType;
4
4
import haxe .Constraints ;
5
5
import react .ReactComponent ;
6
6
7
- typedef HashHistory = Router ;
8
- typedef BrowserHistory = Router ;
9
- typedef RoutePropsOfParams <P > = RoutePropsOf <P , Dynamic >;
10
- typedef RoutePropsOfQuery <Q > = RoutePropsOf <Dynamic , Q >;
7
+ #if (haxe_ver <= 3.3)
8
+ typedef Any = Dynamic ;
9
+ #end
10
+
11
+ typedef HashHistory = Router <Any , Any >;
12
+ typedef BrowserHistory = Router <Any , Any >;
13
+ typedef RouteProps = RoutePropsOf <Any , Any >;
14
+ typedef RoutePropsOfParams <P > = RoutePropsOf <P , Any >;
15
+ typedef RoutePropsOfQuery <Q > = RoutePropsOf <Any , Q >;
11
16
12
17
typedef RoutePropsOf <P , Q > = {
13
- params : P ,
14
- location : {
15
- query : Q ,
16
- }
18
+ route : Route < P , Q > ,
19
+ router : Router < P , Q >,
20
+ params : Params < P > ,
21
+ location : Location < Q >,
17
22
}
18
23
19
- private typedef Object = Dynamic ;
24
+ private typedef Object = Any ;
20
25
@:enum
21
26
private abstract Action (String ) {
22
27
var Push = ' PUSH' ;
23
28
var Replace = ' REPLACE' ;
24
29
var Pop = ' POP' ;
25
30
}
26
31
private typedef Component = EitherType <Class <ReactComponent >, String >;
27
- private typedef EnterHook = RouterState -> RedirectFunction -> ? Function -> Any ;
32
+ private typedef EnterHook < P , Q > = RouterState < P , Q > -> RedirectFunction < Q > -> ? Function -> Any ;
28
33
private typedef Hash = String ;
29
- private typedef LeaveHook = RouterState -> Any ;
30
- private typedef Location = {
34
+ private typedef LeaveHook < P , Q > = RouterState < P , Q > -> Any ;
35
+ private typedef Location < Q > = {
31
36
pathname : Pathname ,
32
37
search : QueryString ,
33
- query : Query ,
38
+ query : Query < Q > ,
34
39
state : LocationState ,
35
40
action : Action ,
36
41
key : LocationKey ,
37
42
};
38
- private typedef LocationDescriptorObject = {
43
+ private typedef LocationDescriptorObject < Q > = {
39
44
pathname : Pathname ,
40
45
search : QueryString ,
41
- query : Query ,
46
+ query : Query < Q > ,
42
47
state : LocationState ,
43
48
};
44
- private typedef LocationDescriptor = EitherType <LocationDescriptorObject , Path >;
49
+ private typedef LocationDescriptor < Q > = EitherType <LocationDescriptorObject < Q > , Path >;
45
50
private typedef LocationKey = String ;
46
51
private typedef LocationState = Object ;
47
- private typedef Params = Object ;
52
+ private typedef Params < T > = T ;
48
53
private typedef Path = String ; // Pathname + QueryString + Hash;
49
54
private typedef Pathname = String ;
50
- private typedef Query = Object ;
55
+ private typedef Query < T > = T ;
51
56
private typedef QueryString = String ;
52
- private typedef RedirectFunction = ? LocationState -> EitherType <Pathname , Path >-> ? Query -> Void ;
57
+ private typedef RedirectFunction < Q > = ? LocationState -> EitherType <Pathname , Path >-> ? Query < Q > -> Void ;
53
58
54
- private typedef Route = {
59
+ private typedef Route < P , Q > = {
55
60
component : RouteComponent ,
56
61
? path : RoutePattern ,
57
- ? onEnter : EnterHook ,
58
- ? onLeave : LeaveHook ,
62
+ ? onEnter : EnterHook < P , Q > ,
63
+ ? onLeave : LeaveHook < P , Q > ,
59
64
}
60
65
61
66
private typedef RouteComponent = Component ;
62
- private typedef RouteConfig = Array <Route >;
63
- private typedef RouteHook = ? Location -> Any ;
67
+ private typedef RouteConfig < P , Q > = Array <Route < P , Q > >;
68
+ private typedef RouteHook < Q > = ? Location < Q > -> Any ;
64
69
private typedef RoutePattern = String ;
65
- private typedef Router = {
66
- push : LocationDescriptor -> Void ,
67
- replace : LocationDescriptor -> Void ,
70
+ private typedef Router < P , Q > = {
71
+ push : LocationDescriptor < Q > -> Void ,
72
+ replace : LocationDescriptor < Q > -> Void ,
68
73
go : Int -> Void ,
69
74
goBack : Void -> Void ,
70
75
goForward : Void -> Void ,
71
- setRouteLeaveHook : Route -> RouteHook -> Function ,
72
- isActive : LocationDescriptor -> Bool -> Void ,
76
+ setRouteLeaveHook : Route < P , Q > -> RouteHook < Q > -> Function ,
77
+ isActive : LocationDescriptor < Q > -> Bool -> Void ,
73
78
}
74
- private typedef RouterState = {
75
- location : Location ,
76
- routes : Array <Route >,
77
- params : Params ,
79
+ private typedef RouterState < P , Q > = {
80
+ location : Location < Q > ,
81
+ routes : Array <Route < P , Q > >,
82
+ params : Params < P > ,
78
83
components : Array <Component >,
79
84
}
0 commit comments