react-native-screen-transitions 3.0.0-rc.3 → 3.0.0-rc.4

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 (120) hide show
  1. package/lib/commonjs/blank-stack/components/screens.js +16 -11
  2. package/lib/commonjs/blank-stack/components/screens.js.map +1 -1
  3. package/lib/commonjs/blank-stack/components/stack-view.js +42 -36
  4. package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
  5. package/lib/commonjs/native-stack/views/NativeStackView.native.js +110 -103
  6. package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
  7. package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js +72 -0
  8. package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js.map +1 -0
  9. package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js +79 -0
  10. package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js.map +1 -0
  11. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +11 -1
  12. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
  13. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +11 -6
  14. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  15. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +7 -7
  16. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  17. package/lib/commonjs/shared/providers/gestures.provider.js +32 -5
  18. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
  19. package/lib/commonjs/shared/providers/register-bounds.provider.js +4 -3
  20. package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
  21. package/lib/commonjs/shared/providers/routes.provider.js +48 -0
  22. package/lib/commonjs/shared/providers/routes.provider.js.map +1 -0
  23. package/lib/commonjs/shared/providers/screen-transition.provider.js.map +1 -1
  24. package/lib/commonjs/shared/types/state.types.js +9 -0
  25. package/lib/commonjs/shared/types/state.types.js.map +1 -0
  26. package/lib/commonjs/shared/utils/animation/compute-stack-progress.js +20 -0
  27. package/lib/commonjs/shared/utils/animation/compute-stack-progress.js.map +1 -0
  28. package/lib/commonjs/shared/utils/animation/derivations.js +1 -1
  29. package/lib/commonjs/shared/utils/animation/start-screen-transition.js +11 -11
  30. package/lib/commonjs/shared/utils/animation/start-screen-transition.js.map +1 -1
  31. package/lib/module/blank-stack/components/screens.js +16 -11
  32. package/lib/module/blank-stack/components/screens.js.map +1 -1
  33. package/lib/module/blank-stack/components/stack-view.js +42 -36
  34. package/lib/module/blank-stack/components/stack-view.js.map +1 -1
  35. package/lib/module/native-stack/views/NativeStackView.native.js +109 -102
  36. package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
  37. package/lib/module/shared/components/controllers/blank-stack-lifecycle.js +66 -0
  38. package/lib/module/shared/components/controllers/blank-stack-lifecycle.js.map +1 -0
  39. package/lib/module/shared/components/controllers/native-stack-lifecycle.js +73 -0
  40. package/lib/module/shared/components/controllers/native-stack-lifecycle.js.map +1 -0
  41. package/lib/module/shared/hooks/animation/use-screen-animation.js +11 -1
  42. package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
  43. package/lib/module/shared/hooks/gestures/use-build-gestures.js +11 -6
  44. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  45. package/lib/module/shared/hooks/gestures/use-scroll-registry.js +7 -7
  46. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  47. package/lib/module/shared/providers/gestures.provider.js +31 -4
  48. package/lib/module/shared/providers/gestures.provider.js.map +1 -1
  49. package/lib/module/shared/providers/register-bounds.provider.js +4 -3
  50. package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
  51. package/lib/module/shared/providers/routes.provider.js +42 -0
  52. package/lib/module/shared/providers/routes.provider.js.map +1 -0
  53. package/lib/module/shared/providers/screen-transition.provider.js.map +1 -1
  54. package/lib/module/shared/types/state.types.js +5 -0
  55. package/lib/module/shared/types/state.types.js.map +1 -0
  56. package/lib/module/shared/utils/animation/compute-stack-progress.js +15 -0
  57. package/lib/module/shared/utils/animation/compute-stack-progress.js.map +1 -0
  58. package/lib/module/shared/utils/animation/derivations.js +1 -1
  59. package/lib/module/shared/utils/animation/start-screen-transition.js +11 -11
  60. package/lib/module/shared/utils/animation/start-screen-transition.js.map +1 -1
  61. package/lib/typescript/blank-stack/components/screens.d.ts.map +1 -1
  62. package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -1
  63. package/lib/typescript/blank-stack/types.d.ts +1 -39
  64. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  65. package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
  66. package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts +8 -0
  67. package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts.map +1 -0
  68. package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts +8 -0
  69. package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts.map +1 -0
  70. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
  71. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +2 -2
  72. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  73. package/lib/typescript/shared/providers/gestures.provider.d.ts +8 -2
  74. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
  75. package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
  76. package/lib/typescript/shared/providers/routes.provider.d.ts +19 -0
  77. package/lib/typescript/shared/providers/routes.provider.d.ts.map +1 -0
  78. package/lib/typescript/shared/providers/screen-transition.provider.d.ts +2 -2
  79. package/lib/typescript/shared/providers/screen-transition.provider.d.ts.map +1 -1
  80. package/lib/typescript/shared/types/animation.types.d.ts +12 -0
  81. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  82. package/lib/typescript/shared/types/state.types.d.ts +3 -0
  83. package/lib/typescript/shared/types/state.types.d.ts.map +1 -0
  84. package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts +3 -0
  85. package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts.map +1 -0
  86. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/blank-stack/components/screens.tsx +21 -15
  89. package/src/blank-stack/components/stack-view.tsx +55 -44
  90. package/src/blank-stack/types.ts +1 -24
  91. package/src/native-stack/views/NativeStackView.native.tsx +121 -112
  92. package/src/shared/__tests__/bounds.store.test.ts +14 -36
  93. package/src/shared/components/controllers/blank-stack-lifecycle.tsx +70 -0
  94. package/src/shared/components/controllers/native-stack-lifecycle.tsx +87 -0
  95. package/src/shared/hooks/animation/use-screen-animation.tsx +11 -6
  96. package/src/shared/hooks/gestures/use-build-gestures.tsx +12 -6
  97. package/src/shared/hooks/gestures/use-scroll-registry.tsx +7 -7
  98. package/src/shared/providers/gestures.provider.tsx +34 -5
  99. package/src/shared/providers/register-bounds.provider.tsx +4 -3
  100. package/src/shared/providers/routes.provider.tsx +54 -0
  101. package/src/shared/providers/screen-transition.provider.tsx +2 -2
  102. package/src/shared/types/animation.types.ts +13 -0
  103. package/src/shared/types/state.types.ts +2 -0
  104. package/src/shared/utils/animation/compute-stack-progress.ts +16 -0
  105. package/src/shared/utils/animation/derivations.ts +1 -1
  106. package/src/shared/utils/animation/start-screen-transition.ts +13 -10
  107. package/lib/commonjs/shared/components/controllers/screen-lifecycle.js +0 -142
  108. package/lib/commonjs/shared/components/controllers/screen-lifecycle.js.map +0 -1
  109. package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js +0 -28
  110. package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js.map +0 -1
  111. package/lib/module/shared/components/controllers/screen-lifecycle.js +0 -136
  112. package/lib/module/shared/components/controllers/screen-lifecycle.js.map +0 -1
  113. package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js +0 -23
  114. package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js.map +0 -1
  115. package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts +0 -12
  116. package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts.map +0 -1
  117. package/lib/typescript/shared/hooks/gestures/use-parent-gesture-registry.d.ts +0 -6
  118. package/lib/typescript/shared/hooks/gestures/use-parent-gesture-registry.d.ts.map +0 -1
  119. package/src/shared/components/controllers/screen-lifecycle.tsx +0 -154
  120. package/src/shared/hooks/gestures/use-parent-gesture-registry.tsx +0 -18
@@ -1 +1 @@
1
- {"version":3,"names":["_rootTransitionAware","require","_gestures","_keys","_transitionStyles","_jsxRuntime","ScreenTransitionProvider","previous","current","next","children","LifecycleController","jsx","KeysProvider","ScreenGestureProvider","TransitionStylesProvider","RootTransitionAware"],"sourceRoot":"../../../../src","sources":["shared/providers/screen-transition.provider.tsx"],"mappings":";;;;;;AAGA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAAwE,IAAAI,WAAA,GAAAJ,OAAA;AAUjE,SAASK,wBAAwBA,CAEtC;EACDC,QAAQ;EACRC,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC;AACmB,CAAC,EAAE;EACtB,oBACC,IAAAN,WAAA,CAAAO,GAAA,EAACT,KAAA,CAAAU,YAAY;IACZN,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA,IAAK;IAAAC,QAAA,eAEX,IAAAL,WAAA,CAAAO,GAAA,EAACV,SAAA,CAAAY,qBAAqB;MAAAJ,QAAA,eACrB,IAAAL,WAAA,CAAAO,GAAA,EAACD,mBAAmB;QAAAD,QAAA,eACnB,IAAAL,WAAA,CAAAO,GAAA,EAACR,iBAAA,CAAAW,wBAAwB;UAAAL,QAAA,eACxB,IAAAL,WAAA,CAAAO,GAAA,EAACZ,oBAAA,CAAAgB,mBAAmB;YAAAN,QAAA,EAAEA;UAAQ,CAAsB;QAAC,CAC5B;MAAC,CACP;IAAC,CACA;EAAC,CACX,CAAC;AAEjB","ignoreList":[]}
1
+ {"version":3,"names":["_rootTransitionAware","require","_gestures","_keys","_transitionStyles","_jsxRuntime","ScreenTransitionProvider","previous","current","next","children","LifecycleController","jsx","KeysProvider","ScreenGestureProvider","TransitionStylesProvider","RootTransitionAware"],"sourceRoot":"../../../../src","sources":["shared/providers/screen-transition.provider.tsx"],"mappings":";;;;;;AAEA,IAAAA,oBAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAAwE,IAAAI,WAAA,GAAAJ,OAAA;AAUjE,SAASK,wBAAwBA,CAEtC;EACDC,QAAQ;EACRC,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC;AACmB,CAAC,EAAE;EACtB,oBACC,IAAAN,WAAA,CAAAO,GAAA,EAACT,KAAA,CAAAU,YAAY;IACZN,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA,OAAQ;IACjBC,IAAI,EAAEA,IAAK;IAAAC,QAAA,eAEX,IAAAL,WAAA,CAAAO,GAAA,EAACV,SAAA,CAAAY,qBAAqB;MAAAJ,QAAA,eACrB,IAAAL,WAAA,CAAAO,GAAA,EAACD,mBAAmB;QAAAD,QAAA,eACnB,IAAAL,WAAA,CAAAO,GAAA,EAACR,iBAAA,CAAAW,wBAAwB;UAAAL,QAAA,eACxB,IAAAL,WAAA,CAAAO,GAAA,EAACZ,oBAAA,CAAAgB,mBAAmB;YAAAN,QAAA,EAAEA;UAAQ,CAAsB;QAAC,CAC5B;MAAC,CACP;IAAC,CACA;EAAC,CACX,CAAC;AAEjB","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TRUE = exports.FALSE = void 0;
7
+ const TRUE = exports.TRUE = 1;
8
+ const FALSE = exports.FALSE = 0;
9
+ //# sourceMappingURL=state.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TRUE","exports","FALSE"],"sourceRoot":"../../../../src","sources":["shared/types/state.types.ts"],"mappings":";;;;;;AAAO,MAAMA,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG,CAAC;AACd,MAAME,KAAK,GAAAD,OAAA,CAAAC,KAAA,GAAG,CAAC","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.computeStackProgress = void 0;
7
+ const computeStackProgress = (stackAnimationValues, fallback = 0) => {
8
+ "worklet";
9
+
10
+ let computedStackProgress;
11
+ if (stackAnimationValues.length > 0) {
12
+ computedStackProgress = 0;
13
+ for (let i = 0; i < stackAnimationValues.length; i += 1) {
14
+ computedStackProgress += stackAnimationValues[i].progress.value;
15
+ }
16
+ }
17
+ return computedStackProgress ?? fallback;
18
+ };
19
+ exports.computeStackProgress = computeStackProgress;
20
+ //# sourceMappingURL=compute-stack-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["computeStackProgress","stackAnimationValues","fallback","computedStackProgress","length","i","progress","value","exports"],"sourceRoot":"../../../../../src","sources":["shared/utils/animation/compute-stack-progress.ts"],"mappings":";;;;;;AAEO,MAAMA,oBAAoB,GAAGA,CACnCC,oBAAyC,EACzCC,QAAgB,GAAG,CAAC,KAChB;EACJ,SAAS;;EACT,IAAIC,qBAAyC;EAC7C,IAAIF,oBAAoB,CAACG,MAAM,GAAG,CAAC,EAAE;IACpCD,qBAAqB,GAAG,CAAC;IACzB,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,oBAAoB,CAACG,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;MACxDF,qBAAqB,IAAIF,oBAAoB,CAACI,CAAC,CAAC,CAACC,QAAQ,CAACC,KAAK;IAChE;EACD;EACA,OAAOJ,qBAAqB,IAAID,QAAQ;AACzC,CAAC;AAACM,OAAA,CAAAR,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -13,7 +13,7 @@ const derivations = ({
13
13
  }) => {
14
14
  "worklet";
15
15
 
16
- // The combined progress
16
+ // The combined progress (current + next, 0-2 range)
17
17
  const progress = current.progress + (next?.progress ?? 0);
18
18
 
19
19
  // Whether the current screen is focused
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.startScreenTransition = void 0;
7
7
  var _reactNativeReanimated = require("react-native-reanimated");
8
+ var _state = require("../../types/state.types");
8
9
  var _animate = require("./animate");
9
10
  const startScreenTransition = ({
10
11
  target,
@@ -28,27 +29,26 @@ const startScreenTransition = ({
28
29
  closing
29
30
  } = animations;
30
31
  if (target === "close") {
31
- closing.value = 1;
32
+ closing.set(_state.TRUE);
32
33
  }
33
34
  if (!config) {
34
- animating.value = 0;
35
- progress.value = value;
35
+ animating.set(_state.FALSE);
36
+ progress.set(value);
36
37
  if (onAnimationFinish) {
37
38
  (0, _reactNativeReanimated.runOnJS)(onAnimationFinish)(true);
38
39
  }
39
40
  return;
40
41
  }
41
- animating.value = 1;
42
- progress.value = (0, _animate.animate)(value, effectiveConfig, finished => {
42
+ animating.set(_state.TRUE); //<-- Do not move this into the callback
43
+ progress.set((0, _animate.animate)(value, effectiveConfig, finished => {
43
44
  "worklet";
44
45
 
45
- if (finished) {
46
- if (onAnimationFinish) {
47
- (0, _reactNativeReanimated.runOnJS)(onAnimationFinish)(finished);
48
- }
49
- animating.value = 0;
46
+ if (!finished) return;
47
+ if (onAnimationFinish) {
48
+ (0, _reactNativeReanimated.runOnJS)(onAnimationFinish)(finished);
50
49
  }
51
- });
50
+ animating.set(_state.FALSE);
51
+ }));
52
52
  };
53
53
  exports.startScreenTransition = startScreenTransition;
54
54
  //# sourceMappingURL=start-screen-transition.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeReanimated","require","_animate","startScreenTransition","target","spec","onAnimationFinish","animations","initialVelocity","value","config","open","close","isSpringConfig","effectiveConfig","velocity","progress","animating","closing","runOnJS","animate","finished","exports"],"sourceRoot":"../../../../../src","sources":["shared/utils/animation/start-screen-transition.ts"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AAGA,IAAAC,QAAA,GAAAD,OAAA;AAWO,MAAME,qBAAqB,GAAGA,CAAC;EACrCC,MAAM;EACNC,IAAI;EACJC,iBAAiB;EACjBC,UAAU;EACVC;AAC2B,CAAC,KAAK;EACjC,SAAS;;EACT,MAAMC,KAAK,GAAGL,MAAM,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC;EACvC,MAAMM,MAAM,GAAGN,MAAM,KAAK,MAAM,GAAGC,IAAI,EAAEM,IAAI,GAAGN,IAAI,EAAEO,KAAK;EAE3D,MAAMC,cAAc,GACnB,CAAC,CAACH,MAAM,IAAI,EAAE,UAAU,IAAIA,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAIA,MAAM,CAAC;EAE7D,MAAMI,eAAe,GACpBD,cAAc,IAAI,OAAOL,eAAe,KAAK,QAAQ,GAClD;IAAE,GAAGE,MAAM;IAAEK,QAAQ,EAAEP;EAAgB,CAAC,GACxCE,MAAM;EAEV,MAAM;IAAEM,QAAQ;IAAEC,SAAS;IAAEC;EAAQ,CAAC,GAAGX,UAAU;EAEnD,IAAIH,MAAM,KAAK,OAAO,EAAE;IACvBc,OAAO,CAACT,KAAK,GAAG,CAAC;EAClB;EAEA,IAAI,CAACC,MAAM,EAAE;IACZO,SAAS,CAACR,KAAK,GAAG,CAAC;IACnBO,QAAQ,CAACP,KAAK,GAAGA,KAAK;IAEtB,IAAIH,iBAAiB,EAAE;MACtB,IAAAa,8BAAO,EAACb,iBAAiB,CAAC,CAAC,IAAI,CAAC;IACjC;IACA;EACD;EAEAW,SAAS,CAACR,KAAK,GAAG,CAAC;EAEnBO,QAAQ,CAACP,KAAK,GAAG,IAAAW,gBAAO,EAACX,KAAK,EAAEK,eAAe,EAAGO,QAAQ,IAAK;IAC9D,SAAS;;IACT,IAAIA,QAAQ,EAAE;MACb,IAAIf,iBAAiB,EAAE;QACtB,IAAAa,8BAAO,EAACb,iBAAiB,CAAC,CAACe,QAAQ,CAAC;MACrC;MACAJ,SAAS,CAACR,KAAK,GAAG,CAAC;IACpB;EACD,CAAC,CAAC;AACH,CAAC;AAACa,OAAA,CAAAnB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeReanimated","require","_state","_animate","startScreenTransition","target","spec","onAnimationFinish","animations","initialVelocity","value","config","open","close","isSpringConfig","effectiveConfig","velocity","progress","animating","closing","set","TRUE","FALSE","runOnJS","animate","finished","exports"],"sourceRoot":"../../../../../src","sources":["shared/utils/animation/start-screen-transition.ts"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAWO,MAAMG,qBAAqB,GAAGA,CAAC;EACrCC,MAAM;EACNC,IAAI;EACJC,iBAAiB;EACjBC,UAAU;EACVC;AAC2B,CAAC,KAAK;EACjC,SAAS;;EACT,MAAMC,KAAK,GAAGL,MAAM,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC;EACvC,MAAMM,MAAM,GAAGN,MAAM,KAAK,MAAM,GAAGC,IAAI,EAAEM,IAAI,GAAGN,IAAI,EAAEO,KAAK;EAE3D,MAAMC,cAAc,GACnB,CAAC,CAACH,MAAM,IAAI,EAAE,UAAU,IAAIA,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAIA,MAAM,CAAC;EAE7D,MAAMI,eAAe,GACpBD,cAAc,IAAI,OAAOL,eAAe,KAAK,QAAQ,GAClD;IAAE,GAAGE,MAAM;IAAEK,QAAQ,EAAEP;EAAgB,CAAC,GACxCE,MAAM;EAEV,MAAM;IAAEM,QAAQ;IAAEC,SAAS;IAAEC;EAAQ,CAAC,GAAGX,UAAU;EAEnD,IAAIH,MAAM,KAAK,OAAO,EAAE;IACvBc,OAAO,CAACC,GAAG,CAACC,WAAI,CAAC;EAClB;EAEA,IAAI,CAACV,MAAM,EAAE;IACZO,SAAS,CAACE,GAAG,CAACE,YAAK,CAAC;IACpBL,QAAQ,CAACG,GAAG,CAACV,KAAK,CAAC;IAEnB,IAAIH,iBAAiB,EAAE;MACtB,IAAAgB,8BAAO,EAAChB,iBAAiB,CAAC,CAAC,IAAI,CAAC;IACjC;IACA;EACD;EAEAW,SAAS,CAACE,GAAG,CAACC,WAAI,CAAC,CAAC,CAAC;EACrBJ,QAAQ,CAACG,GAAG,CACX,IAAAI,gBAAO,EAACd,KAAK,EAAEK,eAAe,EAAGU,QAAQ,IAAK;IAC7C,SAAS;;IACT,IAAI,CAACA,QAAQ,EAAE;IAEf,IAAIlB,iBAAiB,EAAE;MACtB,IAAAgB,8BAAO,EAAChB,iBAAiB,CAAC,CAACkB,QAAQ,CAAC;IACrC;IAEAP,SAAS,CAACE,GAAG,CAACE,YAAK,CAAC;EACrB,CAAC,CACF,CAAC;AACF,CAAC;AAACI,OAAA,CAAAtB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -5,10 +5,13 @@ import Animated, { interpolate, useAnimatedProps, useDerivedValue, useSharedValu
5
5
  import { Screen as RNSScreen } from "react-native-screens";
6
6
  import { AnimationStore } from "../../shared/stores/animation.store";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ var ScreenActivity = /*#__PURE__*/function (ScreenActivity) {
9
+ ScreenActivity[ScreenActivity["INACTIVE"] = 0] = "INACTIVE";
10
+ ScreenActivity[ScreenActivity["TRANSITIONING_OR_BELOW_TOP"] = 1] = "TRANSITIONING_OR_BELOW_TOP";
11
+ ScreenActivity[ScreenActivity["ON_TOP"] = 2] = "ON_TOP";
12
+ return ScreenActivity;
13
+ }(ScreenActivity || {});
8
14
  const EPSILON = 1e-5;
9
- const STATE_INACTIVE = 0;
10
- const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
11
- const STATE_ON_TOP = 2;
12
15
  const AnimatedScreen = Animated.createAnimatedComponent(RNSScreen);
13
16
  export const Screen = ({
14
17
  routeKey,
@@ -21,33 +24,35 @@ export const Screen = ({
21
24
  shouldFreeze
22
25
  }) => {
23
26
  const sceneProgress = AnimationStore.getAnimation(routeKey, "progress");
24
- const screenActivity = useSharedValue(1);
27
+ const sceneClosing = AnimationStore.getAnimation(routeKey, "closing");
28
+ const screenActivity = useSharedValue(ScreenActivity.TRANSITIONING_OR_BELOW_TOP);
25
29
  useDerivedValue(() => {
26
30
  if (!sceneProgress) {
27
- screenActivity.set(STATE_TRANSITIONING_OR_BELOW_TOP);
31
+ screenActivity.set(ScreenActivity.TRANSITIONING_OR_BELOW_TOP);
28
32
  return;
29
33
  }
30
34
  if (index < routesLength - activeScreensLimit - 1 || isPreloaded) {
31
- screenActivity.set(STATE_INACTIVE);
35
+ screenActivity.set(ScreenActivity.INACTIVE);
32
36
  } else {
33
- const outputValue = index === routesLength - 1 ? STATE_ON_TOP : index >= routesLength - activeScreensLimit ? STATE_TRANSITIONING_OR_BELOW_TOP : STATE_INACTIVE;
37
+ const outputValue = index === routesLength - 1 ? ScreenActivity.ON_TOP : index >= routesLength - activeScreensLimit ? ScreenActivity.TRANSITIONING_OR_BELOW_TOP : ScreenActivity.INACTIVE;
34
38
  const v = interpolate(sceneProgress.get(), [0, 1 - EPSILON, 1], [1, 1, outputValue], "clamp");
35
- const next = Math.trunc(v) ?? STATE_TRANSITIONING_OR_BELOW_TOP;
39
+ const next = Math.trunc(v) ?? ScreenActivity.TRANSITIONING_OR_BELOW_TOP;
36
40
  if (next !== screenActivity.get()) {
37
41
  screenActivity.set(next);
38
42
  }
39
43
  }
40
44
  });
41
45
  const animatedProps = useAnimatedProps(() => {
46
+ const activity = screenActivity.get();
42
47
  return {
43
- activityState: screenActivity.get(),
44
- shouldFreeze: screenActivity.get() === STATE_INACTIVE && shouldFreeze
48
+ activityState: activity,
49
+ shouldFreeze: activity === ScreenActivity.INACTIVE && shouldFreeze,
50
+ pointerEvents: sceneClosing.get() ? "none" : "box-none"
45
51
  };
46
52
  });
47
53
  return /*#__PURE__*/_jsx(AnimatedScreen, {
48
54
  enabled: true,
49
55
  style: StyleSheet.absoluteFill,
50
- pointerEvents: "box-none",
51
56
  freezeOnBlur: freezeOnBlur,
52
57
  animatedProps: animatedProps,
53
58
  children: children
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","Animated","interpolate","useAnimatedProps","useDerivedValue","useSharedValue","Screen","RNSScreen","AnimationStore","jsx","_jsx","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","AnimatedScreen","createAnimatedComponent","routeKey","index","routesLength","isPreloaded","activeScreensLimit","children","freezeOnBlur","shouldFreeze","sceneProgress","getAnimation","screenActivity","set","outputValue","v","get","next","Math","trunc","animatedProps","activityState","enabled","style","absoluteFill","pointerEvents"],"sourceRoot":"../../../../src","sources":["blank-stack/components/screens.tsx"],"mappings":";;AACA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,QAAQ,IACdC,WAAW,EACXC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACR,yBAAyB;AAChC,SAASC,MAAM,IAAIC,SAAS,QAAQ,sBAAsB;AAC1D,SAASC,cAAc,QAAQ,qCAAqC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAarE,MAAMC,OAAO,GAAG,IAAI;AAEpB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,gCAAgC,GAAG,CAAC;AAC1C,MAAMC,YAAY,GAAG,CAAC;AAEtB,MAAMC,cAAc,GAAGd,QAAQ,CAACe,uBAAuB,CAACT,SAAS,CAAC;AAElE,OAAO,MAAMD,MAAM,GAAGA,CAAC;EACtBW,QAAQ;EACRC,KAAK;EACLC,YAAY;EACZC,WAAW;EACXC,kBAAkB;EAClBC,QAAQ;EACRC,YAAY;EACZC;AACY,CAAC,KAAK;EAClB,MAAMC,aAAa,GAAGjB,cAAc,CAACkB,YAAY,CAACT,QAAQ,EAAE,UAAU,CAAC;EACvE,MAAMU,cAAc,GAAGtB,cAAc,CAAY,CAAC,CAAC;EAEnDD,eAAe,CAAC,MAAM;IACrB,IAAI,CAACqB,aAAa,EAAE;MACnBE,cAAc,CAACC,GAAG,CAACf,gCAAgC,CAAC;MACpD;IACD;IAEA,IAAIK,KAAK,GAAGC,YAAY,GAAGE,kBAAkB,GAAG,CAAC,IAAID,WAAW,EAAE;MACjEO,cAAc,CAACC,GAAG,CAAChB,cAAc,CAAC;IACnC,CAAC,MAAM;MACN,MAAMiB,WAAW,GAChBX,KAAK,KAAKC,YAAY,GAAG,CAAC,GACvBL,YAAY,GACZI,KAAK,IAAIC,YAAY,GAAGE,kBAAkB,GACzCR,gCAAgC,GAChCD,cAAc;MAEnB,MAAMkB,CAAC,GAAG5B,WAAW,CACpBuB,aAAa,CAACM,GAAG,CAAC,CAAC,EACnB,CAAC,CAAC,EAAE,CAAC,GAAGpB,OAAO,EAAE,CAAC,CAAC,EACnB,CAAC,CAAC,EAAE,CAAC,EAAEkB,WAAW,CAAC,EACnB,OACD,CAAC;MAED,MAAMG,IAAI,GACRC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAAC,IAAkBjB,gCAAgC;MAEjE,IAAImB,IAAI,KAAKL,cAAc,CAACI,GAAG,CAAC,CAAC,EAAE;QAClCJ,cAAc,CAACC,GAAG,CAACI,IAAI,CAAC;MACzB;IACD;EACD,CAAC,CAAC;EAEF,MAAMG,aAAa,GAAGhC,gBAAgB,CAAC,MAAM;IAC5C,OAAO;MACNiC,aAAa,EAAET,cAAc,CAACI,GAAG,CAAC,CAAC;MACnCP,YAAY,EAAEG,cAAc,CAACI,GAAG,CAAC,CAAC,KAAKnB,cAAc,IAAIY;IAC1D,CAAC;EACF,CAAC,CAAC;EAEF,oBACCd,IAAA,CAACK,cAAc;IACdsB,OAAO;IACPC,KAAK,EAAEtC,UAAU,CAACuC,YAAa;IAC/BC,aAAa,EAAC,UAAU;IACxBjB,YAAY,EAAEA,YAAa;IAC3BY,aAAa,EAAEA,aAAc;IAAAb,QAAA,EAE5BA;EAAQ,CACM,CAAC;AAEnB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","Animated","interpolate","useAnimatedProps","useDerivedValue","useSharedValue","Screen","RNSScreen","AnimationStore","jsx","_jsx","ScreenActivity","EPSILON","AnimatedScreen","createAnimatedComponent","routeKey","index","routesLength","isPreloaded","activeScreensLimit","children","freezeOnBlur","shouldFreeze","sceneProgress","getAnimation","sceneClosing","screenActivity","TRANSITIONING_OR_BELOW_TOP","set","INACTIVE","outputValue","ON_TOP","v","get","next","Math","trunc","animatedProps","activity","activityState","pointerEvents","enabled","style","absoluteFill"],"sourceRoot":"../../../../src","sources":["blank-stack/components/screens.tsx"],"mappings":";;AACA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,QAAQ,IACdC,WAAW,EACXC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACR,yBAAyB;AAChC,SAASC,MAAM,IAAIC,SAAS,QAAQ,sBAAsB;AAC1D,SAASC,cAAc,QAAQ,qCAAqC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,IAYhEC,cAAc,0BAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA,EAAdA,cAAc;AAMnB,MAAMC,OAAO,GAAG,IAAI;AAEpB,MAAMC,cAAc,GAAGZ,QAAQ,CAACa,uBAAuB,CAACP,SAAS,CAAC;AAElE,OAAO,MAAMD,MAAM,GAAGA,CAAC;EACtBS,QAAQ;EACRC,KAAK;EACLC,YAAY;EACZC,WAAW;EACXC,kBAAkB;EAClBC,QAAQ;EACRC,YAAY;EACZC;AACY,CAAC,KAAK;EAClB,MAAMC,aAAa,GAAGf,cAAc,CAACgB,YAAY,CAACT,QAAQ,EAAE,UAAU,CAAC;EACvE,MAAMU,YAAY,GAAGjB,cAAc,CAACgB,YAAY,CAACT,QAAQ,EAAE,SAAS,CAAC;EACrE,MAAMW,cAAc,GAAGrB,cAAc,CACpCM,cAAc,CAACgB,0BAChB,CAAC;EAEDvB,eAAe,CAAC,MAAM;IACrB,IAAI,CAACmB,aAAa,EAAE;MACnBG,cAAc,CAACE,GAAG,CAACjB,cAAc,CAACgB,0BAA0B,CAAC;MAC7D;IACD;IAEA,IAAIX,KAAK,GAAGC,YAAY,GAAGE,kBAAkB,GAAG,CAAC,IAAID,WAAW,EAAE;MACjEQ,cAAc,CAACE,GAAG,CAACjB,cAAc,CAACkB,QAAQ,CAAC;IAC5C,CAAC,MAAM;MACN,MAAMC,WAAW,GAChBd,KAAK,KAAKC,YAAY,GAAG,CAAC,GACvBN,cAAc,CAACoB,MAAM,GACrBf,KAAK,IAAIC,YAAY,GAAGE,kBAAkB,GACzCR,cAAc,CAACgB,0BAA0B,GACzChB,cAAc,CAACkB,QAAQ;MAE5B,MAAMG,CAAC,GAAG9B,WAAW,CACpBqB,aAAa,CAACU,GAAG,CAAC,CAAC,EACnB,CAAC,CAAC,EAAE,CAAC,GAAGrB,OAAO,EAAE,CAAC,CAAC,EACnB,CAAC,CAAC,EAAE,CAAC,EAAEkB,WAAW,CAAC,EACnB,OACD,CAAC;MAED,MAAMI,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAAC,IAAIrB,cAAc,CAACgB,0BAA0B;MAEvE,IAAIO,IAAI,KAAKR,cAAc,CAACO,GAAG,CAAC,CAAC,EAAE;QAClCP,cAAc,CAACE,GAAG,CAACM,IAAI,CAAC;MACzB;IACD;EACD,CAAC,CAAC;EAEF,MAAMG,aAAa,GAAGlC,gBAAgB,CAAC,MAAM;IAC5C,MAAMmC,QAAQ,GAAGZ,cAAc,CAACO,GAAG,CAAC,CAAC;IACrC,OAAO;MACNM,aAAa,EAAED,QAAQ;MACvBhB,YAAY,EAAEgB,QAAQ,KAAK3B,cAAc,CAACkB,QAAQ,IAAIP,YAAY;MAClEkB,aAAa,EAAEf,YAAY,CAACQ,GAAG,CAAC,CAAC,GAC7B,MAAM,GACN;IACL,CAAC;EACF,CAAC,CAAC;EAEF,oBACCvB,IAAA,CAACG,cAAc;IACd4B,OAAO;IACPC,KAAK,EAAE1C,UAAU,CAAC2C,YAAa;IAC/BtB,YAAY,EAAEA,YAAa;IAC3BgB,aAAa,EAAEA,aAAc;IAAAjB,QAAA,EAE5BA;EAAQ,CACM,CAAC;AAEnB,CAAC","ignoreList":[]}
@@ -6,8 +6,9 @@ import * as React from "react";
6
6
  import { StyleSheet } from "react-native";
7
7
  import { GestureHandlerRootView } from "react-native-gesture-handler";
8
8
  import { ScreenContainer } from "react-native-screens";
9
- import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/screen-lifecycle";
9
+ import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/blank-stack-lifecycle";
10
10
  import { FlagsProvider } from "../../shared/providers/flags.provider";
11
+ import { RoutesProvider } from "../../shared/providers/routes.provider";
11
12
  import { ScreenTransitionProvider } from "../../shared/providers/screen-transition.provider";
12
13
  import { withStackNavigationProvider } from "../utils/with-stack-navigation";
13
14
  import { Overlay } from "./overlay";
@@ -40,44 +41,49 @@ export const StackView = withStackNavigationProvider(({
40
41
  scenes,
41
42
  shouldShowFloatOverlay
42
43
  }) => {
44
+ // Memoize route keys array for ScenesProvider
45
+ const routeKeys = React.useMemo(() => routes.map(route => route.key), [routes]);
43
46
  return /*#__PURE__*/_jsx(FlagsProvider, {
44
47
  TRANSITIONS_ALWAYS_ON: true,
45
- children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
46
- children: /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
47
- children: [shouldShowFloatOverlay ? /*#__PURE__*/_jsx(Overlay.Float, {}) : null, /*#__PURE__*/_jsx(ScreenContainer, {
48
- style: styles.container,
49
- children: scenes.map((scene, sceneIndex) => {
50
- const descriptor = scene.descriptor;
51
- const route = scene.route;
52
- const isFocused = focusedIndex === sceneIndex;
53
- const isBelowFocused = focusedIndex - 1 === sceneIndex;
54
- const previousDescriptor = scenes[sceneIndex - 1]?.descriptor ?? undefined;
55
- const nextDescriptor = scenes[sceneIndex + 1]?.descriptor ?? undefined;
56
- const isPreloaded = descriptors[route.key] === undefined;
48
+ children: /*#__PURE__*/_jsx(RoutesProvider, {
49
+ routeKeys: routeKeys,
50
+ children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
51
+ children: /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
52
+ children: [shouldShowFloatOverlay ? /*#__PURE__*/_jsx(Overlay.Float, {}) : null, /*#__PURE__*/_jsx(ScreenContainer, {
53
+ style: styles.container,
54
+ children: scenes.map((scene, sceneIndex) => {
55
+ const descriptor = scene.descriptor;
56
+ const route = scene.route;
57
+ const isFocused = focusedIndex === sceneIndex;
58
+ const isBelowFocused = focusedIndex - 1 === sceneIndex;
59
+ const previousDescriptor = scenes[sceneIndex - 1]?.descriptor ?? undefined;
60
+ const nextDescriptor = scenes[sceneIndex + 1]?.descriptor ?? undefined;
61
+ const isPreloaded = descriptors[route.key] === undefined;
57
62
 
58
- // On Fabric, when screen is frozen, animated and reanimated values are not updated
59
- // due to component being unmounted. To avoid this, we don't freeze the previous screen there
60
- const shouldFreeze = isFabric() ? !isPreloaded && !isFocused && !isBelowFocused : !isPreloaded && !isFocused;
61
- return /*#__PURE__*/_jsx(Screen, {
62
- isPreloaded: isPreloaded,
63
- index: sceneIndex,
64
- activeScreensLimit: activeScreensLimit,
65
- routeKey: route.key,
66
- routesLength: routes.length,
67
- shouldFreeze: shouldFreeze,
68
- freezeOnBlur: descriptor.options.freezeOnBlur,
69
- children: /*#__PURE__*/_jsx(ScreenTransitionProvider, {
70
- previous: previousDescriptor,
71
- current: descriptor,
72
- next: nextDescriptor,
73
- LifecycleController: BlankStackScreenLifecycleController,
74
- children: /*#__PURE__*/_jsx(SceneView, {
75
- descriptor: descriptor
76
- }, route.key)
77
- })
78
- }, route.key);
79
- })
80
- })]
63
+ // On Fabric, when screen is frozen, animated and reanimated values are not updated
64
+ // due to component being unmounted. To avoid this, we don't freeze the previous screen there
65
+ const shouldFreeze = isFabric() ? !isPreloaded && !isFocused && !isBelowFocused : !isPreloaded && !isFocused;
66
+ return /*#__PURE__*/_jsx(Screen, {
67
+ isPreloaded: isPreloaded,
68
+ index: sceneIndex,
69
+ activeScreensLimit: activeScreensLimit,
70
+ routeKey: route.key,
71
+ routesLength: routes.length,
72
+ shouldFreeze: shouldFreeze,
73
+ freezeOnBlur: descriptor.options.freezeOnBlur,
74
+ children: /*#__PURE__*/_jsx(ScreenTransitionProvider, {
75
+ previous: previousDescriptor,
76
+ current: descriptor,
77
+ next: nextDescriptor,
78
+ LifecycleController: BlankStackScreenLifecycleController,
79
+ children: /*#__PURE__*/_jsx(SceneView, {
80
+ descriptor: descriptor
81
+ }, route.key)
82
+ })
83
+ }, route.key);
84
+ })
85
+ })]
86
+ })
81
87
  })
82
88
  })
83
89
  });
@@ -1 +1 @@
1
- {"version":3,"names":["SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","React","StyleSheet","GestureHandlerRootView","ScreenContainer","BlankStackScreenLifecycleController","FlagsProvider","ScreenTransitionProvider","withStackNavigationProvider","Overlay","Screen","jsx","_jsx","jsxs","_jsxs","isFabric","global","SceneView","memo","descriptor","route","navigation","render","Provider","value","children","options","overlayMode","StackView","activeScreensLimit","descriptors","focusedIndex","routes","scenes","shouldShowFloatOverlay","TRANSITIONS_ALWAYS_ON","Float","style","styles","container","map","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","key","shouldFreeze","index","routeKey","routesLength","length","freezeOnBlur","previous","current","next","LifecycleController","create","flex"],"sourceRoot":"../../../../src","sources":["blank-stack/components/stack-view.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","React","StyleSheet","GestureHandlerRootView","ScreenContainer","BlankStackScreenLifecycleController","FlagsProvider","RoutesProvider","ScreenTransitionProvider","withStackNavigationProvider","Overlay","Screen","jsx","_jsx","jsxs","_jsxs","isFabric","global","SceneView","memo","descriptor","route","navigation","render","Provider","value","children","options","overlayMode","StackView","activeScreensLimit","descriptors","focusedIndex","routes","scenes","shouldShowFloatOverlay","routeKeys","useMemo","map","key","TRANSITIONS_ALWAYS_ON","Float","style","styles","container","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","shouldFreeze","index","routeKey","routesLength","length","freezeOnBlur","previous","current","next","LifecycleController","create","flex"],"sourceRoot":"../../../../src","sources":["blank-stack/components/stack-view.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,8 @@ import { Animated, Platform, StatusBar, StyleSheet, useAnimatedValue, View } fro
7
7
  import { GestureHandlerRootView } from "react-native-gesture-handler";
8
8
  import { useSafeAreaInsets } from "react-native-safe-area-context";
9
9
  import { ScreenStack, ScreenStackItem } from "react-native-screens";
10
- import { NativeStackScreenLifecycleController } from "../../shared/components/controllers/screen-lifecycle";
10
+ import { NativeStackScreenLifecycleController } from "../../shared/components/controllers/native-stack-lifecycle";
11
+ import { RoutesProvider } from "../../shared/providers/routes.provider";
11
12
  import { ScreenTransitionProvider } from "../../shared/providers/screen-transition.provider";
12
13
  import { debounce } from "../utils/debounce";
13
14
  import { getModalRouteKeys } from "../utils/getModalRoutesKeys";
@@ -354,108 +355,114 @@ export function NativeStackView({
354
355
  return acc;
355
356
  }, {});
356
357
  const routes = state.routes.concat(state.preloadedRoutes);
357
- return /*#__PURE__*/_jsx(GestureHandlerRootView, {
358
- children: /*#__PURE__*/_jsx(SafeAreaProviderCompat, {
359
- children: /*#__PURE__*/_jsx(ScreenStack, {
360
- style: styles.container,
361
- children: routes.map((route, index) => {
362
- const descriptor = descriptors[route.key] ?? preloadedDescriptors[route.key];
363
- const isFocused = state.index === index;
364
- const isBelowFocused = state.index - 1 === index;
365
- const previousKey = state.routes[index - 1]?.key;
366
- const nextKey = state.routes[index + 1]?.key;
367
- const previousDescriptor = previousKey ? descriptors[previousKey] : undefined;
368
- const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;
369
- const isModal = modalRouteKeys.includes(route.key);
370
- const isPreloaded = preloadedDescriptors[route.key] !== undefined && descriptors[route.key] === undefined;
371
358
 
372
- // On Fabric, when screen is frozen, animated and reanimated values are not updated
373
- // due to component being unmounted. To avoid this, we don't freeze the previous screen there
374
- const shouldFreeze = isFabric() ? !isPreloaded && !isFocused && !isBelowFocused : !isPreloaded && !isFocused;
375
- return /*#__PURE__*/_jsx(SceneView, {
376
- index: index,
377
- focused: isFocused,
378
- shouldFreeze: shouldFreeze,
379
- descriptor: descriptor,
380
- previousDescriptor: previousDescriptor,
381
- nextDescriptor: nextDescriptor,
382
- isPresentationModal: isModal,
383
- isPreloaded: isPreloaded,
384
- onWillDisappear: () => {
385
- navigation.emit({
386
- type: "transitionStart",
387
- data: {
388
- closing: true
389
- },
390
- target: route.key
391
- });
392
- },
393
- onWillAppear: () => {
394
- navigation.emit({
395
- type: "transitionStart",
396
- data: {
397
- closing: false
398
- },
399
- target: route.key
400
- });
401
- },
402
- onAppear: () => {
403
- navigation.emit({
404
- type: "transitionEnd",
405
- data: {
406
- closing: false
407
- },
408
- target: route.key
409
- });
410
- },
411
- onDisappear: () => {
412
- navigation.emit({
413
- type: "transitionEnd",
414
- data: {
415
- closing: true
416
- },
417
- target: route.key
418
- });
419
- },
420
- onDismissed: event => {
421
- navigation.dispatch({
422
- ...StackActions.pop(event.nativeEvent.dismissCount),
423
- source: route.key,
424
- target: state.key
425
- });
426
- setNextDismissedKey(route.key);
427
- },
428
- onHeaderBackButtonClicked: () => {
429
- navigation.dispatch({
430
- ...StackActions.pop(),
431
- source: route.key,
432
- target: state.key
433
- });
434
- },
435
- onNativeDismissCancelled: event => {
436
- navigation.dispatch({
437
- ...StackActions.pop(event.nativeEvent.dismissCount),
438
- source: route.key,
439
- target: state.key
440
- });
441
- },
442
- onGestureCancel: () => {
443
- navigation.emit({
444
- type: "gestureCancel",
445
- target: route.key
446
- });
447
- },
448
- onSheetDetentChanged: event => {
449
- navigation.emit({
450
- type: "sheetDetentChange",
451
- target: route.key,
452
- data: {
453
- index: event.nativeEvent.index,
454
- stable: event.nativeEvent.isStable
455
- }
456
- });
457
- }
458
- }, route.key);
359
+ // Memoize route keys array for RoutesProvider
360
+ const routeKeys = React.useMemo(() => routes.map(route => route.key), [routes]);
361
+ return /*#__PURE__*/_jsx(RoutesProvider, {
362
+ routeKeys: routeKeys,
363
+ children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
364
+ children: /*#__PURE__*/_jsx(SafeAreaProviderCompat, {
365
+ children: /*#__PURE__*/_jsx(ScreenStack, {
366
+ style: styles.container,
367
+ children: routes.map((route, index) => {
368
+ const descriptor = descriptors[route.key] ?? preloadedDescriptors[route.key];
369
+ const isFocused = state.index === index;
370
+ const isBelowFocused = state.index - 1 === index;
371
+ const previousKey = state.routes[index - 1]?.key;
372
+ const nextKey = state.routes[index + 1]?.key;
373
+ const previousDescriptor = previousKey ? descriptors[previousKey] : undefined;
374
+ const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;
375
+ const isModal = modalRouteKeys.includes(route.key);
376
+ const isPreloaded = preloadedDescriptors[route.key] !== undefined && descriptors[route.key] === undefined;
377
+
378
+ // On Fabric, when screen is frozen, animated and reanimated values are not updated
379
+ // due to component being unmounted. To avoid this, we don't freeze the previous screen there
380
+ const shouldFreeze = isFabric() ? !isPreloaded && !isFocused && !isBelowFocused : !isPreloaded && !isFocused;
381
+ return /*#__PURE__*/_jsx(SceneView, {
382
+ index: index,
383
+ focused: isFocused,
384
+ shouldFreeze: shouldFreeze,
385
+ descriptor: descriptor,
386
+ previousDescriptor: previousDescriptor,
387
+ nextDescriptor: nextDescriptor,
388
+ isPresentationModal: isModal,
389
+ isPreloaded: isPreloaded,
390
+ onWillDisappear: () => {
391
+ navigation.emit({
392
+ type: "transitionStart",
393
+ data: {
394
+ closing: true
395
+ },
396
+ target: route.key
397
+ });
398
+ },
399
+ onWillAppear: () => {
400
+ navigation.emit({
401
+ type: "transitionStart",
402
+ data: {
403
+ closing: false
404
+ },
405
+ target: route.key
406
+ });
407
+ },
408
+ onAppear: () => {
409
+ navigation.emit({
410
+ type: "transitionEnd",
411
+ data: {
412
+ closing: false
413
+ },
414
+ target: route.key
415
+ });
416
+ },
417
+ onDisappear: () => {
418
+ navigation.emit({
419
+ type: "transitionEnd",
420
+ data: {
421
+ closing: true
422
+ },
423
+ target: route.key
424
+ });
425
+ },
426
+ onDismissed: event => {
427
+ navigation.dispatch({
428
+ ...StackActions.pop(event.nativeEvent.dismissCount),
429
+ source: route.key,
430
+ target: state.key
431
+ });
432
+ setNextDismissedKey(route.key);
433
+ },
434
+ onHeaderBackButtonClicked: () => {
435
+ navigation.dispatch({
436
+ ...StackActions.pop(),
437
+ source: route.key,
438
+ target: state.key
439
+ });
440
+ },
441
+ onNativeDismissCancelled: event => {
442
+ navigation.dispatch({
443
+ ...StackActions.pop(event.nativeEvent.dismissCount),
444
+ source: route.key,
445
+ target: state.key
446
+ });
447
+ },
448
+ onGestureCancel: () => {
449
+ navigation.emit({
450
+ type: "gestureCancel",
451
+ target: route.key
452
+ });
453
+ },
454
+ onSheetDetentChanged: event => {
455
+ navigation.emit({
456
+ type: "sheetDetentChange",
457
+ target: route.key,
458
+ data: {
459
+ index: event.nativeEvent.index,
460
+ stable: event.nativeEvent.isStable
461
+ }
462
+ });
463
+ }
464
+ }, route.key);
465
+ })
459
466
  })
460
467
  })
461
468
  })