react-native-screen-transitions 3.6.0-alpha.3 → 3.6.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/shared/components/screen-container/layers/content.js +1 -11
- package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
- package/lib/commonjs/shared/constants.js +2 -1
- package/lib/commonjs/shared/constants.js.map +1 -1
- package/lib/commonjs/shared/hooks/navigation/use-stack.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/build-screen-transition-options.js +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/build-screen-transition-options.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +10 -3
- package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js +2 -2
- package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +7 -2
- package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/selected-interpolator-options.js +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/selected-interpolator-options.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js +25 -0
- package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -0
- package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js +1 -0
- package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js +13 -4
- package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/options/helpers.js +9 -4
- package/lib/commonjs/shared/providers/screen/options/helpers.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/direct.provider.js +1 -3
- package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/helpers/use-stack-derived.js +2 -12
- package/lib/commonjs/shared/providers/stack/helpers/use-stack-derived.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/managed.provider.js +1 -3
- package/lib/commonjs/shared/providers/stack/managed.provider.js.map +1 -1
- package/lib/commonjs/shared/stores/animation.store.js +5 -3
- package/lib/commonjs/shared/stores/animation.store.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/navigation/reveal/build.js +0 -2
- package/lib/commonjs/shared/utils/bounds/navigation/reveal/build.js.map +1 -1
- package/lib/module/shared/components/screen-container/layers/content.js +3 -13
- package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
- package/lib/module/shared/constants.js +1 -0
- package/lib/module/shared/constants.js.map +1 -1
- package/lib/module/shared/hooks/navigation/use-stack.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/build-screen-transition-options.js +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/build-screen-transition-options.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +10 -3
- package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js +2 -2
- package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +7 -2
- package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/selected-interpolator-options.js +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/selected-interpolator-options.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js +20 -0
- package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -0
- package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js +1 -0
- package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/shared/policy.js +14 -5
- package/lib/module/shared/providers/screen/gestures/shared/policy.js.map +1 -1
- package/lib/module/shared/providers/screen/options/helpers.js +10 -5
- package/lib/module/shared/providers/screen/options/helpers.js.map +1 -1
- package/lib/module/shared/providers/stack/direct.provider.js +1 -3
- package/lib/module/shared/providers/stack/direct.provider.js.map +1 -1
- package/lib/module/shared/providers/stack/helpers/use-stack-derived.js +2 -12
- package/lib/module/shared/providers/stack/helpers/use-stack-derived.js.map +1 -1
- package/lib/module/shared/providers/stack/managed.provider.js +1 -3
- package/lib/module/shared/providers/stack/managed.provider.js.map +1 -1
- package/lib/module/shared/stores/animation.store.js +5 -3
- package/lib/module/shared/stores/animation.store.js.map +1 -1
- package/lib/module/shared/types/animation.types.js +2 -1
- package/lib/module/shared/types/animation.types.js.map +1 -1
- package/lib/module/shared/utils/bounds/navigation/reveal/build.js +0 -2
- package/lib/module/shared/utils/bounds/navigation/reveal/build.js.map +1 -1
- package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
- package/lib/typescript/shared/constants.d.ts +2 -1
- package/lib/typescript/shared/constants.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +0 -1
- package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
- package/lib/typescript/shared/index.d.ts +12 -12
- package/lib/typescript/shared/providers/screen/animation/helpers/build-screen-transition-options.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts +2 -2
- package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts +1 -0
- package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/selected-interpolator-options.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts +3 -0
- package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts +1 -0
- package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts +4 -4
- package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/options/helpers.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/options/types.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/options/types.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/helpers/use-stack-derived.d.ts +5 -5
- package/lib/typescript/shared/providers/stack/helpers/use-stack-derived.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/managed.provider.d.ts.map +1 -1
- package/lib/typescript/shared/stores/animation.store.d.ts +4 -3
- package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +4 -3
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/index.d.ts +1 -1
- package/lib/typescript/shared/types/index.d.ts.map +1 -1
- package/lib/typescript/shared/types/screen.types.d.ts +9 -12
- package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/bounds/navigation/reveal/build.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/shared/components/screen-container/layers/content.tsx +2 -21
- package/src/shared/constants.ts +6 -1
- package/src/shared/hooks/navigation/use-stack.tsx +0 -1
- package/src/shared/providers/screen/animation/helpers/build-screen-transition-options.ts +1 -2
- package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/index.ts +16 -8
- package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.ts +2 -1
- package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/types.ts +1 -0
- package/src/shared/providers/screen/animation/helpers/pipeline.ts +19 -5
- package/src/shared/providers/screen/animation/helpers/selected-interpolator-options.ts +0 -3
- package/src/shared/providers/screen/animation/helpers/stack-progress.ts +29 -0
- package/src/shared/providers/screen/animation/helpers/use-build-transition-state.ts +2 -0
- package/src/shared/providers/screen/gestures/shared/policy.ts +20 -7
- package/src/shared/providers/screen/options/helpers.ts +17 -13
- package/src/shared/providers/screen/options/types.ts +1 -1
- package/src/shared/providers/stack/direct.provider.tsx +2 -12
- package/src/shared/providers/stack/helpers/use-stack-derived.ts +6 -15
- package/src/shared/providers/stack/managed.provider.tsx +1 -5
- package/src/shared/stores/animation.store.ts +6 -3
- package/src/shared/types/animation.types.ts +7 -3
- package/src/shared/types/index.ts +1 -0
- package/src/shared/types/screen.types.ts +9 -12
- package/src/shared/utils/bounds/navigation/reveal/build.ts +0 -2
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { type SharedValue } from "react-native-reanimated";
|
|
2
2
|
export type AnimationStoreMap = {
|
|
3
3
|
progress: SharedValue<number>;
|
|
4
|
+
effectiveProgress: SharedValue<number>;
|
|
4
5
|
willAnimate: SharedValue<number>;
|
|
5
6
|
progressAnimating: SharedValue<number>;
|
|
6
7
|
closing: SharedValue<number>;
|
|
7
8
|
entering: SharedValue<number>;
|
|
8
9
|
};
|
|
9
10
|
/**
|
|
10
|
-
* Route-keyed screen transition state for the public animation lifecycle.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* Route-keyed screen transition state for the public animation lifecycle.
|
|
12
|
+
* `progress` tracks committed transition progress; `effectiveProgress` tracks
|
|
13
|
+
* the hydrated progress after live gesture policy is applied.
|
|
13
14
|
*/
|
|
14
15
|
export declare const AnimationStore: import("../utils/create-store").StoreApi<AnimationStoreMap>;
|
|
15
16
|
//# sourceMappingURL=animation.store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.store.d.ts","sourceRoot":"","sources":["../../../../src/shared/stores/animation.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,WAAW,EAChB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"animation.store.d.ts","sourceRoot":"","sources":["../../../../src/shared/stores/animation.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,WAAW,EAChB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,cAAc,6DAUzB,CAAC"}
|
|
@@ -13,7 +13,7 @@ import type { BaseStackRoute } from "./stack.types";
|
|
|
13
13
|
* `navigation.setOptions()`. If you need another existing screen option here,
|
|
14
14
|
* open a request with the use case and why the interpolator needs it.
|
|
15
15
|
*/
|
|
16
|
-
export type ScreenTransitionOptions = Pick<ScreenTransitionConfig, "navigationMaskEnabled" | "gestureEnabled" | "
|
|
16
|
+
export type ScreenTransitionOptions = Pick<ScreenTransitionConfig, "navigationMaskEnabled" | "gestureEnabled" | "gestureTracking" | "gestureDirection" | "gestureSensitivity" | "gestureVelocityImpact" | "gestureSnapVelocityImpact" | "gestureReleaseVelocityScale" | "gestureResponseDistance" | "gestureProgressMode" | "gestureDrivesProgress" | "gestureActivationArea" | "gestureSnapLocked" | "sheetScrollGestureBehavior" | "backdropBehavior">;
|
|
17
17
|
export type ScreenTransitionState = {
|
|
18
18
|
/**
|
|
19
19
|
* Animation progress for this screen.
|
|
@@ -226,13 +226,14 @@ export type TransitionSlotStyle = AnimatedViewStyle | TransitionSlotDefinition;
|
|
|
226
226
|
* Runtime options returned by `screenStyleInterpolator`.
|
|
227
227
|
*
|
|
228
228
|
* These values are not style slots. They are derived per frame and consumed by
|
|
229
|
-
* the transition runtime.
|
|
229
|
+
* the transition runtime. Structural options that change the React tree, such
|
|
230
|
+
* as `navigationMaskEnabled`, must be configured statically on the screen.
|
|
230
231
|
*
|
|
231
232
|
* If `gestureSensitivity` is derived from the current gesture, prefer
|
|
232
233
|
* `active.gesture.raw` so the sensitivity calculation does not feed back into
|
|
233
234
|
* itself.
|
|
234
235
|
*/
|
|
235
|
-
export type TransitionInterpolatorOptions = ScreenTransitionOptions
|
|
236
|
+
export type TransitionInterpolatorOptions = Omit<ScreenTransitionOptions, "navigationMaskEnabled" | "gestureTracking">;
|
|
236
237
|
/**
|
|
237
238
|
* Internal normalized slot format.
|
|
238
239
|
* Always uses the explicit `{ style, props }` shape (with Reanimated's full StyleProps).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/animation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACN,kCAAkC,EAClC,gCAAgC,EAChC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACzC,sBAAsB,EACpB,uBAAuB,GACvB,gBAAgB,GAChB,
|
|
1
|
+
{"version":3,"file":"animation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/animation.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,6 @@ export type { AnimatedViewStyle, AnimationConfig, ScreenInterpolationProps, Scre
|
|
|
3
3
|
export type { BoundsAccessor, BoundsMethod, BoundsNavigationAccessor, BoundsNavigationRevealOptions, BoundsNavigationRevealStyle, BoundsNavigationZoomOpacityRange, BoundsNavigationZoomOpacityRanges, BoundsNavigationZoomOptions, BoundsNavigationZoomStyle, } from "./bounds.types";
|
|
4
4
|
export type { ActivationArea, GestureActivationArea, GestureDirection, GestureValues, PanGestureDirection, PinchGestureDirection, SideActivation, } from "./gesture.types";
|
|
5
5
|
export type { OverlayProps } from "./overlay.types";
|
|
6
|
-
export type { Layout, ScreenKey, ScreenTransitionConfig, TransitionAwareProps, } from "./screen.types";
|
|
6
|
+
export type { GestureTracking, Layout, ScreenKey, ScreenTransitionConfig, TransitionAwareProps, } from "./screen.types";
|
|
7
7
|
export type { BaseStackDescriptor, BaseStackNavigation, BaseStackRoute, BaseStackScene, BaseStackState, DescriptorMap, } from "./stack.types";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EACX,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,iCAAiC,EACjC,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EACX,MAAM,EACN,SAAS,EACT,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,GACb,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EACX,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,iCAAiC,EACjC,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACd,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EACX,eAAe,EACf,MAAM,EACN,SAAS,EACT,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,GACb,MAAM,eAAe,CAAC"}
|
|
@@ -21,6 +21,7 @@ export type ScreenLayouts = {
|
|
|
21
21
|
};
|
|
22
22
|
export type ScreenKey = string;
|
|
23
23
|
export type SheetScrollGestureBehavior = "expand-and-collapse" | "collapse-only";
|
|
24
|
+
export type GestureTracking = "auto" | "never" | "always";
|
|
24
25
|
/**
|
|
25
26
|
* A single snap point value. Either a fraction of screen height (0–1) or
|
|
26
27
|
* `'auto'` to snap to the intrinsic height of the screen content.
|
|
@@ -108,21 +109,17 @@ export type ScreenTransitionConfig = {
|
|
|
108
109
|
*/
|
|
109
110
|
gestureEnabled?: boolean;
|
|
110
111
|
/**
|
|
111
|
-
*
|
|
112
|
-
* live gesture values while preventing gesture dismissal.
|
|
112
|
+
* Controls whether the screen tracks live gesture values.
|
|
113
113
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
114
|
+
* - `"auto"` tracks gestures when dismissal is enabled, or when snap points
|
|
115
|
+
* can move without dismissal.
|
|
116
|
+
* - `"never"` disables gesture tracking for the screen.
|
|
117
|
+
* - `"always"` keeps tracking live gesture values even when
|
|
118
|
+
* `gestureEnabled` is `false`, without allowing dismiss.
|
|
117
119
|
*
|
|
118
|
-
*
|
|
119
|
-
* `gestureEnabled={false}`; this flag mainly affects disabled non-snap
|
|
120
|
-
* gestures.
|
|
121
|
-
*
|
|
122
|
-
* @experimental This API may change in future versions.
|
|
123
|
-
* @default false
|
|
120
|
+
* @default "auto"
|
|
124
121
|
*/
|
|
125
|
-
|
|
122
|
+
gestureTracking?: GestureTracking;
|
|
126
123
|
/**
|
|
127
124
|
* The direction(s) of the screen gesture used to dismiss the screen.
|
|
128
125
|
*
|
|
@@ -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,EACX,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,0BAA0B,GACnC,qBAAqB,GACrB,eAAe,CAAC;
|
|
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,EACX,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,0BAA0B,GACnC,qBAAqB,GACrB,eAAe,CAAC;AACnB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;AAEhF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;;;;;OAQG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAE1C;;;;OAIG;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;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnD;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;OASG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;;;;;;;OASG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IAEzB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;OAWG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IAExD;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/utils/bounds/navigation/reveal/build.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAMhF,wBAAgB,iBAAiB,CAAC,EACjC,GAAG,EACH,KAAK,EACL,aAAa,GACb,EAAE,uBAAuB,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../../src/shared/utils/bounds/navigation/reveal/build.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAMhF,wBAAgB,iBAAiB,CAAC,EACjC,GAAG,EACH,KAAK,EACL,aAAa,GACb,EAAE,uBAAuB,GAAG,uBAAuB,CAibnD"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
/** biome-ignore-all lint/style/noNonNullAssertion: <Screen gesture is under the gesture context, so this will always exist.> */
|
|
2
|
-
import { memo
|
|
2
|
+
import { memo } from "react";
|
|
3
3
|
import { StyleSheet, View } from "react-native";
|
|
4
4
|
import { GestureDetector } from "react-native-gesture-handler";
|
|
5
5
|
import Animated, {
|
|
6
|
-
runOnJS,
|
|
7
6
|
useAnimatedProps,
|
|
8
|
-
useAnimatedReaction,
|
|
9
7
|
useAnimatedStyle,
|
|
10
8
|
} from "react-native-reanimated";
|
|
11
9
|
import { NO_PROPS, NO_STYLES } from "../../../constants";
|
|
12
10
|
import { useDescriptors } from "../../../providers/screen/descriptors";
|
|
13
11
|
import { useGestureContext } from "../../../providers/screen/gestures";
|
|
14
|
-
import { useScreenOptionsContext } from "../../../providers/screen/options";
|
|
15
12
|
import { useScreenStyles } from "../../../providers/screen/styles";
|
|
16
13
|
import { useContentLayout } from "../hooks/use-content-layout";
|
|
17
14
|
import { MaybeMaskedNavigationContainer } from "./maybe-masked-navigation-container";
|
|
@@ -29,23 +26,7 @@ export const ContentLayer = memo(
|
|
|
29
26
|
const { current } = useDescriptors();
|
|
30
27
|
|
|
31
28
|
const gestureContext = useGestureContext();
|
|
32
|
-
const
|
|
33
|
-
const [runtimeNavigationMaskEnabled, setRuntimeNavigationMaskEnabled] =
|
|
34
|
-
useState<boolean | undefined>(undefined);
|
|
35
|
-
useAnimatedReaction(
|
|
36
|
-
() => screenOptions.get().navigationMaskEnabled,
|
|
37
|
-
(next, previous) => {
|
|
38
|
-
"worklet";
|
|
39
|
-
if (next !== previous) {
|
|
40
|
-
runOnJS(setRuntimeNavigationMaskEnabled)(next);
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
[screenOptions],
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
const isNavigationMaskEnabled = !!(
|
|
47
|
-
runtimeNavigationMaskEnabled ?? current.options.navigationMaskEnabled
|
|
48
|
-
);
|
|
29
|
+
const isNavigationMaskEnabled = !!current.options.navigationMaskEnabled;
|
|
49
30
|
const contentPointerEvents = isBackdropActive ? "box-none" : pointerEvents;
|
|
50
31
|
|
|
51
32
|
const hasAutoSnapPoint =
|
package/src/shared/constants.ts
CHANGED
|
@@ -9,7 +9,11 @@ import type {
|
|
|
9
9
|
ActivationArea,
|
|
10
10
|
GestureProgressMode,
|
|
11
11
|
} from "./types/gesture.types";
|
|
12
|
-
import type {
|
|
12
|
+
import type {
|
|
13
|
+
GestureTracking,
|
|
14
|
+
Layout,
|
|
15
|
+
SheetScrollGestureBehavior,
|
|
16
|
+
} from "./types/screen.types";
|
|
13
17
|
import type { BaseStackRoute } from "./types/stack.types";
|
|
14
18
|
|
|
15
19
|
/**
|
|
@@ -161,6 +165,7 @@ export const DEFAULT_GESTURE_SNAP_VELOCITY_IMPACT = 0.1;
|
|
|
161
165
|
export const DEFAULT_GESTURE_SENSITIVITY = 1;
|
|
162
166
|
export const DEFAULT_GESTURE_RELEASE_VELOCITY_SCALE = 1;
|
|
163
167
|
export const DEFAULT_GESTURE_DIRECTION = "horizontal";
|
|
168
|
+
export const DEFAULT_GESTURE_TRACKING: GestureTracking = "auto";
|
|
164
169
|
export const DEFAULT_GESTURE_PROGRESS_MODE: GestureProgressMode =
|
|
165
170
|
"progress-driven";
|
|
166
171
|
export const DEFAULT_GESTURE_SNAP_LOCKED = false;
|
|
@@ -40,8 +40,7 @@ export const buildScreenTransitionOptions = (
|
|
|
40
40
|
return {
|
|
41
41
|
navigationMaskEnabled: options.navigationMaskEnabled,
|
|
42
42
|
gestureEnabled: options.gestureEnabled,
|
|
43
|
-
|
|
44
|
-
options.experimental_allowDisabledGestureTracking,
|
|
43
|
+
gestureTracking: options.gestureTracking,
|
|
45
44
|
gestureDirection: cloneGestureDirection(options.gestureDirection),
|
|
46
45
|
gestureSensitivity: options.gestureSensitivity,
|
|
47
46
|
gestureVelocityImpact: options.gestureVelocityImpact,
|
|
@@ -3,7 +3,10 @@ import {
|
|
|
3
3
|
LOGICAL_SETTLE_PROGRESS_THRESHOLD,
|
|
4
4
|
LOGICAL_SETTLE_REQUIRED_FRAMES,
|
|
5
5
|
} from "../../../../../constants";
|
|
6
|
-
import type {
|
|
6
|
+
import type {
|
|
7
|
+
ScreenTransitionOptions,
|
|
8
|
+
TransitionInterpolatorOptions,
|
|
9
|
+
} from "../../../../../types/animation.types";
|
|
7
10
|
import type { Layout } from "../../../../../types/screen.types";
|
|
8
11
|
import { resolveGestureDrivenProgress } from "./gesture-progress";
|
|
9
12
|
import {
|
|
@@ -23,7 +26,7 @@ const LOGICAL_SETTLE_STICKY_PROGRESS_THRESHOLD =
|
|
|
23
26
|
|
|
24
27
|
const mergeTransitionOptions = (
|
|
25
28
|
base: ScreenTransitionOptions,
|
|
26
|
-
effective:
|
|
29
|
+
effective: TransitionInterpolatorOptions | undefined,
|
|
27
30
|
slot: ScreenTransitionOptions,
|
|
28
31
|
): ScreenTransitionOptions => {
|
|
29
32
|
"worklet";
|
|
@@ -31,12 +34,9 @@ const mergeTransitionOptions = (
|
|
|
31
34
|
return base;
|
|
32
35
|
}
|
|
33
36
|
|
|
34
|
-
slot.navigationMaskEnabled =
|
|
35
|
-
effective.navigationMaskEnabled ?? base.navigationMaskEnabled;
|
|
37
|
+
slot.navigationMaskEnabled = base.navigationMaskEnabled;
|
|
36
38
|
slot.gestureEnabled = effective.gestureEnabled ?? base.gestureEnabled;
|
|
37
|
-
slot.
|
|
38
|
-
effective.experimental_allowDisabledGestureTracking ??
|
|
39
|
-
base.experimental_allowDisabledGestureTracking;
|
|
39
|
+
slot.gestureTracking = base.gestureTracking;
|
|
40
40
|
slot.gestureDirection = effective.gestureDirection ?? base.gestureDirection;
|
|
41
41
|
slot.gestureSensitivity =
|
|
42
42
|
effective.gestureSensitivity ?? base.gestureSensitivity;
|
|
@@ -66,7 +66,7 @@ const mergeTransitionOptions = (
|
|
|
66
66
|
export const hydrateTransitionState = (
|
|
67
67
|
s: BuiltState,
|
|
68
68
|
dimensions: Layout,
|
|
69
|
-
effectiveOptions?:
|
|
69
|
+
effectiveOptions?: TransitionInterpolatorOptions,
|
|
70
70
|
) => {
|
|
71
71
|
"worklet";
|
|
72
72
|
const out = s.unwrapped;
|
|
@@ -76,6 +76,7 @@ export const hydrateTransitionState = (
|
|
|
76
76
|
effectiveOptions,
|
|
77
77
|
s.optionsSlot,
|
|
78
78
|
);
|
|
79
|
+
const canDismiss = options.gestureEnabled !== false;
|
|
79
80
|
out.willAnimate = s.willAnimate.get();
|
|
80
81
|
out.closing = s.closing.get();
|
|
81
82
|
out.entering = s.entering.get();
|
|
@@ -107,9 +108,16 @@ export const hydrateTransitionState = (
|
|
|
107
108
|
getResolvedSnapBounds(
|
|
108
109
|
s.sortedNumericSnapPoints,
|
|
109
110
|
s.hasAutoSnapPoint ? s.resolvedAutoSnapPoint.get() : null,
|
|
111
|
+
canDismiss,
|
|
110
112
|
),
|
|
111
113
|
);
|
|
112
114
|
|
|
115
|
+
// Unsure where else to place this if im being honest.
|
|
116
|
+
// I think for here is fine
|
|
117
|
+
if (s.effectiveProgress.get() !== out.progress) {
|
|
118
|
+
s.effectiveProgress.set(out.progress);
|
|
119
|
+
}
|
|
120
|
+
|
|
113
121
|
const hasResidualGestureValues =
|
|
114
122
|
Math.abs(out.gesture.normX) > EPSILON ||
|
|
115
123
|
Math.abs(out.gesture.normY) > EPSILON ||
|
package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.ts
CHANGED
|
@@ -48,6 +48,7 @@ const getResolvedSnapPointAt = (
|
|
|
48
48
|
export const getResolvedSnapBounds = (
|
|
49
49
|
snapPoints: number[],
|
|
50
50
|
resolvedAutoSnap: number | null,
|
|
51
|
+
canDismiss = true,
|
|
51
52
|
): SnapBounds | null => {
|
|
52
53
|
"worklet";
|
|
53
54
|
const snapPointCount = getResolvedSnapPointCount(
|
|
@@ -77,7 +78,7 @@ export const getResolvedSnapBounds = (
|
|
|
77
78
|
);
|
|
78
79
|
|
|
79
80
|
return {
|
|
80
|
-
min: Math.min(0, firstSnapPoint),
|
|
81
|
+
min: canDismiss ? Math.min(0, firstSnapPoint) : firstSnapPoint,
|
|
81
82
|
max: lastSnapPoint,
|
|
82
83
|
};
|
|
83
84
|
};
|
|
@@ -9,6 +9,7 @@ import type { BaseStackRoute } from "../../../../../types/stack.types";
|
|
|
9
9
|
|
|
10
10
|
export type BuiltState = {
|
|
11
11
|
progress: SharedValue<number>;
|
|
12
|
+
effectiveProgress: SharedValue<number>;
|
|
12
13
|
willAnimate: SharedValue<number>;
|
|
13
14
|
closing: SharedValue<number>;
|
|
14
15
|
progressAnimating: SharedValue<number>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
1
2
|
import { useWindowDimensions } from "react-native";
|
|
2
3
|
import {
|
|
3
4
|
type DerivedValue,
|
|
@@ -8,6 +9,7 @@ import {
|
|
|
8
9
|
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
9
10
|
import { DEFAULT_SCREEN_TRANSITION_STATE } from "../../../../constants";
|
|
10
11
|
import { useStack } from "../../../../hooks/navigation/use-stack";
|
|
12
|
+
import { AnimationStore } from "../../../../stores/animation.store";
|
|
11
13
|
import type {
|
|
12
14
|
ScreenInterpolationProps,
|
|
13
15
|
ScreenStyleInterpolator,
|
|
@@ -18,6 +20,7 @@ import { updateDerivations } from "./derivations";
|
|
|
18
20
|
import { hasTransitionsEnabled } from "./has-transitions-enabled";
|
|
19
21
|
import { hydrateTransitionState } from "./hydrate-transition-state";
|
|
20
22
|
import type { SelectedInterpolatorOptions } from "./selected-interpolator-options";
|
|
23
|
+
import { deriveStackProgress } from "./stack-progress";
|
|
21
24
|
import { useBuildTransitionState } from "./use-build-transition-state";
|
|
22
25
|
|
|
23
26
|
export type ScreenInterpolatorFrame = Omit<ScreenInterpolationProps, "bounds">;
|
|
@@ -55,7 +58,7 @@ const createInitialBaseInterpolatorProps = (
|
|
|
55
58
|
};
|
|
56
59
|
|
|
57
60
|
export function useScreenAnimationPipeline(): ScreenAnimationPipeline {
|
|
58
|
-
const { flags,
|
|
61
|
+
const { flags, routeKeys } = useStack();
|
|
59
62
|
const dimensions = useWindowDimensions();
|
|
60
63
|
const insets = useSafeAreaInsets();
|
|
61
64
|
const transitionsAlwaysOn = flags.TRANSITIONS_ALWAYS_ON;
|
|
@@ -72,6 +75,11 @@ export function useScreenAnimationPipeline(): ScreenAnimationPipeline {
|
|
|
72
75
|
|
|
73
76
|
const currentRouteKey = currDescriptor?.route?.key;
|
|
74
77
|
const currentIndex = routeKeys.indexOf(currentRouteKey);
|
|
78
|
+
const effectiveProgressValues = useMemo(() => {
|
|
79
|
+
return routeKeys.map((routeKey) =>
|
|
80
|
+
AnimationStore.getValue(routeKey, "effectiveProgress"),
|
|
81
|
+
);
|
|
82
|
+
}, [routeKeys]);
|
|
75
83
|
|
|
76
84
|
const nextRouteKey = nextDescriptor?.route?.key;
|
|
77
85
|
const nextHasTransitions =
|
|
@@ -130,10 +138,16 @@ export function useScreenAnimationPipeline(): ScreenAnimationPipeline {
|
|
|
130
138
|
|
|
131
139
|
updateDerivations(frame);
|
|
132
140
|
|
|
133
|
-
frame.stackProgress =
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
141
|
+
frame.stackProgress = deriveStackProgress(
|
|
142
|
+
routeKeys,
|
|
143
|
+
effectiveProgressValues,
|
|
144
|
+
currentIndex,
|
|
145
|
+
frame.progress,
|
|
146
|
+
currentRouteKey,
|
|
147
|
+
frame.current.progress,
|
|
148
|
+
nextRouteKey,
|
|
149
|
+
frame.next?.progress,
|
|
150
|
+
);
|
|
137
151
|
frame.logicallySettled = frame.active.logicallySettled;
|
|
138
152
|
|
|
139
153
|
return frame;
|
|
@@ -59,10 +59,7 @@ const areInterpolatorOptionsEqual = (
|
|
|
59
59
|
if (!left || !right) return false;
|
|
60
60
|
|
|
61
61
|
return (
|
|
62
|
-
left.navigationMaskEnabled === right.navigationMaskEnabled &&
|
|
63
62
|
left.gestureEnabled === right.gestureEnabled &&
|
|
64
|
-
left.experimental_allowDisabledGestureTracking ===
|
|
65
|
-
right.experimental_allowDisabledGestureTracking &&
|
|
66
63
|
areGestureDirectionsEqual(left.gestureDirection, right.gestureDirection) &&
|
|
67
64
|
left.gestureSensitivity === right.gestureSensitivity &&
|
|
68
65
|
left.gestureVelocityImpact === right.gestureVelocityImpact &&
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { SharedValue } from "react-native-reanimated";
|
|
2
|
+
|
|
3
|
+
export const deriveStackProgress = (
|
|
4
|
+
routeKeys: string[],
|
|
5
|
+
effectiveProgressValues: SharedValue<number>[],
|
|
6
|
+
currentIndex: number,
|
|
7
|
+
fallbackProgress: number,
|
|
8
|
+
currentRouteKey: string | undefined,
|
|
9
|
+
currentProgress: number,
|
|
10
|
+
nextRouteKey: string | undefined,
|
|
11
|
+
nextProgress: number | undefined,
|
|
12
|
+
) => {
|
|
13
|
+
"worklet";
|
|
14
|
+
if (currentIndex < 0) return fallbackProgress;
|
|
15
|
+
|
|
16
|
+
let total = 0;
|
|
17
|
+
for (let i = currentIndex; i < effectiveProgressValues.length; i++) {
|
|
18
|
+
const routeKey = routeKeys[i];
|
|
19
|
+
if (routeKey === currentRouteKey) {
|
|
20
|
+
total += currentProgress;
|
|
21
|
+
} else if (routeKey === nextRouteKey && nextProgress !== undefined) {
|
|
22
|
+
total += nextProgress;
|
|
23
|
+
} else {
|
|
24
|
+
total += effectiveProgressValues[i].get();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return total;
|
|
29
|
+
};
|
|
@@ -19,6 +19,7 @@ import { toPlainRoute, toPlainValue } from "./worklet";
|
|
|
19
19
|
|
|
20
20
|
type BuiltState = {
|
|
21
21
|
progress: SharedValue<number>;
|
|
22
|
+
effectiveProgress: SharedValue<number>;
|
|
22
23
|
willAnimate: SharedValue<number>;
|
|
23
24
|
closing: SharedValue<number>;
|
|
24
25
|
progressAnimating: SharedValue<number>;
|
|
@@ -62,6 +63,7 @@ export const useBuildTransitionState = (
|
|
|
62
63
|
|
|
63
64
|
return {
|
|
64
65
|
progress: AnimationStore.getValue(key, "progress"),
|
|
66
|
+
effectiveProgress: AnimationStore.getValue(key, "effectiveProgress"),
|
|
65
67
|
willAnimate: AnimationStore.getValue(key, "willAnimate"),
|
|
66
68
|
closing: AnimationStore.getValue(key, "closing"),
|
|
67
69
|
entering: AnimationStore.getValue(key, "entering"),
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
DEFAULT_GESTURE_SENSITIVITY,
|
|
7
7
|
DEFAULT_GESTURE_SNAP_LOCKED,
|
|
8
8
|
DEFAULT_GESTURE_SNAP_VELOCITY_IMPACT,
|
|
9
|
+
DEFAULT_GESTURE_TRACKING,
|
|
9
10
|
DEFAULT_GESTURE_VELOCITY_IMPACT,
|
|
10
11
|
DEFAULT_SHEET_SCROLL_GESTURE_BEHAVIOR,
|
|
11
12
|
} from "../../../../constants";
|
|
@@ -15,6 +16,7 @@ import type {
|
|
|
15
16
|
GestureProgressMode,
|
|
16
17
|
} from "../../../../types/gesture.types";
|
|
17
18
|
import type {
|
|
19
|
+
GestureTracking,
|
|
18
20
|
ScreenTransitionConfig,
|
|
19
21
|
SheetScrollGestureBehavior,
|
|
20
22
|
SnapPoint,
|
|
@@ -39,13 +41,13 @@ import {
|
|
|
39
41
|
import { validateSnapPoints } from "./snap-points";
|
|
40
42
|
|
|
41
43
|
export type GesturePolicyOptions = {
|
|
42
|
-
experimental_allowDisabledGestureTracking?: boolean;
|
|
43
44
|
expandViaScrollView?: boolean;
|
|
44
45
|
gestureActivationArea?: GestureActivationArea;
|
|
45
46
|
gestureDirection?: GestureDirection | GestureDirection[];
|
|
46
47
|
gestureDrivesProgress?: boolean;
|
|
47
48
|
gestureEnabled?: boolean;
|
|
48
49
|
gestureProgressMode?: GestureProgressMode;
|
|
50
|
+
gestureTracking?: GestureTracking;
|
|
49
51
|
gestureReleaseVelocityScale?: number;
|
|
50
52
|
gestureResponseDistance?: number;
|
|
51
53
|
gestureSensitivity?: number;
|
|
@@ -144,18 +146,26 @@ export const resolveGestureCanTrack = ({
|
|
|
144
146
|
isFirstKey,
|
|
145
147
|
canDismiss,
|
|
146
148
|
hasSnapPoints,
|
|
147
|
-
|
|
149
|
+
gestureTracking = DEFAULT_GESTURE_TRACKING,
|
|
148
150
|
}: {
|
|
149
151
|
isFirstKey: boolean;
|
|
150
152
|
canDismiss: boolean;
|
|
151
153
|
hasSnapPoints: boolean;
|
|
152
|
-
|
|
154
|
+
gestureTracking?: GestureTracking;
|
|
153
155
|
}) => {
|
|
154
156
|
"worklet";
|
|
155
157
|
if (isFirstKey) {
|
|
156
158
|
return false;
|
|
157
159
|
}
|
|
158
160
|
|
|
161
|
+
if (gestureTracking === "never") {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (gestureTracking === "always") {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
|
|
159
169
|
if (canDismiss) {
|
|
160
170
|
return true;
|
|
161
171
|
}
|
|
@@ -164,7 +174,7 @@ export const resolveGestureCanTrack = ({
|
|
|
164
174
|
return true;
|
|
165
175
|
}
|
|
166
176
|
|
|
167
|
-
return
|
|
177
|
+
return false;
|
|
168
178
|
};
|
|
169
179
|
|
|
170
180
|
export const resolvePanPolicy = (
|
|
@@ -234,8 +244,7 @@ const resolveGestureParticipation = ({
|
|
|
234
244
|
isFirstKey,
|
|
235
245
|
canDismiss,
|
|
236
246
|
hasSnapPoints: effectiveSnapPoints.hasSnapPoints,
|
|
237
|
-
|
|
238
|
-
options.experimental_allowDisabledGestureTracking,
|
|
247
|
+
gestureTracking: options.gestureTracking,
|
|
239
248
|
});
|
|
240
249
|
const claimedDirections = computeClaimedDirections(
|
|
241
250
|
canTrackGesture,
|
|
@@ -309,7 +318,11 @@ function resolveRuntimeCanTrackGesture(
|
|
|
309
318
|
return false;
|
|
310
319
|
}
|
|
311
320
|
|
|
312
|
-
if (options.
|
|
321
|
+
if (options.gestureTracking === "never") {
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (options.gestureTracking === "always") {
|
|
313
326
|
return true;
|
|
314
327
|
}
|
|
315
328
|
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
DEFAULT_GESTURE_SENSITIVITY,
|
|
7
7
|
DEFAULT_GESTURE_SNAP_LOCKED,
|
|
8
8
|
DEFAULT_GESTURE_SNAP_VELOCITY_IMPACT,
|
|
9
|
+
DEFAULT_GESTURE_TRACKING,
|
|
9
10
|
DEFAULT_GESTURE_VELOCITY_IMPACT,
|
|
10
11
|
DEFAULT_SHEET_SCROLL_GESTURE_BEHAVIOR,
|
|
11
12
|
} from "../../../constants";
|
|
@@ -126,6 +127,16 @@ const resolveSheetScrollGestureBehaviorOption = (
|
|
|
126
127
|
: fallback;
|
|
127
128
|
};
|
|
128
129
|
|
|
130
|
+
const resolveGestureTrackingOption = (
|
|
131
|
+
value: unknown,
|
|
132
|
+
fallback: RequiredScreenOption<"gestureTracking">,
|
|
133
|
+
): RequiredScreenOption<"gestureTracking"> => {
|
|
134
|
+
"worklet";
|
|
135
|
+
return value === "auto" || value === "never" || value === "always"
|
|
136
|
+
? value
|
|
137
|
+
: fallback;
|
|
138
|
+
};
|
|
139
|
+
|
|
129
140
|
const resolveBackdropBehaviorOption = (
|
|
130
141
|
value: unknown,
|
|
131
142
|
fallback: BackdropBehavior | undefined,
|
|
@@ -208,8 +219,7 @@ const areScreenOptionsEqual = (
|
|
|
208
219
|
return (
|
|
209
220
|
left.navigationMaskEnabled === right.navigationMaskEnabled &&
|
|
210
221
|
left.gestureEnabled === right.gestureEnabled &&
|
|
211
|
-
left.
|
|
212
|
-
right.experimental_allowDisabledGestureTracking &&
|
|
222
|
+
left.gestureTracking === right.gestureTracking &&
|
|
213
223
|
areGestureDirectionsEqual(left.gestureDirection, right.gestureDirection) &&
|
|
214
224
|
left.gestureSensitivity === right.gestureSensitivity &&
|
|
215
225
|
left.gestureVelocityImpact === right.gestureVelocityImpact &&
|
|
@@ -244,9 +254,9 @@ export const resolveBaseScreenOptions = (
|
|
|
244
254
|
undefined,
|
|
245
255
|
),
|
|
246
256
|
gestureEnabled: resolveBooleanOption(options.gestureEnabled, undefined),
|
|
247
|
-
|
|
248
|
-
options.
|
|
249
|
-
|
|
257
|
+
gestureTracking: resolveGestureTrackingOption(
|
|
258
|
+
options.gestureTracking,
|
|
259
|
+
DEFAULT_GESTURE_TRACKING,
|
|
250
260
|
),
|
|
251
261
|
gestureDirection: resolveGestureDirectionOption(
|
|
252
262
|
options.gestureDirection,
|
|
@@ -327,18 +337,12 @@ export const syncScreenOptionsOverrides = (
|
|
|
327
337
|
);
|
|
328
338
|
|
|
329
339
|
const next: ScreenOptionsState = {
|
|
330
|
-
navigationMaskEnabled:
|
|
331
|
-
options?.navigationMaskEnabled,
|
|
332
|
-
base.navigationMaskEnabled,
|
|
333
|
-
),
|
|
340
|
+
navigationMaskEnabled: base.navigationMaskEnabled,
|
|
334
341
|
gestureEnabled: resolveBooleanOption(
|
|
335
342
|
options?.gestureEnabled,
|
|
336
343
|
base.gestureEnabled,
|
|
337
344
|
),
|
|
338
|
-
|
|
339
|
-
options?.experimental_allowDisabledGestureTracking,
|
|
340
|
-
base.experimental_allowDisabledGestureTracking,
|
|
341
|
-
),
|
|
345
|
+
gestureTracking: base.gestureTracking,
|
|
342
346
|
gestureDirection: resolveGestureDirectionOption(
|
|
343
347
|
options?.gestureDirection,
|
|
344
348
|
base.gestureDirection,
|
|
@@ -11,7 +11,7 @@ export type OptionalScreenOption<K extends keyof ScreenTransitionOptions> =
|
|
|
11
11
|
export type ScreenOptionsSnapshot = {
|
|
12
12
|
navigationMaskEnabled: OptionalScreenOption<"navigationMaskEnabled">;
|
|
13
13
|
gestureEnabled: OptionalScreenOption<"gestureEnabled">;
|
|
14
|
-
|
|
14
|
+
gestureTracking: RequiredScreenOption<"gestureTracking">;
|
|
15
15
|
gestureDirection: RequiredScreenOption<"gestureDirection">;
|
|
16
16
|
gestureSensitivity: RequiredScreenOption<"gestureSensitivity">;
|
|
17
17
|
gestureVelocityImpact: RequiredScreenOption<"gestureVelocityImpact">;
|