@react-navigation/core 8.0.0-alpha.24 → 8.0.0-alpha.26

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.
Files changed (136) hide show
  1. package/lib/module/BaseNavigationContainer.js +5 -2
  2. package/lib/module/BaseNavigationContainer.js.map +1 -1
  3. package/lib/module/DataLoading.js +102 -0
  4. package/lib/module/DataLoading.js.map +1 -0
  5. package/lib/module/NavigationIndependentTree.js +7 -6
  6. package/lib/module/NavigationIndependentTree.js.map +1 -1
  7. package/lib/module/NavigationProvider.js +12 -12
  8. package/lib/module/NavigationProvider.js.map +1 -1
  9. package/lib/module/PreventRemoveContext.js.map +1 -1
  10. package/lib/module/PreventRemoveProvider.js +34 -24
  11. package/lib/module/PreventRemoveProvider.js.map +1 -1
  12. package/lib/module/StaticNavigation.js +14 -6
  13. package/lib/module/StaticNavigation.js.map +1 -1
  14. package/lib/module/StaticTreeContext.js +5 -0
  15. package/lib/module/StaticTreeContext.js.map +1 -0
  16. package/lib/module/checkSerializable.js +7 -9
  17. package/lib/module/checkSerializable.js.map +1 -1
  18. package/lib/module/createNavigationContainerRef.js +6 -8
  19. package/lib/module/createNavigationContainerRef.js.map +1 -1
  20. package/lib/module/createNavigatorFactory.js.map +1 -1
  21. package/lib/module/getActionFromState.js +11 -11
  22. package/lib/module/getActionFromState.js.map +1 -1
  23. package/lib/module/getPathFromState.js +38 -39
  24. package/lib/module/getPathFromState.js.map +1 -1
  25. package/lib/module/getPatternParts.js +2 -2
  26. package/lib/module/getPatternParts.js.map +1 -1
  27. package/lib/module/getStateFromPath.js +72 -45
  28. package/lib/module/getStateFromPath.js.map +1 -1
  29. package/lib/module/index.js +1 -0
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/types.js.map +1 -1
  32. package/lib/module/useEventEmitter.js +1 -1
  33. package/lib/module/useEventEmitter.js.map +1 -1
  34. package/lib/module/useKeyedChildListeners.js +4 -2
  35. package/lib/module/useKeyedChildListeners.js.map +1 -1
  36. package/lib/module/useNavigation.js +2 -15
  37. package/lib/module/useNavigation.js.map +1 -1
  38. package/lib/module/useNavigationBuilder.js +4 -14
  39. package/lib/module/useNavigationBuilder.js.map +1 -1
  40. package/lib/module/useNavigationCache.js +19 -14
  41. package/lib/module/useNavigationCache.js.map +1 -1
  42. package/lib/module/useNavigationHelpers.js +27 -9
  43. package/lib/module/useNavigationHelpers.js.map +1 -1
  44. package/lib/module/useNavigationState.js +69 -36
  45. package/lib/module/useNavigationState.js.map +1 -1
  46. package/lib/module/useOnAction.js +21 -2
  47. package/lib/module/useOnAction.js.map +1 -1
  48. package/lib/module/useOptionsGetters.js +3 -1
  49. package/lib/module/useOptionsGetters.js.map +1 -1
  50. package/lib/module/usePreventRemove.js +9 -2
  51. package/lib/module/usePreventRemove.js.map +1 -1
  52. package/lib/module/useRouteCache.js +14 -7
  53. package/lib/module/useRouteCache.js.map +1 -1
  54. package/lib/module/useScheduleUpdate.js +8 -8
  55. package/lib/module/useScheduleUpdate.js.map +1 -1
  56. package/lib/module/useSyncState.js +4 -1
  57. package/lib/module/useSyncState.js.map +1 -1
  58. package/lib/module/validatePathConfig.js.map +1 -1
  59. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  60. package/lib/typescript/src/DataLoading.d.ts +20 -0
  61. package/lib/typescript/src/DataLoading.d.ts.map +1 -0
  62. package/lib/typescript/src/NavigationProvider.d.ts +0 -1
  63. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  64. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  65. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  66. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  67. package/lib/typescript/src/StaticNavigation.d.ts +65 -39
  68. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  69. package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
  70. package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
  71. package/lib/typescript/src/checkSerializable.d.ts +4 -2
  72. package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
  73. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  74. package/lib/typescript/src/createNavigatorFactory.d.ts +9 -5
  75. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  76. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  77. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  78. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  79. package/lib/typescript/src/index.d.ts +2 -1
  80. package/lib/typescript/src/index.d.ts.map +1 -1
  81. package/lib/typescript/src/types.d.ts +27 -18
  82. package/lib/typescript/src/types.d.ts.map +1 -1
  83. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  84. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  85. package/lib/typescript/src/useNavigationBuilder.d.ts +1 -1
  86. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  87. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  88. package/lib/typescript/src/useNavigationHelpers.d.ts +3 -4
  89. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  90. package/lib/typescript/src/useNavigationState.d.ts +11 -1
  91. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  92. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  93. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  94. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  95. package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -0
  96. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  97. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  98. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  99. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  100. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  101. package/lib/typescript/src/utilities.d.ts +17 -0
  102. package/lib/typescript/src/utilities.d.ts.map +1 -1
  103. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  104. package/package.json +3 -5
  105. package/src/BaseNavigationContainer.tsx +9 -2
  106. package/src/DataLoading.tsx +139 -0
  107. package/src/NavigationIndependentTree.tsx +11 -11
  108. package/src/NavigationProvider.tsx +13 -16
  109. package/src/PreventRemoveContext.tsx +1 -0
  110. package/src/PreventRemoveProvider.tsx +48 -43
  111. package/src/StaticNavigation.tsx +157 -93
  112. package/src/StaticTreeContext.tsx +7 -0
  113. package/src/checkSerializable.tsx +20 -14
  114. package/src/createNavigationContainerRef.tsx +12 -9
  115. package/src/createNavigatorFactory.tsx +16 -28
  116. package/src/getActionFromState.tsx +18 -16
  117. package/src/getPathFromState.tsx +69 -65
  118. package/src/getPatternParts.tsx +2 -2
  119. package/src/getStateFromPath.tsx +107 -66
  120. package/src/index.tsx +2 -0
  121. package/src/types.tsx +74 -55
  122. package/src/useEventEmitter.tsx +1 -1
  123. package/src/useKeyedChildListeners.tsx +4 -2
  124. package/src/useNavigation.tsx +2 -21
  125. package/src/useNavigationBuilder.tsx +6 -16
  126. package/src/useNavigationCache.tsx +26 -19
  127. package/src/useNavigationHelpers.tsx +26 -9
  128. package/src/useNavigationState.tsx +90 -60
  129. package/src/useOnAction.tsx +49 -1
  130. package/src/useOptionsGetters.tsx +4 -1
  131. package/src/usePreventRemove.tsx +11 -2
  132. package/src/useRouteCache.tsx +19 -11
  133. package/src/useScheduleUpdate.tsx +8 -7
  134. package/src/useSyncState.tsx +5 -1
  135. package/src/utilities.tsx +28 -0
  136. package/src/validatePathConfig.tsx +1 -0
@@ -2,8 +2,6 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import useLatestCallback from 'use-latest-callback';
5
- import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector';
6
- import { useNavigation } from "./useNavigation.js";
7
5
 
8
6
  /**
9
7
  * Hook to get a value from the current navigation state using a selector.
@@ -15,58 +13,74 @@ import { useNavigation } from "./useNavigation.js";
15
13
  */
16
14
  import { jsx as _jsx } from "react/jsx-runtime";
17
15
  export function useNavigationState(...args) {
18
- let navigation, stateListener, selector;
16
+ const selector = typeof args[0] === 'string' ? args[1] : args[0];
17
+ if (typeof selector !== 'function') {
18
+ throw new Error(`A selector function must be provided (got ${typeof selector}).`);
19
+ }
20
+
21
+ // @ts-expect-error: the public overloads guarantee the selector's type, but
22
+ // the `unknown[]` implementation signature can't express it
23
+ const select = selector;
24
+ let listener;
19
25
  if (typeof args[0] === 'string') {
20
- // `useNavigation` uses `use` internally, so it's fine to call it conditionally
21
- // Cast to a non-generic signature to skip overload resolution - otherwise TS
22
- // eagerly expands `NavigationListForNested<RootNavigator>` at this call site.
23
- navigation = useNavigation(args[0]);
24
- selector = args[1];
26
+ const name = args[0];
27
+ const listeners = React.use(NamedNavigationStateListenerListContext);
28
+ listener = listeners?.[name];
29
+ if (listener == null) {
30
+ throw new Error(`Couldn't find a navigator for the route '${name}' in any of the parent screens. Is your component inside the correct screen?`);
31
+ }
25
32
  } else {
26
- selector = args[0];
27
- }
28
- if (navigation == null) {
29
- stateListener = React.use(NavigationStateListenerContext);
30
- if (stateListener == null) {
33
+ listener = React.use(NavigationStateListenerContext);
34
+ if (listener == null) {
31
35
  throw new Error("Couldn't get the navigation state. Is your component inside a navigator?");
32
36
  }
33
37
  }
34
- const subscribe = React.useCallback(callback => {
35
- if (navigation) {
36
- return navigation.addListener('state', callback);
37
- } else if (stateListener) {
38
- return stateListener.subscribe(callback);
39
- } else {
40
- throw new Error("Couldn't subscribe to navigation state changes. This is not expected.");
41
- }
42
- }, [navigation, stateListener]);
43
- const getSnapshot = navigation ? navigation.getState : stateListener?.getState;
44
- if (getSnapshot == null) {
45
- throw new Error("Couldn't get the navigation state. This is not expected.");
46
- }
47
- if (typeof selector !== 'function') {
48
- throw new Error(`A selector function must be provided (got ${typeof selector}).`);
49
- }
50
- const value = useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot,
51
- // @ts-expect-error we can't infer the type here
52
- selector);
53
- return value;
38
+ const {
39
+ getState,
40
+ subscribe
41
+ } = listener;
42
+ const [, forceUpdate] = React.useReducer(count => count + 1, 0);
43
+ const selected = select(getState());
44
+ const selectionRef = React.useRef({
45
+ select,
46
+ selected
47
+ });
48
+ React.useLayoutEffect(() => {
49
+ selectionRef.current = {
50
+ select,
51
+ selected
52
+ };
53
+ });
54
+ React.useEffect(() => {
55
+ const checkForUpdates = () => {
56
+ const selection = selectionRef.current;
57
+ if (!Object.is(selection.selected, selection.select(getState()))) {
58
+ forceUpdate();
59
+ }
60
+ };
61
+ const unsubscribe = subscribe(checkForUpdates);
62
+
63
+ // The state may have changed between the render and the subscription
64
+ checkForUpdates();
65
+ return unsubscribe;
66
+ }, [getState, subscribe]);
67
+ return selected;
54
68
  }
55
69
  export function NavigationStateListenerProvider({
56
70
  state,
71
+ getState,
57
72
  children
58
73
  }) {
59
74
  const listeners = React.useRef([]);
60
- const stateRef = React.useRef(state);
61
- const getState = useLatestCallback(() => stateRef.current);
62
75
  const subscribe = useLatestCallback(callback => {
63
76
  listeners.current.push(callback);
64
77
  return () => {
65
78
  listeners.current = listeners.current.filter(cb => cb !== callback);
66
79
  };
67
80
  });
81
+
82
+ // Notify subscribers once the new state has committed
68
83
  React.useLayoutEffect(() => {
69
- stateRef.current = state;
70
84
  listeners.current.forEach(callback => callback());
71
85
  }, [state]);
72
86
  const context = React.useMemo(() => ({
@@ -78,5 +92,24 @@ export function NavigationStateListenerProvider({
78
92
  children: children
79
93
  });
80
94
  }
95
+ export function NamedNavigationStateListenerProvider({
96
+ name,
97
+ children
98
+ }) {
99
+ const listener = React.use(NavigationStateListenerContext);
100
+ if (listener == null) {
101
+ throw new Error("Couldn't find a navigation state listener. This is likely because the navigator doesn't render its content under 'NavigationContent'.");
102
+ }
103
+ const parents = React.use(NamedNavigationStateListenerListContext);
104
+ const listeners = React.useMemo(() => ({
105
+ ...parents,
106
+ [name]: listener
107
+ }), [listener, name, parents]);
108
+ return /*#__PURE__*/_jsx(NamedNavigationStateListenerListContext.Provider, {
109
+ value: listeners,
110
+ children: children
111
+ });
112
+ }
81
113
  const NavigationStateListenerContext = /*#__PURE__*/React.createContext(undefined);
114
+ export const NamedNavigationStateListenerListContext = /*#__PURE__*/React.createContext(undefined);
82
115
  //# sourceMappingURL=useNavigationState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLatestCallback","useSyncExternalStoreWithSelector","useNavigation","jsx","_jsx","useNavigationState","args","navigation","stateListener","selector","use","NavigationStateListenerContext","Error","subscribe","useCallback","callback","addListener","getSnapshot","getState","value","NavigationStateListenerProvider","state","children","listeners","useRef","stateRef","current","push","filter","cb","useLayoutEffect","forEach","context","useMemo","Provider","createContext","undefined"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useLatestCallback","jsx","_jsx","useNavigationState","args","selector","Error","select","listener","name","listeners","use","NamedNavigationStateListenerListContext","NavigationStateListenerContext","getState","subscribe","forceUpdate","useReducer","count","selected","selectionRef","useRef","useLayoutEffect","current","useEffect","checkForUpdates","selection","Object","is","unsubscribe","NavigationStateListenerProvider","state","children","callback","push","filter","cb","forEach","context","useMemo","Provider","value","NamedNavigationStateListenerProvider","parents","createContext","undefined"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
+ import { getLoaderForState } from "./DataLoading.js";
4
5
  import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
6
+ import { StaticTreeContext } from "./StaticTreeContext.js";
5
7
  import { shouldPreventRemove, useOnPreventRemove } from "./useOnPreventRemove.js";
8
+ const didFocusedRouteChange = (currentState, nextState) => {
9
+ let currentFocusedRoute = currentState.routes[currentState.index ?? 0];
10
+ let nextFocusedRoute = nextState.routes[nextState.index ?? 0];
11
+ let changed = currentFocusedRoute?.key !== nextFocusedRoute?.key;
12
+ while (!changed && currentFocusedRoute?.state != null && nextFocusedRoute?.state != null && currentFocusedRoute.state !== nextFocusedRoute.state) {
13
+ currentFocusedRoute = currentFocusedRoute.state.routes[currentFocusedRoute.state.index ?? 0];
14
+ nextFocusedRoute = nextFocusedRoute.state.routes[nextFocusedRoute.state.index ?? 0];
15
+ changed = currentFocusedRoute?.key !== nextFocusedRoute?.key;
16
+ }
17
+ return changed;
18
+ };
19
+
6
20
  /**
7
21
  * Hook to handle actions for a navigator, including state updates and bubbling.
8
22
  *
@@ -28,8 +42,9 @@ export function useOnAction({
28
42
  addListener: addListenerParent,
29
43
  onDispatchAction
30
44
  } = React.use(NavigationBuilderContext);
45
+ const tree = React.use(StaticTreeContext);
31
46
  const routerConfigOptionsRef = React.useRef(routerConfigOptions);
32
- React.useEffect(() => {
47
+ React.useInsertionEffect(() => {
33
48
  routerConfigOptionsRef.current = routerConfigOptions;
34
49
  });
35
50
  const onAction = React.useCallback((action, visitedNavigators = new Set()) => {
@@ -55,6 +70,10 @@ export function useOnAction({
55
70
  return true;
56
71
  }
57
72
  onDispatchAction(action, false);
73
+ if (tree && didFocusedRouteChange(state, result)) {
74
+ const loader = getLoaderForState(tree, result);
75
+ loader?.();
76
+ }
58
77
  setState(result);
59
78
  } else {
60
79
  onDispatchAction(action, true);
@@ -86,7 +105,7 @@ export function useOnAction({
86
105
  }
87
106
  }
88
107
  return false;
89
- }, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
108
+ }, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState, tree]);
90
109
  useOnPreventRemove({
91
110
  getState,
92
111
  emitter,
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","use","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener","useInsertionEffect"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -23,8 +23,10 @@ export function useOptionsGetters({
23
23
  onOptionsChange(optionsRef.current ?? {});
24
24
  }
25
25
  }, [navigation, onOptionsChange]);
26
- React.useEffect(() => {
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","useInsertionEffect","getter"],"sourceRoot":"../../src","sources":["useOptionsGetters.tsx"],"mappings":"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","ignoreList":[]}
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.useEffect(() => {
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","useInsertionEffect","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;EAAiB,CAAC,GAAGV,uBAAuB,CAAC,CAAC;EAEtDH,KAAK,CAACc,SAAS,CAAC,MAAM;IACpBD,gBAAgB,CAACL,EAAE,EAAEI,QAAQ,EAAEN,aAAa,CAAC;IAC7C,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;EAEnD,MAAMS,oBAAoB,GAAGd,iBAAiB,CAE3Ce,CAAC,IAAK;IACP,IAAI,CAACV,aAAa,EAAE;MAClB;IACF;IAEAU,CAAC,CAACC,cAAc,CAAC,CAAC;IAElBV,QAAQ,CAAC;MAAEW,IAAI,EAAEF,CAAC,CAACE;IAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEFlB,KAAK,CAACmB,kBAAkB,CACtB,MAAMT,UAAU,EAAEU,WAAW,CAAC,cAAc,EAAEL,oBAAoB,CAAC,EACnE,CAACL,UAAU,EAAEK,oBAAoB,CACnC,CAAC;AACH","ignoreList":[]}
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":[]}
@@ -18,7 +18,7 @@ export function useRouteCache(routes) {
18
18
  const cache = React.useMemo(() => ({
19
19
  current: new Map()
20
20
  }), []);
21
- cache.current = routes.reduce((acc, route) => {
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
- Object.defineProperty(proxy, CHILD_STATE, {
50
- enumerable: false,
51
- configurable: true,
52
- value: state
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
- return Array.from(cache.current.values());
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;AAK/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,CAAC,OAAO;IAAEC,OAAO,EAAE,IAAIC,GAAG,CAAC;EAAgB,CAAC,CAAC,EAAE,EAAE,CAAC;EAE7EH,KAAK,CAACE,OAAO,GAAGH,MAAM,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;IAC5C,MAAMC,QAAQ,GAAGP,KAAK,CAACE,OAAO,CAACM,GAAG,CAACF,KAAK,CAACG,GAAG,CAAC;IAC7C,MAAM;MAAEC,KAAK;MAAE,GAAGC;IAAkB,CAAC,GAAGL,KAAK;IAE7C,IAAIM,KAAK;IAET,IAAIL,QAAQ,IAAIZ,aAAa,CAACY,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;IAEAC,MAAM,CAACC,cAAc,CAACN,KAAK,EAAEhB,WAAW,EAAE;MACxCuB,UAAU,EAAE,KAAK;MACjBC,YAAY,EAAE,IAAI;MAClBJ,KAAK,EAAEN;IACT,CAAC,CAAC;IAEFL,GAAG,CAACiB,GAAG,CAAChB,KAAK,CAACG,GAAG,EAAEG,KAAK,CAAC;IAEzB,OAAOP,GAAG;EACZ,CAAC,EAAE,IAAIF,GAAG,CAAC,CAAe,CAAC;EAE3B,OAAOoB,KAAK,CAACC,IAAI,CAACxB,KAAK,CAACE,OAAO,CAACuB,MAAM,CAAC,CAAC,CAAC;AAC3C","ignoreList":[]}
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
- * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.
10
- * It lets all subsequent updates access the latest state so it stays correct.
11
- * Then we call setState during after the component updates.
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
- // FIXME: This is potentially unsafe
20
- // However, since we are using sync store, it might be fine
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;;EAE5E;EACA;EACAG,cAAc,CAACD,QAAQ,CAAC;EAExBH,KAAK,CAACO,eAAe,CAACF,YAAY,CAAC;AACrC","ignoreList":[]}
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
- // Flush all the pending updates
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":"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","ignoreList":[]}
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 +1 @@
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
+ {"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,qBAyXlB"}
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"}
@@ -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;AAI9C;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;eAEvB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,iBAAiB,0DAElB,CAAC;AAEb,eAAO,MAAM,0BAA0B,mCAE3B,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"}
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;cAGH,CAAC"}
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;AA+BF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,qBAiFxD"}
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"}