@react-navigation/core 6.4.6 → 7.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/commonjs/BaseNavigationContainer.js +44 -33
- package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
- package/lib/commonjs/DeprecatedNavigationInChildContext.js +16 -0
- package/lib/commonjs/DeprecatedNavigationInChildContext.js.map +1 -0
- package/lib/commonjs/NavigationIndependentTree.js +33 -0
- package/lib/commonjs/NavigationIndependentTree.js.map +1 -0
- package/lib/commonjs/NavigationIndependentTreeContext.js +16 -0
- package/lib/commonjs/NavigationIndependentTreeContext.js.map +1 -0
- package/lib/commonjs/StaticNavigation.js +160 -0
- package/lib/commonjs/StaticNavigation.js.map +1 -0
- package/lib/commonjs/createNavigatorFactory.js +16 -7
- package/lib/commonjs/createNavigatorFactory.js.map +1 -1
- package/lib/commonjs/getActionFromState.js.map +1 -1
- package/lib/commonjs/index.js +52 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/useDescriptors.js +21 -18
- package/lib/commonjs/useDescriptors.js.map +1 -1
- package/lib/commonjs/useNavigationBuilder.js +1 -1
- package/lib/commonjs/useNavigationBuilder.js.map +1 -1
- package/lib/commonjs/useNavigationCache.js +9 -7
- package/lib/commonjs/useNavigationCache.js.map +1 -1
- package/lib/commonjs/useNavigationIndependentTree.js +15 -0
- package/lib/commonjs/useNavigationIndependentTree.js.map +1 -0
- package/lib/commonjs/useOnAction.js +11 -7
- package/lib/commonjs/useOnAction.js.map +1 -1
- package/lib/module/BaseNavigationContainer.js +44 -33
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/DeprecatedNavigationInChildContext.js +8 -0
- package/lib/module/DeprecatedNavigationInChildContext.js.map +1 -0
- package/lib/module/NavigationIndependentTree.js +25 -0
- package/lib/module/NavigationIndependentTree.js.map +1 -0
- package/lib/module/NavigationIndependentTreeContext.js +8 -0
- package/lib/module/NavigationIndependentTreeContext.js.map +1 -0
- package/lib/module/StaticNavigation.js +156 -0
- package/lib/module/StaticNavigation.js.map +1 -0
- package/lib/module/createNavigatorFactory.js +16 -7
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/useDescriptors.js +21 -18
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +1 -1
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +9 -7
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationIndependentTree.js +6 -0
- package/lib/module/useNavigationIndependentTree.js.map +1 -0
- package/lib/module/useOnAction.js +11 -7
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +2 -0
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/DeprecatedNavigationInChildContext.d.ts +7 -0
- package/lib/typescript/src/DeprecatedNavigationInChildContext.d.ts.map +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
- package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
- package/lib/typescript/src/NavigationBuilderContext.d.ts +9 -9
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts +8 -0
- package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -0
- package/lib/typescript/src/NavigationIndependentTreeContext.d.ts +7 -0
- package/lib/typescript/src/NavigationIndependentTreeContext.d.ts.map +1 -0
- package/lib/typescript/src/PreventRemoveContext.d.ts +1 -1
- package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
- package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
- package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
- package/lib/typescript/src/SceneView.d.ts +1 -1
- package/lib/typescript/src/SceneView.d.ts.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +159 -0
- package/lib/typescript/src/StaticNavigation.d.ts.map +1 -0
- package/lib/typescript/src/createNavigatorFactory.d.ts +8 -2
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/getActionFromState.d.ts +2 -2
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts +2 -2
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts +2 -2
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +109 -48
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useComponent.d.ts +1 -1
- package/lib/typescript/src/useComponent.d.ts.map +1 -1
- package/lib/typescript/src/useCurrentRender.d.ts +1 -1
- package/lib/typescript/src/useCurrentRender.d.ts.map +1 -1
- package/lib/typescript/src/useDescriptors.d.ts +11 -9
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
- package/lib/typescript/src/useEventEmitter.d.ts +1 -1
- package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEffect.d.ts +1 -1
- package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEvents.d.ts +1 -1
- package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts +19 -15
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationCache.d.ts +4 -4
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +11 -9
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationIndependentTree.d.ts +2 -0
- package/lib/typescript/src/useNavigationIndependentTree.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationState.d.ts +1 -1
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts +1 -1
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/lib/typescript/src/useOnGetState.d.ts +1 -1
- package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/useOnRouteFocus.d.ts +1 -1
- package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
- package/lib/typescript/src/useOptionsGetters.d.ts +1 -1
- package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/BaseNavigationContainer.tsx +68 -64
- package/src/DeprecatedNavigationInChildContext.tsx +8 -0
- package/src/NavigationIndependentTree.tsx +25 -0
- package/src/NavigationIndependentTreeContext.tsx +8 -0
- package/src/StaticNavigation.tsx +401 -0
- package/src/createNavigatorFactory.tsx +38 -9
- package/src/getActionFromState.tsx +2 -8
- package/src/getPathFromState.tsx +1 -1
- package/src/index.tsx +9 -0
- package/src/types.tsx +111 -29
- package/src/useDescriptors.tsx +24 -19
- package/src/useNavigationBuilder.tsx +10 -5
- package/src/useNavigationCache.tsx +8 -4
- package/src/useNavigationIndependentTree.tsx +7 -0
- package/src/useOnAction.tsx +13 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DefaultRouterOptions, NavigationState, ParamListBase, PartialState, RouterFactory } from '@react-navigation/routers';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { DefaultNavigatorOptions, EventMapCore, PrivateValueStore, RouteProp } from './types';
|
|
4
|
-
|
|
4
|
+
type NavigationBuilderOptions<ScreenOptions extends {}> = {
|
|
5
5
|
/**
|
|
6
6
|
* Default options specified by the navigator.
|
|
7
7
|
* It receives the custom options in the arguments if a function is specified.
|
|
@@ -27,7 +27,7 @@ export default function useNavigationBuilder<State extends NavigationState, Rout
|
|
|
27
27
|
payload?: object | undefined;
|
|
28
28
|
source?: string | undefined;
|
|
29
29
|
target?: string | undefined;
|
|
30
|
-
}> | ((state: Readonly<{
|
|
30
|
+
}> | ((state: Readonly<Readonly<{
|
|
31
31
|
key: string;
|
|
32
32
|
index: number;
|
|
33
33
|
routeNames: string[];
|
|
@@ -43,7 +43,7 @@ export default function useNavigationBuilder<State extends NavigationState, Rout
|
|
|
43
43
|
})[];
|
|
44
44
|
type: string;
|
|
45
45
|
stale: false;
|
|
46
|
-
}
|
|
46
|
+
}>>) => Readonly<{
|
|
47
47
|
type: string;
|
|
48
48
|
payload?: object | undefined;
|
|
49
49
|
source?: string | undefined;
|
|
@@ -51,12 +51,14 @@ export default function useNavigationBuilder<State extends NavigationState, Rout
|
|
|
51
51
|
}>)): void;
|
|
52
52
|
navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName] | [screen: RouteName, params: object | undefined] : never): void;
|
|
53
53
|
navigate<RouteName_1 extends string>(options: RouteName_1 extends unknown ? {
|
|
54
|
-
key: string;
|
|
55
|
-
params?: object | undefined;
|
|
56
|
-
merge?: boolean | undefined;
|
|
57
|
-
} | {
|
|
58
54
|
name: RouteName_1;
|
|
59
|
-
|
|
55
|
+
params: object | undefined;
|
|
56
|
+
path?: string | undefined;
|
|
57
|
+
merge?: boolean | undefined;
|
|
58
|
+
} : never): void;
|
|
59
|
+
navigateDeprecated<RouteName_2 extends string>(...args: RouteName_2 extends unknown ? [screen: RouteName_2] | [screen: RouteName_2, params: object | undefined] : never): void;
|
|
60
|
+
navigateDeprecated<RouteName_3 extends string>(options: RouteName_3 extends unknown ? {
|
|
61
|
+
name: RouteName_3;
|
|
60
62
|
params: object | undefined;
|
|
61
63
|
merge?: boolean | undefined;
|
|
62
64
|
} : never): void;
|
|
@@ -116,7 +118,7 @@ export default function useNavigationBuilder<State extends NavigationState, Rout
|
|
|
116
118
|
stale: false;
|
|
117
119
|
}>;
|
|
118
120
|
} & PrivateValueStore<[ParamListBase, unknown, unknown]> & import("./types").EventEmitter<EventMap> & {
|
|
119
|
-
setParams<
|
|
121
|
+
setParams<RouteName_4 extends string>(params: Partial<object | undefined>): void;
|
|
120
122
|
} & ActionHelpers;
|
|
121
123
|
descriptors: Record<string, import("./types").Descriptor<ScreenOptions, Omit<{
|
|
122
124
|
dispatch(action: Readonly<{
|
|
@@ -124,7 +126,7 @@ export default function useNavigationBuilder<State extends NavigationState, Rout
|
|
|
124
126
|
payload?: object | undefined;
|
|
125
127
|
source?: string | undefined;
|
|
126
128
|
target?: string | undefined;
|
|
127
|
-
}> | ((state: State) => Readonly<{
|
|
129
|
+
}> | ((state: Readonly<State>) => Readonly<{
|
|
128
130
|
type: string;
|
|
129
131
|
payload?: object | undefined;
|
|
130
132
|
source?: string | undefined;
|
|
@@ -132,12 +134,14 @@ export default function useNavigationBuilder<State extends NavigationState, Rout
|
|
|
132
134
|
}>)): void;
|
|
133
135
|
navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName] | [screen: RouteName, params: object | undefined] : never): void;
|
|
134
136
|
navigate<RouteName_1 extends string>(options: RouteName_1 extends unknown ? {
|
|
135
|
-
key: string;
|
|
136
|
-
params?: object | undefined;
|
|
137
|
-
merge?: boolean | undefined;
|
|
138
|
-
} | {
|
|
139
137
|
name: RouteName_1;
|
|
140
|
-
|
|
138
|
+
params: object | undefined;
|
|
139
|
+
path?: string | undefined;
|
|
140
|
+
merge?: boolean | undefined;
|
|
141
|
+
} : never): void;
|
|
142
|
+
navigateDeprecated<RouteName_2 extends string>(...args: RouteName_2 extends unknown ? [screen: RouteName_2] | [screen: RouteName_2, params: object | undefined] : never): void;
|
|
143
|
+
navigateDeprecated<RouteName_3 extends string>(options: RouteName_3 extends unknown ? {
|
|
144
|
+
name: RouteName_3;
|
|
141
145
|
params: object | undefined;
|
|
142
146
|
merge?: boolean | undefined;
|
|
143
147
|
} : never): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAEpB,eAAe,EACf,aAAa,EACb,YAAY,EAIZ,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EACL,uBAAuB,EAEvB,YAAY,EAEZ,iBAAiB,EAEjB,SAAS,EACV,MAAM,SAAS,CAAC;AAoBjB,
|
|
1
|
+
{"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAEpB,eAAe,EACf,aAAa,EACb,YAAY,EAIZ,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EACL,uBAAuB,EAEvB,YAAY,EAEZ,iBAAiB,EAEjB,SAAS,EACV,MAAM,SAAS,CAAC;AAoBjB,KAAK,wBAAwB,CAAC,aAAa,SAAS,EAAE,IAAI;IACxD;;;OAGG;IACH,oBAAoB,CAAC,EACjB,aAAa,GACb,CAAC,CAAC,KAAK,EAAE;QACP,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAChC,UAAU,EAAE,GAAG,CAAC;QAChB,OAAO,EAAE,aAAa,CAAC;KACxB,KAAK,aAAa,CAAC,CAAC;CAC1B,CAAC;AAwLF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAChD,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,EACtD,OAAO,EAAE,uBAAuB,CAC9B,aAAa,EACb,KAAK,EACL,aAAa,EACb,QAAQ,CACT,GACC,wBAAwB,CAAC,aAAa,CAAC,GACvC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0chB"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { NavigationAction, NavigationState, ParamListBase, Router } from '@react-navigation/routers';
|
|
2
2
|
import type { NavigationHelpers, NavigationProp } from './types';
|
|
3
3
|
import type { NavigationEventEmitter } from './useEventEmitter';
|
|
4
|
-
|
|
4
|
+
type Options<State extends NavigationState, ScreenOptions extends {}, EventMap extends Record<string, any>> = {
|
|
5
5
|
state: State;
|
|
6
6
|
getState: () => State;
|
|
7
7
|
navigation: NavigationHelpers<ParamListBase> & Partial<NavigationProp<ParamListBase, string, any, any, any>>;
|
|
8
|
-
setOptions: (cb: (options: Record<string,
|
|
8
|
+
setOptions: (cb: (options: Record<string, ScreenOptions>) => Record<string, ScreenOptions>) => void;
|
|
9
9
|
router: Router<State, NavigationAction>;
|
|
10
10
|
emitter: NavigationEventEmitter<EventMap>;
|
|
11
11
|
};
|
|
12
|
-
|
|
12
|
+
type NavigationCache<State extends NavigationState, ScreenOptions extends {}, EventMap extends Record<string, any>> = Record<string, NavigationProp<ParamListBase, string, string | undefined, State, ScreenOptions, EventMap>>;
|
|
13
13
|
/**
|
|
14
14
|
* Hook to cache navigation objects for each screen in the navigator.
|
|
15
15
|
* It's important to cache them to make sure navigation objects don't change between renders.
|
|
16
16
|
* This lets us apply optimizations like `React.memo` to minimize re-rendering screens.
|
|
17
17
|
*/
|
|
18
|
-
export default function useNavigationCache<State extends NavigationState, ScreenOptions extends {}, EventMap extends Record<string, any>>({ state, getState, navigation, setOptions, router, emitter, }: Options<State, EventMap>): NavigationCache<State, ScreenOptions, EventMap>;
|
|
18
|
+
export default function useNavigationCache<State extends NavigationState, ScreenOptions extends {}, EventMap extends Record<string, any>>({ state, getState, navigation, setOptions, router, emitter, }: Options<State, ScreenOptions, EventMap>): NavigationCache<State, ScreenOptions, EventMap>;
|
|
19
19
|
export {};
|
|
20
20
|
//# sourceMappingURL=useNavigationCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationCache.d.ts","sourceRoot":"","sources":["../../../src/useNavigationCache.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,MAAM,EACP,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,
|
|
1
|
+
{"version":3,"file":"useNavigationCache.d.ts","sourceRoot":"","sources":["../../../src/useNavigationCache.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,MAAM,EACP,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,KAAK,OAAO,CACV,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC;IACF,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAC1C,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,UAAU,EAAE,CACV,EAAE,EAAE,CACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KACnC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAC/B,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,eAAe,CAClB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,MAAM,CACR,MAAM,EACN,cAAc,CACZ,aAAa,EACb,MAAM,EACN,MAAM,GAAG,SAAS,EAClB,KAAK,EACL,aAAa,EACb,QAAQ,CACT,CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpC,EACA,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,mDAmHzC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NavigationAction, NavigationState, ParamListBase, Router } from '@react-navigation/routers';
|
|
2
2
|
import { NavigationHelpers, PrivateValueStore } from './types';
|
|
3
3
|
import type { NavigationEventEmitter } from './useEventEmitter';
|
|
4
|
-
|
|
4
|
+
type Options<State extends NavigationState, Action extends NavigationAction> = {
|
|
5
5
|
id: string | undefined;
|
|
6
6
|
onAction: (action: NavigationAction) => boolean;
|
|
7
7
|
getState: () => State;
|
|
@@ -18,7 +18,7 @@ export default function useNavigationHelpers<State extends NavigationState, Acti
|
|
|
18
18
|
payload?: object | undefined;
|
|
19
19
|
source?: string | undefined;
|
|
20
20
|
target?: string | undefined;
|
|
21
|
-
}> | ((state: Readonly<{
|
|
21
|
+
}> | ((state: Readonly<Readonly<{
|
|
22
22
|
key: string;
|
|
23
23
|
index: number;
|
|
24
24
|
routeNames: string[];
|
|
@@ -34,7 +34,7 @@ export default function useNavigationHelpers<State extends NavigationState, Acti
|
|
|
34
34
|
})[];
|
|
35
35
|
type: string;
|
|
36
36
|
stale: false;
|
|
37
|
-
}
|
|
37
|
+
}>>) => Readonly<{
|
|
38
38
|
type: string;
|
|
39
39
|
payload?: object | undefined;
|
|
40
40
|
source?: string | undefined;
|
|
@@ -42,12 +42,14 @@ export default function useNavigationHelpers<State extends NavigationState, Acti
|
|
|
42
42
|
}>)): void;
|
|
43
43
|
navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName] | [screen: RouteName, params: object | undefined] : never): void;
|
|
44
44
|
navigate<RouteName_1 extends string>(options: RouteName_1 extends unknown ? {
|
|
45
|
-
key: string;
|
|
46
|
-
params?: object | undefined;
|
|
47
|
-
merge?: boolean | undefined;
|
|
48
|
-
} | {
|
|
49
45
|
name: RouteName_1;
|
|
50
|
-
|
|
46
|
+
params: object | undefined;
|
|
47
|
+
path?: string | undefined;
|
|
48
|
+
merge?: boolean | undefined;
|
|
49
|
+
} : never): void;
|
|
50
|
+
navigateDeprecated<RouteName_2 extends string>(...args: RouteName_2 extends unknown ? [screen: RouteName_2] | [screen: RouteName_2, params: object | undefined] : never): void;
|
|
51
|
+
navigateDeprecated<RouteName_3 extends string>(options: RouteName_3 extends unknown ? {
|
|
52
|
+
name: RouteName_3;
|
|
51
53
|
params: object | undefined;
|
|
52
54
|
merge?: boolean | undefined;
|
|
53
55
|
} : never): void;
|
|
@@ -107,7 +109,7 @@ export default function useNavigationHelpers<State extends NavigationState, Acti
|
|
|
107
109
|
stale: false;
|
|
108
110
|
}>;
|
|
109
111
|
} & PrivateValueStore<[ParamListBase, unknown, unknown]> & import("./types").EventEmitter<EventMap> & {
|
|
110
|
-
setParams<
|
|
112
|
+
setParams<RouteName_4 extends string>(params: Partial<object | undefined>): void;
|
|
111
113
|
} & ActionHelpers;
|
|
112
114
|
export {};
|
|
113
115
|
//# sourceMappingURL=useNavigationHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationHelpers.d.ts","sourceRoot":"","sources":["../../../src/useNavigationHelpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,MAAM,EACP,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAMhE,
|
|
1
|
+
{"version":3,"file":"useNavigationHelpers.d.ts","sourceRoot":"","sources":["../../../src/useNavigationHelpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,MAAM,EACP,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAMhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,EAAE,MAAM,SAAS,gBAAgB,IAAI;IAC7E,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAChD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAChD,MAAM,SAAS,gBAAgB,EAC/B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpC,EACA,EAAE,EAAE,WAAW,EACf,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,GACP,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0ExB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNavigationIndependentTree.d.ts","sourceRoot":"","sources":["../../../src/useNavigationIndependentTree.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,4BAA4B,YAEnD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NavigationState, ParamListBase } from '@react-navigation/routers';
|
|
2
|
-
|
|
2
|
+
type Selector<ParamList extends ParamListBase, T> = (state: NavigationState<ParamList>) => T;
|
|
3
3
|
/**
|
|
4
4
|
* Hook to get a value from the current navigation state using a selector.
|
|
5
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationState.d.ts","sourceRoot":"","sources":["../../../src/useNavigationState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAMhF,
|
|
1
|
+
{"version":3,"file":"useNavigationState.d.ts","sourceRoot":"","sources":["../../../src/useNavigationState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAMhF,KAAK,QAAQ,CAAC,SAAS,SAAS,aAAa,EAAE,CAAC,IAAI,CAClD,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,KAC9B,CAAC,CAAC;AAEP;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,SAAS,SAAS,aAAa,EAAE,CAAC,EAC3E,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,GAC/B,CAAC,CAuBH"}
|
|
@@ -2,7 +2,7 @@ import type { NavigationAction, NavigationState, PartialState, Router, RouterCon
|
|
|
2
2
|
import { ChildActionListener, ChildBeforeRemoveListener } from './NavigationBuilderContext';
|
|
3
3
|
import type { EventMapCore } from './types';
|
|
4
4
|
import type { NavigationEventEmitter } from './useEventEmitter';
|
|
5
|
-
|
|
5
|
+
type Options = {
|
|
6
6
|
router: Router<NavigationState, NavigationAction>;
|
|
7
7
|
key?: string;
|
|
8
8
|
getState: () => NavigationState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnAction.d.ts","sourceRoot":"","sources":["../../../src/useOnAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"useOnAction.d.ts","sourceRoot":"","sources":["../../../src/useOnAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAInC,OAAiC,EAC/B,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,eAAe,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAC3E,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAC7E,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,GACR,EAAE,OAAO,YAoBI,gBAAgB,sBACL,IAAI,MAAM,CAAC,aAyGnC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NavigationState } from '@react-navigation/routers';
|
|
2
2
|
import { GetStateListener } from './NavigationBuilderContext';
|
|
3
|
-
|
|
3
|
+
type Options = {
|
|
4
4
|
getState: () => NavigationState;
|
|
5
5
|
getStateListeners: Record<string, GetStateListener | undefined>;
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnGetState.d.ts","sourceRoot":"","sources":["../../../src/useOnGetState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAiC,EAC/B,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAGpC,
|
|
1
|
+
{"version":3,"file":"useOnGetState.d.ts","sourceRoot":"","sources":["../../../src/useOnGetState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAiC,EAC/B,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAGpC,KAAK,OAAO,GAAG;IACb,QAAQ,EAAE,MAAM,eAAe,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAQ,EACR,iBAAiB,GAClB,EAAE,OAAO,QA6BT"}
|
|
@@ -2,7 +2,7 @@ import type { NavigationAction, NavigationState } from '@react-navigation/router
|
|
|
2
2
|
import { ChildBeforeRemoveListener } from './NavigationBuilderContext';
|
|
3
3
|
import type { EventMapCore } from './types';
|
|
4
4
|
import type { NavigationEventEmitter } from './useEventEmitter';
|
|
5
|
-
|
|
5
|
+
type Options = {
|
|
6
6
|
getState: () => NavigationState;
|
|
7
7
|
emitter: NavigationEventEmitter<EventMapCore<any>>;
|
|
8
8
|
beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnPreventRemove.d.ts","sourceRoot":"","sources":["../../../src/useOnPreventRemove.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAGnC,OAAiC,EAC/B,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,
|
|
1
|
+
{"version":3,"file":"useOnPreventRemove.d.ts","sourceRoot":"","sources":["../../../src/useOnPreventRemove.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAGnC,OAAiC,EAC/B,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,KAAK,OAAO,GAAG;IACb,QAAQ,EAAE,MAAM,eAAe,CAAC;IAChC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;CAC9E,CAAC;AAIF,eAAO,MAAM,mBAAmB,YACrB,uBAAuB,aAAa,GAAG,CAAC,CAAC,yBAC3B,OAAO,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,iBAC7D;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,cACpB;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,UAClC,gBAAgB,YA8CzB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,QAAQ,EACR,OAAO,EACP,qBAAqB,GACtB,EAAE,OAAO,QAoBT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NavigationAction, NavigationState, Router } from '@react-navigation/routers';
|
|
2
|
-
|
|
2
|
+
type Options<Action extends NavigationAction> = {
|
|
3
3
|
router: Router<NavigationState, Action>;
|
|
4
4
|
getState: () => NavigationState;
|
|
5
5
|
setState: (state: NavigationState) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnRouteFocus.d.ts","sourceRoot":"","sources":["../../../src/useOnRouteFocus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,MAAM,EACP,MAAM,2BAA2B,CAAC;AAKnC,
|
|
1
|
+
{"version":3,"file":"useOnRouteFocus.d.ts","sourceRoot":"","sources":["../../../src/useOnRouteFocus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,MAAM,EACP,MAAM,2BAA2B,CAAC;AAKnC,KAAK,OAAO,CAAC,MAAM,SAAS,gBAAgB,IAAI;IAC9C,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,eAAe,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,SAAS,gBAAgB,EAAE,EACvE,MAAM,EACN,QAAQ,EACR,GAAG,EAAE,cAAc,EACnB,QAAQ,GACT,EAAE,OAAO,CAAC,MAAM,CAAC,SAMR,MAAM,UAcf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOptionsGetters.d.ts","sourceRoot":"","sources":["../../../src/useOptionsGetters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,
|
|
1
|
+
{"version":3,"file":"useOptionsGetters.d.ts","sourceRoot":"","sources":["../../../src/useOptionsGetters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,GAAG,EACH,OAAO,EACP,UAAU,GACX,EAAE,OAAO;4BA+DA,MAAM,UAAU,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI;;EAiBxD"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/core",
|
|
3
3
|
"description": "Core utilities for building navigators",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "7.0.0-alpha.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
7
7
|
"react-native",
|
|
@@ -35,23 +35,23 @@
|
|
|
35
35
|
"clean": "del lib"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@react-navigation/routers": "^
|
|
38
|
+
"@react-navigation/routers": "^7.0.0-alpha.0",
|
|
39
39
|
"escape-string-regexp": "^4.0.0",
|
|
40
40
|
"nanoid": "^3.1.23",
|
|
41
41
|
"query-string": "^7.1.3",
|
|
42
|
-
"react-is": "^
|
|
42
|
+
"react-is": "^18.2.0",
|
|
43
43
|
"use-latest-callback": "^0.1.5"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@testing-library/react-native": "^11.5.0",
|
|
47
|
-
"@types/react": "~18.0.
|
|
48
|
-
"@types/react-is": "^17.0.
|
|
49
|
-
"del-cli": "^
|
|
50
|
-
"immer": "^9.0.
|
|
51
|
-
"react": "18.
|
|
47
|
+
"@types/react": "~18.0.26",
|
|
48
|
+
"@types/react-is": "^17.0.3",
|
|
49
|
+
"del-cli": "^5.0.0",
|
|
50
|
+
"immer": "^9.0.16",
|
|
51
|
+
"react": "18.1.0",
|
|
52
52
|
"react-native-builder-bob": "^0.20.3",
|
|
53
|
-
"react-test-renderer": "18.
|
|
54
|
-
"typescript": "^4.
|
|
53
|
+
"react-test-renderer": "18.1.0",
|
|
54
|
+
"typescript": "^4.9.4"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"react": "*"
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
]
|
|
71
71
|
]
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "ad722b882e0c40b1d1bc025d70112ddb126f265e"
|
|
74
74
|
}
|
|
@@ -8,16 +8,17 @@ import {
|
|
|
8
8
|
Route,
|
|
9
9
|
} from '@react-navigation/routers';
|
|
10
10
|
import * as React from 'react';
|
|
11
|
+
import useLatestCallback from 'use-latest-callback';
|
|
11
12
|
|
|
12
13
|
import checkDuplicateRouteNames from './checkDuplicateRouteNames';
|
|
13
14
|
import checkSerializable from './checkSerializable';
|
|
14
15
|
import { NOT_INITIALIZED_ERROR } from './createNavigationContainerRef';
|
|
16
|
+
import DeprecatedNavigationInChildContext from './DeprecatedNavigationInChildContext';
|
|
15
17
|
import EnsureSingleNavigator from './EnsureSingleNavigator';
|
|
16
18
|
import findFocusedRoute from './findFocusedRoute';
|
|
17
19
|
import NavigationBuilderContext from './NavigationBuilderContext';
|
|
18
20
|
import NavigationContainerRefContext from './NavigationContainerRefContext';
|
|
19
|
-
import
|
|
20
|
-
import NavigationRouteContext from './NavigationRouteContext';
|
|
21
|
+
import NavigationIndependentTreeContext from './NavigationIndependentTreeContext';
|
|
21
22
|
import NavigationStateContext from './NavigationStateContext';
|
|
22
23
|
import type {
|
|
23
24
|
NavigationContainerEventMap,
|
|
@@ -28,6 +29,7 @@ import UnhandledActionContext from './UnhandledActionContext';
|
|
|
28
29
|
import useChildListeners from './useChildListeners';
|
|
29
30
|
import useEventEmitter from './useEventEmitter';
|
|
30
31
|
import useKeyedChildListeners from './useKeyedChildListeners';
|
|
32
|
+
import useNavigationIndependentTree from './useNavigationIndependentTree';
|
|
31
33
|
import useOptionsGetters from './useOptionsGetters';
|
|
32
34
|
import { ScheduleUpdateContext } from './useScheduleUpdate';
|
|
33
35
|
import useSyncState from './useSyncState';
|
|
@@ -72,7 +74,9 @@ const getPartialState = (
|
|
|
72
74
|
* This should be rendered at the root wrapping the whole app.
|
|
73
75
|
*
|
|
74
76
|
* @param props.initialState Initial state object for the navigation tree.
|
|
77
|
+
* @param props.onReady Callback which is called after the navigation tree mounts.
|
|
75
78
|
* @param props.onStateChange Callback which is called with the latest navigation state when it changes.
|
|
79
|
+
* @param props.onUnhandledAction Callback which is called when an action is not handled.
|
|
76
80
|
* @param props.children Child elements to render the content.
|
|
77
81
|
* @param props.ref Ref object which refers to the navigation object containing helper methods.
|
|
78
82
|
*/
|
|
@@ -81,17 +85,19 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
81
85
|
{
|
|
82
86
|
initialState,
|
|
83
87
|
onStateChange,
|
|
88
|
+
onReady,
|
|
84
89
|
onUnhandledAction,
|
|
85
|
-
|
|
90
|
+
navigationInChildEnabled = false,
|
|
86
91
|
children,
|
|
87
92
|
}: NavigationContainerProps,
|
|
88
93
|
ref?: React.Ref<NavigationContainerRef<ParamListBase>>
|
|
89
94
|
) {
|
|
90
95
|
const parent = React.useContext(NavigationStateContext);
|
|
96
|
+
const independent = useNavigationIndependentTree();
|
|
91
97
|
|
|
92
98
|
if (!parent.isDefault && !independent) {
|
|
93
99
|
throw new Error(
|
|
94
|
-
"Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional,
|
|
100
|
+
"Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, wrap the container in 'NavigationIndependentTree' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them."
|
|
95
101
|
);
|
|
96
102
|
}
|
|
97
103
|
|
|
@@ -114,7 +120,7 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
114
120
|
|
|
115
121
|
const { keyedListeners, addKeyedListener } = useKeyedChildListeners();
|
|
116
122
|
|
|
117
|
-
const dispatch =
|
|
123
|
+
const dispatch = useLatestCallback(
|
|
118
124
|
(
|
|
119
125
|
action:
|
|
120
126
|
| NavigationAction
|
|
@@ -125,11 +131,10 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
125
131
|
} else {
|
|
126
132
|
listeners.focus[0]((navigation) => navigation.dispatch(action));
|
|
127
133
|
}
|
|
128
|
-
}
|
|
129
|
-
[listeners.focus]
|
|
134
|
+
}
|
|
130
135
|
);
|
|
131
136
|
|
|
132
|
-
const canGoBack =
|
|
137
|
+
const canGoBack = useLatestCallback(() => {
|
|
133
138
|
if (listeners.focus[0] == null) {
|
|
134
139
|
return false;
|
|
135
140
|
}
|
|
@@ -143,9 +148,9 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
143
148
|
} else {
|
|
144
149
|
return false;
|
|
145
150
|
}
|
|
146
|
-
}
|
|
151
|
+
});
|
|
147
152
|
|
|
148
|
-
const resetRoot =
|
|
153
|
+
const resetRoot = useLatestCallback(
|
|
149
154
|
(state?: PartialState<NavigationState> | NavigationState) => {
|
|
150
155
|
const target = state?.key ?? keyedListeners.getState.root?.().key;
|
|
151
156
|
|
|
@@ -159,15 +164,14 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
159
164
|
})
|
|
160
165
|
);
|
|
161
166
|
}
|
|
162
|
-
}
|
|
163
|
-
[keyedListeners.getState, listeners.focus]
|
|
167
|
+
}
|
|
164
168
|
);
|
|
165
169
|
|
|
166
|
-
const getRootState =
|
|
170
|
+
const getRootState = useLatestCallback(() => {
|
|
167
171
|
return keyedListeners.getState.root?.();
|
|
168
|
-
}
|
|
172
|
+
});
|
|
169
173
|
|
|
170
|
-
const getCurrentRoute =
|
|
174
|
+
const getCurrentRoute = useLatestCallback(() => {
|
|
171
175
|
const state = getRootState();
|
|
172
176
|
|
|
173
177
|
if (state == null) {
|
|
@@ -177,7 +181,9 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
177
181
|
const route = findFocusedRoute(state);
|
|
178
182
|
|
|
179
183
|
return route as Route<string> | undefined;
|
|
180
|
-
}
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const isReady = useLatestCallback(() => listeners.focus[0] != null);
|
|
181
187
|
|
|
182
188
|
const emitter = useEventEmitter<NavigationContainerEventMap>();
|
|
183
189
|
|
|
@@ -201,7 +207,7 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
201
207
|
getRootState,
|
|
202
208
|
getCurrentRoute,
|
|
203
209
|
getCurrentOptions,
|
|
204
|
-
isReady
|
|
210
|
+
isReady,
|
|
205
211
|
}),
|
|
206
212
|
[
|
|
207
213
|
canGoBack,
|
|
@@ -210,40 +216,36 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
210
216
|
getCurrentOptions,
|
|
211
217
|
getCurrentRoute,
|
|
212
218
|
getRootState,
|
|
213
|
-
|
|
219
|
+
isReady,
|
|
214
220
|
resetRoot,
|
|
215
221
|
]
|
|
216
222
|
);
|
|
217
223
|
|
|
218
224
|
React.useImperativeHandle(ref, () => navigation, [navigation]);
|
|
219
225
|
|
|
220
|
-
const onDispatchAction =
|
|
226
|
+
const onDispatchAction = useLatestCallback(
|
|
221
227
|
(action: NavigationAction, noop: boolean) => {
|
|
222
228
|
emitter.emit({
|
|
223
229
|
type: '__unsafe_action__',
|
|
224
230
|
data: { action, noop, stack: stackRef.current },
|
|
225
231
|
});
|
|
226
|
-
}
|
|
227
|
-
[emitter]
|
|
232
|
+
}
|
|
228
233
|
);
|
|
229
234
|
|
|
230
235
|
const lastEmittedOptionsRef = React.useRef<object | undefined>();
|
|
231
236
|
|
|
232
|
-
const onOptionsChange =
|
|
233
|
-
(options
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
+
const onOptionsChange = useLatestCallback((options: object) => {
|
|
238
|
+
if (lastEmittedOptionsRef.current === options) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
237
241
|
|
|
238
|
-
|
|
242
|
+
lastEmittedOptionsRef.current = options;
|
|
239
243
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
[emitter]
|
|
246
|
-
);
|
|
244
|
+
emitter.emit({
|
|
245
|
+
type: 'options',
|
|
246
|
+
data: { options },
|
|
247
|
+
});
|
|
248
|
+
});
|
|
247
249
|
|
|
248
250
|
const stackRef = React.useRef<string | undefined>();
|
|
249
251
|
|
|
@@ -288,15 +290,25 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
288
290
|
]
|
|
289
291
|
);
|
|
290
292
|
|
|
293
|
+
const onReadyRef = React.useRef(onReady);
|
|
291
294
|
const onStateChangeRef = React.useRef(onStateChange);
|
|
292
295
|
const stateRef = React.useRef(state);
|
|
293
296
|
|
|
294
297
|
React.useEffect(() => {
|
|
295
298
|
isInitialRef.current = false;
|
|
296
299
|
onStateChangeRef.current = onStateChange;
|
|
300
|
+
onReadyRef.current = onReady;
|
|
297
301
|
stateRef.current = state;
|
|
298
302
|
});
|
|
299
303
|
|
|
304
|
+
const isNavigationReady = isReady();
|
|
305
|
+
|
|
306
|
+
React.useEffect(() => {
|
|
307
|
+
if (isNavigationReady) {
|
|
308
|
+
onReadyRef.current?.();
|
|
309
|
+
}
|
|
310
|
+
}, [isNavigationReady]);
|
|
311
|
+
|
|
300
312
|
React.useEffect(() => {
|
|
301
313
|
const hydratedState = getRootState();
|
|
302
314
|
|
|
@@ -376,7 +388,7 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
376
388
|
isFirstMountRef.current = false;
|
|
377
389
|
}, [getRootState, emitter, state]);
|
|
378
390
|
|
|
379
|
-
const defaultOnUnhandledAction =
|
|
391
|
+
const defaultOnUnhandledAction = useLatestCallback(
|
|
380
392
|
(action: NavigationAction) => {
|
|
381
393
|
if (process.env.NODE_ENV === 'production') {
|
|
382
394
|
return;
|
|
@@ -415,38 +427,30 @@ const BaseNavigationContainer = React.forwardRef(
|
|
|
415
427
|
message += `\n\nThis is a development-only warning and won't be shown in production.`;
|
|
416
428
|
|
|
417
429
|
console.error(message);
|
|
418
|
-
}
|
|
419
|
-
[]
|
|
430
|
+
}
|
|
420
431
|
);
|
|
421
432
|
|
|
422
|
-
|
|
423
|
-
<
|
|
424
|
-
<
|
|
425
|
-
<
|
|
426
|
-
<
|
|
427
|
-
<
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
433
|
+
return (
|
|
434
|
+
<NavigationIndependentTreeContext.Provider value={false}>
|
|
435
|
+
<NavigationContainerRefContext.Provider value={navigation}>
|
|
436
|
+
<ScheduleUpdateContext.Provider value={scheduleContext}>
|
|
437
|
+
<NavigationBuilderContext.Provider value={builderContext}>
|
|
438
|
+
<NavigationStateContext.Provider value={context}>
|
|
439
|
+
<UnhandledActionContext.Provider
|
|
440
|
+
value={onUnhandledAction ?? defaultOnUnhandledAction}
|
|
441
|
+
>
|
|
442
|
+
<DeprecatedNavigationInChildContext.Provider
|
|
443
|
+
value={navigationInChildEnabled}
|
|
444
|
+
>
|
|
445
|
+
<EnsureSingleNavigator>{children}</EnsureSingleNavigator>
|
|
446
|
+
</DeprecatedNavigationInChildContext.Provider>
|
|
447
|
+
</UnhandledActionContext.Provider>
|
|
448
|
+
</NavigationStateContext.Provider>
|
|
449
|
+
</NavigationBuilderContext.Provider>
|
|
450
|
+
</ScheduleUpdateContext.Provider>
|
|
451
|
+
</NavigationContainerRefContext.Provider>
|
|
452
|
+
</NavigationIndependentTreeContext.Provider>
|
|
436
453
|
);
|
|
437
|
-
|
|
438
|
-
if (independent) {
|
|
439
|
-
// We need to clear any existing contexts for nested independent container to work correctly
|
|
440
|
-
element = (
|
|
441
|
-
<NavigationRouteContext.Provider value={undefined}>
|
|
442
|
-
<NavigationContext.Provider value={undefined}>
|
|
443
|
-
{element}
|
|
444
|
-
</NavigationContext.Provider>
|
|
445
|
-
</NavigationRouteContext.Provider>
|
|
446
|
-
);
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
return element;
|
|
450
454
|
}
|
|
451
455
|
);
|
|
452
456
|
|