@react-navigation/core 8.0.0-alpha.23 → 8.0.0-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/BaseNavigationContainer.js +5 -2
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/DataLoading.js +102 -0
- package/lib/module/DataLoading.js.map +1 -0
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationIndependentTree.js +7 -6
- package/lib/module/NavigationIndependentTree.js.map +1 -1
- package/lib/module/NavigationProvider.js +12 -12
- package/lib/module/NavigationProvider.js.map +1 -1
- package/lib/module/PreventRemoveContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +34 -24
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/StaticNavigation.js +15 -7
- 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/checkSerializable.js +7 -9
- package/lib/module/checkSerializable.js.map +1 -1
- package/lib/module/createNavigationContainerRef.js +6 -8
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/getActionFromState.js +11 -11
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getPathFromState.js +125 -96
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getPatternParts.js +2 -2
- package/lib/module/getPatternParts.js.map +1 -1
- package/lib/module/getStateFromPath.js +136 -78
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +13 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/useEventEmitter.js +5 -2
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useKeyedChildListeners.js +4 -2
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useNavigation.js +2 -15
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +5 -21
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +19 -14
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +27 -9
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationState.js +69 -36
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +25 -3
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +35 -24
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOptionsGetters.js +3 -1
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +9 -2
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +14 -7
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +8 -8
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/module/useSyncState.js +4 -1
- package/lib/module/useSyncState.js.map +1 -1
- package/lib/module/validatePathConfig.js +50 -37
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/DataLoading.d.ts +20 -0
- package/lib/typescript/src/DataLoading.d.ts.map +1 -0
- package/lib/typescript/src/NavigationBuilderContext.d.ts +2 -2
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationProvider.d.ts +0 -1
- package/lib/typescript/src/NavigationProvider.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.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +68 -42
- 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/checkSerializable.d.ts +4 -2
- package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
- package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts +11 -5
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +84 -29
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useEventEmitter.d.ts +1 -1
- package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
- package/lib/typescript/src/useNavigation.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +3 -4
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationState.d.ts +11 -1
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts +2 -6
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- 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 +1 -0
- package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
- package/lib/typescript/src/useRoute.d.ts +1 -1
- package/lib/typescript/src/useRoute.d.ts.map +1 -1
- 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/useSyncState.d.ts.map +1 -1
- package/lib/typescript/src/utilities.d.ts +21 -38
- package/lib/typescript/src/utilities.d.ts.map +1 -1
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
- package/package.json +6 -8
- package/src/BaseNavigationContainer.tsx +9 -2
- package/src/DataLoading.tsx +139 -0
- package/src/NavigationBuilderContext.tsx +5 -1
- package/src/NavigationIndependentTree.tsx +11 -11
- package/src/NavigationProvider.tsx +13 -16
- package/src/PreventRemoveContext.tsx +1 -0
- package/src/PreventRemoveProvider.tsx +48 -43
- package/src/StaticNavigation.tsx +164 -99
- package/src/StaticTreeContext.tsx +7 -0
- package/src/checkSerializable.tsx +20 -14
- package/src/createNavigationContainerRef.tsx +12 -9
- package/src/createNavigatorFactory.tsx +27 -18
- package/src/getActionFromState.tsx +18 -16
- package/src/getPathFromState.tsx +167 -132
- package/src/getPatternParts.tsx +2 -2
- package/src/getStateFromPath.tsx +260 -193
- package/src/index.tsx +3 -0
- package/src/types.tsx +298 -62
- package/src/useEventEmitter.tsx +7 -2
- package/src/useKeyedChildListeners.tsx +4 -2
- package/src/useNavigation.tsx +2 -21
- package/src/useNavigationBuilder.tsx +7 -24
- package/src/useNavigationCache.tsx +26 -19
- package/src/useNavigationHelpers.tsx +26 -9
- package/src/useNavigationState.tsx +90 -60
- package/src/useOnAction.tsx +55 -3
- package/src/useOnPreventRemove.tsx +68 -36
- package/src/useOptionsGetters.tsx +4 -1
- package/src/usePreventRemove.tsx +11 -2
- package/src/useRoute.tsx +3 -5
- package/src/useRouteCache.tsx +19 -11
- package/src/useScheduleUpdate.tsx +8 -7
- package/src/useSyncState.tsx +5 -1
- package/src/utilities.tsx +36 -41
- package/src/validatePathConfig.tsx +86 -58
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","
|
|
1
|
+
{"version":3,"names":["React","getLoaderForState","NavigationBuilderContext","StaticTreeContext","shouldPreventRemove","useOnPreventRemove","didFocusedRouteChange","currentState","nextState","currentFocusedRoute","routes","index","nextFocusedRoute","changed","key","state","useOnAction","router","getState","setState","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","use","tree","routerConfigOptionsRef","useRef","useInsertionEffect","current","useCallback","action","visitedNavigators","Set","has","add","target","result","getStateForAction","isPrevented","loader","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,10 +5,7 @@ import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
|
|
|
5
5
|
import { NavigationRouteContext } from "./NavigationProvider.js";
|
|
6
6
|
const VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');
|
|
7
7
|
export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
// Call these in reverse order so last screens handle the event first
|
|
11
|
-
const removedRoutes = currentRoutes.filter(route => !nextRouteKeys.includes(route.key)).reverse();
|
|
8
|
+
const nextRoutesByKey = new Map(nextRoutes.map(route => [route.key, route]).filter(([, route]) => route.key != null));
|
|
12
9
|
const visitedRouteKeys =
|
|
13
10
|
// @ts-expect-error: add this property to mark that we've already emitted this action
|
|
14
11
|
action[VISITED_ROUTE_KEYS] ?? new Set();
|
|
@@ -16,28 +13,42 @@ export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoute
|
|
|
16
13
|
...action,
|
|
17
14
|
[VISITED_ROUTE_KEYS]: visitedRouteKeys
|
|
18
15
|
};
|
|
19
|
-
|
|
16
|
+
|
|
17
|
+
// Call these in reverse order so last screens handle the event first
|
|
18
|
+
const reversedCurrentRoutes = [...currentRoutes].reverse();
|
|
19
|
+
for (const route of reversedCurrentRoutes) {
|
|
20
20
|
if (visitedRouteKeys.has(route.key)) {
|
|
21
21
|
// Skip if we've already emitted this action for this screen
|
|
22
22
|
continue;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
if (!nextRoutesByKey.has(route.key)) {
|
|
25
|
+
// The route is not in next state, so it's being removed
|
|
26
|
+
// First, we need to check if any child screens want to prevent it
|
|
27
|
+
const isPrevented = beforeRemoveListeners[route.key]?.(beforeRemoveAction, undefined);
|
|
28
|
+
if (isPrevented) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
visitedRouteKeys.add(route.key);
|
|
32
|
+
const event = emitter.emit({
|
|
33
|
+
type: 'beforeRemove',
|
|
34
|
+
target: route.key,
|
|
35
|
+
data: {
|
|
36
|
+
action: beforeRemoveAction
|
|
37
|
+
},
|
|
38
|
+
canPreventDefault: true
|
|
39
|
+
});
|
|
40
|
+
if (event.defaultPrevented) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
// The route is kept but its nested state changed, so propagate the check into the nested navigator
|
|
45
|
+
const nextRoute = nextRoutesByKey.get(route.key);
|
|
46
|
+
if (route.state != null && route.state !== nextRoute?.state) {
|
|
47
|
+
const isPrevented = beforeRemoveListeners[route.key]?.(beforeRemoveAction, nextRoute?.state);
|
|
48
|
+
if (isPrevented) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
41
52
|
}
|
|
42
53
|
}
|
|
43
54
|
return false;
|
|
@@ -54,9 +65,9 @@ export function useOnPreventRemove({
|
|
|
54
65
|
const routeKey = route?.key;
|
|
55
66
|
React.useInsertionEffect(() => {
|
|
56
67
|
if (routeKey) {
|
|
57
|
-
return addKeyedListener?.('beforeRemove', routeKey, action => {
|
|
68
|
+
return addKeyedListener?.('beforeRemove', routeKey, (action, nextState) => {
|
|
58
69
|
const state = getState();
|
|
59
|
-
return shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, [], action);
|
|
70
|
+
return shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, nextState?.routes ?? [], action);
|
|
60
71
|
});
|
|
61
72
|
}
|
|
62
73
|
}, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRoutesByKey","Map","map","route","key","filter","visitedRouteKeys","Set","beforeRemoveAction","reversedCurrentRoutes","reverse","has","isPrevented","undefined","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","nextRoute","get","state","useOnPreventRemove","getState","addKeyedListener","use","routeKey","useInsertionEffect","nextState","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -23,8 +23,10 @@ export function useOptionsGetters({
|
|
|
23
23
|
onOptionsChange(optionsRef.current ?? {});
|
|
24
24
|
}
|
|
25
25
|
}, [navigation, onOptionsChange]);
|
|
26
|
-
React.
|
|
26
|
+
React.useInsertionEffect(() => {
|
|
27
27
|
optionsRef.current = options;
|
|
28
|
+
}, [options]);
|
|
29
|
+
React.useEffect(() => {
|
|
28
30
|
optionsChangeListener();
|
|
29
31
|
return navigation?.addListener('focus', optionsChangeListener);
|
|
30
32
|
}, [navigation, options, optionsChangeListener]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","useOptionsGetters","key","options","navigation","optionsRef","useRef","optionsGettersFromChildRef","onOptionsChange","use","addOptionsGetter","parentAddOptionsGetter","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","result","getCurrentOptions","optionsFromListener","
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","useOptionsGetters","key","options","navigation","optionsRef","useRef","optionsGettersFromChildRef","onOptionsChange","use","addOptionsGetter","parentAddOptionsGetter","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useInsertionEffect","useEffect","addListener","getOptionsFromListener","result","getCurrentOptions","optionsFromListener","getter"],"sourceRoot":"../../src","sources":["useOptionsGetters.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,14 +20,21 @@ export function usePreventRemove(preventRemove, callback) {
|
|
|
20
20
|
key: routeKey
|
|
21
21
|
} = useRoute();
|
|
22
22
|
const {
|
|
23
|
-
setPreventRemove
|
|
23
|
+
setPreventRemove,
|
|
24
|
+
notifyPreventRemove
|
|
24
25
|
} = usePreventRemoveContext();
|
|
25
|
-
React.
|
|
26
|
+
React.useInsertionEffect(() => {
|
|
26
27
|
setPreventRemove(id, routeKey, preventRemove);
|
|
27
28
|
return () => {
|
|
28
29
|
setPreventRemove(id, routeKey, false);
|
|
29
30
|
};
|
|
30
31
|
}, [setPreventRemove, id, routeKey, preventRemove]);
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
notifyPreventRemove();
|
|
34
|
+
return () => {
|
|
35
|
+
notifyPreventRemove();
|
|
36
|
+
};
|
|
37
|
+
}, [id, routeKey, preventRemove, notifyPreventRemove]);
|
|
31
38
|
const beforeRemoveListener = useLatestCallback(e => {
|
|
32
39
|
if (!preventRemove) {
|
|
33
40
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nanoid","React","useLatestCallback","useNavigation","usePreventRemoveContext","useRoute","usePreventRemove","preventRemove","callback","id","useState","navigation","key","routeKey","setPreventRemove","useEffect","beforeRemoveListener","e","preventDefault","data","
|
|
1
|
+
{"version":3,"names":["nanoid","React","useLatestCallback","useNavigation","usePreventRemoveContext","useRoute","usePreventRemove","preventRemove","callback","id","useState","navigation","key","routeKey","setPreventRemove","notifyPreventRemove","useInsertionEffect","useEffect","beforeRemoveListener","e","preventDefault","data","addListener"],"sourceRoot":"../../src","sources":["usePreventRemove.tsx"],"mappings":";;AACA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AAGnD,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,uBAAuB,QAAQ,8BAA2B;AACnE,SAASC,QAAQ,QAAQ,eAAY;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,aAAsB,EACtBC,QAAmE,EACnE;EACA,MAAM,CAACC,EAAE,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAAC,MAAMV,MAAM,CAAC,CAAC,CAAC;EAE3C,MAAMW,UAAU,GAAGR,aAAa,CAAC,CAAC;EAClC,MAAM;IAAES,GAAG,EAAEC;EAAS,CAAC,GAAGR,QAAQ,CAAC,CAAC;EAEpC,MAAM;IAAES,gBAAgB;IAAEC;EAAoB,CAAC,GAAGX,uBAAuB,CAAC,CAAC;EAE3EH,KAAK,CAACe,kBAAkB,CAAC,MAAM;IAC7BF,gBAAgB,CAACL,EAAE,EAAEI,QAAQ,EAAEN,aAAa,CAAC;IAE7C,OAAO,MAAM;MACXO,gBAAgB,CAACL,EAAE,EAAEI,QAAQ,EAAE,KAAK,CAAC;IACvC,CAAC;EACH,CAAC,EAAE,CAACC,gBAAgB,EAAEL,EAAE,EAAEI,QAAQ,EAAEN,aAAa,CAAC,CAAC;EAEnDN,KAAK,CAACgB,SAAS,CAAC,MAAM;IACpBF,mBAAmB,CAAC,CAAC;IAErB,OAAO,MAAM;MACXA,mBAAmB,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACN,EAAE,EAAEI,QAAQ,EAAEN,aAAa,EAAEQ,mBAAmB,CAAC,CAAC;EAEtD,MAAMG,oBAAoB,GAAGhB,iBAAiB,CAE3CiB,CAAC,IAAK;IACP,IAAI,CAACZ,aAAa,EAAE;MAClB;IACF;IAEAY,CAAC,CAACC,cAAc,CAAC,CAAC;IAElBZ,QAAQ,CAAC;MAAEa,IAAI,EAAEF,CAAC,CAACE;IAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEFpB,KAAK,CAACe,kBAAkB,CACtB,MAAML,UAAU,EAAEW,WAAW,CAAC,cAAc,EAAEJ,oBAAoB,CAAC,EACnE,CAACP,UAAU,EAAEO,oBAAoB,CACnC,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NamedRouteContextListContext","NavigationRouteContext","useRoute","name","undefined","route","use","Error","NamedRouteContextList","NamedRouteContext"],"sourceRoot":"../../src","sources":["useRoute.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SACEC,4BAA4B,EAC5BC,sBAAsB,QACjB,yBAAsB;;AAS7B;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["React","NamedRouteContextListContext","NavigationRouteContext","useRoute","name","undefined","route","use","Error","NamedRouteContextList","NamedRouteContext"],"sourceRoot":"../../src","sources":["useRoute.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SACEC,4BAA4B,EAC5BC,sBAAsB,QACjB,yBAAsB;;AAS7B;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;;AAgBA,OAAO,SAASC,QAAQA,CAACC,IAAa,EAAE;EACtC,IAAIA,IAAI,KAAKC,SAAS,EAAE;IACtB,MAAMC,KAAK,GAAGN,KAAK,CAACO,GAAG,CAACL,sBAAsB,CAAC;IAE/C,IAAII,KAAK,KAAKD,SAAS,EAAE;MACvB,MAAM,IAAIG,KAAK,CACb,iFACF,CAAC;IACH;IAEA,OAAOF,KAAK;EACd;EAEA,MAAMG,qBAAqB,GAAGT,KAAK,CAACO,GAAG,CAACN,4BAA4B,CAAC;EAErE,IAAIQ,qBAAqB,KAAKJ,SAAS,EAAE;IACvC,MAAM,IAAIG,KAAK,CACb,kFACF,CAAC;EACH;EAEA,MAAME,iBAAiB,GAAGD,qBAAqB,CAACL,IAAI,CAAC;EAErD,IAAIM,iBAAiB,KAAKL,SAAS,EAAE;IACnC,MAAM,IAAIG,KAAK,CACb,gCAAgCJ,IAAI,8EACtC,CAAC;EACH;EAEA,MAAME,KAAK,GAAGN,KAAK,CAACO,GAAG,CAACG,iBAAiB,CAAC;EAE1C,OAAOJ,KAAK;AACd","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ export function useRouteCache(routes) {
|
|
|
18
18
|
const cache = React.useMemo(() => ({
|
|
19
19
|
current: new Map()
|
|
20
20
|
}), []);
|
|
21
|
-
|
|
21
|
+
const next = routes.reduce((acc, route) => {
|
|
22
22
|
const previous = cache.current.get(route.key);
|
|
23
23
|
const {
|
|
24
24
|
state,
|
|
@@ -46,14 +46,21 @@ export function useRouteCache(routes) {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
|
|
50
|
+
// @ts-expect-error: this isn't in type definitions coz we want this private
|
|
51
|
+
if (proxy[CHILD_STATE] !== state) {
|
|
52
|
+
Object.defineProperty(proxy, CHILD_STATE, {
|
|
53
|
+
enumerable: false,
|
|
54
|
+
configurable: true,
|
|
55
|
+
value: state
|
|
56
|
+
});
|
|
57
|
+
}
|
|
54
58
|
acc.set(route.key, proxy);
|
|
55
59
|
return acc;
|
|
56
60
|
}, new Map());
|
|
57
|
-
|
|
61
|
+
React.useInsertionEffect(() => {
|
|
62
|
+
cache.current = next;
|
|
63
|
+
});
|
|
64
|
+
return Array.from(next.values());
|
|
58
65
|
}
|
|
59
66
|
//# sourceMappingURL=useRouteCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","isRecordEqual","CHILD_STATE","Symbol","useRouteCache","routes","cache","useMemo","current","Map","reduce","acc","route","previous","get","key","state","routeWithoutState","proxy","process","env","NODE_ENV","value","Object","defineProperty","enumerable","configurable","writable","set","Array","from","values"],"sourceRoot":"../../src","sources":["useRouteCache.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,aAAa,QAAQ,oBAAiB;
|
|
1
|
+
{"version":3,"names":["React","isRecordEqual","CHILD_STATE","Symbol","useRouteCache","routes","cache","useMemo","current","Map","next","reduce","acc","route","previous","get","key","state","routeWithoutState","proxy","process","env","NODE_ENV","value","Object","defineProperty","enumerable","configurable","writable","set","useInsertionEffect","Array","from","values"],"sourceRoot":"../../src","sources":["useRouteCache.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,aAAa,QAAQ,oBAAiB;AAG/C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAGC,MAAM,CAAC,aAAa,CAAC;;AAEhD;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAC3BC,MAAuB,EACvB;EACA;EACA,MAAMC,KAAK,GAAGN,KAAK,CAACO,OAAO,CACzB,OAAO;IAAEC,OAAO,EAAE,IAAIC,GAAG,CAAmC;EAAE,CAAC,CAAC,EAChE,EACF,CAAC;EAED,MAAMC,IAAI,GAAGL,MAAM,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;IACzC,MAAMC,QAAQ,GAAGR,KAAK,CAACE,OAAO,CAACO,GAAG,CAACF,KAAK,CAACG,GAAG,CAAC;IAC7C,MAAM;MAAEC,KAAK;MAAE,GAAGC;IAAkB,CAAC,GAAGL,KAAK;IAE7C,IAAIM,KAAK;IAET,IAAIL,QAAQ,IAAIb,aAAa,CAACa,QAAQ,EAAEI,iBAAiB,CAAC,EAAE;MAC1D;MACAC,KAAK,GAAGL,QAAQ;IAClB,CAAC,MAAM;MACLK,KAAK,GAAGD,iBAAiB;IAC3B;IAEA,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IAAIH,KAAK,KAAKL,QAAQ,EAAE;MAC/D;MACA;MACA;MACA,KAAK,MAAME,GAAG,IAAIG,KAAK,EAAE;QACvB;QACA,MAAMI,KAAK,GAAGJ,KAAK,CAACH,GAAG,CAAC;QAExBQ,MAAM,CAACC,cAAc,CAACN,KAAK,EAAEH,GAAG,EAAE;UAChCU,UAAU,EAAE,IAAI;UAChBC,YAAY,EAAE,IAAI;UAClBC,QAAQ,EAAE,KAAK;UACfL;QACF,CAAC,CAAC;MACJ;IACF;;IAEA;IACA,IAAIJ,KAAK,CAACjB,WAAW,CAAC,KAAKe,KAAK,EAAE;MAChCO,MAAM,CAACC,cAAc,CAACN,KAAK,EAAEjB,WAAW,EAAE;QACxCwB,UAAU,EAAE,KAAK;QACjBC,YAAY,EAAE,IAAI;QAClBJ,KAAK,EAAEN;MACT,CAAC,CAAC;IACJ;IAEAL,GAAG,CAACiB,GAAG,CAAChB,KAAK,CAACG,GAAG,EAAEG,KAAK,CAAC;IAEzB,OAAOP,GAAG;EACZ,CAAC,EAAE,IAAIH,GAAG,CAAmC,CAAC,CAAC;EAE/CT,KAAK,CAAC8B,kBAAkB,CAAC,MAAM;IAC7BxB,KAAK,CAACE,OAAO,GAAGE,IAAI;EACtB,CAAC,CAAC;EAEF,OAAOqB,KAAK,CAACC,IAAI,CAACtB,IAAI,CAACuB,MAAM,CAAC,CAAC,CAAC;AAClC","ignoreList":[]}
|
|
@@ -5,20 +5,20 @@ import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* When screen config changes, we want to update the navigator in the same update phase.
|
|
8
|
-
* However, navigation state is in the root component and React won't let us update it from a child.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* However, navigation state is in the root component and React won't let us update it from a child during render.
|
|
9
|
+
* The render could also be interrupted in concurrent mode, so we need to update after commit.
|
|
10
|
+
* So we queue the update in an insertion effect and flush it in a layout effect.
|
|
11
|
+
* Insertion effects run before layout effects, so every navigator in the tree has queued its update before we flush.
|
|
12
|
+
* This lets nested updates be applied from the root down without clobbering each other.
|
|
12
13
|
*/
|
|
13
14
|
export function useScheduleUpdate(callback) {
|
|
14
15
|
const {
|
|
15
16
|
scheduleUpdate,
|
|
16
17
|
flushUpdates
|
|
17
18
|
} = React.use(NavigationBuilderContext);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
scheduleUpdate(callback);
|
|
19
|
+
React.useInsertionEffect(() => {
|
|
20
|
+
scheduleUpdate(callback);
|
|
21
|
+
});
|
|
22
22
|
React.useLayoutEffect(flushUpdates);
|
|
23
23
|
}
|
|
24
24
|
//# sourceMappingURL=useScheduleUpdate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","useScheduleUpdate","callback","scheduleUpdate","flushUpdates","use","useLayoutEffect"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,QAAoB,EAAE;EACtD,MAAM;IAAEC,cAAc;IAAEC;EAAa,CAAC,GAAGL,KAAK,CAACM,GAAG,CAACL,wBAAwB,CAAC
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","useScheduleUpdate","callback","scheduleUpdate","flushUpdates","use","useInsertionEffect","useLayoutEffect"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,QAAoB,EAAE;EACtD,MAAM;IAAEC,cAAc;IAAEC;EAAa,CAAC,GAAGL,KAAK,CAACM,GAAG,CAACL,wBAAwB,CAAC;EAE5ED,KAAK,CAACO,kBAAkB,CAAC,MAAM;IAC7BH,cAAc,CAACD,QAAQ,CAAC;EAC1B,CAAC,CAAC;EAEFH,KAAK,CAACQ,eAAe,CAACH,YAAY,CAAC;AACrC","ignoreList":[]}
|
|
@@ -77,7 +77,10 @@ export function useSyncState(getInitialState) {
|
|
|
77
77
|
pendingUpdatesRef.current = [];
|
|
78
78
|
if (pendingUpdates.length !== 0) {
|
|
79
79
|
store.batchUpdates(() => {
|
|
80
|
-
//
|
|
80
|
+
// Updates are queued child-first as insertion effects run bottom-up.
|
|
81
|
+
// The root navigator replaces the whole state while nested navigators merge into it.
|
|
82
|
+
// So we apply them root-first to avoid the root clobbering nested updates.
|
|
83
|
+
pendingUpdates.reverse();
|
|
81
84
|
for (const update of pendingUpdates) {
|
|
82
85
|
update();
|
|
83
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useLatestCallback","deepFreeze","useLazyValue","createStore","getInitialState","listeners","Set","initialized","state","getState","isBatching","didUpdate","setState","newState","forEach","listener","subscribe","callback","add","delete","batchUpdates","useSyncState","store","rerender","useReducer","_","undefined","useEffect","unsubscribe","pendingUpdatesRef","useRef","scheduleUpdate","current","push","flushUpdates","pendingUpdates","length","update"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AAEnD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,YAAY,QAAQ,mBAAgB;AAE7C,MAAMC,WAAW,GAAQC,eAAwB,IAAK;EACpD,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EAEvC,IAAIC,WAAW,GAAG,KAAK;EACvB,IAAIC,KAAQ;EAEZ,MAAMC,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAIF,WAAW,EAAE;MACf,OAAOC,KAAK;IACd;IAEAD,WAAW,GAAG,IAAI;IAClBC,KAAK,GAAGP,UAAU,CAACG,eAAe,CAAC,CAAC,CAAC;IAErC,OAAOI,KAAK;EACd,CAAC;EAED,IAAIE,UAAU,GAAG,KAAK;EACtB,IAAIC,SAAS,GAAG,KAAK;EAErB,MAAMC,QAAQ,GAAIC,QAAW,IAAK;IAChCL,KAAK,GAAGP,UAAU,CAACY,QAAQ,CAAC;IAC5BF,SAAS,GAAG,IAAI;IAEhB,IAAI,CAACD,UAAU,EAAE;MACfL,SAAS,CAACS,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;IAC7C;EACF,CAAC;EAED,MAAMC,SAAS,GAAIC,QAAoB,IAAK;IAC1CZ,SAAS,CAACa,GAAG,CAACD,QAAQ,CAAC;IAEvB,OAAO,MAAM;MACXZ,SAAS,CAACc,MAAM,CAACF,QAAQ,CAAC;IAC5B,CAAC;EACH,CAAC;EAED,MAAMG,YAAY,GAAIH,QAAoB,IAAK;IAC7CP,UAAU,GAAG,IAAI;IACjBO,QAAQ,CAAC,CAAC;IACVP,UAAU,GAAG,KAAK;IAElB,IAAIC,SAAS,EAAE;MACbA,SAAS,GAAG,KAAK;MACjBN,SAAS,CAACS,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;IAC7C;EACF,CAAC;EAED,OAAO;IACLN,QAAQ;IACRG,QAAQ;IACRQ,YAAY;IACZJ;EACF,CAAC;AACH,CAAC;AAED,OAAO,SAASK,YAAYA,CAAIjB,eAAwB,EAAE;EACxD,MAAMkB,KAAK,GAAGpB,YAAY,CAAC,MAAMC,WAAW,CAACC,eAAe,CAAC,CAAC;;EAE9D;EACA,MAAM,CAACI,KAAK,EAAEe,QAAQ,CAAC,GAAGxB,KAAK,CAACyB,UAAU,CACvCC,CAAC,IAAKH,KAAK,CAACb,QAAQ,CAAC,CAAC,EACvBiB,SAAS,EACT,MAAMJ,KAAK,CAACb,QAAQ,CAAC,CACvB,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACAV,KAAK,CAAC4B,SAAS,CAAC,MAAM;IACpB,MAAMC,WAAW,GAAGN,KAAK,CAACN,SAAS,CAAC,MAAMO,QAAQ,CAAC,CAAC,CAAC;;IAErD;IACA;IACAA,QAAQ,CAAC,CAAC;IAEV,OAAOK,WAAW;EACpB,CAAC,EAAE,CAACN,KAAK,CAAC,CAAC;EAEX,MAAMO,iBAAiB,GAAG9B,KAAK,CAAC+B,MAAM,CAAiB,EAAE,CAAC;EAE1D,MAAMC,cAAc,GAAG/B,iBAAiB,CAAEiB,QAAoB,IAAK;IACjEY,iBAAiB,CAACG,OAAO,CAACC,IAAI,CAAChB,QAAQ,CAAC;EAC1C,CAAC,CAAC;EAEF,MAAMiB,YAAY,GAAGlC,iBAAiB,CAAC,MAAM;IAC3C,MAAMmC,cAAc,GAAGN,iBAAiB,CAACG,OAAO;IAEhDH,iBAAiB,CAACG,OAAO,GAAG,EAAE;IAE9B,IAAIG,cAAc,CAACC,MAAM,KAAK,CAAC,EAAE;MAC/Bd,KAAK,CAACF,YAAY,CAAC,MAAM;QACvB;QACA,KAAK,
|
|
1
|
+
{"version":3,"names":["React","useLatestCallback","deepFreeze","useLazyValue","createStore","getInitialState","listeners","Set","initialized","state","getState","isBatching","didUpdate","setState","newState","forEach","listener","subscribe","callback","add","delete","batchUpdates","useSyncState","store","rerender","useReducer","_","undefined","useEffect","unsubscribe","pendingUpdatesRef","useRef","scheduleUpdate","current","push","flushUpdates","pendingUpdates","length","reverse","update"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,53 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const ROOT_VALIDATION_LIST = ['- path (string)', '- initialRouteName (string)', '- screens (object)'].join('\n');
|
|
4
|
+
const NESTED_VALIDATION_LIST = [ROOT_VALIDATION_LIST, '- alias (array)', '- exact (boolean)', '- stringify (object)', '- parse (object)', '- shared (boolean)'].join('\n');
|
|
5
|
+
const getValidationType = (key, root) => {
|
|
6
|
+
switch (key) {
|
|
7
|
+
case 'path':
|
|
8
|
+
case 'initialRouteName':
|
|
9
|
+
return 'string';
|
|
10
|
+
case 'screens':
|
|
11
|
+
return 'object';
|
|
12
|
+
case 'alias':
|
|
13
|
+
return root ? undefined : 'array';
|
|
14
|
+
case 'exact':
|
|
15
|
+
case 'shared':
|
|
16
|
+
return root ? undefined : 'boolean';
|
|
17
|
+
case 'stringify':
|
|
18
|
+
case 'parse':
|
|
19
|
+
return root ? undefined : 'object';
|
|
20
|
+
default:
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
4
24
|
export function validatePathConfig(config, root = true) {
|
|
5
|
-
const validation = {
|
|
6
|
-
path: 'string',
|
|
7
|
-
initialRouteName: 'string',
|
|
8
|
-
screens: 'object',
|
|
9
|
-
...(root ? null : {
|
|
10
|
-
alias: 'array',
|
|
11
|
-
exact: 'boolean',
|
|
12
|
-
stringify: 'object',
|
|
13
|
-
parse: 'object',
|
|
14
|
-
shared: 'boolean'
|
|
15
|
-
})
|
|
16
|
-
};
|
|
17
25
|
if (typeof config !== 'object' || config === null) {
|
|
18
26
|
throw new Error(`Expected the configuration to be an object, but got ${JSON.stringify(config)}.`);
|
|
19
27
|
}
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const pathConfig = config;
|
|
29
|
+
let validationErrors;
|
|
30
|
+
for (const key in pathConfig) {
|
|
31
|
+
const type = getValidationType(key, root);
|
|
32
|
+
if (type === undefined) {
|
|
33
|
+
(validationErrors ??= []).push(`- ${key} (extraneous)`);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const value = pathConfig[key];
|
|
37
|
+
if (value === undefined) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (type === 'array') {
|
|
41
|
+
if (!Array.isArray(value)) {
|
|
42
|
+
(validationErrors ??= []).push(`- ${key} (expected 'Array', got '${typeof value}')`);
|
|
33
43
|
}
|
|
34
|
-
} else {
|
|
35
|
-
|
|
44
|
+
} else if (typeof value !== type) {
|
|
45
|
+
(validationErrors ??= []).push(`- ${key} (expected '${type}', got '${typeof value}')`);
|
|
36
46
|
}
|
|
37
|
-
return null;
|
|
38
|
-
}).filter(Boolean));
|
|
39
|
-
if (Object.keys(validationErrors).length) {
|
|
40
|
-
throw new Error(`Found invalid properties in the configuration:\n${formatToList(validationErrors)}\n\nYou can only specify the following properties:\n${formatToList(validation)}\n\nIf you want to specify configuration for screens, you need to specify them under a 'screens' property.\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`);
|
|
41
47
|
}
|
|
42
|
-
if (
|
|
43
|
-
throw new Error(`Found invalid
|
|
48
|
+
if (validationErrors) {
|
|
49
|
+
throw new Error(`Found invalid properties in the configuration:\n${validationErrors.join('\n')}\n\nYou can only specify the following properties:\n${root ? ROOT_VALIDATION_LIST : NESTED_VALIDATION_LIST}\n\nIf you want to specify configuration for screens, you need to specify them under a 'screens' property.\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`);
|
|
44
50
|
}
|
|
45
|
-
|
|
46
|
-
|
|
51
|
+
const path = pathConfig.path;
|
|
52
|
+
if (root && 'path' in pathConfig && typeof path === 'string' && path.includes(':')) {
|
|
53
|
+
throw new Error(`Found invalid path '${path}'. The 'path' in the top-level configuration cannot contain patterns for params.`);
|
|
54
|
+
}
|
|
55
|
+
const screens = pathConfig.screens;
|
|
56
|
+
if (screens && typeof screens === 'object') {
|
|
57
|
+
const screenConfig = screens;
|
|
58
|
+
for (const name in screenConfig) {
|
|
59
|
+
const value = screenConfig[name];
|
|
47
60
|
if (typeof value !== 'string') {
|
|
48
61
|
validatePathConfig(value, false);
|
|
49
62
|
}
|
|
50
|
-
}
|
|
63
|
+
}
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
66
|
//# sourceMappingURL=validatePathConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["ROOT_VALIDATION_LIST","join","NESTED_VALIDATION_LIST","getValidationType","key","root","undefined","validatePathConfig","config","Error","JSON","stringify","pathConfig","validationErrors","type","push","value","Array","isArray","path","includes","screens","screenConfig","name"],"sourceRoot":"../../src","sources":["validatePathConfig.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseNavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/BaseNavigationContainer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAS,CAAC;AAcjB,KAAK,KAAK,CAAC,SAAS,SAAS,EAAE,IAAI,wBAAwB,GAAG;IAC5D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;CACpD,CAAC;AAgCF;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,SAAS,EAAE,GAAG,aAAa,EAAE,EAC5E,YAAY,EACZ,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,KAAK,EACL,QAAQ,EACR,GAAG,GACJ,EAAE,KAAK,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"BaseNavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/BaseNavigationContainer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAS,CAAC;AAcjB,KAAK,KAAK,CAAC,SAAS,SAAS,EAAE,IAAI,wBAAwB,GAAG;IAC5D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;CACpD,CAAC;AAgCF;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,SAAS,EAAE,GAAG,aAAa,EAAE,EAC5E,YAAY,EACZ,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,KAAK,EACL,QAAQ,EACR,GAAG,GACJ,EAAE,KAAK,CAAC,SAAS,CAAC,qBAgYlB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NavigationState, PartialState } from '@react-navigation/routers';
|
|
2
|
+
import type { TreeForPathConfig } from './StaticNavigation.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get loader for the focused route in a static config tree with given navigation state.
|
|
5
|
+
*
|
|
6
|
+
* @param tree The static navigation config.
|
|
7
|
+
* @param state The navigation state to extract the focused route path from.
|
|
8
|
+
* @returns A function that returns a `Promise<void>`, or `undefined` if no loaders are found.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```js
|
|
12
|
+
* const loader = getLoaderForState(RootStack, {
|
|
13
|
+
* index: 0,
|
|
14
|
+
* routes: [{ name: 'Home' }],
|
|
15
|
+
* });
|
|
16
|
+
* await loader?.();
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function getLoaderForState(tree: TreeForPathConfig, state: PartialState<NavigationState> | NavigationState | undefined): (() => Promise<void>) | undefined;
|
|
20
|
+
//# sourceMappingURL=DataLoading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataLoading.d.ts","sourceRoot":"","sources":["../../../src/DataLoading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAoB,CAAC;AAkD5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,SAAS,GACjE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAkEnC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NavigationAction, NavigationState, ParamListBase } from '@react-navigation/routers';
|
|
1
|
+
import type { NavigationAction, NavigationState, ParamListBase, PartialState } from '@react-navigation/routers';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import type { NavigationHelpers } from './types.js';
|
|
4
4
|
export type ListenerMap = {
|
|
@@ -18,7 +18,7 @@ export type FocusedNavigationListener = <T>(callback: FocusedNavigationCallback<
|
|
|
18
18
|
result: T;
|
|
19
19
|
};
|
|
20
20
|
export type GetStateListener = () => NavigationState;
|
|
21
|
-
export type ChildBeforeRemoveListener = (action: NavigationAction) => boolean;
|
|
21
|
+
export type ChildBeforeRemoveListener = (action: NavigationAction, nextState: NavigationState | PartialState<NavigationState> | undefined) => boolean;
|
|
22
22
|
/**
|
|
23
23
|
* Context which holds the required helpers needed to build nested navigators.
|
|
24
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationBuilderContext.d.ts","sourceRoot":"","sources":["../../../src/NavigationBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"NavigationBuilderContext.d.ts","sourceRoot":"","sources":["../../../src/NavigationBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAS,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,yBAAyB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,YAAY,EAAE,yBAAyB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EACpD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KACrB,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC9D,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,gBAAgB,EACxB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAC5B,OAAO,CAAC;AAEb,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CACzC,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,KACzC,CAAC,CAAC;AAEP,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,EACxC,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,KACnC;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC;AAErD,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,KACnE,OAAO,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,wBAAwB;eAE/B,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,GACxE,SAAS;kBACC,WAAW,GAAG,SAAS;uBAClB,gBAAgB,GAAG,SAAS;mBAChC,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;sBAChC,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;iBACtD,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;QACtC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,OAAO,CAAC;KACf,KAAK,IAAI;qBACO,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;oBAC1B,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI;kBAChC,MAAM,IAAI;eACb,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS;EAWjE,CAAC"}
|
|
@@ -19,7 +19,6 @@ export declare const NavigationRouteContext: React.Context<Readonly<{
|
|
|
19
19
|
* Context which holds the navigation prop for a screen.
|
|
20
20
|
*/
|
|
21
21
|
export declare const NavigationContext: React.Context<NavigationProp<ParamListBase> | undefined>;
|
|
22
|
-
export declare const NavigationRouteNameContext: React.Context<string | undefined>;
|
|
23
22
|
type Props = {
|
|
24
23
|
route: Route<string>;
|
|
25
24
|
navigation: NavigationProp<ParamListBase>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationProvider.d.ts","sourceRoot":"","sources":["../../../src/NavigationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"NavigationProvider.d.ts","sourceRoot":"","sources":["../../../src/NavigationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAK9C;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;eAEvB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,iBAAiB,0DAElB,CAAC;AAEb,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;iBAE7B,CAAC;AAEb,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,qBAuCxE"}
|
|
@@ -9,5 +9,6 @@ export type PreventedRoutes = Record<string, {
|
|
|
9
9
|
export declare const PreventRemoveContext: React.Context<{
|
|
10
10
|
preventedRoutes: PreventedRoutes;
|
|
11
11
|
setPreventRemove: (id: string, routeKey: string, preventRemove: boolean) => void;
|
|
12
|
+
notifyPreventRemove: () => void;
|
|
12
13
|
} | undefined>;
|
|
13
14
|
//# sourceMappingURL=PreventRemoveContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreventRemoveContext.d.ts","sourceRoot":"","sources":["../../../src/PreventRemoveContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEzE,eAAO,MAAM,oBAAoB;qBAEV,eAAe;sBACd,CAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,KACnB,IAAI;
|
|
1
|
+
{"version":3,"file":"PreventRemoveContext.d.ts","sourceRoot":"","sources":["../../../src/PreventRemoveContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEzE,eAAO,MAAM,oBAAoB;qBAEV,eAAe;sBACd,CAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,KACnB,IAAI;yBACY,MAAM,IAAI;cAGzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreventRemoveProvider.d.ts","sourceRoot":"","sources":["../../../src/PreventRemoveProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"PreventRemoveProvider.d.ts","sourceRoot":"","sources":["../../../src/PreventRemoveProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAmBF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,qBAkGxD"}
|