@react-navigation/core 8.0.0-alpha.4 → 8.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -14
- package/lib/module/BaseNavigationContainer.js +168 -87
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/ConsumedParamsContext.js +5 -0
- package/lib/module/ConsumedParamsContext.js.map +1 -0
- package/lib/module/DataLoading.js +129 -0
- package/lib/module/DataLoading.js.map +1 -0
- package/lib/module/NavigationBuilderContext.js +7 -10
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationIndependentTree.js +54 -9
- package/lib/module/NavigationIndependentTree.js.map +1 -1
- package/lib/module/NavigationProvider.js +36 -11
- package/lib/module/NavigationProvider.js.map +1 -1
- package/lib/module/NavigationRootContext.js +8 -0
- package/lib/module/NavigationRootContext.js.map +1 -0
- package/lib/module/NavigationStateContext.js +3 -0
- package/lib/module/NavigationStateContext.js.map +1 -1
- package/lib/module/PreventRemoveContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +40 -31
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/SceneView.js +12 -42
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/StaticNavigation.js +219 -67
- package/lib/module/StaticNavigation.js.map +1 -1
- package/lib/module/StaticTreeContext.js +5 -0
- package/lib/module/StaticTreeContext.js.map +1 -0
- package/lib/module/createNavigationContainerRef.js +7 -9
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +27 -5
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/findFocusedRoute.js +7 -4
- package/lib/module/findFocusedRoute.js.map +1 -1
- package/lib/module/getActionFromState.js +45 -20
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getPathFromState.js +204 -94
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getPatternParts.js +61 -14
- package/lib/module/getPatternParts.js.map +1 -1
- package/lib/module/getStateFromPath.js +608 -272
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/getStateFromRouteParams.js +23 -0
- package/lib/module/getStateFromRouteParams.js.map +1 -0
- package/lib/module/index.js +7 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal.js +2 -0
- package/lib/module/internal.js.map +1 -0
- package/lib/module/isRecordEqual.js +1 -1
- package/lib/module/isRecordEqual.js.map +1 -1
- package/lib/module/queryString.js +71 -0
- package/lib/module/queryString.js.map +1 -0
- package/lib/module/theming/useTheme.js +1 -1
- package/lib/module/theming/useTheme.js.map +1 -1
- package/lib/module/types.js +35 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useDescriptors.js +65 -25
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +48 -33
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEffect.js +4 -2
- package/lib/module/useFocusEffect.js.map +1 -1
- package/lib/module/useFocusEvents.js +15 -5
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +3 -3
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useIsFocused.js +8 -12
- package/lib/module/useIsFocused.js.map +1 -1
- package/lib/module/useKeyedChildListeners.js +5 -2
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useLazyValue.js.map +1 -1
- package/lib/module/useNavigation.js +4 -17
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +244 -147
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +92 -89
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +22 -29
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationIndependentTree.js +1 -1
- package/lib/module/useNavigationIndependentTree.js.map +1 -1
- package/lib/module/useNavigationState.js +158 -46
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +58 -11
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetNavigation.js +26 -0
- package/lib/module/useOnGetNavigation.js.map +1 -0
- package/lib/module/useOnGetState.js +7 -4
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +40 -31
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js +2 -2
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +34 -24
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +11 -5
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/usePreventRemoveContext.js +2 -2
- package/lib/module/usePreventRemoveContext.js.map +1 -1
- package/lib/module/useRegisterNavigator.js +3 -4
- package/lib/module/useRegisterNavigator.js.map +1 -1
- package/lib/module/useRoute.js +2 -0
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +51 -35
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +12 -10
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/module/useStateForPath.js +1 -1
- package/lib/module/useStateForPath.js.map +1 -1
- package/lib/module/useSyncState.js +37 -15
- package/lib/module/useSyncState.js.map +1 -1
- package/lib/module/validatePathConfig.js +50 -36
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/ConsumedParamsContext.d.ts +3 -0
- package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
- package/lib/typescript/src/DataLoading.d.ts +21 -0
- package/lib/typescript/src/DataLoading.d.ts.map +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
- package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
- package/lib/typescript/src/Group.d.ts +1 -1
- package/lib/typescript/src/Group.d.ts.map +1 -1
- package/lib/typescript/src/NavigationBuilderContext.d.ts +22 -14
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
- package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
- package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
- package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
- package/lib/typescript/src/NavigationProvider.d.ts +21 -18
- package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
- package/lib/typescript/src/NavigationRootContext.d.ts +8 -0
- package/lib/typescript/src/NavigationRootContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationStateContext.d.ts +4 -3
- package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
- package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
- package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
- package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
- package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
- package/lib/typescript/src/SceneView.d.ts +5 -2
- package/lib/typescript/src/SceneView.d.ts.map +1 -1
- package/lib/typescript/src/Screen.d.ts +1 -1
- package/lib/typescript/src/Screen.d.ts.map +1 -1
- package/lib/typescript/src/StaticContainer.d.ts +1 -1
- package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +189 -111
- package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
- package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
- package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
- package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts +23 -5
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/findFocusedRoute.d.ts +3 -8
- package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
- package/lib/typescript/src/getActionFromState.d.ts +4 -4
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts +3 -3
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPatternParts.d.ts +5 -2
- package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts +4 -7
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
- package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +36 -33
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/internal.d.ts +3 -0
- package/lib/typescript/src/internal.d.ts.map +1 -0
- package/lib/typescript/src/isRecordEqual.d.ts.map +1 -1
- package/lib/typescript/src/queryString.d.ts +5 -0
- package/lib/typescript/src/queryString.d.ts.map +1 -0
- package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
- package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
- package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
- package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theming/useTheme.d.ts +1 -1
- package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +265 -167
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useChildListeners.d.ts +3 -3
- package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
- package/lib/typescript/src/useDescriptors.d.ts +13 -11
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
- package/lib/typescript/src/useEventEmitter.d.ts +2 -2
- package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEvents.d.ts +2 -2
- package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
- package/lib/typescript/src/useIsFocused.d.ts +4 -0
- package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
- package/lib/typescript/src/useKeyedChildListeners.d.ts +4 -3
- package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
- package/lib/typescript/src/useLazyValue.d.ts.map +1 -1
- package/lib/typescript/src/useNavigation.d.ts +4 -2
- package/lib/typescript/src/useNavigation.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts +22 -63
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationCache.d.ts +6 -5
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
- package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +18 -58
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationState.d.ts +19 -3
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts +9 -9
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/lib/typescript/src/useOnGetNavigation.d.ts +12 -0
- package/lib/typescript/src/useOnGetNavigation.d.ts.map +1 -0
- package/lib/typescript/src/useOnGetState.d.ts +1 -1
- package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts +5 -9
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
- package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
- package/lib/typescript/src/useOptionsGetters.d.ts +2 -4
- package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
- package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/usePreventRemoveContext.d.ts +2 -1
- package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
- package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -1
- package/lib/typescript/src/useRoute.d.ts +7 -3
- package/lib/typescript/src/useRoute.d.ts.map +1 -1
- package/lib/typescript/src/useRouteCache.d.ts +7 -12
- package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
- package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
- package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
- package/lib/typescript/src/useStateForPath.d.ts +1 -1
- package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
- package/lib/typescript/src/useSyncState.d.ts +1 -0
- package/lib/typescript/src/useSyncState.d.ts.map +1 -1
- package/lib/typescript/src/utilities.d.ts +79 -39
- package/lib/typescript/src/utilities.d.ts.map +1 -1
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
- package/package.json +26 -22
- package/src/BaseNavigationContainer.tsx +468 -333
- package/src/ConsumedParamsContext.tsx +5 -0
- package/src/DataLoading.tsx +206 -0
- package/src/NavigationBuilderContext.tsx +44 -25
- package/src/NavigationFocusedRouteStateContext.tsx +4 -4
- package/src/NavigationIndependentTree.tsx +60 -12
- package/src/NavigationProvider.tsx +47 -20
- package/src/NavigationRootContext.tsx +11 -0
- package/src/NavigationStateContext.tsx +9 -6
- package/src/PreventRemoveContext.tsx +1 -0
- package/src/PreventRemoveProvider.tsx +55 -56
- package/src/SceneView.tsx +14 -40
- package/src/StaticNavigation.tsx +715 -328
- package/src/StaticTreeContext.tsx +7 -0
- package/src/createNavigationContainerRef.tsx +12 -11
- package/src/createNavigatorFactory.tsx +92 -8
- package/src/findFocusedRoute.tsx +16 -16
- package/src/getActionFromState.tsx +87 -51
- package/src/getPathFromState.tsx +310 -134
- package/src/getPatternParts.tsx +98 -16
- package/src/getStateFromPath.tsx +971 -344
- package/src/getStateFromRouteParams.tsx +59 -0
- package/src/index.tsx +57 -6
- package/src/internal.tsx +2 -0
- package/src/isRecordEqual.tsx +3 -1
- package/src/queryString.ts +109 -0
- package/src/theming/useTheme.tsx +1 -1
- package/src/types.tsx +799 -377
- package/src/useDescriptors.tsx +151 -43
- package/src/useEventEmitter.tsx +53 -39
- package/src/useFocusEffect.tsx +5 -2
- package/src/useFocusEvents.tsx +19 -8
- package/src/useFocusedListenersChildrenAdapter.tsx +3 -3
- package/src/useIsFocused.tsx +18 -21
- package/src/useKeyedChildListeners.tsx +5 -2
- package/src/useLazyValue.tsx +2 -2
- package/src/useNavigation.tsx +9 -26
- package/src/useNavigationBuilder.tsx +370 -201
- package/src/useNavigationCache.tsx +148 -123
- package/src/useNavigationHelpers.tsx +27 -37
- package/src/useNavigationIndependentTree.tsx +1 -1
- package/src/useNavigationState.tsx +207 -69
- package/src/useOnAction.tsx +92 -18
- package/src/useOnGetNavigation.tsx +30 -0
- package/src/useOnGetState.tsx +8 -4
- package/src/useOnPreventRemove.tsx +78 -43
- package/src/useOnRouteFocus.tsx +11 -15
- package/src/useOptionsGetters.tsx +41 -28
- package/src/usePreventRemove.tsx +13 -5
- package/src/usePreventRemoveContext.tsx +2 -2
- package/src/useRegisterNavigator.tsx +4 -4
- package/src/useRoute.tsx +20 -6
- package/src/useRouteCache.tsx +57 -35
- package/src/useScheduleUpdate.tsx +13 -11
- package/src/useStateForPath.tsx +1 -1
- package/src/useSyncState.tsx +39 -15
- package/src/utilities.tsx +151 -35
- package/src/validatePathConfig.tsx +86 -57
- package/lib/module/CurrentRenderContext.js +0 -10
- package/lib/module/CurrentRenderContext.js.map +0 -1
- package/lib/module/NavigationMetaContext.js +0 -15
- package/lib/module/NavigationMetaContext.js.map +0 -1
- package/lib/module/checkSerializable.js +0 -46
- package/lib/module/checkSerializable.js.map +0 -1
- package/lib/module/useComponent.js +0 -34
- package/lib/module/useComponent.js.map +0 -1
- package/lib/module/useCurrentRender.js +0 -19
- package/lib/module/useCurrentRender.js.map +0 -1
- package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
- package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
- package/lib/typescript/src/NavigationMetaContext.d.ts +0 -12
- package/lib/typescript/src/NavigationMetaContext.d.ts.map +0 -1
- package/lib/typescript/src/checkSerializable.d.ts +0 -10
- package/lib/typescript/src/checkSerializable.d.ts.map +0 -1
- package/lib/typescript/src/useComponent.d.ts +0 -7
- package/lib/typescript/src/useComponent.d.ts.map +0 -1
- package/lib/typescript/src/useCurrentRender.d.ts +0 -14
- package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
- package/src/CurrentRenderContext.tsx +0 -9
- package/src/NavigationMetaContext.tsx +0 -14
- package/src/checkSerializable.tsx +0 -74
- package/src/useComponent.tsx +0 -37
- package/src/useCurrentRender.tsx +0 -31
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { NavigationState, PartialState } from '@react-navigation/routers';
|
|
2
|
+
|
|
3
|
+
export function getStateFromRouteParams(
|
|
4
|
+
params: object | undefined
|
|
5
|
+
): PartialState<NavigationState> | NavigationState | undefined {
|
|
6
|
+
if (params == null || typeof params !== 'object') {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (
|
|
11
|
+
'state' in params &&
|
|
12
|
+
params.state &&
|
|
13
|
+
typeof params.state === 'object' &&
|
|
14
|
+
'routes' in params.state &&
|
|
15
|
+
Array.isArray(params.state.routes) &&
|
|
16
|
+
params.state.routes.every(
|
|
17
|
+
(route) =>
|
|
18
|
+
typeof route === 'object' &&
|
|
19
|
+
route != null &&
|
|
20
|
+
'name' in route &&
|
|
21
|
+
typeof route.name === 'string'
|
|
22
|
+
)
|
|
23
|
+
) {
|
|
24
|
+
// @ts-expect-error this is fine 🔥
|
|
25
|
+
return params.state;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (
|
|
29
|
+
'screen' in params &&
|
|
30
|
+
params.screen &&
|
|
31
|
+
typeof params.screen === 'string'
|
|
32
|
+
) {
|
|
33
|
+
return {
|
|
34
|
+
routes: [
|
|
35
|
+
{
|
|
36
|
+
name: params.screen,
|
|
37
|
+
params:
|
|
38
|
+
'params' in params &&
|
|
39
|
+
typeof params.params === 'object' &&
|
|
40
|
+
params.params != null
|
|
41
|
+
? params.params
|
|
42
|
+
: undefined,
|
|
43
|
+
path:
|
|
44
|
+
'path' in params && typeof params.path === 'string'
|
|
45
|
+
? params.path
|
|
46
|
+
: undefined,
|
|
47
|
+
state:
|
|
48
|
+
'params' in params &&
|
|
49
|
+
typeof params.params === 'object' &&
|
|
50
|
+
params.params != null
|
|
51
|
+
? getStateFromRouteParams(params.params)
|
|
52
|
+
: undefined,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -1,40 +1,90 @@
|
|
|
1
1
|
export { BaseNavigationContainer } from './BaseNavigationContainer';
|
|
2
2
|
export { createNavigationContainerRef } from './createNavigationContainerRef';
|
|
3
|
-
export {
|
|
4
|
-
|
|
3
|
+
export {
|
|
4
|
+
createNavigatorFactory,
|
|
5
|
+
type TypedNavigatorFactory,
|
|
6
|
+
} from './createNavigatorFactory';
|
|
7
|
+
export { getLoaderForState as UNSTABLE_getLoaderForState } from './DataLoading';
|
|
5
8
|
export { findFocusedRoute } from './findFocusedRoute';
|
|
6
9
|
export { getActionFromState } from './getActionFromState';
|
|
7
10
|
export { getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';
|
|
8
11
|
export { getPathFromState } from './getPathFromState';
|
|
9
12
|
export { getStateFromPath } from './getStateFromPath';
|
|
10
13
|
export { NavigationContainerRefContext } from './NavigationContainerRefContext';
|
|
14
|
+
export {
|
|
15
|
+
type FocusedRouteState,
|
|
16
|
+
NavigationFocusedRouteStateContext,
|
|
17
|
+
} from './NavigationFocusedRouteStateContext';
|
|
11
18
|
export { NavigationHelpersContext } from './NavigationHelpersContext';
|
|
12
19
|
export { NavigationIndependentTree } from './NavigationIndependentTree';
|
|
13
|
-
export { NavigationMetaContext } from './NavigationMetaContext';
|
|
14
20
|
export {
|
|
21
|
+
IsScreenContext,
|
|
15
22
|
NavigationContext,
|
|
16
23
|
NavigationProvider,
|
|
17
24
|
NavigationRouteContext,
|
|
18
25
|
} from './NavigationProvider';
|
|
26
|
+
export { NavigationRootContext } from './NavigationRootContext';
|
|
19
27
|
export { PreventRemoveContext } from './PreventRemoveContext';
|
|
20
28
|
export { PreventRemoveProvider } from './PreventRemoveProvider';
|
|
21
29
|
export {
|
|
22
|
-
createComponentForStaticNavigation,
|
|
23
30
|
createPathConfigForStaticNavigation,
|
|
31
|
+
createScreenFactory,
|
|
24
32
|
type StaticConfig,
|
|
25
33
|
type StaticNavigation,
|
|
26
34
|
type StaticParamList,
|
|
27
35
|
type StaticScreenConfig,
|
|
28
36
|
type StaticScreenConfigLinking,
|
|
29
37
|
type StaticScreenConfigScreen,
|
|
38
|
+
type StaticScreenFactory,
|
|
30
39
|
type StaticScreenProps,
|
|
31
40
|
} from './StaticNavigation';
|
|
32
41
|
export { ThemeContext } from './theming/ThemeContext';
|
|
33
42
|
export { ThemeProvider } from './theming/ThemeProvider';
|
|
34
43
|
export { useTheme } from './theming/useTheme';
|
|
35
|
-
export
|
|
44
|
+
export type {
|
|
45
|
+
CompositeNavigationProp,
|
|
46
|
+
CompositeScreenProps,
|
|
47
|
+
DefaultNavigatorOptions,
|
|
48
|
+
Descriptor,
|
|
49
|
+
EventArg,
|
|
50
|
+
EventConsumer,
|
|
51
|
+
EventEmitter,
|
|
52
|
+
EventListenerCallback,
|
|
53
|
+
EventMapBase,
|
|
54
|
+
EventMapCore,
|
|
55
|
+
GenericNavigation,
|
|
56
|
+
NavigationContainerEventMap,
|
|
57
|
+
NavigationContainerProps,
|
|
58
|
+
NavigationContainerRef,
|
|
59
|
+
NavigationContainerRefWithCurrent,
|
|
60
|
+
NavigationHelpers,
|
|
61
|
+
NavigationListBase,
|
|
62
|
+
NavigationListForNavigator,
|
|
63
|
+
NavigationListForNested,
|
|
64
|
+
NavigationProp,
|
|
65
|
+
NavigatorScreenParams,
|
|
66
|
+
NavigatorTypeBagBase,
|
|
67
|
+
NavigatorTypeBagFor,
|
|
68
|
+
NestedNavigatorsForParamList,
|
|
69
|
+
ParamListForNavigator,
|
|
70
|
+
PathConfig,
|
|
71
|
+
PathConfigMap,
|
|
72
|
+
RootNavigator,
|
|
73
|
+
RootParamList,
|
|
74
|
+
RouteConfig,
|
|
75
|
+
RouteConfigComponent,
|
|
76
|
+
RouteConfigProps,
|
|
77
|
+
RouteForName,
|
|
78
|
+
RouteGroupConfig,
|
|
79
|
+
RouteProp,
|
|
80
|
+
ScreenLayoutArgs,
|
|
81
|
+
ScreenListeners,
|
|
82
|
+
Theme,
|
|
83
|
+
TypedNavigator,
|
|
84
|
+
} from './types';
|
|
85
|
+
export { PrivateValueStore } from './types';
|
|
36
86
|
export { useFocusEffect } from './useFocusEffect';
|
|
37
|
-
export { useIsFocused } from './useIsFocused';
|
|
87
|
+
export { IsFocusedContext, useIsFocused } from './useIsFocused';
|
|
38
88
|
export { useNavigation } from './useNavigation';
|
|
39
89
|
export { useNavigationBuilder } from './useNavigationBuilder';
|
|
40
90
|
export { useNavigationContainerRef } from './useNavigationContainerRef';
|
|
@@ -44,5 +94,6 @@ export { usePreventRemove } from './usePreventRemove';
|
|
|
44
94
|
export { usePreventRemoveContext } from './usePreventRemoveContext';
|
|
45
95
|
export { useRoute } from './useRoute';
|
|
46
96
|
export { useStateForPath } from './useStateForPath';
|
|
97
|
+
export type { QueryParamInput, StandardSchemaV1 } from './utilities';
|
|
47
98
|
export { validatePathConfig } from './validatePathConfig';
|
|
48
99
|
export * from '@react-navigation/routers';
|
package/src/internal.tsx
ADDED
package/src/isRecordEqual.tsx
CHANGED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
type QueryValue = string | null | (string | null)[];
|
|
2
|
+
|
|
3
|
+
// Match complete UTF-8 sequences so malformed input can be decoded partially
|
|
4
|
+
// without repeatedly splitting and retrying an arbitrarily long byte sequence.
|
|
5
|
+
const ENCODED_UTF8 = new RegExp(
|
|
6
|
+
[
|
|
7
|
+
'%[0-7][\\dA-F]',
|
|
8
|
+
'%(?:C[2-9A-F]|D[\\dA-F])%[89AB][\\dA-F]',
|
|
9
|
+
'%E0%[AB][\\dA-F]%[89AB][\\dA-F]',
|
|
10
|
+
'%E[1-9A-CEF](?:%[89AB][\\dA-F]){2}',
|
|
11
|
+
'%ED%[89][\\dA-F]%[89AB][\\dA-F]',
|
|
12
|
+
'%F0%[9AB][\\dA-F](?:%[89AB][\\dA-F]){2}',
|
|
13
|
+
'%F[1-3](?:%[89AB][\\dA-F]){3}',
|
|
14
|
+
'%F4%8[\\dA-F](?:%[89AB][\\dA-F]){2}',
|
|
15
|
+
].join('|'),
|
|
16
|
+
'gi'
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const decode = (value: string) => {
|
|
20
|
+
if (!value.includes('%')) {
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
return decodeURIComponent(value);
|
|
26
|
+
} catch {
|
|
27
|
+
return value.replace(ENCODED_UTF8, (sequence) =>
|
|
28
|
+
decodeURIComponent(sequence)
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const encode = (value: string) => {
|
|
34
|
+
if (/^[A-Za-z0-9_.~-]*$/.test(value)) {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return encodeURIComponent(value).replace(
|
|
39
|
+
/[!'()*]/g,
|
|
40
|
+
(char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export function parse(query: string): Record<string, QueryValue> {
|
|
45
|
+
const params: Record<string, QueryValue> = Object.create(null);
|
|
46
|
+
|
|
47
|
+
query = query.trim().replace(/^[?#&]/, '');
|
|
48
|
+
|
|
49
|
+
let start = 0;
|
|
50
|
+
|
|
51
|
+
while (start < query.length) {
|
|
52
|
+
if (query[start] === '&') {
|
|
53
|
+
start++;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const end = query.indexOf('&', start);
|
|
58
|
+
const index = end === -1 ? query.length : end;
|
|
59
|
+
const part = query.slice(start, index).replace(/\+/g, ' ');
|
|
60
|
+
const separator = part.indexOf('=');
|
|
61
|
+
const key = decode(separator === -1 ? part : part.slice(0, separator));
|
|
62
|
+
const value = separator === -1 ? null : decode(part.slice(separator + 1));
|
|
63
|
+
const previous = params[key];
|
|
64
|
+
|
|
65
|
+
if (previous === undefined) {
|
|
66
|
+
params[key] = value;
|
|
67
|
+
} else if (Array.isArray(previous)) {
|
|
68
|
+
previous.push(value);
|
|
69
|
+
} else {
|
|
70
|
+
params[key] = [previous, value];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
start = index + 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return params;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function stringify(
|
|
80
|
+
params: Record<string, string | string[] | null>
|
|
81
|
+
): string {
|
|
82
|
+
const parts: string[] = [];
|
|
83
|
+
|
|
84
|
+
for (const [key, value] of Object.entries(params)) {
|
|
85
|
+
if (Array.isArray(value)) {
|
|
86
|
+
let encodedKey: string | undefined;
|
|
87
|
+
|
|
88
|
+
value.forEach((item) => {
|
|
89
|
+
encodedKey ??= encode(key);
|
|
90
|
+
|
|
91
|
+
parts.push(`${encodedKey}=${encode(item)}`);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const encodedKey = encode(key);
|
|
98
|
+
|
|
99
|
+
if (value === null) {
|
|
100
|
+
if (encodedKey) {
|
|
101
|
+
parts.push(encodedKey);
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
parts.push(`${encodedKey}=${encode(value)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return parts.join('&');
|
|
109
|
+
}
|
package/src/theming/useTheme.tsx
CHANGED