react-native-screen-transitions 3.3.0-rc.2 → 3.3.0
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/LICENSE +21 -0
- package/README.md +51 -7
- package/lib/commonjs/blank-stack/components/stack-view.js +2 -1
- package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
- package/lib/commonjs/blank-stack/components/stack-view.native.js +2 -1
- package/lib/commonjs/blank-stack/components/stack-view.native.js.map +1 -1
- package/lib/commonjs/component-stack/components/stack-view.js +2 -1
- package/lib/commonjs/component-stack/components/stack-view.js.map +1 -1
- package/lib/commonjs/shared/animation/resolve-snap-target.js +48 -0
- package/lib/commonjs/shared/animation/resolve-snap-target.js.map +1 -0
- package/lib/commonjs/shared/animation/snap-to.js +35 -34
- package/lib/commonjs/shared/animation/snap-to.js.map +1 -1
- package/lib/commonjs/shared/components/create-transition-aware-component.js +15 -7
- package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js +3 -2
- package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/variations/float-overlay.js +46 -9
- package/lib/commonjs/shared/components/overlay/variations/float-overlay.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/variations/overlay-host.js +7 -7
- package/lib/commonjs/shared/components/overlay/variations/overlay-host.js.map +1 -1
- package/lib/commonjs/shared/components/overlay/variations/screen-overlay.js +23 -3
- package/lib/commonjs/shared/components/overlay/variations/screen-overlay.js.map +1 -1
- package/lib/commonjs/shared/components/screen-container.js +2 -1
- package/lib/commonjs/shared/components/screen-container.js.map +1 -1
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +6 -6
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +7 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +37 -8
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +12 -13
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/commonjs/shared/hooks/lifecycle/use-close-transition.js +5 -2
- package/lib/commonjs/shared/hooks/lifecycle/use-close-transition.js.map +1 -1
- package/lib/commonjs/shared/hooks/lifecycle/use-screen-events.js +14 -4
- package/lib/commonjs/shared/hooks/lifecycle/use-screen-events.js.map +1 -1
- package/lib/commonjs/shared/hooks/navigation/use-optimistic-focused-index.js +20 -0
- package/lib/commonjs/shared/hooks/navigation/use-optimistic-focused-index.js.map +1 -0
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js +11 -8
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -1
- package/lib/commonjs/shared/hooks/reanimated/use-shared-value-state.js +4 -1
- package/lib/commonjs/shared/hooks/reanimated/use-shared-value-state.js.map +1 -1
- package/lib/commonjs/shared/providers/gestures.provider.js +17 -6
- package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/layout-anchor.provider.js +7 -5
- package/lib/commonjs/shared/providers/layout-anchor.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/register-bounds.provider.js +25 -6
- package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles.provider.js +1 -6
- package/lib/commonjs/shared/providers/screen/styles.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/direct.provider.js +15 -16
- package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/managed.provider.js +19 -16
- package/lib/commonjs/shared/providers/stack/managed.provider.js.map +1 -1
- package/lib/commonjs/shared/stores/bounds.store.js +46 -0
- package/lib/commonjs/shared/stores/bounds.store.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/index.js +6 -4
- package/lib/commonjs/shared/utils/bounds/index.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/determine-snap-target.js +9 -2
- package/lib/commonjs/shared/utils/gesture/determine-snap-target.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/find-collapse-target.js +11 -1
- package/lib/commonjs/shared/utils/gesture/find-collapse-target.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/validate-snap-points.js +11 -2
- package/lib/commonjs/shared/utils/gesture/validate-snap-points.js.map +1 -1
- package/lib/commonjs/shared/utils/overlay/visibility.js +19 -0
- package/lib/commonjs/shared/utils/overlay/visibility.js.map +1 -0
- package/lib/module/blank-stack/components/stack-view.js +2 -1
- package/lib/module/blank-stack/components/stack-view.js.map +1 -1
- package/lib/module/blank-stack/components/stack-view.native.js +2 -1
- package/lib/module/blank-stack/components/stack-view.native.js.map +1 -1
- package/lib/module/component-stack/components/stack-view.js +2 -1
- package/lib/module/component-stack/components/stack-view.js.map +1 -1
- package/lib/module/shared/animation/resolve-snap-target.js +44 -0
- package/lib/module/shared/animation/resolve-snap-target.js.map +1 -0
- package/lib/module/shared/animation/snap-to.js +34 -34
- package/lib/module/shared/animation/snap-to.js.map +1 -1
- package/lib/module/shared/components/create-transition-aware-component.js +16 -8
- package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
- package/lib/module/shared/components/overlay/helpers/get-active-overlay.js +4 -2
- package/lib/module/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
- package/lib/module/shared/components/overlay/variations/float-overlay.js +47 -11
- package/lib/module/shared/components/overlay/variations/float-overlay.js.map +1 -1
- package/lib/module/shared/components/overlay/variations/overlay-host.js +7 -7
- package/lib/module/shared/components/overlay/variations/overlay-host.js.map +1 -1
- package/lib/module/shared/components/overlay/variations/screen-overlay.js +24 -5
- package/lib/module/shared/components/overlay/variations/screen-overlay.js.map +1 -1
- package/lib/module/shared/components/screen-container.js +2 -1
- package/lib/module/shared/components/screen-container.js.map +1 -1
- package/lib/module/shared/hooks/animation/use-screen-animation.js +6 -6
- package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js +7 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +37 -8
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js +12 -13
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/module/shared/hooks/lifecycle/use-close-transition.js +5 -2
- package/lib/module/shared/hooks/lifecycle/use-close-transition.js.map +1 -1
- package/lib/module/shared/hooks/lifecycle/use-screen-events.js +13 -4
- package/lib/module/shared/hooks/lifecycle/use-screen-events.js.map +1 -1
- package/lib/module/shared/hooks/navigation/use-optimistic-focused-index.js +17 -0
- package/lib/module/shared/hooks/navigation/use-optimistic-focused-index.js.map +1 -0
- package/lib/module/shared/hooks/navigation/use-screen-state.js +12 -9
- package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -1
- package/lib/module/shared/hooks/reanimated/use-shared-value-state.js +4 -1
- package/lib/module/shared/hooks/reanimated/use-shared-value-state.js.map +1 -1
- package/lib/module/shared/providers/gestures.provider.js +17 -6
- package/lib/module/shared/providers/gestures.provider.js.map +1 -1
- package/lib/module/shared/providers/layout-anchor.provider.js +7 -5
- package/lib/module/shared/providers/layout-anchor.provider.js.map +1 -1
- package/lib/module/shared/providers/register-bounds.provider.js +25 -6
- package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/module/shared/providers/screen/styles.provider.js +1 -6
- package/lib/module/shared/providers/screen/styles.provider.js.map +1 -1
- package/lib/module/shared/providers/stack/direct.provider.js +15 -16
- package/lib/module/shared/providers/stack/direct.provider.js.map +1 -1
- package/lib/module/shared/providers/stack/managed.provider.js +19 -16
- package/lib/module/shared/providers/stack/managed.provider.js.map +1 -1
- package/lib/module/shared/stores/bounds.store.js +46 -0
- package/lib/module/shared/stores/bounds.store.js.map +1 -1
- package/lib/module/shared/utils/bounds/index.js +6 -4
- package/lib/module/shared/utils/bounds/index.js.map +1 -1
- package/lib/module/shared/utils/gesture/determine-snap-target.js +9 -2
- package/lib/module/shared/utils/gesture/determine-snap-target.js.map +1 -1
- package/lib/module/shared/utils/gesture/find-collapse-target.js +11 -1
- package/lib/module/shared/utils/gesture/find-collapse-target.js.map +1 -1
- package/lib/module/shared/utils/gesture/validate-snap-points.js +11 -2
- package/lib/module/shared/utils/gesture/validate-snap-points.js.map +1 -1
- package/lib/module/shared/utils/overlay/visibility.js +12 -0
- package/lib/module/shared/utils/overlay/visibility.js.map +1 -0
- 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/component-stack/components/stack-view.d.ts.map +1 -1
- package/lib/typescript/shared/animation/resolve-snap-target.d.ts +3 -0
- package/lib/typescript/shared/animation/resolve-snap-target.d.ts.map +1 -0
- package/lib/typescript/shared/animation/snap-to.d.ts +2 -0
- package/lib/typescript/shared/animation/snap-to.d.ts.map +1 -1
- package/lib/typescript/shared/components/create-transition-aware-component.d.ts +1 -0
- package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
- package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts +1 -1
- package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.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 +7 -0
- 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.map +1 -1
- package/lib/typescript/shared/components/screen-container.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/gestures/use-screen-gesture-handlers.d.ts +1 -1
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts +0 -2
- package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/lifecycle/use-close-transition.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/lifecycle/use-screen-events.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-optimistic-focused-index.d.ts +7 -0
- package/lib/typescript/shared/hooks/navigation/use-optimistic-focused-index.d.ts.map +1 -0
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts +6 -0
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/reanimated/use-shared-value-state.d.ts.map +1 -1
- package/lib/typescript/shared/index.d.ts +4 -0
- 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/layout-anchor.provider.d.ts +1 -1
- package/lib/typescript/shared/providers/layout-anchor.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/register-bounds.provider.d.ts +1 -0
- package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/managed.provider.d.ts.map +1 -1
- package/lib/typescript/shared/stores/bounds.store.d.ts +2 -0
- package/lib/typescript/shared/stores/bounds.store.d.ts.map +1 -1
- package/lib/typescript/shared/types/screen.types.d.ts +36 -1
- package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/bounds/index.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/validate-snap-points.d.ts.map +1 -1
- package/lib/typescript/shared/utils/overlay/visibility.d.ts +11 -0
- package/lib/typescript/shared/utils/overlay/visibility.d.ts.map +1 -0
- package/package.json +8 -2
- package/src/blank-stack/components/stack-view.native.tsx +2 -1
- package/src/blank-stack/components/stack-view.tsx +2 -1
- package/src/component-stack/components/stack-view.tsx +2 -1
- package/src/shared/animation/resolve-snap-target.ts +53 -0
- package/src/shared/animation/snap-to.ts +47 -38
- package/src/shared/components/create-transition-aware-component.tsx +34 -10
- package/src/shared/components/overlay/helpers/get-active-overlay.ts +3 -2
- package/src/shared/components/overlay/variations/float-overlay.tsx +53 -8
- package/src/shared/components/overlay/variations/overlay-host.tsx +16 -6
- package/src/shared/components/overlay/variations/screen-overlay.tsx +35 -3
- package/src/shared/components/screen-container.tsx +15 -9
- package/src/shared/hooks/animation/use-screen-animation.tsx +8 -8
- package/src/shared/hooks/gestures/use-build-gestures.tsx +5 -1
- package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +63 -16
- package/src/shared/hooks/gestures/use-scroll-registry.tsx +10 -9
- package/src/shared/hooks/lifecycle/use-close-transition.ts +6 -3
- package/src/shared/hooks/lifecycle/use-screen-events.ts +15 -4
- package/src/shared/hooks/navigation/use-optimistic-focused-index.ts +19 -0
- package/src/shared/hooks/navigation/use-screen-state.tsx +24 -8
- package/src/shared/hooks/reanimated/use-shared-value-state.ts +4 -1
- package/src/shared/providers/gestures.provider.tsx +49 -22
- package/src/shared/providers/layout-anchor.provider.tsx +28 -25
- package/src/shared/providers/register-bounds.provider.tsx +43 -6
- package/src/shared/providers/screen/styles.provider.tsx +1 -7
- package/src/shared/providers/stack/direct.provider.tsx +18 -19
- package/src/shared/providers/stack/managed.provider.tsx +22 -19
- package/src/shared/stores/bounds.store.ts +56 -0
- package/src/shared/types/screen.types.ts +39 -1
- package/src/shared/utils/bounds/index.ts +6 -4
- package/src/shared/utils/gesture/determine-snap-target.ts +15 -4
- package/src/shared/utils/gesture/find-collapse-target.ts +11 -1
- package/src/shared/utils/gesture/validate-snap-points.ts +15 -2
- package/src/shared/utils/overlay/visibility.ts +23 -0
|
@@ -21,6 +21,7 @@ import { GestureStore } from "../stores/gesture.store";
|
|
|
21
21
|
import { StackType } from "../types/stack.types";
|
|
22
22
|
import createProvider from "../utils/create-provider";
|
|
23
23
|
import { computeClaimedDirections } from "../utils/gesture/compute-claimed-directions";
|
|
24
|
+
import { validateSnapPoints } from "../utils/gesture/validate-snap-points";
|
|
24
25
|
import { useKeys } from "./screen/keys.provider";
|
|
25
26
|
import { useStackCoreContext } from "./stack/core.provider";
|
|
26
27
|
const NO_CLAIMS = {
|
|
@@ -110,11 +111,21 @@ export const {
|
|
|
110
111
|
flags
|
|
111
112
|
} = useStackCoreContext();
|
|
112
113
|
const ancestorContext = useGestureContext();
|
|
113
|
-
const hasGestures = current.options.gestureEnabled === true;
|
|
114
114
|
const isIsolated = flags.STACK_TYPE === StackType.COMPONENT;
|
|
115
|
-
const hasSnapPoints = Array.isArray(current.options.snapPoints) && current.options.snapPoints.length > 0;
|
|
116
|
-
const claimedDirections = useMemo(() => computeClaimedDirections(hasGestures, current.options.gestureDirection, hasSnapPoints), [hasGestures, current.options.gestureDirection, hasSnapPoints]);
|
|
117
115
|
const routeKey = current.route.key;
|
|
116
|
+
const isFirstScreen = useNavigationState(state => {
|
|
117
|
+
const index = state.routes.findIndex(route => route.key === routeKey);
|
|
118
|
+
return index === 0;
|
|
119
|
+
});
|
|
120
|
+
const canDismiss = Boolean(isFirstScreen ? false : current.options.gestureEnabled);
|
|
121
|
+
const {
|
|
122
|
+
hasSnapPoints
|
|
123
|
+
} = useMemo(() => validateSnapPoints({
|
|
124
|
+
snapPoints: current.options.snapPoints,
|
|
125
|
+
canDismiss
|
|
126
|
+
}), [current.options.snapPoints, canDismiss]);
|
|
127
|
+
const gestureEnabled = canDismiss || hasSnapPoints;
|
|
128
|
+
const claimedDirections = useMemo(() => computeClaimedDirections(gestureEnabled, current.options.gestureDirection, hasSnapPoints), [gestureEnabled, current.options.gestureDirection, hasSnapPoints]);
|
|
118
129
|
|
|
119
130
|
// Check if this screen is the current (topmost) route in its navigator
|
|
120
131
|
const isCurrentRoute = useNavigationState(state => state.routes[state.index]?.key === routeKey);
|
|
@@ -132,17 +143,17 @@ export const {
|
|
|
132
143
|
childDirectionClaims,
|
|
133
144
|
isIsolated
|
|
134
145
|
});
|
|
135
|
-
const value = {
|
|
146
|
+
const value = useMemo(() => ({
|
|
136
147
|
panGesture,
|
|
137
148
|
panGestureRef,
|
|
138
149
|
scrollConfig,
|
|
139
150
|
gestureAnimationValues,
|
|
140
151
|
ancestorContext,
|
|
141
|
-
gestureEnabled
|
|
152
|
+
gestureEnabled,
|
|
142
153
|
isIsolated,
|
|
143
154
|
claimedDirections,
|
|
144
155
|
childDirectionClaims
|
|
145
|
-
};
|
|
156
|
+
}), [panGesture, panGestureRef, scrollConfig, gestureAnimationValues, ancestorContext, gestureEnabled, isIsolated, claimedDirections, childDirectionClaims]);
|
|
146
157
|
return {
|
|
147
158
|
value,
|
|
148
159
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useNavigationState","useEffect","useMemo","useSharedValue","useBuildGestures","GestureStore","StackType","createProvider","computeClaimedDirections","useKeys","useStackCoreContext","NO_CLAIMS","vertical","horizontal","DIRECTIONS","useRegisterDirectionClaims","ancestorContext","claimedDirections","routeKey","isIsolated","isCurrentRoute","gestureValues","getRouteGestures","isDismissing","claimedAncestors","ancestor","shadowedDirections","dir","push","length","directions","newClaims","childDirectionClaims","value","currentClaims","needsUpdate","ScreenGestureProvider","useScreenGestureContext","useGestureContext","guarded","children","current","flags","
|
|
1
|
+
{"version":3,"names":["useNavigationState","useEffect","useMemo","useSharedValue","useBuildGestures","GestureStore","StackType","createProvider","computeClaimedDirections","validateSnapPoints","useKeys","useStackCoreContext","NO_CLAIMS","vertical","horizontal","DIRECTIONS","useRegisterDirectionClaims","ancestorContext","claimedDirections","routeKey","isIsolated","isCurrentRoute","gestureValues","getRouteGestures","isDismissing","claimedAncestors","ancestor","shadowedDirections","dir","push","length","directions","newClaims","childDirectionClaims","value","currentClaims","needsUpdate","ScreenGestureProvider","useScreenGestureContext","useGestureContext","guarded","children","current","flags","STACK_TYPE","COMPONENT","route","key","isFirstScreen","state","index","routes","findIndex","canDismiss","Boolean","options","gestureEnabled","hasSnapPoints","snapPoints","gestureDirection","scrollConfig","panGesture","panGestureRef","gestureAnimationValues"],"sourceRoot":"../../../../src","sources":["shared/providers/gestures.provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { useCallback, useMemo } from "react";
|
|
3
4
|
import { useWindowDimensions } from "react-native";
|
|
4
5
|
import { measure } from "react-native-reanimated";
|
|
5
6
|
import createProvider from "../utils/create-provider";
|
|
@@ -31,7 +32,7 @@ const {
|
|
|
31
32
|
width: screenWidth,
|
|
32
33
|
height: screenHeight
|
|
33
34
|
} = useWindowDimensions();
|
|
34
|
-
const correctMeasurement = measured => {
|
|
35
|
+
const correctMeasurement = useCallback(measured => {
|
|
35
36
|
"worklet";
|
|
36
37
|
|
|
37
38
|
const anchor = measure(anchorRef);
|
|
@@ -55,11 +56,12 @@ const {
|
|
|
55
56
|
pageX: scaleX !== 1 ? relativeX / scaleX : relativeX,
|
|
56
57
|
pageY: scaleY !== 1 ? relativeY / scaleY : relativeY
|
|
57
58
|
};
|
|
58
|
-
};
|
|
59
|
+
}, [anchorRef, screenWidth, screenHeight]);
|
|
60
|
+
const value = useMemo(() => ({
|
|
61
|
+
correctMeasurement
|
|
62
|
+
}), [correctMeasurement]);
|
|
59
63
|
return {
|
|
60
|
-
value
|
|
61
|
-
correctMeasurement
|
|
62
|
-
},
|
|
64
|
+
value,
|
|
63
65
|
children
|
|
64
66
|
};
|
|
65
67
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useWindowDimensions","measure","createProvider","LayoutAnchorProvider","useLayoutAnchorContext","guarded","anchorRef","children","width","screenWidth","height","screenHeight","correctMeasurement","measured","anchor","scaleX","scaleY","relativeX","pageX","relativeY","pageY","x","y","value"],"sourceRoot":"../../../../src","sources":["shared/providers/layout-anchor.provider.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["useCallback","useMemo","useWindowDimensions","measure","createProvider","LayoutAnchorProvider","useLayoutAnchorContext","guarded","anchorRef","children","width","screenWidth","height","screenHeight","correctMeasurement","measured","anchor","scaleX","scaleY","relativeX","pageX","relativeY","pageY","x","y","value"],"sourceRoot":"../../../../src","sources":["shared/providers/layout-anchor.provider.tsx"],"mappings":";;AAAA,SAAyBA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5D,SAASC,mBAAmB,QAAmB,cAAc;AAC7D,SAGCC,OAAO,QACD,yBAAyB;AAChC,OAAOC,cAAc,MAAM,0BAA0B;AAiBrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;EAAEC,oBAAoB;EAAEC;AAAuB,CAAC,GAAGF,cAAc,CACtE,cAAc,EACd;EAAEG,OAAO,EAAE;AAAM,CAClB,CAAC,CACA,CAAC;EAAEC,SAAS;EAAEC;AAAS,CAAC,KAAK;EAC5B,MAAM;IAAEC,KAAK,EAAEC,WAAW;IAAEC,MAAM,EAAEC;EAAa,CAAC,GAAGX,mBAAmB,CAAC,CAAC;EAE1E,MAAMY,kBAAkB,GAAGd,WAAW,CACpCe,QAA4B,IAAyB;IACrD,SAAS;;IACT,MAAMC,MAAM,GAAGb,OAAO,CAACK,SAAS,CAAC;IACjC,IAAI,CAACQ,MAAM,EAAE,OAAOD,QAAQ;;IAE5B;IACA;IACA,MAAME,MAAM,GAAGD,MAAM,CAACN,KAAK,GAAG,CAAC,GAAGM,MAAM,CAACN,KAAK,GAAGC,WAAW,GAAG,CAAC;IAChE,MAAMO,MAAM,GAAGF,MAAM,CAACJ,MAAM,GAAG,CAAC,GAAGI,MAAM,CAACJ,MAAM,GAAGC,YAAY,GAAG,CAAC;;IAEnE;IACA,MAAMM,SAAS,GAAGJ,QAAQ,CAACK,KAAK,GAAGJ,MAAM,CAACI,KAAK;IAC/C,MAAMC,SAAS,GAAGN,QAAQ,CAACO,KAAK,GAAGN,MAAM,CAACM,KAAK;;IAE/C;IACA,OAAO;MACNC,CAAC,EAAER,QAAQ,CAACQ,CAAC;MACbC,CAAC,EAAET,QAAQ,CAACS,CAAC;MACbd,KAAK,EAAEO,MAAM,KAAK,CAAC,GAAGF,QAAQ,CAACL,KAAK,GAAGO,MAAM,GAAGF,QAAQ,CAACL,KAAK;MAC9DE,MAAM,EAAEM,MAAM,KAAK,CAAC,GAAGH,QAAQ,CAACH,MAAM,GAAGM,MAAM,GAAGH,QAAQ,CAACH,MAAM;MACjEQ,KAAK,EAAEH,MAAM,KAAK,CAAC,GAAGE,SAAS,GAAGF,MAAM,GAAGE,SAAS;MACpDG,KAAK,EAAEJ,MAAM,KAAK,CAAC,GAAGG,SAAS,GAAGH,MAAM,GAAGG;IAC5C,CAAC;EACF,CAAC,EACD,CAACb,SAAS,EAAEG,WAAW,EAAEE,YAAY,CACtC,CAAC;EAED,MAAMY,KAAK,GAAGxB,OAAO,CAAC,OAAO;IAAEa;EAAmB,CAAC,CAAC,EAAE,CAACA,kBAAkB,CAAC,CAAC;EAE3E,OAAO;IACNW,KAAK;IACLhB;EACD,CAAC;AACF,CACD,CAAC;AAED,SAASJ,oBAAoB,EAAEC,sBAAsB","ignoreList":[]}
|
|
@@ -76,10 +76,6 @@ const useInitialLayoutHandler = params => {
|
|
|
76
76
|
}, [sharedBoundTag, hasMeasuredOnLayout, isAnimating, ancestorAnimations, maybeMeasureAndStore]);
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* Measures non-pressable elements when screen becomes blurred.
|
|
81
|
-
* Captures bounds right before transition starts.
|
|
82
|
-
*/
|
|
83
79
|
/**
|
|
84
80
|
* Measures non-pressable elements when screen becomes blurred.
|
|
85
81
|
* Captures bounds right before transition starts.
|
|
@@ -145,10 +141,12 @@ const {
|
|
|
145
141
|
onPress,
|
|
146
142
|
sharedBoundTag,
|
|
147
143
|
animatedRef,
|
|
144
|
+
remeasureOnFocus,
|
|
148
145
|
children
|
|
149
146
|
}) => {
|
|
150
147
|
const {
|
|
151
|
-
current
|
|
148
|
+
current,
|
|
149
|
+
next
|
|
152
150
|
} = useKeys();
|
|
153
151
|
const currentScreenKey = current.route.key;
|
|
154
152
|
const ancestorKeys = useMemo(() => getAncestorKeys(current), [current]);
|
|
@@ -169,7 +167,8 @@ const {
|
|
|
169
167
|
const maybeMeasureAndStore = useStableCallbackValue(({
|
|
170
168
|
onPress,
|
|
171
169
|
shouldSetSource,
|
|
172
|
-
shouldSetDestination
|
|
170
|
+
shouldSetDestination,
|
|
171
|
+
shouldUpdateSource
|
|
173
172
|
} = {}) => {
|
|
174
173
|
"worklet";
|
|
175
174
|
|
|
@@ -193,6 +192,9 @@ const {
|
|
|
193
192
|
}
|
|
194
193
|
BoundStore.setLinkSource(sharedBoundTag, currentScreenKey, correctedMeasured, preparedStyles, ancestorKeys);
|
|
195
194
|
}
|
|
195
|
+
if (shouldUpdateSource) {
|
|
196
|
+
BoundStore.updateLinkSource(sharedBoundTag, currentScreenKey, correctedMeasured, preparedStyles, ancestorKeys);
|
|
197
|
+
}
|
|
196
198
|
|
|
197
199
|
// Set as destination (on mount during animation)
|
|
198
200
|
if (shouldSetDestination) {
|
|
@@ -215,6 +217,23 @@ const {
|
|
|
215
217
|
maybeMeasureAndStore,
|
|
216
218
|
ancestorKeys
|
|
217
219
|
});
|
|
220
|
+
|
|
221
|
+
// Re-measure source bounds when the destination screen (next in stack)
|
|
222
|
+
// starts closing. This fires at the instant the back animation begins,
|
|
223
|
+
// unlike useFocusEffect which fires too late (after the screen is removed
|
|
224
|
+
// from state).
|
|
225
|
+
const nextScreenKey = next?.route.key;
|
|
226
|
+
const nextClosing = nextScreenKey ? AnimationStore.getAnimation(nextScreenKey, "closing") : null;
|
|
227
|
+
useAnimatedReaction(() => nextClosing?.get() ?? 0, (closing, prevClosing) => {
|
|
228
|
+
"worklet";
|
|
229
|
+
|
|
230
|
+
if (!sharedBoundTag || !remeasureOnFocus) return;
|
|
231
|
+
if (closing === 1 && (prevClosing === 0 || prevClosing === null)) {
|
|
232
|
+
maybeMeasureAndStore({
|
|
233
|
+
shouldUpdateSource: true
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}, [sharedBoundTag, remeasureOnFocus, nextClosing]);
|
|
218
237
|
useParentSyncReaction({
|
|
219
238
|
parentContext,
|
|
220
239
|
maybeMeasureAndStore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useFocusEffect","useCallback","useMemo","useRef","measure","runOnJS","runOnUI","useAnimatedReaction","useSharedValue","useStableCallback","useStableCallbackValue","AnimationStore","BoundStore","prepareStyleForBounds","createProvider","useLayoutAnchorContext","useKeys","getAncestorKeys","current","ancestors","nav","navigation","getParent","parent","state","getState","routes","index","undefined","focusedRoute","key","push","useInitialLayoutHandler","params","sharedBoundTag","currentScreenKey","ancestorKeys","maybeMeasureAndStore","isAnimating","getAnimation","ancestorAnimations","map","hasMeasuredOnLayout","get","isAnyAnimating","i","length","shouldSetSource","shouldSetDestination","set","useBlurMeasurement","hasCapturedSource","ancestorClosing","route","maybeMeasureOnBlur","closing","markSourceCaptured","useParentSyncReaction","parentContext","updateSignal","value","RegisterBoundsProvider","useRegisterBoundsContext","guarded","style","onPress","animatedRef","children","layoutAnchor","ownSignal","preparedStyles","emitUpdate","isRoot","measured","correctedMeasured","correctMeasurement","registerSnapshot","existing","getSnapshot","setLinkSource","bounds","setLinkDestination","handleInitialLayout","captureActiveOnPress"],"sourceRoot":"../../../../src","sources":["shared/providers/register-bounds.provider.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,0BAA0B;AACzD,SAAyBC,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAEpE,SAECC,OAAO,EACPC,OAAO,EACPC,OAAO,EAEPC,mBAAmB,EACnBC,cAAc,QACR,yBAAyB;AAEhC,OAAOC,iBAAiB,MAAM,8BAA8B;AAC5D,OAAOC,sBAAsB,MAAM,oCAAoC;AACvE,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,OAAOC,cAAc,MAAM,0BAA0B;AACrD,SAASC,sBAAsB,QAAQ,0BAA0B;AACjE,SAA8BC,OAAO,QAAQ,wBAAwB;
|
|
1
|
+
{"version":3,"names":["useFocusEffect","useCallback","useMemo","useRef","measure","runOnJS","runOnUI","useAnimatedReaction","useSharedValue","useStableCallback","useStableCallbackValue","AnimationStore","BoundStore","prepareStyleForBounds","createProvider","useLayoutAnchorContext","useKeys","getAncestorKeys","current","ancestors","nav","navigation","getParent","parent","state","getState","routes","index","undefined","focusedRoute","key","push","useInitialLayoutHandler","params","sharedBoundTag","currentScreenKey","ancestorKeys","maybeMeasureAndStore","isAnimating","getAnimation","ancestorAnimations","map","hasMeasuredOnLayout","get","isAnyAnimating","i","length","shouldSetSource","shouldSetDestination","set","useBlurMeasurement","hasCapturedSource","ancestorClosing","route","maybeMeasureOnBlur","closing","markSourceCaptured","useParentSyncReaction","parentContext","updateSignal","value","RegisterBoundsProvider","useRegisterBoundsContext","guarded","style","onPress","animatedRef","remeasureOnFocus","children","next","layoutAnchor","ownSignal","preparedStyles","emitUpdate","isRoot","shouldUpdateSource","measured","correctedMeasured","correctMeasurement","registerSnapshot","existing","getSnapshot","setLinkSource","bounds","updateLinkSource","setLinkDestination","handleInitialLayout","nextScreenKey","nextClosing","prevClosing","captureActiveOnPress"],"sourceRoot":"../../../../src","sources":["shared/providers/register-bounds.provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -29,8 +29,7 @@ export function ScreenStylesProvider({
|
|
|
29
29
|
const {
|
|
30
30
|
current,
|
|
31
31
|
next,
|
|
32
|
-
progress
|
|
33
|
-
stackProgress
|
|
32
|
+
progress
|
|
34
33
|
} = props;
|
|
35
34
|
const isDragging = current.gesture.isDragging;
|
|
36
35
|
const isNextClosing = !!next?.closing;
|
|
@@ -41,7 +40,6 @@ export function ScreenStylesProvider({
|
|
|
41
40
|
isGesturingDuringCloseAnimation.value = false;
|
|
42
41
|
}
|
|
43
42
|
const isInGestureMode = isDragging || isGesturingDuringCloseAnimation.value;
|
|
44
|
-
const hasPushedScreenWhileClosing = !isInGestureMode && isNextClosing && stackProgress > progress;
|
|
45
43
|
|
|
46
44
|
// Select interpolator
|
|
47
45
|
// - If in gesture mode, use current screen's interpolator since we're driving
|
|
@@ -51,7 +49,6 @@ export function ScreenStylesProvider({
|
|
|
51
49
|
|
|
52
50
|
// Build effective props with corrected progress
|
|
53
51
|
// - Gesture mode: use current.progress only (avoids jumps during drag)
|
|
54
|
-
// - Pushed while closing: use stackProgress (includes new screen)
|
|
55
52
|
// - Normal: use derived progress as-is
|
|
56
53
|
|
|
57
54
|
let effectiveProgress = progress;
|
|
@@ -59,8 +56,6 @@ export function ScreenStylesProvider({
|
|
|
59
56
|
if (isInGestureMode) {
|
|
60
57
|
effectiveProgress = current.progress;
|
|
61
58
|
effectiveNext = undefined;
|
|
62
|
-
} else if (hasPushedScreenWhileClosing) {
|
|
63
|
-
effectiveProgress = stackProgress;
|
|
64
59
|
}
|
|
65
60
|
try {
|
|
66
61
|
return interpolator({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","useMemo","useDerivedValue","useSharedValue","NO_STYLES","_useScreenAnimation","createBounds","jsx","_jsx","ScreenStylesContext","ScreenStylesProvider","children","parentCtx","screenInterpolatorProps","nextInterpolator","currentInterpolator","isGesturingDuringCloseAnimation","stylesMap","props","value","current","next","progress","
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useMemo","useDerivedValue","useSharedValue","NO_STYLES","_useScreenAnimation","createBounds","jsx","_jsx","ScreenStylesContext","ScreenStylesProvider","children","parentCtx","screenInterpolatorProps","nextInterpolator","currentInterpolator","isGesturingDuringCloseAnimation","stylesMap","props","value","current","next","progress","isDragging","gesture","isNextClosing","closing","isInGestureMode","interpolator","effectiveProgress","effectiveNext","undefined","bounds","err","__DEV__","console","warn","ancestorStylesMaps","Provider","useScreenStyles","ctx","Error"],"sourceRoot":"../../../../../src","sources":["shared/providers/screen/styles.provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ import { useDerivedValue } from "react-native-reanimated";
|
|
|
6
6
|
import { StackContext } from "../../hooks/navigation/use-stack";
|
|
7
7
|
import { AnimationStore } from "../../stores/animation.store";
|
|
8
8
|
import { HistoryStore } from "../../stores/history.store";
|
|
9
|
+
import { isFloatOverlayVisible } from "../../utils/overlay/visibility";
|
|
9
10
|
import { useStackCoreContext } from "./core.provider";
|
|
10
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
12
|
const DirectStackContext = /*#__PURE__*/React.createContext(null);
|
|
@@ -42,11 +43,13 @@ function useDirectStackValue(props) {
|
|
|
42
43
|
shouldShowFloatOverlay,
|
|
43
44
|
routeKeys,
|
|
44
45
|
allRoutes,
|
|
45
|
-
allDescriptors
|
|
46
|
+
allDescriptors,
|
|
47
|
+
animationMaps
|
|
46
48
|
} = useMemo(() => {
|
|
47
49
|
const allRoutes = state.routes.concat(state.preloadedRoutes);
|
|
48
50
|
const scenes = [];
|
|
49
51
|
const routeKeys = [];
|
|
52
|
+
const animationMaps = [];
|
|
50
53
|
const allDescriptors = {
|
|
51
54
|
...preloadedDescriptors,
|
|
52
55
|
...descriptors
|
|
@@ -61,9 +64,10 @@ function useDirectStackValue(props) {
|
|
|
61
64
|
isPreloaded
|
|
62
65
|
});
|
|
63
66
|
routeKeys.push(route.key);
|
|
67
|
+
animationMaps.push(AnimationStore.getAll(route.key));
|
|
64
68
|
if (!shouldShowFloatOverlay && descriptor) {
|
|
65
69
|
const options = descriptor.options;
|
|
66
|
-
if (options?.enableTransitions === true && options
|
|
70
|
+
if (options?.enableTransitions === true && isFloatOverlayVisible(options)) {
|
|
67
71
|
shouldShowFloatOverlay = true;
|
|
68
72
|
}
|
|
69
73
|
}
|
|
@@ -73,12 +77,10 @@ function useDirectStackValue(props) {
|
|
|
73
77
|
shouldShowFloatOverlay,
|
|
74
78
|
routeKeys,
|
|
75
79
|
allRoutes,
|
|
76
|
-
allDescriptors
|
|
80
|
+
allDescriptors,
|
|
81
|
+
animationMaps
|
|
77
82
|
};
|
|
78
|
-
}, [state.routes, state.preloadedRoutes,
|
|
79
|
-
|
|
80
|
-
// Get animation store maps for all routes
|
|
81
|
-
const animationMaps = useMemo(() => allRoutes.map(route => AnimationStore.getAll(route.key)), [allRoutes]);
|
|
83
|
+
}, [state.routes, state.preloadedRoutes, preloadedDescriptors, descriptors]);
|
|
82
84
|
const stackProgress = useDerivedValue(() => {
|
|
83
85
|
"worklet";
|
|
84
86
|
|
|
@@ -91,15 +93,12 @@ function useDirectStackValue(props) {
|
|
|
91
93
|
const optimisticFocusedIndex = useDerivedValue(() => {
|
|
92
94
|
"worklet";
|
|
93
95
|
|
|
94
|
-
const
|
|
95
|
-
let
|
|
96
|
-
for (let i =
|
|
97
|
-
if (animationMaps[i].closing.value > 0)
|
|
98
|
-
isAnyClosing = true;
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
96
|
+
const lastIndex = animationMaps.length - 1;
|
|
97
|
+
let closingFromTop = 0;
|
|
98
|
+
for (let i = lastIndex; i >= 0; i--) {
|
|
99
|
+
if (animationMaps[i].closing.value > 0) closingFromTop++;else break;
|
|
101
100
|
}
|
|
102
|
-
return
|
|
101
|
+
return lastIndex - closingFromTop;
|
|
103
102
|
});
|
|
104
103
|
const focusedIndex = state.index;
|
|
105
104
|
const stackContextValue = useMemo(() => ({
|
|
@@ -111,7 +110,7 @@ function useDirectStackValue(props) {
|
|
|
111
110
|
focusedIndex,
|
|
112
111
|
stackProgress,
|
|
113
112
|
optimisticFocusedIndex
|
|
114
|
-
}), [routeKeys, allRoutes,
|
|
113
|
+
}), [routeKeys, allRoutes, scenes, focusedIndex, stackProgress, optimisticFocusedIndex, flags, allDescriptors]);
|
|
115
114
|
|
|
116
115
|
// DirectStack context value
|
|
117
116
|
const lifecycleValue = useMemo(() => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useDerivedValue","StackContext","AnimationStore","HistoryStore","useStackCoreContext","jsx","_jsx","DirectStackContext","createContext","displayName","useDirectStackContext","context","useContext","Error","useDirectStackValue","props","state","navigation","descriptors","describe","flags","preloadedDescriptors","preloadedRoutes","reduce","acc","route","key","scenes","shouldShowFloatOverlay","routeKeys","allRoutes","allDescriptors","routes","concat","descriptor","isPreloaded","undefined","push","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useDerivedValue","StackContext","AnimationStore","HistoryStore","isFloatOverlayVisible","useStackCoreContext","jsx","_jsx","DirectStackContext","createContext","displayName","useDirectStackContext","context","useContext","Error","useDirectStackValue","props","state","navigation","descriptors","describe","flags","preloadedDescriptors","preloadedRoutes","reduce","acc","route","key","scenes","shouldShowFloatOverlay","routeKeys","allRoutes","allDescriptors","animationMaps","routes","concat","descriptor","isPreloaded","undefined","push","getAll","options","enableTransitions","stackProgress","total","i","length","progress","value","optimisticFocusedIndex","lastIndex","closingFromTop","closing","focusedIndex","index","stackContextValue","lifecycleValue","withDirectStack","Component","DirectStackProvider","navigatorKey","clearNavigator","Provider","children"],"sourceRoot":"../../../../../src","sources":["shared/providers/stack/direct.provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ import { useDerivedValue } from "react-native-reanimated";
|
|
|
6
6
|
import { StackContext } from "../../hooks/navigation/use-stack";
|
|
7
7
|
import { AnimationStore } from "../../stores/animation.store";
|
|
8
8
|
import { HistoryStore } from "../../stores/history.store";
|
|
9
|
+
import { isFloatOverlayVisible } from "../../utils/overlay/visibility";
|
|
9
10
|
import { useStackCoreContext } from "./core.provider";
|
|
10
11
|
import { useLocalRoutes } from "./helpers/use-local-routes";
|
|
11
12
|
|
|
@@ -41,18 +42,21 @@ function useManagedStackValue(props) {
|
|
|
41
42
|
activeScreensLimit,
|
|
42
43
|
shouldShowFloatOverlay,
|
|
43
44
|
routeKeys,
|
|
44
|
-
backdropBehaviors
|
|
45
|
+
backdropBehaviors,
|
|
46
|
+
animationMaps
|
|
45
47
|
} = useMemo(() => {
|
|
46
48
|
const routes = state.routes;
|
|
49
|
+
const descriptors = state.descriptors;
|
|
47
50
|
const scenes = [];
|
|
48
51
|
const routeKeys = [];
|
|
49
52
|
const backdropBehaviors = [];
|
|
53
|
+
const animationMaps = [];
|
|
50
54
|
let shouldShowFloatOverlay = false;
|
|
51
55
|
let limit = 1;
|
|
52
56
|
let stopLimit = false;
|
|
53
57
|
for (let i = routes.length - 1; i >= 0; i--) {
|
|
54
58
|
const route = routes[i];
|
|
55
|
-
const descriptor =
|
|
59
|
+
const descriptor = descriptors[route.key];
|
|
56
60
|
const options = descriptor?.options;
|
|
57
61
|
scenes[i] = {
|
|
58
62
|
route,
|
|
@@ -60,8 +64,9 @@ function useManagedStackValue(props) {
|
|
|
60
64
|
};
|
|
61
65
|
routeKeys[i] = route.key;
|
|
62
66
|
backdropBehaviors[i] = options?.backdropBehavior ?? "block";
|
|
67
|
+
animationMaps[i] = AnimationStore.getAll(route.key);
|
|
63
68
|
if (!shouldShowFloatOverlay) {
|
|
64
|
-
shouldShowFloatOverlay = options
|
|
69
|
+
shouldShowFloatOverlay = isFloatOverlayVisible(options);
|
|
65
70
|
}
|
|
66
71
|
if (!stopLimit) {
|
|
67
72
|
const shouldKeepPrevious = options?.detachPreviousScreen !== true;
|
|
@@ -78,13 +83,11 @@ function useManagedStackValue(props) {
|
|
|
78
83
|
routeKeys,
|
|
79
84
|
backdropBehaviors,
|
|
80
85
|
activeScreensLimit,
|
|
81
|
-
shouldShowFloatOverlay
|
|
86
|
+
shouldShowFloatOverlay,
|
|
87
|
+
animationMaps
|
|
82
88
|
};
|
|
83
89
|
}, [state.routes, state.descriptors]);
|
|
84
90
|
|
|
85
|
-
// Get animation store maps for LOCAL routes (including closing routes)
|
|
86
|
-
const animationMaps = useMemo(() => state.routes.map(route => AnimationStore.getAll(route.key)), [state.routes]);
|
|
87
|
-
|
|
88
91
|
// Aggregated stack progress from LOCAL routes (includes closing routes)
|
|
89
92
|
const stackProgress = useDerivedValue(() => {
|
|
90
93
|
"worklet";
|
|
@@ -96,19 +99,19 @@ function useManagedStackValue(props) {
|
|
|
96
99
|
return total;
|
|
97
100
|
});
|
|
98
101
|
|
|
99
|
-
// Optimistic focused index: accounts for closing screens
|
|
102
|
+
// Optimistic focused index: accounts for closing screens.
|
|
103
|
+
// Counts consecutive closing screens from the top of the stack so that
|
|
104
|
+
// rapid dismiss chains (e.g. dismiss C then B while C is still in flight)
|
|
105
|
+
// correctly identify the actual focused screen for pointer-event gating.
|
|
100
106
|
const optimisticFocusedIndex = useDerivedValue(() => {
|
|
101
107
|
"worklet";
|
|
102
108
|
|
|
103
|
-
const
|
|
104
|
-
let
|
|
105
|
-
for (let i =
|
|
106
|
-
if (animationMaps[i].closing.value > 0)
|
|
107
|
-
isAnyClosing = true;
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
109
|
+
const lastIndex = animationMaps.length - 1;
|
|
110
|
+
let closingFromTop = 0;
|
|
111
|
+
for (let i = lastIndex; i >= 0; i--) {
|
|
112
|
+
if (animationMaps[i].closing.value > 0) closingFromTop++;else break;
|
|
110
113
|
}
|
|
111
|
-
return
|
|
114
|
+
return lastIndex - closingFromTop;
|
|
112
115
|
});
|
|
113
116
|
const focusedIndex = props.state.index;
|
|
114
117
|
const stackContextValue = useMemo(() => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useDerivedValue","StackContext","AnimationStore","HistoryStore","useStackCoreContext","useLocalRoutes","jsx","_jsx","ManagedStackContext","createContext","displayName","useManagedStackContext","context","useContext","Error","useManagedStackValue","props","flags","state","handleCloseRoute","closingRouteKeys","scenes","activeScreensLimit","shouldShowFloatOverlay","routeKeys","backdropBehaviors","routes","limit","stopLimit","i","length","route","descriptor","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useDerivedValue","StackContext","AnimationStore","HistoryStore","isFloatOverlayVisible","useStackCoreContext","useLocalRoutes","jsx","_jsx","ManagedStackContext","createContext","displayName","useManagedStackContext","context","useContext","Error","useManagedStackValue","props","flags","state","handleCloseRoute","closingRouteKeys","scenes","activeScreensLimit","shouldShowFloatOverlay","routeKeys","backdropBehaviors","animationMaps","routes","descriptors","limit","stopLimit","i","length","route","descriptor","key","options","backdropBehavior","getAll","shouldKeepPrevious","detachPreviousScreen","Math","min","stackProgress","total","progress","value","optimisticFocusedIndex","lastIndex","closingFromTop","closing","focusedIndex","index","stackContextValue","lifecycleValue","closingRouteKeysShared","shared","withManagedStack","Component","ManagedStackProvider","navigatorKey","clearNavigator","Provider","children"],"sourceRoot":"../../../../../src","sources":["shared/providers/stack/managed.provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -44,6 +44,51 @@ function setLinkSource(tag, screenKey, bounds, styles = {}, ancestorKeys) {
|
|
|
44
44
|
return state;
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
+
function updateLinkSource(tag, screenKey, bounds, styles = {}, ancestorKeys) {
|
|
48
|
+
"worklet";
|
|
49
|
+
|
|
50
|
+
registry.modify(state => {
|
|
51
|
+
"worklet";
|
|
52
|
+
|
|
53
|
+
const stack = state[tag]?.linkStack;
|
|
54
|
+
if (!stack || stack.length === 0) return state;
|
|
55
|
+
let targetIndex = -1;
|
|
56
|
+
|
|
57
|
+
// Prefer the most recent completed link first.
|
|
58
|
+
// NOTE: matchesScreenKey is inlined here to avoid a Reanimated
|
|
59
|
+
// workletization crash caused by nested worklet function calls
|
|
60
|
+
// inside registry.modify callbacks.
|
|
61
|
+
for (let i = stack.length - 1; i >= 0; i--) {
|
|
62
|
+
const link = stack[i];
|
|
63
|
+
const src = link.source;
|
|
64
|
+
const srcMatches = src && (src.screenKey === screenKey || (src.ancestorKeys?.includes(screenKey) ?? false));
|
|
65
|
+
if (link.destination && srcMatches) {
|
|
66
|
+
targetIndex = i;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Fallback to pending links when no completed link matches.
|
|
72
|
+
if (targetIndex === -1) {
|
|
73
|
+
for (let i = stack.length - 1; i >= 0; i--) {
|
|
74
|
+
const src = stack[i].source;
|
|
75
|
+
if (src && (src.screenKey === screenKey || (src.ancestorKeys?.includes(screenKey) ?? false))) {
|
|
76
|
+
targetIndex = i;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (targetIndex !== -1) {
|
|
82
|
+
stack[targetIndex].source = {
|
|
83
|
+
screenKey,
|
|
84
|
+
ancestorKeys,
|
|
85
|
+
bounds,
|
|
86
|
+
styles
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return state;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
47
92
|
function setLinkDestination(tag, screenKey, bounds, styles = {}, ancestorKeys) {
|
|
48
93
|
"worklet";
|
|
49
94
|
|
|
@@ -174,6 +219,7 @@ export const BoundStore = {
|
|
|
174
219
|
registerSnapshot,
|
|
175
220
|
setLinkSource,
|
|
176
221
|
setLinkDestination,
|
|
222
|
+
updateLinkSource,
|
|
177
223
|
getActiveLink,
|
|
178
224
|
getSnapshot,
|
|
179
225
|
clear
|