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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/lib/module/BaseNavigationContainer.js +5 -2
  2. package/lib/module/BaseNavigationContainer.js.map +1 -1
  3. package/lib/module/DataLoading.js +102 -0
  4. package/lib/module/DataLoading.js.map +1 -0
  5. package/lib/module/NavigationIndependentTree.js +7 -6
  6. package/lib/module/NavigationIndependentTree.js.map +1 -1
  7. package/lib/module/NavigationProvider.js +12 -12
  8. package/lib/module/NavigationProvider.js.map +1 -1
  9. package/lib/module/PreventRemoveContext.js.map +1 -1
  10. package/lib/module/PreventRemoveProvider.js +34 -24
  11. package/lib/module/PreventRemoveProvider.js.map +1 -1
  12. package/lib/module/StaticNavigation.js +14 -6
  13. package/lib/module/StaticNavigation.js.map +1 -1
  14. package/lib/module/StaticTreeContext.js +5 -0
  15. package/lib/module/StaticTreeContext.js.map +1 -0
  16. package/lib/module/checkSerializable.js +7 -9
  17. package/lib/module/checkSerializable.js.map +1 -1
  18. package/lib/module/createNavigationContainerRef.js +6 -8
  19. package/lib/module/createNavigationContainerRef.js.map +1 -1
  20. package/lib/module/createNavigatorFactory.js.map +1 -1
  21. package/lib/module/getActionFromState.js +11 -11
  22. package/lib/module/getActionFromState.js.map +1 -1
  23. package/lib/module/getPathFromState.js +38 -39
  24. package/lib/module/getPathFromState.js.map +1 -1
  25. package/lib/module/getPatternParts.js +2 -2
  26. package/lib/module/getPatternParts.js.map +1 -1
  27. package/lib/module/getStateFromPath.js +72 -45
  28. package/lib/module/getStateFromPath.js.map +1 -1
  29. package/lib/module/index.js +1 -0
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/types.js.map +1 -1
  32. package/lib/module/useEventEmitter.js +1 -1
  33. package/lib/module/useEventEmitter.js.map +1 -1
  34. package/lib/module/useKeyedChildListeners.js +4 -2
  35. package/lib/module/useKeyedChildListeners.js.map +1 -1
  36. package/lib/module/useNavigation.js +2 -15
  37. package/lib/module/useNavigation.js.map +1 -1
  38. package/lib/module/useNavigationBuilder.js +4 -14
  39. package/lib/module/useNavigationBuilder.js.map +1 -1
  40. package/lib/module/useNavigationCache.js +19 -14
  41. package/lib/module/useNavigationCache.js.map +1 -1
  42. package/lib/module/useNavigationHelpers.js +27 -9
  43. package/lib/module/useNavigationHelpers.js.map +1 -1
  44. package/lib/module/useNavigationState.js +69 -36
  45. package/lib/module/useNavigationState.js.map +1 -1
  46. package/lib/module/useOnAction.js +21 -2
  47. package/lib/module/useOnAction.js.map +1 -1
  48. package/lib/module/useOptionsGetters.js +3 -1
  49. package/lib/module/useOptionsGetters.js.map +1 -1
  50. package/lib/module/usePreventRemove.js +9 -2
  51. package/lib/module/usePreventRemove.js.map +1 -1
  52. package/lib/module/useRouteCache.js +14 -7
  53. package/lib/module/useRouteCache.js.map +1 -1
  54. package/lib/module/useScheduleUpdate.js +8 -8
  55. package/lib/module/useScheduleUpdate.js.map +1 -1
  56. package/lib/module/useSyncState.js +4 -1
  57. package/lib/module/useSyncState.js.map +1 -1
  58. package/lib/module/validatePathConfig.js.map +1 -1
  59. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  60. package/lib/typescript/src/DataLoading.d.ts +20 -0
  61. package/lib/typescript/src/DataLoading.d.ts.map +1 -0
  62. package/lib/typescript/src/NavigationProvider.d.ts +0 -1
  63. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  64. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  65. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  66. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  67. package/lib/typescript/src/StaticNavigation.d.ts +65 -39
  68. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  69. package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
  70. package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
  71. package/lib/typescript/src/checkSerializable.d.ts +4 -2
  72. package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
  73. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  74. package/lib/typescript/src/createNavigatorFactory.d.ts +9 -5
  75. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  76. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  77. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  78. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  79. package/lib/typescript/src/index.d.ts +2 -1
  80. package/lib/typescript/src/index.d.ts.map +1 -1
  81. package/lib/typescript/src/types.d.ts +19 -13
  82. package/lib/typescript/src/types.d.ts.map +1 -1
  83. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  84. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  85. package/lib/typescript/src/useNavigationBuilder.d.ts +1 -1
  86. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  87. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  88. package/lib/typescript/src/useNavigationHelpers.d.ts +3 -4
  89. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  90. package/lib/typescript/src/useNavigationState.d.ts +11 -1
  91. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  92. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  93. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  94. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  95. package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -0
  96. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  97. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  98. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  99. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  100. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  101. package/lib/typescript/src/utilities.d.ts +17 -0
  102. package/lib/typescript/src/utilities.d.ts.map +1 -1
  103. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  104. package/package.json +3 -5
  105. package/src/BaseNavigationContainer.tsx +9 -2
  106. package/src/DataLoading.tsx +139 -0
  107. package/src/NavigationIndependentTree.tsx +11 -11
  108. package/src/NavigationProvider.tsx +13 -16
  109. package/src/PreventRemoveContext.tsx +1 -0
  110. package/src/PreventRemoveProvider.tsx +48 -43
  111. package/src/StaticNavigation.tsx +157 -93
  112. package/src/StaticTreeContext.tsx +7 -0
  113. package/src/checkSerializable.tsx +20 -14
  114. package/src/createNavigationContainerRef.tsx +12 -9
  115. package/src/createNavigatorFactory.tsx +16 -28
  116. package/src/getActionFromState.tsx +18 -16
  117. package/src/getPathFromState.tsx +69 -65
  118. package/src/getPatternParts.tsx +2 -2
  119. package/src/getStateFromPath.tsx +107 -66
  120. package/src/index.tsx +2 -0
  121. package/src/types.tsx +62 -50
  122. package/src/useEventEmitter.tsx +1 -1
  123. package/src/useKeyedChildListeners.tsx +4 -2
  124. package/src/useNavigation.tsx +2 -21
  125. package/src/useNavigationBuilder.tsx +6 -16
  126. package/src/useNavigationCache.tsx +26 -19
  127. package/src/useNavigationHelpers.tsx +26 -9
  128. package/src/useNavigationState.tsx +90 -60
  129. package/src/useOnAction.tsx +49 -1
  130. package/src/useOptionsGetters.tsx +4 -1
  131. package/src/usePreventRemove.tsx +11 -2
  132. package/src/useRouteCache.tsx +19 -11
  133. package/src/useScheduleUpdate.tsx +8 -7
  134. package/src/useSyncState.tsx +5 -1
  135. package/src/utilities.tsx +28 -0
  136. package/src/validatePathConfig.tsx +1 -0
@@ -5,12 +5,13 @@ export const NOT_INITIALIZED_ERROR = "The 'navigation' object hasn't been initia
5
5
  export function createNavigationContainerRef() {
6
6
  const methods = [...Object.keys(CommonActions), 'addListener', 'removeListener', 'resetRoot', 'dispatch', 'isFocused', 'canGoBack', 'getRootState', 'getState', 'getParent', 'getCurrentRoute', 'getCurrentOptions'];
7
7
  const listeners = {};
8
+ let current = null;
8
9
  const removeListener = (event, callback) => {
9
10
  if (listeners[event]) {
10
11
  listeners[event] = listeners[event].filter(cb => cb !== callback);
11
12
  }
13
+ current?.removeListener(event, callback);
12
14
  };
13
- let current = null;
14
15
  const ref = {
15
16
  get current() {
16
17
  return current;
@@ -33,7 +34,10 @@ export function createNavigationContainerRef() {
33
34
  },
34
35
  ...methods.reduce((acc, name) => {
35
36
  acc[name] = (...args) => {
36
- if (current == null) {
37
+ if (name === 'removeListener') {
38
+ const [event, callback] = args;
39
+ removeListener(event, callback);
40
+ } else if (current == null) {
37
41
  switch (name) {
38
42
  case 'addListener':
39
43
  {
@@ -42,12 +46,6 @@ export function createNavigationContainerRef() {
42
46
  listeners[event].push(callback);
43
47
  return () => removeListener(event, callback);
44
48
  }
45
- case 'removeListener':
46
- {
47
- const [event, callback] = args;
48
- removeListener(event, callback);
49
- break;
50
- }
51
49
  default:
52
50
  console.error(NOT_INITIALIZED_ERROR);
53
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"sourceRoot":"../../src","sources":["createNavigationContainerRef.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,2BAA2B;AASzD,OAAO,MAAMC,qBAAqB,GAChC,+QAA+Q;AAEjR,OAAO,SAASC,4BAA4BA,CAAA,EAEM;EAChD,MAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAI,CAACL,aAAa,CAAC,EAC7B,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,mBAAmB,CACX;EAEV,MAAMM,SAAuD,GAAG,CAAC,CAAC;EAElE,MAAMC,cAAc,GAAGA,CACrBC,KAAa,EACbC,QAAkC,KAC/B;IACH,IAAIH,SAAS,CAACE,KAAK,CAAC,EAAE;MACpBF,SAAS,CAACE,KAAK,CAAC,GAAGF,SAAS,CAACE,KAAK,CAAC,CAACE,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKF,QAAQ,CAAC;IACrE;EACF,CAAC;EAED,IAAIG,OAAiD,GAAG,IAAI;EAE5D,MAAMC,GAAiD,GAAG;IACxD,IAAID,OAAOA,CAAA,EAAG;MACZ,OAAOA,OAAO;IAChB,CAAC;IACD,IAAIA,OAAOA,CAACE,KAA+C,EAAE;MAC3DF,OAAO,GAAGE,KAAK;MAEf,IAAIA,KAAK,IAAI,IAAI,EAAE;QACjBV,MAAM,CAACW,OAAO,CAACT,SAAS,CAAC,CAACU,OAAO,CAAC,CAAC,CAACR,KAAK,EAAES,SAAS,CAAC,KAAK;UACxDA,SAAS,CAACD,OAAO,CAAEP,QAAQ,IAAK;YAC9BK,KAAK,CAACI,WAAW,CACfV,KAAK,EACLC,QACF,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;IACF,CAAC;IACDU,OAAO,EAAEA,CAAA,KAAM;MACb,IAAIP,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,KAAK;MACd;MAEA,OAAOA,OAAO,CAACO,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD,GAAGhB,OAAO,CAACiB,MAAM,CAAM,CAACC,GAAG,EAAEC,IAAI,KAAK;MACpCD,GAAG,CAACC,IAAI,CAAC,GAAG,CAAC,GAAGC,IAAW,KAAK;QAC9B,IAAIX,OAAO,IAAI,IAAI,EAAE;UACnB,QAAQU,IAAI;YACV,KAAK,aAAa;cAAE;gBAClB,MAAM,CAACd,KAAK,EAAEC,QAAQ,CAAC,GAAGc,IAAI;gBAE9BjB,SAAS,CAACE,KAAK,CAAC,GAAGF,SAAS,CAACE,KAAK,CAAC,IAAI,EAAE;gBACzCF,SAAS,CAACE,KAAK,CAAC,CAACgB,IAAI,CAACf,QAAQ,CAAC;gBAE/B,OAAO,MAAMF,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;cAC9C;YACA,KAAK,gBAAgB;cAAE;gBACrB,MAAM,CAACD,KAAK,EAAEC,QAAQ,CAAC,GAAGc,IAAI;gBAE9BhB,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;gBAC/B;cACF;YACA;cACEgB,OAAO,CAACC,KAAK,CAACzB,qBAAqB,CAAC;UACxC;QACF,CAAC,MAAM;UACL;UACA,OAAOW,OAAO,CAACU,IAAI,CAAC,CAAC,GAAGC,IAAI,CAAC;QAC/B;MACF,CAAC;MACD,OAAOF,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,OAAOR,GAAG;AACZ","ignoreList":[]}
1
+ {"version":3,"names":["CommonActions","NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","listeners","current","removeListener","event","callback","filter","cb","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"sourceRoot":"../../src","sources":["createNavigationContainerRef.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,2BAA2B;AASzD,OAAO,MAAMC,qBAAqB,GAChC,+QAA+Q;AAEjR,OAAO,SAASC,4BAA4BA,CAAA,EAEM;EAChD,MAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAI,CAACL,aAAa,CAAC,EAC7B,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,mBAAmB,CACX;EAEV,MAAMM,SAAuD,GAAG,CAAC,CAAC;EAElE,IAAIC,OAAiD,GAAG,IAAI;EAE5D,MAAMC,cAAc,GAAGA,CACrBC,KAAa,EACbC,QAAkC,KAC/B;IACH,IAAIJ,SAAS,CAACG,KAAK,CAAC,EAAE;MACpBH,SAAS,CAACG,KAAK,CAAC,GAAGH,SAAS,CAACG,KAAK,CAAC,CAACE,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKF,QAAQ,CAAC;IACrE;IAEAH,OAAO,EAAEC,cAAc,CACrBC,KAAK,EACLC,QACF,CAAC;EACH,CAAC;EAED,MAAMG,GAAiD,GAAG;IACxD,IAAIN,OAAOA,CAAA,EAAG;MACZ,OAAOA,OAAO;IAChB,CAAC;IACD,IAAIA,OAAOA,CAACO,KAA+C,EAAE;MAC3DP,OAAO,GAAGO,KAAK;MAEf,IAAIA,KAAK,IAAI,IAAI,EAAE;QACjBV,MAAM,CAACW,OAAO,CAACT,SAAS,CAAC,CAACU,OAAO,CAAC,CAAC,CAACP,KAAK,EAAEQ,SAAS,CAAC,KAAK;UACxDA,SAAS,CAACD,OAAO,CAAEN,QAAQ,IAAK;YAC9BI,KAAK,CAACI,WAAW,CACfT,KAAK,EACLC,QACF,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;IACF,CAAC;IACDS,OAAO,EAAEA,CAAA,KAAM;MACb,IAAIZ,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,KAAK;MACd;MAEA,OAAOA,OAAO,CAACY,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD,GAAGhB,OAAO,CAACiB,MAAM,CAAM,CAACC,GAAG,EAAEC,IAAI,KAAK;MACpCD,GAAG,CAACC,IAAI,CAAC,GAAG,CAAC,GAAGC,IAAW,KAAK;QAC9B,IAAID,IAAI,KAAK,gBAAgB,EAAE;UAC7B,MAAM,CAACb,KAAK,EAAEC,QAAQ,CAAC,GAAGa,IAAI;UAE9Bf,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;QACjC,CAAC,MAAM,IAAIH,OAAO,IAAI,IAAI,EAAE;UAC1B,QAAQe,IAAI;YACV,KAAK,aAAa;cAAE;gBAClB,MAAM,CAACb,KAAK,EAAEC,QAAQ,CAAC,GAAGa,IAAI;gBAE9BjB,SAAS,CAACG,KAAK,CAAC,GAAGH,SAAS,CAACG,KAAK,CAAC,IAAI,EAAE;gBACzCH,SAAS,CAACG,KAAK,CAAC,CAACe,IAAI,CAACd,QAAQ,CAAC;gBAE/B,OAAO,MAAMF,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;cAC9C;YACA;cACEe,OAAO,CAACC,KAAK,CAACzB,qBAAqB,CAAC;UACxC;QACF,CAAC,MAAM;UACL;UACA,OAAOM,OAAO,CAACe,IAAI,CAAC,CAAC,GAAGC,IAAI,CAAC;QAC/B;MACF,CAAC;MACD,OAAOF,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,OAAOR,GAAG;AACZ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","Group","Screen","createComponentForStaticConfig","createNavigatorFactory","Navigator","displayName","name","createNavigator","config","NavigatorComponent","with","DecoratorComponent","WithComponent","createElement","getComponent"],"sourceRoot":"../../src","sources":["createNavigatorFactory.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,MAAM,QAAQ,aAAU;AACjC,SACEC,8BAA8B,QAGzB,uBAAoB;AA0D3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,SAAmC,EACH;EAChC,MAAMC,WAAW,GAAGD,SAAS,CAACC,WAAW,IAAID,SAAS,CAACE,IAAI,IAAI,WAAW;EAE1E,SAASC,eAAeA,CAACC,MAAY,EAAO;IAC1C,IAAIA,MAAM,IAAI,IAAI,EAAE;MAClB,MAAMC,kBAAkB,GAAGP,8BAA8B,CACvD;QACEE,SAAS;QACTH,MAAM;QACND,KAAK;QACLQ;MACF,CAAC,EACDH,WACF,CAAC;MAED,OAAO;QACLG,MAAM;QACNE,IAAIA,CACFC,kBAEE,EACF;UACA,MAAMC,aAAa,GAAGA,CAAA,KAAM;YAC1B,oBAAOb,KAAK,CAACc,aAAa,CAACF,kBAAkB,EAAE;cAC7CP,SAAS,EAAEK;YACb,CAAC,CAAC;UACJ,CAAC;UAEDG,aAAa,CAACP,WAAW,GAAG,GAAGA,WAAW,MAAM;UAEhD,OAAO;YACLG,MAAM;YACNM,YAAY,EAAEA,CAAA,KAAMF;UACtB,CAAC;QACH,CAAC;QACDE,YAAYA,CAAA,EAAG;UACb,OAAOL,kBAAkB;QAC3B;MACF,CAAC;IACH;IAEA,OAAO;MACLL,SAAS;MACTH,MAAM;MACND;IACF,CAAC;EACH;EAEA,OAAOO,eAAe;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["React","Group","Screen","createComponentForStaticConfig","createNavigatorFactory","Navigator","displayName","name","createNavigator","config","NavigatorComponent","with","DecoratorComponent","WithComponent","createElement","getComponent"],"sourceRoot":"../../src","sources":["createNavigatorFactory.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,KAAK,QAAQ,YAAS;AAC/B,SAASC,MAAM,QAAQ,aAAU;AACjC,SACEC,8BAA8B,QAIzB,uBAAoB;AA6C3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,SAAmC,EACH;EAChC,MAAMC,WAAW,GAAGD,SAAS,CAACC,WAAW,IAAID,SAAS,CAACE,IAAI,IAAI,WAAW;EAE1E,SAASC,eAAeA,CAACC,MAAY,EAAO;IAC1C,IAAIA,MAAM,IAAI,IAAI,EAAE;MAClB,MAAMC,kBAAkB,GAAGP,8BAA8B,CACvD;QACEE,SAAS;QACTH,MAAM;QACND,KAAK;QACLQ;MACF,CAAC,EACDH,WACF,CAAC;MAED,OAAO;QACLG,MAAM;QACNE,IAAIA,CACFC,kBAEE,EACF;UACA,MAAMC,aAAa,GAAGA,CAAA,KAAM;YAC1B,oBAAOb,KAAK,CAACc,aAAa,CAACF,kBAAkB,EAAE;cAC7CP,SAAS,EAAEK;YACb,CAAC,CAAC;UACJ,CAAC;UAEDG,aAAa,CAACP,WAAW,GAAG,GAAGA,WAAW,MAAM;UAEhD,OAAO;YACLG,MAAM;YACNM,YAAY,EAAEA,CAAA,KAAMF;UACtB,CAAC;QACH,CAAC;QACDE,YAAYA,CAAA,EAAG;UACb,OAAOL,kBAAkB;QAC3B;MACF,CAAC;IACH;IAEA,OAAO;MACLL,SAAS;MACTH,MAAM;MACND;IACF,CAAC;EACH;EAEA,OAAOO,eAAe;AACxB","ignoreList":[]}
@@ -16,16 +16,16 @@ export function getActionFromState(state, options) {
16
16
  } else {
17
17
  normalizedConfig = {};
18
18
  }
19
- const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
20
- if (routes.length === 0) {
19
+ const routesLength = state.index == null || state.index >= state.routes.length ? state.routes.length : state.index + 1;
20
+ if (routesLength === 0) {
21
21
  return undefined;
22
22
  }
23
- const firstRoute = routes[0];
23
+ const firstRoute = state.routes[0];
24
24
  if (firstRoute == null) {
25
25
  return undefined;
26
26
  }
27
- const secondRoute = routes[1];
28
- if (!(routes.length === 1 && firstRoute.key == null || routes.length === 2 && firstRoute.key == null && firstRoute.name === normalizedConfig?.initialRouteName && secondRoute?.key == null)) {
27
+ const secondRoute = state.routes[1];
28
+ if (!(routesLength === 1 && firstRoute.key == null || routesLength === 2 && firstRoute.key == null && firstRoute.name === normalizedConfig?.initialRouteName && secondRoute?.key == null)) {
29
29
  return {
30
30
  type: 'RESET',
31
31
  payload: state
@@ -67,16 +67,16 @@ export function getActionFromState(state, options) {
67
67
  if (current.routes.length === 0) {
68
68
  return undefined;
69
69
  }
70
- const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
71
- const route = routes[routes.length - 1];
70
+ const routesLength = current.index == null || current.index >= current.routes.length ? current.routes.length : current.index + 1;
71
+ const route = current.routes[routesLength - 1];
72
72
  if (route == null) {
73
73
  return undefined;
74
74
  }
75
- const firstRoute = routes[0];
75
+ const firstRoute = current.routes[0];
76
76
  if (firstRoute == null) {
77
77
  return undefined;
78
78
  }
79
- const secondRoute = routes[1];
79
+ const secondRoute = current.routes[1];
80
80
 
81
81
  // Explicitly set to override existing value when merging params
82
82
  Object.assign(params, {
@@ -85,10 +85,10 @@ export function getActionFromState(state, options) {
85
85
  params: undefined,
86
86
  state: undefined
87
87
  });
88
- if (routes.length === 1 && firstRoute.key == null) {
88
+ if (routesLength === 1 && firstRoute.key == null) {
89
89
  params.initial = true;
90
90
  params.screen = route.name;
91
- } else if (routes.length === 2 && firstRoute.key == null && firstRoute.name === config?.initialRouteName && secondRoute?.key == null) {
91
+ } else if (routesLength === 2 && firstRoute.key == null && firstRoute.name === config?.initialRouteName && secondRoute?.key == null) {
92
92
  params.initial = false;
93
93
  params.screen = route.name;
94
94
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["cachedNormalizedConfig","WeakMap","getActionFromState","state","options","normalizedConfig","cached","get","createNormalizedConfigItem","set","routes","index","slice","length","undefined","firstRoute","secondRoute","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","keys","pop","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["cachedNormalizedConfig","WeakMap","getActionFromState","state","options","normalizedConfig","cached","get","createNormalizedConfigItem","set","routesLength","index","routes","length","undefined","firstRoute","secondRoute","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","keys","pop","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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","ignoreList":[]}
@@ -13,46 +13,32 @@ const encodePathParam = value => {
13
13
  }
14
14
  return result;
15
15
  };
16
- const getActiveRoute = state => {
16
+ const getActiveRoute = (state, configs, getRouteState) => {
17
17
  const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
18
18
  if (route == null) {
19
19
  throw new Error(`Couldn't find the active route.`);
20
20
  }
21
- if (route.state) {
22
- return getActiveRoute(route.state);
21
+ const config = configs?.[route.name];
22
+ const routeState = getRouteState(route, config);
23
+ if (routeState) {
24
+ return getActiveRoute(routeState, config?.screens, getRouteState);
23
25
  }
24
26
  return route;
25
27
  };
26
28
  const cachedNormalizedConfigs = new WeakMap();
27
29
  const getNormalizedConfigs = options => {
28
- if (!options?.screens) return {};
29
- const cached = cachedNormalizedConfigs.get(options?.screens);
30
- if (cached) return cached;
30
+ if (!options) {
31
+ return {};
32
+ }
33
+ const cached = cachedNormalizedConfigs.get(options);
34
+ if (cached) {
35
+ return cached;
36
+ }
37
+ validatePathConfig(options);
31
38
  const normalizedConfigs = createNormalizedConfigs(options.screens);
32
- cachedNormalizedConfigs.set(options.screens, normalizedConfigs);
39
+ cachedNormalizedConfigs.set(options, normalizedConfigs);
33
40
  return normalizedConfigs;
34
41
  };
35
- const getTransformedState = (state, configs) => {
36
- const routes = state.routes.map(route => {
37
- const config = configs?.[route.name];
38
- if (route.state || config?.screens && route.params && ('screen' in route.params && typeof route.params.screen === 'string' && config.screens[route.params.screen] || 'state' in route.params)) {
39
- const nestedState = route.state ?? getStateFromRouteParams(route.params);
40
- if (nestedState) {
41
- return {
42
- ...route,
43
- state: getTransformedState(nestedState, configs?.[route.name]?.screens)
44
- };
45
- }
46
- }
47
-
48
- // @ts-expect-error route.state is handled in previous condition
49
- return route;
50
- });
51
- return {
52
- ...state,
53
- routes
54
- };
55
- };
56
42
 
57
43
  /**
58
44
  * Utility to serialize a navigation state object to a path string.
@@ -87,13 +73,25 @@ export function getPathFromState(state, options) {
87
73
  if (state == null) {
88
74
  throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);
89
75
  }
90
- if (options) {
91
- validatePathConfig(options);
92
- }
93
76
  const configs = getNormalizedConfigs(options);
94
- const transformedState = getTransformedState(state, configs);
77
+ const cachedRouteStates = new Map();
78
+ const getRouteState = (route, config) => {
79
+ if (route.state) {
80
+ return route.state;
81
+ }
82
+ const hasScreenParams = route.params && 'screen' in route.params && typeof route.params.screen === 'string' && config?.screens?.[route.params.screen];
83
+ const hasStateParams = route.params && 'state' in route.params && config?.screens;
84
+ if (!route.params || !config?.screens || !hasScreenParams && !hasStateParams) {
85
+ return undefined;
86
+ }
87
+ if (!cachedRouteStates.has(route)) {
88
+ cachedRouteStates.set(route, getStateFromRouteParams(route.params));
89
+ }
90
+ return cachedRouteStates.get(route);
91
+ };
92
+ const focusedRoute = getActiveRoute(state, configs, getRouteState);
95
93
  let path = '/';
96
- let current = transformedState;
94
+ let current = state;
97
95
  const allParams = {};
98
96
  while (current) {
99
97
  let index = typeof current.index === 'number' ? current.index : 0;
@@ -105,7 +103,6 @@ export function getPathFromState(state, options) {
105
103
  let parts;
106
104
  let focusedParams;
107
105
  let currentOptions = configs;
108
- const focusedRoute = getActiveRoute(transformedState);
109
106
 
110
107
  // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
111
108
  const nestedRouteNames = [];
@@ -162,11 +159,12 @@ export function getPathFromState(state, options) {
162
159
  }
163
160
 
164
161
  // If there is no `screens` property or no nested state, we return pattern
165
- if (!config.screens || route.state == null) {
162
+ const routeState = getRouteState(route, config);
163
+ if (!config.screens || routeState == null) {
166
164
  hasNext = false;
167
165
  } else {
168
- index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;
169
- const nextRoute = route.state.routes[index];
166
+ index = typeof routeState.index === 'number' ? routeState.index : routeState.routes.length - 1;
167
+ const nextRoute = routeState.routes[index];
170
168
  if (nextRoute == null) {
171
169
  throw new Error(`Couldn't find a route at index ${index}.`);
172
170
  }
@@ -182,6 +180,7 @@ export function getPathFromState(state, options) {
182
180
  }
183
181
  }
184
182
  }
183
+ const routeState = getRouteState(route, currentOptions[route.name]);
185
184
  if (currentOptions[route.name] != null) {
186
185
  if (parts) {
187
186
  let index = 0;
@@ -232,7 +231,7 @@ export function getPathFromState(state, options) {
232
231
  }
233
232
  }
234
233
  }
235
- if (route.state) {
234
+ if (routeState) {
236
235
  path += '/';
237
236
  } else if (focusedParams) {
238
237
  const query = queryString.stringify(focusedParams, {
@@ -242,7 +241,7 @@ export function getPathFromState(state, options) {
242
241
  path += `?${query}`;
243
242
  }
244
243
  }
245
- current = route.state;
244
+ current = routeState;
246
245
  }
247
246
 
248
247
  // Include the root path if specified
@@ -1 +1 @@
1
- {"version":3,"names":["queryString","getPatternParts","getStateFromRouteParams","validatePathConfig","encodePathParam","value","result","char","charCode","charCodeAt","safe","includes","encodeURIComponent","getActiveRoute","state","route","index","routes","length","Error","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","screens","cached","get","normalizedConfigs","createNormalizedConfigs","set","getTransformedState","configs","map","config","name","params","screen","nestedState","getPathFromState","String","transformedState","path","current","allParams","initialRoute","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","push","currentParams","key","undefined","optional","part","param","stringify","Object","assign","inPattern","nextRoute","nestedConfig","segment","query","sort","replace","startsWith","createConfigItem","parentParts","exact"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["queryString","getPatternParts","getStateFromRouteParams","validatePathConfig","encodePathParam","value","result","char","charCode","charCodeAt","safe","includes","encodeURIComponent","getActiveRoute","state","configs","getRouteState","route","index","routes","length","Error","config","name","routeState","screens","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","String","cachedRouteStates","Map","hasScreenParams","params","screen","hasStateParams","undefined","has","focusedRoute","path","current","allParams","initialRoute","parts","focusedParams","currentOptions","nestedRouteNames","hasNext","push","currentParams","key","optional","part","param","stringify","Object","assign","inPattern","nextRoute","nestedConfig","segment","query","sort","replace","startsWith","createConfigItem","parentParts","exact"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
@@ -41,15 +41,15 @@ export function getPatternParts(path) {
41
41
  if (regexInnerParens) {
42
42
  // The ')' is part of the regex if we're already inside one
43
43
  regexInnerParens--;
44
- current.regex += char;
45
44
  } else {
45
+ current.regex += char;
46
46
  isRegex = false;
47
47
  isParam = false;
48
48
  }
49
49
  } else {
50
50
  throw new Error(`Encountered ')' without preceding '(' in path: ${path}`);
51
51
  }
52
- } else if (char === '?') {
52
+ } else if (char === '?' && !isRegex) {
53
53
  if (current.param) {
54
54
  isParam = false;
55
55
  current.optional = true;
@@ -1 +1 @@
1
- {"version":3,"names":["getPatternParts","path","parts","current","segment","isRegex","isParam","regexInnerParens","i","length","char","Error","regex","param","optional","replace","push","params","map","part","filter","Boolean","index","entries","indexOf","combinePatternParts","parentParts","exact"],"sourceRoot":"../../src","sources":["getPatternParts.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getPatternParts","path","parts","current","segment","isRegex","isParam","regexInnerParens","i","length","char","Error","regex","param","optional","replace","push","params","map","part","filter","Boolean","index","entries","indexOf","combinePatternParts","parentParts","exact"],"sourceRoot":"../../src","sources":["getPatternParts.tsx"],"mappings":"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","ignoreList":[]}
@@ -97,22 +97,21 @@ export function getStateFromPath(path, options, previous) {
97
97
  // Remove the prefix from the path
98
98
  remaining = remaining.replace(normalizedPrefix, '');
99
99
  }
100
- const decodedSegments = [];
101
- for (const segment of remaining.split('/')) {
102
- if (!segment) {
103
- continue;
104
- }
105
- try {
106
- decodedSegments.push(decodeURIComponent(segment));
107
- } catch {
108
- return undefined;
109
- }
110
- }
111
100
  if (screens === undefined) {
112
101
  // When no config is specified, use the path segments as route names
113
- const routes = decodedSegments.map(name => ({
114
- name
115
- }));
102
+ const routes = [];
103
+ for (const segment of remaining.split('/')) {
104
+ if (!segment) {
105
+ continue;
106
+ }
107
+ try {
108
+ routes.push({
109
+ name: decodeURIComponent(segment)
110
+ });
111
+ } catch {
112
+ return undefined;
113
+ }
114
+ }
116
115
  if (routes.length) {
117
116
  return createNestedStateObject(path, routes, initialRoutes);
118
117
  }
@@ -133,7 +132,18 @@ export function getStateFromPath(path, options, previous) {
133
132
 
134
133
  // We match the whole path against the regex instead of segments
135
134
  // This makes sure matches such as wildcard will catch any unmatched routes, even if nested
135
+ const firstRawSegment = remaining.split('/')[0];
136
+ let firstDecodedSegment;
137
+ try {
138
+ firstDecodedSegment = firstRawSegment != null ? decodeURIComponent(firstRawSegment) : undefined;
139
+ } catch {
140
+ firstDecodedSegment = undefined;
141
+ }
136
142
  for (const config of configs) {
143
+ // Regex matching is expensive, so skip configs that can't match this path.
144
+ if (!canMatchFirstSegment(config.segments[0], firstDecodedSegment, firstRawSegment)) {
145
+ continue;
146
+ }
137
147
  const routes = matchAgainstConfig(remaining, config, configsByScreen);
138
148
  if (routes === undefined) {
139
149
  continue;
@@ -155,31 +165,50 @@ export function getStateFromPath(path, options, previous) {
155
165
  }
156
166
  return undefined;
157
167
  }
168
+ const canMatchFirstSegment = (configSegment, decodedSegment, rawSegment) => {
169
+ if (decodedSegment === undefined) {
170
+ return true;
171
+ }
172
+ if (configSegment === undefined) {
173
+ return false;
174
+ }
175
+ if (configSegment === '*' || configSegment.startsWith(':')) {
176
+ return true;
177
+ }
178
+ return configSegment === decodedSegment || configSegment === rawSegment;
179
+ };
158
180
 
159
181
  /**
160
182
  * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same.
161
183
  */
162
184
  const cachedConfigResources = new WeakMap();
163
185
  function getConfigResources(options) {
164
- if (!options) return prepareConfigResources();
186
+ if (!options) {
187
+ return prepareConfigResources();
188
+ }
165
189
  const cached = cachedConfigResources.get(options);
166
- if (cached) return cached;
190
+ if (cached) {
191
+ return cached;
192
+ }
193
+ validatePathConfig(options);
167
194
  const resources = prepareConfigResources(options);
168
195
  cachedConfigResources.set(options, resources);
169
196
  return resources;
170
197
  }
171
198
  function prepareConfigResources(options) {
172
- if (options) {
173
- validatePathConfig(options);
174
- }
175
199
  const initialRoutes = getInitialRoutes(options);
176
200
  const configs = getSortedNormalizedConfigs(initialRoutes, options?.screens);
177
- checkForDuplicatedConfigs(configs);
178
201
  const configsByScreen = {};
179
202
  const configsByPattern = {};
180
203
  for (const c of configs) {
181
204
  (configsByScreen[c.screen] ??= []).push(c);
182
- (configsByPattern[c.pattern] ??= []).push(c);
205
+ const existing = configsByPattern[c.pattern];
206
+ if (existing) {
207
+ checkForDuplicatedConfigs(existing[existing.length - 1], c);
208
+ existing.push(c);
209
+ } else {
210
+ configsByPattern[c.pattern] = [c];
211
+ }
183
212
  }
184
213
  return {
185
214
  initialRoutes,
@@ -290,24 +319,20 @@ function getSortedNormalizedConfigs(initialRoutes, screens = {}) {
290
319
  return a.segments.length - b.segments.length;
291
320
  });
292
321
  }
293
- function checkForDuplicatedConfigs(configs) {
294
- // Check for duplicate patterns in the config
295
- const patterns = {};
296
- for (const config of configs) {
297
- const pattern = config.pattern;
298
- const existing = patterns[pattern];
299
- if (existing) {
300
- const a = existing.routeNames;
301
- const b = config.routeNames;
302
322
 
303
- // It's not a problem if the path string omitted from a inner most screen
304
- // For example, it's ok if a path resolves to `A > B > C` or `A > B`
305
- const intersects = a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);
306
- if (!intersects && (!existing.shared || !config.shared)) {
307
- throw new Error(`Found conflicting screens with the same pattern. The pattern '${pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen unless shared: true is specified.`);
308
- }
309
- }
310
- patterns[pattern] = config;
323
+ // Throw if two configs resolve to the same pattern but conflicting screens
324
+ function checkForDuplicatedConfigs(existing, config) {
325
+ if (!existing) {
326
+ return;
327
+ }
328
+ const a = existing.routeNames;
329
+ const b = config.routeNames;
330
+
331
+ // It's not a problem if the path string omitted from a inner most screen
332
+ // For example, it's ok if a path resolves to `A > B > C` or `A > B`
333
+ const intersects = a.length > b.length ? arrayStartsWith(a, b) : arrayStartsWith(b, a);
334
+ if (!intersects && (!existing.shared || !config.shared)) {
335
+ throw new Error(`Found conflicting screens with the same pattern. The pattern '${config.pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen unless shared: true is specified.`);
311
336
  }
312
337
  }
313
338
  const matchAgainstConfig = (remaining, config, configsByScreen) => {
@@ -328,13 +353,11 @@ const matchAgainstConfig = (remaining, config, configsByScreen) => {
328
353
  let hasParams = false;
329
354
  if (routeConfig && match.groups) {
330
355
  params = {};
331
- for (const key in match.groups) {
332
- const value = match.groups[key];
333
- const index = Number(key.replace(PARAM_GROUP_PREFIX, ''));
334
- const param = routeConfig.params.find(it => it.index === index);
335
- if (!param || param.screen !== routeName) {
356
+ for (const param of routeConfig.params) {
357
+ if (param.screen !== routeName) {
336
358
  continue;
337
359
  }
360
+ const value = match.groups[`${PARAM_GROUP_PREFIX}${param.index}`];
338
361
  if (value == null) {
339
362
  params[param.name] = undefined;
340
363
  hasParams = true;
@@ -458,6 +481,7 @@ const createConfigItem = (screen, routeNames, parts, parse, hasNestedScreens = f
458
481
  let regex;
459
482
  const segments = [];
460
483
  const params = [];
484
+ const pathParamNames = new Set();
461
485
  if (parts.length) {
462
486
  let regexString = '^(';
463
487
  let index = 0;
@@ -471,6 +495,9 @@ const createConfigItem = (screen, routeNames, parts, parse, hasNestedScreens = f
471
495
  screen: part.screen,
472
496
  name: part.param
473
497
  });
498
+ if (part.screen === screen) {
499
+ pathParamNames.add(part.param);
500
+ }
474
501
  } else {
475
502
  regexString += `${part.segment === '*' ? '.*' : escape(part.segment)}\\/`;
476
503
  }
@@ -490,6 +517,7 @@ const createConfigItem = (screen, routeNames, parts, parse, hasNestedScreens = f
490
517
  routeNames,
491
518
  parse,
492
519
  explicitParamNames: getExplicitParamNames(parse),
520
+ pathParamNames,
493
521
  hasNestedScreens,
494
522
  shared
495
523
  };
@@ -649,8 +677,7 @@ const createNestedStateObject = (path, routes, initialRoutes, routeConfig) => {
649
677
  return undefined;
650
678
  }
651
679
  focusedRoute.path = path.replace(/\/$/, '');
652
- const pathParamNames = new Set(routeConfig?.params.filter(param => param.screen === routeConfig.screen).map(param => param.name));
653
- const queryParams = parseQueryParams(path, routeConfig?.parse, pathParamNames, routeConfig?.explicitParamNames, routeConfig?.hasNestedScreens, focusedRoute.params);
680
+ const queryParams = parseQueryParams(path, routeConfig?.parse, routeConfig?.pathParamNames, routeConfig?.explicitParamNames, routeConfig?.hasNestedScreens, focusedRoute.params);
654
681
  if (!queryParams.valid) {
655
682
  return undefined;
656
683
  }