react-native-screen-transitions 3.0.0-rc.3 → 3.0.0-rc.5
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 +22 -13
- package/lib/commonjs/blank-stack/components/screens.js.map +1 -1
- package/lib/commonjs/blank-stack/components/stack-view.js +42 -39
- package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js +11 -10
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.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 +81 -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 +36 -20
- 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 +22 -13
- package/lib/module/blank-stack/components/screens.js.map +1 -1
- package/lib/module/blank-stack/components/stack-view.js +42 -39
- package/lib/module/blank-stack/components/stack-view.js.map +1 -1
- package/lib/module/blank-stack/utils/with-stack-navigation/index.js +11 -10
- package/lib/module/blank-stack/utils/with-stack-navigation/index.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 +74 -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 +36 -21
- 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 +1 -3
- 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/blank-stack/utils/with-stack-navigation/index.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 +10 -7
- 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 +25 -19
- package/src/blank-stack/components/stack-view.tsx +57 -53
- package/src/blank-stack/types.ts +1 -24
- package/src/blank-stack/utils/with-stack-navigation/index.tsx +17 -3
- 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 +89 -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 +49 -48
- 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,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type GestureType } from "react-native-gesture-handler";
|
|
2
2
|
import type { SharedValue } from "react-native-reanimated";
|
|
3
3
|
import type { GestureStoreMap } from "../stores/gesture.store";
|
|
4
4
|
export type ScrollConfig = {
|
|
@@ -14,12 +14,15 @@ export interface GestureContextType {
|
|
|
14
14
|
nativeGesture: GestureType;
|
|
15
15
|
scrollConfig: SharedValue<ScrollConfig | null>;
|
|
16
16
|
gestureAnimationValues: GestureStoreMap;
|
|
17
|
-
|
|
17
|
+
ancestorContext: GestureContextType | null;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Provider that creates gesture handling for a screen.
|
|
21
|
+
* If the current screen doesn't have gestures enabled but an ancestor does,
|
|
22
|
+
* we pass through the ancestor's context so scrollable children can coordinate
|
|
23
|
+
* with the ancestor's gestures.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ScreenGestureProvider: import("react").FC<{
|
|
20
26
|
children: React.ReactNode;
|
|
21
|
-
};
|
|
22
|
-
export declare const ScreenGestureProvider: ({ children }: GestureProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
-
export declare const useGestureContext: () => GestureContextType;
|
|
24
|
-
export {};
|
|
27
|
+
}>, useGestureContext: () => GestureContextType | null;
|
|
25
28
|
//# sourceMappingURL=gestures.provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestures.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/gestures.provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"gestures.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/gestures.provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,WAAW,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,WAAW,CAAC;IACxB,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,sBAAsB,EAAE,eAAe,CAAC;IACxC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;GAKG;AACH,eAAO,MACN,qBAAqB;cAGT,KAAK,CAAC,SAAS;IAFF,iBAAiB,iCAyCzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-bounds.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/register-bounds.provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,KAAK,WAAW,EAIhB,KAAK,UAAU,EAGf,MAAM,yBAAyB,CAAC;AAgBjC,UAAU,yBAAyB;IAClC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,UAAU,2BAA2B;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrD,QAAQ,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAC;CAC1D;
|
|
1
|
+
{"version":3,"file":"register-bounds.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/register-bounds.provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,KAAK,WAAW,EAIhB,KAAK,UAAU,EAGf,MAAM,yBAAyB,CAAC;AAgBjC,UAAU,yBAAyB;IAClC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,UAAU,2BAA2B;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrD,QAAQ,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAC;CAC1D;AA6JD,QAAA,MAAQ,sBAAsB,iDA4H7B,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type AnimationStoreMap } from "../stores/animation.store";
|
|
2
|
+
interface RoutesProviderProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
routeKeys: string[];
|
|
5
|
+
}
|
|
6
|
+
interface RoutesContextValue {
|
|
7
|
+
/**
|
|
8
|
+
* Array of route keys for all routes in the stack, in order.
|
|
9
|
+
*/
|
|
10
|
+
routeKeys: string[];
|
|
11
|
+
}
|
|
12
|
+
declare const RoutesProvider: import("react").FC<RoutesProviderProps>, useRoutesContext: () => RoutesContextValue | null;
|
|
13
|
+
export { RoutesProvider, useRoutesContext };
|
|
14
|
+
/**
|
|
15
|
+
* Hook to get animation values for all screens from a given index onwards.
|
|
16
|
+
* Useful for computing accumulated progress across multiple screens.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useStackAnimationValues(currentRouteKey: string | undefined): AnimationStoreMap[];
|
|
19
|
+
//# sourceMappingURL=routes.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/routes.provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,iBAAiB,EACtB,MAAM,2BAA2B,CAAC;AAGnC,UAAU,mBAAmB;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,QAAA,MAAQ,cAAc,2CAAE,gBAAgB,iCAIrC,CAAC;AAEJ,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,eAAe,EAAE,MAAM,GAAG,SAAS,GACjC,iBAAiB,EAAE,CAoBrB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
2
|
import type { ComponentType } from "react";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Any } from "../types/utils.types";
|
|
4
4
|
import { type TransitionDescriptor } from "./keys.provider";
|
|
5
5
|
type Props<TDescriptor extends TransitionDescriptor> = {
|
|
6
6
|
previous?: TDescriptor;
|
|
7
7
|
current: TDescriptor;
|
|
8
8
|
next?: TDescriptor;
|
|
9
9
|
children: React.ReactNode;
|
|
10
|
-
LifecycleController: ComponentType<
|
|
10
|
+
LifecycleController: ComponentType<Any>;
|
|
11
11
|
};
|
|
12
12
|
export declare function ScreenTransitionProvider<TDescriptor extends TransitionDescriptor>({ previous, current, next, children, LifecycleController, }: Props<TDescriptor>): import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen-transition.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/screen-transition.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"screen-transition.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/screen-transition.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAgB,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,KAAK,KAAK,CAAC,WAAW,SAAS,oBAAoB,IAAI;IACtD,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;CACxC,CAAC;AAEF,wBAAgB,wBAAwB,CACvC,WAAW,SAAS,oBAAoB,EACvC,EACD,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,mBAAmB,GACnB,EAAE,KAAK,CAAC,WAAW,CAAC,2CAgBpB"}
|
|
@@ -60,6 +60,18 @@ export interface ScreenInterpolationProps {
|
|
|
60
60
|
* Combined progress of current and next screen transitions, ranging from 0-2.
|
|
61
61
|
*/
|
|
62
62
|
progress: number;
|
|
63
|
+
/**
|
|
64
|
+
* Accumulated progress from the current screen's position onwards in the stack.
|
|
65
|
+
* Unlike `progress` (0-2), this ranges from 0-N where N is the number of screens
|
|
66
|
+
* above the current screen. Each screen at index I sees stackProgress as the
|
|
67
|
+
* sum of all progress values from index I to the top of the stack.
|
|
68
|
+
*
|
|
69
|
+
* Example: With 4 screens pushed, screen at index 1 would see stackProgress = 3
|
|
70
|
+
* when all screens are fully transitioned.
|
|
71
|
+
*
|
|
72
|
+
* Falls back to `progress` when not in blank-stack.
|
|
73
|
+
*/
|
|
74
|
+
stackProgress: number;
|
|
63
75
|
/**
|
|
64
76
|
* Function that provides access to bounds builders for creating shared element transitions.
|
|
65
77
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/animation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAE/B;;OAEG;IACH,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IAEF;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACrC,KAAK,EAAE,wBAAwB,KAC3B,2BAA2B,CAAC;AAEjC,MAAM,MAAM,2BAA2B,GAAG;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;CACxB"}
|
|
1
|
+
{"version":3,"file":"animation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/animation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAE/B;;OAEG;IACH,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IAEF;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACrC,KAAK,EAAE,wBAAwB,KAC3B,2BAA2B,CAAC;AAEjC,MAAM,MAAM,2BAA2B,GAAG;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/state.types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,IAAI,CAAC;AACtB,eAAO,MAAM,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-stack-progress.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/compute-stack-progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,eAAO,MAAM,oBAAoB,GAChC,sBAAsB,iBAAiB,EAAE,EACzC,WAAU,MAAU,WAWpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-screen-transition.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/start-screen-transition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"start-screen-transition.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/start-screen-transition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAIlE,UAAU,0BAA0B;IACnC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,qBAAqB,GAAI,mEAMnC,0BAA0B,SA0C5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -8,54 +8,58 @@ import Animated, {
|
|
|
8
8
|
} from "react-native-reanimated";
|
|
9
9
|
import { Screen as RNSScreen } from "react-native-screens";
|
|
10
10
|
import { AnimationStore } from "../../shared/stores/animation.store";
|
|
11
|
+
import { useStackNavigationContext } from "../utils/with-stack-navigation";
|
|
11
12
|
|
|
12
13
|
interface ScreenProps {
|
|
13
14
|
routeKey: string;
|
|
14
15
|
index: number;
|
|
15
|
-
routesLength: number;
|
|
16
16
|
isPreloaded: boolean;
|
|
17
17
|
children: React.ReactNode;
|
|
18
18
|
freezeOnBlur?: boolean;
|
|
19
19
|
shouldFreeze?: boolean;
|
|
20
|
-
|
|
20
|
+
}
|
|
21
|
+
enum ScreenActivity {
|
|
22
|
+
INACTIVE = 0,
|
|
23
|
+
TRANSITIONING_OR_BELOW_TOP = 1,
|
|
24
|
+
ON_TOP = 2,
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
const EPSILON = 1e-5;
|
|
24
28
|
|
|
25
|
-
const STATE_INACTIVE = 0;
|
|
26
|
-
const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
|
|
27
|
-
const STATE_ON_TOP = 2;
|
|
28
|
-
|
|
29
29
|
const AnimatedScreen = Animated.createAnimatedComponent(RNSScreen);
|
|
30
30
|
|
|
31
31
|
export const Screen = ({
|
|
32
32
|
routeKey,
|
|
33
33
|
index,
|
|
34
|
-
routesLength,
|
|
35
34
|
isPreloaded,
|
|
36
|
-
activeScreensLimit,
|
|
37
35
|
children,
|
|
38
36
|
freezeOnBlur,
|
|
39
37
|
shouldFreeze,
|
|
40
38
|
}: ScreenProps) => {
|
|
39
|
+
const { activeScreensLimit, routes } = useStackNavigationContext();
|
|
40
|
+
const routesLength = routes.length;
|
|
41
|
+
|
|
41
42
|
const sceneProgress = AnimationStore.getAnimation(routeKey, "progress");
|
|
42
|
-
const
|
|
43
|
+
const sceneClosing = AnimationStore.getAnimation(routeKey, "closing");
|
|
44
|
+
const screenActivity = useSharedValue<ScreenActivity>(
|
|
45
|
+
ScreenActivity.TRANSITIONING_OR_BELOW_TOP,
|
|
46
|
+
);
|
|
43
47
|
|
|
44
48
|
useDerivedValue(() => {
|
|
45
49
|
if (!sceneProgress) {
|
|
46
|
-
screenActivity.set(
|
|
50
|
+
screenActivity.set(ScreenActivity.TRANSITIONING_OR_BELOW_TOP);
|
|
47
51
|
return;
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
if (index < routesLength - activeScreensLimit - 1 || isPreloaded) {
|
|
51
|
-
screenActivity.set(
|
|
55
|
+
screenActivity.set(ScreenActivity.INACTIVE);
|
|
52
56
|
} else {
|
|
53
57
|
const outputValue =
|
|
54
58
|
index === routesLength - 1
|
|
55
|
-
?
|
|
59
|
+
? ScreenActivity.ON_TOP
|
|
56
60
|
: index >= routesLength - activeScreensLimit
|
|
57
|
-
?
|
|
58
|
-
:
|
|
61
|
+
? ScreenActivity.TRANSITIONING_OR_BELOW_TOP
|
|
62
|
+
: ScreenActivity.INACTIVE;
|
|
59
63
|
|
|
60
64
|
const v = interpolate(
|
|
61
65
|
sceneProgress.get(),
|
|
@@ -64,8 +68,7 @@ export const Screen = ({
|
|
|
64
68
|
"clamp",
|
|
65
69
|
);
|
|
66
70
|
|
|
67
|
-
const next =
|
|
68
|
-
(Math.trunc(v) as 0 | 1 | 2) ?? STATE_TRANSITIONING_OR_BELOW_TOP;
|
|
71
|
+
const next = Math.trunc(v) ?? ScreenActivity.TRANSITIONING_OR_BELOW_TOP;
|
|
69
72
|
|
|
70
73
|
if (next !== screenActivity.get()) {
|
|
71
74
|
screenActivity.set(next);
|
|
@@ -74,9 +77,13 @@ export const Screen = ({
|
|
|
74
77
|
});
|
|
75
78
|
|
|
76
79
|
const animatedProps = useAnimatedProps(() => {
|
|
80
|
+
const activity = screenActivity.get();
|
|
77
81
|
return {
|
|
78
|
-
activityState:
|
|
79
|
-
shouldFreeze:
|
|
82
|
+
activityState: activity,
|
|
83
|
+
shouldFreeze: activity === ScreenActivity.INACTIVE && shouldFreeze,
|
|
84
|
+
pointerEvents: sceneClosing.get()
|
|
85
|
+
? ("none" as const)
|
|
86
|
+
: ("box-none" as const),
|
|
80
87
|
};
|
|
81
88
|
});
|
|
82
89
|
|
|
@@ -84,7 +91,6 @@ export const Screen = ({
|
|
|
84
91
|
<AnimatedScreen
|
|
85
92
|
enabled
|
|
86
93
|
style={StyleSheet.absoluteFill}
|
|
87
|
-
pointerEvents="box-none"
|
|
88
94
|
freezeOnBlur={freezeOnBlur}
|
|
89
95
|
animatedProps={animatedProps}
|
|
90
96
|
>
|
|
@@ -7,8 +7,9 @@ import * as React from "react";
|
|
|
7
7
|
import { StyleSheet } from "react-native";
|
|
8
8
|
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
9
9
|
import { ScreenContainer } from "react-native-screens";
|
|
10
|
-
import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/
|
|
10
|
+
import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/blank-stack-lifecycle";
|
|
11
11
|
import { FlagsProvider } from "../../shared/providers/flags.provider";
|
|
12
|
+
import { RoutesProvider } from "../../shared/providers/routes.provider";
|
|
12
13
|
import { ScreenTransitionProvider } from "../../shared/providers/screen-transition.provider";
|
|
13
14
|
import type { BlankStackDescriptor } from "../types";
|
|
14
15
|
import { withStackNavigationProvider } from "../utils/with-stack-navigation";
|
|
@@ -23,7 +24,9 @@ type SceneViewProps = {
|
|
|
23
24
|
descriptor: BlankStackDescriptor;
|
|
24
25
|
};
|
|
25
26
|
|
|
26
|
-
const SceneView = React.memo(({
|
|
27
|
+
const SceneView = React.memo(function SceneView({
|
|
28
|
+
descriptor,
|
|
29
|
+
}: SceneViewProps) {
|
|
27
30
|
const { route, navigation, render } = descriptor;
|
|
28
31
|
|
|
29
32
|
return (
|
|
@@ -37,63 +40,64 @@ const SceneView = React.memo(({ descriptor }: SceneViewProps) => {
|
|
|
37
40
|
});
|
|
38
41
|
|
|
39
42
|
export const StackView = withStackNavigationProvider(
|
|
40
|
-
({
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}) => {
|
|
43
|
+
({ descriptors, focusedIndex, routes, scenes, shouldShowFloatOverlay }) => {
|
|
44
|
+
// Memoize route keys array for ScenesProvider
|
|
45
|
+
const routeKeys = React.useMemo(
|
|
46
|
+
() => routes.map((route) => route.key),
|
|
47
|
+
[routes],
|
|
48
|
+
);
|
|
49
|
+
|
|
48
50
|
return (
|
|
49
51
|
<FlagsProvider TRANSITIONS_ALWAYS_ON>
|
|
50
|
-
<
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
<RoutesProvider routeKeys={routeKeys}>
|
|
53
|
+
<GestureHandlerRootView>
|
|
54
|
+
<SafeAreaProviderCompat>
|
|
55
|
+
{shouldShowFloatOverlay ? <Overlay.Float /> : null}
|
|
56
|
+
<ScreenContainer style={styles.container}>
|
|
57
|
+
{scenes.map((scene, sceneIndex) => {
|
|
58
|
+
const descriptor = scene.descriptor;
|
|
59
|
+
const route = scene.route;
|
|
60
|
+
const isFocused = focusedIndex === sceneIndex;
|
|
61
|
+
const isBelowFocused = focusedIndex - 1 === sceneIndex;
|
|
59
62
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
const previousDescriptor =
|
|
64
|
+
scenes[sceneIndex - 1]?.descriptor ?? undefined;
|
|
65
|
+
const nextDescriptor =
|
|
66
|
+
scenes[sceneIndex + 1]?.descriptor ?? undefined;
|
|
64
67
|
|
|
65
|
-
|
|
68
|
+
const isPreloaded = descriptors[route.key] === undefined;
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
shouldFreeze={shouldFreeze}
|
|
81
|
-
freezeOnBlur={descriptor.options.freezeOnBlur}
|
|
82
|
-
>
|
|
83
|
-
<ScreenTransitionProvider
|
|
84
|
-
previous={previousDescriptor}
|
|
85
|
-
current={descriptor}
|
|
86
|
-
next={nextDescriptor}
|
|
87
|
-
LifecycleController={BlankStackScreenLifecycleController}
|
|
70
|
+
// On Fabric, when screen is frozen, animated and reanimated values are not updated
|
|
71
|
+
// due to component being unmounted. To avoid this, we don't freeze the previous screen there
|
|
72
|
+
const shouldFreeze = isFabric()
|
|
73
|
+
? !isPreloaded && !isFocused && !isBelowFocused
|
|
74
|
+
: !isPreloaded && !isFocused;
|
|
75
|
+
return (
|
|
76
|
+
<Screen
|
|
77
|
+
key={route.key}
|
|
78
|
+
isPreloaded={isPreloaded}
|
|
79
|
+
index={sceneIndex}
|
|
80
|
+
routeKey={route.key}
|
|
81
|
+
shouldFreeze={shouldFreeze}
|
|
82
|
+
freezeOnBlur={descriptor.options.freezeOnBlur}
|
|
88
83
|
>
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
84
|
+
<ScreenTransitionProvider
|
|
85
|
+
previous={previousDescriptor}
|
|
86
|
+
current={descriptor}
|
|
87
|
+
next={nextDescriptor}
|
|
88
|
+
LifecycleController={
|
|
89
|
+
BlankStackScreenLifecycleController
|
|
90
|
+
}
|
|
91
|
+
>
|
|
92
|
+
<SceneView key={route.key} descriptor={descriptor} />
|
|
93
|
+
</ScreenTransitionProvider>
|
|
94
|
+
</Screen>
|
|
95
|
+
);
|
|
96
|
+
})}
|
|
97
|
+
</ScreenContainer>
|
|
98
|
+
</SafeAreaProviderCompat>
|
|
99
|
+
</GestureHandlerRootView>
|
|
100
|
+
</RoutesProvider>
|
|
97
101
|
</FlagsProvider>
|
|
98
102
|
);
|
|
99
103
|
},
|
package/src/blank-stack/types.ts
CHANGED
|
@@ -18,29 +18,7 @@ import type {
|
|
|
18
18
|
ScreenInterpolationProps,
|
|
19
19
|
} from "../shared/types/animation.types";
|
|
20
20
|
|
|
21
|
-
export type BlankStackNavigationEventMap = {
|
|
22
|
-
/**
|
|
23
|
-
* Event which fires when a transition animation starts.
|
|
24
|
-
*/
|
|
25
|
-
transitionStart: { data: { closing: boolean } };
|
|
26
|
-
/**
|
|
27
|
-
* Event which fires when a transition animation ends.
|
|
28
|
-
*/
|
|
29
|
-
transitionEnd: { data: { closing: boolean } };
|
|
30
|
-
/**
|
|
31
|
-
* Event which fires when a swipe back is canceled on iOS.
|
|
32
|
-
*/
|
|
33
|
-
gestureCancel: { data: undefined };
|
|
34
|
-
/**
|
|
35
|
-
* Event which fires when screen is in sheet presentation & it's detent changes.
|
|
36
|
-
*
|
|
37
|
-
* In payload it caries two fields:
|
|
38
|
-
*
|
|
39
|
-
* * `index` - current detent index in the `sheetAllowedDetents` array,
|
|
40
|
-
* * `stable` - on Android `false` value means that the user is dragging the sheet or it is settling; on iOS it is always `true`.
|
|
41
|
-
*/
|
|
42
|
-
sheetDetentChange: { data: { index: number; stable: boolean } };
|
|
43
|
-
};
|
|
21
|
+
export type BlankStackNavigationEventMap = {};
|
|
44
22
|
|
|
45
23
|
export type BlankStackNavigationProp<
|
|
46
24
|
ParamList extends ParamListBase,
|
|
@@ -132,7 +110,6 @@ export type BlankStackScreenTransitionConfig = ScreenTransitionConfig & {
|
|
|
132
110
|
* Whether to detach the previous screen from the view hierarchy to save memory.
|
|
133
111
|
* Set it to `false` if you need the previous screen to be seen through the active screen.
|
|
134
112
|
* Only applicable if `detachInactiveScreens` isn't set to `false`.
|
|
135
|
-
* Defaults to `false` for the last screen for modals, otherwise `true`.
|
|
136
113
|
*/
|
|
137
114
|
detachPreviousScreen?: boolean;
|
|
138
115
|
};
|
|
@@ -43,8 +43,8 @@ const { withStackNavigationProvider, useStackNavigationContext } =
|
|
|
43
43
|
};
|
|
44
44
|
}, [state.routes, state.descriptors]);
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
const value = useMemo(
|
|
47
|
+
() => ({
|
|
48
48
|
routes: state.routes,
|
|
49
49
|
focusedIndex: props.state.index,
|
|
50
50
|
descriptors: state.descriptors,
|
|
@@ -53,7 +53,21 @@ const { withStackNavigationProvider, useStackNavigationContext } =
|
|
|
53
53
|
handleCloseRoute,
|
|
54
54
|
scenes,
|
|
55
55
|
shouldShowFloatOverlay,
|
|
56
|
-
},
|
|
56
|
+
}),
|
|
57
|
+
[
|
|
58
|
+
state.routes,
|
|
59
|
+
state.descriptors,
|
|
60
|
+
props.state.index,
|
|
61
|
+
closingRouteKeys.shared,
|
|
62
|
+
activeScreensLimit,
|
|
63
|
+
handleCloseRoute,
|
|
64
|
+
scenes,
|
|
65
|
+
shouldShowFloatOverlay,
|
|
66
|
+
],
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
value,
|
|
57
71
|
};
|
|
58
72
|
});
|
|
59
73
|
|