@react-navigation/core 8.0.0-alpha.2 → 8.0.0-alpha.20
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/lib/module/BaseNavigationContainer.js +20 -9
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/ConsumedParamsContext.js +5 -0
- package/lib/module/ConsumedParamsContext.js.map +1 -0
- package/lib/module/NavigationBuilderContext.js +1 -0
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationIndependentTree.js +8 -4
- package/lib/module/NavigationIndependentTree.js.map +1 -1
- package/lib/module/NavigationProvider.js +14 -3
- package/lib/module/NavigationProvider.js.map +1 -1
- package/lib/module/NavigationStateContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +3 -3
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/SceneView.js +46 -56
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/StaticNavigation.js +166 -46
- package/lib/module/StaticNavigation.js.map +1 -1
- package/lib/module/checkSerializable.js +11 -4
- package/lib/module/checkSerializable.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +27 -5
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/findFocusedRoute.js +7 -4
- package/lib/module/findFocusedRoute.js.map +1 -1
- package/lib/module/getActionFromState.js +40 -14
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getPathFromState.js +48 -11
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getPatternParts.js +3 -0
- package/lib/module/getPatternParts.js.map +1 -1
- package/lib/module/getStateFromPath.js +353 -166
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/getStateFromRouteParams.js +24 -0
- package/lib/module/getStateFromRouteParams.js.map +1 -0
- package/lib/module/index.js +3 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/theming/useTheme.js +1 -1
- package/lib/module/theming/useTheme.js.map +1 -1
- package/lib/module/types.js +15 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/useDescriptors.js +18 -9
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +43 -31
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEvents.js +6 -2
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +2 -2
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useIsFocused.js +7 -12
- package/lib/module/useIsFocused.js.map +1 -1
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +144 -86
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +3 -3
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +1 -1
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationIndependentTree.js +1 -1
- package/lib/module/useNavigationIndependentTree.js.map +1 -1
- package/lib/module/useNavigationState.js +6 -4
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +3 -3
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetState.js +6 -3
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +3 -3
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js +1 -1
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +7 -4
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +1 -1
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/usePreventRemoveContext.js +1 -1
- package/lib/module/usePreventRemoveContext.js.map +1 -1
- package/lib/module/useRegisterNavigator.js +2 -2
- package/lib/module/useRegisterNavigator.js.map +1 -1
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +2 -1
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +1 -1
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/module/useStateForPath.js +1 -1
- package/lib/module/useStateForPath.js.map +1 -1
- package/lib/module/validatePathConfig.js +2 -1
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/ConsumedParamsContext.d.ts +8 -0
- package/lib/typescript/src/ConsumedParamsContext.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/Group.d.ts +1 -1
- package/lib/typescript/src/Group.d.ts.map +1 -1
- package/lib/typescript/src/NavigationBuilderContext.d.ts +12 -6
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
- package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
- package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
- package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
- package/lib/typescript/src/NavigationProvider.d.ts +10 -10
- package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
- package/lib/typescript/src/NavigationStateContext.d.ts +3 -3
- package/lib/typescript/src/NavigationStateContext.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 +3 -2
- package/lib/typescript/src/SceneView.d.ts.map +1 -1
- package/lib/typescript/src/Screen.d.ts +1 -1
- package/lib/typescript/src/Screen.d.ts.map +1 -1
- package/lib/typescript/src/StaticContainer.d.ts +1 -1
- package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +123 -92
- package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
- package/lib/typescript/src/checkSerializable.d.ts +5 -3
- package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
- package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
- package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts +17 -5
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/findFocusedRoute.d.ts +3 -3
- package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
- package/lib/typescript/src/getActionFromState.d.ts +4 -4
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts +3 -3
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPatternParts.d.ts +1 -0
- package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts +5 -5
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
- package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +34 -33
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
- package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
- package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
- package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theming/useTheme.d.ts +1 -1
- package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +215 -131
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useChildListeners.d.ts +3 -3
- package/lib/typescript/src/useChildListeners.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/useDescriptors.d.ts +7 -7
- 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/useFocusEvents.d.ts +2 -2
- package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
- package/lib/typescript/src/useIsFocused.d.ts +3 -0
- package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
- package/lib/typescript/src/useKeyedChildListeners.d.ts +3 -3
- package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
- package/lib/typescript/src/useNavigation.d.ts +5 -3
- package/lib/typescript/src/useNavigation.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts +24 -24
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationCache.d.ts +3 -3
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
- package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +19 -19
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationState.d.ts +2 -2
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts +9 -9
- 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 +3 -3
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
- 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/lib/typescript/src/usePreventRemoveContext.d.ts +1 -1
- package/lib/typescript/src/useRoute.d.ts +2 -2
- package/lib/typescript/src/useRoute.d.ts.map +1 -1
- package/lib/typescript/src/useRouteCache.d.ts +4 -4
- package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
- package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
- package/lib/typescript/src/useStateForPath.d.ts +1 -1
- package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
- package/lib/typescript/src/utilities.d.ts +45 -5
- package/lib/typescript/src/utilities.d.ts.map +1 -1
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
- package/package.json +23 -20
- package/src/BaseNavigationContainer.tsx +337 -326
- package/src/ConsumedParamsContext.tsx +10 -0
- package/src/NavigationBuilderContext.tsx +14 -8
- package/src/NavigationFocusedRouteStateContext.tsx +4 -4
- package/src/NavigationIndependentTree.tsx +8 -5
- package/src/NavigationProvider.tsx +17 -3
- package/src/NavigationStateContext.tsx +5 -6
- package/src/PreventRemoveProvider.tsx +3 -3
- package/src/SceneView.tsx +58 -56
- package/src/StaticNavigation.tsx +488 -250
- package/src/checkSerializable.tsx +22 -12
- package/src/createNavigatorFactory.tsx +83 -8
- package/src/findFocusedRoute.tsx +13 -8
- package/src/getActionFromState.tsx +68 -39
- package/src/getPathFromState.tsx +91 -27
- package/src/getPatternParts.tsx +8 -0
- package/src/getStateFromPath.tsx +555 -180
- package/src/getStateFromRouteParams.tsx +60 -0
- package/src/index.tsx +47 -5
- package/src/theming/useTheme.tsx +1 -1
- package/src/types.tsx +541 -338
- package/src/useDescriptors.tsx +27 -12
- package/src/useEventEmitter.tsx +45 -36
- package/src/useFocusEvents.tsx +8 -2
- package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
- package/src/useIsFocused.tsx +14 -21
- package/src/useNavigation.tsx +8 -4
- package/src/useNavigationBuilder.tsx +220 -132
- package/src/useNavigationCache.tsx +6 -6
- package/src/useNavigationHelpers.tsx +1 -1
- package/src/useNavigationIndependentTree.tsx +1 -1
- package/src/useNavigationState.tsx +11 -7
- package/src/useOnAction.tsx +10 -10
- package/src/useOnGetState.tsx +5 -3
- package/src/useOnPreventRemove.tsx +3 -3
- package/src/useOnRouteFocus.tsx +10 -12
- package/src/useOptionsGetters.tsx +7 -4
- package/src/usePreventRemove.tsx +1 -1
- package/src/usePreventRemoveContext.tsx +1 -1
- package/src/useRegisterNavigator.tsx +2 -2
- package/src/useRoute.tsx +4 -2
- package/src/useRouteCache.tsx +2 -1
- package/src/useScheduleUpdate.tsx +1 -3
- package/src/useStateForPath.tsx +1 -1
- package/src/utilities.tsx +101 -5
- package/src/validatePathConfig.tsx +1 -0
- package/lib/module/CurrentRenderContext.js +0 -10
- package/lib/module/CurrentRenderContext.js.map +0 -1
- package/lib/module/useCurrentRender.js +0 -19
- package/lib/module/useCurrentRender.js.map +0 -1
- package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
- package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
- package/lib/typescript/src/useCurrentRender.d.ts +0 -14
- package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
- package/src/CurrentRenderContext.tsx +0 -9
- package/src/useCurrentRender.tsx +0 -31
|
@@ -2,14 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { isValidElementType } from 'react-is';
|
|
5
|
+
import { combinePatternParts, getPatternParts } from "./getPatternParts.js";
|
|
5
6
|
import { useRoute } from "./useRoute.js";
|
|
6
7
|
|
|
8
|
+
// If every nested route's params include `undefined`, the nested navigator
|
|
9
|
+
// itself can be omitted. Otherwise, require `NavigatorScreenParams`.
|
|
10
|
+
|
|
11
|
+
// If the screens were constructed from a `Record<K, V>`,
|
|
12
|
+
// the screen value (`T`) may be a union.
|
|
13
|
+
// A naked `T extends ...` conditional would distribute over every screen in the union,
|
|
14
|
+
// creating a large params union per route.
|
|
15
|
+
// Wrapping `T` in a tuple checks the union as a whole instead of distributing,
|
|
16
|
+
// https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types
|
|
17
|
+
|
|
18
|
+
// Unlike `ParamsForScreen`, we want to distribute for `Record<string, Component | StaticNavigation>`
|
|
19
|
+
// This creates union like:
|
|
20
|
+
// `C extends C ? ParamsForScreen<C> : never) | (S extends S ? ParamsForScreen<S> : never)`
|
|
21
|
+
// `= ParamsForScreen<C> | ParamsForScreen<S>`
|
|
22
|
+
|
|
23
|
+
// Only infer params from linking if it's a pattern (i.e., contains ':')
|
|
24
|
+
// or if parse is present for query params.
|
|
25
|
+
// This avoids inferring non-literals like 'string' without parse.
|
|
26
|
+
|
|
7
27
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
28
|
+
* Params type derived from both linking and screen.
|
|
29
|
+
*
|
|
30
|
+
* - Linking has no extractable params (no ':' in path, no `parse`): returns
|
|
31
|
+
* screen params alone.
|
|
32
|
+
* - Linking has params + screen is a nested navigator: intersects path params
|
|
33
|
+
* with the navigator's screen params.
|
|
34
|
+
* - Linking has params + screen is a component without route params: returns
|
|
35
|
+
* path params alone (avoids `LP & undefined = never`).
|
|
36
|
+
* - Linking has params + screen has route params: intersects them.
|
|
12
37
|
*/
|
|
38
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
39
|
+
/**
|
|
40
|
+
* Helper to create a typed `createXScreen` for static configuration.
|
|
41
|
+
*/
|
|
42
|
+
export function createScreenFactory() {
|
|
43
|
+
return config => config;
|
|
44
|
+
}
|
|
13
45
|
|
|
14
46
|
/**
|
|
15
47
|
* Props for a screen component which is rendered by a static navigator.
|
|
@@ -19,7 +51,7 @@ import { useRoute } from "./useRoute.js";
|
|
|
19
51
|
/**
|
|
20
52
|
* Infer the param list from the static navigation config.
|
|
21
53
|
*/
|
|
22
|
-
|
|
54
|
+
|
|
23
55
|
const MemoizedScreen = /*#__PURE__*/React.memo(({
|
|
24
56
|
component
|
|
25
57
|
}) => {
|
|
@@ -48,13 +80,13 @@ const getItemsFromScreens = (Screen, screens) => {
|
|
|
48
80
|
component = screen;
|
|
49
81
|
} else if ('config' in screen) {
|
|
50
82
|
isNavigator = true;
|
|
51
|
-
component =
|
|
83
|
+
component = screen.getComponent();
|
|
52
84
|
}
|
|
53
85
|
} else if (isValidElementType(item)) {
|
|
54
86
|
component = item;
|
|
55
87
|
} else if ('config' in item) {
|
|
56
88
|
isNavigator = true;
|
|
57
|
-
component =
|
|
89
|
+
component = item.getComponent();
|
|
58
90
|
}
|
|
59
91
|
if (component == null) {
|
|
60
92
|
throw new Error(`Couldn't find a 'screen' property for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);
|
|
@@ -83,7 +115,7 @@ const getItemsFromScreens = (Screen, screens) => {
|
|
|
83
115
|
* @param displayName Name of the component to be displayed in React DevTools.
|
|
84
116
|
* @returns A component which renders the navigator.
|
|
85
117
|
*/
|
|
86
|
-
export function
|
|
118
|
+
export function createComponentForStaticConfig(tree, displayName) {
|
|
87
119
|
const {
|
|
88
120
|
Navigator,
|
|
89
121
|
Group,
|
|
@@ -128,16 +160,73 @@ export function createComponentForStaticNavigation(tree, displayName) {
|
|
|
128
160
|
}));
|
|
129
161
|
}
|
|
130
162
|
}
|
|
131
|
-
|
|
163
|
+
if (items.length === 0) {
|
|
164
|
+
throw new Error("Couldn't find any screens in the 'screens' or 'groups' property. Make sure to define at least one screen in the configuration.");
|
|
165
|
+
}
|
|
166
|
+
const NavigatorComponent = ({
|
|
167
|
+
children: _,
|
|
168
|
+
...props
|
|
169
|
+
}) => {
|
|
132
170
|
const children = items.map(item => item());
|
|
171
|
+
const screenOptions = typeof props.screenOptions === 'function' || typeof rest.screenOptions === 'function' ? options => ({
|
|
172
|
+
...(typeof rest.screenOptions === 'function' ? rest.screenOptions(options) : rest.screenOptions),
|
|
173
|
+
...(typeof props.screenOptions === 'function' ? props.screenOptions(options) : props.screenOptions)
|
|
174
|
+
}) : {
|
|
175
|
+
...rest.screenOptions,
|
|
176
|
+
...props.screenOptions
|
|
177
|
+
};
|
|
178
|
+
const screenListeners = typeof props.screenListeners === 'function' || typeof rest.screenListeners === 'function' ? options => ({
|
|
179
|
+
...(typeof rest.screenListeners === 'function' ? rest.screenListeners(options) : rest.screenListeners),
|
|
180
|
+
...(typeof props.screenListeners === 'function' ? props.screenListeners(options) : props.screenListeners)
|
|
181
|
+
}) : {
|
|
182
|
+
...rest.screenListeners,
|
|
183
|
+
...props.screenListeners
|
|
184
|
+
};
|
|
133
185
|
return /*#__PURE__*/_jsx(Navigator, {
|
|
134
186
|
...rest,
|
|
187
|
+
...props,
|
|
188
|
+
screenOptions: screenOptions,
|
|
189
|
+
screenListeners: screenListeners,
|
|
135
190
|
children: children
|
|
136
191
|
});
|
|
137
192
|
};
|
|
138
193
|
NavigatorComponent.displayName = displayName;
|
|
139
194
|
return NavigatorComponent;
|
|
140
195
|
}
|
|
196
|
+
// Mark screens that resolve to the same pattern and same component or navigator
|
|
197
|
+
const markSharedPathConfigs = (screens, sources, blocked) => {
|
|
198
|
+
const candidates = new Map();
|
|
199
|
+
const collect = (screens, parentParts, disabled) => {
|
|
200
|
+
for (const config of Object.values(screens)) {
|
|
201
|
+
if (config == null || typeof config === 'string') {
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
const parts = typeof config.path === 'string' ? combinePatternParts(parentParts, getPatternParts(config.path), config.exact) : parentParts;
|
|
205
|
+
if (sources.has(config) && typeof config.path === 'string') {
|
|
206
|
+
if (disabled) {
|
|
207
|
+
blocked.add(config);
|
|
208
|
+
}
|
|
209
|
+
const pattern = parts.map(part => part.segment).join('/');
|
|
210
|
+
const entries = candidates.get(pattern) ?? [];
|
|
211
|
+
entries.push(config);
|
|
212
|
+
candidates.set(pattern, entries);
|
|
213
|
+
}
|
|
214
|
+
if (config.screens) {
|
|
215
|
+
collect(config.screens, parts, disabled || config.shared === false);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
collect(screens, [], false);
|
|
220
|
+
for (const entries of candidates.values()) {
|
|
221
|
+
for (const entry of entries) {
|
|
222
|
+
const source = sources.get(entry);
|
|
223
|
+
if (entry.shared === undefined && !blocked.has(entry) && entries.some(candidate => candidate !== entry && !blocked.has(candidate) && sources.get(candidate) === source)) {
|
|
224
|
+
entry.shared = true;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
|
|
141
230
|
/**
|
|
142
231
|
* Create a path config object from a static navigation config for deep linking.
|
|
143
232
|
*
|
|
@@ -160,8 +249,21 @@ export function createComponentForStaticNavigation(tree, displayName) {
|
|
|
160
249
|
export function createPathConfigForStaticNavigation(tree, options, auto) {
|
|
161
250
|
let initialScreenHasPath = false;
|
|
162
251
|
let initialScreenConfig;
|
|
163
|
-
|
|
164
|
-
|
|
252
|
+
let hasEmptyPath = false;
|
|
253
|
+
const blocked = new WeakSet();
|
|
254
|
+
const sources = new WeakMap();
|
|
255
|
+
const createPathConfigForTree = (t, o, skipInitialDetection, allowAutoEmptyPath) => {
|
|
256
|
+
const initialRouteName = o?.initialRouteName ?? t.config.initialRouteName;
|
|
257
|
+
if (initialRouteName != null) {
|
|
258
|
+
const routeNames = new Set(Object.keys(t.config.screens ?? {}));
|
|
259
|
+
for (const group of Object.values(t.config.groups ?? {})) {
|
|
260
|
+
Object.keys(group.screens).forEach(name => routeNames.add(name));
|
|
261
|
+
}
|
|
262
|
+
if (!routeNames.has(initialRouteName)) {
|
|
263
|
+
throw new Error(`Couldn't find a screen named '${initialRouteName}' to use as 'initialRouteName'.`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const createPathConfigForScreens = (screens, initialRouteName) => {
|
|
165
267
|
return Object.fromEntries(Object.entries(screens)
|
|
166
268
|
// Re-order to move the initial route to the front
|
|
167
269
|
// This way we can detect the initial route correctly
|
|
@@ -175,61 +277,75 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
|
|
|
175
277
|
return 0;
|
|
176
278
|
}).map(([key, item]) => {
|
|
177
279
|
const screenConfig = {};
|
|
178
|
-
|
|
179
|
-
const normalizePath = path =>
|
|
180
|
-
|
|
181
|
-
.replace(/\/$/, ''); // Remove extra trailing slash
|
|
182
|
-
};
|
|
183
|
-
if ('linking' in item) {
|
|
280
|
+
sources.set(screenConfig, typeof item === 'object' && 'screen' in item ? item.screen : item);
|
|
281
|
+
const normalizePath = path => path.replace(/^\/+|\/+$/g, '');
|
|
282
|
+
if ('linking' in item && item.linking !== undefined) {
|
|
184
283
|
if (typeof item.linking === 'string') {
|
|
185
284
|
screenConfig.path = item.linking;
|
|
186
|
-
} else {
|
|
187
|
-
Object.assign(screenConfig,
|
|
285
|
+
} else if (item.linking != null && typeof item.linking === 'object') {
|
|
286
|
+
Object.assign(screenConfig, {
|
|
287
|
+
...item.linking
|
|
288
|
+
});
|
|
188
289
|
}
|
|
189
290
|
}
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
screenConfig.parse = {
|
|
193
|
-
...groupLinking.parse,
|
|
194
|
-
...screenConfig.parse
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
if (groupLinking?.stringify != null) {
|
|
198
|
-
screenConfig.stringify = {
|
|
199
|
-
...groupLinking.stringify,
|
|
200
|
-
...screenConfig.stringify
|
|
201
|
-
};
|
|
202
|
-
}
|
|
291
|
+
if (screenConfig.exact && screenConfig.path == null) {
|
|
292
|
+
throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");
|
|
203
293
|
}
|
|
204
294
|
if (typeof screenConfig.path === 'string') {
|
|
205
295
|
screenConfig.path = normalizePath(screenConfig.path);
|
|
206
296
|
}
|
|
297
|
+
if (screenConfig.alias != null) {
|
|
298
|
+
screenConfig.alias = screenConfig.alias.map(alias => {
|
|
299
|
+
if (typeof alias === 'string') {
|
|
300
|
+
return normalizePath(alias);
|
|
301
|
+
}
|
|
302
|
+
return {
|
|
303
|
+
...alias,
|
|
304
|
+
path: normalizePath(alias.path)
|
|
305
|
+
};
|
|
306
|
+
});
|
|
307
|
+
}
|
|
207
308
|
let screens;
|
|
309
|
+
const hasExplicitScreens = 'screens' in screenConfig && screenConfig.screens != null;
|
|
310
|
+
const hasDisabledLinking = 'linking' in item && item.linking === null;
|
|
311
|
+
const childOptions = 'initialRouteName' in screenConfig && typeof screenConfig.initialRouteName === 'string' ? {
|
|
312
|
+
initialRouteName: screenConfig.initialRouteName
|
|
313
|
+
} : undefined;
|
|
314
|
+
if (hasExplicitScreens && childOptions != null && !Object.keys(screenConfig.screens ?? {}).includes(childOptions.initialRouteName)) {
|
|
315
|
+
throw new Error(`Couldn't find a screen named '${childOptions.initialRouteName}' to use as 'initialRouteName'.`);
|
|
316
|
+
}
|
|
208
317
|
const skipInitialDetectionInChild = skipInitialDetection || screenConfig.path != null && screenConfig.path !== '';
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
318
|
+
const allowAutoEmptyPathInChild = allowAutoEmptyPath && (initialRouteName == null || key === initialRouteName);
|
|
319
|
+
if (!hasExplicitScreens && !hasDisabledLinking && 'config' in item) {
|
|
320
|
+
screens = createPathConfigForTree(item, childOptions, skipInitialDetectionInChild, allowAutoEmptyPathInChild);
|
|
321
|
+
} else if (!hasExplicitScreens && !hasDisabledLinking && 'screen' in item && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {
|
|
322
|
+
screens = createPathConfigForTree(item.screen, childOptions, skipInitialDetectionInChild, allowAutoEmptyPathInChild);
|
|
213
323
|
}
|
|
214
324
|
if (screens) {
|
|
215
|
-
// @ts-expect-error - we can't type this properly
|
|
216
325
|
screenConfig.screens = screens;
|
|
217
326
|
}
|
|
218
327
|
if (auto && !('screens' in screenConfig && screenConfig.screens) &&
|
|
219
|
-
// Skip generating path for screens that specify linking config as `
|
|
220
|
-
!
|
|
328
|
+
// Skip generating path for screens that specify linking config as `null` explicitly
|
|
329
|
+
!hasDisabledLinking) {
|
|
221
330
|
if (screenConfig.path != null) {
|
|
222
331
|
if (!skipInitialDetection) {
|
|
223
|
-
if (
|
|
224
|
-
initialScreenHasPath = true;
|
|
225
|
-
} else if (screenConfig.path === '') {
|
|
332
|
+
if (screenConfig.path === '') {
|
|
226
333
|
// We encounter a leaf screen with empty path,
|
|
227
334
|
// Clear the initial screen config as it's not needed anymore
|
|
228
335
|
initialScreenConfig = undefined;
|
|
336
|
+
hasEmptyPath = true;
|
|
337
|
+
if (allowAutoEmptyPath && key === initialRouteName) {
|
|
338
|
+
initialScreenHasPath = true;
|
|
339
|
+
}
|
|
340
|
+
} else if (allowAutoEmptyPath && key === initialRouteName &&
|
|
341
|
+
// Keep an already discovered fallback unless the initial route
|
|
342
|
+
// explicitly uses an empty path.
|
|
343
|
+
initialScreenConfig == null) {
|
|
344
|
+
initialScreenHasPath = true;
|
|
229
345
|
}
|
|
230
346
|
}
|
|
231
347
|
} else {
|
|
232
|
-
if (!
|
|
348
|
+
if (!skipInitialDetection && allowAutoEmptyPath && (initialRouteName == null || key === initialRouteName) && !hasEmptyPath && initialScreenConfig == null) {
|
|
233
349
|
initialScreenConfig = screenConfig;
|
|
234
350
|
}
|
|
235
351
|
screenConfig.path = normalizePath(key.replace(/([A-Z]+)/g, '-$1').replace(/^-/, '').toLowerCase());
|
|
@@ -244,11 +360,11 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
|
|
|
244
360
|
// So we add the screens and groups in the same order as they are defined
|
|
245
361
|
for (const key in t.config) {
|
|
246
362
|
if (key === 'screens' && t.config.screens) {
|
|
247
|
-
Object.assign(screens, createPathConfigForScreens(t.config.screens,
|
|
363
|
+
Object.assign(screens, createPathConfigForScreens(t.config.screens, o?.initialRouteName ?? t.config.initialRouteName));
|
|
248
364
|
}
|
|
249
365
|
if (key === 'groups' && t.config.groups) {
|
|
250
366
|
Object.entries(t.config.groups).forEach(([, group]) => {
|
|
251
|
-
Object.assign(screens, createPathConfigForScreens(group.screens,
|
|
367
|
+
Object.assign(screens, createPathConfigForScreens(group.screens, o?.initialRouteName ?? t.config.initialRouteName));
|
|
252
368
|
});
|
|
253
369
|
}
|
|
254
370
|
}
|
|
@@ -257,10 +373,14 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
|
|
|
257
373
|
}
|
|
258
374
|
return screens;
|
|
259
375
|
};
|
|
260
|
-
const screens = createPathConfigForTree(tree, options, false);
|
|
376
|
+
const screens = createPathConfigForTree(tree, options, false, true);
|
|
261
377
|
if (auto && initialScreenConfig && !initialScreenHasPath) {
|
|
262
378
|
initialScreenConfig.path = '';
|
|
263
379
|
}
|
|
380
|
+
if (!screens) {
|
|
381
|
+
return undefined;
|
|
382
|
+
}
|
|
383
|
+
markSharedPathConfigs(screens, sources, blocked);
|
|
264
384
|
return screens;
|
|
265
385
|
}
|
|
266
386
|
//# sourceMappingURL=StaticNavigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","isValidElementType","useRoute","jsx","_jsx","MemoizedScreen","memo","component","route","children","createElement","displayName","getItemsFromScreens","Screen","screens","Object","entries","map","name","item","props","useIf","isNavigator","screen","if","_if","rest","createComponentForStaticNavigation","Error","element","shouldRender","tree","Navigator","Group","config","groups","items","key","push","group","groupItems","navigationKey","NavigatorComponent","createPathConfigForStaticNavigation","options","auto","initialScreenHasPath","initialScreenConfig","createPathConfigForTree","t","o","skipInitialDetection","createPathConfigForScreens","groupLinking","initialRouteName","fromEntries","sort","a","b","screenConfig","groupPath","path","normalizePath","replace","linking","assign","parse","stringify","skipInitialDetectionInChild","undefined","toLowerCase","filter","keys","length","forEach"],"sourceRoot":"../../src","sources":["StaticNavigation.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","isValidElementType","combinePatternParts","getPatternParts","useRoute","jsx","_jsx","createScreenFactory","config","MemoizedScreen","memo","component","route","children","createElement","displayName","getItemsFromScreens","Screen","screens","Object","entries","map","name","item","props","useIf","isNavigator","screen","if","_if","rest","getComponent","Error","element","shouldRender","createComponentForStaticConfig","tree","Navigator","Group","groups","items","key","push","group","groupItems","navigationKey","length","NavigatorComponent","_","screenOptions","options","screenListeners","markSharedPathConfigs","sources","blocked","candidates","Map","collect","parentParts","disabled","values","parts","path","exact","has","add","pattern","part","segment","join","get","set","shared","entry","source","undefined","some","candidate","createPathConfigForStaticNavigation","auto","initialScreenHasPath","initialScreenConfig","hasEmptyPath","WeakSet","WeakMap","createPathConfigForTree","t","o","skipInitialDetection","allowAutoEmptyPath","initialRouteName","routeNames","Set","keys","forEach","createPathConfigForScreens","fromEntries","sort","a","b","screenConfig","normalizePath","replace","linking","assign","alias","hasExplicitScreens","hasDisabledLinking","childOptions","includes","skipInitialDetectionInChild","allowAutoEmptyPathInChild","toLowerCase","filter"],"sourceRoot":"../../src","sources":["StaticNavigation.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ const checkSerializableWithoutCircularReference = (o, seen, location) => {
|
|
|
9
9
|
if (Object.prototype.toString.call(o) !== '[object Object]' && !Array.isArray(o)) {
|
|
10
10
|
return {
|
|
11
11
|
serializable: false,
|
|
12
|
-
location,
|
|
12
|
+
location: location.slice(),
|
|
13
13
|
reason: typeof o === 'function' ? 'Function' : String(o)
|
|
14
14
|
};
|
|
15
15
|
}
|
|
@@ -17,25 +17,32 @@ const checkSerializableWithoutCircularReference = (o, seen, location) => {
|
|
|
17
17
|
return {
|
|
18
18
|
serializable: false,
|
|
19
19
|
reason: 'Circular reference',
|
|
20
|
-
location
|
|
20
|
+
location: location.slice()
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
seen.add(o);
|
|
24
24
|
if (Array.isArray(o)) {
|
|
25
25
|
for (let i = 0; i < o.length; i++) {
|
|
26
|
-
|
|
26
|
+
location.push(i);
|
|
27
|
+
const childResult = checkSerializableWithoutCircularReference(o[i], seen, location);
|
|
28
|
+
location.pop();
|
|
27
29
|
if (!childResult.serializable) {
|
|
30
|
+
seen.delete(o);
|
|
28
31
|
return childResult;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
} else {
|
|
32
35
|
for (const key in o) {
|
|
33
|
-
|
|
36
|
+
location.push(key);
|
|
37
|
+
const childResult = checkSerializableWithoutCircularReference(o[key], seen, location);
|
|
38
|
+
location.pop();
|
|
34
39
|
if (!childResult.serializable) {
|
|
40
|
+
seen.delete(o);
|
|
35
41
|
return childResult;
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
44
|
}
|
|
45
|
+
seen.delete(o);
|
|
39
46
|
return {
|
|
40
47
|
serializable: true
|
|
41
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","reason","String","has","add","i","length","childResult","
|
|
1
|
+
{"version":3,"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","slice","reason","String","has","add","i","length","push","childResult","pop","delete","key","checkSerializable","Set"],"sourceRoot":"../../src","sources":["checkSerializable.tsx"],"mappings":";;AAQA,MAAMA,yCAAyC,GAAGA,CAChDC,CAAyB,EACzBC,IAAc,EACdC,QAA6B,KAClB;EACX,IACEF,CAAC,KAAKG,SAAS,IACfH,CAAC,KAAK,IAAI,IACV,OAAOA,CAAC,KAAK,SAAS,IACtB,OAAOA,CAAC,KAAK,QAAQ,IACrB,OAAOA,CAAC,KAAK,QAAQ,EACrB;IACA,OAAO;MAAEI,YAAY,EAAE;IAAK,CAAC;EAC/B;EAEA,IACEC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACR,CAAC,CAAC,KAAK,iBAAiB,IACvD,CAACS,KAAK,CAACC,OAAO,CAACV,CAAC,CAAC,EACjB;IACA,OAAO;MACLI,YAAY,EAAE,KAAK;MACnBF,QAAQ,EAAEA,QAAQ,CAACS,KAAK,CAAC,CAAC;MAC1BC,MAAM,EAAE,OAAOZ,CAAC,KAAK,UAAU,GAAG,UAAU,GAAGa,MAAM,CAACb,CAAC;IACzD,CAAC;EACH;EAEA,IAAIC,IAAI,CAACa,GAAG,CAACd,CAAC,CAAC,EAAE;IACf,OAAO;MACLI,YAAY,EAAE,KAAK;MACnBQ,MAAM,EAAE,oBAAoB;MAC5BV,QAAQ,EAAEA,QAAQ,CAACS,KAAK,CAAC;IAC3B,CAAC;EACH;EAEAV,IAAI,CAACc,GAAG,CAACf,CAAC,CAAC;EAEX,IAAIS,KAAK,CAACC,OAAO,CAACV,CAAC,CAAC,EAAE;IACpB,KAAK,IAAIgB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,CAAC,CAACiB,MAAM,EAAED,CAAC,EAAE,EAAE;MACjCd,QAAQ,CAACgB,IAAI,CAACF,CAAC,CAAC;MAChB,MAAMG,WAAW,GAAGpB,yCAAyC,CAC3DC,CAAC,CAACgB,CAAC,CAAC,EACJf,IAAI,EACJC,QACF,CAAC;MACDA,QAAQ,CAACkB,GAAG,CAAC,CAAC;MAEd,IAAI,CAACD,WAAW,CAACf,YAAY,EAAE;QAC7BH,IAAI,CAACoB,MAAM,CAACrB,CAAC,CAAC;QACd,OAAOmB,WAAW;MACpB;IACF;EACF,CAAC,MAAM;IACL,KAAK,MAAMG,GAAG,IAAItB,CAAC,EAAE;MACnBE,QAAQ,CAACgB,IAAI,CAACI,GAAG,CAAC;MAClB,MAAMH,WAAW,GAAGpB,yCAAyC,CAC3DC,CAAC,CAACsB,GAAG,CAAC,EACNrB,IAAI,EACJC,QACF,CAAC;MACDA,QAAQ,CAACkB,GAAG,CAAC,CAAC;MAEd,IAAI,CAACD,WAAW,CAACf,YAAY,EAAE;QAC7BH,IAAI,CAACoB,MAAM,CAACrB,CAAC,CAAC;QACd,OAAOmB,WAAW;MACpB;IACF;EACF;EAEAlB,IAAI,CAACoB,MAAM,CAACrB,CAAC,CAAC;EAEd,OAAO;IAAEI,YAAY,EAAE;EAAK,CAAC;AAC/B,CAAC;AAED,OAAO,SAASmB,iBAAiBA,CAACvB,CAAyB,EAAE;EAC3D,OAAOD,yCAAyC,CAACC,CAAC,EAAE,IAAIwB,GAAG,CAAM,CAAC,EAAE,EAAE,CAAC;AACzE","ignoreList":[]}
|
|
@@ -1,23 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import * as React from 'react';
|
|
3
4
|
import { Group } from "./Group.js";
|
|
4
5
|
import { Screen } from "./Screen.js";
|
|
5
|
-
|
|
6
|
+
import { createComponentForStaticConfig } from "./StaticNavigation.js";
|
|
6
7
|
/**
|
|
7
|
-
* Higher order
|
|
8
|
-
*
|
|
8
|
+
* Higher order function to create a navigator factory
|
|
9
|
+
* A navigator factory creates a navigator:
|
|
10
|
+
* - `Navigator` and `Screen` pairs for dynamic configuration
|
|
11
|
+
* - Static navigator object for static configuration
|
|
9
12
|
*
|
|
10
13
|
* @param Navigator The navigator component to wrap.
|
|
11
|
-
* @returns Factory method to create a
|
|
14
|
+
* @returns Factory method to create a navigator
|
|
12
15
|
*/
|
|
13
16
|
export function createNavigatorFactory(Navigator) {
|
|
17
|
+
const displayName = Navigator.displayName ?? Navigator.name ?? 'Navigator';
|
|
14
18
|
function createNavigator(config) {
|
|
15
19
|
if (config != null) {
|
|
16
|
-
|
|
20
|
+
const NavigatorComponent = createComponentForStaticConfig({
|
|
17
21
|
Navigator,
|
|
18
22
|
Screen,
|
|
19
23
|
Group,
|
|
20
24
|
config
|
|
25
|
+
}, displayName);
|
|
26
|
+
return {
|
|
27
|
+
config,
|
|
28
|
+
with(DecoratorComponent) {
|
|
29
|
+
const WithComponent = () => {
|
|
30
|
+
return /*#__PURE__*/React.createElement(DecoratorComponent, {
|
|
31
|
+
Navigator: NavigatorComponent
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
WithComponent.displayName = `${displayName}With`;
|
|
35
|
+
return {
|
|
36
|
+
config,
|
|
37
|
+
getComponent: () => WithComponent
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
getComponent() {
|
|
41
|
+
return NavigatorComponent;
|
|
42
|
+
}
|
|
21
43
|
};
|
|
22
44
|
}
|
|
23
45
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Group","Screen","createNavigatorFactory","Navigator","createNavigator","config"],"sourceRoot":"../../src","sources":["createNavigatorFactory.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["React","Group","Screen","createComponentForStaticConfig","createNavigatorFactory","Navigator","displayName","name","createNavigator","config","NavigatorComponent","with","DecoratorComponent","WithComponent","createElement","getComponent"],"sourceRoot":"../../src","sources":["createNavigatorFactory.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,MAAM,QAAQ,aAAU;AACjC,SACEC,8BAA8B,QAGzB,uBAAoB;AAqC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,SAAmC,EACH;EAChC,MAAMC,WAAW,GAAGD,SAAS,CAACC,WAAW,IAAID,SAAS,CAACE,IAAI,IAAI,WAAW;EAE1E,SAASC,eAAeA,CAACC,MAAY,EAAO;IAC1C,IAAIA,MAAM,IAAI,IAAI,EAAE;MAClB,MAAMC,kBAAkB,GAAGP,8BAA8B,CACvD;QACEE,SAAS;QACTH,MAAM;QACND,KAAK;QACLQ;MACF,CAAC,EACDH,WACF,CAAC;MAED,OAAO;QACLG,MAAM;QACNE,IAAIA,CACFC,kBAEE,EACF;UACA,MAAMC,aAAa,GAAGA,CAAA,KAAM;YAC1B,oBAAOb,KAAK,CAACc,aAAa,CAACF,kBAAkB,EAAE;cAC7CP,SAAS,EAAEK;YACb,CAAC,CAAC;UACJ,CAAC;UAEDG,aAAa,CAACP,WAAW,GAAG,GAAGA,WAAW,MAAM;UAEhD,OAAO;YACLG,MAAM;YACNM,YAAY,EAAEA,CAAA,KAAMF;UACtB,CAAC;QACH,CAAC;QACDE,YAAYA,CAAA,EAAG;UACb,OAAOL,kBAAkB;QAC3B;MACF,CAAC;IACH;IAEA,OAAO;MACLL,SAAS;MACTH,MAAM;MACND;IACF,CAAC;EACH;EAEA,OAAOO,eAAe;AACxB","ignoreList":[]}
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
export function findFocusedRoute(state) {
|
|
4
4
|
let current = state;
|
|
5
|
-
while (current
|
|
6
|
-
|
|
5
|
+
while (current != null) {
|
|
6
|
+
const route = current.routes[current.index ?? 0];
|
|
7
|
+
if (route?.state == null) {
|
|
8
|
+
return route;
|
|
9
|
+
}
|
|
10
|
+
current = route.state;
|
|
7
11
|
}
|
|
8
|
-
|
|
9
|
-
return route;
|
|
12
|
+
return undefined;
|
|
10
13
|
}
|
|
11
14
|
//# sourceMappingURL=findFocusedRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["findFocusedRoute","state","current","routes","index","
|
|
1
|
+
{"version":3,"names":["findFocusedRoute","state","current","route","routes","index","undefined"],"sourceRoot":"../../src","sources":["findFocusedRoute.tsx"],"mappings":";;AAWA,OAAO,SAASA,gBAAgBA,CAACC,KAAmB,EAAU;EAC5D,IAAIC,OAAiC,GAAGD,KAAK;EAE7C,OAAOC,OAAO,IAAI,IAAI,EAAE;IACtB,MAAMC,KAAiD,GACrDD,OAAO,CAACE,MAAM,CAACF,OAAO,CAACG,KAAK,IAAI,CAAC,CAAC;IAEpC,IAAIF,KAAK,EAAEF,KAAK,IAAI,IAAI,EAAE;MACxB,OAAOE,KAAK;IACd;IAEAD,OAAO,GAAGC,KAAK,CAACF,KAAK;EACvB;EAEA,OAAOK,SAAS;AAClB","ignoreList":[]}
|
|
@@ -1,29 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
// Cache the normalized config across calls for the same `options` reference,
|
|
4
|
+
// so we don't re-walk the config tree on every action conversion.
|
|
5
|
+
const cachedNormalizedConfig = new WeakMap();
|
|
3
6
|
export function getActionFromState(state, options) {
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
let normalizedConfig;
|
|
8
|
+
if (options) {
|
|
9
|
+
const cached = cachedNormalizedConfig.get(options);
|
|
10
|
+
if (cached) {
|
|
11
|
+
normalizedConfig = cached;
|
|
12
|
+
} else {
|
|
13
|
+
normalizedConfig = createNormalizedConfigItem(options);
|
|
14
|
+
cachedNormalizedConfig.set(options, normalizedConfig);
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
normalizedConfig = {};
|
|
18
|
+
}
|
|
6
19
|
const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
|
|
7
20
|
if (routes.length === 0) {
|
|
8
21
|
return undefined;
|
|
9
22
|
}
|
|
10
|
-
|
|
23
|
+
const firstRoute = routes[0];
|
|
24
|
+
if (firstRoute == null) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const secondRoute = routes[1];
|
|
28
|
+
if (!(routes.length === 1 && firstRoute.key == null || routes.length === 2 && firstRoute.key == null && firstRoute.name === normalizedConfig?.initialRouteName && secondRoute?.key == null)) {
|
|
11
29
|
return {
|
|
12
30
|
type: 'RESET',
|
|
13
31
|
payload: state
|
|
14
32
|
};
|
|
15
33
|
}
|
|
16
34
|
const route = state.routes[state.index ?? state.routes.length - 1];
|
|
17
|
-
|
|
18
|
-
|
|
35
|
+
if (route == null) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
let current = route.state;
|
|
39
|
+
let config = normalizedConfig?.screens?.[route.name];
|
|
19
40
|
let params = {
|
|
20
41
|
...route.params
|
|
21
42
|
};
|
|
22
|
-
const payload =
|
|
43
|
+
const payload = {
|
|
23
44
|
name: route.name,
|
|
24
45
|
path: route.path,
|
|
25
46
|
params
|
|
26
|
-
}
|
|
47
|
+
};
|
|
27
48
|
|
|
28
49
|
// If the screen contains a navigator, pop other screens to navigate to it
|
|
29
50
|
// This avoid pushing multiple instances of navigators onto a stack
|
|
@@ -39,7 +60,7 @@ export function getActionFromState(state, options) {
|
|
|
39
60
|
// There are 2 ways we can detect if a screen contains a navigator:
|
|
40
61
|
// - The route contains nested state in `route.state`
|
|
41
62
|
// - Nested screens are defined in the config
|
|
42
|
-
if (
|
|
63
|
+
if (config?.screens && Object.keys(config.screens).length) {
|
|
43
64
|
payload.pop = true;
|
|
44
65
|
}
|
|
45
66
|
while (current) {
|
|
@@ -48,6 +69,14 @@ export function getActionFromState(state, options) {
|
|
|
48
69
|
}
|
|
49
70
|
const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
|
|
50
71
|
const route = routes[routes.length - 1];
|
|
72
|
+
if (route == null) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const firstRoute = routes[0];
|
|
76
|
+
if (firstRoute == null) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const secondRoute = routes[1];
|
|
51
80
|
|
|
52
81
|
// Explicitly set to override existing value when merging params
|
|
53
82
|
Object.assign(params, {
|
|
@@ -56,10 +85,10 @@ export function getActionFromState(state, options) {
|
|
|
56
85
|
params: undefined,
|
|
57
86
|
state: undefined
|
|
58
87
|
});
|
|
59
|
-
if (routes.length === 1 &&
|
|
88
|
+
if (routes.length === 1 && firstRoute.key == null) {
|
|
60
89
|
params.initial = true;
|
|
61
90
|
params.screen = route.name;
|
|
62
|
-
} else if (routes.length === 2 &&
|
|
91
|
+
} else if (routes.length === 2 && firstRoute.key == null && firstRoute.name === config?.initialRouteName && secondRoute?.key == null) {
|
|
63
92
|
params.initial = false;
|
|
64
93
|
params.screen = route.name;
|
|
65
94
|
} else {
|
|
@@ -82,12 +111,9 @@ export function getActionFromState(state, options) {
|
|
|
82
111
|
params.pop = true;
|
|
83
112
|
}
|
|
84
113
|
}
|
|
85
|
-
if (payload
|
|
114
|
+
if (payload.params.screen || payload.params.state) {
|
|
86
115
|
payload.pop = true;
|
|
87
116
|
}
|
|
88
|
-
if (!payload) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
117
|
|
|
92
118
|
// Try to construct payload for a `NAVIGATE` action from the state
|
|
93
119
|
// This lets us preserve the navigation state and not lose it
|