@react-navigation/core 6.0.2
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/LICENSE +21 -0
- package/README.md +38 -0
- package/lib/commonjs/BaseNavigationContainer.js +393 -0
- package/lib/commonjs/BaseNavigationContainer.js.map +1 -0
- package/lib/commonjs/CurrentRenderContext.js +21 -0
- package/lib/commonjs/CurrentRenderContext.js.map +1 -0
- package/lib/commonjs/EnsureSingleNavigator.js +53 -0
- package/lib/commonjs/EnsureSingleNavigator.js.map +1 -0
- package/lib/commonjs/Group.js +15 -0
- package/lib/commonjs/Group.js.map +1 -0
- package/lib/commonjs/NavigationBuilderContext.js +23 -0
- package/lib/commonjs/NavigationBuilderContext.js.map +1 -0
- package/lib/commonjs/NavigationContainerRefContext.js +20 -0
- package/lib/commonjs/NavigationContainerRefContext.js.map +1 -0
- package/lib/commonjs/NavigationContext.js +20 -0
- package/lib/commonjs/NavigationContext.js.map +1 -0
- package/lib/commonjs/NavigationHelpersContext.js +21 -0
- package/lib/commonjs/NavigationHelpersContext.js.map +1 -0
- package/lib/commonjs/NavigationRouteContext.js +20 -0
- package/lib/commonjs/NavigationRouteContext.js.map +1 -0
- package/lib/commonjs/NavigationStateContext.js +42 -0
- package/lib/commonjs/NavigationStateContext.js.map +1 -0
- package/lib/commonjs/SceneView.js +97 -0
- package/lib/commonjs/SceneView.js.map +1 -0
- package/lib/commonjs/Screen.js +15 -0
- package/lib/commonjs/Screen.js.map +1 -0
- package/lib/commonjs/StaticContainer.js +43 -0
- package/lib/commonjs/StaticContainer.js.map +1 -0
- package/lib/commonjs/UnhandledActionContext.js +17 -0
- package/lib/commonjs/UnhandledActionContext.js.map +1 -0
- package/lib/commonjs/checkDuplicateRouteNames.js +31 -0
- package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -0
- package/lib/commonjs/checkSerializable.js +59 -0
- package/lib/commonjs/checkSerializable.js.map +1 -0
- package/lib/commonjs/createNavigationContainerRef.js +82 -0
- package/lib/commonjs/createNavigationContainerRef.js.map +1 -0
- package/lib/commonjs/createNavigatorFactory.js +34 -0
- package/lib/commonjs/createNavigatorFactory.js.map +1 -0
- package/lib/commonjs/findFocusedRoute.js +22 -0
- package/lib/commonjs/findFocusedRoute.js.map +1 -0
- package/lib/commonjs/fromEntries.js +19 -0
- package/lib/commonjs/fromEntries.js.map +1 -0
- package/lib/commonjs/getActionFromState.js +99 -0
- package/lib/commonjs/getActionFromState.js.map +1 -0
- package/lib/commonjs/getFocusedRouteNameFromRoute.js +23 -0
- package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -0
- package/lib/commonjs/getPathFromState.js +238 -0
- package/lib/commonjs/getPathFromState.js.map +1 -0
- package/lib/commonjs/getStateFromPath.js +450 -0
- package/lib/commonjs/getStateFromPath.js.map +1 -0
- package/lib/commonjs/index.js +227 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/isArrayEqual.js +15 -0
- package/lib/commonjs/isArrayEqual.js.map +1 -0
- package/lib/commonjs/types.js +18 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/useChildListeners.js +38 -0
- package/lib/commonjs/useChildListeners.js.map +1 -0
- package/lib/commonjs/useComponent.js +36 -0
- package/lib/commonjs/useComponent.js.map +1 -0
- package/lib/commonjs/useCurrentRender.js +33 -0
- package/lib/commonjs/useCurrentRender.js.map +1 -0
- package/lib/commonjs/useDescriptors.js +141 -0
- package/lib/commonjs/useDescriptors.js.map +1 -0
- package/lib/commonjs/useEventEmitter.js +118 -0
- package/lib/commonjs/useEventEmitter.js.map +1 -0
- package/lib/commonjs/useFocusEffect.js +97 -0
- package/lib/commonjs/useFocusEffect.js.map +1 -0
- package/lib/commonjs/useFocusEvents.js +77 -0
- package/lib/commonjs/useFocusEvents.js.map +1 -0
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js +57 -0
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -0
- package/lib/commonjs/useIsFocused.js +47 -0
- package/lib/commonjs/useIsFocused.js.map +1 -0
- package/lib/commonjs/useKeyedChildListeners.js +35 -0
- package/lib/commonjs/useKeyedChildListeners.js.map +1 -0
- package/lib/commonjs/useNavigation.js +36 -0
- package/lib/commonjs/useNavigation.js.map +1 -0
- package/lib/commonjs/useNavigationBuilder.js +480 -0
- package/lib/commonjs/useNavigationBuilder.js.map +1 -0
- package/lib/commonjs/useNavigationCache.js +122 -0
- package/lib/commonjs/useNavigationCache.js.map +1 -0
- package/lib/commonjs/useNavigationContainerRef.js +27 -0
- package/lib/commonjs/useNavigationContainerRef.js.map +1 -0
- package/lib/commonjs/useNavigationHelpers.js +77 -0
- package/lib/commonjs/useNavigationHelpers.js.map +1 -0
- package/lib/commonjs/useNavigationState.js +41 -0
- package/lib/commonjs/useNavigationState.js.map +1 -0
- package/lib/commonjs/useOnAction.js +118 -0
- package/lib/commonjs/useOnAction.js.map +1 -0
- package/lib/commonjs/useOnGetState.js +60 -0
- package/lib/commonjs/useOnGetState.js.map +1 -0
- package/lib/commonjs/useOnPreventRemove.js +89 -0
- package/lib/commonjs/useOnPreventRemove.js.map +1 -0
- package/lib/commonjs/useOnRouteFocus.js +45 -0
- package/lib/commonjs/useOnRouteFocus.js.map +1 -0
- package/lib/commonjs/useOptionsGetters.js +99 -0
- package/lib/commonjs/useOptionsGetters.js.map +1 -0
- package/lib/commonjs/useRegisterNavigator.js +40 -0
- package/lib/commonjs/useRegisterNavigator.js.map +1 -0
- package/lib/commonjs/useRoute.js +32 -0
- package/lib/commonjs/useRoute.js.map +1 -0
- package/lib/commonjs/useRouteCache.js +61 -0
- package/lib/commonjs/useRouteCache.js.map +1 -0
- package/lib/commonjs/useScheduleUpdate.js +44 -0
- package/lib/commonjs/useScheduleUpdate.js.map +1 -0
- package/lib/commonjs/useSyncState.js +76 -0
- package/lib/commonjs/useSyncState.js.map +1 -0
- package/lib/commonjs/validatePathConfig.js +31 -0
- package/lib/commonjs/validatePathConfig.js.map +1 -0
- package/lib/module/BaseNavigationContainer.js +360 -0
- package/lib/module/BaseNavigationContainer.js.map +1 -0
- package/lib/module/CurrentRenderContext.js +9 -0
- package/lib/module/CurrentRenderContext.js.map +1 -0
- package/lib/module/EnsureSingleNavigator.js +38 -0
- package/lib/module/EnsureSingleNavigator.js.map +1 -0
- package/lib/module/Group.js +8 -0
- package/lib/module/Group.js.map +1 -0
- package/lib/module/NavigationBuilderContext.js +11 -0
- package/lib/module/NavigationBuilderContext.js.map +1 -0
- package/lib/module/NavigationContainerRefContext.js +8 -0
- package/lib/module/NavigationContainerRefContext.js.map +1 -0
- package/lib/module/NavigationContext.js +8 -0
- package/lib/module/NavigationContext.js.map +1 -0
- package/lib/module/NavigationHelpersContext.js +9 -0
- package/lib/module/NavigationHelpersContext.js.map +1 -0
- package/lib/module/NavigationRouteContext.js +8 -0
- package/lib/module/NavigationRouteContext.js.map +1 -0
- package/lib/module/NavigationStateContext.js +27 -0
- package/lib/module/NavigationStateContext.js.map +1 -0
- package/lib/module/SceneView.js +80 -0
- package/lib/module/SceneView.js.map +1 -0
- package/lib/module/Screen.js +8 -0
- package/lib/module/Screen.js.map +1 -0
- package/lib/module/StaticContainer.js +30 -0
- package/lib/module/StaticContainer.js.map +1 -0
- package/lib/module/UnhandledActionContext.js +4 -0
- package/lib/module/UnhandledActionContext.js.map +1 -0
- package/lib/module/checkDuplicateRouteNames.js +24 -0
- package/lib/module/checkDuplicateRouteNames.js.map +1 -0
- package/lib/module/checkSerializable.js +52 -0
- package/lib/module/checkSerializable.js.map +1 -0
- package/lib/module/createNavigationContainerRef.js +71 -0
- package/lib/module/createNavigationContainerRef.js.map +1 -0
- package/lib/module/createNavigatorFactory.js +24 -0
- package/lib/module/createNavigatorFactory.js.map +1 -0
- package/lib/module/findFocusedRoute.js +15 -0
- package/lib/module/findFocusedRoute.js.map +1 -0
- package/lib/module/fromEntries.js +12 -0
- package/lib/module/fromEntries.js.map +1 -0
- package/lib/module/getActionFromState.js +92 -0
- package/lib/module/getActionFromState.js.map +1 -0
- package/lib/module/getFocusedRouteNameFromRoute.js +15 -0
- package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -0
- package/lib/module/getPathFromState.js +223 -0
- package/lib/module/getPathFromState.js.map +1 -0
- package/lib/module/getStateFromPath.js +434 -0
- package/lib/module/getStateFromPath.js.map +1 -0
- package/lib/module/index.js +24 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/isArrayEqual.js +8 -0
- package/lib/module/isArrayEqual.js.map +1 -0
- package/lib/module/types.js +9 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/useChildListeners.js +27 -0
- package/lib/module/useChildListeners.js.map +1 -0
- package/lib/module/useComponent.js +24 -0
- package/lib/module/useComponent.js.map +1 -0
- package/lib/module/useCurrentRender.js +19 -0
- package/lib/module/useCurrentRender.js.map +1 -0
- package/lib/module/useDescriptors.js +122 -0
- package/lib/module/useDescriptors.js.map +1 -0
- package/lib/module/useEventEmitter.js +107 -0
- package/lib/module/useEventEmitter.js.map +1 -0
- package/lib/module/useFocusEffect.js +83 -0
- package/lib/module/useFocusEffect.js.map +1 -0
- package/lib/module/useFocusEvents.js +63 -0
- package/lib/module/useFocusEvents.js.map +1 -0
- package/lib/module/useFocusedListenersChildrenAdapter.js +43 -0
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -0
- package/lib/module/useIsFocused.js +34 -0
- package/lib/module/useIsFocused.js.map +1 -0
- package/lib/module/useKeyedChildListeners.js +24 -0
- package/lib/module/useKeyedChildListeners.js.map +1 -0
- package/lib/module/useNavigation.js +21 -0
- package/lib/module/useNavigation.js.map +1 -0
- package/lib/module/useNavigationBuilder.js +443 -0
- package/lib/module/useNavigationBuilder.js.map +1 -0
- package/lib/module/useNavigationCache.js +107 -0
- package/lib/module/useNavigationCache.js.map +1 -0
- package/lib/module/useNavigationContainerRef.js +12 -0
- package/lib/module/useNavigationContainerRef.js.map +1 -0
- package/lib/module/useNavigationHelpers.js +59 -0
- package/lib/module/useNavigationHelpers.js.map +1 -0
- package/lib/module/useNavigationState.js +27 -0
- package/lib/module/useNavigationState.js.map +1 -0
- package/lib/module/useOnAction.js +103 -0
- package/lib/module/useOnAction.js.map +1 -0
- package/lib/module/useOnGetState.js +43 -0
- package/lib/module/useOnGetState.js.map +1 -0
- package/lib/module/useOnPreventRemove.js +68 -0
- package/lib/module/useOnPreventRemove.js.map +1 -0
- package/lib/module/useOnRouteFocus.js +31 -0
- package/lib/module/useOnRouteFocus.js.map +1 -0
- package/lib/module/useOptionsGetters.js +83 -0
- package/lib/module/useOptionsGetters.js.map +1 -0
- package/lib/module/useRegisterNavigator.js +27 -0
- package/lib/module/useRegisterNavigator.js.map +1 -0
- package/lib/module/useRoute.js +18 -0
- package/lib/module/useRoute.js.map +1 -0
- package/lib/module/useRouteCache.js +47 -0
- package/lib/module/useRouteCache.js.map +1 -0
- package/lib/module/useScheduleUpdate.js +29 -0
- package/lib/module/useScheduleUpdate.js.map +1 -0
- package/lib/module/useSyncState.js +64 -0
- package/lib/module/useSyncState.js.map +1 -0
- package/lib/module/validatePathConfig.js +24 -0
- package/lib/module/validatePathConfig.js.map +1 -0
- package/lib/typescript/src/BaseNavigationContainer.d.ts +14 -0
- package/lib/typescript/src/CurrentRenderContext.d.ts +9 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +13 -0
- package/lib/typescript/src/Group.d.ts +6 -0
- package/lib/typescript/src/NavigationBuilderContext.d.ts +34 -0
- package/lib/typescript/src/NavigationContainerRefContext.d.ts +8 -0
- package/lib/typescript/src/NavigationContext.d.ts +24 -0
- package/lib/typescript/src/NavigationHelpersContext.d.ts +9 -0
- package/lib/typescript/src/NavigationRouteContext.d.ts +7 -0
- package/lib/typescript/src/NavigationStateContext.d.ts +45 -0
- package/lib/typescript/src/SceneView.d.ts +21 -0
- package/lib/typescript/src/Screen.d.ts +6 -0
- package/lib/typescript/src/StaticContainer.d.ts +7 -0
- package/lib/typescript/src/UnhandledActionContext.d.ts +4 -0
- package/lib/typescript/src/checkDuplicateRouteNames.d.ts +2 -0
- package/lib/typescript/src/checkSerializable.d.ts +9 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts +3 -0
- package/lib/typescript/src/createNavigatorFactory.d.ts +11 -0
- package/lib/typescript/src/findFocusedRoute.d.ts +22 -0
- package/lib/typescript/src/fromEntries.d.ts +1 -0
- package/lib/typescript/src/getActionFromState.d.ts +16 -0
- package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts +2 -0
- package/lib/typescript/src/getPathFromState.d.ts +38 -0
- package/lib/typescript/src/getStateFromPath.d.ts +32 -0
- package/lib/typescript/src/index.d.ts +23 -0
- package/lib/typescript/src/isArrayEqual.d.ts +5 -0
- package/lib/typescript/src/types.d.ts +485 -0
- package/lib/typescript/src/useChildListeners.d.ts +11 -0
- package/lib/typescript/src/useComponent.d.ts +2 -0
- package/lib/typescript/src/useCurrentRender.d.ts +13 -0
- package/lib/typescript/src/useDescriptors.d.ts +89 -0
- package/lib/typescript/src/useEventEmitter.d.ts +8 -0
- package/lib/typescript/src/useFocusEffect.d.ts +10 -0
- package/lib/typescript/src/useFocusEvents.d.ts +12 -0
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +12 -0
- package/lib/typescript/src/useIsFocused.d.ts +5 -0
- package/lib/typescript/src/useKeyedChildListeners.d.ts +11 -0
- package/lib/typescript/src/useNavigation.d.ts +7 -0
- package/lib/typescript/src/useNavigationBuilder.d.ts +223 -0
- package/lib/typescript/src/useNavigationCache.d.ts +19 -0
- package/lib/typescript/src/useNavigationContainerRef.d.ts +2 -0
- package/lib/typescript/src/useNavigationHelpers.d.ts +174 -0
- package/lib/typescript/src/useNavigationState.d.ts +9 -0
- package/lib/typescript/src/useOnAction.d.ts +25 -0
- package/lib/typescript/src/useOnGetState.d.ts +8 -0
- package/lib/typescript/src/useOnPreventRemove.d.ts +16 -0
- package/lib/typescript/src/useOnRouteFocus.d.ts +14 -0
- package/lib/typescript/src/useOptionsGetters.d.ts +12 -0
- package/lib/typescript/src/useRegisterNavigator.d.ts +5 -0
- package/lib/typescript/src/useRoute.d.ts +8 -0
- package/lib/typescript/src/useRouteCache.d.ts +13 -0
- package/lib/typescript/src/useScheduleUpdate.d.ts +13 -0
- package/lib/typescript/src/useSyncState.d.ts +4 -0
- package/lib/typescript/src/validatePathConfig.d.ts +1 -0
- package/package.json +73 -0
- package/src/BaseNavigationContainer.tsx +453 -0
- package/src/CurrentRenderContext.tsx +10 -0
- package/src/EnsureSingleNavigator.tsx +53 -0
- package/src/Group.tsx +14 -0
- package/src/NavigationBuilderContext.tsx +70 -0
- package/src/NavigationContainerRefContext.tsx +14 -0
- package/src/NavigationContext.tsx +12 -0
- package/src/NavigationHelpersContext.tsx +13 -0
- package/src/NavigationRouteContext.tsx +10 -0
- package/src/NavigationStateContext.tsx +39 -0
- package/src/SceneView.tsx +134 -0
- package/src/Screen.tsx +17 -0
- package/src/StaticContainer.tsx +29 -0
- package/src/UnhandledActionContext.tsx +9 -0
- package/src/checkDuplicateRouteNames.tsx +33 -0
- package/src/checkSerializable.tsx +74 -0
- package/src/createNavigationContainerRef.tsx +97 -0
- package/src/createNavigatorFactory.tsx +40 -0
- package/src/findFocusedRoute.tsx +13 -0
- package/src/fromEntries.tsx +13 -0
- package/src/getActionFromState.tsx +154 -0
- package/src/getFocusedRouteNameFromRoute.tsx +28 -0
- package/src/getPathFromState.tsx +297 -0
- package/src/getStateFromPath.tsx +575 -0
- package/src/index.tsx +23 -0
- package/src/isArrayEqual.tsx +7 -0
- package/src/types.tsx +645 -0
- package/src/useChildListeners.tsx +37 -0
- package/src/useComponent.tsx +30 -0
- package/src/useCurrentRender.tsx +35 -0
- package/src/useDescriptors.tsx +229 -0
- package/src/useEventEmitter.tsx +130 -0
- package/src/useFocusEffect.tsx +112 -0
- package/src/useFocusEvents.tsx +73 -0
- package/src/useFocusedListenersChildrenAdapter.tsx +47 -0
- package/src/useIsFocused.tsx +43 -0
- package/src/useKeyedChildListeners.tsx +40 -0
- package/src/useNavigation.tsx +26 -0
- package/src/useNavigationBuilder.tsx +640 -0
- package/src/useNavigationCache.tsx +159 -0
- package/src/useNavigationContainerRef.tsx +17 -0
- package/src/useNavigationHelpers.tsx +98 -0
- package/src/useNavigationState.tsx +41 -0
- package/src/useOnAction.tsx +166 -0
- package/src/useOnGetState.tsx +47 -0
- package/src/useOnPreventRemove.tsx +99 -0
- package/src/useOnRouteFocus.tsx +47 -0
- package/src/useOptionsGetters.tsx +98 -0
- package/src/useRegisterNavigator.tsx +29 -0
- package/src/useRoute.tsx +22 -0
- package/src/useRouteCache.tsx +55 -0
- package/src/useScheduleUpdate.tsx +32 -0
- package/src/useSyncState.tsx +74 -0
- package/src/validatePathConfig.tsx +32 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import EnsureSingleNavigator from './EnsureSingleNavigator';
|
|
3
|
+
import NavigationStateContext from './NavigationStateContext';
|
|
4
|
+
import StaticContainer from './StaticContainer';
|
|
5
|
+
import useOptionsGetters from './useOptionsGetters';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Component which takes care of rendering the screen for a route.
|
|
9
|
+
* It provides all required contexts and applies optimizations when applicable.
|
|
10
|
+
*/
|
|
11
|
+
export default function SceneView({
|
|
12
|
+
screen,
|
|
13
|
+
route,
|
|
14
|
+
navigation,
|
|
15
|
+
routeState,
|
|
16
|
+
getState,
|
|
17
|
+
setState,
|
|
18
|
+
options,
|
|
19
|
+
clearOptions
|
|
20
|
+
}) {
|
|
21
|
+
const navigatorKeyRef = React.useRef();
|
|
22
|
+
const getKey = React.useCallback(() => navigatorKeyRef.current, []);
|
|
23
|
+
const {
|
|
24
|
+
addOptionsGetter
|
|
25
|
+
} = useOptionsGetters({
|
|
26
|
+
key: route.key,
|
|
27
|
+
options,
|
|
28
|
+
navigation
|
|
29
|
+
});
|
|
30
|
+
const setKey = React.useCallback(key => {
|
|
31
|
+
navigatorKeyRef.current = key;
|
|
32
|
+
}, []);
|
|
33
|
+
const getCurrentState = React.useCallback(() => {
|
|
34
|
+
const state = getState();
|
|
35
|
+
const currentRoute = state.routes.find(r => r.key === route.key);
|
|
36
|
+
return currentRoute ? currentRoute.state : undefined;
|
|
37
|
+
}, [getState, route.key]);
|
|
38
|
+
const setCurrentState = React.useCallback(child => {
|
|
39
|
+
const state = getState();
|
|
40
|
+
setState({ ...state,
|
|
41
|
+
routes: state.routes.map(r => r.key === route.key ? { ...r,
|
|
42
|
+
state: child
|
|
43
|
+
} : r)
|
|
44
|
+
});
|
|
45
|
+
}, [getState, route.key, setState]);
|
|
46
|
+
const isInitialRef = React.useRef(true);
|
|
47
|
+
React.useEffect(() => {
|
|
48
|
+
isInitialRef.current = false;
|
|
49
|
+
}); // Clear options set by this screen when it is unmounted
|
|
50
|
+
|
|
51
|
+
React.useEffect(() => {
|
|
52
|
+
return clearOptions; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
53
|
+
}, []);
|
|
54
|
+
const getIsInitial = React.useCallback(() => isInitialRef.current, []);
|
|
55
|
+
const context = React.useMemo(() => ({
|
|
56
|
+
state: routeState,
|
|
57
|
+
getState: getCurrentState,
|
|
58
|
+
setState: setCurrentState,
|
|
59
|
+
getKey,
|
|
60
|
+
setKey,
|
|
61
|
+
getIsInitial,
|
|
62
|
+
addOptionsGetter
|
|
63
|
+
}), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);
|
|
64
|
+
const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;
|
|
65
|
+
return /*#__PURE__*/React.createElement(NavigationStateContext.Provider, {
|
|
66
|
+
value: context
|
|
67
|
+
}, /*#__PURE__*/React.createElement(EnsureSingleNavigator, null, /*#__PURE__*/React.createElement(StaticContainer, {
|
|
68
|
+
name: screen.name,
|
|
69
|
+
render: ScreenComponent || screen.children,
|
|
70
|
+
navigation: navigation,
|
|
71
|
+
route: route
|
|
72
|
+
}, ScreenComponent !== undefined ? /*#__PURE__*/React.createElement(ScreenComponent, {
|
|
73
|
+
navigation: navigation,
|
|
74
|
+
route: route
|
|
75
|
+
}) : screen.children !== undefined ? screen.children({
|
|
76
|
+
navigation,
|
|
77
|
+
route
|
|
78
|
+
}) : null)));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=SceneView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["SceneView.tsx"],"names":["React","EnsureSingleNavigator","NavigationStateContext","StaticContainer","useOptionsGetters","SceneView","screen","route","navigation","routeState","getState","setState","options","clearOptions","navigatorKeyRef","useRef","getKey","useCallback","current","addOptionsGetter","key","setKey","getCurrentState","state","currentRoute","routes","find","r","undefined","setCurrentState","child","map","isInitialRef","useEffect","getIsInitial","context","useMemo","ScreenComponent","getComponent","component","name","children"],"mappings":"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","sourcesContent":["import type {\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport EnsureSingleNavigator from './EnsureSingleNavigator';\nimport NavigationStateContext from './NavigationStateContext';\nimport StaticContainer from './StaticContainer';\nimport type { NavigationProp, RouteConfigComponent } from './types';\nimport useOptionsGetters from './useOptionsGetters';\n\ntype Props<State extends NavigationState, ScreenOptions extends {}> = {\n screen: RouteConfigComponent<ParamListBase, string> & { name: string };\n navigation: NavigationProp<ParamListBase, string, State, ScreenOptions>;\n route: Route<string>;\n routeState: NavigationState | PartialState<NavigationState> | undefined;\n getState: () => State;\n setState: (state: State) => void;\n options: object;\n clearOptions: () => void;\n};\n\n/**\n * Component which takes care of rendering the screen for a route.\n * It provides all required contexts and applies optimizations when applicable.\n */\nexport default function SceneView<\n State extends NavigationState,\n ScreenOptions extends {}\n>({\n screen,\n route,\n navigation,\n routeState,\n getState,\n setState,\n options,\n clearOptions,\n}: Props<State, ScreenOptions>) {\n const navigatorKeyRef = React.useRef<string | undefined>();\n const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n\n const { addOptionsGetter } = useOptionsGetters({\n key: route.key,\n options,\n navigation,\n });\n\n const setKey = React.useCallback((key: string) => {\n navigatorKeyRef.current = key;\n }, []);\n\n const getCurrentState = React.useCallback(() => {\n const state = getState();\n const currentRoute = state.routes.find((r) => r.key === route.key);\n\n return currentRoute ? currentRoute.state : undefined;\n }, [getState, route.key]);\n\n const setCurrentState = React.useCallback(\n (child: NavigationState | PartialState<NavigationState> | undefined) => {\n const state = getState();\n\n setState({\n ...state,\n routes: state.routes.map((r) =>\n r.key === route.key ? { ...r, state: child } : r\n ),\n });\n },\n [getState, route.key, setState]\n );\n\n const isInitialRef = React.useRef(true);\n\n React.useEffect(() => {\n isInitialRef.current = false;\n });\n\n // Clear options set by this screen when it is unmounted\n React.useEffect(() => {\n return clearOptions;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n\n const context = React.useMemo(\n () => ({\n state: routeState,\n getState: getCurrentState,\n setState: setCurrentState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n }),\n [\n routeState,\n getCurrentState,\n setCurrentState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n ]\n );\n\n const ScreenComponent = screen.getComponent\n ? screen.getComponent()\n : screen.component;\n\n return (\n <NavigationStateContext.Provider value={context}>\n <EnsureSingleNavigator>\n <StaticContainer\n name={screen.name}\n render={ScreenComponent || screen.children}\n navigation={navigation}\n route={route}\n >\n {ScreenComponent !== undefined ? (\n <ScreenComponent navigation={navigation} route={route} />\n ) : screen.children !== undefined ? (\n screen.children({ navigation, route })\n ) : null}\n </StaticContainer>\n </EnsureSingleNavigator>\n </NavigationStateContext.Provider>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Screen.tsx"],"names":["Screen","_"],"mappings":"AAIA;AACA;AACA;AACA,eAAe,SAASA,MAAT,CAMbC,CANa,EAMyD;AACtE;AACA,SAAO,IAAP;AACD","sourcesContent":["import type { NavigationState, ParamListBase } from '@react-navigation/routers';\n\nimport type { EventMapBase, RouteConfig } from './types';\n\n/**\n * Empty component used for specifying route configuration.\n */\nexport default function Screen<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList,\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends EventMapBase\n>(_: RouteConfig<ParamList, RouteName, State, ScreenOptions, EventMap>) {\n /* istanbul ignore next */\n return null;\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Component which prevents updates for children if no props changed
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
function StaticContainer(props) {
|
|
7
|
+
return props.children;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default /*#__PURE__*/React.memo(StaticContainer, (prevProps, nextProps) => {
|
|
11
|
+
const prevPropKeys = Object.keys(prevProps);
|
|
12
|
+
const nextPropKeys = Object.keys(nextProps);
|
|
13
|
+
|
|
14
|
+
if (prevPropKeys.length !== nextPropKeys.length) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
for (const key of prevPropKeys) {
|
|
19
|
+
if (key === 'children') {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (prevProps[key] !== nextProps[key]) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return true;
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=StaticContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["StaticContainer.tsx"],"names":["React","StaticContainer","props","children","memo","prevProps","nextProps","prevPropKeys","Object","keys","nextPropKeys","length","key"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA;AACA;AACA;;AACA,SAASC,eAAT,CAAyBC,KAAzB,EAAqC;AACnC,SAAOA,KAAK,CAACC,QAAb;AACD;;AAED,4BAAeH,KAAK,CAACI,IAAN,CAAWH,eAAX,EAA4B,CAACI,SAAD,EAAiBC,SAAjB,KAAoC;AAC7E,QAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYJ,SAAZ,CAArB;AACA,QAAMK,YAAY,GAAGF,MAAM,CAACC,IAAP,CAAYH,SAAZ,CAArB;;AAEA,MAAIC,YAAY,CAACI,MAAb,KAAwBD,YAAY,CAACC,MAAzC,EAAiD;AAC/C,WAAO,KAAP;AACD;;AAED,OAAK,MAAMC,GAAX,IAAkBL,YAAlB,EAAgC;AAC9B,QAAIK,GAAG,KAAK,UAAZ,EAAwB;AACtB;AACD;;AAED,QAAIP,SAAS,CAACO,GAAD,CAAT,KAAmBN,SAAS,CAACM,GAAD,CAAhC,EAAuC;AACrC,aAAO,KAAP;AACD;AACF;;AAED,SAAO,IAAP;AACD,CAnBc,CAAf","sourcesContent":["import * as React from 'react';\n\n/**\n * Component which prevents updates for children if no props changed\n */\nfunction StaticContainer(props: any) {\n return props.children;\n}\n\nexport default React.memo(StaticContainer, (prevProps: any, nextProps: any) => {\n const prevPropKeys = Object.keys(prevProps);\n const nextPropKeys = Object.keys(nextProps);\n\n if (prevPropKeys.length !== nextPropKeys.length) {\n return false;\n }\n\n for (const key of prevPropKeys) {\n if (key === 'children') {\n continue;\n }\n\n if (prevProps[key] !== nextProps[key]) {\n return false;\n }\n }\n\n return true;\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["UnhandledActionContext.tsx"],"names":["React","UnhandledActionContext","createContext","undefined"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,MAAMC,sBAAsB,gBAC1BD,KAAK,CAACE,aAAN,CACEC,SADF,CADF;AAKA,eAAeF,sBAAf","sourcesContent":["import type { NavigationAction } from '@react-navigation/routers';\nimport * as React from 'react';\n\nconst UnhandledActionContext =\n React.createContext<((action: NavigationAction) => void) | undefined>(\n undefined\n );\n\nexport default UnhandledActionContext;\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export default function checkDuplicateRouteNames(state) {
|
|
2
|
+
const duplicates = [];
|
|
3
|
+
|
|
4
|
+
const getRouteNames = (location, state) => {
|
|
5
|
+
state.routes.forEach(route => {
|
|
6
|
+
var _route$state, _route$state$routeNam;
|
|
7
|
+
|
|
8
|
+
const currentLocation = location ? `${location} > ${route.name}` : route.name;
|
|
9
|
+
(_route$state = route.state) === null || _route$state === void 0 ? void 0 : (_route$state$routeNam = _route$state.routeNames) === null || _route$state$routeNam === void 0 ? void 0 : _route$state$routeNam.forEach(routeName => {
|
|
10
|
+
if (routeName === route.name) {
|
|
11
|
+
duplicates.push([currentLocation, `${currentLocation} > ${route.name}`]);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
if (route.state) {
|
|
16
|
+
getRouteNames(currentLocation, route.state);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
getRouteNames('', state);
|
|
22
|
+
return duplicates;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=checkDuplicateRouteNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["checkDuplicateRouteNames.tsx"],"names":["checkDuplicateRouteNames","state","duplicates","getRouteNames","location","routes","forEach","route","currentLocation","name","routeNames","routeName","push"],"mappings":"AAEA,eAAe,SAASA,wBAAT,CAAkCC,KAAlC,EAA0D;AACvE,QAAMC,UAAsB,GAAG,EAA/B;;AAEA,QAAMC,aAAa,GAAG,CACpBC,QADoB,EAEpBH,KAFoB,KAGjB;AACHA,IAAAA,KAAK,CAACI,MAAN,CAAaC,OAAb,CAAsBC,KAAD,IAAmC;AAAA;;AACtD,YAAMC,eAAe,GAAGJ,QAAQ,GAC3B,GAAEA,QAAS,MAAKG,KAAK,CAACE,IAAK,EADA,GAE5BF,KAAK,CAACE,IAFV;AAIA,sBAAAF,KAAK,CAACN,KAAN,uFAAaS,UAAb,gFAAyBJ,OAAzB,CAAkCK,SAAD,IAAe;AAC9C,YAAIA,SAAS,KAAKJ,KAAK,CAACE,IAAxB,EAA8B;AAC5BP,UAAAA,UAAU,CAACU,IAAX,CAAgB,CACdJ,eADc,EAEb,GAAEA,eAAgB,MAAKD,KAAK,CAACE,IAAK,EAFrB,CAAhB;AAID;AACF,OAPD;;AASA,UAAIF,KAAK,CAACN,KAAV,EAAiB;AACfE,QAAAA,aAAa,CAACK,eAAD,EAAkBD,KAAK,CAACN,KAAxB,CAAb;AACD;AACF,KAjBD;AAkBD,GAtBD;;AAwBAE,EAAAA,aAAa,CAAC,EAAD,EAAKF,KAAL,CAAb;AAEA,SAAOC,UAAP;AACD","sourcesContent":["import type { NavigationState, PartialState } from '@react-navigation/routers';\n\nexport default function checkDuplicateRouteNames(state: NavigationState) {\n const duplicates: string[][] = [];\n\n const getRouteNames = (\n location: string,\n state: NavigationState | PartialState<NavigationState>\n ) => {\n state.routes.forEach((route: typeof state.routes[0]) => {\n const currentLocation = location\n ? `${location} > ${route.name}`\n : route.name;\n\n route.state?.routeNames?.forEach((routeName) => {\n if (routeName === route.name) {\n duplicates.push([\n currentLocation,\n `${currentLocation} > ${route.name}`,\n ]);\n }\n });\n\n if (route.state) {\n getRouteNames(currentLocation, route.state);\n }\n });\n };\n\n getRouteNames('', state);\n\n return duplicates;\n}\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const checkSerializableWithoutCircularReference = (o, seen, location) => {
|
|
2
|
+
if (o === undefined || o === null || typeof o === 'boolean' || typeof o === 'number' || typeof o === 'string') {
|
|
3
|
+
return {
|
|
4
|
+
serializable: true
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (Object.prototype.toString.call(o) !== '[object Object]' && !Array.isArray(o)) {
|
|
9
|
+
return {
|
|
10
|
+
serializable: false,
|
|
11
|
+
location,
|
|
12
|
+
reason: typeof o === 'function' ? 'Function' : String(o)
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (seen.has(o)) {
|
|
17
|
+
return {
|
|
18
|
+
serializable: false,
|
|
19
|
+
reason: 'Circular reference',
|
|
20
|
+
location
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
seen.add(o);
|
|
25
|
+
|
|
26
|
+
if (Array.isArray(o)) {
|
|
27
|
+
for (let i = 0; i < o.length; i++) {
|
|
28
|
+
const childResult = checkSerializableWithoutCircularReference(o[i], new Set(seen), [...location, i]);
|
|
29
|
+
|
|
30
|
+
if (!childResult.serializable) {
|
|
31
|
+
return childResult;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
for (const key in o) {
|
|
36
|
+
const childResult = checkSerializableWithoutCircularReference(o[key], new Set(seen), [...location, key]);
|
|
37
|
+
|
|
38
|
+
if (!childResult.serializable) {
|
|
39
|
+
return childResult;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
serializable: true
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default function checkSerializable(o) {
|
|
50
|
+
return checkSerializableWithoutCircularReference(o, new Set(), []);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=checkSerializable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["checkSerializable.tsx"],"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","reason","String","has","add","i","length","childResult","Set","key","checkSerializable"],"mappings":"AAAA,MAAMA,yCAAyC,GAAG,CAChDC,CADgD,EAEhDC,IAFgD,EAGhDC,QAHgD,KAUzC;AACP,MACEF,CAAC,KAAKG,SAAN,IACAH,CAAC,KAAK,IADN,IAEA,OAAOA,CAAP,KAAa,SAFb,IAGA,OAAOA,CAAP,KAAa,QAHb,IAIA,OAAOA,CAAP,KAAa,QALf,EAME;AACA,WAAO;AAAEI,MAAAA,YAAY,EAAE;AAAhB,KAAP;AACD;;AAED,MACEC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BR,CAA/B,MAAsC,iBAAtC,IACA,CAACS,KAAK,CAACC,OAAN,CAAcV,CAAd,CAFH,EAGE;AACA,WAAO;AACLI,MAAAA,YAAY,EAAE,KADT;AAELF,MAAAA,QAFK;AAGLS,MAAAA,MAAM,EAAE,OAAOX,CAAP,KAAa,UAAb,GAA0B,UAA1B,GAAuCY,MAAM,CAACZ,CAAD;AAHhD,KAAP;AAKD;;AAED,MAAIC,IAAI,CAACY,GAAL,CAASb,CAAT,CAAJ,EAAiB;AACf,WAAO;AACLI,MAAAA,YAAY,EAAE,KADT;AAELO,MAAAA,MAAM,EAAE,oBAFH;AAGLT,MAAAA;AAHK,KAAP;AAKD;;AAEDD,EAAAA,IAAI,CAACa,GAAL,CAASd,CAAT;;AAEA,MAAIS,KAAK,CAACC,OAAN,CAAcV,CAAd,CAAJ,EAAsB;AACpB,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGf,CAAC,CAACgB,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,YAAME,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACe,CAAD,CAD0D,EAE3D,IAAIG,GAAJ,CAAajB,IAAb,CAF2D,EAG3D,CAAC,GAAGC,QAAJ,EAAca,CAAd,CAH2D,CAA7D;;AAMA,UAAI,CAACE,WAAW,CAACb,YAAjB,EAA+B;AAC7B,eAAOa,WAAP;AACD;AACF;AACF,GAZD,MAYO;AACL,SAAK,MAAME,GAAX,IAAkBnB,CAAlB,EAAqB;AACnB,YAAMiB,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACmB,GAAD,CAD0D,EAE3D,IAAID,GAAJ,CAAajB,IAAb,CAF2D,EAG3D,CAAC,GAAGC,QAAJ,EAAciB,GAAd,CAH2D,CAA7D;;AAMA,UAAI,CAACF,WAAW,CAACb,YAAjB,EAA+B;AAC7B,eAAOa,WAAP;AACD;AACF;AACF;;AAED,SAAO;AAAEb,IAAAA,YAAY,EAAE;AAAhB,GAAP;AACD,CArED;;AAuEA,eAAe,SAASgB,iBAAT,CAA2BpB,CAA3B,EAAsD;AACnE,SAAOD,yCAAyC,CAACC,CAAD,EAAI,IAAIkB,GAAJ,EAAJ,EAAoB,EAApB,CAAhD;AACD","sourcesContent":["const checkSerializableWithoutCircularReference = (\n o: { [key: string]: any },\n seen: Set<any>,\n location: (string | number)[]\n):\n | { serializable: true }\n | {\n serializable: false;\n location: (string | number)[];\n reason: string;\n } => {\n if (\n o === undefined ||\n o === null ||\n typeof o === 'boolean' ||\n typeof o === 'number' ||\n typeof o === 'string'\n ) {\n return { serializable: true };\n }\n\n if (\n Object.prototype.toString.call(o) !== '[object Object]' &&\n !Array.isArray(o)\n ) {\n return {\n serializable: false,\n location,\n reason: typeof o === 'function' ? 'Function' : String(o),\n };\n }\n\n if (seen.has(o)) {\n return {\n serializable: false,\n reason: 'Circular reference',\n location,\n };\n }\n\n seen.add(o);\n\n if (Array.isArray(o)) {\n for (let i = 0; i < o.length; i++) {\n const childResult = checkSerializableWithoutCircularReference(\n o[i],\n new Set<any>(seen),\n [...location, i]\n );\n\n if (!childResult.serializable) {\n return childResult;\n }\n }\n } else {\n for (const key in o) {\n const childResult = checkSerializableWithoutCircularReference(\n o[key],\n new Set<any>(seen),\n [...location, key]\n );\n\n if (!childResult.serializable) {\n return childResult;\n }\n }\n }\n\n return { serializable: true };\n};\n\nexport default function checkSerializable(o: { [key: string]: any }) {\n return checkSerializableWithoutCircularReference(o, new Set<any>(), []);\n}\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { CommonActions } from '@react-navigation/routers';
|
|
2
|
+
export const NOT_INITIALIZED_ERROR = "The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.";
|
|
3
|
+
export default function createNavigationContainerRef() {
|
|
4
|
+
const methods = [...Object.keys(CommonActions), 'addListener', 'removeListener', 'resetRoot', 'dispatch', 'isFocused', 'canGoBack', 'getRootState', 'getState', 'getParent', 'getCurrentRoute', 'getCurrentOptions'];
|
|
5
|
+
const listeners = {};
|
|
6
|
+
|
|
7
|
+
const removeListener = (event, callback) => {
|
|
8
|
+
var _listeners$event;
|
|
9
|
+
|
|
10
|
+
listeners[event] = (_listeners$event = listeners[event]) === null || _listeners$event === void 0 ? void 0 : _listeners$event.filter(cb => cb !== callback);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
let current = null;
|
|
14
|
+
const ref = {
|
|
15
|
+
get current() {
|
|
16
|
+
return current;
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
set current(value) {
|
|
20
|
+
current = value;
|
|
21
|
+
|
|
22
|
+
if (value != null) {
|
|
23
|
+
Object.entries(listeners).forEach(([event, callbacks]) => {
|
|
24
|
+
callbacks.forEach(callback => {
|
|
25
|
+
value.addListener(event, callback);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
isReady: () => {
|
|
32
|
+
if (current == null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return current.isReady();
|
|
37
|
+
},
|
|
38
|
+
...methods.reduce((acc, name) => {
|
|
39
|
+
acc[name] = (...args) => {
|
|
40
|
+
if (current == null) {
|
|
41
|
+
switch (name) {
|
|
42
|
+
case 'addListener':
|
|
43
|
+
{
|
|
44
|
+
const [event, callback] = args;
|
|
45
|
+
listeners[event] = listeners[event] || [];
|
|
46
|
+
listeners[event].push(callback);
|
|
47
|
+
return () => removeListener(event, callback);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
case 'removeListener':
|
|
51
|
+
{
|
|
52
|
+
const [event, callback] = args;
|
|
53
|
+
removeListener(event, callback);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
default:
|
|
58
|
+
console.error(NOT_INITIALIZED_ERROR);
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
// @ts-expect-error: this is ok
|
|
62
|
+
return current[name](...args);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return acc;
|
|
67
|
+
}, {})
|
|
68
|
+
};
|
|
69
|
+
return ref;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=createNavigationContainerRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["createNavigationContainerRef.tsx"],"names":["CommonActions","NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"mappings":"AAAA,SAASA,aAAT,QAA8B,2BAA9B;AAQA,OAAO,MAAMC,qBAAqB,GAChC,+QADK;AAGP,eAAe,SAASC,4BAAT,GAEmC;AAChD,QAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAP,CAAYL,aAAZ,CADW,EAEd,aAFc,EAGd,gBAHc,EAId,WAJc,EAKd,UALc,EAMd,WANc,EAOd,WAPc,EAQd,cARc,EASd,UATc,EAUd,WAVc,EAWd,iBAXc,EAYd,mBAZc,CAAhB;AAeA,QAAMM,SAAuD,GAAG,EAAhE;;AAEA,QAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,QAFqB,KAGlB;AAAA;;AACHH,IAAAA,SAAS,CAACE,KAAD,CAAT,uBAAmBF,SAAS,CAACE,KAAD,CAA5B,qDAAmB,iBAAkBE,MAAlB,CAA0BC,EAAD,IAAQA,EAAE,KAAKF,QAAxC,CAAnB;AACD,GALD;;AAOA,MAAIG,OAAiD,GAAG,IAAxD;AAEA,QAAMC,GAAiD,GAAG;AACxD,QAAID,OAAJ,GAAc;AACZ,aAAOA,OAAP;AACD,KAHuD;;AAIxD,QAAIA,OAAJ,CAAYE,KAAZ,EAA6D;AAC3DF,MAAAA,OAAO,GAAGE,KAAV;;AAEA,UAAIA,KAAK,IAAI,IAAb,EAAmB;AACjBV,QAAAA,MAAM,CAACW,OAAP,CAAeT,SAAf,EAA0BU,OAA1B,CAAkC,CAAC,CAACR,KAAD,EAAQS,SAAR,CAAD,KAAwB;AACxDA,UAAAA,SAAS,CAACD,OAAV,CAAmBP,QAAD,IAAc;AAC9BK,YAAAA,KAAK,CAACI,WAAN,CACEV,KADF,EAEEC,QAFF;AAID,WALD;AAMD,SAPD;AAQD;AACF,KAjBuD;;AAkBxDU,IAAAA,OAAO,EAAE,MAAM;AACb,UAAIP,OAAO,IAAI,IAAf,EAAqB;AACnB,eAAO,KAAP;AACD;;AAED,aAAOA,OAAO,CAACO,OAAR,EAAP;AACD,KAxBuD;AAyBxD,OAAGhB,OAAO,CAACiB,MAAR,CAAoB,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpCD,MAAAA,GAAG,CAACC,IAAD,CAAH,GAAY,CAAC,GAAGC,IAAJ,KAAoB;AAC9B,YAAIX,OAAO,IAAI,IAAf,EAAqB;AACnB,kBAAQU,IAAR;AACE,iBAAK,aAAL;AAAoB;AAClB,sBAAM,CAACd,KAAD,EAAQC,QAAR,IAAoBc,IAA1B;AAEAjB,gBAAAA,SAAS,CAACE,KAAD,CAAT,GAAmBF,SAAS,CAACE,KAAD,CAAT,IAAoB,EAAvC;AACAF,gBAAAA,SAAS,CAACE,KAAD,CAAT,CAAiBgB,IAAjB,CAAsBf,QAAtB;AAEA,uBAAO,MAAMF,cAAc,CAACC,KAAD,EAAQC,QAAR,CAA3B;AACD;;AACD,iBAAK,gBAAL;AAAuB;AACrB,sBAAM,CAACD,KAAD,EAAQC,QAAR,IAAoBc,IAA1B;AAEAhB,gBAAAA,cAAc,CAACC,KAAD,EAAQC,QAAR,CAAd;AACA;AACD;;AACD;AACEgB,cAAAA,OAAO,CAACC,KAAR,CAAczB,qBAAd;AAhBJ;AAkBD,SAnBD,MAmBO;AACL;AACA,iBAAOW,OAAO,CAACU,IAAD,CAAP,CAAc,GAAGC,IAAjB,CAAP;AACD;AACF,OAxBD;;AAyBA,aAAOF,GAAP;AACD,KA3BE,EA2BA,EA3BA;AAzBqD,GAA1D;AAuDA,SAAOR,GAAP;AACD","sourcesContent":["import { CommonActions } from '@react-navigation/routers';\n\nimport type {\n NavigationContainerEventMap,\n NavigationContainerRef,\n NavigationContainerRefWithCurrent,\n} from './types';\n\nexport const NOT_INITIALIZED_ERROR =\n \"The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.\";\n\nexport default function createNavigationContainerRef<\n ParamList extends {} = ReactNavigation.RootParamList\n>(): NavigationContainerRefWithCurrent<ParamList> {\n const methods = [\n ...Object.keys(CommonActions),\n 'addListener',\n 'removeListener',\n 'resetRoot',\n 'dispatch',\n 'isFocused',\n 'canGoBack',\n 'getRootState',\n 'getState',\n 'getParent',\n 'getCurrentRoute',\n 'getCurrentOptions',\n ] as const;\n\n const listeners: Record<string, ((...args: any[]) => void)[]> = {};\n\n const removeListener = (\n event: string,\n callback: (...args: any[]) => void\n ) => {\n listeners[event] = listeners[event]?.filter((cb) => cb !== callback);\n };\n\n let current: NavigationContainerRef<ParamList> | null = null;\n\n const ref: NavigationContainerRefWithCurrent<ParamList> = {\n get current() {\n return current;\n },\n set current(value: NavigationContainerRef<ParamList> | null) {\n current = value;\n\n if (value != null) {\n Object.entries(listeners).forEach(([event, callbacks]) => {\n callbacks.forEach((callback) => {\n value.addListener(\n event as keyof NavigationContainerEventMap,\n callback\n );\n });\n });\n }\n },\n isReady: () => {\n if (current == null) {\n return false;\n }\n\n return current.isReady();\n },\n ...methods.reduce<any>((acc, name) => {\n acc[name] = (...args: any[]) => {\n if (current == null) {\n switch (name) {\n case 'addListener': {\n const [event, callback] = args;\n\n listeners[event] = listeners[event] || [];\n listeners[event].push(callback);\n\n return () => removeListener(event, callback);\n }\n case 'removeListener': {\n const [event, callback] = args;\n\n removeListener(event, callback);\n break;\n }\n default:\n console.error(NOT_INITIALIZED_ERROR);\n }\n } else {\n // @ts-expect-error: this is ok\n return current[name](...args);\n }\n };\n return acc;\n }, {}),\n };\n\n return ref;\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Group from './Group';
|
|
2
|
+
import Screen from './Screen';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Higher order component to create a `Navigator` and `Screen` pair.
|
|
6
|
+
* Custom navigators should wrap the navigator component in `createNavigator` before exporting.
|
|
7
|
+
*
|
|
8
|
+
* @param Navigator The navigtor component to wrap.
|
|
9
|
+
* @returns Factory method to create a `Navigator` and `Screen` pair.
|
|
10
|
+
*/
|
|
11
|
+
export default function createNavigatorFactory(Navigator) {
|
|
12
|
+
return function () {
|
|
13
|
+
if (arguments[0] !== undefined) {
|
|
14
|
+
throw new Error("Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API? See https://reactnavigation.org/docs/hello-react-navigation for the latest API and guides.");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
Navigator,
|
|
19
|
+
Group,
|
|
20
|
+
Screen
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=createNavigatorFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["createNavigatorFactory.tsx"],"names":["Group","Screen","createNavigatorFactory","Navigator","arguments","undefined","Error"],"mappings":"AAGA,OAAOA,KAAP,MAAkB,SAAlB;AACA,OAAOC,MAAP,MAAmB,UAAnB;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAT,CAKbC,SALa,EAKkB;AAC/B,SAAO,YAML;AACA,QAAIC,SAAS,CAAC,CAAD,CAAT,KAAiBC,SAArB,EAAgC;AAC9B,YAAM,IAAIC,KAAJ,CACJ,+LADI,CAAN;AAGD;;AAED,WAAO;AACLH,MAAAA,SADK;AAELH,MAAAA,KAFK;AAGLC,MAAAA;AAHK,KAAP;AAKD,GAlBD;AAmBD","sourcesContent":["import type { NavigationState, ParamListBase } from '@react-navigation/routers';\nimport type * as React from 'react';\n\nimport Group from './Group';\nimport Screen from './Screen';\nimport type { EventMapBase, TypedNavigator } from './types';\n\n/**\n * Higher order component to create a `Navigator` and `Screen` pair.\n * Custom navigators should wrap the navigator component in `createNavigator` before exporting.\n *\n * @param Navigator The navigtor component to wrap.\n * @returns Factory method to create a `Navigator` and `Screen` pair.\n */\nexport default function createNavigatorFactory<\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends EventMapBase,\n NavigatorComponent extends React.ComponentType<any>\n>(Navigator: NavigatorComponent) {\n return function <ParamList extends ParamListBase>(): TypedNavigator<\n ParamList,\n State,\n ScreenOptions,\n EventMap,\n typeof Navigator\n > {\n if (arguments[0] !== undefined) {\n throw new Error(\n \"Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API? See https://reactnavigation.org/docs/hello-react-navigation for the latest API and guides.\"\n );\n }\n\n return {\n Navigator,\n Group,\n Screen,\n };\n };\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function findFocusedRoute(state) {
|
|
2
|
+
var _current2, _current$index3, _current3;
|
|
3
|
+
|
|
4
|
+
let current = state;
|
|
5
|
+
|
|
6
|
+
while (((_current = current) === null || _current === void 0 ? void 0 : _current.routes[(_current$index = current.index) !== null && _current$index !== void 0 ? _current$index : 0].state) != null) {
|
|
7
|
+
var _current, _current$index, _current$index2;
|
|
8
|
+
|
|
9
|
+
current = current.routes[(_current$index2 = current.index) !== null && _current$index2 !== void 0 ? _current$index2 : 0].state;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const route = (_current2 = current) === null || _current2 === void 0 ? void 0 : _current2.routes[(_current$index3 = (_current3 = current) === null || _current3 === void 0 ? void 0 : _current3.index) !== null && _current$index3 !== void 0 ? _current$index3 : 0];
|
|
13
|
+
return route;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=findFocusedRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["findFocusedRoute.tsx"],"names":["findFocusedRoute","state","current","routes","index","route"],"mappings":"AAEA,eAAe,SAASA,gBAAT,CAA0BC,KAA1B,EAA+C;AAAA;;AAC5D,MAAIC,OAAiC,GAAGD,KAAxC;;AAEA,SAAO,aAAAC,OAAO,UAAP,4CAASC,MAAT,mBAAgBD,OAAO,CAACE,KAAxB,2DAAiC,CAAjC,EAAoCH,KAApC,KAA6C,IAApD,EAA0D;AAAA;;AACxDC,IAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,oBAAeD,OAAO,CAACE,KAAvB,6DAAgC,CAAhC,EAAmCH,KAA7C;AACD;;AAED,QAAMI,KAAK,gBAAGH,OAAH,8CAAG,UAASC,MAAT,iCAAgBD,OAAhB,8CAAgB,UAASE,KAAzB,6DAAkC,CAAlC,CAAd;AAEA,SAAOC,KAAP;AACD","sourcesContent":["import type { InitialState } from '@react-navigation/routers';\n\nexport default function findFocusedRoute(state: InitialState) {\n let current: InitialState | undefined = state;\n\n while (current?.routes[current.index ?? 0].state != null) {\n current = current.routes[current.index ?? 0].state;\n }\n\n const route = current?.routes[current?.index ?? 0];\n\n return route;\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Object.fromEntries is not available in older iOS versions
|
|
2
|
+
export default function fromEntries(entries) {
|
|
3
|
+
return entries.reduce((acc, [k, v]) => {
|
|
4
|
+
if (acc.hasOwnProperty(k)) {
|
|
5
|
+
throw new Error(`A value for key '${k}' already exists in the object.`);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
acc[k] = v;
|
|
9
|
+
return acc;
|
|
10
|
+
}, {});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=fromEntries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fromEntries.tsx"],"names":["fromEntries","entries","reduce","acc","k","v","hasOwnProperty","Error"],"mappings":"AAAA;AACA,eAAe,SAASA,WAAT,CACbC,OADa,EAEb;AACA,SAAOA,OAAO,CAACC,MAAR,CAAe,CAACC,GAAD,EAAM,CAACC,CAAD,EAAIC,CAAJ,CAAN,KAAiB;AACrC,QAAIF,GAAG,CAACG,cAAJ,CAAmBF,CAAnB,CAAJ,EAA2B;AACzB,YAAM,IAAIG,KAAJ,CAAW,oBAAmBH,CAAE,iCAAhC,CAAN;AACD;;AAEDD,IAAAA,GAAG,CAACC,CAAD,CAAH,GAASC,CAAT;AACA,WAAOF,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD","sourcesContent":["// Object.fromEntries is not available in older iOS versions\nexport default function fromEntries<K extends string, V>(\n entries: (readonly [K, V])[]\n) {\n return entries.reduce((acc, [k, v]) => {\n if (acc.hasOwnProperty(k)) {\n throw new Error(`A value for key '${k}' already exists in the object.`);\n }\n\n acc[k] = v;\n return acc;\n }, {} as Record<K, V>);\n}\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export default function getActionFromState(state, options) {
|
|
2
|
+
var _state$index, _normalizedConfig$scr;
|
|
3
|
+
|
|
4
|
+
// Create a normalized configs object which will be easier to use
|
|
5
|
+
const normalizedConfig = options ? createNormalizedConfigItem(options) : {};
|
|
6
|
+
const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
|
|
7
|
+
|
|
8
|
+
if (routes.length === 0) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === (normalizedConfig === null || normalizedConfig === void 0 ? void 0 : normalizedConfig.initialRouteName) && routes[1].key === undefined)) {
|
|
13
|
+
return {
|
|
14
|
+
type: 'RESET',
|
|
15
|
+
payload: state
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const route = state.routes[(_state$index = state.index) !== null && _state$index !== void 0 ? _state$index : state.routes.length - 1];
|
|
20
|
+
let current = route === null || route === void 0 ? void 0 : route.state;
|
|
21
|
+
let config = normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig$scr = normalizedConfig.screens) === null || _normalizedConfig$scr === void 0 ? void 0 : _normalizedConfig$scr[route === null || route === void 0 ? void 0 : route.name];
|
|
22
|
+
let params = { ...route.params
|
|
23
|
+
};
|
|
24
|
+
let payload = route ? {
|
|
25
|
+
name: route.name,
|
|
26
|
+
path: route.path,
|
|
27
|
+
params
|
|
28
|
+
} : undefined;
|
|
29
|
+
|
|
30
|
+
while (current) {
|
|
31
|
+
var _config, _config2, _config2$screens;
|
|
32
|
+
|
|
33
|
+
if (current.routes.length === 0) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
|
|
38
|
+
const route = routes[routes.length - 1]; // Explicitly set to override existing value when merging params
|
|
39
|
+
|
|
40
|
+
Object.assign(params, {
|
|
41
|
+
initial: undefined,
|
|
42
|
+
screen: undefined,
|
|
43
|
+
params: undefined,
|
|
44
|
+
state: undefined
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
if (routes.length === 1 && routes[0].key === undefined) {
|
|
48
|
+
params.initial = true;
|
|
49
|
+
params.screen = route.name;
|
|
50
|
+
} else if (routes.length === 2 && routes[0].key === undefined && routes[0].name === ((_config = config) === null || _config === void 0 ? void 0 : _config.initialRouteName) && routes[1].key === undefined) {
|
|
51
|
+
params.initial = false;
|
|
52
|
+
params.screen = route.name;
|
|
53
|
+
} else {
|
|
54
|
+
params.state = current;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (route.state) {
|
|
59
|
+
params.params = { ...route.params
|
|
60
|
+
};
|
|
61
|
+
params = params.params;
|
|
62
|
+
} else {
|
|
63
|
+
params.path = route.path;
|
|
64
|
+
params.params = route.params;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
current = route.state;
|
|
68
|
+
config = (_config2 = config) === null || _config2 === void 0 ? void 0 : (_config2$screens = _config2.screens) === null || _config2$screens === void 0 ? void 0 : _config2$screens[route.name];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (!payload) {
|
|
72
|
+
return;
|
|
73
|
+
} // Try to construct payload for a `NAVIGATE` action from the state
|
|
74
|
+
// This lets us preserve the navigation state and not lose it
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
type: 'NAVIGATE',
|
|
79
|
+
payload
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
|
|
84
|
+
initialRouteName: config.initialRouteName,
|
|
85
|
+
screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined
|
|
86
|
+
} : {};
|
|
87
|
+
|
|
88
|
+
const createNormalizedConfigs = options => Object.entries(options).reduce((acc, [k, v]) => {
|
|
89
|
+
acc[k] = createNormalizedConfigItem(v);
|
|
90
|
+
return acc;
|
|
91
|
+
}, {});
|
|
92
|
+
//# sourceMappingURL=getActionFromState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["getActionFromState.tsx"],"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"mappings":"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","sourcesContent":["import type {\n CommonActions,\n NavigationState,\n ParamListBase,\n PartialRoute,\n PartialState,\n Route,\n} from '@react-navigation/routers';\n\nimport type { NavigatorScreenParams, PathConfig, PathConfigMap } from './types';\n\ntype ConfigItem = {\n initialRouteName?: string;\n screens?: Record<string, ConfigItem>;\n};\n\ntype Options = {\n initialRouteName?: string;\n screens: PathConfigMap<object>;\n};\n\ntype NavigateAction<State extends NavigationState> = {\n type: 'NAVIGATE';\n payload: {\n name: string;\n params?: NavigatorScreenParams<State>;\n path?: string;\n };\n};\n\nexport default function getActionFromState(\n state: PartialState<NavigationState>,\n options?: Options\n): NavigateAction<NavigationState> | CommonActions.Action | undefined {\n // Create a normalized configs object which will be easier to use\n const normalizedConfig = options\n ? createNormalizedConfigItem(options as PathConfig<object> | string)\n : {};\n\n const routes =\n state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;\n\n if (routes.length === 0) {\n return undefined;\n }\n\n if (\n !(\n (routes.length === 1 && routes[0].key === undefined) ||\n (routes.length === 2 &&\n routes[0].key === undefined &&\n routes[0].name === normalizedConfig?.initialRouteName &&\n routes[1].key === undefined)\n )\n ) {\n return {\n type: 'RESET',\n payload: state,\n };\n }\n\n const route = state.routes[state.index ?? state.routes.length - 1];\n\n let current: PartialState<NavigationState> | undefined = route?.state;\n let config: ConfigItem | undefined = normalizedConfig?.screens?.[route?.name];\n let params = { ...route.params } as NavigatorScreenParams<\n ParamListBase,\n NavigationState\n >;\n\n let payload = route\n ? { name: route.name, path: route.path, params }\n : undefined;\n\n while (current) {\n if (current.routes.length === 0) {\n return undefined;\n }\n\n const routes =\n current.index != null\n ? current.routes.slice(0, current.index + 1)\n : current.routes;\n\n const route: Route<string> | PartialRoute<Route<string>> =\n routes[routes.length - 1];\n\n // Explicitly set to override existing value when merging params\n Object.assign(params, {\n initial: undefined,\n screen: undefined,\n params: undefined,\n state: undefined,\n });\n\n if (routes.length === 1 && routes[0].key === undefined) {\n params.initial = true;\n params.screen = route.name;\n } else if (\n routes.length === 2 &&\n routes[0].key === undefined &&\n routes[0].name === config?.initialRouteName &&\n routes[1].key === undefined\n ) {\n params.initial = false;\n params.screen = route.name;\n } else {\n params.state = current;\n break;\n }\n\n if (route.state) {\n params.params = { ...route.params };\n params = params.params as NavigatorScreenParams<\n ParamListBase,\n NavigationState\n >;\n } else {\n params.path = route.path;\n params.params = route.params;\n }\n\n current = route.state;\n config = config?.screens?.[route.name];\n }\n\n if (!payload) {\n return;\n }\n\n // Try to construct payload for a `NAVIGATE` action from the state\n // This lets us preserve the navigation state and not lose it\n return {\n type: 'NAVIGATE',\n payload,\n };\n}\n\nconst createNormalizedConfigItem = (config: PathConfig<object> | string) =>\n typeof config === 'object' && config != null\n ? {\n initialRouteName: config.initialRouteName,\n screens:\n config.screens != null\n ? createNormalizedConfigs(config.screens)\n : undefined,\n }\n : {};\n\nconst createNormalizedConfigs = (options: PathConfigMap<object>) =>\n Object.entries(options).reduce<Record<string, ConfigItem>>((acc, [k, v]) => {\n acc[k] = createNormalizedConfigItem(v);\n return acc;\n }, {});\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CHILD_STATE } from './useRouteCache';
|
|
2
|
+
export default function getFocusedRouteNameFromRoute(route) {
|
|
3
|
+
var _route$CHILD_STATE, _state$index;
|
|
4
|
+
|
|
5
|
+
// @ts-expect-error: this isn't in type definitions coz we want this private
|
|
6
|
+
const state = (_route$CHILD_STATE = route[CHILD_STATE]) !== null && _route$CHILD_STATE !== void 0 ? _route$CHILD_STATE : route.state;
|
|
7
|
+
const params = route.params;
|
|
8
|
+
const routeName = state ? // Get the currently active route name in the nested navigator
|
|
9
|
+
state.routes[// If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack
|
|
10
|
+
// The type property will only exist for rehydrated state and not for state from deep link
|
|
11
|
+
(_state$index = state.index) !== null && _state$index !== void 0 ? _state$index : typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1].name : // If state doesn't exist, we need to default to `screen` param if available
|
|
12
|
+
typeof (params === null || params === void 0 ? void 0 : params.screen) === 'string' ? params.screen : undefined;
|
|
13
|
+
return routeName;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=getFocusedRouteNameFromRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["getFocusedRouteNameFromRoute.tsx"],"names":["CHILD_STATE","getFocusedRouteNameFromRoute","route","state","params","routeName","routes","index","type","length","name","screen","undefined"],"mappings":"AAEA,SAASA,WAAT,QAA4B,iBAA5B;AAEA,eAAe,SAASC,4BAAT,CACbC,KADa,EAEO;AAAA;;AACpB;AACA,QAAMC,KAAK,yBAAGD,KAAK,CAACF,WAAD,CAAR,mEAAyBE,KAAK,CAACC,KAA1C;AACA,QAAMC,MAAM,GAAGF,KAAK,CAACE,MAArB;AAEA,QAAMC,SAAS,GAAGF,KAAK,GACnB;AACAA,EAAAA,KAAK,CAACG,MAAN,CACE;AACA;AAFF,kBAGEH,KAAK,CAACI,KAHR,uDAIK,OAAOJ,KAAK,CAACK,IAAb,KAAsB,QAAtB,IAAkCL,KAAK,CAACK,IAAN,KAAe,OAAjD,GACG,CADH,GAEGL,KAAK,CAACG,MAAN,CAAaG,MAAb,GAAsB,CAN9B,EAOEC,IATiB,GAUnB;AACF,UAAON,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEO,MAAf,MAA0B,QAA1B,GACEP,MAAM,CAACO,MADT,GAEEC,SAbJ;AAeA,SAAOP,SAAP;AACD","sourcesContent":["import type { Route } from '@react-navigation/routers';\n\nimport { CHILD_STATE } from './useRouteCache';\n\nexport default function getFocusedRouteNameFromRoute(\n route: Partial<Route<string>>\n): string | undefined {\n // @ts-expect-error: this isn't in type definitions coz we want this private\n const state = route[CHILD_STATE] ?? route.state;\n const params = route.params as { screen?: unknown } | undefined;\n\n const routeName = state\n ? // Get the currently active route name in the nested navigator\n state.routes[\n // If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack\n // The type property will only exist for rehydrated state and not for state from deep link\n state.index ??\n (typeof state.type === 'string' && state.type !== 'stack'\n ? 0\n : state.routes.length - 1)\n ].name\n : // If state doesn't exist, we need to default to `screen` param if available\n typeof params?.screen === 'string'\n ? params.screen\n : undefined;\n\n return routeName;\n}\n"]}
|