@react-navigation/core 7.21.3 → 7.21.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/module/PreventRemoveContext.js.map +1 -1
  2. package/lib/module/PreventRemoveProvider.js +34 -24
  3. package/lib/module/PreventRemoveProvider.js.map +1 -1
  4. package/lib/module/createNavigationContainerRef.js +6 -8
  5. package/lib/module/createNavigationContainerRef.js.map +1 -1
  6. package/lib/module/useEventEmitter.js +1 -1
  7. package/lib/module/useEventEmitter.js.map +1 -1
  8. package/lib/module/useKeyedChildListeners.js +4 -2
  9. package/lib/module/useKeyedChildListeners.js.map +1 -1
  10. package/lib/module/useNavigationBuilder.js +4 -15
  11. package/lib/module/useNavigationBuilder.js.map +1 -1
  12. package/lib/module/useNavigationCache.js +5 -2
  13. package/lib/module/useNavigationCache.js.map +1 -1
  14. package/lib/module/useNavigationHelpers.js +27 -9
  15. package/lib/module/useNavigationHelpers.js.map +1 -1
  16. package/lib/module/useNavigationState.js +44 -11
  17. package/lib/module/useNavigationState.js.map +1 -1
  18. package/lib/module/useOnAction.js +1 -1
  19. package/lib/module/useOnAction.js.map +1 -1
  20. package/lib/module/useOptionsGetters.js +3 -1
  21. package/lib/module/useOptionsGetters.js.map +1 -1
  22. package/lib/module/usePreventRemove.js +9 -2
  23. package/lib/module/usePreventRemove.js.map +1 -1
  24. package/lib/module/useRouteCache.js +14 -7
  25. package/lib/module/useRouteCache.js.map +1 -1
  26. package/lib/module/useScheduleUpdate.js +8 -8
  27. package/lib/module/useScheduleUpdate.js.map +1 -1
  28. package/lib/module/useSyncState.js +4 -1
  29. package/lib/module/useSyncState.js.map +1 -1
  30. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  31. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  32. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  33. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  34. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  35. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  36. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  37. package/lib/typescript/src/useNavigationHelpers.d.ts +2 -3
  38. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  39. package/lib/typescript/src/useNavigationState.d.ts +2 -1
  40. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  41. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  42. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  43. package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -0
  44. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  45. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  46. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  47. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  48. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  49. package/package.json +2 -2
  50. package/src/PreventRemoveContext.tsx +1 -0
  51. package/src/PreventRemoveProvider.tsx +48 -43
  52. package/src/createNavigationContainerRef.tsx +12 -9
  53. package/src/useEventEmitter.tsx +1 -1
  54. package/src/useKeyedChildListeners.tsx +4 -2
  55. package/src/useNavigationBuilder.tsx +6 -17
  56. package/src/useNavigationCache.tsx +6 -2
  57. package/src/useNavigationHelpers.tsx +26 -9
  58. package/src/useNavigationState.tsx +51 -21
  59. package/src/useOnAction.tsx +1 -1
  60. package/src/useOptionsGetters.tsx +4 -1
  61. package/src/usePreventRemove.tsx +11 -2
  62. package/src/useRouteCache.tsx +19 -11
  63. package/src/useScheduleUpdate.tsx +8 -7
  64. package/src/useSyncState.tsx +5 -1
@@ -2,7 +2,7 @@
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';
5
+ import { useClientLayoutEffect } from "./useClientLayoutEffect.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  /**
8
8
  * Hook to get a value from the current navigation state using a selector.
@@ -10,30 +10,63 @@ import { jsx as _jsx } from "react/jsx-runtime";
10
10
  * @param selector Selector function to get a value from the state.
11
11
  */
12
12
  export function useNavigationState(selector) {
13
- const stateListener = React.useContext(NavigationStateListenerContext);
14
- if (stateListener == null) {
13
+ if (typeof selector !== 'function') {
14
+ throw new Error(`A selector function must be provided (got ${typeof selector}).`);
15
+ }
16
+ const listener = React.useContext(NavigationStateListenerContext);
17
+ if (listener == null) {
15
18
  throw new Error("Couldn't get the navigation state. Is your component inside a navigator?");
16
19
  }
17
- const value = useSyncExternalStoreWithSelector(stateListener.subscribe,
18
- // @ts-expect-error: this is unsafe, but needed to make the generic work
19
- stateListener.getState, stateListener.getState, selector);
20
- return value;
20
+ const {
21
+ getState,
22
+ subscribe
23
+ } = listener;
24
+ const [, forceUpdate] = React.useReducer(count => count + 1, 0);
25
+
26
+ // @ts-expect-error: this is unsafe, but we need to support it for now
27
+ const selected = selector(getState());
28
+ const selectionRef = React.useRef({
29
+ select: selector,
30
+ selected
31
+ });
32
+ useClientLayoutEffect(() => {
33
+ selectionRef.current = {
34
+ select: selector,
35
+ selected
36
+ };
37
+ });
38
+ React.useEffect(() => {
39
+ const checkForUpdates = () => {
40
+ const selection = selectionRef.current;
41
+
42
+ // @ts-expect-error: this is unsafe, but we need to support it for now
43
+ if (!Object.is(selection.selected, selection.select(getState()))) {
44
+ forceUpdate();
45
+ }
46
+ };
47
+ const unsubscribe = subscribe(checkForUpdates);
48
+
49
+ // The state may have changed between the render and the subscription
50
+ checkForUpdates();
51
+ return unsubscribe;
52
+ }, [getState, subscribe]);
53
+ return selected;
21
54
  }
22
55
  export function NavigationStateListenerProvider({
23
56
  state,
57
+ getState,
24
58
  children
25
59
  }) {
26
60
  const listeners = React.useRef([]);
27
- const stateRef = React.useRef(state);
28
- const getState = useLatestCallback(() => stateRef.current);
29
61
  const subscribe = useLatestCallback(callback => {
30
62
  listeners.current.push(callback);
31
63
  return () => {
32
64
  listeners.current = listeners.current.filter(cb => cb !== callback);
33
65
  };
34
66
  });
35
- React.useLayoutEffect(() => {
36
- stateRef.current = state;
67
+
68
+ // Notify subscribers once the new state has committed
69
+ useClientLayoutEffect(() => {
37
70
  listeners.current.forEach(callback => callback());
38
71
  }, [state]);
39
72
  const context = React.useMemo(() => ({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLatestCallback","useSyncExternalStoreWithSelector","jsx","_jsx","useNavigationState","selector","stateListener","useContext","NavigationStateListenerContext","Error","value","subscribe","getState","NavigationStateListenerProvider","state","children","listeners","useRef","stateRef","current","callback","push","filter","cb","useLayoutEffect","forEach","context","useMemo","Provider","createContext","undefined"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SAASC,gCAAgC,QAAQ,uCAAuC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMzF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,QAAgC,EAC7B;EACH,MAAMC,aAAa,GAAGP,KAAK,CAACQ,UAAU,CAACC,8BAA8B,CAAC;EAEtE,IAAIF,aAAa,IAAI,IAAI,EAAE;IACzB,MAAM,IAAIG,KAAK,CACb,0EACF,CAAC;EACH;EAEA,MAAMC,KAAK,GAAGT,gCAAgC,CAC5CK,aAAa,CAACK,SAAS;EACvB;EACAL,aAAa,CAACM,QAAQ,EACtBN,aAAa,CAACM,QAAQ,EACtBP,QACF,CAAC;EAED,OAAOK,KAAK;AACd;AAEA,OAAO,SAASG,+BAA+BA,CAAC;EAC9CC,KAAK;EACLC;AAIF,CAAC,EAAE;EACD,MAAMC,SAAS,GAAGjB,KAAK,CAACkB,MAAM,CAAiB,EAAE,CAAC;EAClD,MAAMC,QAAQ,GAAGnB,KAAK,CAACkB,MAAM,CAACH,KAAK,CAAC;EAEpC,MAAMF,QAAQ,GAAGZ,iBAAiB,CAAC,MAAMkB,QAAQ,CAACC,OAAO,CAAC;EAE1D,MAAMR,SAAS,GAAGX,iBAAiB,CAAEoB,QAAoB,IAAK;IAC5DJ,SAAS,CAACG,OAAO,CAACE,IAAI,CAACD,QAAQ,CAAC;IAEhC,OAAO,MAAM;MACXJ,SAAS,CAACG,OAAO,GAAGH,SAAS,CAACG,OAAO,CAACG,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKH,QAAQ,CAAC;IACvE,CAAC;EACH,CAAC,CAAC;EAEFrB,KAAK,CAACyB,eAAe,CAAC,MAAM;IAC1BN,QAAQ,CAACC,OAAO,GAAGL,KAAK;IACxBE,SAAS,CAACG,OAAO,CAACM,OAAO,CAAEL,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;EACrD,CAAC,EAAE,CAACN,KAAK,CAAC,CAAC;EAEX,MAAMY,OAAO,GAAG3B,KAAK,CAAC4B,OAAO,CAC3B,OAAO;IACLf,QAAQ;IACRD;EACF,CAAC,CAAC,EACF,CAACC,QAAQ,EAAED,SAAS,CACtB,CAAC;EAED,oBACER,IAAA,CAACK,8BAA8B,CAACoB,QAAQ;IAAClB,KAAK,EAAEgB,OAAQ;IAAAX,QAAA,EACrDA;EAAQ,CAC8B,CAAC;AAE9C;AAEA,MAAMP,8BAA8B,gBAAGT,KAAK,CAAC8B,aAAa,CAMxDC,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useLatestCallback","useClientLayoutEffect","jsx","_jsx","useNavigationState","selector","Error","listener","useContext","NavigationStateListenerContext","getState","subscribe","forceUpdate","useReducer","count","selected","selectionRef","useRef","select","current","useEffect","checkForUpdates","selection","Object","is","unsubscribe","NavigationStateListenerProvider","state","children","listeners","callback","push","filter","cb","forEach","context","useMemo","Provider","value","createContext","undefined"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AAEnD,SAASC,qBAAqB,QAAQ,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAWhE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,QAAgC,EAC7B;EACH,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;IAClC,MAAM,IAAIC,KAAK,CACb,6CAA6C,OAAOD,QAAQ,IAC9D,CAAC;EACH;EAEA,MAAME,QAAQ,GAAGR,KAAK,CAACS,UAAU,CAACC,8BAA8B,CAAC;EAEjE,IAAIF,QAAQ,IAAI,IAAI,EAAE;IACpB,MAAM,IAAID,KAAK,CACb,0EACF,CAAC;EACH;EAEA,MAAM;IAAEI,QAAQ;IAAEC;EAAU,CAAC,GAAGJ,QAAQ;EAExC,MAAM,GAAGK,WAAW,CAAC,GAAGb,KAAK,CAACc,UAAU,CAAEC,KAAa,IAAKA,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;;EAEzE;EACA,MAAMC,QAAQ,GAAGV,QAAQ,CAACK,QAAQ,CAAC,CAAC,CAAC;EAErC,MAAMM,YAAY,GAAGjB,KAAK,CAACkB,MAAM,CAAC;IAAEC,MAAM,EAAEb,QAAQ;IAAEU;EAAS,CAAC,CAAC;EAEjEd,qBAAqB,CAAC,MAAM;IAC1Be,YAAY,CAACG,OAAO,GAAG;MAAED,MAAM,EAAEb,QAAQ;MAAEU;IAAS,CAAC;EACvD,CAAC,CAAC;EAEFhB,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5B,MAAMC,SAAS,GAAGN,YAAY,CAACG,OAAO;;MAEtC;MACA,IAAI,CAACI,MAAM,CAACC,EAAE,CAACF,SAAS,CAACP,QAAQ,EAAEO,SAAS,CAACJ,MAAM,CAACR,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;QAChEE,WAAW,CAAC,CAAC;MACf;IACF,CAAC;IAED,MAAMa,WAAW,GAAGd,SAAS,CAACU,eAAe,CAAC;;IAE9C;IACAA,eAAe,CAAC,CAAC;IAEjB,OAAOI,WAAW;EACpB,CAAC,EAAE,CAACf,QAAQ,EAAEC,SAAS,CAAC,CAAC;EAEzB,OAAOI,QAAQ;AACjB;AAEA,OAAO,SAASW,+BAA+BA,CAAC;EAC9CC,KAAK;EACLjB,QAAQ;EACRkB;AAKF,CAAC,EAAE;EACD,MAAMC,SAAS,GAAG9B,KAAK,CAACkB,MAAM,CAAiB,EAAE,CAAC;EAElD,MAAMN,SAAS,GAAGX,iBAAiB,CAAE8B,QAAoB,IAAK;IAC5DD,SAAS,CAACV,OAAO,CAACY,IAAI,CAACD,QAAQ,CAAC;IAEhC,OAAO,MAAM;MACXD,SAAS,CAACV,OAAO,GAAGU,SAAS,CAACV,OAAO,CAACa,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKH,QAAQ,CAAC;IACvE,CAAC;EACH,CAAC,CAAC;;EAEF;EACA7B,qBAAqB,CAAC,MAAM;IAC1B4B,SAAS,CAACV,OAAO,CAACe,OAAO,CAAEJ,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;EACrD,CAAC,EAAE,CAACH,KAAK,CAAC,CAAC;EAEX,MAAMQ,OAAO,GAAGpC,KAAK,CAACqC,OAAO,CAC3B,OAAO;IACL1B,QAAQ;IACRC;EACF,CAAC,CAAC,EACF,CAACD,QAAQ,EAAEC,SAAS,CACtB,CAAC;EAED,oBACER,IAAA,CAACM,8BAA8B,CAAC4B,QAAQ;IAACC,KAAK,EAAEH,OAAQ;IAAAP,QAAA,EACrDA;EAAQ,CAC8B,CAAC;AAE9C;AAEA,MAAMnB,8BAA8B,gBAAGV,KAAK,CAACwC,aAAa,CAExDC,SAAS,CAAC","ignoreList":[]}
@@ -31,7 +31,7 @@ export function useOnAction({
31
31
  } = React.useContext(NavigationBuilderContext);
32
32
  const navigationInChildEnabled = React.useContext(DeprecatedNavigationInChildContext);
33
33
  const routerConfigOptionsRef = React.useRef(routerConfigOptions);
34
- React.useEffect(() => {
34
+ React.useInsertionEffect(() => {
35
35
  routerConfigOptionsRef.current = routerConfigOptions;
36
36
  });
37
37
  const onAction = React.useCallback((action, visitedNavigators = new Set()) => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","DeprecatedNavigationInChildContext","NavigationBuilderContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","navigationInChildEnabled","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","type","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","DeprecatedNavigationInChildContext","NavigationBuilderContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","navigationInChildEnabled","routerConfigOptionsRef","useRef","useInsertionEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","type","i","length","listener","useEffect"],"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","useContext","addOptionsGetter","parentAddOptionsGetter","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","result","getCurrentOptions","optionsFromListener","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","useContext","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","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,CAACc,SAAS,CACb,MAAMJ,UAAU,EAAES,WAAW,CAAC,cAAc,EAAEJ,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,CAACgB,SAAS,CACb,MAAMN,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":[]}
@@ -6,20 +6,20 @@ import { useClientLayoutEffect } from "./useClientLayoutEffect.js";
6
6
 
7
7
  /**
8
8
  * When screen config changes, we want to update the navigator in the same update phase.
9
- * However, navigation state is in the root component and React won't let us update it from a child.
10
- * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.
11
- * It lets all subsequent updates access the latest state so it stays correct.
12
- * Then we call setState during after the component updates.
9
+ * However, navigation state is in the root component and React won't let us update it from a child during render.
10
+ * The render could also be interrupted in concurrent mode, so we need to update after commit.
11
+ * So we queue the update in an insertion effect and flush it in a layout effect.
12
+ * Insertion effects run before layout effects, so every navigator in the tree has queued its update before we flush.
13
+ * This lets nested updates be applied from the root down without clobbering each other.
13
14
  */
14
15
  export function useScheduleUpdate(callback) {
15
16
  const {
16
17
  scheduleUpdate,
17
18
  flushUpdates
18
19
  } = React.useContext(NavigationBuilderContext);
19
-
20
- // FIXME: This is potentially unsafe
21
- // However, since we are using sync store, it might be fine
22
- scheduleUpdate(callback);
20
+ React.useInsertionEffect(() => {
21
+ scheduleUpdate(callback);
22
+ });
23
23
  useClientLayoutEffect(flushUpdates);
24
24
  }
25
25
  //# sourceMappingURL=useScheduleUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","useClientLayoutEffect","useScheduleUpdate","callback","scheduleUpdate","flushUpdates","useContext"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;AACrE,SAASC,qBAAqB,QAAQ,4BAAyB;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,QAAoB,EAAE;EACtD,MAAM;IAAEC,cAAc;IAAEC;EAAa,CAAC,GAAGN,KAAK,CAACO,UAAU,CACvDN,wBACF,CAAC;;EAED;EACA;EACAI,cAAc,CAACD,QAAQ,CAAC;EAExBF,qBAAqB,CAACI,YAAY,CAAC;AACrC","ignoreList":[]}
1
+ {"version":3,"names":["React","NavigationBuilderContext","useClientLayoutEffect","useScheduleUpdate","callback","scheduleUpdate","flushUpdates","useContext","useInsertionEffect"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;AACrE,SAASC,qBAAqB,QAAQ,4BAAyB;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,QAAoB,EAAE;EACtD,MAAM;IAAEC,cAAc;IAAEC;EAAa,CAAC,GAAGN,KAAK,CAACO,UAAU,CACvDN,wBACF,CAAC;EAEDD,KAAK,CAACQ,kBAAkB,CAAC,MAAM;IAC7BH,cAAc,CAACD,QAAQ,CAAC;EAC1B,CAAC,CAAC;EAEFF,qBAAqB,CAACI,YAAY,CAAC;AACrC","ignoreList":[]}
@@ -62,7 +62,10 @@ export function useSyncState(getInitialState) {
62
62
  pendingUpdatesRef.current = [];
63
63
  if (pendingUpdates.length !== 0) {
64
64
  store.batchUpdates(() => {
65
- // Flush all the pending updates
65
+ // Updates are queued child-first as insertion effects run bottom-up.
66
+ // The root navigator replaces the whole state while nested navigators merge into it.
67
+ // So we apply them root-first to avoid the root clobbering nested updates.
68
+ pendingUpdates.reverse();
66
69
  for (const update of pendingUpdates) {
67
70
  update();
68
71
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLatestCallback","deepFreeze","createStore","getInitialState","listeners","initialized","state","getState","isBatching","didUpdate","setState","newState","forEach","listener","subscribe","callback","push","index","indexOf","splice","batchUpdates","useSyncState","store","useRef","current","useSyncExternalStore","useDebugValue","pendingUpdatesRef","scheduleUpdate","flushUpdates","pendingUpdates","length","update"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useLatestCallback","deepFreeze","createStore","getInitialState","listeners","initialized","state","getState","isBatching","didUpdate","setState","newState","forEach","listener","subscribe","callback","push","index","indexOf","splice","batchUpdates","useSyncState","store","useRef","current","useSyncExternalStore","useDebugValue","pendingUpdatesRef","scheduleUpdate","flushUpdates","pendingUpdates","length","reverse","update"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":"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","ignoreList":[]}
@@ -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,2CAiFxD"}
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,2CAkGxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"createNavigationContainerRef.d.ts","sourceRoot":"","sources":["../../../src/createNavigationContainerRef.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iCAAiC,EAClC,MAAM,YAAS,CAAC;AAEjB,eAAO,MAAM,qBAAqB,kRAC+O,CAAC;AAElR,wBAAgB,4BAA4B,CAC1C,SAAS,SAAS,EAAE,GAAG,eAAe,CAAC,aAAa,KACjD,iCAAiC,CAAC,SAAS,CAAC,CAqFhD"}
1
+ {"version":3,"file":"createNavigationContainerRef.d.ts","sourceRoot":"","sources":["../../../src/createNavigationContainerRef.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iCAAiC,EAClC,MAAM,YAAS,CAAC;AAEjB,eAAO,MAAM,qBAAqB,kRAC+O,CAAC;AAElR,wBAAgB,4BAA4B,CAC1C,SAAS,SAAS,EAAE,GAAG,eAAe,CAAC,aAAa,KACjD,iCAAiC,CAAC,SAAS,CAAC,CAwFhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyedChildListeners.d.ts","sourceRoot":"","sources":["../../../src/useKeyedChildListeners.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA4B,CAAC;AAEnE;;GAEG;AACH,wBAAgB,sBAAsB;;;;;uBAcjC,CAAC,SAAS,MAAM,gBAAgB,QACzB,CAAC,OACF,MAAM,YACD,gBAAgB,CAAC,CAAC,CAAC;EAiBlC"}
1
+ {"version":3,"file":"useKeyedChildListeners.d.ts","sourceRoot":"","sources":["../../../src/useKeyedChildListeners.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA4B,CAAC;AAEnE;;GAEG;AACH,wBAAgB,sBAAsB;;;;;uBAcjC,CAAC,SAAS,MAAM,gBAAgB,QACzB,CAAC,OACF,MAAM,YACD,gBAAgB,CAAC,CAAC,CAAC;EAmBlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EAIjB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,YAAY,EAEjB,iBAAiB,EAElB,MAAM,YAAS,CAAC;AAiRjB;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,EAC5D,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EACnE,OAAO,EAAE,uBAAuB,CAC9B,aAAa,EACb,MAAM,GAAG,SAAS,EAClB,KAAK,EACL,aAAa,EACb,QAAQ,EACR,GAAG,CACJ,GACC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6rBhB"}
1
+ {"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EAIjB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,YAAY,EAEjB,iBAAiB,EAElB,MAAM,YAAS,CAAC;AAgRjB;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,EAC5D,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EACnE,OAAO,EAAE,uBAAuB,CAC9B,aAAa,EACb,MAAM,GAAG,SAAS,EAClB,KAAK,EACL,aAAa,EACb,QAAQ,EACR,GAAG,CACJ,GACC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmrBhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigationCache.d.ts","sourceRoot":"","sources":["../../../src/useNavigationCache.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAEhE,KAAK,OAAO,CACV,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC;IACF,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAC1C,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,UAAU,EAAE,CACV,EAAE,EAAE,CACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KACnC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAC/B,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,cAAc,CACjB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,cAAc,CAChB,aAAa,EACb,MAAM,EACN,MAAM,GAAG,SAAS,EAClB,KAAK,EACL,aAAa,EACb,QAAQ,CACT,CAAC;AAEF,KAAK,eAAe,CAClB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAChD,EACA,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4KzC"}
1
+ {"version":3,"file":"useNavigationCache.d.ts","sourceRoot":"","sources":["../../../src/useNavigationCache.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAEhE,KAAK,OAAO,CACV,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC;IACF,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAC1C,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,UAAU,EAAE,CACV,EAAE,EAAE,CACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KACnC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAC/B,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,cAAc,CACjB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,cAAc,CAChB,aAAa,EACb,MAAM,EACN,MAAM,GAAG,SAAS,EAClB,KAAK,EACL,aAAa,EACb,QAAQ,CACT,CAAC;AAEF,KAAK,eAAe,CAClB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAClC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAChD,EACA,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgLzC"}
@@ -1,5 +1,4 @@
1
1
  import { type NavigationAction, type NavigationState, type ParamListBase, type Router } from '@react-navigation/routers';
2
- import * as React from 'react';
3
2
  import { type NavigationHelpers, PrivateValueStore } from './types.js';
4
3
  import type { NavigationEventEmitter } from './useEventEmitter.js';
5
4
  type Options<State extends NavigationState, Action extends NavigationAction> = {
@@ -7,15 +6,15 @@ type Options<State extends NavigationState, Action extends NavigationAction> = {
7
6
  onAction: (action: NavigationAction) => boolean;
8
7
  onUnhandledAction: (action: NavigationAction) => void;
9
8
  getState: () => State;
9
+ state: State;
10
10
  emitter: NavigationEventEmitter<any>;
11
11
  router: Router<State, Action>;
12
- stateRef: React.RefObject<State | null>;
13
12
  };
14
13
  /**
15
14
  * Navigation object with helper methods to be used by a navigator.
16
15
  * This object includes methods for common actions as well as methods the parent screen's navigation object.
17
16
  */
18
- export declare function useNavigationHelpers<State extends NavigationState, ActionHelpers extends Record<string, () => void>, Action extends NavigationAction, EventMap extends Record<string, any>>({ id: navigatorId, onAction, onUnhandledAction, getState, emitter, router, stateRef, }: Options<State, Action>): {
17
+ export declare function useNavigationHelpers<State extends NavigationState, ActionHelpers extends Record<string, () => void>, Action extends NavigationAction, EventMap extends Record<string, any>>({ id: navigatorId, onAction, onUnhandledAction, getState, state, emitter, router, }: Options<State, Action>): {
19
18
  dispatch(action: Readonly<{
20
19
  type: string;
21
20
  payload?: object;
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigationHelpers.d.ts","sourceRoot":"","sources":["../../../src/useNavigationHelpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAS,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAMhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,EAAE,MAAM,SAAS,gBAAgB,IAAI;IAC7E,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACtD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;CACzC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAChD,MAAM,SAAS,gBAAgB,EAC/B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpC,EACA,EAAE,EAAE,WAAW,EACf,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,GACT,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqFxB"}
1
+ {"version":3,"file":"useNavigationHelpers.d.ts","sourceRoot":"","sources":["../../../src/useNavigationHelpers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,KAAK,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAS,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAMhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,EAAE,MAAM,SAAS,gBAAgB,IAAI;IAC7E,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACtD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAChD,MAAM,SAAS,gBAAgB,EAC/B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACpC,EACA,EAAE,EAAE,WAAW,EACf,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,MAAM,GACP,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsGxB"}
@@ -7,8 +7,9 @@ type Selector<ParamList extends ParamListBase, T> = (state: NavigationState<Para
7
7
  * @param selector Selector function to get a value from the state.
8
8
  */
9
9
  export declare function useNavigationState<ParamList extends ParamListBase, T>(selector: Selector<ParamList, T>): T;
10
- export declare function NavigationStateListenerProvider({ state, children, }: {
10
+ export declare function NavigationStateListenerProvider({ state, getState, children, }: {
11
11
  state: NavigationState<ParamListBase>;
12
+ getState: () => NavigationState<ParamListBase>;
12
13
  children: React.ReactNode;
13
14
  }): import("react/jsx-runtime").JSX.Element;
14
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigationState.d.ts","sourceRoot":"","sources":["../../../src/useNavigationState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,KAAK,QAAQ,CAAC,SAAS,SAAS,aAAa,EAAE,CAAC,IAAI,CAClD,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,KAC9B,CAAC,CAAC;AAEP;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,aAAa,EAAE,CAAC,EACnE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,GAC/B,CAAC,CAkBH;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAgCA"}
1
+ {"version":3,"file":"useNavigationState.d.ts","sourceRoot":"","sources":["../../../src/useNavigationState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,KAAK,QAAQ,CAAC,SAAS,SAAS,aAAa,EAAE,CAAC,IAAI,CAClD,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,KAC9B,CAAC,CAAC;AAEP;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,aAAa,EAAE,CAAC,EACnE,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,GAC/B,CAAC,CA+CH;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CA6BA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOptionsGetters.d.ts","sourceRoot":"","sources":["../../../src/useOptionsGetters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO;4BA+D7D,MAAM,UAAU,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI;;EAiBxD"}
1
+ {"version":3,"file":"useOptionsGetters.d.ts","sourceRoot":"","sources":["../../../src/useOptionsGetters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO;4BAkE7D,MAAM,UAAU,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI;;EAiBxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventRemove.d.ts","sourceRoot":"","sources":["../../../src/usePreventRemove.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAUlE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE;QAAE,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAA;CAAE,KAAK,IAAI,QAgCpE"}
1
+ {"version":3,"file":"usePreventRemove.d.ts","sourceRoot":"","sources":["../../../src/usePreventRemove.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAUlE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE;QAAE,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAA;CAAE,KAAK,IAAI,QAyCpE"}
@@ -1,5 +1,6 @@
1
1
  export declare function usePreventRemoveContext(): {
2
2
  preventedRoutes: import("./PreventRemoveContext.js").PreventedRoutes;
3
3
  setPreventRemove: (id: string, routeKey: string, preventRemove: boolean) => void;
4
+ notifyPreventRemove: () => void;
4
5
  };
5
6
  //# sourceMappingURL=usePreventRemoveContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventRemoveContext.d.ts","sourceRoot":"","sources":["../../../src/usePreventRemoveContext.tsx"],"names":[],"mappings":"AAIA,wBAAgB,uBAAuB;;;EAUtC"}
1
+ {"version":3,"file":"usePreventRemoveContext.d.ts","sourceRoot":"","sources":["../../../src/usePreventRemoveContext.tsx"],"names":[],"mappings":"AAIA,wBAAgB,uBAAuB;;;;EAUtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRouteCache.d.ts","sourceRoot":"","sources":["../../../src/useRouteCache.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAIhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAS,CAAC;AAIzC;;;;GAIG;AACH,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,eAAe,EACzD,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,8BA+CxB"}
1
+ {"version":3,"file":"useRouteCache.d.ts","sourceRoot":"","sources":["../../../src/useRouteCache.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAIhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAS,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,SAAS,eAAe,EACzD,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,8BAyDxB"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * When screen config changes, we want to update the navigator in the same update phase.
3
- * However, navigation state is in the root component and React won't let us update it from a child.
4
- * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.
5
- * It lets all subsequent updates access the latest state so it stays correct.
6
- * Then we call setState during after the component updates.
3
+ * However, navigation state is in the root component and React won't let us update it from a child during render.
4
+ * The render could also be interrupted in concurrent mode, so we need to update after commit.
5
+ * So we queue the update in an insertion effect and flush it in a layout effect.
6
+ * Insertion effects run before layout effects, so every navigator in the tree has queued its update before we flush.
7
+ * This lets nested updates be applied from the root down without clobbering each other.
7
8
  */
8
9
  export declare function useScheduleUpdate(callback: () => void): void;
9
10
  //# sourceMappingURL=useScheduleUpdate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScheduleUpdate.d.ts","sourceRoot":"","sources":["../../../src/useScheduleUpdate.tsx"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,QAUrD"}
1
+ {"version":3,"file":"useScheduleUpdate.d.ts","sourceRoot":"","sources":["../../../src/useScheduleUpdate.tsx"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,QAUrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSyncState.d.ts","sourceRoot":"","sources":["../../../src/useSyncState.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,YAAY,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC;;;;wCAaF,MAAM,IAAI;;EA0B/D"}
1
+ {"version":3,"file":"useSyncState.d.ts","sourceRoot":"","sources":["../../../src/useSyncState.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,YAAY,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC;;;;wCAaF,MAAM,IAAI;;EA8B/D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/core",
3
3
  "description": "Core utilities for building navigators",
4
- "version": "7.21.3",
4
+ "version": "7.21.5",
5
5
  "keywords": [
6
6
  "react",
7
7
  "react-native",
@@ -83,5 +83,5 @@
83
83
  ]
84
84
  ]
85
85
  },
86
- "gitHead": "ce68b20b516d7d523fe85b567055516fdd49464b"
86
+ "gitHead": "8a863290c256c426a03b0298d8b1568420d7a400"
87
87
  }
@@ -14,6 +14,7 @@ export const PreventRemoveContext = React.createContext<
14
14
  routeKey: string,
15
15
  preventRemove: boolean
16
16
  ) => void;
17
+ notifyPreventRemove: () => void;
17
18
  }
18
19
  | undefined
19
20
  >(undefined);