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

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/README.md +17 -14
  2. package/lib/module/BaseNavigationContainer.js +14 -2
  3. package/lib/module/BaseNavigationContainer.js.map +1 -1
  4. package/lib/module/NavigationBuilderContext.js +8 -13
  5. package/lib/module/NavigationBuilderContext.js.map +1 -1
  6. package/lib/module/NavigationIndependentTree.js +45 -15
  7. package/lib/module/NavigationIndependentTree.js.map +1 -1
  8. package/lib/module/NavigationProvider.js +9 -4
  9. package/lib/module/NavigationProvider.js.map +1 -1
  10. package/lib/module/PreventRemoveProvider.js +2 -2
  11. package/lib/module/PreventRemoveProvider.js.map +1 -1
  12. package/lib/module/SceneView.js +2 -1
  13. package/lib/module/SceneView.js.map +1 -1
  14. package/lib/module/getPathFromState.js +41 -16
  15. package/lib/module/getPathFromState.js.map +1 -1
  16. package/lib/module/getPatternParts.js +43 -12
  17. package/lib/module/getPatternParts.js.map +1 -1
  18. package/lib/module/getStateFromPath.js +175 -109
  19. package/lib/module/getStateFromPath.js.map +1 -1
  20. package/lib/module/index.js +1 -0
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/useDescriptors.js +9 -6
  23. package/lib/module/useDescriptors.js.map +1 -1
  24. package/lib/module/useFocusEffect.js +4 -2
  25. package/lib/module/useFocusEffect.js.map +1 -1
  26. package/lib/module/useFocusEvents.js +4 -2
  27. package/lib/module/useFocusEvents.js.map +1 -1
  28. package/lib/module/useFocusedListenersChildrenAdapter.js +2 -2
  29. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  30. package/lib/module/useIsFocused.js +1 -0
  31. package/lib/module/useIsFocused.js.map +1 -1
  32. package/lib/module/useNavigationBuilder.js +42 -39
  33. package/lib/module/useNavigationBuilder.js.map +1 -1
  34. package/lib/module/useNavigationCache.js +85 -81
  35. package/lib/module/useNavigationCache.js.map +1 -1
  36. package/lib/module/useNavigationHelpers.js +2 -2
  37. package/lib/module/useNavigationHelpers.js.map +1 -1
  38. package/lib/module/useNavigationState.js +48 -23
  39. package/lib/module/useNavigationState.js.map +1 -1
  40. package/lib/module/useOnAction.js +6 -4
  41. package/lib/module/useOnAction.js.map +1 -1
  42. package/lib/module/useOnGetNavigation.js +2 -2
  43. package/lib/module/useOnGetNavigation.js.map +1 -1
  44. package/lib/module/useOnGetState.js +2 -2
  45. package/lib/module/useOnGetState.js.map +1 -1
  46. package/lib/module/useOnPreventRemove.js +2 -2
  47. package/lib/module/useOnPreventRemove.js.map +1 -1
  48. package/lib/module/useOnRouteFocus.js +2 -2
  49. package/lib/module/useOnRouteFocus.js.map +1 -1
  50. package/lib/module/useOptionsGetters.js +19 -20
  51. package/lib/module/useOptionsGetters.js.map +1 -1
  52. package/lib/module/usePreventRemoveContext.js +1 -1
  53. package/lib/module/usePreventRemoveContext.js.map +1 -1
  54. package/lib/module/useRouteCache.js +43 -33
  55. package/lib/module/useRouteCache.js.map +1 -1
  56. package/lib/module/useScheduleUpdate.js +5 -3
  57. package/lib/module/useScheduleUpdate.js.map +1 -1
  58. package/lib/module/useSyncState.js +9 -10
  59. package/lib/module/useSyncState.js.map +1 -1
  60. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  61. package/lib/typescript/src/NavigationBuilderContext.d.ts +9 -6
  62. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  63. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  64. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  65. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  66. package/lib/typescript/src/SceneView.d.ts +2 -1
  67. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  68. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  69. package/lib/typescript/src/getPatternParts.d.ts +4 -2
  70. package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
  71. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  72. package/lib/typescript/src/index.d.ts +1 -0
  73. package/lib/typescript/src/index.d.ts.map +1 -1
  74. package/lib/typescript/src/types.d.ts +1 -1
  75. package/lib/typescript/src/types.d.ts.map +1 -1
  76. package/lib/typescript/src/useDescriptors.d.ts +2 -2
  77. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  78. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
  79. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  80. package/lib/typescript/src/useIsFocused.d.ts +1 -0
  81. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  82. package/lib/typescript/src/useNavigationBuilder.d.ts +1 -3
  83. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  84. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  85. package/lib/typescript/src/useNavigationState.d.ts +1 -0
  86. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  87. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  88. package/lib/typescript/src/useOnGetNavigation.d.ts.map +1 -1
  89. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  90. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  91. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
  92. package/lib/typescript/src/useOptionsGetters.d.ts +2 -4
  93. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  94. package/lib/typescript/src/useRouteCache.d.ts +7 -12
  95. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  96. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  97. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  98. package/lib/typescript/src/utilities.d.ts +3 -0
  99. package/lib/typescript/src/utilities.d.ts.map +1 -1
  100. package/package.json +2 -3
  101. package/src/BaseNavigationContainer.tsx +19 -2
  102. package/src/NavigationBuilderContext.tsx +22 -18
  103. package/src/NavigationIndependentTree.tsx +56 -22
  104. package/src/NavigationProvider.tsx +13 -4
  105. package/src/PreventRemoveProvider.tsx +2 -8
  106. package/src/SceneView.tsx +3 -1
  107. package/src/getPathFromState.tsx +63 -15
  108. package/src/getPatternParts.tsx +75 -14
  109. package/src/getStateFromPath.tsx +250 -113
  110. package/src/index.tsx +1 -0
  111. package/src/types.tsx +1 -1
  112. package/src/useDescriptors.tsx +20 -6
  113. package/src/useFocusEffect.tsx +5 -2
  114. package/src/useFocusEvents.tsx +5 -2
  115. package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
  116. package/src/useIsFocused.tsx +4 -0
  117. package/src/useNavigationBuilder.tsx +54 -48
  118. package/src/useNavigationCache.tsx +130 -108
  119. package/src/useNavigationHelpers.tsx +2 -2
  120. package/src/useNavigationState.tsx +60 -29
  121. package/src/useOnAction.tsx +6 -5
  122. package/src/useOnGetNavigation.tsx +3 -2
  123. package/src/useOnGetState.tsx +4 -2
  124. package/src/useOnPreventRemove.tsx +4 -2
  125. package/src/useOnRouteFocus.tsx +2 -4
  126. package/src/useOptionsGetters.tsx +26 -25
  127. package/src/usePreventRemoveContext.tsx +1 -1
  128. package/src/useRouteCache.tsx +49 -33
  129. package/src/useScheduleUpdate.tsx +6 -3
  130. package/src/useSyncState.tsx +9 -11
  131. package/src/utilities.tsx +5 -2
  132. package/lib/module/useComponent.js +0 -34
  133. package/lib/module/useComponent.js.map +0 -1
  134. package/lib/typescript/src/useComponent.d.ts +0 -7
  135. package/lib/typescript/src/useComponent.d.ts.map +0 -1
  136. package/src/useComponent.tsx +0 -37
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
- import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
4
+ import { useNavigationBuilderContext } from "./NavigationBuilderContext.js";
5
5
  import { NavigationRouteContext } from "./NavigationProvider.js";
6
6
  /**
7
7
  * Hook which lets the container access the navigation object of the root navigator.
@@ -12,7 +12,7 @@ export function useOnGetNavigation({
12
12
  }) {
13
13
  const {
14
14
  addKeyedListener
15
- } = React.use(NavigationBuilderContext);
15
+ } = useNavigationBuilderContext();
16
16
  const route = React.use(NavigationRouteContext);
17
17
  React.useInsertionEffect(() => {
18
18
  // We only register if this is the root navigator
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","useOnGetNavigation","navigation","addKeyedListener","use","route","useInsertionEffect"],"sourceRoot":"../../src","sources":["useOnGetNavigation.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;AACrE,SAASC,sBAAsB,QAAQ,yBAAsB;AAO7D;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAC;EAAEC;AAAoB,CAAC,EAAE;EAC1D,MAAM;IAAEC;EAAiB,CAAC,GAAGL,KAAK,CAACM,GAAG,CAACL,wBAAwB,CAAC;EAChE,MAAMM,KAAK,GAAGP,KAAK,CAACM,GAAG,CAACJ,sBAAsB,CAAC;EAE/CF,KAAK,CAACQ,kBAAkB,CAAC,MAAM;IAC7B;IACA;IACA,IAAID,KAAK,IAAI,IAAI,EAAE;MACjB;IACF;IAEA,OAAOF,gBAAgB,GAAG,eAAe,EAAE,MAAM,EAAE,MAAMD,UAAU,CAAC;EACtE,CAAC,EAAE,CAACC,gBAAgB,EAAED,UAAU,EAAEG,KAAK,CAAC,CAAC;AAC3C","ignoreList":[]}
1
+ {"version":3,"names":["React","useNavigationBuilderContext","NavigationRouteContext","useOnGetNavigation","navigation","addKeyedListener","route","use","useInsertionEffect"],"sourceRoot":"../../src","sources":["useOnGetNavigation.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,2BAA2B,QAAQ,+BAA4B;AACxE,SAASC,sBAAsB,QAAQ,yBAAsB;AAO7D;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAC;EAAEC;AAAoB,CAAC,EAAE;EAC1D,MAAM;IAAEC;EAAiB,CAAC,GAAGJ,2BAA2B,CAAC,CAAC;EAE1D,MAAMK,KAAK,GAAGN,KAAK,CAACO,GAAG,CAACL,sBAAsB,CAAC;EAE/CF,KAAK,CAACQ,kBAAkB,CAAC,MAAM;IAC7B;IACA;IACA,IAAIF,KAAK,IAAI,IAAI,EAAE;MACjB;IACF;IAEA,OAAOD,gBAAgB,GAAG,eAAe,EAAE,MAAM,EAAE,MAAMD,UAAU,CAAC;EACtE,CAAC,EAAE,CAACC,gBAAgB,EAAED,UAAU,EAAEE,KAAK,CAAC,CAAC;AAC3C","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { isArrayEqual } from "./isArrayEqual.js";
5
- import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
5
+ import { useNavigationBuilderContext } from "./NavigationBuilderContext.js";
6
6
  import { NavigationRouteContext } from "./NavigationProvider.js";
7
7
  export function useOnGetState({
8
8
  getState,
@@ -10,7 +10,7 @@ export function useOnGetState({
10
10
  }) {
11
11
  const {
12
12
  addKeyedListener
13
- } = React.use(NavigationBuilderContext);
13
+ } = useNavigationBuilderContext();
14
14
  const route = React.use(NavigationRouteContext);
15
15
  const key = route ? route.key : 'root';
16
16
  const getRehydratedState = React.useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","use","route","key","getRehydratedState","useCallback","state","routes","map","childState","useInsertionEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAEEC,wBAAwB,QACnB,+BAA4B;AACnC,SAASC,sBAAsB,QAAQ,yBAAsB;AAO7D,OAAO,SAASC,aAAaA,CAAC;EAAEC,QAAQ;EAAEC;AAA2B,CAAC,EAAE;EACtE,MAAM;IAAEC;EAAiB,CAAC,GAAGP,KAAK,CAACQ,GAAG,CAACN,wBAAwB,CAAC;EAChE,MAAMO,KAAK,GAAGT,KAAK,CAACQ,GAAG,CAACL,sBAAsB,CAAC;EAC/C,MAAMO,GAAG,GAAGD,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,CAAC,CAAC;;IAExB;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEN,KAAK,IAAK;MACzC,MAAMO,UAAU,GAAGV,iBAAiB,CAACG,KAAK,CAACC,GAAG,CAAC,GAAG,CAAC;MAEnD,IAAID,KAAK,CAACI,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOP,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEI,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACT,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;;EAEjC;EACA;EACAN,KAAK,CAACiB,kBAAkB,CAAC,MAAM;IAC7B,OAAOV,gBAAgB,GAAG,UAAU,EAAEG,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACJ,gBAAgB,EAAEI,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD","ignoreList":[]}
1
+ {"version":3,"names":["React","isArrayEqual","useNavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","route","use","key","getRehydratedState","useCallback","state","routes","map","childState","useInsertionEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAEEC,2BAA2B,QACtB,+BAA4B;AACnC,SAASC,sBAAsB,QAAQ,yBAAsB;AAO7D,OAAO,SAASC,aAAaA,CAAC;EAAEC,QAAQ;EAAEC;AAA2B,CAAC,EAAE;EACtE,MAAM;IAAEC;EAAiB,CAAC,GAAGL,2BAA2B,CAAC,CAAC;EAE1D,MAAMM,KAAK,GAAGR,KAAK,CAACS,GAAG,CAACN,sBAAsB,CAAC;EAE/C,MAAMO,GAAG,GAAGF,KAAK,GAAGA,KAAK,CAACE,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,CAAC,CAAC;;IAExB;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEP,KAAK,IAAK;MACzC,MAAMQ,UAAU,GAAGV,iBAAiB,CAACE,KAAK,CAACE,GAAG,CAAC,GAAG,CAAC;MAEnD,IAAIF,KAAK,CAACK,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOR,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEK,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACT,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;;EAEjC;EACA;EACAN,KAAK,CAACiB,kBAAkB,CAAC,MAAM;IAC7B,OAAOV,gBAAgB,GAAG,UAAU,EAAEG,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACJ,gBAAgB,EAAEI,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
- import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
4
+ import { useNavigationBuilderContext } from "./NavigationBuilderContext.js";
5
5
  import { NavigationRouteContext } from "./NavigationProvider.js";
6
6
  const VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');
7
7
  export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {
@@ -58,7 +58,7 @@ export function useOnPreventRemove({
58
58
  }) {
59
59
  const {
60
60
  addKeyedListener
61
- } = React.use(NavigationBuilderContext);
61
+ } = useNavigationBuilderContext();
62
62
  const route = React.use(NavigationRouteContext);
63
63
  const routeKey = route?.key;
64
64
  React.useInsertionEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRoutesByKey","Map","map","route","key","filter","visitedRouteKeys","Set","beforeRemoveAction","reversedCurrentRoutes","reverse","has","isPrevented","undefined","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","nextRoute","get","state","useOnPreventRemove","getState","addKeyedListener","use","routeKey","useInsertionEffect","nextState","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useNavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRoutesByKey","Map","map","route","key","filter","visitedRouteKeys","Set","beforeRemoveAction","reversedCurrentRoutes","reverse","has","isPrevented","undefined","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","nextRoute","get","state","useOnPreventRemove","getState","addKeyedListener","use","routeKey","useInsertionEffect","nextState","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":";;AAOA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAEEC,2BAA2B,QACtB,+BAA4B;AACnC,SAASC,sBAAsB,QAAQ,yBAAsB;AAU7D,MAAMC,kBAAkB,GAAGC,MAAM,CAAC,oBAAoB,CAAC;AAEvD,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,OAAkD,EAClDC,qBAA4E,EAC5EC,aAAuD,EACvDC,UAGG,EACHC,MAAwB,KACrB;EACH,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAC7BH,UAAU,CACPI,GAAG,CAAEC,KAAK,IAAK,CAACA,KAAK,CAACC,GAAG,EAAED,KAAK,CAAU,CAAC,CAC3CE,MAAM,CAAC,CAAC,GAAGF,KAAK,CAAC,KAAKA,KAAK,CAACC,GAAG,IAAI,IAAI,CAC5C,CAAC;EAED,MAAME,gBAAgB,GACpBd,kBAAkB,IAAIO,MAAM,IAAIA,MAAM,CAACP,kBAAkB,CAAC,YAAYe,GAAG,GACrER,MAAM,CAACP,kBAAkB,CAAC,GAC1B,IAAIe,GAAG,CAAS,CAAC;EAEvB,MAAMC,kBAAkB,GAAG;IACzB,GAAGT,MAAM;IACT,CAACP,kBAAkB,GAAGc;EACxB,CAAC;;EAED;EACA,MAAMG,qBAAqB,GAAG,CAAC,GAAGZ,aAAa,CAAC,CAACa,OAAO,CAAC,CAAC;EAE1D,KAAK,MAAMP,KAAK,IAAIM,qBAAqB,EAAE;IACzC,IAAIH,gBAAgB,CAACK,GAAG,CAACR,KAAK,CAACC,GAAG,CAAC,EAAE;MACnC;MACA;IACF;IAEA,IAAI,CAACJ,eAAe,CAACW,GAAG,CAACR,KAAK,CAACC,GAAG,CAAC,EAAE;MACnC;MACA;MACA,MAAMQ,WAAW,GAAGhB,qBAAqB,CAACO,KAAK,CAACC,GAAG,CAAC,GAClDI,kBAAkB,EAClBK,SACF,CAAC;MAED,IAAID,WAAW,EAAE;QACf,OAAO,IAAI;MACb;MAEAN,gBAAgB,CAACQ,GAAG,CAACX,KAAK,CAACC,GAAG,CAAC;MAE/B,MAAMW,KAAK,GAAGpB,OAAO,CAACqB,IAAI,CAAC;QACzBC,IAAI,EAAE,cAAc;QACpBC,MAAM,EAAEf,KAAK,CAACC,GAAG;QACjBe,IAAI,EAAE;UAAEpB,MAAM,EAAES;QAAmB,CAAC;QACpCY,iBAAiB,EAAE;MACrB,CAAC,CAAC;MAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;QAC1B,OAAO,IAAI;MACb;IACF,CAAC,MAAM;MACL;MACA,MAAMC,SAAS,GAAGtB,eAAe,CAACuB,GAAG,CAACpB,KAAK,CAACC,GAAG,CAAC;MAEhD,IAAID,KAAK,CAACqB,KAAK,IAAI,IAAI,IAAIrB,KAAK,CAACqB,KAAK,KAAKF,SAAS,EAAEE,KAAK,EAAE;QAC3D,MAAMZ,WAAW,GAAGhB,qBAAqB,CAACO,KAAK,CAACC,GAAG,CAAC,GAClDI,kBAAkB,EAClBc,SAAS,EAAEE,KACb,CAAC;QAED,IAAIZ,WAAW,EAAE;UACf,OAAO,IAAI;QACb;MACF;IACF;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAED,OAAO,SAASa,kBAAkBA,CAAC;EACjCC,QAAQ;EACR/B,OAAO;EACPC;AACO,CAAC,EAAE;EACV,MAAM;IAAE+B;EAAiB,CAAC,GAAGrC,2BAA2B,CAAC,CAAC;EAE1D,MAAMa,KAAK,GAAGd,KAAK,CAACuC,GAAG,CAACrC,sBAAsB,CAAC;EAE/C,MAAMsC,QAAQ,GAAG1B,KAAK,EAAEC,GAAG;EAE3Bf,KAAK,CAACyC,kBAAkB,CAAC,MAAM;IAC7B,IAAID,QAAQ,EAAE;MACZ,OAAOF,gBAAgB,GACrB,cAAc,EACdE,QAAQ,EACR,CAAC9B,MAAM,EAAEgC,SAAS,KAAK;QACrB,MAAMP,KAAK,GAAGE,QAAQ,CAAC,CAAC;QAExB,OAAOhC,mBAAmB,CACxBC,OAAO,EACPC,qBAAqB,EACrB4B,KAAK,CAACQ,MAAM,EACZD,SAAS,EAAEC,MAAM,IAAI,EAAE,EACvBjC,MACF,CAAC;MACH,CACF,CAAC;IACH;EACF,CAAC,EAAE,CAAC4B,gBAAgB,EAAE/B,qBAAqB,EAAED,OAAO,EAAE+B,QAAQ,EAAEG,QAAQ,CAAC,CAAC;AAC5E","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
- import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
4
+ import { useNavigationBuilderContext } from "./NavigationBuilderContext.js";
5
5
  /**
6
6
  * Hook to handle focus actions for a route.
7
7
  * Focus action needs to be treated specially, coz when a nested route is focused,
@@ -15,7 +15,7 @@ export function useOnRouteFocus({
15
15
  }) {
16
16
  const {
17
17
  onRouteFocus: onRouteFocusParent
18
- } = React.use(NavigationBuilderContext);
18
+ } = useNavigationBuilderContext();
19
19
  return React.useCallback(key => {
20
20
  const state = getState();
21
21
  const result = router.getStateForRouteFocus(state, key);
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","use","useCallback","state","result","getStateForRouteFocus","undefined"],"sourceRoot":"../../src","sources":["useOnRouteFocus.tsx"],"mappings":";;AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;AASrE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAG7B;EAAEC,MAAM;EAAEC,QAAQ;EAAEC,GAAG,EAAEC,cAAc;EAAEC;AAAiC,CAAC,EAAE;EAC7E,MAAM;IAAEC,YAAY,EAAEC;EAAmB,CAAC,GAAGT,KAAK,CAACU,GAAG,CACpDT,wBACF,CAAC;EAED,OAAOD,KAAK,CAACW,WAAW,CACrBN,GAAW,IAAK;IACf,MAAMO,KAAK,GAAGR,QAAQ,CAAC,CAAC;IACxB,MAAMS,MAAM,GAAGV,MAAM,CAACW,qBAAqB,CAACF,KAAK,EAAEP,GAAG,CAAC;IAEvD,IAAIQ,MAAM,KAAKD,KAAK,EAAE;MACpBL,QAAQ,CAACM,MAAM,CAAC;IAClB;IAEA,IAAIJ,kBAAkB,KAAKM,SAAS,IAAIT,cAAc,KAAKS,SAAS,EAAE;MACpEN,kBAAkB,CAACH,cAAc,CAAC;IACpC;EACF,CAAC,EACD,CAACF,QAAQ,EAAEK,kBAAkB,EAAEN,MAAM,EAAEI,QAAQ,EAAED,cAAc,CACjE,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["React","useNavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","useCallback","state","result","getStateForRouteFocus","undefined"],"sourceRoot":"../../src","sources":["useOnRouteFocus.tsx"],"mappings":";;AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,2BAA2B,QAAQ,+BAA4B;AASxE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAG7B;EAAEC,MAAM;EAAEC,QAAQ;EAAEC,GAAG,EAAEC,cAAc;EAAEC;AAAiC,CAAC,EAAE;EAC7E,MAAM;IAAEC,YAAY,EAAEC;EAAmB,CAAC,GAAGR,2BAA2B,CAAC,CAAC;EAE1E,OAAOD,KAAK,CAACU,WAAW,CACrBL,GAAW,IAAK;IACf,MAAMM,KAAK,GAAGP,QAAQ,CAAC,CAAC;IACxB,MAAMQ,MAAM,GAAGT,MAAM,CAACU,qBAAqB,CAACF,KAAK,EAAEN,GAAG,CAAC;IAEvD,IAAIO,MAAM,KAAKD,KAAK,EAAE;MACpBJ,QAAQ,CAACK,MAAM,CAAC;IAClB;IAEA,IAAIH,kBAAkB,KAAKK,SAAS,IAAIR,cAAc,KAAKQ,SAAS,EAAE;MACpEL,kBAAkB,CAACH,cAAc,CAAC;IACpC;EACF,CAAC,EACD,CAACF,QAAQ,EAAEK,kBAAkB,EAAEN,MAAM,EAAEI,QAAQ,EAAED,cAAc,CACjE,CAAC;AACH","ignoreList":[]}
@@ -3,33 +3,25 @@
3
3
  import * as React from 'react';
4
4
  import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
5
5
  import { NavigationStateContext } from "./NavigationStateContext.js";
6
+ import { IsFocusedContext } from "./useIsFocused.js";
6
7
  export function useOptionsGetters({
7
8
  key,
8
9
  options,
9
- navigation
10
+ getFocusedRouteKey
10
11
  }) {
12
+ const isFocused = React.use(IsFocusedContext) ?? true;
11
13
  const optionsRef = React.useRef(options);
12
14
  const optionsGettersFromChildRef = React.useRef({});
13
- const {
14
- onOptionsChange
15
- } = React.use(NavigationBuilderContext);
15
+ const onOptionsChange = React.use(NavigationBuilderContext)?.onOptionsChange;
16
16
  const {
17
17
  addOptionsGetter: parentAddOptionsGetter
18
18
  } = React.use(NavigationStateContext);
19
- const optionsChangeListener = React.useCallback(() => {
20
- const isFocused = navigation?.isFocused() ?? true;
21
- const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;
22
- if (isFocused && !hasChildren) {
23
- onOptionsChange(optionsRef.current ?? {});
24
- }
25
- }, [navigation, onOptionsChange]);
26
19
  React.useInsertionEffect(() => {
27
20
  optionsRef.current = options;
28
21
  }, [options]);
29
22
  React.useEffect(() => {
30
- optionsChangeListener();
31
- return navigation?.addListener('focus', optionsChangeListener);
32
- }, [navigation, options, optionsChangeListener]);
23
+ onOptionsChange?.();
24
+ }, [isFocused, onOptionsChange, options]);
33
25
  const getOptionsFromListener = React.useCallback(() => {
34
26
  for (const key in optionsGettersFromChildRef.current) {
35
27
  if (key in optionsGettersFromChildRef.current) {
@@ -44,8 +36,11 @@ export function useOptionsGetters({
44
36
  return null;
45
37
  }, []);
46
38
  const getCurrentOptions = React.useCallback(() => {
47
- const isFocused = navigation?.isFocused() ?? true;
48
- if (!isFocused) {
39
+ // We use focused route key from the navigator instead of `isFocused`
40
+ // Because `isFocused` may reflect the value the screen last rendered with,
41
+ // e.g. if `Activity` hides the screen before it rendered the new value,
42
+ // it updates at a lower priority, so it may be delayed.
43
+ if (key != null && getFocusedRouteKey?.() !== key) {
49
44
  return null;
50
45
  }
51
46
  const optionsFromListener = getOptionsFromListener();
@@ -53,7 +48,7 @@ export function useOptionsGetters({
53
48
  return optionsFromListener;
54
49
  }
55
50
  return optionsRef.current;
56
- }, [navigation, getOptionsFromListener]);
51
+ }, [key, getFocusedRouteKey, getOptionsFromListener]);
57
52
  React.useInsertionEffect(() => {
58
53
  // We don't have a parent at the root
59
54
  if (key != null) {
@@ -62,13 +57,17 @@ export function useOptionsGetters({
62
57
  }, [getCurrentOptions, parentAddOptionsGetter, key]);
63
58
  const addOptionsGetter = React.useCallback((key, getter) => {
64
59
  optionsGettersFromChildRef.current[key] = getter;
65
- optionsChangeListener();
66
60
  return () => {
67
61
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
68
62
  delete optionsGettersFromChildRef.current[key];
69
- optionsChangeListener();
63
+
64
+ // Other getters and the focused route may still change during cleanup.
65
+ // Wait until the commit finishes before reporting the remaining options.
66
+ if (onOptionsChange !== undefined) {
67
+ queueMicrotask(onOptionsChange);
68
+ }
70
69
  };
71
- }, [optionsChangeListener]);
70
+ }, [onOptionsChange]);
72
71
  return {
73
72
  addOptionsGetter,
74
73
  getCurrentOptions
@@ -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","useInsertionEffect","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","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":[]}
@@ -5,7 +5,7 @@ import { PreventRemoveContext } from "./PreventRemoveContext.js";
5
5
  export function usePreventRemoveContext() {
6
6
  const value = React.use(PreventRemoveContext);
7
7
  if (value == null) {
8
- throw new Error("Couldn't find the prevent remove context. Is your component inside NavigationContent?");
8
+ throw new Error("Couldn't find the prevent remove context. This is likely a bug in the navigator.\n\nIf you're using a custom navigator, make sure that the navigator content is wrapped by the 'render' function returned by 'useNavigationBuilder'.");
9
9
  }
10
10
  return value;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","PreventRemoveContext","usePreventRemoveContext","value","use","Error"],"sourceRoot":"../../src","sources":["usePreventRemoveContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,oBAAoB,QAAQ,2BAAwB;AAE7D,OAAO,SAASC,uBAAuBA,CAAA,EAAG;EACxC,MAAMC,KAAK,GAAGH,KAAK,CAACI,GAAG,CAACH,oBAAoB,CAAC;EAE7C,IAAIE,KAAK,IAAI,IAAI,EAAE;IACjB,MAAM,IAAIE,KAAK,CACb,uFACF,CAAC;EACH;EAEA,OAAOF,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"names":["React","PreventRemoveContext","usePreventRemoveContext","value","use","Error"],"sourceRoot":"../../src","sources":["usePreventRemoveContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,oBAAoB,QAAQ,2BAAwB;AAE7D,OAAO,SAASC,uBAAuBA,CAAA,EAAG;EACxC,MAAMC,KAAK,GAAGH,KAAK,CAACI,GAAG,CAACH,oBAAoB,CAAC;EAE7C,IAAIE,KAAK,IAAI,IAAI,EAAE;IACjB,MAAM,IAAIE,KAAK,CACb,sOACF,CAAC;EACH;EAEA,OAAOF,KAAK;AACd","ignoreList":[]}
@@ -8,7 +8,6 @@ import { isRecordEqual } from "./isRecordEqual.js";
8
8
  * This is fine since they are internal utilities and this is not public API.
9
9
  */
10
10
  export const CHILD_STATE = Symbol('CHILD_STATE');
11
-
12
11
  /**
13
12
  * Hook to cache route props for each screen in the navigator.
14
13
  * This lets add warnings and modifications to the route object but keep references between renders.
@@ -18,34 +17,50 @@ export function useRouteCache(routes) {
18
17
  const cache = React.useMemo(() => ({
19
18
  current: new Map()
20
19
  }), []);
21
- const next = routes.reduce((acc, route) => {
22
- const previous = cache.current.get(route.key);
23
- const {
24
- state,
25
- ...routeWithoutState
26
- } = route;
27
- let proxy;
28
- if (previous && isRecordEqual(previous, routeWithoutState)) {
29
- // If a cached route object already exists, reuse it
30
- proxy = previous;
31
- } else {
32
- proxy = routeWithoutState;
33
- }
34
- if (process.env.NODE_ENV !== 'production' && proxy !== previous) {
35
- // FIXME: since the state is updated with mutation, the route object cannot be frozen
36
- // As a workaround, loop through the object and make the properties readonly
37
- // Only needed once per proxy - skip if we're reusing a previously-frozen one
38
- for (const [key, value] of Object.entries(proxy)) {
39
- Object.defineProperty(proxy, key, {
40
- enumerable: true,
41
- configurable: true,
42
- writable: false,
43
- value
44
- });
20
+ const next = React.useMemo(() => {
21
+ return routes.reduce((acc, route) => {
22
+ const previous = cache.current.get(route.key);
23
+ const {
24
+ state: _,
25
+ ...routeWithoutState
26
+ } = route;
27
+ let proxy;
28
+ if (previous && isRecordEqual(previous, routeWithoutState)) {
29
+ // If a cached route object already exists, reuse it
30
+ proxy = previous;
31
+ } else {
32
+ proxy = routeWithoutState;
33
+ if (process.env.NODE_ENV !== 'production') {
34
+ // FIXME: since the state is updated with mutation, the route object cannot be frozen
35
+ // As a workaround, loop through the object and make the properties readonly
36
+ // Only needed once per proxy - skip if we're reusing a previously-frozen one
37
+ for (const [key, value] of Object.entries(proxy)) {
38
+ Object.defineProperty(proxy, key, {
39
+ enumerable: true,
40
+ configurable: true,
41
+ writable: false,
42
+ value
43
+ });
44
+ }
45
+ }
45
46
  }
46
- }
47
+ acc.set(route.key, proxy);
48
+ return acc;
49
+ }, new Map());
50
+ }, [cache, routes]);
51
+ React.useInsertionEffect(() => {
52
+ cache.current = next;
53
+ });
54
+
55
+ // Update child state on every render, including when the memo is reused.
56
+ // This restores the previous child state when a pending render is canceled.
57
+ return Array.from(next.values(), (proxy, index) => {
58
+ const state = routes[index]?.state;
47
59
 
48
- // @ts-expect-error: this isn't in type definitions coz we want this private
60
+ // FIXME: We mutate the child state without replacing the cached route object,
61
+ // so nested navigation doesn't re-render the parent screen.
62
+ // This is not concurrent render safe, pending renders mutate this shared child state.
63
+ // Then `getFocusedRouteNameFromRoute` can expose it before the render commits.
49
64
  if (proxy[CHILD_STATE] !== state) {
50
65
  Object.defineProperty(proxy, CHILD_STATE, {
51
66
  enumerable: false,
@@ -53,12 +68,7 @@ export function useRouteCache(routes) {
53
68
  value: state
54
69
  });
55
70
  }
56
- acc.set(route.key, proxy);
57
- return acc;
58
- }, new Map());
59
- React.useInsertionEffect(() => {
60
- cache.current = next;
71
+ return proxy;
61
72
  });
62
- return Array.from(next.values());
63
73
  }
64
74
  //# sourceMappingURL=useRouteCache.js.map
@@ -1 +1 @@
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","entries","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,MAAM,CAACE,GAAG,EAAEO,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACN,KAAK,CAAC,EAAE;QAChDK,MAAM,CAACE,cAAc,CAACP,KAAK,EAAEH,GAAG,EAAE;UAChCW,UAAU,EAAE,IAAI;UAChBC,YAAY,EAAE,IAAI;UAClBC,QAAQ,EAAE,KAAK;UACfN;QACF,CAAC,CAAC;MACJ;IACF;;IAEA;IACA,IAAIJ,KAAK,CAACjB,WAAW,CAAC,KAAKe,KAAK,EAAE;MAChCO,MAAM,CAACE,cAAc,CAACP,KAAK,EAAEjB,WAAW,EAAE;QACxCyB,UAAU,EAAE,KAAK;QACjBC,YAAY,EAAE,IAAI;QAClBL,KAAK,EAAEN;MACT,CAAC,CAAC;IACJ;IAEAL,GAAG,CAACkB,GAAG,CAACjB,KAAK,CAACG,GAAG,EAAEG,KAAK,CAAC;IAEzB,OAAOP,GAAG;EACZ,CAAC,EAAE,IAAIH,GAAG,CAAmC,CAAC,CAAC;EAE/CT,KAAK,CAAC+B,kBAAkB,CAAC,MAAM;IAC7BzB,KAAK,CAACE,OAAO,GAAGE,IAAI;EACtB,CAAC,CAAC;EAEF,OAAOsB,KAAK,CAACC,IAAI,CAACvB,IAAI,CAACwB,MAAM,CAAC,CAAC,CAAC;AAClC","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","entries","defineProperty","enumerable","configurable","writable","set","useInsertionEffect","Array","from","values","index"],"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;AAMhD;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,CAAsB;EAAE,CAAC,CAAC,EACnD,EACF,CAAC;EAED,MAAMC,IAAI,GAAGV,KAAK,CAACO,OAAO,CAAC,MAAM;IAC/B,OAAOF,MAAM,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;MACnC,MAAMC,QAAQ,GAAGR,KAAK,CAACE,OAAO,CAACO,GAAG,CAACF,KAAK,CAACG,GAAG,CAAC;MAE7C,MAAM;QAAEC,KAAK,EAAEC,CAAC;QAAE,GAAGC;MAAkB,CAAC,GAAGN,KAAK;MAEhD,IAAIO,KAAkB;MAEtB,IAAIN,QAAQ,IAAIb,aAAa,CAACa,QAAQ,EAAEK,iBAAiB,CAAC,EAAE;QAC1D;QACAC,KAAK,GAAGN,QAAQ;MAClB,CAAC,MAAM;QACLM,KAAK,GAAGD,iBAAiB;QAEzB,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;UACzC;UACA;UACA;UACA,KAAK,MAAM,CAACP,GAAG,EAAEQ,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACN,KAAK,CAAC,EAAE;YAChDK,MAAM,CAACE,cAAc,CAACP,KAAK,EAAEJ,GAAG,EAAE;cAChCY,UAAU,EAAE,IAAI;cAChBC,YAAY,EAAE,IAAI;cAClBC,QAAQ,EAAE,KAAK;cACfN;YACF,CAAC,CAAC;UACJ;QACF;MACF;MAEAZ,GAAG,CAACmB,GAAG,CAAClB,KAAK,CAACG,GAAG,EAAEI,KAAK,CAAC;MAEzB,OAAOR,GAAG;IACZ,CAAC,EAAE,IAAIH,GAAG,CAAsB,CAAC,CAAC;EACpC,CAAC,EAAE,CAACH,KAAK,EAAED,MAAM,CAAC,CAAC;EAEnBL,KAAK,CAACgC,kBAAkB,CAAC,MAAM;IAC7B1B,KAAK,CAACE,OAAO,GAAGE,IAAI;EACtB,CAAC,CAAC;;EAEF;EACA;EACA,OAAOuB,KAAK,CAACC,IAAI,CAACxB,IAAI,CAACyB,MAAM,CAAC,CAAC,EAAE,CAACf,KAAK,EAAEgB,KAAK,KAAK;IACjD,MAAMnB,KAAK,GAAGZ,MAAM,CAAC+B,KAAK,CAAC,EAAEnB,KAAK;;IAElC;IACA;IACA;IACA;IACA,IAAIG,KAAK,CAAClB,WAAW,CAAC,KAAKe,KAAK,EAAE;MAChCQ,MAAM,CAACE,cAAc,CAACP,KAAK,EAAElB,WAAW,EAAE;QACxC0B,UAAU,EAAE,KAAK;QACjBC,YAAY,EAAE,IAAI;QAClBL,KAAK,EAAEP;MACT,CAAC,CAAC;IACJ;IAEA,OAAOG,KAAK;EACd,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
- import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
4
+ import useLatestCallback from 'use-latest-callback';
5
+ import { useNavigationBuilderContext } from "./NavigationBuilderContext.js";
5
6
 
6
7
  /**
7
8
  * When screen config changes, we want to update the navigator in the same update phase.
@@ -15,9 +16,10 @@ export function useScheduleUpdate(callback) {
15
16
  const {
16
17
  scheduleUpdate,
17
18
  flushUpdates
18
- } = React.use(NavigationBuilderContext);
19
+ } = useNavigationBuilderContext();
20
+ const latestCallback = useLatestCallback(callback);
19
21
  React.useInsertionEffect(() => {
20
- scheduleUpdate(callback);
22
+ scheduleUpdate(latestCallback);
21
23
  });
22
24
  React.useLayoutEffect(flushUpdates);
23
25
  }
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"names":["React","useLatestCallback","useNavigationBuilderContext","useScheduleUpdate","callback","scheduleUpdate","flushUpdates","latestCallback","useInsertionEffect","useLayoutEffect"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AAEnD,SAASC,2BAA2B,QAAQ,+BAA4B;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,QAAoB,EAAE;EACtD,MAAM;IAAEC,cAAc;IAAEC;EAAa,CAAC,GAAGJ,2BAA2B,CAAC,CAAC;EAEtE,MAAMK,cAAc,GAAGN,iBAAiB,CAACG,QAAQ,CAAC;EAElDJ,KAAK,CAACQ,kBAAkB,CAAC,MAAM;IAC7BH,cAAc,CAACE,cAAc,CAAC;EAChC,CAAC,CAAC;EAEFP,KAAK,CAACS,eAAe,CAACH,YAAY,CAAC;AACrC","ignoreList":[]}
@@ -87,20 +87,19 @@ export function useSyncState(getInitialState) {
87
87
  rerender();
88
88
  return unsubscribe;
89
89
  }, [store]);
90
- const pendingUpdatesRef = React.useRef([]);
90
+ const pendingUpdates = useLazyValue(() => new Set());
91
91
  const scheduleUpdate = useLatestCallback(callback => {
92
- pendingUpdatesRef.current.push(callback);
92
+ pendingUpdates.add(callback);
93
93
  });
94
94
  const flushUpdates = useLatestCallback(() => {
95
- const pendingUpdates = pendingUpdatesRef.current;
96
- pendingUpdatesRef.current = [];
97
- if (pendingUpdates.length !== 0) {
95
+ if (pendingUpdates.size !== 0) {
96
+ // Updates are queued child-first as insertion effects run bottom-up.
97
+ // The root navigator replaces the whole state while nested navigators merge into it.
98
+ // So we apply them root-first to avoid the root clobbering nested updates.
99
+ const callbacks = Array.from(pendingUpdates).reverse();
100
+ pendingUpdates.clear();
98
101
  store.batchUpdates(() => {
99
- // Updates are queued child-first as insertion effects run bottom-up.
100
- // The root navigator replaces the whole state while nested navigators merge into it.
101
- // So we apply them root-first to avoid the root clobbering nested updates.
102
- pendingUpdates.reverse();
103
- for (const update of pendingUpdates) {
102
+ for (const update of callbacks) {
104
103
  update();
105
104
  }
106
105
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLatestCallback","deepFreeze","useLazyValue","createStore","getInitialState","listeners","Set","initialized","state","getState","isBatching","didUpdate","notify","error","forEach","listener","e","value","setState","newState","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
+ {"version":3,"names":["React","useLatestCallback","deepFreeze","useLazyValue","createStore","getInitialState","listeners","Set","initialized","state","getState","isBatching","didUpdate","notify","error","forEach","listener","e","value","setState","newState","subscribe","callback","add","delete","batchUpdates","useSyncState","store","rerender","useReducer","_","undefined","useEffect","unsubscribe","pendingUpdates","scheduleUpdate","flushUpdates","size","callbacks","Array","from","reverse","clear","update"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":"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","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,qBA2elB"}
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"}
@@ -22,10 +22,7 @@ export type GetStateListener = () => NavigationState;
22
22
  export type GetNavigationListener = () => NavigationHelpers<ParamListBase>;
23
23
  export type WithStackTrace = (entry: (...args: never[]) => void, callback: () => void) => void;
24
24
  export type ChildBeforeRemoveListener = (action: NavigationAction, nextState: NavigationState | PartialState<NavigationState> | undefined) => boolean;
25
- /**
26
- * Context which holds the required helpers needed to build nested navigators.
27
- */
28
- export declare const NavigationBuilderContext: React.Context<{
25
+ type NavigationBuilderContextValue = {
29
26
  onAction?: ((action: NavigationAction, visitedNavigators?: Set<string>) => boolean) | undefined;
30
27
  addListener?: AddListener | undefined;
31
28
  addKeyedListener?: AddKeyedListener | undefined;
@@ -37,10 +34,16 @@ export declare const NavigationBuilderContext: React.Context<{
37
34
  target: string | undefined;
38
35
  data: unknown;
39
36
  }) => void;
40
- onOptionsChange: (options: object) => void;
37
+ onOptionsChange: () => void;
41
38
  getIsStateEmitted: () => boolean;
42
39
  scheduleUpdate: (callback: () => void) => void;
43
40
  flushUpdates: () => void;
44
41
  withStackTrace: WithStackTrace;
45
- }>;
42
+ };
43
+ /**
44
+ * Context which holds the required helpers needed to build nested navigators.
45
+ */
46
+ export declare const NavigationBuilderContext: React.Context<NavigationBuilderContextValue | undefined>;
47
+ export declare function useNavigationBuilderContext(): NavigationBuilderContextValue;
48
+ export {};
46
49
  //# sourceMappingURL=NavigationBuilderContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationBuilderContext.d.ts","sourceRoot":"","sources":["../../../src/NavigationBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAS,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,yBAAyB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE,qBAAqB,CAAC;IACrC,YAAY,EAAE,yBAAyB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EACpD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KACrB,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC9D,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,gBAAgB,EACxB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAC5B,OAAO,CAAC;AAEb,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CACzC,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,KACzC,CAAC,CAAC;AAEP,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,EACxC,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,KACnC;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EACjC,QAAQ,EAAE,MAAM,IAAI,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,KACnE,OAAO,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,wBAAwB;eAE/B,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,GACxE,SAAS;kBACC,WAAW,GAAG,SAAS;uBAClB,gBAAgB,GAAG,SAAS;mBAChC,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS;sBAChC,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;iBACtD,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;QACtC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,OAAO,CAAC;KACf,KAAK,IAAI;qBACO,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;uBACvB,MAAM,OAAO;oBAChB,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI;kBAChC,MAAM,IAAI;oBACR,cAAc;EAa9B,CAAC"}
1
+ {"version":3,"file":"NavigationBuilderContext.d.ts","sourceRoot":"","sources":["../../../src/NavigationBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAS,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,yBAAyB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE,qBAAqB,CAAC;IACrC,YAAY,EAAE,yBAAyB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EACpD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KACrB,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC9D,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,gBAAgB,EACxB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAC5B,OAAO,CAAC;AAEb,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI,CACzC,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,KACzC,CAAC,CAAC;AAEP,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,EACxC,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,KACnC;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EACjC,QAAQ,EAAE,MAAM,IAAI,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,KACnE,OAAO,CAAC;AAEb,KAAK,6BAA6B,GAAG;IACnC,QAAQ,CAAC,EACL,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,GACxE,SAAS,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,gBAAgB,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,WAAW,EAAE,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;QACtC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,OAAO,CAAC;KACf,KAAK,IAAI,CAAC;IACX,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,OAAO,CAAC;IACjC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC/C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,0DAEzB,CAAC;AAEb,wBAAgB,2BAA2B,kCAU1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationIndependentTree.d.ts","sourceRoot":"","sources":["../../../src/NavigationIndependentTree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAyBA"}
1
+ {"version":3,"file":"NavigationIndependentTree.d.ts","sourceRoot":"","sources":["../../../src/NavigationIndependentTree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2B/B;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAiDA"}
@@ -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;AAK9C;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;eAEvB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,iBAAiB,0DAElB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,eAAe,wBAA6B,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;iBAE7B,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,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,qBAyCxE"}
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;AAG/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAS9C;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;eAEvB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,iBAAiB,0DAElB,CAAC;AAEb;;GAEG;AACH,eAAO,MAAM,eAAe,wBAA6B,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;iBAE7B,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,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,qBA6CxE"}
@@ -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,qBAkGxD"}
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"}
@@ -8,6 +8,7 @@ type Props<State extends NavigationState, ScreenOptions extends {}> = {
8
8
  navigation: NavigationProp<ParamListBase, string, State, ScreenOptions>;
9
9
  route: Route<string>;
10
10
  routeState: NavigationState | PartialState<NavigationState> | undefined;
11
+ getFocusedRouteKey: () => string | undefined;
11
12
  getState: () => State;
12
13
  setState: (state: State) => void;
13
14
  subscribe: (callback: () => void) => () => void;
@@ -18,6 +19,6 @@ type Props<State extends NavigationState, ScreenOptions extends {}> = {
18
19
  * Component which takes care of rendering the screen for a route.
19
20
  * It provides all required contexts and applies optimizations when applicable.
20
21
  */
21
- export declare function SceneView<State extends NavigationState, ScreenOptions extends {}>({ screen, route, navigation, routeState, getState, setState, subscribe, options, clearOptions, }: Props<State, ScreenOptions>): React.JSX.Element;
22
+ export declare function SceneView<State extends NavigationState, ScreenOptions extends {}>({ screen, route, navigation, routeState, getFocusedRouteKey, getState, setState, subscribe, options, clearOptions, }: Props<State, ScreenOptions>): React.JSX.Element;
22
23
  export {};
23
24
  //# sourceMappingURL=SceneView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneView.d.ts","sourceRoot":"","sources":["../../../src/SceneView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,KAAK,EACN,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAS,CAAC;AAGpE,KAAK,KAAK,CAAC,KAAK,SAAS,eAAe,EAAE,aAAa,SAAS,EAAE,IAAI;IACpE,MAAM,EAAE,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,UAAU,EAAE,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACxE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IACxE,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,EACA,MAAM,EACN,KAAK,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,GACb,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,qBAsJ7B"}
1
+ {"version":3,"file":"SceneView.d.ts","sourceRoot":"","sources":["../../../src/SceneView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,KAAK,EACN,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAS,CAAC;AAGpE,KAAK,KAAK,CAAC,KAAK,SAAS,eAAe,EAAE,aAAa,SAAS,EAAE,IAAI;IACpE,MAAM,EAAE,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,UAAU,EAAE,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACxE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IACxE,kBAAkB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,EAAE,EACxB,EACA,MAAM,EACN,KAAK,EACL,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,GACb,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,qBAsJ7B"}
@@ -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;AAK/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,CAkRR"}
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,8 +1,10 @@
1
+ export type PatternPartRepeat = 'zero-or-more' | 'one-or-more';
1
2
  export type PatternPart = {
2
3
  segment: string;
3
- param?: string;
4
- regex?: string;
4
+ name?: string;
5
+ pattern?: string;
5
6
  optional?: boolean;
7
+ repeat?: PatternPartRepeat;
6
8
  };
7
9
  /**
8
10
  * Parse a path into an array of parts with information about each segment.
@@ -1 +1 @@
1
- {"version":3,"file":"getPatternParts.d.ts","sourceRoot":"","sources":["../../../src/getPatternParts.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgI3D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EACvD,WAAW,EAAE,CAAC,EAAE,EAChB,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,UAAQ,GACZ,CAAC,EAAE,CAEL"}
1
+ {"version":3,"file":"getPatternParts.d.ts","sourceRoot":"","sources":["../../../src/getPatternParts.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CA0J3D;AAyBD,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EACvD,WAAW,EAAE,CAAC,EAAE,EAChB,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,UAAQ,GACZ,CAAC,EAAE,CAWL"}
@@ -1 +1 @@
1
- {"version":3,"file":"getStateFromPath.d.ts","sourceRoot":"","sources":["../../../src/getStateFromPath.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAW/E,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,YAAS,CAAC;AAOzD,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;AA4HF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,EAAE,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC5B,QAAQ,CAAC,EAAE,eAAe,GACzB,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,CAmJ3C"}
1
+ {"version":3,"file":"getStateFromPath.d.ts","sourceRoot":"","sources":["../../../src/getStateFromPath.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAU/E,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,YAAS,CAAC;AAOzD,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;AA+KF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,EAAE,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC5B,QAAQ,CAAC,EAAE,eAAe,GACzB,YAAY,CAAC,eAAe,CAAC,GAAG,SAAS,CA0L3C"}
@@ -13,6 +13,7 @@ export { NavigationHelpersContext } from './NavigationHelpersContext.js';
13
13
  export { NavigationIndependentTree } from './NavigationIndependentTree.js';
14
14
  export { NavigationMetaContext } from './NavigationMetaContext.js';
15
15
  export { IsScreenContext, NavigationContext, NavigationProvider, NavigationRouteContext, } from './NavigationProvider.js';
16
+ export { NavigationRootContext } from './NavigationRootContext.js';
16
17
  export { PreventRemoveContext } from './PreventRemoveContext.js';
17
18
  export { PreventRemoveProvider } from './PreventRemoveProvider.js';
18
19
  export { createPathConfigForStaticNavigation, createScreenFactory, type StaticConfig, type StaticNavigation, type StaticParamList, type StaticScreenConfig, type StaticScreenConfigLinking, type StaticScreenConfigScreen, type StaticScreenFactory, type StaticScreenProps, } from './StaticNavigation.js';