@react-navigation/core 8.0.0-alpha.35 → 8.0.0-alpha.37

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 (41) hide show
  1. package/lib/module/BaseNavigationContainer.js +2 -1
  2. package/lib/module/BaseNavigationContainer.js.map +1 -1
  3. package/lib/module/PreventRemoveProvider.js +1 -2
  4. package/lib/module/PreventRemoveProvider.js.map +1 -1
  5. package/lib/module/getPathFromState.js +11 -7
  6. package/lib/module/getPathFromState.js.map +1 -1
  7. package/lib/module/getStateFromPath.js +1 -1
  8. package/lib/module/getStateFromPath.js.map +1 -1
  9. package/lib/module/isRecordEqual.js +1 -1
  10. package/lib/module/isRecordEqual.js.map +1 -1
  11. package/lib/module/queryString.js +71 -0
  12. package/lib/module/queryString.js.map +1 -0
  13. package/lib/module/useDescriptors.js +34 -10
  14. package/lib/module/useDescriptors.js.map +1 -1
  15. package/lib/module/useOptionsGetters.js +7 -1
  16. package/lib/module/useOptionsGetters.js.map +1 -1
  17. package/lib/module/usePreventRemove.js +1 -2
  18. package/lib/module/usePreventRemove.js.map +1 -1
  19. package/lib/module/useRegisterNavigator.js +1 -2
  20. package/lib/module/useRegisterNavigator.js.map +1 -1
  21. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  22. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  23. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  24. package/lib/typescript/src/isRecordEqual.d.ts.map +1 -1
  25. package/lib/typescript/src/queryString.d.ts +5 -0
  26. package/lib/typescript/src/queryString.d.ts.map +1 -0
  27. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  28. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  29. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  30. package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -1
  31. package/package.json +2 -4
  32. package/src/BaseNavigationContainer.tsx +4 -2
  33. package/src/PreventRemoveProvider.tsx +2 -2
  34. package/src/getPathFromState.tsx +7 -5
  35. package/src/getStateFromPath.tsx +1 -1
  36. package/src/isRecordEqual.tsx +3 -1
  37. package/src/queryString.ts +109 -0
  38. package/src/useDescriptors.tsx +94 -22
  39. package/src/useOptionsGetters.tsx +7 -1
  40. package/src/usePreventRemove.tsx +1 -2
  41. package/src/useRegisterNavigator.tsx +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLatestCallback","NavigationBuilderContext","useNavigationBuilderContext","NavigationProvider","SceneView","ThemeContext","useNavigationCache","useRouteCache","jsx","_jsx","useDescriptors","screens","state","navigation","screenOptions","screenLayout","onAction","getState","setState","subscribe","addListener","addKeyedListener","onRouteFocus","router","emitter","theme","use","options","setOptions","useState","onDispatchAction","onEmitEvent","onOptionsChange","scheduleUpdate","flushUpdates","getIsStateEmitted","withStackTrace","context","useMemo","navigations","routes","cachedRoutes","getFocusedRouteKey","index","key","getOptions","route","overrides","config","name","screen","props","optionsList","filter","Boolean","reduce","acc","curr","Object","assign","render","customOptions","routeState","Error","clearOptions","o","_","rest","layout","element","children","Provider","value","descriptors","i"],"sourceRoot":"../../src","sources":["useDescriptors.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useLatestCallback","isArrayEqual","isRecordEqual","NavigationBuilderContext","useNavigationBuilderContext","NavigationProvider","SceneView","ThemeContext","useNavigationCache","useRouteCache","jsx","_jsx","useDescriptors","screens","state","navigation","screenOptions","screenLayout","onAction","getState","setState","subscribe","addListener","addKeyedListener","onRouteFocus","router","emitter","theme","use","options","setOptions","useState","onDispatchAction","onEmitEvent","onOptionsChange","scheduleUpdate","flushUpdates","getIsStateEmitted","withStackTrace","context","useMemo","navigations","routes","cachedRoutes","getFocusedRouteKey","index","key","cache","current","getOptions","route","overrides","config","name","screen","props","optionsList","filter","Boolean","reduce","acc","curr","Object","assign","render","customOptions","routeState","layout","Error","clearOptions","o","_","rest","element","children","Provider","value","next","descriptors","i","deps","component","getComponent","previous","descriptor","useInsertionEffect"],"sourceRoot":"../../src","sources":["useDescriptors.tsx"],"mappings":"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","ignoreList":[]}
@@ -57,6 +57,12 @@ export function useOptionsGetters({
57
57
  }, [getCurrentOptions, parentAddOptionsGetter, key]);
58
58
  const addOptionsGetter = React.useCallback((key, getter) => {
59
59
  optionsGettersFromChildRef.current[key] = getter;
60
+
61
+ // Hidden screens may register without running their passive effects.
62
+ // Wait until the commit finishes before reporting their options.
63
+ if (onOptionsChange !== undefined) {
64
+ void Promise.resolve().then(onOptionsChange);
65
+ }
60
66
  return () => {
61
67
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
62
68
  delete optionsGettersFromChildRef.current[key];
@@ -64,7 +70,7 @@ export function useOptionsGetters({
64
70
  // Other getters and the focused route may still change during cleanup.
65
71
  // Wait until the commit finishes before reporting the remaining options.
66
72
  if (onOptionsChange !== undefined) {
67
- queueMicrotask(onOptionsChange);
73
+ void Promise.resolve().then(onOptionsChange);
68
74
  }
69
75
  };
70
76
  }, [onOptionsChange]);
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","IsFocusedContext","useOptionsGetters","key","options","getFocusedRouteKey","isFocused","use","optionsRef","useRef","optionsGettersFromChildRef","onOptionsChange","addOptionsGetter","parentAddOptionsGetter","useInsertionEffect","current","useEffect","getOptionsFromListener","useCallback","result","getCurrentOptions","optionsFromListener","getter","undefined","queueMicrotask"],"sourceRoot":"../../src","sources":["useOptionsGetters.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;AACrE,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,gBAAgB,QAAQ,mBAAgB;AAQjD,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,GAAG;EACHC,OAAO;EACPC;AACO,CAAC,EAAE;EACV,MAAMC,SAAS,GAAGR,KAAK,CAACS,GAAG,CAACN,gBAAgB,CAAC,IAAI,IAAI;EAErD,MAAMO,UAAU,GAAGV,KAAK,CAACW,MAAM,CAAqBL,OAAO,CAAC;EAC5D,MAAMM,0BAA0B,GAAGZ,KAAK,CAACW,MAAM,CAE7C,CAAC,CAAC,CAAC;EAEL,MAAME,eAAe,GAAGb,KAAK,CAACS,GAAG,CAACR,wBAAwB,CAAC,EAAEY,eAAe;EAE5E,MAAM;IAAEC,gBAAgB,EAAEC;EAAuB,CAAC,GAAGf,KAAK,CAACS,GAAG,CAC5DP,sBACF,CAAC;EAEDF,KAAK,CAACgB,kBAAkB,CAAC,MAAM;IAC7BN,UAAU,CAACO,OAAO,GAAGX,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbN,KAAK,CAACkB,SAAS,CAAC,MAAM;IACpBL,eAAe,GAAG,CAAC;EACrB,CAAC,EAAE,CAACL,SAAS,EAAEK,eAAe,EAAEP,OAAO,CAAC,CAAC;EAEzC,MAAMa,sBAAsB,GAAGnB,KAAK,CAACoB,WAAW,CAAC,MAAM;IACrD,KAAK,MAAMf,GAAG,IAAIO,0BAA0B,CAACK,OAAO,EAAE;MACpD,IAAIZ,GAAG,IAAIO,0BAA0B,CAACK,OAAO,EAAE;QAC7C,MAAMI,MAAM,GAAGT,0BAA0B,CAACK,OAAO,CAACZ,GAAG,CAAC,GAAG,CAAC;;QAE1D;QACA,IAAIgB,MAAM,KAAK,IAAI,EAAE;UACnB,OAAOA,MAAM;QACf;MACF;IACF;IAEA,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,iBAAiB,GAAGtB,KAAK,CAACoB,WAAW,CAAC,MAAM;IAChD;IACA;IACA;IACA;IACA,IAAIf,GAAG,IAAI,IAAI,IAAIE,kBAAkB,GAAG,CAAC,KAAKF,GAAG,EAAE;MACjD,OAAO,IAAI;IACb;IAEA,MAAMkB,mBAAmB,GAAGJ,sBAAsB,CAAC,CAAC;IAEpD,IAAII,mBAAmB,KAAK,IAAI,EAAE;MAChC,OAAOA,mBAAmB;IAC5B;IAEA,OAAOb,UAAU,CAACO,OAAO;EAC3B,CAAC,EAAE,CAACZ,GAAG,EAAEE,kBAAkB,EAAEY,sBAAsB,CAAC,CAAC;EAErDnB,KAAK,CAACgB,kBAAkB,CAAC,MAAM;IAC7B;IACA,IAAIX,GAAG,IAAI,IAAI,EAAE;MACf,OAAOU,sBAAsB,GAAGV,GAAG,EAAEiB,iBAAiB,CAAC;IACzD;EACF,CAAC,EAAE,CAACA,iBAAiB,EAAEP,sBAAsB,EAAEV,GAAG,CAAC,CAAC;EAEpD,MAAMS,gBAAgB,GAAGd,KAAK,CAACoB,WAAW,CACxC,CAACf,GAAW,EAAEmB,MAAuC,KAAK;IACxDZ,0BAA0B,CAACK,OAAO,CAACZ,GAAG,CAAC,GAAGmB,MAAM;IAEhD,OAAO,MAAM;MACX;MACA,OAAOZ,0BAA0B,CAACK,OAAO,CAACZ,GAAG,CAAC;;MAE9C;MACA;MACA,IAAIQ,eAAe,KAAKY,SAAS,EAAE;QACjCC,cAAc,CAACb,eAAe,CAAC;MACjC;IACF,CAAC;EACH,CAAC,EACD,CAACA,eAAe,CAClB,CAAC;EAED,OAAO;IACLC,gBAAgB;IAChBQ;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","IsFocusedContext","useOptionsGetters","key","options","getFocusedRouteKey","isFocused","use","optionsRef","useRef","optionsGettersFromChildRef","onOptionsChange","addOptionsGetter","parentAddOptionsGetter","useInsertionEffect","current","useEffect","getOptionsFromListener","useCallback","result","getCurrentOptions","optionsFromListener","getter","undefined","Promise","resolve","then"],"sourceRoot":"../../src","sources":["useOptionsGetters.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { nanoid } from 'nanoid/non-secure';
4
3
  import * as React from 'react';
5
4
  import useLatestCallback from 'use-latest-callback';
6
5
  import { useNavigation } from "./useNavigation.js";
@@ -14,7 +13,7 @@ import { useRoute } from "./useRoute.js";
14
13
  * @param callback Function which is executed when screen was prevented from being removed.
15
14
  */
16
15
  export function usePreventRemove(preventRemove, callback) {
17
- const [id] = React.useState(() => nanoid());
16
+ const id = React.useId();
18
17
  const navigation = useNavigation();
19
18
  const {
20
19
  key: routeKey
@@ -1 +1 @@
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
+ {"version":3,"names":["React","useLatestCallback","useNavigation","usePreventRemoveContext","useRoute","usePreventRemove","preventRemove","callback","id","useId","navigation","key","routeKey","setPreventRemove","notifyPreventRemove","useInsertionEffect","useEffect","beforeRemoveListener","e","preventDefault","data","addListener"],"sourceRoot":"../../src","sources":["usePreventRemove.tsx"],"mappings":";;AACA,OAAO,KAAKA,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,MAAMC,EAAE,GAAGR,KAAK,CAACS,KAAK,CAAC,CAAC;EAExB,MAAMC,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,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { nanoid } from 'nanoid/non-secure';
4
3
  import * as React from 'react';
5
4
  import { SingleNavigatorContext } from "./EnsureSingleNavigator.js";
6
5
 
@@ -9,7 +8,7 @@ import { SingleNavigatorContext } from "./EnsureSingleNavigator.js";
9
8
  * This is used to prevent multiple navigators under a single container or screen.
10
9
  */
11
10
  export function useRegisterNavigator() {
12
- const [key] = React.useState(() => nanoid());
11
+ const key = React.useId();
13
12
  const container = React.use(SingleNavigatorContext);
14
13
  if (container === undefined) {
15
14
  throw new Error("Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\n\nThis can also happen if there are multiple copies of '@react-navigation' packages installed.");
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","React","SingleNavigatorContext","useRegisterNavigator","key","useState","container","use","undefined","Error","useInsertionEffect","register","unregister"],"sourceRoot":"../../src","sources":["useRegisterNavigator.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,sBAAsB,QAAQ,4BAAyB;;AAEhE;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACrC,MAAM,CAACC,GAAG,CAAC,GAAGH,KAAK,CAACI,QAAQ,CAAC,MAAML,MAAM,CAAC,CAAC,CAAC;EAC5C,MAAMM,SAAS,GAAGL,KAAK,CAACM,GAAG,CAACL,sBAAsB,CAAC;EAEnD,IAAII,SAAS,KAAKE,SAAS,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,wLACF,CAAC;EACH;EAEAR,KAAK,CAACS,kBAAkB,CAAC,MAAM;IAC7B,MAAM;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGN,SAAS;IAE1CK,QAAQ,CAACP,GAAG,CAAC;IAEb,OAAO,MAAMQ,UAAU,CAACR,GAAG,CAAC;EAC9B,CAAC,EAAE,CAACE,SAAS,EAAEF,GAAG,CAAC,CAAC;EAEpB,OAAOA,GAAG;AACZ","ignoreList":[]}
1
+ {"version":3,"names":["React","SingleNavigatorContext","useRegisterNavigator","key","useId","container","use","undefined","Error","useInsertionEffect","register","unregister"],"sourceRoot":"../../src","sources":["useRegisterNavigator.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,sBAAsB,QAAQ,4BAAyB;;AAEhE;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACrC,MAAMC,GAAG,GAAGH,KAAK,CAACI,KAAK,CAAC,CAAC;EAEzB,MAAMC,SAAS,GAAGL,KAAK,CAACM,GAAG,CAACL,sBAAsB,CAAC;EAEnD,IAAII,SAAS,KAAKE,SAAS,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,wLACF,CAAC;EACH;EAEAR,KAAK,CAACS,kBAAkB,CAAC,MAAM;IAC7B,MAAM;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGN,SAAS;IAE1CK,QAAQ,CAACP,GAAG,CAAC;IAEb,OAAO,MAAMQ,UAAU,CAACR,GAAG,CAAC;EAC9B,CAAC,EAAE,CAACE,SAAS,EAAEF,GAAG,CAAC,CAAC;EAEpB,OAAOA,GAAG;AACZ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/BaseNavigationContainer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,OAAO,KAAK,EAIV,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAS,CAAC;AAYjB,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,qBA4flB"}
1
+ {"version":3,"file":"BaseNavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/BaseNavigationContainer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,OAAO,KAAK,EAIV,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAS,CAAC;AAYjB,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,qBA8flB"}
@@ -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;AAmBF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,qBA4FxD"}
1
+ {"version":3,"file":"PreventRemoveProvider.d.ts","sourceRoot":"","sources":["../../../src/PreventRemoveProvider.tsx"],"names":[],"mappings":"AAAA,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,qBA6FxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromState.d.ts","sourceRoot":"","sources":["../../../src/getPathFromState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAS/E,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,YAAS,CAAC;AAGzD,KAAK,OAAO,CAAC,SAAS,SAAS,EAAE,IAAI;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AAyF5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,EAAE,EACnD,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC3B,MAAM,CA2TR"}
1
+ {"version":3,"file":"getPathFromState.d.ts","sourceRoot":"","sources":["../../../src/getPathFromState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAS/E,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,YAAS,CAAC;AAGzD,KAAK,OAAO,CAAC,SAAS,SAAS,EAAE,IAAI;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AAyF5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,EAAE,EACnD,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC3B,MAAM,CA6TR"}
@@ -1 +1 @@
1
- {"version":3,"file":"isRecordEqual.d.ts","sourceRoot":"","sources":["../../../src/isRecordEqual.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAc3B"}
1
+ {"version":3,"file":"isRecordEqual.d.ts","sourceRoot":"","sources":["../../../src/isRecordEqual.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAgB3B"}
@@ -0,0 +1,5 @@
1
+ type QueryValue = string | null | (string | null)[];
2
+ export declare function parse(query: string): Record<string, QueryValue>;
3
+ export declare function stringify(params: Record<string, string | string[] | null>): string;
4
+ export {};
5
+ //# sourceMappingURL=queryString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryString.d.ts","sourceRoot":"","sources":["../../../src/queryString.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;AA2CpD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAiC/D;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAC/C,MAAM,CA4BR"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDescriptors.d.ts","sourceRoot":"","sources":["../../../src/useDescriptors.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDescriptors.d.ts","sourceRoot":"","sources":["../../../src/useDescriptors.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOptionsGetters.d.ts","sourceRoot":"","sources":["../../../src/useOptionsGetters.tsx"],"names":[],"mappings":"AAMA,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,OAAO,EACP,kBAAkB,GACnB,EAAE,OAAO;4BA+DA,MAAM,UAAU,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI;;EAqBxD"}
1
+ {"version":3,"file":"useOptionsGetters.d.ts","sourceRoot":"","sources":["../../../src/useOptionsGetters.tsx"],"names":[],"mappings":"AAMA,KAAK,OAAO,GAAG;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,OAAO,EACP,kBAAkB,GACnB,EAAE,OAAO;4BA+DA,MAAM,UAAU,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI;;EA2BxD"}
@@ -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,QAyCpE"}
1
+ {"version":3,"file":"usePreventRemove.d.ts","sourceRoot":"","sources":["../../../src/usePreventRemove.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AASlE;;;;;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 +1 @@
1
- {"version":3,"file":"useRegisterNavigator.d.ts","sourceRoot":"","sources":["../../../src/useRegisterNavigator.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,oBAAoB,WAmBnC"}
1
+ {"version":3,"file":"useRegisterNavigator.d.ts","sourceRoot":"","sources":["../../../src/useRegisterNavigator.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,oBAAoB,WAoBnC"}
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": "8.0.0-alpha.35",
4
+ "version": "8.0.0-alpha.37",
5
5
  "keywords": [
6
6
  "react",
7
7
  "react-native",
@@ -47,8 +47,6 @@
47
47
  "dependencies": {
48
48
  "@react-navigation/routers": "^8.0.0-alpha.17",
49
49
  "fast-deep-equal": "^3.1.3",
50
- "nanoid": "^5.1.11",
51
- "query-string": "^9.4.0",
52
50
  "react-is": "^19.2.6",
53
51
  "use-latest-callback": "^0.3.5",
54
52
  "warn-once": "^0.1.1"
@@ -89,5 +87,5 @@
89
87
  ]
90
88
  ]
91
89
  },
92
- "gitHead": "400f7128965fc92c335a3f6c27e3fa26113915e4"
90
+ "gitHead": "e83cb9a88ab92d24caad272442c338de046cfac2"
93
91
  }
@@ -513,9 +513,9 @@ export function BaseNavigationContainer<ParamList extends {} = RootParamList>({
513
513
  }, [state, isReady, emitter]);
514
514
 
515
515
  React.useEffect(() => {
516
- const hydratedState = getRootState();
517
-
518
516
  if (process.env.NODE_ENV !== 'production') {
517
+ const hydratedState = getRootState();
518
+
519
519
  if (hydratedState !== undefined) {
520
520
  const duplicateRouteNamesResult =
521
521
  checkDuplicateRouteNames(hydratedState);
@@ -535,6 +535,8 @@ export function BaseNavigationContainer<ParamList extends {} = RootParamList>({
535
535
  emitter.emit({ type: 'state', data: { state } });
536
536
 
537
537
  if (!isFirstMountRef.current && onStateChangeRef.current) {
538
+ const hydratedState = getRootState();
539
+
538
540
  onStateChangeRef.current(hydratedState);
539
541
  }
540
542
 
@@ -1,4 +1,3 @@
1
- import { nanoid } from 'nanoid/non-secure';
2
1
  import * as React from 'react';
3
2
  import useLatestCallback from 'use-latest-callback';
4
3
 
@@ -34,7 +33,8 @@ const transformPreventedRoutes = (
34
33
  * Component used for managing which routes have to be prevented from removal in native-stack.
35
34
  */
36
35
  export function PreventRemoveProvider({ children }: Props) {
37
- const [parentId] = React.useState(() => nanoid());
36
+ const parentId = React.useId();
37
+
38
38
  const [preventedRoutesMap, setPreventedRoutesMap] =
39
39
  React.useState<PreventedRoutesMap>(() => new Map());
40
40
 
@@ -1,5 +1,4 @@
1
1
  import type { NavigationState, PartialState } from '@react-navigation/routers';
2
- import queryString from 'query-string';
3
2
 
4
3
  import {
5
4
  combinePatternParts,
@@ -7,6 +6,7 @@ import {
7
6
  type PatternPart,
8
7
  } from './getPatternParts';
9
8
  import { getStateFromRouteParams } from './getStateFromRouteParams';
9
+ import * as queryString from './queryString';
10
10
  import type { PathConfig, PathConfigMap } from './types';
11
11
  import { validatePathConfig } from './validatePathConfig';
12
12
 
@@ -226,7 +226,9 @@ export function getPathFromState<ParamList extends {}>(
226
226
  if (route.params) {
227
227
  const options = config;
228
228
  const params = route.params as Record<string, unknown>;
229
- const currentParams: Record<string, SerializedParamValue> = {};
229
+ const currentParams: Record<string, SerializedParamValue> = {
230
+ __proto__: null,
231
+ };
230
232
 
231
233
  for (const key in params) {
232
234
  const value = params[key];
@@ -270,7 +272,7 @@ export function getPathFromState<ParamList extends {}>(
270
272
  // If this is the focused route, keep the params for later use
271
273
  // We save it here since it's been stringified already
272
274
  // Params claimed by the pattern shouldn't be repeated in the query string
273
- focusedParams = {};
275
+ focusedParams = { __proto__: null };
274
276
 
275
277
  for (const key in currentParams) {
276
278
  const value = currentParams[key];
@@ -405,7 +407,7 @@ export function getPathFromState<ParamList extends {}>(
405
407
  }
406
408
 
407
409
  if (!focusedParams && focusedRoute.params) {
408
- focusedParams = {};
410
+ focusedParams = { __proto__: null };
409
411
 
410
412
  const params = focusedRoute.params as Record<string, unknown>;
411
413
 
@@ -421,7 +423,7 @@ export function getPathFromState<ParamList extends {}>(
421
423
  if (routeState) {
422
424
  path += '/';
423
425
  } else if (focusedParams) {
424
- const query = queryString.stringify(focusedParams, { sort: false });
426
+ const query = queryString.stringify(focusedParams);
425
427
 
426
428
  if (query) {
427
429
  path += `?${query}`;
@@ -1,5 +1,4 @@
1
1
  import type { NavigationState, PartialState } from '@react-navigation/routers';
2
- import queryString from 'query-string';
3
2
 
4
3
  import { arrayStartsWith } from './arrayStartsWith';
5
4
  import {
@@ -8,6 +7,7 @@ import {
8
7
  type PatternPartRepeat,
9
8
  } from './getPatternParts';
10
9
  import { isArrayEqual } from './isArrayEqual';
10
+ import * as queryString from './queryString';
11
11
  import type { PathConfig, PathConfigMap } from './types';
12
12
  import type {
13
13
  StandardSchemaV1,
@@ -16,5 +16,7 @@ export function isRecordEqual(
16
16
  return false;
17
17
  }
18
18
 
19
- return aKeys.every((key) => Object.is(a[key], b[key]));
19
+ return aKeys.every(
20
+ (key) => Object.hasOwn(b, key) && Object.is(a[key], b[key])
21
+ );
20
22
  }
@@ -0,0 +1,109 @@
1
+ type QueryValue = string | null | (string | null)[];
2
+
3
+ // Match complete UTF-8 sequences so malformed input can be decoded partially
4
+ // without repeatedly splitting and retrying an arbitrarily long byte sequence.
5
+ const ENCODED_UTF8 = new RegExp(
6
+ [
7
+ '%[0-7][\\dA-F]',
8
+ '%(?:C[2-9A-F]|D[\\dA-F])%[89AB][\\dA-F]',
9
+ '%E0%[AB][\\dA-F]%[89AB][\\dA-F]',
10
+ '%E[1-9A-CEF](?:%[89AB][\\dA-F]){2}',
11
+ '%ED%[89][\\dA-F]%[89AB][\\dA-F]',
12
+ '%F0%[9AB][\\dA-F](?:%[89AB][\\dA-F]){2}',
13
+ '%F[1-3](?:%[89AB][\\dA-F]){3}',
14
+ '%F4%8[\\dA-F](?:%[89AB][\\dA-F]){2}',
15
+ ].join('|'),
16
+ 'gi'
17
+ );
18
+
19
+ const decode = (value: string) => {
20
+ if (!value.includes('%')) {
21
+ return value;
22
+ }
23
+
24
+ try {
25
+ return decodeURIComponent(value);
26
+ } catch {
27
+ return value.replace(ENCODED_UTF8, (sequence) =>
28
+ decodeURIComponent(sequence)
29
+ );
30
+ }
31
+ };
32
+
33
+ const encode = (value: string) => {
34
+ if (/^[A-Za-z0-9_.~-]*$/.test(value)) {
35
+ return value;
36
+ }
37
+
38
+ return encodeURIComponent(value).replace(
39
+ /[!'()*]/g,
40
+ (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`
41
+ );
42
+ };
43
+
44
+ export function parse(query: string): Record<string, QueryValue> {
45
+ const params: Record<string, QueryValue> = Object.create(null);
46
+
47
+ query = query.trim().replace(/^[?#&]/, '');
48
+
49
+ let start = 0;
50
+
51
+ while (start < query.length) {
52
+ if (query[start] === '&') {
53
+ start++;
54
+ continue;
55
+ }
56
+
57
+ const end = query.indexOf('&', start);
58
+ const index = end === -1 ? query.length : end;
59
+ const part = query.slice(start, index).replace(/\+/g, ' ');
60
+ const separator = part.indexOf('=');
61
+ const key = decode(separator === -1 ? part : part.slice(0, separator));
62
+ const value = separator === -1 ? null : decode(part.slice(separator + 1));
63
+ const previous = params[key];
64
+
65
+ if (previous === undefined) {
66
+ params[key] = value;
67
+ } else if (Array.isArray(previous)) {
68
+ previous.push(value);
69
+ } else {
70
+ params[key] = [previous, value];
71
+ }
72
+
73
+ start = index + 1;
74
+ }
75
+
76
+ return params;
77
+ }
78
+
79
+ export function stringify(
80
+ params: Record<string, string | string[] | null>
81
+ ): string {
82
+ const parts: string[] = [];
83
+
84
+ for (const [key, value] of Object.entries(params)) {
85
+ if (Array.isArray(value)) {
86
+ let encodedKey: string | undefined;
87
+
88
+ value.forEach((item) => {
89
+ encodedKey ??= encode(key);
90
+
91
+ parts.push(`${encodedKey}=${encode(item)}`);
92
+ });
93
+
94
+ continue;
95
+ }
96
+
97
+ const encodedKey = encode(key);
98
+
99
+ if (value === null) {
100
+ if (encodedKey) {
101
+ parts.push(encodedKey);
102
+ }
103
+ } else {
104
+ parts.push(`${encodedKey}=${encode(value)}`);
105
+ }
106
+ }
107
+
108
+ return parts.join('&');
109
+ }
@@ -8,6 +8,8 @@ import type {
8
8
  import * as React from 'react';
9
9
  import useLatestCallback from 'use-latest-callback';
10
10
 
11
+ import { isArrayEqual } from './isArrayEqual';
12
+ import { isRecordEqual } from './isRecordEqual';
11
13
  import {
12
14
  type AddKeyedListener,
13
15
  type AddListener,
@@ -88,6 +90,30 @@ type Options<
88
90
  emitter: NavigationEventEmitter<EventMap>;
89
91
  };
90
92
 
93
+ type DescriptorCache<
94
+ State extends NavigationState,
95
+ ScreenOptions extends {},
96
+ EventMap extends EventMapBase,
97
+ ActionHelpers extends Record<string, (...args: any) => void>,
98
+ > = Record<
99
+ string,
100
+ {
101
+ descriptor: Descriptor<
102
+ ScreenOptions,
103
+ NavigationProp<
104
+ ParamListBase,
105
+ string,
106
+ State,
107
+ ScreenOptions,
108
+ EventMap,
109
+ ActionHelpers
110
+ >,
111
+ RouteProp<ParamListBase>
112
+ >;
113
+ deps: unknown[];
114
+ }
115
+ >;
116
+
91
117
  /**
92
118
  * Hook to create descriptor objects for the child routes.
93
119
  *
@@ -183,6 +209,10 @@ export function useDescriptors<
183
209
  () => state.routes[state.index]?.key
184
210
  );
185
211
 
212
+ const cache = React.useMemo<{
213
+ current: DescriptorCache<State, ScreenOptions, EventMap, ActionHelpers>;
214
+ }>(() => ({ current: {} }), []);
215
+
186
216
  const getOptions = (
187
217
  route: RouteProp<ParamListBase, string>,
188
218
  navigation: NavigationProp<
@@ -231,7 +261,8 @@ export function useDescriptors<
231
261
  EventMap
232
262
  >,
233
263
  customOptions: ScreenOptions,
234
- routeState: NavigationState | PartialState<NavigationState> | undefined
264
+ routeState: NavigationState | PartialState<NavigationState> | undefined,
265
+ layout: ScreenLayout<ScreenOptions> | undefined
235
266
  ) => {
236
267
  const config = screens[route.name];
237
268
  const screen = config?.props;
@@ -250,14 +281,6 @@ export function useDescriptors<
250
281
  return o;
251
282
  });
252
283
 
253
- const layout =
254
- // The `layout` prop passed to `Screen` elements,
255
- screen.layout ??
256
- // The `screenLayout` props passed to `Group` elements
257
- config?.layout ??
258
- // The default `screenLayout` passed to the navigator
259
- screenLayout;
260
-
261
284
  let element = (
262
285
  <SceneView
263
286
  navigation={navigation}
@@ -293,21 +316,18 @@ export function useDescriptors<
293
316
  );
294
317
  };
295
318
 
319
+ const next: DescriptorCache<State, ScreenOptions, EventMap, ActionHelpers> =
320
+ {};
321
+
296
322
  const descriptors = cachedRoutes.reduce<
297
323
  Record<
298
324
  string,
299
- Descriptor<
325
+ DescriptorCache<
326
+ State,
300
327
  ScreenOptions,
301
- NavigationProp<
302
- ParamListBase,
303
- string,
304
- State,
305
- ScreenOptions,
306
- EventMap,
307
- ActionHelpers
308
- >,
309
- RouteProp<ParamListBase>
310
- >
328
+ EventMap,
329
+ ActionHelpers
330
+ >[string]['descriptor']
311
331
  >
312
332
  >((acc, route, i) => {
313
333
  const navigation = navigations[route.key];
@@ -321,14 +341,56 @@ export function useDescriptors<
321
341
 
322
342
  const customOptions = getOptions(route, navigation, overrides);
323
343
 
344
+ const routeState = state.routes[i]?.state;
345
+ const config = screens[route.name];
346
+ const screen = config?.props;
347
+
348
+ const layout =
349
+ // The `layout` prop passed to `Screen` elements,
350
+ screen?.layout ??
351
+ // The `screenLayout` props passed to `Group` elements
352
+ config?.layout ??
353
+ // The default `screenLayout` passed to the navigator
354
+ screenLayout;
355
+
356
+ const deps = [
357
+ route,
358
+ navigation,
359
+ routeState,
360
+ screen?.component,
361
+ screen?.getComponent,
362
+ screen?.children,
363
+ layout,
364
+ context,
365
+ theme,
366
+ getFocusedRouteKey,
367
+ getState,
368
+ setState,
369
+ subscribe,
370
+ ];
371
+
372
+ const previous = cache.current[route.key];
373
+
374
+ if (
375
+ previous &&
376
+ isArrayEqual(previous.deps, deps) &&
377
+ isRecordEqual(previous.descriptor.options, customOptions)
378
+ ) {
379
+ next[route.key] = previous;
380
+ acc[route.key] = previous.descriptor;
381
+
382
+ return acc;
383
+ }
384
+
324
385
  const element = render(
325
386
  route,
326
387
  navigation,
327
388
  customOptions,
328
- state.routes[i]?.state
389
+ routeState,
390
+ layout
329
391
  );
330
392
 
331
- acc[route.key] = {
393
+ const descriptor = {
332
394
  route,
333
395
  navigation,
334
396
  render() {
@@ -337,8 +399,18 @@ export function useDescriptors<
337
399
  options: customOptions,
338
400
  };
339
401
 
402
+ acc[route.key] = descriptor;
403
+ next[route.key] = {
404
+ descriptor,
405
+ deps,
406
+ };
407
+
340
408
  return acc;
341
409
  }, {});
342
410
 
411
+ React.useInsertionEffect(() => {
412
+ cache.current = next;
413
+ });
414
+
343
415
  return descriptors;
344
416
  }
@@ -80,6 +80,12 @@ export function useOptionsGetters({
80
80
  (key: string, getter: () => object | undefined | null) => {
81
81
  optionsGettersFromChildRef.current[key] = getter;
82
82
 
83
+ // Hidden screens may register without running their passive effects.
84
+ // Wait until the commit finishes before reporting their options.
85
+ if (onOptionsChange !== undefined) {
86
+ void Promise.resolve().then(onOptionsChange);
87
+ }
88
+
83
89
  return () => {
84
90
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
85
91
  delete optionsGettersFromChildRef.current[key];
@@ -87,7 +93,7 @@ export function useOptionsGetters({
87
93
  // Other getters and the focused route may still change during cleanup.
88
94
  // Wait until the commit finishes before reporting the remaining options.
89
95
  if (onOptionsChange !== undefined) {
90
- queueMicrotask(onOptionsChange);
96
+ void Promise.resolve().then(onOptionsChange);
91
97
  }
92
98
  };
93
99
  },