react-native-screen-transitions 3.2.0-beta.1 → 3.2.0-beta.3
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/README.md +108 -37
- package/lib/commonjs/blank-stack/components/stack-view.js +0 -2
- package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
- package/lib/commonjs/blank-stack/components/stack-view.native.js +0 -2
- package/lib/commonjs/blank-stack/components/stack-view.native.js.map +1 -1
- package/lib/commonjs/component-stack/components/component-screen.js +3 -1
- package/lib/commonjs/component-stack/components/component-screen.js.map +1 -1
- package/lib/commonjs/component-stack/components/stack-view.js +19 -22
- package/lib/commonjs/component-stack/components/stack-view.js.map +1 -1
- package/lib/commonjs/component-stack/navigators/create-component-stack-navigator.js +39 -9
- package/lib/commonjs/component-stack/navigators/create-component-stack-navigator.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.native.js +3 -3
- package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/variations/float-overlay.js +1 -6
- package/lib/commonjs/shared/components/overlay/variations/float-overlay.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/variations/overlay-host.js +16 -64
- package/lib/commonjs/shared/components/overlay/variations/overlay-host.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/variations/screen-overlay.js +5 -8
- package/lib/commonjs/shared/components/overlay/variations/screen-overlay.js.map +1 -1
- package/lib/commonjs/shared/components/root-transition-aware.js +5 -1
- package/lib/commonjs/shared/components/root-transition-aware.js.map +1 -1
- package/lib/commonjs/shared/components/screen-lifecycle.js +153 -0
- package/lib/commonjs/shared/components/screen-lifecycle.js.map +1 -0
- package/lib/commonjs/shared/constants.js +3 -2
- package/lib/commonjs/shared/constants.js.map +1 -1
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js +45 -0
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -0
- package/lib/commonjs/shared/hooks/use-stable-callback-value.js +0 -2
- package/lib/commonjs/shared/hooks/use-stable-callback-value.js.map +1 -1
- package/lib/commonjs/shared/hooks/use-stack-pointer-events.js +23 -0
- package/lib/commonjs/shared/hooks/use-stack-pointer-events.js.map +1 -0
- package/lib/commonjs/shared/index.js +7 -0
- package/lib/commonjs/shared/index.js.map +1 -1
- package/lib/commonjs/shared/providers/gestures.provider.js +3 -0
- package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/keys.provider.js +0 -2
- package/lib/commonjs/shared/providers/screen/keys.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/screen-composer.js +3 -3
- package/lib/commonjs/shared/providers/screen/screen-composer.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles.provider.js +1 -1
- package/lib/commonjs/shared/providers/screen/styles.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/core.provider.js +1 -0
- package/lib/commonjs/shared/providers/stack/core.provider.js.map +1 -1
- package/lib/commonjs/shared/types/index.js +3 -3
- package/lib/commonjs/shared/types/index.js.map +1 -1
- package/lib/commonjs/shared/types/stack.types.js +5 -0
- package/lib/commonjs/shared/types/stack.types.js.map +1 -1
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js +5 -5
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/index.js.map +1 -1
- package/lib/module/blank-stack/components/stack-view.js +0 -2
- package/lib/module/blank-stack/components/stack-view.js.map +1 -1
- package/lib/module/blank-stack/components/stack-view.native.js +0 -2
- package/lib/module/blank-stack/components/stack-view.native.js.map +1 -1
- package/lib/module/component-stack/components/component-screen.js +3 -1
- package/lib/module/component-stack/components/component-screen.js.map +1 -1
- package/lib/module/component-stack/components/stack-view.js +19 -22
- package/lib/module/component-stack/components/stack-view.js.map +1 -1
- package/lib/module/component-stack/navigators/create-component-stack-navigator.js +38 -9
- package/lib/module/component-stack/navigators/create-component-stack-navigator.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.native.js +3 -3
- package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/module/shared/components/overlay/variations/float-overlay.js +1 -6
- package/lib/module/shared/components/overlay/variations/float-overlay.js.map +1 -1
- package/lib/module/shared/components/overlay/variations/overlay-host.js +16 -64
- package/lib/module/shared/components/overlay/variations/overlay-host.js.map +1 -1
- package/lib/module/shared/components/overlay/variations/screen-overlay.js +5 -8
- package/lib/module/shared/components/overlay/variations/screen-overlay.js.map +1 -1
- package/lib/module/shared/components/root-transition-aware.js +5 -1
- package/lib/module/shared/components/root-transition-aware.js.map +1 -1
- package/lib/module/shared/components/screen-lifecycle.js +147 -0
- package/lib/module/shared/components/screen-lifecycle.js.map +1 -0
- package/lib/module/shared/constants.js +2 -1
- package/lib/module/shared/constants.js.map +1 -1
- package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/navigation/use-screen-state.js +41 -0
- package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -0
- package/lib/module/shared/hooks/use-stable-callback-value.js +0 -3
- package/lib/module/shared/hooks/use-stable-callback-value.js.map +1 -1
- package/lib/module/shared/hooks/use-stack-pointer-events.js +20 -0
- package/lib/module/shared/hooks/use-stack-pointer-events.js.map +1 -0
- package/lib/module/shared/index.js +1 -0
- package/lib/module/shared/index.js.map +1 -1
- package/lib/module/shared/providers/gestures.provider.js +3 -0
- package/lib/module/shared/providers/gestures.provider.js.map +1 -1
- package/lib/module/shared/providers/screen/keys.provider.js +0 -2
- package/lib/module/shared/providers/screen/keys.provider.js.map +1 -1
- package/lib/module/shared/providers/screen/screen-composer.js +3 -3
- package/lib/module/shared/providers/screen/screen-composer.js.map +1 -1
- package/lib/module/shared/providers/screen/styles.provider.js +1 -1
- package/lib/module/shared/providers/screen/styles.provider.js.map +1 -1
- package/lib/module/shared/providers/stack/core.provider.js +1 -0
- package/lib/module/shared/providers/stack/core.provider.js.map +1 -1
- package/lib/module/shared/types/index.js +1 -1
- package/lib/module/shared/types/index.js.map +1 -1
- package/lib/module/shared/types/stack.types.js +6 -0
- package/lib/module/shared/types/stack.types.js.map +1 -1
- package/lib/module/shared/utils/animation/start-screen-transition.js +1 -1
- package/lib/module/shared/utils/animation/start-screen-transition.js.map +1 -1
- package/lib/module/shared/utils/bounds/index.js.map +1 -1
- package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -1
- package/lib/typescript/blank-stack/components/stack-view.native.d.ts.map +1 -1
- package/lib/typescript/blank-stack/types.d.ts +4 -8
- package/lib/typescript/blank-stack/types.d.ts.map +1 -1
- package/lib/typescript/component-stack/components/component-screen.d.ts.map +1 -1
- package/lib/typescript/component-stack/components/stack-view.d.ts.map +1 -1
- package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts +9 -2
- package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts.map +1 -1
- package/lib/typescript/component-stack/types.d.ts +4 -8
- package/lib/typescript/component-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +2 -3
- package/lib/typescript/native-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/overlay/variations/float-overlay.d.ts.map +1 -1
- package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts +1 -6
- package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -1
- package/lib/typescript/shared/components/overlay/variations/screen-overlay.d.ts +4 -0
- package/lib/typescript/shared/components/overlay/variations/screen-overlay.d.ts.map +1 -1
- package/lib/typescript/shared/components/root-transition-aware.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-lifecycle.d.ts +9 -0
- package/lib/typescript/shared/components/screen-lifecycle.d.ts.map +1 -0
- package/lib/typescript/shared/constants.d.ts +2 -1
- package/lib/typescript/shared/constants.d.ts.map +1 -1
- 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.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts +40 -0
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -0
- package/lib/typescript/shared/hooks/use-stable-callback-value.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/use-stack-pointer-events.d.ts +10 -0
- package/lib/typescript/shared/hooks/use-stack-pointer-events.d.ts.map +1 -0
- package/lib/typescript/shared/index.d.ts +21 -20
- package/lib/typescript/shared/index.d.ts.map +1 -1
- package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/keys.provider.d.ts +2 -3
- package/lib/typescript/shared/providers/screen/keys.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/screen-composer.d.ts +1 -3
- package/lib/typescript/shared/providers/screen/screen-composer.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/core.provider.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +2 -6
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/index.d.ts +2 -2
- package/lib/typescript/shared/types/index.d.ts.map +1 -1
- package/lib/typescript/shared/types/overlay.types.d.ts +21 -0
- package/lib/typescript/shared/types/overlay.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/screen.types.d.ts +5 -4
- package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/stack.types.d.ts +11 -1
- package/lib/typescript/shared/types/stack.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +1 -1
- package/lib/typescript/shared/utils/bounds/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/blank-stack/components/stack-view.native.tsx +0 -2
- package/src/blank-stack/components/stack-view.tsx +0 -2
- package/src/blank-stack/types.ts +6 -8
- package/src/component-stack/components/component-screen.tsx +3 -3
- package/src/component-stack/components/stack-view.tsx +21 -25
- package/src/component-stack/navigators/create-component-stack-navigator.tsx +68 -37
- package/src/component-stack/types.ts +7 -8
- package/src/native-stack/types.ts +2 -3
- package/src/native-stack/views/NativeStackView.native.tsx +2 -3
- package/src/shared/components/overlay/variations/float-overlay.tsx +2 -8
- package/src/shared/components/overlay/variations/overlay-host.tsx +18 -84
- package/src/shared/components/overlay/variations/screen-overlay.tsx +6 -15
- package/src/shared/components/root-transition-aware.tsx +7 -2
- package/src/shared/components/screen-lifecycle.tsx +168 -0
- package/src/shared/constants.ts +3 -1
- package/src/shared/hooks/animation/use-screen-animation.tsx +3 -3
- package/src/shared/hooks/gestures/use-build-gestures.tsx +0 -2
- package/src/shared/hooks/navigation/use-screen-state.tsx +99 -0
- package/src/shared/hooks/use-stable-callback-value.ts +0 -1
- package/src/shared/hooks/use-stack-pointer-events.ts +15 -0
- package/src/shared/index.ts +4 -0
- package/src/shared/providers/gestures.provider.tsx +5 -1
- package/src/shared/providers/screen/keys.provider.tsx +1 -9
- package/src/shared/providers/screen/screen-composer.tsx +3 -5
- package/src/shared/providers/screen/styles.provider.tsx +1 -1
- package/src/shared/providers/stack/core.provider.tsx +6 -1
- package/src/shared/types/animation.types.ts +2 -6
- package/src/shared/types/index.ts +2 -7
- package/src/shared/types/overlay.types.ts +23 -0
- package/src/shared/types/screen.types.ts +5 -4
- package/src/shared/types/stack.types.ts +17 -1
- package/src/shared/utils/animation/start-screen-transition.ts +1 -1
- package/src/shared/utils/bounds/index.ts +6 -1
- package/lib/commonjs/component-stack/components/component-screen-container.js +0 -23
- package/lib/commonjs/component-stack/components/component-screen-container.js.map +0 -1
- package/lib/commonjs/native-stack/controllers/native-stack-lifecycle.js +0 -90
- package/lib/commonjs/native-stack/controllers/native-stack-lifecycle.js.map +0 -1
- package/lib/commonjs/shared/controller/managed-lifecycle.js +0 -78
- package/lib/commonjs/shared/controller/managed-lifecycle.js.map +0 -1
- package/lib/commonjs/shared/types/state.types.js +0 -9
- package/lib/commonjs/shared/types/state.types.js.map +0 -1
- package/lib/module/component-stack/components/component-screen-container.js +0 -18
- package/lib/module/component-stack/components/component-screen-container.js.map +0 -1
- package/lib/module/native-stack/controllers/native-stack-lifecycle.js +0 -83
- package/lib/module/native-stack/controllers/native-stack-lifecycle.js.map +0 -1
- package/lib/module/shared/controller/managed-lifecycle.js +0 -72
- package/lib/module/shared/controller/managed-lifecycle.js.map +0 -1
- package/lib/module/shared/types/state.types.js +0 -5
- package/lib/module/shared/types/state.types.js.map +0 -1
- package/lib/typescript/component-stack/components/component-screen-container.d.ts +0 -6
- package/lib/typescript/component-stack/components/component-screen-container.d.ts.map +0 -1
- package/lib/typescript/native-stack/controllers/native-stack-lifecycle.d.ts +0 -8
- package/lib/typescript/native-stack/controllers/native-stack-lifecycle.d.ts.map +0 -1
- package/lib/typescript/shared/controller/managed-lifecycle.d.ts +0 -9
- package/lib/typescript/shared/controller/managed-lifecycle.d.ts.map +0 -1
- package/lib/typescript/shared/types/state.types.d.ts +0 -3
- package/lib/typescript/shared/types/state.types.d.ts.map +0 -1
- package/src/component-stack/components/component-screen-container.tsx +0 -15
- package/src/native-stack/controllers/native-stack-lifecycle.tsx +0 -96
- package/src/shared/controller/managed-lifecycle.tsx +0 -73
- package/src/shared/types/state.types.ts +0 -2
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Route } from "@react-navigation/native";
|
|
2
2
|
import type { DerivedValue } from "react-native-reanimated";
|
|
3
3
|
import type { OverlayInterpolationProps, ScreenInterpolationProps } from "./animation.types";
|
|
4
|
+
import type { ScreenTransitionConfig } from "./screen.types";
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Overlay mode is no longer needed. Overlays now always render as "float" mode.
|
|
7
|
+
* For per-screen overlays, render an absolute-positioned view directly in your screen component
|
|
8
|
+
* and use `useScreenAnimation()` to access animation values.
|
|
9
|
+
*/
|
|
4
10
|
export type OverlayMode = "float" | "screen";
|
|
5
11
|
/**
|
|
6
12
|
* Props passed to overlay components.
|
|
@@ -27,12 +33,27 @@ export type OverlayProps<TNavigation = unknown> = {
|
|
|
27
33
|
* Navigation prop for the overlay.
|
|
28
34
|
*/
|
|
29
35
|
navigation: TNavigation;
|
|
36
|
+
/**
|
|
37
|
+
* Screen options for the currently focused screen.
|
|
38
|
+
*/
|
|
39
|
+
options: ScreenTransitionConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Stack progress relative to the overlay's position.
|
|
42
|
+
* This is equivalent to `useScreenAnimation().stackProgress`.
|
|
43
|
+
*/
|
|
44
|
+
progress: DerivedValue<number>;
|
|
30
45
|
/**
|
|
31
46
|
* Animation values for the overlay.
|
|
47
|
+
*
|
|
48
|
+
* @deprecated Use `progress` prop or `useScreenAnimation()` instead.
|
|
49
|
+
* This prop will be removed in a future version.
|
|
32
50
|
*/
|
|
33
51
|
overlayAnimation: DerivedValue<OverlayInterpolationProps>;
|
|
34
52
|
/**
|
|
35
53
|
* Animation values for the screen.
|
|
54
|
+
*
|
|
55
|
+
* @deprecated Use `useScreenAnimation()` hook directly instead.
|
|
56
|
+
* This prop will be removed in a future version.
|
|
36
57
|
*/
|
|
37
58
|
screenAnimation: DerivedValue<ScreenInterpolationProps>;
|
|
38
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/overlay.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EACX,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"overlay.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/overlay.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EACX,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,WAAW,GAAG,OAAO,IAAI;IACjD;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAExB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,sBAAsB,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAE/B;;;;;OAKG;IACH,gBAAgB,EAAE,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAE1D;;;;;OAKG;IACH,eAAe,EAAE,YAAY,CAAC,wBAAwB,CAAC,CAAC;CACxD,CAAC"}
|
|
@@ -93,10 +93,11 @@ export type ScreenTransitionConfig = {
|
|
|
93
93
|
overlay?: (props: OverlayProps) => React.ReactNode;
|
|
94
94
|
/**
|
|
95
95
|
* How the overlay is positioned relative to screens.
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
96
|
+
*
|
|
97
|
+
* @deprecated This option is no longer needed. Overlays now always render as "float" mode
|
|
98
|
+
* (single persistent overlay above all screens). For per-screen overlays, render an
|
|
99
|
+
* absolute-positioned view directly in your screen component and use `useScreenAnimation()`
|
|
100
|
+
* to access animation values.
|
|
100
101
|
*/
|
|
101
102
|
overlayMode?: OverlayMode;
|
|
102
103
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnD
|
|
1
|
+
{"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;OASG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC7C,CAAC"}
|
|
@@ -18,8 +18,10 @@ export interface BaseStackNavigation {
|
|
|
18
18
|
key: string;
|
|
19
19
|
}>;
|
|
20
20
|
key: string;
|
|
21
|
+
index: number;
|
|
21
22
|
};
|
|
22
23
|
dispatch: (action: any) => void;
|
|
24
|
+
addListener?: (event: any, callback: any) => () => void;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Base descriptor interface - generic over route, navigation, and options.
|
|
@@ -48,8 +50,16 @@ export interface BaseStackState<TRoute extends BaseStackRoute = BaseStackRoute>
|
|
|
48
50
|
index: number;
|
|
49
51
|
key: string;
|
|
50
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Generic descriptor map - keyed by route key.
|
|
55
|
+
* Use this instead of defining stack-specific DescriptorMap types.
|
|
56
|
+
*/
|
|
57
|
+
export type DescriptorMap<TDescriptor extends BaseStackDescriptor = BaseStackDescriptor> = {
|
|
58
|
+
[key: string]: TDescriptor;
|
|
59
|
+
};
|
|
51
60
|
export declare enum StackType {
|
|
52
61
|
NATIVE = "native",
|
|
53
|
-
BLANK = "blank"
|
|
62
|
+
BLANK = "blank",
|
|
63
|
+
COMPONENT = "component"
|
|
54
64
|
}
|
|
55
65
|
//# sourceMappingURL=stack.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/stack.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"stack.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/stack.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,MAAM;QACf,MAAM,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,MAAM,IAAI,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CACnC,MAAM,SAAS,cAAc,GAAG,cAAc,EAC9C,WAAW,SAAS,mBAAmB,GAAG,mBAAmB,EAC7D,QAAQ,SAAS,sBAAsB,GAAG,sBAAsB;IAEhE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc,CAC9B,WAAW,SAAS,mBAAmB,GAAG,mBAAmB;IAE7D,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,UAAU,EAAE,WAAW,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc,CAC9B,MAAM,SAAS,cAAc,GAAG,cAAc;IAE9C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,CACxB,WAAW,SAAS,mBAAmB,GAAG,mBAAmB,IAC1D;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC3B,CAAC;AAEF,oBAAY,SAAS;IACpB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,SAAS,cAAc;CACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-screen-transition.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/start-screen-transition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start-screen-transition.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/start-screen-transition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/bounds/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,wBAAwB,EAExB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,0BAA0B,CAAC;AAkK3E,eAAO,MAAM,YAAY,GACxB,OAAO,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,KAC7C,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/bounds/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,wBAAwB,EAExB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,0BAA0B,CAAC;AAkK3E,eAAO,MAAM,YAAY,GACxB,OAAO,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,KAC7C,cA+EF,CAAC"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { Fragment } from "react";
|
|
7
7
|
import { Overlay } from "../../shared/components/overlay";
|
|
8
|
-
import { ManagedLifecycle } from "../../shared/controller/managed-lifecycle";
|
|
9
8
|
import { ScreenComposer } from "../../shared/providers/screen/screen-composer";
|
|
10
9
|
import { withStackCore } from "../../shared/providers/stack/core.provider";
|
|
11
10
|
import { withManagedStack } from "../../shared/providers/stack/managed.provider";
|
|
@@ -79,7 +78,6 @@ export const StackView = withStackCore(
|
|
|
79
78
|
previous={previousDescriptor}
|
|
80
79
|
current={descriptor}
|
|
81
80
|
next={nextDescriptor}
|
|
82
|
-
LifecycleController={ManagedLifecycle}
|
|
83
81
|
>
|
|
84
82
|
<SceneView key={route.key} descriptor={descriptor} />
|
|
85
83
|
</ScreenComposer>
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { Fragment } from "react";
|
|
7
7
|
import { Overlay } from "../../shared/components/overlay";
|
|
8
|
-
import { ManagedLifecycle } from "../../shared/controller/managed-lifecycle";
|
|
9
8
|
import { ScreenComposer } from "../../shared/providers/screen/screen-composer";
|
|
10
9
|
import { withStackCore } from "../../shared/providers/stack/core.provider";
|
|
11
10
|
import { withManagedStack } from "../../shared/providers/stack/managed.provider";
|
|
@@ -79,7 +78,6 @@ export const StackView = withStackCore(
|
|
|
79
78
|
previous={previousDescriptor}
|
|
80
79
|
current={descriptor}
|
|
81
80
|
next={nextDescriptor}
|
|
82
|
-
LifecycleController={ManagedLifecycle}
|
|
83
81
|
>
|
|
84
82
|
<SceneView key={route.key} descriptor={descriptor} />
|
|
85
83
|
</ScreenComposer>
|
package/src/blank-stack/types.ts
CHANGED
|
@@ -4,7 +4,6 @@ import type {
|
|
|
4
4
|
NavigationHelpers,
|
|
5
5
|
NavigationProp,
|
|
6
6
|
ParamListBase,
|
|
7
|
-
Route,
|
|
8
7
|
RouteProp,
|
|
9
8
|
StackActionHelpers,
|
|
10
9
|
StackNavigationState,
|
|
@@ -13,6 +12,10 @@ import type {
|
|
|
13
12
|
} from "@react-navigation/native";
|
|
14
13
|
import type { ScreenTransitionConfig } from "../shared";
|
|
15
14
|
import type { OverlayProps } from "../shared/types/overlay.types";
|
|
15
|
+
import type {
|
|
16
|
+
BaseStackScene,
|
|
17
|
+
DescriptorMap,
|
|
18
|
+
} from "../shared/types/stack.types";
|
|
16
19
|
|
|
17
20
|
export type BlankStackNavigationEventMap = {};
|
|
18
21
|
|
|
@@ -52,10 +55,7 @@ export type BlankStackNavigationHelpers = NavigationHelpers<
|
|
|
52
55
|
BlankStackNavigationEventMap
|
|
53
56
|
>;
|
|
54
57
|
|
|
55
|
-
export type BlankStackScene =
|
|
56
|
-
route: Route<string>;
|
|
57
|
-
descriptor: BlankStackDescriptor;
|
|
58
|
-
};
|
|
58
|
+
export type BlankStackScene = BaseStackScene<BlankStackDescriptor>;
|
|
59
59
|
|
|
60
60
|
type BlankStackNavigationConfig = {
|
|
61
61
|
DISABLE_NATIVE_SCREENS?: boolean;
|
|
@@ -106,6 +106,4 @@ export type BlankStackDescriptor = Descriptor<
|
|
|
106
106
|
RouteProp<ParamListBase>
|
|
107
107
|
>;
|
|
108
108
|
|
|
109
|
-
export type BlankStackDescriptorMap =
|
|
110
|
-
[key: string]: BlankStackDescriptor;
|
|
111
|
-
};
|
|
109
|
+
export type BlankStackDescriptorMap = DescriptorMap<BlankStackDescriptor>;
|
|
@@ -11,6 +11,8 @@ interface ScreenProps {
|
|
|
11
11
|
routeKey: string;
|
|
12
12
|
children: React.ReactNode;
|
|
13
13
|
}
|
|
14
|
+
const POINT_NONE = "none" as const;
|
|
15
|
+
const POINT_BOX_NONE = "box-none" as const;
|
|
14
16
|
|
|
15
17
|
export const ComponentScreen = ({ routeKey, children }: ScreenProps) => {
|
|
16
18
|
const sceneClosing = AnimationStore.getAnimation(routeKey, "closing");
|
|
@@ -18,9 +20,7 @@ export const ComponentScreen = ({ routeKey, children }: ScreenProps) => {
|
|
|
18
20
|
|
|
19
21
|
const animatedProps = useAnimatedProps(() => {
|
|
20
22
|
return {
|
|
21
|
-
pointerEvents: sceneClosing.get()
|
|
22
|
-
? ("none" as const)
|
|
23
|
-
: ("box-none" as const),
|
|
23
|
+
pointerEvents: sceneClosing.get() ? POINT_NONE : POINT_BOX_NONE,
|
|
24
24
|
};
|
|
25
25
|
});
|
|
26
26
|
|
|
@@ -5,16 +5,15 @@ import {
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { Fragment } from "react";
|
|
7
7
|
import { Overlay } from "../../shared/components/overlay";
|
|
8
|
-
import { ManagedLifecycle } from "../../shared/controller/managed-lifecycle";
|
|
9
8
|
import { ScreenComposer } from "../../shared/providers/screen/screen-composer";
|
|
10
9
|
import { withStackCore } from "../../shared/providers/stack/core.provider";
|
|
11
10
|
import { withManagedStack } from "../../shared/providers/stack/managed.provider";
|
|
11
|
+
import { StackType } from "../../shared/types/stack.types";
|
|
12
12
|
import type {
|
|
13
13
|
ComponentStackDescriptor,
|
|
14
14
|
ComponentStackNavigationHelpers,
|
|
15
15
|
} from "../types";
|
|
16
16
|
import { ComponentScreen } from "./component-screen";
|
|
17
|
-
import { ComponentScreenContainer } from "./component-screen-container";
|
|
18
17
|
|
|
19
18
|
type SceneViewProps = {
|
|
20
19
|
descriptor: ComponentStackDescriptor;
|
|
@@ -36,37 +35,34 @@ const SceneView = React.memo(function SceneView({
|
|
|
36
35
|
});
|
|
37
36
|
|
|
38
37
|
export const StackView = withStackCore(
|
|
39
|
-
{ TRANSITIONS_ALWAYS_ON: true },
|
|
38
|
+
{ TRANSITIONS_ALWAYS_ON: true, STACK_TYPE: StackType.COMPONENT },
|
|
40
39
|
withManagedStack<ComponentStackDescriptor, ComponentStackNavigationHelpers>(
|
|
41
40
|
({ scenes, shouldShowFloatOverlay }) => {
|
|
42
41
|
return (
|
|
43
42
|
<Fragment>
|
|
44
43
|
{shouldShowFloatOverlay ? <Overlay.Float /> : null}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const route = scene.route;
|
|
45
|
+
{scenes.map((scene, sceneIndex) => {
|
|
46
|
+
const descriptor = scene.descriptor;
|
|
47
|
+
const route = scene.route;
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
const previousDescriptor =
|
|
50
|
+
scenes[sceneIndex - 1]?.descriptor ?? undefined;
|
|
51
|
+
const nextDescriptor =
|
|
52
|
+
scenes[sceneIndex + 1]?.descriptor ?? undefined;
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
})}
|
|
69
|
-
</ComponentScreenContainer>
|
|
54
|
+
return (
|
|
55
|
+
<ComponentScreen key={route.key} routeKey={route.key}>
|
|
56
|
+
<ScreenComposer
|
|
57
|
+
previous={previousDescriptor}
|
|
58
|
+
current={descriptor}
|
|
59
|
+
next={nextDescriptor}
|
|
60
|
+
>
|
|
61
|
+
<SceneView key={route.key} descriptor={descriptor} />
|
|
62
|
+
</ScreenComposer>
|
|
63
|
+
</ComponentScreen>
|
|
64
|
+
);
|
|
65
|
+
})}
|
|
70
66
|
</Fragment>
|
|
71
67
|
);
|
|
72
68
|
},
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
type TypedNavigator,
|
|
13
13
|
useNavigationBuilder,
|
|
14
14
|
} from "@react-navigation/native";
|
|
15
|
+
import * as React from "react";
|
|
15
16
|
import { StackView } from "../components/stack-view";
|
|
16
17
|
import type {
|
|
17
18
|
ComponentStackNavigationEventMap,
|
|
@@ -20,45 +21,75 @@ import type {
|
|
|
20
21
|
ComponentStackNavigatorProps,
|
|
21
22
|
} from "../types";
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Context to detect if we're inside a ComponentStack.
|
|
26
|
+
* Used to avoid double-wrapping nested ComponentStacks in NavigationIndependentTree.
|
|
27
|
+
*/
|
|
28
|
+
const ComponentStackContext = React.createContext<boolean>(false);
|
|
29
|
+
ComponentStackContext.displayName = "ComponentStackContext";
|
|
30
|
+
|
|
31
|
+
const ComponentStackNavigatorInner = React.memo(
|
|
32
|
+
function ComponentStackNavigatorInner({
|
|
33
|
+
id,
|
|
34
|
+
initialRouteName,
|
|
35
|
+
children,
|
|
36
|
+
layout,
|
|
37
|
+
screenListeners,
|
|
38
|
+
screenOptions,
|
|
39
|
+
screenLayout,
|
|
40
|
+
...rest
|
|
41
|
+
}: ComponentStackNavigatorProps) {
|
|
42
|
+
const { state, describe, descriptors, navigation, NavigationContent } =
|
|
43
|
+
useNavigationBuilder<
|
|
44
|
+
StackNavigationState<ParamListBase>,
|
|
45
|
+
StackRouterOptions,
|
|
46
|
+
StackActionHelpers<ParamListBase>,
|
|
47
|
+
ComponentStackNavigationOptions,
|
|
48
|
+
ComponentStackNavigationEventMap
|
|
49
|
+
>(StackRouter, {
|
|
50
|
+
id,
|
|
51
|
+
initialRouteName,
|
|
52
|
+
children,
|
|
53
|
+
layout,
|
|
54
|
+
screenListeners,
|
|
55
|
+
screenOptions,
|
|
56
|
+
screenLayout,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<NavigationContent>
|
|
61
|
+
<StackView
|
|
62
|
+
{...rest}
|
|
63
|
+
state={state}
|
|
64
|
+
navigation={navigation}
|
|
65
|
+
descriptors={descriptors}
|
|
66
|
+
describe={describe}
|
|
67
|
+
/>
|
|
68
|
+
</NavigationContent>
|
|
69
|
+
);
|
|
70
|
+
},
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* ComponentStackNavigator conditionally wraps in NavigationIndependentTree.
|
|
75
|
+
* - If already inside a ComponentStack (nested), just render the inner navigator
|
|
76
|
+
* so it participates in the parent's navigation tree and goBack() works.
|
|
77
|
+
* - If top-level, wrap in NavigationIndependentTree + NavigationContainer
|
|
78
|
+
* to isolate from Expo Router / React Navigation.
|
|
79
|
+
*/
|
|
80
|
+
function IsolatedComponentStackNavigator(props: ComponentStackNavigatorProps) {
|
|
81
|
+
const isNested = React.useContext(ComponentStackContext);
|
|
82
|
+
|
|
83
|
+
if (isNested) {
|
|
84
|
+
return <ComponentStackNavigatorInner {...props} />;
|
|
85
|
+
}
|
|
49
86
|
|
|
50
87
|
return (
|
|
51
88
|
<NavigationIndependentTree>
|
|
52
89
|
<NavigationContainer>
|
|
53
|
-
<
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
state={state}
|
|
57
|
-
navigation={navigation}
|
|
58
|
-
descriptors={descriptors}
|
|
59
|
-
describe={describe}
|
|
60
|
-
/>
|
|
61
|
-
</NavigationContent>
|
|
90
|
+
<ComponentStackContext.Provider value={true}>
|
|
91
|
+
<ComponentStackNavigatorInner {...props} />
|
|
92
|
+
</ComponentStackContext.Provider>
|
|
62
93
|
</NavigationContainer>
|
|
63
94
|
</NavigationIndependentTree>
|
|
64
95
|
);
|
|
@@ -80,9 +111,9 @@ export function createComponentStackNavigator<
|
|
|
80
111
|
NavigatorID
|
|
81
112
|
>;
|
|
82
113
|
};
|
|
83
|
-
Navigator: typeof
|
|
114
|
+
Navigator: typeof IsolatedComponentStackNavigator;
|
|
84
115
|
},
|
|
85
116
|
const Config extends StaticConfig<TypeBag> = StaticConfig<TypeBag>,
|
|
86
117
|
>(config?: Config): TypedNavigator<TypeBag, Config> {
|
|
87
|
-
return createNavigatorFactory(
|
|
118
|
+
return createNavigatorFactory(IsolatedComponentStackNavigator)(config);
|
|
88
119
|
}
|
|
@@ -4,7 +4,6 @@ import type {
|
|
|
4
4
|
NavigationHelpers,
|
|
5
5
|
NavigationProp,
|
|
6
6
|
ParamListBase,
|
|
7
|
-
Route,
|
|
8
7
|
RouteProp,
|
|
9
8
|
StackActionHelpers,
|
|
10
9
|
StackNavigationState,
|
|
@@ -13,6 +12,10 @@ import type {
|
|
|
13
12
|
} from "@react-navigation/native";
|
|
14
13
|
import type { ScreenTransitionConfig } from "../shared";
|
|
15
14
|
import type { OverlayProps } from "../shared/types/overlay.types";
|
|
15
|
+
import type {
|
|
16
|
+
BaseStackScene,
|
|
17
|
+
DescriptorMap,
|
|
18
|
+
} from "../shared/types/stack.types";
|
|
16
19
|
|
|
17
20
|
export type ComponentStackNavigationEventMap = {};
|
|
18
21
|
|
|
@@ -52,10 +55,7 @@ export type ComponentStackNavigationHelpers = NavigationHelpers<
|
|
|
52
55
|
ComponentStackNavigationEventMap
|
|
53
56
|
>;
|
|
54
57
|
|
|
55
|
-
export type ComponentStackScene =
|
|
56
|
-
route: Route<string>;
|
|
57
|
-
descriptor: ComponentStackDescriptor;
|
|
58
|
-
};
|
|
58
|
+
export type ComponentStackScene = BaseStackScene<ComponentStackDescriptor>;
|
|
59
59
|
|
|
60
60
|
type ComponentStackNavigationConfig = {};
|
|
61
61
|
|
|
@@ -96,6 +96,5 @@ export type ComponentStackDescriptor = Descriptor<
|
|
|
96
96
|
RouteProp<ParamListBase>
|
|
97
97
|
>;
|
|
98
98
|
|
|
99
|
-
export type ComponentStackDescriptorMap =
|
|
100
|
-
|
|
101
|
-
};
|
|
99
|
+
export type ComponentStackDescriptorMap =
|
|
100
|
+
DescriptorMap<ComponentStackDescriptor>;
|
|
@@ -24,6 +24,7 @@ import type {
|
|
|
24
24
|
} from "react-native-screens";
|
|
25
25
|
import type { OverlayProps } from "../shared/types/overlay.types";
|
|
26
26
|
import type { ScreenTransitionConfig } from "../shared/types/screen.types";
|
|
27
|
+
import type { DescriptorMap } from "../shared/types/stack.types";
|
|
27
28
|
|
|
28
29
|
export type NativeStackNavigationEventMap = {
|
|
29
30
|
/**
|
|
@@ -717,6 +718,4 @@ export type NativeStackDescriptor = Descriptor<
|
|
|
717
718
|
RouteProp<ParamListBase>
|
|
718
719
|
>;
|
|
719
720
|
|
|
720
|
-
export type NativeStackDescriptorMap =
|
|
721
|
-
[key: string]: NativeStackDescriptor;
|
|
722
|
-
};
|
|
721
|
+
export type NativeStackDescriptorMap = DescriptorMap<NativeStackDescriptor>;
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
type DirectStackContextValue,
|
|
36
36
|
withDirectStack,
|
|
37
37
|
} from "../../shared/providers/stack/direct.provider";
|
|
38
|
-
import {
|
|
38
|
+
import { StackType } from "../../shared/types/stack.types";
|
|
39
39
|
import type { NativeStackDescriptor } from "../types";
|
|
40
40
|
import { debounce } from "../utils/debounce";
|
|
41
41
|
import { getModalRouteKeys } from "../utils/getModalRoutesKeys";
|
|
@@ -468,7 +468,6 @@ const SceneView = ({
|
|
|
468
468
|
previous={previousDescriptor}
|
|
469
469
|
current={descriptor}
|
|
470
470
|
next={nextDescriptor}
|
|
471
|
-
LifecycleController={NativeStackScreenLifecycleController}
|
|
472
471
|
>
|
|
473
472
|
{render()}
|
|
474
473
|
</ScreenComposer>
|
|
@@ -483,7 +482,7 @@ const SceneView = ({
|
|
|
483
482
|
};
|
|
484
483
|
|
|
485
484
|
export const NativeStackView = withStackCore(
|
|
486
|
-
{ TRANSITIONS_ALWAYS_ON: false },
|
|
485
|
+
{ TRANSITIONS_ALWAYS_ON: false, STACK_TYPE: StackType.NATIVE },
|
|
487
486
|
withDirectStack(function NativeStackViewContent({
|
|
488
487
|
state,
|
|
489
488
|
navigation,
|
|
@@ -10,7 +10,7 @@ import { OverlayHost } from "./overlay-host";
|
|
|
10
10
|
* Gets routes and descriptors from stack context.
|
|
11
11
|
*/
|
|
12
12
|
export function FloatOverlay() {
|
|
13
|
-
const {
|
|
13
|
+
const { scenes, focusedIndex, flags } = useStack();
|
|
14
14
|
|
|
15
15
|
const activeOverlay = useMemo(
|
|
16
16
|
() =>
|
|
@@ -31,13 +31,7 @@ export function FloatOverlay() {
|
|
|
31
31
|
return (
|
|
32
32
|
<KeysProvider current={current} previous={previous} next={next}>
|
|
33
33
|
<ScreenStylesProvider>
|
|
34
|
-
<OverlayHost
|
|
35
|
-
scene={scene}
|
|
36
|
-
scenes={scenes}
|
|
37
|
-
routes={routes}
|
|
38
|
-
overlayIndex={overlayIndex}
|
|
39
|
-
isFloating
|
|
40
|
-
/>
|
|
34
|
+
<OverlayHost scene={scene} />
|
|
41
35
|
</ScreenStylesProvider>
|
|
42
36
|
</KeysProvider>
|
|
43
37
|
);
|