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.
- package/lib/commonjs/blank-stack/components/screens.js +16 -11
- package/lib/commonjs/blank-stack/components/screens.js.map +1 -1
- package/lib/commonjs/blank-stack/components/stack-view.js +42 -36
- package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.native.js +110 -103
- package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js +72 -0
- package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js.map +1 -0
- package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js +79 -0
- package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js.map +1 -0
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +11 -1
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +11 -6
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +7 -7
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/commonjs/shared/providers/gestures.provider.js +32 -5
- package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/register-bounds.provider.js +4 -3
- package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/routes.provider.js +48 -0
- package/lib/commonjs/shared/providers/routes.provider.js.map +1 -0
- package/lib/commonjs/shared/providers/screen-transition.provider.js.map +1 -1
- package/lib/commonjs/shared/types/state.types.js +9 -0
- package/lib/commonjs/shared/types/state.types.js.map +1 -0
- package/lib/commonjs/shared/utils/animation/compute-stack-progress.js +20 -0
- package/lib/commonjs/shared/utils/animation/compute-stack-progress.js.map +1 -0
- package/lib/commonjs/shared/utils/animation/derivations.js +1 -1
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js +11 -11
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js.map +1 -1
- package/lib/module/blank-stack/components/screens.js +16 -11
- package/lib/module/blank-stack/components/screens.js.map +1 -1
- package/lib/module/blank-stack/components/stack-view.js +42 -36
- package/lib/module/blank-stack/components/stack-view.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.native.js +109 -102
- package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/module/shared/components/controllers/blank-stack-lifecycle.js +66 -0
- package/lib/module/shared/components/controllers/blank-stack-lifecycle.js.map +1 -0
- package/lib/module/shared/components/controllers/native-stack-lifecycle.js +73 -0
- package/lib/module/shared/components/controllers/native-stack-lifecycle.js.map +1 -0
- package/lib/module/shared/hooks/animation/use-screen-animation.js +11 -1
- package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js +11 -6
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js +7 -7
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/module/shared/providers/gestures.provider.js +31 -4
- package/lib/module/shared/providers/gestures.provider.js.map +1 -1
- package/lib/module/shared/providers/register-bounds.provider.js +4 -3
- package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/module/shared/providers/routes.provider.js +42 -0
- package/lib/module/shared/providers/routes.provider.js.map +1 -0
- package/lib/module/shared/providers/screen-transition.provider.js.map +1 -1
- package/lib/module/shared/types/state.types.js +5 -0
- package/lib/module/shared/types/state.types.js.map +1 -0
- package/lib/module/shared/utils/animation/compute-stack-progress.js +15 -0
- package/lib/module/shared/utils/animation/compute-stack-progress.js.map +1 -0
- package/lib/module/shared/utils/animation/derivations.js +1 -1
- package/lib/module/shared/utils/animation/start-screen-transition.js +11 -11
- package/lib/module/shared/utils/animation/start-screen-transition.js.map +1 -1
- package/lib/typescript/blank-stack/components/screens.d.ts.map +1 -1
- package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -1
- package/lib/typescript/blank-stack/types.d.ts +1 -39
- package/lib/typescript/blank-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
- package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts +8 -0
- package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts.map +1 -0
- package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts +8 -0
- package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts.map +1 -0
- package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +2 -2
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
- package/lib/typescript/shared/providers/gestures.provider.d.ts +8 -2
- package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/routes.provider.d.ts +19 -0
- package/lib/typescript/shared/providers/routes.provider.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen-transition.provider.d.ts +2 -2
- package/lib/typescript/shared/providers/screen-transition.provider.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +12 -0
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/state.types.d.ts +3 -0
- package/lib/typescript/shared/types/state.types.d.ts.map +1 -0
- package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts +3 -0
- package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts.map +1 -0
- package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/blank-stack/components/screens.tsx +21 -15
- package/src/blank-stack/components/stack-view.tsx +55 -44
- package/src/blank-stack/types.ts +1 -24
- package/src/native-stack/views/NativeStackView.native.tsx +121 -112
- package/src/shared/__tests__/bounds.store.test.ts +14 -36
- package/src/shared/components/controllers/blank-stack-lifecycle.tsx +70 -0
- package/src/shared/components/controllers/native-stack-lifecycle.tsx +87 -0
- package/src/shared/hooks/animation/use-screen-animation.tsx +11 -6
- package/src/shared/hooks/gestures/use-build-gestures.tsx +12 -6
- package/src/shared/hooks/gestures/use-scroll-registry.tsx +7 -7
- package/src/shared/providers/gestures.provider.tsx +34 -5
- package/src/shared/providers/register-bounds.provider.tsx +4 -3
- package/src/shared/providers/routes.provider.tsx +54 -0
- package/src/shared/providers/screen-transition.provider.tsx +2 -2
- package/src/shared/types/animation.types.ts +13 -0
- package/src/shared/types/state.types.ts +2 -0
- package/src/shared/utils/animation/compute-stack-progress.ts +16 -0
- package/src/shared/utils/animation/derivations.ts +1 -1
- package/src/shared/utils/animation/start-screen-transition.ts +13 -10
- package/lib/commonjs/shared/components/controllers/screen-lifecycle.js +0 -142
- package/lib/commonjs/shared/components/controllers/screen-lifecycle.js.map +0 -1
- package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js +0 -28
- package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js.map +0 -1
- package/lib/module/shared/components/controllers/screen-lifecycle.js +0 -136
- package/lib/module/shared/components/controllers/screen-lifecycle.js.map +0 -1
- package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js +0 -23
- package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js.map +0 -1
- package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts +0 -12
- package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts.map +0 -1
- package/lib/typescript/shared/hooks/gestures/use-parent-gesture-registry.d.ts +0 -6
- package/lib/typescript/shared/hooks/gestures/use-parent-gesture-registry.d.ts.map +0 -1
- package/src/shared/components/controllers/screen-lifecycle.tsx +0 -154
- 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":";;;;;;
|
|
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 @@
|
|
|
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":[]}
|
|
@@ -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.
|
|
32
|
+
closing.set(_state.TRUE);
|
|
32
33
|
}
|
|
33
34
|
if (!config) {
|
|
34
|
-
animating.
|
|
35
|
-
progress.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.
|
|
42
|
-
progress.
|
|
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
|
-
|
|
47
|
-
|
|
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,
|
|
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
|
|
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(
|
|
31
|
+
screenActivity.set(ScreenActivity.TRANSITIONING_OR_BELOW_TOP);
|
|
28
32
|
return;
|
|
29
33
|
}
|
|
30
34
|
if (index < routesLength - activeScreensLimit - 1 || isPreloaded) {
|
|
31
|
-
screenActivity.set(
|
|
35
|
+
screenActivity.set(ScreenActivity.INACTIVE);
|
|
32
36
|
} else {
|
|
33
|
-
const outputValue = index === routesLength - 1 ?
|
|
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) ??
|
|
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:
|
|
44
|
-
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","
|
|
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/
|
|
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(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
children:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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","
|
|
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":";;AAAA,SAASA,sBAAsB,QAAQ,4BAA4B;AACnE,SACCC,iBAAiB,EACjBC,sBAAsB,QAChB,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,mCAAmC,QAAQ,2DAA2D;AAC/G,SAASC,aAAa,QAAQ,uCAAuC;AACrE,SAASC,cAAc,QAAQ,wCAAwC;AACvE,SAASC,wBAAwB,QAAQ,mDAAmD;AAE5F,SAASC,2BAA2B,QAAQ,gCAAgC;AAC5E,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,MAAM,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEnC,SAASC,QAAQA,CAAA,EAAG;EACnB,OAAO,uBAAuB,IAAIC,MAAM;AACzC;AAMA,MAAMC,SAAS,gBAAGjB,KAAK,CAACkB,IAAI,CAAC,CAAC;EAAEC;AAA2B,CAAC,KAAK;EAChE,MAAM;IAAEC,KAAK;IAAEC,UAAU;IAAEC;EAAO,CAAC,GAAGH,UAAU;EAEhD,oBACCP,IAAA,CAACd,iBAAiB,CAACyB,QAAQ;IAACC,KAAK,EAAEH,UAAW;IAAAI,QAAA,eAC7CX,KAAA,CAACf,sBAAsB,CAACwB,QAAQ;MAACC,KAAK,EAAEJ,KAAM;MAAAK,QAAA,GAC5CN,UAAU,CAACO,OAAO,CAACC,WAAW,KAAK,QAAQ,iBAAIf,IAAA,CAACH,OAAO,CAACC,MAAM,IAAE,CAAC,EACjEY,MAAM,CAAC,CAAC;IAAA,CACuB;EAAC,CACP,CAAC;AAE/B,CAAC,CAAC;AAEF,OAAO,MAAMM,SAAS,GAAGpB,2BAA2B,CACnD,CAAC;EACAqB,kBAAkB;EAClBC,WAAW;EACXC,YAAY;EACZC,MAAM;EACNC,MAAM;EACNC;AACD,CAAC,KAAK;EACL;EACA,MAAMC,SAAS,GAAGnC,KAAK,CAACoC,OAAO,CAC9B,MAAMJ,MAAM,CAACK,GAAG,CAAEjB,KAAK,IAAKA,KAAK,CAACkB,GAAG,CAAC,EACtC,CAACN,MAAM,CACR,CAAC;EAED,oBACCpB,IAAA,CAACP,aAAa;IAACkC,qBAAqB;IAAAd,QAAA,eACnCb,IAAA,CAACN,cAAc;MAAC6B,SAAS,EAAEA,SAAU;MAAAV,QAAA,eACpCb,IAAA,CAACV,sBAAsB;QAAAuB,QAAA,eACtBX,KAAA,CAACjB,sBAAsB;UAAA4B,QAAA,GACrBS,sBAAsB,gBAAGtB,IAAA,CAACH,OAAO,CAAC+B,KAAK,IAAE,CAAC,GAAG,IAAI,eAClD5B,IAAA,CAACT,eAAe;YAACsC,KAAK,EAAEC,MAAM,CAACC,SAAU;YAAAlB,QAAA,EACvCQ,MAAM,CAACI,GAAG,CAAC,CAACO,KAAK,EAAEC,UAAU,KAAK;cAClC,MAAM1B,UAAU,GAAGyB,KAAK,CAACzB,UAAU;cACnC,MAAMC,KAAK,GAAGwB,KAAK,CAACxB,KAAK;cACzB,MAAM0B,SAAS,GAAGf,YAAY,KAAKc,UAAU;cAC7C,MAAME,cAAc,GAAGhB,YAAY,GAAG,CAAC,KAAKc,UAAU;cAEtD,MAAMG,kBAAkB,GACvBf,MAAM,CAACY,UAAU,GAAG,CAAC,CAAC,EAAE1B,UAAU,IAAI8B,SAAS;cAChD,MAAMC,cAAc,GACnBjB,MAAM,CAACY,UAAU,GAAG,CAAC,CAAC,EAAE1B,UAAU,IAAI8B,SAAS;cAEhD,MAAME,WAAW,GAAGrB,WAAW,CAACV,KAAK,CAACkB,GAAG,CAAC,KAAKW,SAAS;;cAExD;cACA;cACA,MAAMG,YAAY,GAAGrC,QAAQ,CAAC,CAAC,GAC5B,CAACoC,WAAW,IAAI,CAACL,SAAS,IAAI,CAACC,cAAc,GAC7C,CAACI,WAAW,IAAI,CAACL,SAAS;cAC7B,oBACClC,IAAA,CAACF,MAAM;gBAENyC,WAAW,EAAEA,WAAY;gBACzBE,KAAK,EAAER,UAAW;gBAClBhB,kBAAkB,EAAEA,kBAAmB;gBACvCyB,QAAQ,EAAElC,KAAK,CAACkB,GAAI;gBACpBiB,YAAY,EAAEvB,MAAM,CAACwB,MAAO;gBAC5BJ,YAAY,EAAEA,YAAa;gBAC3BK,YAAY,EAAEtC,UAAU,CAACO,OAAO,CAAC+B,YAAa;gBAAAhC,QAAA,eAE9Cb,IAAA,CAACL,wBAAwB;kBACxBmD,QAAQ,EAAEV,kBAAmB;kBAC7BW,OAAO,EAAExC,UAAW;kBACpByC,IAAI,EAAEV,cAAe;kBACrBW,mBAAmB,EAClBzD,mCACA;kBAAAqB,QAAA,eAEDb,IAAA,CAACK,SAAS;oBAAiBE,UAAU,EAAEA;kBAAW,GAAlCC,KAAK,CAACkB,GAA8B;gBAAC,CAC5B;cAAC,GAlBtBlB,KAAK,CAACkB,GAmBJ,CAAC;YAEX,CAAC;UAAC,CACc,CAAC;QAAA,CACK;MAAC,CACF;IAAC,CACV;EAAC,CACH,CAAC;AAElB,CACD,CAAC;AAED,MAAMI,MAAM,GAAGzC,UAAU,CAAC6D,MAAM,CAAC;EAChCnB,SAAS,EAAE;IAAEoB,IAAI,EAAE;EAAE;AACtB,CAAC,CAAC","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/
|
|
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
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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
|
})
|