@react-navigation/core 6.4.3 → 6.4.5
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/commonjs/BaseNavigationContainer.js +17 -69
- package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
- package/lib/commonjs/CurrentRenderContext.js +0 -4
- package/lib/commonjs/CurrentRenderContext.js.map +1 -1
- package/lib/commonjs/EnsureSingleNavigator.js +1 -12
- package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
- package/lib/commonjs/Group.js +0 -1
- package/lib/commonjs/Group.js.map +1 -1
- package/lib/commonjs/NavigationBuilderContext.js +0 -4
- package/lib/commonjs/NavigationBuilderContext.js.map +1 -1
- package/lib/commonjs/NavigationContainerRefContext.js +0 -4
- package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
- package/lib/commonjs/NavigationContext.js +0 -4
- package/lib/commonjs/NavigationContext.js.map +1 -1
- package/lib/commonjs/NavigationHelpersContext.js +0 -4
- package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
- package/lib/commonjs/NavigationRouteContext.js +0 -4
- package/lib/commonjs/NavigationRouteContext.js.map +1 -1
- package/lib/commonjs/NavigationStateContext.js +0 -12
- package/lib/commonjs/NavigationStateContext.js.map +1 -1
- package/lib/commonjs/PreventRemoveContext.js +0 -4
- package/lib/commonjs/PreventRemoveContext.js.map +1 -1
- package/lib/commonjs/PreventRemoveProvider.js +3 -21
- package/lib/commonjs/PreventRemoveProvider.js.map +1 -1
- package/lib/commonjs/SceneView.js +8 -13
- package/lib/commonjs/SceneView.js.map +1 -1
- package/lib/commonjs/Screen.js +0 -1
- package/lib/commonjs/Screen.js.map +1 -1
- package/lib/commonjs/StaticContainer.js +0 -10
- package/lib/commonjs/StaticContainer.js.map +1 -1
- package/lib/commonjs/UnhandledActionContext.js +0 -4
- package/lib/commonjs/UnhandledActionContext.js.map +1 -1
- package/lib/commonjs/checkDuplicateRouteNames.js +0 -5
- package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -1
- package/lib/commonjs/checkSerializable.js +0 -9
- package/lib/commonjs/checkSerializable.js.map +1 -1
- package/lib/commonjs/createNavigationContainerRef.js +0 -13
- package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/createNavigatorFactory.js +0 -5
- package/lib/commonjs/createNavigatorFactory.js.map +1 -1
- package/lib/commonjs/findFocusedRoute.js +5 -10
- package/lib/commonjs/findFocusedRoute.js.map +1 -1
- package/lib/commonjs/fromEntries.js +0 -3
- package/lib/commonjs/fromEntries.js.map +1 -1
- package/lib/commonjs/getActionFromState.js +11 -22
- package/lib/commonjs/getActionFromState.js.map +1 -1
- package/lib/commonjs/getFocusedRouteNameFromRoute.js +7 -8
- package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -1
- package/lib/commonjs/getPathFromState.js +25 -55
- package/lib/commonjs/getPathFromState.js.map +1 -1
- package/lib/commonjs/getStateFromPath.js +48 -105
- package/lib/commonjs/getStateFromPath.js.map +1 -1
- package/lib/commonjs/index.js +0 -30
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/isArrayEqual.js +0 -3
- package/lib/commonjs/isArrayEqual.js.map +1 -1
- package/lib/commonjs/isRecordEqual.js +0 -4
- package/lib/commonjs/isRecordEqual.js.map +1 -1
- package/lib/commonjs/types.js +3 -5
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useChildListeners.js +0 -5
- package/lib/commonjs/useChildListeners.js.map +1 -1
- package/lib/commonjs/useComponent.js +3 -9
- package/lib/commonjs/useComponent.js.map +1 -1
- package/lib/commonjs/useCurrentRender.js +0 -7
- package/lib/commonjs/useCurrentRender.js.map +1 -1
- package/lib/commonjs/useDescriptors.js +11 -21
- package/lib/commonjs/useDescriptors.js.map +1 -1
- package/lib/commonjs/useEventEmitter.js +2 -24
- package/lib/commonjs/useEventEmitter.js.map +1 -1
- package/lib/commonjs/useFocusEffect.js +2 -20
- package/lib/commonjs/useFocusEffect.js.map +1 -1
- package/lib/commonjs/useFocusEvents.js +9 -15
- package/lib/commonjs/useFocusEvents.js.map +1 -1
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js +0 -8
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/commonjs/useIsFocused.js +0 -8
- package/lib/commonjs/useIsFocused.js.map +1 -1
- package/lib/commonjs/useKeyedChildListeners.js +0 -4
- package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
- package/lib/commonjs/useNavigation.js +3 -11
- package/lib/commonjs/useNavigation.js.map +1 -1
- package/lib/commonjs/useNavigationBuilder.js +34 -91
- package/lib/commonjs/useNavigationBuilder.js.map +1 -1
- package/lib/commonjs/useNavigationCache.js +18 -30
- package/lib/commonjs/useNavigationCache.js.map +1 -1
- package/lib/commonjs/useNavigationContainerRef.js +0 -8
- package/lib/commonjs/useNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/useNavigationHelpers.js +4 -18
- package/lib/commonjs/useNavigationHelpers.js.map +1 -1
- package/lib/commonjs/useNavigationState.js +5 -9
- package/lib/commonjs/useNavigationState.js.map +1 -1
- package/lib/commonjs/useOnAction.js +8 -25
- package/lib/commonjs/useOnAction.js.map +1 -1
- package/lib/commonjs/useOnGetState.js +6 -16
- package/lib/commonjs/useOnGetState.js.map +1 -1
- package/lib/commonjs/useOnPreventRemove.js +9 -24
- package/lib/commonjs/useOnPreventRemove.js.map +1 -1
- package/lib/commonjs/useOnRouteFocus.js +0 -8
- package/lib/commonjs/useOnRouteFocus.js.map +1 -1
- package/lib/commonjs/useOptionsGetters.js +5 -24
- package/lib/commonjs/useOptionsGetters.js.map +1 -1
- package/lib/commonjs/usePreventRemove.js +0 -11
- package/lib/commonjs/usePreventRemove.js.map +1 -1
- package/lib/commonjs/usePreventRemoveContext.js +0 -8
- package/lib/commonjs/usePreventRemoveContext.js.map +1 -1
- package/lib/commonjs/useRegisterNavigator.js +0 -8
- package/lib/commonjs/useRegisterNavigator.js.map +1 -1
- package/lib/commonjs/useRoute.js +0 -8
- package/lib/commonjs/useRoute.js.map +1 -1
- package/lib/commonjs/useRouteCache.js +1 -10
- package/lib/commonjs/useRouteCache.js.map +1 -1
- package/lib/commonjs/useScheduleUpdate.js +1 -8
- package/lib/commonjs/useScheduleUpdate.js.map +1 -1
- package/lib/commonjs/useSyncState.js +9 -17
- package/lib/commonjs/useSyncState.js.map +1 -1
- package/lib/commonjs/validatePathConfig.js +0 -7
- package/lib/commonjs/validatePathConfig.js.map +1 -1
- package/lib/module/BaseNavigationContainer.js +17 -46
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/CurrentRenderContext.js +1 -1
- package/lib/module/CurrentRenderContext.js.map +1 -1
- package/lib/module/EnsureSingleNavigator.js +1 -7
- package/lib/module/EnsureSingleNavigator.js.map +1 -1
- package/lib/module/Group.js.map +1 -1
- package/lib/module/NavigationBuilderContext.js +0 -1
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationContainerRefContext.js +0 -1
- package/lib/module/NavigationContainerRefContext.js.map +1 -1
- package/lib/module/NavigationContext.js +0 -1
- package/lib/module/NavigationContext.js.map +1 -1
- package/lib/module/NavigationHelpersContext.js +0 -1
- package/lib/module/NavigationHelpersContext.js.map +1 -1
- package/lib/module/NavigationRouteContext.js +1 -1
- package/lib/module/NavigationRouteContext.js.map +1 -1
- package/lib/module/NavigationStateContext.js +0 -6
- package/lib/module/NavigationStateContext.js.map +1 -1
- package/lib/module/PreventRemoveContext.js +1 -0
- package/lib/module/PreventRemoveContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +3 -12
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/SceneView.js +8 -5
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/Screen.js.map +1 -1
- package/lib/module/StaticContainer.js +1 -6
- package/lib/module/StaticContainer.js.map +1 -1
- package/lib/module/UnhandledActionContext.js.map +1 -1
- package/lib/module/checkDuplicateRouteNames.js +0 -4
- package/lib/module/checkDuplicateRouteNames.js.map +1 -1
- package/lib/module/checkSerializable.js +0 -8
- package/lib/module/checkSerializable.js.map +1 -1
- package/lib/module/createNavigationContainerRef.js +0 -10
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +0 -2
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/findFocusedRoute.js +5 -9
- package/lib/module/findFocusedRoute.js.map +1 -1
- package/lib/module/fromEntries.js +0 -2
- package/lib/module/fromEntries.js.map +1 -1
- package/lib/module/getActionFromState.js +11 -21
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getFocusedRouteNameFromRoute.js +7 -6
- package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -1
- package/lib/module/getPathFromState.js +25 -49
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getStateFromPath.js +48 -98
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/isArrayEqual.js +0 -2
- package/lib/module/isArrayEqual.js.map +1 -1
- package/lib/module/isRecordEqual.js +0 -3
- package/lib/module/isRecordEqual.js.map +1 -1
- package/lib/module/types.js +3 -3
- package/lib/module/types.js.map +1 -1
- package/lib/module/useChildListeners.js +0 -2
- package/lib/module/useChildListeners.js.map +1 -1
- package/lib/module/useComponent.js +3 -6
- package/lib/module/useComponent.js.map +1 -1
- package/lib/module/useCurrentRender.js +0 -2
- package/lib/module/useCurrentRender.js.map +1 -1
- package/lib/module/useDescriptors.js +11 -11
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +2 -21
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEffect.js +2 -15
- package/lib/module/useFocusEffect.js.map +1 -1
- package/lib/module/useFocusEvents.js +9 -10
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +0 -3
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useIsFocused.js +1 -3
- package/lib/module/useIsFocused.js.map +1 -1
- package/lib/module/useKeyedChildListeners.js +0 -1
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useNavigation.js +3 -5
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +37 -63
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +18 -24
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationContainerRef.js +0 -2
- package/lib/module/useNavigationContainerRef.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +4 -9
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationState.js +5 -4
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +8 -19
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetState.js +6 -8
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +9 -14
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js +0 -3
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +5 -17
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +1 -2
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/usePreventRemoveContext.js +0 -2
- package/lib/module/usePreventRemoveContext.js.map +1 -1
- package/lib/module/useRegisterNavigator.js +1 -3
- package/lib/module/useRegisterNavigator.js.map +1 -1
- package/lib/module/useRoute.js +0 -3
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +1 -6
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +1 -3
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/module/useSyncState.js +9 -13
- package/lib/module/useSyncState.js.map +1 -1
- package/lib/module/validatePathConfig.js +0 -6
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +1 -0
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -0
- package/lib/typescript/src/CurrentRenderContext.d.ts +1 -0
- package/lib/typescript/src/CurrentRenderContext.d.ts.map +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -0
- package/lib/typescript/src/Group.d.ts +1 -0
- package/lib/typescript/src/Group.d.ts.map +1 -0
- package/lib/typescript/src/NavigationBuilderContext.d.ts +1 -0
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -0
- package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationContext.d.ts +1 -0
- package/lib/typescript/src/NavigationContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -0
- package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationRouteContext.d.ts +1 -0
- package/lib/typescript/src/NavigationRouteContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationStateContext.d.ts +1 -0
- package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -0
- package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
- package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -0
- package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -0
- package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -0
- package/lib/typescript/src/SceneView.d.ts +1 -0
- package/lib/typescript/src/SceneView.d.ts.map +1 -0
- package/lib/typescript/src/Screen.d.ts +1 -0
- package/lib/typescript/src/Screen.d.ts.map +1 -0
- package/lib/typescript/src/StaticContainer.d.ts +1 -0
- package/lib/typescript/src/StaticContainer.d.ts.map +1 -0
- package/lib/typescript/src/UnhandledActionContext.d.ts +1 -0
- package/lib/typescript/src/UnhandledActionContext.d.ts.map +1 -0
- package/lib/typescript/src/checkDuplicateRouteNames.d.ts +1 -0
- package/lib/typescript/src/checkDuplicateRouteNames.d.ts.map +1 -0
- package/lib/typescript/src/checkSerializable.d.ts +1 -0
- package/lib/typescript/src/checkSerializable.d.ts.map +1 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -0
- package/lib/typescript/src/createNavigatorFactory.d.ts +1 -0
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -0
- package/lib/typescript/src/findFocusedRoute.d.ts +1 -0
- package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -0
- package/lib/typescript/src/fromEntries.d.ts +1 -0
- package/lib/typescript/src/fromEntries.d.ts.map +1 -0
- package/lib/typescript/src/getActionFromState.d.ts +1 -0
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -0
- package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts +1 -0
- package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts.map +1 -0
- package/lib/typescript/src/getPathFromState.d.ts +1 -0
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -0
- package/lib/typescript/src/getStateFromPath.d.ts +1 -0
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/isArrayEqual.d.ts +1 -0
- package/lib/typescript/src/isArrayEqual.d.ts.map +1 -0
- package/lib/typescript/src/isRecordEqual.d.ts +1 -0
- package/lib/typescript/src/isRecordEqual.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +1 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/useChildListeners.d.ts +1 -0
- package/lib/typescript/src/useChildListeners.d.ts.map +1 -0
- package/lib/typescript/src/useComponent.d.ts +1 -0
- package/lib/typescript/src/useComponent.d.ts.map +1 -0
- package/lib/typescript/src/useCurrentRender.d.ts +1 -0
- package/lib/typescript/src/useCurrentRender.d.ts.map +1 -0
- package/lib/typescript/src/useDescriptors.d.ts +1 -0
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -0
- package/lib/typescript/src/useEventEmitter.d.ts +1 -0
- package/lib/typescript/src/useEventEmitter.d.ts.map +1 -0
- package/lib/typescript/src/useFocusEffect.d.ts +1 -0
- package/lib/typescript/src/useFocusEffect.d.ts.map +1 -0
- package/lib/typescript/src/useFocusEvents.d.ts +1 -0
- package/lib/typescript/src/useFocusEvents.d.ts.map +1 -0
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +1 -0
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -0
- package/lib/typescript/src/useIsFocused.d.ts +1 -0
- package/lib/typescript/src/useIsFocused.d.ts.map +1 -0
- package/lib/typescript/src/useKeyedChildListeners.d.ts +1 -0
- package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -0
- package/lib/typescript/src/useNavigation.d.ts +1 -0
- package/lib/typescript/src/useNavigation.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationBuilder.d.ts +1 -0
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationCache.d.ts +1 -0
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -0
- package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationHelpers.d.ts +1 -0
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationState.d.ts +1 -0
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -0
- package/lib/typescript/src/useOnAction.d.ts +1 -0
- package/lib/typescript/src/useOnAction.d.ts.map +1 -0
- package/lib/typescript/src/useOnGetState.d.ts +1 -0
- package/lib/typescript/src/useOnGetState.d.ts.map +1 -0
- package/lib/typescript/src/useOnPreventRemove.d.ts +1 -0
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -0
- package/lib/typescript/src/useOnRouteFocus.d.ts +1 -0
- package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -0
- package/lib/typescript/src/useOptionsGetters.d.ts +1 -0
- package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -0
- package/lib/typescript/src/usePreventRemove.d.ts +1 -0
- package/lib/typescript/src/usePreventRemove.d.ts.map +1 -0
- package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -0
- package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -0
- package/lib/typescript/src/useRegisterNavigator.d.ts +1 -0
- package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -0
- package/lib/typescript/src/useRoute.d.ts +1 -0
- package/lib/typescript/src/useRoute.d.ts.map +1 -0
- package/lib/typescript/src/useRouteCache.d.ts +1 -0
- package/lib/typescript/src/useRouteCache.d.ts.map +1 -0
- package/lib/typescript/src/useScheduleUpdate.d.ts +1 -0
- package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -0
- package/lib/typescript/src/useSyncState.d.ts +1 -0
- package/lib/typescript/src/useSyncState.d.ts.map +1 -0
- package/lib/typescript/src/validatePathConfig.d.ts +1 -0
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -0
- package/package.json +5 -5
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CommonActions } from '@react-navigation/routers';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import NavigationBuilderContext from './NavigationBuilderContext';
|
|
4
|
-
|
|
5
4
|
/**
|
|
6
5
|
* Hook to cache navigation objects for each screen in the navigator.
|
|
7
6
|
* It's important to cache them to make sure navigation objects don't change between renders.
|
|
@@ -18,20 +17,22 @@ export default function useNavigationCache(_ref) {
|
|
|
18
17
|
} = _ref;
|
|
19
18
|
const {
|
|
20
19
|
stackRef
|
|
21
|
-
} = React.useContext(NavigationBuilderContext);
|
|
20
|
+
} = React.useContext(NavigationBuilderContext);
|
|
21
|
+
|
|
22
|
+
// Cache object which holds navigation objects for each screen
|
|
22
23
|
// We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
|
|
23
24
|
// In reality, these deps will rarely change, if ever
|
|
24
|
-
|
|
25
25
|
const cache = React.useMemo(() => ({
|
|
26
26
|
current: {}
|
|
27
|
-
}),
|
|
27
|
+
}),
|
|
28
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
28
29
|
[getState, navigation, setOptions, router, emitter]);
|
|
29
|
-
const actions = {
|
|
30
|
+
const actions = {
|
|
31
|
+
...router.actionCreators,
|
|
30
32
|
...CommonActions
|
|
31
33
|
};
|
|
32
34
|
cache.current = state.routes.reduce((acc, route) => {
|
|
33
35
|
const previous = cache.current[route.key];
|
|
34
|
-
|
|
35
36
|
if (previous) {
|
|
36
37
|
// If a cached navigation object already exists, reuse it
|
|
37
38
|
acc[route.key] = previous;
|
|
@@ -41,10 +42,8 @@ export default function useNavigationCache(_ref) {
|
|
|
41
42
|
emit,
|
|
42
43
|
...rest
|
|
43
44
|
} = navigation;
|
|
44
|
-
|
|
45
45
|
const dispatch = thunk => {
|
|
46
46
|
const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
|
|
47
|
-
|
|
48
47
|
if (action != null) {
|
|
49
48
|
navigation.dispatch({
|
|
50
49
|
source: route.key,
|
|
@@ -52,17 +51,14 @@ export default function useNavigationCache(_ref) {
|
|
|
52
51
|
});
|
|
53
52
|
}
|
|
54
53
|
};
|
|
55
|
-
|
|
56
54
|
const withStack = callback => {
|
|
57
55
|
let isStackSet = false;
|
|
58
|
-
|
|
59
56
|
try {
|
|
60
57
|
if (process.env.NODE_ENV !== 'production' && stackRef && !stackRef.current) {
|
|
61
58
|
// Capture the stack trace for devtools
|
|
62
59
|
stackRef.current = new Error().stack;
|
|
63
60
|
isStackSet = true;
|
|
64
61
|
}
|
|
65
|
-
|
|
66
62
|
callback();
|
|
67
63
|
} finally {
|
|
68
64
|
if (isStackSet && stackRef) {
|
|
@@ -70,20 +66,19 @@ export default function useNavigationCache(_ref) {
|
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
};
|
|
73
|
-
|
|
74
69
|
const helpers = Object.keys(actions).reduce((acc, name) => {
|
|
75
70
|
acc[name] = function () {
|
|
76
71
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
77
72
|
args[_key] = arguments[_key];
|
|
78
73
|
}
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
return withStack(() =>
|
|
75
|
+
// @ts-expect-error: name is a valid key, but TypeScript is dumb
|
|
81
76
|
dispatch(actions[name](...args)));
|
|
82
77
|
};
|
|
83
|
-
|
|
84
78
|
return acc;
|
|
85
79
|
}, {});
|
|
86
|
-
acc[route.key] = {
|
|
80
|
+
acc[route.key] = {
|
|
81
|
+
...rest,
|
|
87
82
|
...helpers,
|
|
88
83
|
// FIXME: too much work to fix the types for now
|
|
89
84
|
...emitter.create(route.key),
|
|
@@ -94,28 +89,27 @@ export default function useNavigationCache(_ref) {
|
|
|
94
89
|
// we return the cached navigation object for the relevant route
|
|
95
90
|
return acc[route.key];
|
|
96
91
|
}
|
|
97
|
-
|
|
98
92
|
return rest.getParent(id);
|
|
99
93
|
},
|
|
100
|
-
setOptions: options => setOptions(o => ({
|
|
101
|
-
|
|
94
|
+
setOptions: options => setOptions(o => ({
|
|
95
|
+
...o,
|
|
96
|
+
[route.key]: {
|
|
97
|
+
...o[route.key],
|
|
102
98
|
...options
|
|
103
99
|
}
|
|
104
100
|
})),
|
|
105
101
|
isFocused: () => {
|
|
106
102
|
const state = getState();
|
|
107
|
-
|
|
108
103
|
if (state.routes[state.index].key !== route.key) {
|
|
109
104
|
return false;
|
|
110
|
-
}
|
|
111
|
-
// This makes sure that we return the focus state in the whole tree, not just this navigator
|
|
112
|
-
|
|
105
|
+
}
|
|
113
106
|
|
|
107
|
+
// If the current screen is focused, we also need to check if parent navigator is focused
|
|
108
|
+
// This makes sure that we return the focus state in the whole tree, not just this navigator
|
|
114
109
|
return navigation ? navigation.isFocused() : true;
|
|
115
110
|
}
|
|
116
111
|
};
|
|
117
112
|
}
|
|
118
|
-
|
|
119
113
|
return acc;
|
|
120
114
|
}, {});
|
|
121
115
|
return cache.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","React","NavigationBuilderContext","useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","useContext","cache","useMemo","current","actions","actionCreators","routes","reduce","acc","route","previous","key","emit","rest","dispatch","thunk","action","source","withStack","callback","isStackSet","process","env","NODE_ENV","Error","stack","undefined","helpers","Object","keys","name","args","create","getParent","id","getId","options","o","isFocused","index"],"
|
|
1
|
+
{"version":3,"names":["CommonActions","React","NavigationBuilderContext","useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","useContext","cache","useMemo","current","actions","actionCreators","routes","reduce","acc","route","previous","key","emit","rest","dispatch","thunk","action","source","withStack","callback","isStackSet","process","env","NODE_ENV","Error","stack","undefined","helpers","Object","keys","name","args","create","getParent","id","getId","options","o","isFocused","index"],"sourceRoot":"../../src","sources":["useNavigationCache.tsx"],"mappings":"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"}
|
|
@@ -2,11 +2,9 @@ import * as React from 'react';
|
|
|
2
2
|
import createNavigationContainerRef from './createNavigationContainerRef';
|
|
3
3
|
export default function useNavigationContainerRef() {
|
|
4
4
|
const navigation = React.useRef(null);
|
|
5
|
-
|
|
6
5
|
if (navigation.current == null) {
|
|
7
6
|
navigation.current = createNavigationContainerRef();
|
|
8
7
|
}
|
|
9
|
-
|
|
10
8
|
return navigation.current;
|
|
11
9
|
}
|
|
12
10
|
//# sourceMappingURL=useNavigationContainerRef.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createNavigationContainerRef","useNavigationContainerRef","navigation","useRef","current"],"
|
|
1
|
+
{"version":3,"names":["React","createNavigationContainerRef","useNavigationContainerRef","navigation","useRef","current"],"sourceRoot":"../../src","sources":["useNavigationContainerRef.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,4BAA4B,MAAM,gCAAgC;AAGzE,eAAe,SAASC,yBAAyB,GAEC;EAChD,MAAMC,UAAU,GACdH,KAAK,CAACI,MAAM,CAAsD,IAAI,CAAC;EAEzE,IAAID,UAAU,CAACE,OAAO,IAAI,IAAI,EAAE;IAC9BF,UAAU,CAACE,OAAO,GAAGJ,4BAA4B,EAAa;EAChE;EAEA,OAAOE,UAAU,CAACE,OAAO;AAC3B"}
|
|
@@ -6,7 +6,6 @@ import UnhandledActionContext from './UnhandledActionContext';
|
|
|
6
6
|
// This is to make TypeScript compiler happy
|
|
7
7
|
// eslint-disable-next-line babel/no-unused-expressions
|
|
8
8
|
PrivateValueStore;
|
|
9
|
-
|
|
10
9
|
/**
|
|
11
10
|
* Navigation object with helper methods to be used by a navigator.
|
|
12
11
|
* This object includes methods for common actions as well as methods the parent screen's navigation object.
|
|
@@ -25,13 +24,12 @@ export default function useNavigationHelpers(_ref) {
|
|
|
25
24
|
const dispatch = op => {
|
|
26
25
|
const action = typeof op === 'function' ? op(getState()) : op;
|
|
27
26
|
const handled = onAction(action);
|
|
28
|
-
|
|
29
27
|
if (!handled) {
|
|
30
28
|
onUnhandledAction === null || onUnhandledAction === void 0 ? void 0 : onUnhandledAction(action);
|
|
31
29
|
}
|
|
32
30
|
};
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
const actions = {
|
|
32
|
+
...router.actionCreators,
|
|
35
33
|
...CommonActions
|
|
36
34
|
};
|
|
37
35
|
const helpers = Object.keys(actions).reduce((acc, name) => {
|
|
@@ -39,10 +37,10 @@ export default function useNavigationHelpers(_ref) {
|
|
|
39
37
|
acc[name] = function () {
|
|
40
38
|
return dispatch(actions[name](...arguments));
|
|
41
39
|
};
|
|
42
|
-
|
|
43
40
|
return acc;
|
|
44
41
|
}, {});
|
|
45
|
-
const navigationHelpers = {
|
|
42
|
+
const navigationHelpers = {
|
|
43
|
+
...parentNavigationHelpers,
|
|
46
44
|
...helpers,
|
|
47
45
|
dispatch,
|
|
48
46
|
emit: emitter.emit,
|
|
@@ -59,14 +57,11 @@ export default function useNavigationHelpers(_ref) {
|
|
|
59
57
|
getParent: id => {
|
|
60
58
|
if (id !== undefined) {
|
|
61
59
|
let current = navigationHelpers;
|
|
62
|
-
|
|
63
60
|
while (current && id !== current.getId()) {
|
|
64
61
|
current = current.getParent();
|
|
65
62
|
}
|
|
66
|
-
|
|
67
63
|
return current;
|
|
68
64
|
}
|
|
69
|
-
|
|
70
65
|
return parentNavigationHelpers;
|
|
71
66
|
},
|
|
72
67
|
getState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","React","NavigationContext","PrivateValueStore","UnhandledActionContext","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","useContext","parentNavigationHelpers","useMemo","dispatch","op","action","handled","actions","actionCreators","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"
|
|
1
|
+
{"version":3,"names":["CommonActions","React","NavigationContext","PrivateValueStore","UnhandledActionContext","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","useContext","parentNavigationHelpers","useMemo","dispatch","op","action","handled","actions","actionCreators","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"sourceRoot":"../../src","sources":["useNavigationHelpers.tsx"],"mappings":"AAAA,SACEA,aAAa,QAKR,2BAA2B;AAClC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SAA4BC,iBAAiB,QAAQ,SAAS;AAC9D,OAAOC,sBAAsB,MAAM,0BAA0B;AAG7D;AACA;AACAD,iBAAiB;AAUjB;AACA;AACA;AACA;AACA,eAAe,SAASE,oBAAoB,OAWjB;EAAA,IANzB;IACAC,EAAE,EAAEC,WAAW;IACfC,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC;EACvB,MAAMC,iBAAiB,GAAGX,KAAK,CAACY,UAAU,CAACT,sBAAsB,CAAC;EAClE,MAAMU,uBAAuB,GAAGb,KAAK,CAACY,UAAU,CAACX,iBAAiB,CAAC;EAEnE,OAAOD,KAAK,CAACc,OAAO,CAAC,MAAM;IACzB,MAAMC,QAAQ,GAAIC,EAAuC,IAAK;MAC5D,MAAMC,MAAM,GAAG,OAAOD,EAAE,KAAK,UAAU,GAAGA,EAAE,CAACR,QAAQ,EAAE,CAAC,GAAGQ,EAAE;MAE7D,MAAME,OAAO,GAAGX,QAAQ,CAACU,MAAM,CAAC;MAEhC,IAAI,CAACC,OAAO,EAAE;QACZP,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGM,MAAM,CAAC;MAC7B;IACF,CAAC;IAED,MAAME,OAAO,GAAG;MACd,GAAGT,MAAM,CAACU,cAAc;MACxB,GAAGrB;IACL,CAAC;IAED,MAAMsB,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACzD;MACAD,GAAG,CAACC,IAAI,CAAC,GAAG;QAAA,OAAkBX,QAAQ,CAACI,OAAO,CAACO,IAAI,CAAC,CAAC,YAAO,CAAC,CAAC;MAAA;MAC9D,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAkB;IAEvB,MAAME,iBAAiB,GAAG;MACxB,GAAGd,uBAAuB;MAC1B,GAAGQ,OAAO;MACVN,QAAQ;MACRa,IAAI,EAAEnB,OAAO,CAACmB,IAAI;MAClBC,SAAS,EAAEhB,uBAAuB,GAC9BA,uBAAuB,CAACgB,SAAS,GACjC,MAAM,IAAI;MACdC,SAAS,EAAE,MAAM;QACf,MAAMC,KAAK,GAAGvB,QAAQ,EAAE;QAExB,OACEE,MAAM,CAACsB,iBAAiB,CAACD,KAAK,EAAEhC,aAAa,CAACkC,MAAM,EAAE,EAAY;UAChEC,UAAU,EAAEH,KAAK,CAACG,UAAU;UAC5BC,cAAc,EAAE,CAAC,CAAC;UAClBC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,KAAK,IAAI,KACXvB,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAEiB,SAAS,EAAE,KACpC,KAAK;MAET,CAAC;MACDO,KAAK,EAAE,MAAM/B,WAAW;MACxBgC,SAAS,EAAGjC,EAAW,IAAK;QAC1B,IAAIA,EAAE,KAAKkC,SAAS,EAAE;UACpB,IAAIC,OAAO,GAAGb,iBAAiB;UAE/B,OAAOa,OAAO,IAAInC,EAAE,KAAKmC,OAAO,CAACH,KAAK,EAAE,EAAE;YACxCG,OAAO,GAAGA,OAAO,CAACF,SAAS,EAAE;UAC/B;UAEA,OAAOE,OAAO;QAChB;QAEA,OAAO3B,uBAAuB;MAChC,CAAC;MACDL;IACF,CAA+D;IAE/D,OAAOmB,iBAAiB;EAC1B,CAAC,EAAE,CACDrB,WAAW,EACXG,OAAO,CAACmB,IAAI,EACZpB,QAAQ,EACRD,QAAQ,EACRI,iBAAiB,EACjBE,uBAAuB,EACvBH,MAAM,CACP,CAAC;AACJ"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import useNavigation from './useNavigation';
|
|
3
|
-
|
|
4
3
|
/**
|
|
5
4
|
* Hook to get a value from the current navigation state using a selector.
|
|
6
5
|
*
|
|
7
6
|
* @param selector Selector function to get a value from the state.
|
|
8
7
|
*/
|
|
9
8
|
export default function useNavigationState(selector) {
|
|
10
|
-
const navigation = useNavigation();
|
|
11
|
-
// The state is only to make sure that there's a re-render when we have a new value
|
|
9
|
+
const navigation = useNavigation();
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
// We don't care about the state value, we run the selector again at the end
|
|
12
|
+
// The state is only to make sure that there's a re-render when we have a new value
|
|
13
|
+
const [, setResult] = React.useState(() => selector(navigation.getState()));
|
|
14
14
|
|
|
15
|
+
// We store the selector in a ref to avoid re-subscribing listeners every render
|
|
15
16
|
const selectorRef = React.useRef(selector);
|
|
16
17
|
React.useEffect(() => {
|
|
17
18
|
selectorRef.current = selector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useNavigation","useNavigationState","selector","navigation","setResult","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"
|
|
1
|
+
{"version":3,"names":["React","useNavigation","useNavigationState","selector","navigation","setResult","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,OAAOC,aAAa,MAAM,iBAAiB;AAM3C;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,kBAAkB,CACxCC,QAAgC,EAC7B;EACH,MAAMC,UAAU,GAAGH,aAAa,EAA6B;;EAE7D;EACA;EACA,MAAM,GAAGI,SAAS,CAAC,GAAGL,KAAK,CAACM,QAAQ,CAAC,MAAMH,QAAQ,CAACC,UAAU,CAACG,QAAQ,EAAE,CAAC,CAAC;;EAE3E;EACA,MAAMC,WAAW,GAAGR,KAAK,CAACS,MAAM,CAACN,QAAQ,CAAC;EAE1CH,KAAK,CAACU,SAAS,CAAC,MAAM;IACpBF,WAAW,CAACG,OAAO,GAAGR,QAAQ;EAChC,CAAC,CAAC;EAEFH,KAAK,CAACU,SAAS,CAAC,MAAM;IACpB,MAAME,WAAW,GAAGR,UAAU,CAACS,WAAW,CAAC,OAAO,EAAGC,CAAC,IAAK;MACzDT,SAAS,CAACG,WAAW,CAACG,OAAO,CAACG,CAAC,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAOJ,WAAW;EACpB,CAAC,EAAE,CAACR,UAAU,CAAC,CAAC;EAEhB,OAAOD,QAAQ,CAACC,UAAU,CAACG,QAAQ,EAAE,CAAC;AACxC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import NavigationBuilderContext from './NavigationBuilderContext';
|
|
3
3
|
import useOnPreventRemove, { shouldPreventRemove } from './useOnPreventRemove';
|
|
4
|
-
|
|
5
4
|
/**
|
|
6
5
|
* Hook to handle actions for a navigator, including state updates and bubbling.
|
|
7
6
|
*
|
|
@@ -34,64 +33,54 @@ export default function useOnAction(_ref) {
|
|
|
34
33
|
});
|
|
35
34
|
const onAction = React.useCallback(function (action) {
|
|
36
35
|
let visitedNavigators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
|
|
37
|
-
const state = getState();
|
|
38
|
-
// We keep track of navigators which have already tried to handle the action and return if it's already visited
|
|
36
|
+
const state = getState();
|
|
39
37
|
|
|
38
|
+
// Since actions can bubble both up and down, they could come to the same navigator again
|
|
39
|
+
// We keep track of navigators which have already tried to handle the action and return if it's already visited
|
|
40
40
|
if (visitedNavigators.has(state.key)) {
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
|
-
|
|
44
43
|
visitedNavigators.add(state.key);
|
|
45
|
-
|
|
46
44
|
if (typeof action.target !== 'string' || action.target === state.key) {
|
|
47
|
-
let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);
|
|
48
|
-
// So instead of `null`, we use the state object for such cases to signal that action was handled
|
|
45
|
+
let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);
|
|
49
46
|
|
|
47
|
+
// If a target is specified and set to current navigator, the action shouldn't bubble
|
|
48
|
+
// So instead of `null`, we use the state object for such cases to signal that action was handled
|
|
50
49
|
result = result === null && action.target === state.key ? state : result;
|
|
51
|
-
|
|
52
50
|
if (result !== null) {
|
|
53
51
|
onDispatchAction(action, state === result);
|
|
54
|
-
|
|
55
52
|
if (state !== result) {
|
|
56
53
|
const isPrevented = shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, result.routes, action);
|
|
57
|
-
|
|
58
54
|
if (isPrevented) {
|
|
59
55
|
return true;
|
|
60
56
|
}
|
|
61
|
-
|
|
62
57
|
setState(result);
|
|
63
58
|
}
|
|
64
|
-
|
|
65
59
|
if (onRouteFocusParent !== undefined) {
|
|
66
60
|
// Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree
|
|
67
61
|
// This means we need to focus all of the parent navigators of this navigator as well
|
|
68
62
|
const shouldFocus = router.shouldActionChangeFocus(action);
|
|
69
|
-
|
|
70
63
|
if (shouldFocus && key !== undefined) {
|
|
71
64
|
onRouteFocusParent(key);
|
|
72
65
|
}
|
|
73
66
|
}
|
|
74
|
-
|
|
75
67
|
return true;
|
|
76
68
|
}
|
|
77
69
|
}
|
|
78
|
-
|
|
79
70
|
if (onActionParent !== undefined) {
|
|
80
71
|
// Bubble action to the parent if the current navigator didn't handle it
|
|
81
72
|
if (onActionParent(action, visitedNavigators)) {
|
|
82
73
|
return true;
|
|
83
74
|
}
|
|
84
|
-
}
|
|
85
|
-
|
|
75
|
+
}
|
|
86
76
|
|
|
77
|
+
// If the action wasn't handled by current navigator or a parent navigator, let children handle it
|
|
87
78
|
for (let i = actionListeners.length - 1; i >= 0; i--) {
|
|
88
79
|
const listener = actionListeners[i];
|
|
89
|
-
|
|
90
80
|
if (listener(action, visitedNavigators)) {
|
|
91
81
|
return true;
|
|
92
82
|
}
|
|
93
83
|
}
|
|
94
|
-
|
|
95
84
|
return false;
|
|
96
85
|
}, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
|
|
97
86
|
useOnPreventRemove({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","useOnPreventRemove","shouldPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","useOnPreventRemove","shouldPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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"}
|
|
@@ -13,27 +13,25 @@ export default function useOnGetState(_ref) {
|
|
|
13
13
|
const route = React.useContext(NavigationRouteContext);
|
|
14
14
|
const key = route ? route.key : 'root';
|
|
15
15
|
const getRehydratedState = React.useCallback(() => {
|
|
16
|
-
const state = getState();
|
|
16
|
+
const state = getState();
|
|
17
17
|
|
|
18
|
+
// Avoid returning new route objects if we don't need to
|
|
18
19
|
const routes = state.routes.map(route => {
|
|
19
20
|
var _getStateListeners$ro;
|
|
20
|
-
|
|
21
21
|
const childState = (_getStateListeners$ro = getStateListeners[route.key]) === null || _getStateListeners$ro === void 0 ? void 0 : _getStateListeners$ro.call(getStateListeners);
|
|
22
|
-
|
|
23
22
|
if (route.state === childState) {
|
|
24
23
|
return route;
|
|
25
24
|
}
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
return {
|
|
26
|
+
...route,
|
|
28
27
|
state: childState
|
|
29
28
|
};
|
|
30
29
|
});
|
|
31
|
-
|
|
32
30
|
if (isArrayEqual(state.routes, routes)) {
|
|
33
31
|
return state;
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
return {
|
|
34
|
+
...state,
|
|
37
35
|
routes
|
|
38
36
|
};
|
|
39
37
|
}, [getState, getStateListeners]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","useContext","route","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"
|
|
1
|
+
{"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","useContext","route","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,YAAY,MAAM,gBAAgB;AACzC,OAAOC,wBAAwB,MAExB,4BAA4B;AACnC,OAAOC,sBAAsB,MAAM,0BAA0B;AAO7D,eAAe,SAASC,aAAa,OAGzB;EAAA,IAH0B;IACpCC,QAAQ;IACRC;EACO,CAAC;EACR,MAAM;IAAEC;EAAiB,CAAC,GAAGP,KAAK,CAACQ,UAAU,CAACN,wBAAwB,CAAC;EACvE,MAAMO,KAAK,GAAGT,KAAK,CAACQ,UAAU,CAACL,sBAAsB,CAAC;EACtD,MAAMO,GAAG,GAAGD,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,EAAE;;IAExB;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEN,KAAK,IAAK;MAAA;MACzC,MAAMO,UAAU,4BAAGV,iBAAiB,CAACG,KAAK,CAACC,GAAG,CAAC,0DAA5B,2BAAAJ,iBAAiB,CAAe;MAEnD,IAAIG,KAAK,CAACI,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOP,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEI,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACT,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;EAEjCN,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,OAAOV,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,UAAU,EAAEG,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACJ,gBAAgB,EAAEI,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD"}
|
|
@@ -3,32 +3,29 @@ import NavigationBuilderContext from './NavigationBuilderContext';
|
|
|
3
3
|
import NavigationRouteContext from './NavigationRouteContext';
|
|
4
4
|
const VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');
|
|
5
5
|
export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const nextRouteKeys = nextRoutes.map(route => route.key); // Call these in reverse order so last screens handle the event first
|
|
6
|
+
const nextRouteKeys = nextRoutes.map(route => route.key);
|
|
9
7
|
|
|
8
|
+
// Call these in reverse order so last screens handle the event first
|
|
10
9
|
const removedRoutes = currentRoutes.filter(route => !nextRouteKeys.includes(route.key)).reverse();
|
|
11
|
-
const visitedRouteKeys =
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
const visitedRouteKeys =
|
|
11
|
+
// @ts-expect-error: add this property to mark that we've already emitted this action
|
|
12
|
+
action[VISITED_ROUTE_KEYS] ?? new Set();
|
|
13
|
+
const beforeRemoveAction = {
|
|
14
|
+
...action,
|
|
14
15
|
[VISITED_ROUTE_KEYS]: visitedRouteKeys
|
|
15
16
|
};
|
|
16
|
-
|
|
17
17
|
for (const route of removedRoutes) {
|
|
18
18
|
var _beforeRemoveListener;
|
|
19
|
-
|
|
20
19
|
if (visitedRouteKeys.has(route.key)) {
|
|
21
20
|
// Skip if we've already emitted this action for this screen
|
|
22
21
|
continue;
|
|
23
|
-
}
|
|
24
|
-
|
|
22
|
+
}
|
|
25
23
|
|
|
24
|
+
// First, we need to check if any child screens want to prevent it
|
|
26
25
|
const isPrevented = (_beforeRemoveListener = beforeRemoveListeners[route.key]) === null || _beforeRemoveListener === void 0 ? void 0 : _beforeRemoveListener.call(beforeRemoveListeners, beforeRemoveAction);
|
|
27
|
-
|
|
28
26
|
if (isPrevented) {
|
|
29
27
|
return true;
|
|
30
28
|
}
|
|
31
|
-
|
|
32
29
|
visitedRouteKeys.add(route.key);
|
|
33
30
|
const event = emitter.emit({
|
|
34
31
|
type: 'beforeRemove',
|
|
@@ -38,12 +35,10 @@ export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoute
|
|
|
38
35
|
},
|
|
39
36
|
canPreventDefault: true
|
|
40
37
|
});
|
|
41
|
-
|
|
42
38
|
if (event.defaultPrevented) {
|
|
43
39
|
return true;
|
|
44
40
|
}
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
return false;
|
|
48
43
|
};
|
|
49
44
|
export default function useOnPreventRemove(_ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","useContext","routeKey","useEffect","state","routes"],"
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","useContext","routeKey","useEffect","state","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAExB,4BAA4B;AACnC,OAAOC,sBAAsB,MAAM,0BAA0B;AAU7D,MAAMC,kBAAkB,GAAGC,MAAM,CAAC,oBAAoB,CAAC;AAEvD,OAAO,MAAMC,mBAAmB,GAAG,CACjCC,OAAkD,EAClDC,qBAA4E,EAC5EC,aAAgC,EAChCC,UAA0C,EAC1CC,MAAwB,KACrB;EACH,MAAMC,aAAa,GAAGF,UAAU,CAACG,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,GAAG,CAAC;;EAE1D;EACA,MAAMC,aAAa,GAAGP,aAAa,CAChCQ,MAAM,CAAEH,KAAK,IAAK,CAACF,aAAa,CAACM,QAAQ,CAACJ,KAAK,CAACC,GAAG,CAAC,CAAC,CACrDI,OAAO,EAAE;EAEZ,MAAMC,gBAA6B;EACjC;EACAT,MAAM,CAACP,kBAAkB,CAAC,IAAI,IAAIiB,GAAG,EAAU;EAEjD,MAAMC,kBAAkB,GAAG;IACzB,GAAGX,MAAM;IACT,CAACP,kBAAkB,GAAGgB;EACxB,CAAC;EAED,KAAK,MAAMN,KAAK,IAAIE,aAAa,EAAE;IAAA;IACjC,IAAII,gBAAgB,CAACG,GAAG,CAACT,KAAK,CAACC,GAAG,CAAC,EAAE;MACnC;MACA;IACF;;IAEA;IACA,MAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAG,CAAC,0DAAhC,2BAAAP,qBAAqB,EAAcc,kBAAkB,CAAC;IAE1E,IAAIE,WAAW,EAAE;MACf,OAAO,IAAI;IACb;IAEAJ,gBAAgB,CAACK,GAAG,CAACX,KAAK,CAACC,GAAG,CAAC;IAE/B,MAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAI,CAAC;MACzBC,IAAI,EAAE,cAAc;MACpBC,MAAM,EAAEf,KAAK,CAACC,GAAG;MACjBe,IAAI,EAAE;QAAEnB,MAAM,EAAEW;MAAmB,CAAC;MACpCS,iBAAiB,EAAE;IACrB,CAAC,CAAC;IAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;MAC1B,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAED,eAAe,SAASC,kBAAkB,OAI9B;EAAA,IAJ+B;IACzCC,QAAQ;IACR3B,OAAO;IACPC;EACO,CAAC;EACR,MAAM;IAAE2B;EAAiB,CAAC,GAAGlC,KAAK,CAACmC,UAAU,CAAClC,wBAAwB,CAAC;EACvE,MAAMY,KAAK,GAAGb,KAAK,CAACmC,UAAU,CAACjC,sBAAsB,CAAC;EACtD,MAAMkC,QAAQ,GAAGvB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,GAAG;EAE3Bd,KAAK,CAACqC,SAAS,CAAC,MAAM;IACpB,IAAID,QAAQ,EAAE;MACZ,OAAOF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,cAAc,EAAEE,QAAQ,EAAG1B,MAAM,IAAK;QAC9D,MAAM4B,KAAK,GAAGL,QAAQ,EAAE;QAExB,OAAO5B,mBAAmB,CACxBC,OAAO,EACPC,qBAAqB,EACrB+B,KAAK,CAACC,MAAM,EACZ,EAAE,EACF7B,MAAM,CACP;MACH,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACwB,gBAAgB,EAAE3B,qBAAqB,EAAED,OAAO,EAAE2B,QAAQ,EAAEG,QAAQ,CAAC,CAAC;AAC5E"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import NavigationBuilderContext from './NavigationBuilderContext';
|
|
3
|
-
|
|
4
3
|
/**
|
|
5
4
|
* Hook to handle focus actions for a route.
|
|
6
5
|
* Focus action needs to be treated specially, coz when a nested route is focused,
|
|
@@ -19,11 +18,9 @@ export default function useOnRouteFocus(_ref) {
|
|
|
19
18
|
return React.useCallback(key => {
|
|
20
19
|
const state = getState();
|
|
21
20
|
const result = router.getStateForRouteFocus(state, key);
|
|
22
|
-
|
|
23
21
|
if (result !== state) {
|
|
24
22
|
setState(result);
|
|
25
23
|
}
|
|
26
|
-
|
|
27
24
|
if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {
|
|
28
25
|
onRouteFocusParent(sourceRouteKey);
|
|
29
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","useContext","useCallback","state","result","getStateForRouteFocus","undefined"],"
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","useContext","useCallback","state","result","getStateForRouteFocus","undefined"],"sourceRoot":"../../src","sources":["useOnRouteFocus.tsx"],"mappings":"AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAAM,4BAA4B;AASjE;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAe,OAKnB;EAAA,IALqD;IACvEC,MAAM;IACNC,QAAQ;IACRC,GAAG,EAAEC,cAAc;IACnBC;EACe,CAAC;EAChB,MAAM;IAAEC,YAAY,EAAEC;EAAmB,CAAC,GAAGT,KAAK,CAACU,UAAU,CAC3DT,wBAAwB,CACzB;EAED,OAAOD,KAAK,CAACW,WAAW,CACrBN,GAAW,IAAK;IACf,MAAMO,KAAK,GAAGR,QAAQ,EAAE;IACxB,MAAMS,MAAM,GAAGV,MAAM,CAACW,qBAAqB,CAACF,KAAK,EAAEP,GAAG,CAAC;IAEvD,IAAIQ,MAAM,KAAKD,KAAK,EAAE;MACpBL,QAAQ,CAACM,MAAM,CAAC;IAClB;IAEA,IAAIJ,kBAAkB,KAAKM,SAAS,IAAIT,cAAc,KAAKS,SAAS,EAAE;MACpEN,kBAAkB,CAACH,cAAc,CAAC;IACpC;EACF,CAAC,EACD,CAACF,QAAQ,EAAEK,kBAAkB,EAAEN,MAAM,EAAEI,QAAQ,EAAED,cAAc,CAAC,CACjE;AACH"}
|