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.
Files changed (128) hide show
  1. package/lib/commonjs/shared/components/screen-container/layers/content.js +1 -11
  2. package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
  3. package/lib/commonjs/shared/constants.js +2 -1
  4. package/lib/commonjs/shared/constants.js.map +1 -1
  5. package/lib/commonjs/shared/hooks/navigation/use-stack.js.map +1 -1
  6. package/lib/commonjs/shared/providers/screen/animation/helpers/build-screen-transition-options.js +1 -1
  7. package/lib/commonjs/shared/providers/screen/animation/helpers/build-screen-transition-options.js.map +1 -1
  8. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +10 -3
  9. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  10. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js +2 -2
  11. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js.map +1 -1
  12. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +7 -2
  13. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  14. package/lib/commonjs/shared/providers/screen/animation/helpers/selected-interpolator-options.js +1 -1
  15. package/lib/commonjs/shared/providers/screen/animation/helpers/selected-interpolator-options.js.map +1 -1
  16. package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js +25 -0
  17. package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -0
  18. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js +1 -0
  19. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  20. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js +13 -4
  21. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  22. package/lib/commonjs/shared/providers/screen/options/helpers.js +9 -4
  23. package/lib/commonjs/shared/providers/screen/options/helpers.js.map +1 -1
  24. package/lib/commonjs/shared/providers/stack/direct.provider.js +1 -3
  25. package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -1
  26. package/lib/commonjs/shared/providers/stack/helpers/use-stack-derived.js +2 -12
  27. package/lib/commonjs/shared/providers/stack/helpers/use-stack-derived.js.map +1 -1
  28. package/lib/commonjs/shared/providers/stack/managed.provider.js +1 -3
  29. package/lib/commonjs/shared/providers/stack/managed.provider.js.map +1 -1
  30. package/lib/commonjs/shared/stores/animation.store.js +5 -3
  31. package/lib/commonjs/shared/stores/animation.store.js.map +1 -1
  32. package/lib/commonjs/shared/utils/bounds/navigation/reveal/build.js +0 -2
  33. package/lib/commonjs/shared/utils/bounds/navigation/reveal/build.js.map +1 -1
  34. package/lib/module/shared/components/screen-container/layers/content.js +3 -13
  35. package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
  36. package/lib/module/shared/constants.js +1 -0
  37. package/lib/module/shared/constants.js.map +1 -1
  38. package/lib/module/shared/hooks/navigation/use-stack.js.map +1 -1
  39. package/lib/module/shared/providers/screen/animation/helpers/build-screen-transition-options.js +1 -1
  40. package/lib/module/shared/providers/screen/animation/helpers/build-screen-transition-options.js.map +1 -1
  41. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +10 -3
  42. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  43. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js +2 -2
  44. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.js.map +1 -1
  45. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +7 -2
  46. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  47. package/lib/module/shared/providers/screen/animation/helpers/selected-interpolator-options.js +1 -1
  48. package/lib/module/shared/providers/screen/animation/helpers/selected-interpolator-options.js.map +1 -1
  49. package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js +20 -0
  50. package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -0
  51. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js +1 -0
  52. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  53. package/lib/module/shared/providers/screen/gestures/shared/policy.js +14 -5
  54. package/lib/module/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  55. package/lib/module/shared/providers/screen/options/helpers.js +10 -5
  56. package/lib/module/shared/providers/screen/options/helpers.js.map +1 -1
  57. package/lib/module/shared/providers/stack/direct.provider.js +1 -3
  58. package/lib/module/shared/providers/stack/direct.provider.js.map +1 -1
  59. package/lib/module/shared/providers/stack/helpers/use-stack-derived.js +2 -12
  60. package/lib/module/shared/providers/stack/helpers/use-stack-derived.js.map +1 -1
  61. package/lib/module/shared/providers/stack/managed.provider.js +1 -3
  62. package/lib/module/shared/providers/stack/managed.provider.js.map +1 -1
  63. package/lib/module/shared/stores/animation.store.js +5 -3
  64. package/lib/module/shared/stores/animation.store.js.map +1 -1
  65. package/lib/module/shared/types/animation.types.js +2 -1
  66. package/lib/module/shared/types/animation.types.js.map +1 -1
  67. package/lib/module/shared/utils/bounds/navigation/reveal/build.js +0 -2
  68. package/lib/module/shared/utils/bounds/navigation/reveal/build.js.map +1 -1
  69. package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
  70. package/lib/typescript/shared/constants.d.ts +2 -1
  71. package/lib/typescript/shared/constants.d.ts.map +1 -1
  72. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +0 -1
  73. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
  74. package/lib/typescript/shared/index.d.ts +12 -12
  75. package/lib/typescript/shared/providers/screen/animation/helpers/build-screen-transition-options.d.ts.map +1 -1
  76. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts +2 -2
  77. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts.map +1 -1
  78. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.d.ts +1 -1
  79. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.d.ts.map +1 -1
  80. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts +1 -0
  81. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts.map +1 -1
  82. package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  83. package/lib/typescript/shared/providers/screen/animation/helpers/selected-interpolator-options.d.ts.map +1 -1
  84. package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts +3 -0
  85. package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts.map +1 -0
  86. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts +1 -0
  87. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts.map +1 -1
  88. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts +4 -4
  89. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts.map +1 -1
  90. package/lib/typescript/shared/providers/screen/options/helpers.d.ts.map +1 -1
  91. package/lib/typescript/shared/providers/screen/options/types.d.ts +1 -1
  92. package/lib/typescript/shared/providers/screen/options/types.d.ts.map +1 -1
  93. package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -1
  94. package/lib/typescript/shared/providers/stack/helpers/use-stack-derived.d.ts +5 -5
  95. package/lib/typescript/shared/providers/stack/helpers/use-stack-derived.d.ts.map +1 -1
  96. package/lib/typescript/shared/providers/stack/managed.provider.d.ts.map +1 -1
  97. package/lib/typescript/shared/stores/animation.store.d.ts +4 -3
  98. package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -1
  99. package/lib/typescript/shared/types/animation.types.d.ts +4 -3
  100. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  101. package/lib/typescript/shared/types/index.d.ts +1 -1
  102. package/lib/typescript/shared/types/index.d.ts.map +1 -1
  103. package/lib/typescript/shared/types/screen.types.d.ts +9 -12
  104. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  105. package/lib/typescript/shared/utils/bounds/navigation/reveal/build.d.ts.map +1 -1
  106. package/package.json +1 -1
  107. package/src/shared/components/screen-container/layers/content.tsx +2 -21
  108. package/src/shared/constants.ts +6 -1
  109. package/src/shared/hooks/navigation/use-stack.tsx +0 -1
  110. package/src/shared/providers/screen/animation/helpers/build-screen-transition-options.ts +1 -2
  111. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/index.ts +16 -8
  112. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/snap-points.ts +2 -1
  113. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/types.ts +1 -0
  114. package/src/shared/providers/screen/animation/helpers/pipeline.ts +19 -5
  115. package/src/shared/providers/screen/animation/helpers/selected-interpolator-options.ts +0 -3
  116. package/src/shared/providers/screen/animation/helpers/stack-progress.ts +29 -0
  117. package/src/shared/providers/screen/animation/helpers/use-build-transition-state.ts +2 -0
  118. package/src/shared/providers/screen/gestures/shared/policy.ts +20 -7
  119. package/src/shared/providers/screen/options/helpers.ts +17 -13
  120. package/src/shared/providers/screen/options/types.ts +1 -1
  121. package/src/shared/providers/stack/direct.provider.tsx +2 -12
  122. package/src/shared/providers/stack/helpers/use-stack-derived.ts +6 -15
  123. package/src/shared/providers/stack/managed.provider.tsx +1 -5
  124. package/src/shared/stores/animation.store.ts +6 -3
  125. package/src/shared/types/animation.types.ts +7 -3
  126. package/src/shared/types/index.ts +1 -0
  127. package/src/shared/types/screen.types.ts +9 -12
  128. 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. These
11
- * shared values track the current progress, whether a transition is about to
12
- * begin, and whether a screen is entering, closing, or actively animating.
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;AAYF;;;;GAIG;AACH,eAAO,MAAM,cAAc,6DASzB,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" | "experimental_allowDisabledGestureTracking" | "gestureDirection" | "gestureSensitivity" | "gestureVelocityImpact" | "gestureSnapVelocityImpact" | "gestureReleaseVelocityScale" | "gestureResponseDistance" | "gestureProgressMode" | "gestureDrivesProgress" | "gestureActivationArea" | "gestureSnapLocked" | "sheetScrollGestureBehavior" | "backdropBehavior">;
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":"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"}
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
- * Allows screens with `gestureEnabled={false}` to still activate gestures for
112
- * live gesture values while preventing gesture dismissal.
112
+ * Controls whether the screen tracks live gesture values.
113
113
  *
114
- * This is a v3 compatibility bridge for the next gesture behavior. Direction
115
- * ownership/claims participate while this is enabled so nested screens can
116
- * intentionally shadow parent gestures for resistance-style animations.
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
- * Screens with `snapPoints` already keep gesture tracking when
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
- experimental_allowDisabledGestureTracking?: boolean;
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":"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"}
1
+ {"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"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"}
@@ -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,CAmbnD"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screen-transitions",
3
- "version": "3.6.0-alpha.3",
3
+ "version": "3.6.0-alpha.4",
4
4
  "description": "Easy screen transitions for React Native and Expo",
5
5
  "author": "Ed",
6
6
  "license": "MIT",
@@ -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, useState } from "react";
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 screenOptions = useScreenOptionsContext();
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 =
@@ -9,7 +9,11 @@ import type {
9
9
  ActivationArea,
10
10
  GestureProgressMode,
11
11
  } from "./types/gesture.types";
12
- import type { Layout, SheetScrollGestureBehavior } from "./types/screen.types";
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;
@@ -30,7 +30,6 @@ export interface StackContextValue extends StackCoreContextValue {
30
30
  routeKeys: string[];
31
31
  routes: Route<string>[];
32
32
  scenes: StackScene[];
33
- stackProgress: DerivedValue<number>;
34
33
  optimisticFocusedIndex: DerivedValue<number>;
35
34
  }
36
35
 
@@ -40,8 +40,7 @@ export const buildScreenTransitionOptions = (
40
40
  return {
41
41
  navigationMaskEnabled: options.navigationMaskEnabled,
42
42
  gestureEnabled: options.gestureEnabled,
43
- experimental_allowDisabledGestureTracking:
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 { ScreenTransitionOptions } from "../../../../../types/animation.types";
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: ScreenTransitionOptions | undefined,
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.experimental_allowDisabledGestureTracking =
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?: ScreenTransitionOptions,
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 ||
@@ -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, stackProgress: rootStackProgress, routeKeys } = useStack();
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
- currentIndex >= 0
135
- ? rootStackProgress.get() - currentIndex
136
- : frame.progress;
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
- allowDisabledGestureTracking,
149
+ gestureTracking = DEFAULT_GESTURE_TRACKING,
148
150
  }: {
149
151
  isFirstKey: boolean;
150
152
  canDismiss: boolean;
151
153
  hasSnapPoints: boolean;
152
- allowDisabledGestureTracking?: boolean;
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 allowDisabledGestureTracking === true;
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
- allowDisabledGestureTracking:
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.experimental_allowDisabledGestureTracking === true) {
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.experimental_allowDisabledGestureTracking ===
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
- experimental_allowDisabledGestureTracking: resolveBooleanOption(
248
- options.experimental_allowDisabledGestureTracking,
249
- false,
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: resolveBooleanOption(
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
- experimental_allowDisabledGestureTracking: resolveBooleanOption(
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
- experimental_allowDisabledGestureTracking: RequiredScreenOption<"experimental_allowDisabledGestureTracking">;
14
+ gestureTracking: RequiredScreenOption<"gestureTracking">;
15
15
  gestureDirection: RequiredScreenOption<"gestureDirection">;
16
16
  gestureSensitivity: RequiredScreenOption<"gestureSensitivity">;
17
17
  gestureVelocityImpact: RequiredScreenOption<"gestureVelocityImpact">;