react-native-screen-transitions 3.2.1 → 3.3.0-beta.1

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 (173) hide show
  1. package/README.md +105 -10
  2. package/lib/commonjs/blank-stack/components/adjusted-screen.js +2 -2
  3. package/lib/commonjs/blank-stack/components/adjusted-screen.js.map +1 -1
  4. package/lib/commonjs/shared/components/create-transition-aware-component.js +8 -2
  5. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  6. package/lib/commonjs/shared/components/{root-transition-aware.js → screen-container.js} +28 -12
  7. package/lib/commonjs/shared/components/screen-container.js.map +1 -0
  8. package/lib/commonjs/shared/configs/presets.js +3 -3
  9. package/lib/commonjs/shared/configs/presets.js.map +1 -1
  10. package/lib/commonjs/shared/configs/specs.js +6 -1
  11. package/lib/commonjs/shared/configs/specs.js.map +1 -1
  12. package/lib/commonjs/shared/constants.js +36 -10
  13. package/lib/commonjs/shared/constants.js.map +1 -1
  14. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +25 -18
  15. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
  16. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +25 -202
  17. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  18. package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +342 -0
  19. package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -0
  20. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +47 -4
  21. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  22. package/lib/commonjs/shared/hooks/lifecycle/use-close-transition.js +3 -3
  23. package/lib/commonjs/shared/hooks/lifecycle/use-close-transition.js.map +1 -1
  24. package/lib/commonjs/shared/hooks/lifecycle/use-open-transition.js +25 -3
  25. package/lib/commonjs/shared/hooks/lifecycle/use-open-transition.js.map +1 -1
  26. package/lib/commonjs/shared/hooks/navigation/use-screen-state.js +33 -2
  27. package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -1
  28. package/lib/commonjs/shared/hooks/use-backdrop-pointer-events.js +32 -0
  29. package/lib/commonjs/shared/hooks/use-backdrop-pointer-events.js.map +1 -0
  30. package/lib/commonjs/shared/providers/gestures.provider.js +4 -2
  31. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
  32. package/lib/commonjs/shared/providers/screen/screen-composer.js +2 -2
  33. package/lib/commonjs/shared/providers/screen/screen-composer.js.map +1 -1
  34. package/lib/commonjs/shared/utils/animation/{start-screen-transition.js → animate-to-progress.js} +16 -8
  35. package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -0
  36. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +138 -0
  37. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  38. package/lib/commonjs/shared/utils/gesture/determine-snap-target.js +56 -0
  39. package/lib/commonjs/shared/utils/gesture/determine-snap-target.js.map +1 -0
  40. package/lib/commonjs/shared/utils/gesture/validate-snap-points.js +31 -0
  41. package/lib/commonjs/shared/utils/gesture/validate-snap-points.js.map +1 -0
  42. package/lib/commonjs/shared/utils/gesture/velocity.js +11 -0
  43. package/lib/commonjs/shared/utils/gesture/velocity.js.map +1 -1
  44. package/lib/commonjs/shared/utils/logger.js +22 -0
  45. package/lib/commonjs/shared/utils/logger.js.map +1 -0
  46. package/lib/module/blank-stack/components/adjusted-screen.js +1 -1
  47. package/lib/module/blank-stack/components/adjusted-screen.js.map +1 -1
  48. package/lib/module/shared/components/create-transition-aware-component.js +8 -2
  49. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  50. package/lib/module/shared/components/screen-container.js +64 -0
  51. package/lib/module/shared/components/screen-container.js.map +1 -0
  52. package/lib/module/shared/configs/presets.js +3 -3
  53. package/lib/module/shared/configs/presets.js.map +1 -1
  54. package/lib/module/shared/configs/specs.js +5 -0
  55. package/lib/module/shared/configs/specs.js.map +1 -1
  56. package/lib/module/shared/constants.js +34 -9
  57. package/lib/module/shared/constants.js.map +1 -1
  58. package/lib/module/shared/hooks/animation/use-screen-animation.js +25 -18
  59. package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
  60. package/lib/module/shared/hooks/gestures/use-build-gestures.js +25 -201
  61. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  62. package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +336 -0
  63. package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -0
  64. package/lib/module/shared/hooks/gestures/use-scroll-registry.js +47 -4
  65. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  66. package/lib/module/shared/hooks/lifecycle/use-close-transition.js +3 -3
  67. package/lib/module/shared/hooks/lifecycle/use-close-transition.js.map +1 -1
  68. package/lib/module/shared/hooks/lifecycle/use-open-transition.js +25 -3
  69. package/lib/module/shared/hooks/lifecycle/use-open-transition.js.map +1 -1
  70. package/lib/module/shared/hooks/navigation/use-screen-state.js +35 -4
  71. package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -1
  72. package/lib/module/shared/hooks/use-backdrop-pointer-events.js +28 -0
  73. package/lib/module/shared/hooks/use-backdrop-pointer-events.js.map +1 -0
  74. package/lib/module/shared/providers/gestures.provider.js +4 -2
  75. package/lib/module/shared/providers/gestures.provider.js.map +1 -1
  76. package/lib/module/shared/providers/screen/screen-composer.js +2 -2
  77. package/lib/module/shared/providers/screen/screen-composer.js.map +1 -1
  78. package/lib/module/shared/utils/animation/{start-screen-transition.js → animate-to-progress.js} +14 -6
  79. package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -0
  80. package/lib/module/shared/utils/gesture/check-gesture-activation.js +137 -0
  81. package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  82. package/lib/module/shared/utils/gesture/determine-snap-target.js +52 -0
  83. package/lib/module/shared/utils/gesture/determine-snap-target.js.map +1 -0
  84. package/lib/module/shared/utils/gesture/validate-snap-points.js +26 -0
  85. package/lib/module/shared/utils/gesture/validate-snap-points.js.map +1 -0
  86. package/lib/module/shared/utils/gesture/velocity.js +11 -0
  87. package/lib/module/shared/utils/gesture/velocity.js.map +1 -1
  88. package/lib/module/shared/utils/logger.js +17 -0
  89. package/lib/module/shared/utils/logger.js.map +1 -0
  90. package/lib/typescript/blank-stack/components/adjusted-screen.d.ts.map +1 -1
  91. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  92. package/lib/typescript/shared/components/screen-container.d.ts +6 -0
  93. package/lib/typescript/shared/components/screen-container.d.ts.map +1 -0
  94. package/lib/typescript/shared/configs/specs.d.ts +1 -0
  95. package/lib/typescript/shared/configs/specs.d.ts.map +1 -1
  96. package/lib/typescript/shared/constants.d.ts +9 -0
  97. package/lib/typescript/shared/constants.d.ts.map +1 -1
  98. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
  99. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +1 -1
  100. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  101. package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts +19 -0
  102. package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -0
  103. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts +5 -1
  104. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
  105. package/lib/typescript/shared/hooks/lifecycle/use-open-transition.d.ts.map +1 -1
  106. package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts +7 -0
  107. package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -1
  108. package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts +15 -0
  109. package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts.map +1 -0
  110. package/lib/typescript/shared/providers/gestures.provider.d.ts +1 -0
  111. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
  112. package/lib/typescript/shared/types/animation.types.d.ts +37 -2
  113. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  114. package/lib/typescript/shared/types/screen.types.d.ts +26 -0
  115. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  116. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts +19 -0
  117. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -0
  118. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +23 -0
  119. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  120. package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts +26 -0
  121. package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts.map +1 -0
  122. package/lib/typescript/shared/utils/gesture/validate-snap-points.d.ts +13 -0
  123. package/lib/typescript/shared/utils/gesture/validate-snap-points.d.ts.map +1 -0
  124. package/lib/typescript/shared/utils/gesture/velocity.d.ts +1 -0
  125. package/lib/typescript/shared/utils/gesture/velocity.d.ts.map +1 -1
  126. package/lib/typescript/shared/utils/logger.d.ts +6 -0
  127. package/lib/typescript/shared/utils/logger.d.ts.map +1 -0
  128. package/package.json +3 -2
  129. package/src/blank-stack/components/adjusted-screen.tsx +1 -1
  130. package/src/shared/__tests__/derivations.test.ts +1 -0
  131. package/src/shared/__tests__/determine-snap-target.test.ts +268 -0
  132. package/src/shared/__tests__/gesture-activation.test.ts +220 -0
  133. package/src/shared/__tests__/validate-snap-points.test.ts +125 -0
  134. package/src/shared/components/create-transition-aware-component.tsx +11 -1
  135. package/src/shared/components/screen-container.tsx +65 -0
  136. package/src/shared/configs/presets.ts +3 -3
  137. package/src/shared/configs/specs.ts +6 -0
  138. package/src/shared/constants.ts +36 -9
  139. package/src/shared/hooks/animation/use-screen-animation.tsx +32 -21
  140. package/src/shared/hooks/gestures/use-build-gestures.tsx +23 -275
  141. package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +434 -0
  142. package/src/shared/hooks/gestures/use-scroll-registry.tsx +52 -1
  143. package/src/shared/hooks/lifecycle/use-close-transition.ts +3 -3
  144. package/src/shared/hooks/lifecycle/use-open-transition.ts +27 -3
  145. package/src/shared/hooks/navigation/use-screen-state.tsx +59 -2
  146. package/src/shared/hooks/use-backdrop-pointer-events.ts +32 -0
  147. package/src/shared/providers/gestures.provider.tsx +3 -2
  148. package/src/shared/providers/screen/screen-composer.tsx +2 -2
  149. package/src/shared/types/animation.types.ts +39 -2
  150. package/src/shared/types/screen.types.ts +29 -0
  151. package/src/shared/utils/animation/{start-screen-transition.ts → animate-to-progress.ts} +23 -8
  152. package/src/shared/utils/gesture/check-gesture-activation.ts +129 -0
  153. package/src/shared/utils/gesture/determine-snap-target.ts +75 -0
  154. package/src/shared/utils/gesture/validate-snap-points.ts +37 -0
  155. package/src/shared/utils/gesture/velocity.ts +10 -0
  156. package/src/shared/utils/logger.ts +15 -0
  157. package/lib/commonjs/shared/components/root-transition-aware.js.map +0 -1
  158. package/lib/commonjs/shared/hooks/use-stack-pointer-events.js +0 -23
  159. package/lib/commonjs/shared/hooks/use-stack-pointer-events.js.map +0 -1
  160. package/lib/commonjs/shared/utils/animation/start-screen-transition.js.map +0 -1
  161. package/lib/module/shared/components/root-transition-aware.js +0 -48
  162. package/lib/module/shared/components/root-transition-aware.js.map +0 -1
  163. package/lib/module/shared/hooks/use-stack-pointer-events.js +0 -20
  164. package/lib/module/shared/hooks/use-stack-pointer-events.js.map +0 -1
  165. package/lib/module/shared/utils/animation/start-screen-transition.js.map +0 -1
  166. package/lib/typescript/shared/components/root-transition-aware.d.ts +0 -6
  167. package/lib/typescript/shared/components/root-transition-aware.d.ts.map +0 -1
  168. package/lib/typescript/shared/hooks/use-stack-pointer-events.d.ts +0 -10
  169. package/lib/typescript/shared/hooks/use-stack-pointer-events.d.ts.map +0 -1
  170. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts +0 -13
  171. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +0 -1
  172. package/src/shared/components/root-transition-aware.tsx +0 -49
  173. package/src/shared/hooks/use-stack-pointer-events.ts +0 -15
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useScreenGestureHandlers = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeReanimated = require("react-native-reanimated");
10
+ var _specs = require("../../configs/specs");
11
+ var _constants = require("../../constants");
12
+ var _keys = require("../../providers/screen/keys.provider");
13
+ var _animation = require("../../stores/animation.store");
14
+ var _gesture = require("../../stores/gesture.store");
15
+ var _gesture2 = require("../../types/gesture.types");
16
+ var _animateToProgress = require("../../utils/animation/animate-to-progress");
17
+ var _checkGestureActivation = require("../../utils/gesture/check-gesture-activation");
18
+ var _determineDismissal = require("../../utils/gesture/determine-dismissal");
19
+ var _determineSnapTarget = require("../../utils/gesture/determine-snap-target");
20
+ var _mapGestureToProgress = require("../../utils/gesture/map-gesture-to-progress");
21
+ var _resetGestureValues = require("../../utils/gesture/reset-gesture-values");
22
+ var _validateSnapPoints = require("../../utils/gesture/validate-snap-points");
23
+ var _velocity = require("../../utils/gesture/velocity");
24
+ var _logger = require("../../utils/logger");
25
+ var _useStableCallbackValue = _interopRequireDefault(require("../use-stable-callback-value"));
26
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
+ const useScreenGestureHandlers = ({
28
+ scrollConfig,
29
+ ancestorIsDismissing,
30
+ canDismiss,
31
+ handleDismiss
32
+ }) => {
33
+ const dimensions = (0, _reactNative.useWindowDimensions)();
34
+ const {
35
+ current
36
+ } = (0, _keys.useKeys)();
37
+ const animations = _animation.AnimationStore.getAll(current.route.key);
38
+ const gestureAnimationValues = _gesture.GestureStore.getRouteGestures(current.route.key);
39
+ const {
40
+ gestureDirection = _constants.DEFAULT_GESTURE_DIRECTION,
41
+ gestureDrivesProgress = _constants.DEFAULT_GESTURE_DRIVES_PROGRESS,
42
+ gestureVelocityImpact = _constants.GESTURE_VELOCITY_IMPACT,
43
+ gestureActivationArea = _constants.DEFAULT_GESTURE_ACTIVATION_AREA,
44
+ gestureResponseDistance,
45
+ transitionSpec,
46
+ snapPoints: rawSnapPoints
47
+ } = current.options;
48
+ const {
49
+ hasSnapPoints,
50
+ snapPoints,
51
+ minSnapPoint,
52
+ maxSnapPoint
53
+ } = (0, _react.useMemo)(() => (0, _validateSnapPoints.validateSnapPoints)({
54
+ snapPoints: rawSnapPoints,
55
+ canDismiss
56
+ }), [rawSnapPoints, canDismiss]);
57
+ const directions = (0, _react.useMemo)(() => {
58
+ if (hasSnapPoints && Array.isArray(gestureDirection)) {
59
+ /**
60
+ * Unsure if this behavior will change in the future, as I cannot find a use case as to why
61
+ * you would want multiple gesture dismisals for a sheet.
62
+ *
63
+ * e.g. When defining a snap point with a gesture of vertical ( default ), the system
64
+ * assumes that the inverse ( vertical-inverted ), will grow the sheet.
65
+ */
66
+ _logger.logger.warn(`gestureDirection array is not supported with snapPoints. ` + `Only the first direction "${gestureDirection[0]}" will be used. ` + `Snap points define a single axis of movement, so only one gesture direction is needed.`);
67
+ }
68
+
69
+ // When snap points are defined, use only the first direction from the array
70
+ const effectiveDirection = hasSnapPoints ? Array.isArray(gestureDirection) ? gestureDirection[0] : gestureDirection : gestureDirection;
71
+ const directionsArray = Array.isArray(effectiveDirection) ? effectiveDirection : [effectiveDirection];
72
+ const isBidirectional = directionsArray.includes("bidirectional");
73
+ const hasHorizontalDirection = directionsArray.includes("horizontal") || directionsArray.includes("horizontal-inverted");
74
+ const isSnapAxisInverted = hasHorizontalDirection ? directionsArray.includes("horizontal-inverted") && !directionsArray.includes("horizontal") : directionsArray.includes("vertical-inverted") && !directionsArray.includes("vertical");
75
+ const enableBothVertical = isBidirectional || hasSnapPoints && !hasHorizontalDirection;
76
+ const enableBothHorizontal = isBidirectional || hasSnapPoints && hasHorizontalDirection;
77
+ return {
78
+ vertical: directionsArray.includes("vertical") || enableBothVertical,
79
+ verticalInverted: directionsArray.includes("vertical-inverted") || enableBothVertical,
80
+ horizontal: directionsArray.includes("horizontal") || enableBothHorizontal,
81
+ horizontalInverted: directionsArray.includes("horizontal-inverted") || enableBothHorizontal,
82
+ snapAxisInverted: hasSnapPoints && isSnapAxisInverted
83
+ };
84
+ }, [gestureDirection, hasSnapPoints]);
85
+ const snapAxis = directions.horizontal || directions.horizontalInverted ? "horizontal" : "vertical";
86
+ const initialTouch = (0, _reactNativeReanimated.useSharedValue)({
87
+ x: 0,
88
+ y: 0
89
+ });
90
+ const gestureOffsetState = (0, _reactNativeReanimated.useSharedValue)(_gesture2.GestureOffsetState.PENDING);
91
+ const gestureStartProgress = (0, _reactNativeReanimated.useSharedValue)(1);
92
+ const onTouchesDown = (0, _useStableCallbackValue.default)(e => {
93
+ "worklet";
94
+
95
+ const firstTouch = e.changedTouches[0];
96
+ initialTouch.value = {
97
+ x: firstTouch.x,
98
+ y: firstTouch.y
99
+ };
100
+ gestureOffsetState.value = _gesture2.GestureOffsetState.PENDING;
101
+ });
102
+ const onTouchesMove = (0, _useStableCallbackValue.default)((e, manager) => {
103
+ "worklet";
104
+
105
+ // If an ancestor navigator is already dismissing via gesture, block new gestures here.
106
+ if (ancestorIsDismissing?.value) {
107
+ gestureOffsetState.value = _gesture2.GestureOffsetState.FAILED;
108
+ manager.fail();
109
+ return;
110
+ }
111
+ const touch = e.changedTouches[0];
112
+ const {
113
+ isSwipingDown,
114
+ isSwipingUp,
115
+ isSwipingRight,
116
+ isSwipingLeft
117
+ } = (0, _checkGestureActivation.applyOffsetRules)({
118
+ touch,
119
+ directions,
120
+ manager,
121
+ dimensions,
122
+ gestureOffsetState,
123
+ initialTouch: initialTouch.value,
124
+ activationArea: gestureActivationArea,
125
+ responseDistance: gestureResponseDistance
126
+ });
127
+ if (gestureOffsetState.value === _gesture2.GestureOffsetState.FAILED) {
128
+ manager.fail();
129
+ return;
130
+ }
131
+
132
+ // Keep pending until thresholds are met; no eager activation.
133
+ if (gestureAnimationValues.isDragging?.value) {
134
+ manager.activate();
135
+ return;
136
+ }
137
+ const recognizedDirection = isSwipingDown || isSwipingUp || isSwipingRight || isSwipingLeft;
138
+ const scrollCfg = scrollConfig.value;
139
+ const isTouchingScrollView = scrollCfg?.isTouched ?? false;
140
+ if (!isTouchingScrollView) {
141
+ // Early return if gesture hasn't met activation criteria
142
+ const canActivate = recognizedDirection && gestureOffsetState.value === _gesture2.GestureOffsetState.PASSED && !gestureAnimationValues.isDismissing?.value;
143
+ if (!canActivate) {
144
+ return;
145
+ }
146
+ if (isSwipingDown) {
147
+ gestureAnimationValues.direction.value = "vertical";
148
+ } else if (isSwipingUp) {
149
+ gestureAnimationValues.direction.value = "vertical-inverted";
150
+ } else if (isSwipingRight) {
151
+ gestureAnimationValues.direction.value = "horizontal";
152
+ } else if (isSwipingLeft) {
153
+ gestureAnimationValues.direction.value = "horizontal-inverted";
154
+ }
155
+ manager.activate();
156
+ return;
157
+ }
158
+
159
+ // Touch IS on ScrollView - apply scroll-aware rules
160
+ // Snap mode: determine if sheet can still expand
161
+ const canExpandMore = hasSnapPoints && animations.progress.value < maxSnapPoint - _constants.EPSILON;
162
+ const {
163
+ shouldActivate,
164
+ direction: activatedDirection
165
+ } = (0, _checkGestureActivation.checkScrollAwareActivation)({
166
+ swipeInfo: {
167
+ isSwipingDown,
168
+ isSwipingUp,
169
+ isSwipingRight,
170
+ isSwipingLeft
171
+ },
172
+ directions,
173
+ scrollConfig: scrollCfg,
174
+ hasSnapPoints,
175
+ canExpandMore
176
+ });
177
+ if (recognizedDirection && !shouldActivate) {
178
+ manager.fail();
179
+ return;
180
+ }
181
+ if (shouldActivate && gestureOffsetState.value === _gesture2.GestureOffsetState.PASSED && !gestureAnimationValues.isDismissing?.value) {
182
+ gestureAnimationValues.direction.value = activatedDirection;
183
+ manager.activate();
184
+ return;
185
+ }
186
+ });
187
+ const onStart = (0, _useStableCallbackValue.default)(() => {
188
+ "worklet";
189
+
190
+ gestureAnimationValues.isDragging.value = _constants.TRUE;
191
+ gestureAnimationValues.isDismissing.value = _constants.FALSE;
192
+ gestureStartProgress.value = animations.progress.value;
193
+ animations.animating.value = _constants.TRUE;
194
+ });
195
+ const onUpdate = (0, _useStableCallbackValue.default)(event => {
196
+ "worklet";
197
+
198
+ const {
199
+ translationX,
200
+ translationY
201
+ } = event;
202
+ const {
203
+ width,
204
+ height
205
+ } = dimensions;
206
+ gestureAnimationValues.x.value = translationX;
207
+ gestureAnimationValues.y.value = translationY;
208
+ gestureAnimationValues.normalizedX.value = _velocity.velocity.normalizeTranslation(translationX, width);
209
+ gestureAnimationValues.normalizedY.value = _velocity.velocity.normalizeTranslation(translationY, height);
210
+ if (hasSnapPoints && gestureDrivesProgress) {
211
+ const isHorizontal = snapAxis === "horizontal";
212
+ const translation = isHorizontal ? translationX : translationY;
213
+ const dimension = isHorizontal ? width : height;
214
+
215
+ // Map translation to progress delta:
216
+ // - Positive translation (down/right) = decrease progress (dismiss)
217
+ // - Negative translation (up/left) = increase progress (expand)
218
+ // Inverted directions flip this behavior
219
+ const baseSign = -1;
220
+ const sign = directions.snapAxisInverted ? -baseSign : baseSign;
221
+ const progressDelta = sign * translation / dimension;
222
+
223
+ // Use pre-computed bounds (minSnapPoint already accounts for canDismiss)
224
+ animations.progress.value = Math.max(minSnapPoint, Math.min(maxSnapPoint, gestureStartProgress.value + progressDelta));
225
+ } else if (gestureDrivesProgress) {
226
+ let maxProgress = 0;
227
+
228
+ // Horizontal swipe right (positive X)
229
+ if (directions.horizontal && translationX > 0) {
230
+ const progress = (0, _mapGestureToProgress.mapGestureToProgress)(translationX, width);
231
+ maxProgress = Math.max(maxProgress, progress);
232
+ }
233
+
234
+ // Horizontal inverted swipe left (negative X)
235
+ if (directions.horizontalInverted && translationX < 0) {
236
+ const progress = (0, _mapGestureToProgress.mapGestureToProgress)(-translationX, width);
237
+ maxProgress = Math.max(maxProgress, progress);
238
+ }
239
+
240
+ // Vertical swipe down (positive Y)
241
+ if (directions.vertical && translationY > 0) {
242
+ const progress = (0, _mapGestureToProgress.mapGestureToProgress)(translationY, height);
243
+ maxProgress = Math.max(maxProgress, progress);
244
+ }
245
+
246
+ // Vertical inverted swipe up (negative Y)
247
+ if (directions.verticalInverted && translationY < 0) {
248
+ const progress = (0, _mapGestureToProgress.mapGestureToProgress)(-translationY, height);
249
+ maxProgress = Math.max(maxProgress, progress);
250
+ }
251
+ animations.progress.value = Math.max(0, Math.min(1, gestureStartProgress.value - maxProgress));
252
+ }
253
+ });
254
+ const onEnd = (0, _useStableCallbackValue.default)(event => {
255
+ "worklet";
256
+
257
+ if (hasSnapPoints) {
258
+ const isHorizontal = snapAxis === "horizontal";
259
+ const axisVelocity = isHorizontal ? event.velocityX : event.velocityY;
260
+ const axisDimension = isHorizontal ? dimensions.width : dimensions.height;
261
+
262
+ // determineSnapTarget expects positive velocity = toward dismiss (decreasing progress)
263
+ // Positive velocity (down/right) = dismiss for non-inverted
264
+ // Inverted directions need velocity flipped
265
+ const snapVelocity = directions.snapAxisInverted ? -axisVelocity : axisVelocity;
266
+ const result = (0, _determineSnapTarget.determineSnapTarget)({
267
+ currentProgress: animations.progress.value,
268
+ snapPoints,
269
+ velocity: snapVelocity,
270
+ dimension: axisDimension,
271
+ canDismiss: canDismiss
272
+ });
273
+ const shouldDismiss = result.shouldDismiss;
274
+ const targetProgress = result.targetProgress;
275
+ const isSnapping = !shouldDismiss;
276
+ const spec = shouldDismiss ? transitionSpec?.close : transitionSpec?.open;
277
+ const effectiveSpec = isSnapping ? {
278
+ open: transitionSpec?.expand ?? _specs.DefaultSnapSpec,
279
+ close: transitionSpec?.collapse ?? _specs.DefaultSnapSpec
280
+ } : transitionSpec;
281
+ (0, _resetGestureValues.resetGestureValues)({
282
+ spec,
283
+ gestures: gestureAnimationValues,
284
+ shouldDismiss,
285
+ event,
286
+ dimensions
287
+ });
288
+
289
+ // For snap transitions, velocity should match gesture direction
290
+ // Positive gesture velocity (down/right) = collapsing (negative progress velocity)
291
+ // Inverted directions flip this
292
+ const velocitySign = directions.snapAxisInverted ? 1 : -1;
293
+ const initialVelocity = velocitySign * _velocity.velocity.normalize(axisVelocity, axisDimension);
294
+ (0, _animateToProgress.animateToProgress)({
295
+ target: targetProgress,
296
+ onAnimationFinish: shouldDismiss ? handleDismiss : undefined,
297
+ spec: effectiveSpec,
298
+ animations,
299
+ initialVelocity
300
+ });
301
+ } else {
302
+ const result = (0, _determineDismissal.determineDismissal)({
303
+ event,
304
+ directions,
305
+ dimensions,
306
+ gestureVelocityImpact
307
+ });
308
+ const shouldDismiss = result.shouldDismiss;
309
+ const targetProgress = shouldDismiss ? 0 : gestureStartProgress.value;
310
+ (0, _resetGestureValues.resetGestureValues)({
311
+ spec: shouldDismiss ? transitionSpec?.close : transitionSpec?.open,
312
+ gestures: gestureAnimationValues,
313
+ shouldDismiss,
314
+ event,
315
+ dimensions
316
+ });
317
+ const initialVelocity = _velocity.velocity.calculateProgressVelocity({
318
+ animations,
319
+ shouldDismiss,
320
+ event,
321
+ dimensions,
322
+ directions
323
+ });
324
+ (0, _animateToProgress.animateToProgress)({
325
+ target: targetProgress,
326
+ onAnimationFinish: shouldDismiss ? handleDismiss : undefined,
327
+ spec: transitionSpec,
328
+ animations,
329
+ initialVelocity
330
+ });
331
+ }
332
+ });
333
+ return {
334
+ onTouchesDown,
335
+ onTouchesMove,
336
+ onStart,
337
+ onUpdate,
338
+ onEnd
339
+ };
340
+ };
341
+ exports.useScreenGestureHandlers = useScreenGestureHandlers;
342
+ //# sourceMappingURL=use-screen-gesture-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_specs","_constants","_keys","_animation","_gesture","_gesture2","_animateToProgress","_checkGestureActivation","_determineDismissal","_determineSnapTarget","_mapGestureToProgress","_resetGestureValues","_validateSnapPoints","_velocity","_logger","_useStableCallbackValue","_interopRequireDefault","e","__esModule","default","useScreenGestureHandlers","scrollConfig","ancestorIsDismissing","canDismiss","handleDismiss","dimensions","useWindowDimensions","current","useKeys","animations","AnimationStore","getAll","route","key","gestureAnimationValues","GestureStore","getRouteGestures","gestureDirection","DEFAULT_GESTURE_DIRECTION","gestureDrivesProgress","DEFAULT_GESTURE_DRIVES_PROGRESS","gestureVelocityImpact","GESTURE_VELOCITY_IMPACT","gestureActivationArea","DEFAULT_GESTURE_ACTIVATION_AREA","gestureResponseDistance","transitionSpec","snapPoints","rawSnapPoints","options","hasSnapPoints","minSnapPoint","maxSnapPoint","useMemo","validateSnapPoints","directions","Array","isArray","logger","warn","effectiveDirection","directionsArray","isBidirectional","includes","hasHorizontalDirection","isSnapAxisInverted","enableBothVertical","enableBothHorizontal","vertical","verticalInverted","horizontal","horizontalInverted","snapAxisInverted","snapAxis","initialTouch","useSharedValue","x","y","gestureOffsetState","GestureOffsetState","PENDING","gestureStartProgress","onTouchesDown","useStableCallbackValue","firstTouch","changedTouches","value","onTouchesMove","manager","FAILED","fail","touch","isSwipingDown","isSwipingUp","isSwipingRight","isSwipingLeft","applyOffsetRules","activationArea","responseDistance","isDragging","activate","recognizedDirection","scrollCfg","isTouchingScrollView","isTouched","canActivate","PASSED","isDismissing","direction","canExpandMore","progress","EPSILON","shouldActivate","activatedDirection","checkScrollAwareActivation","swipeInfo","onStart","TRUE","FALSE","animating","onUpdate","event","translationX","translationY","width","height","normalizedX","velocity","normalizeTranslation","normalizedY","isHorizontal","translation","dimension","baseSign","sign","progressDelta","Math","max","min","maxProgress","mapGestureToProgress","onEnd","axisVelocity","velocityX","velocityY","axisDimension","snapVelocity","result","determineSnapTarget","currentProgress","shouldDismiss","targetProgress","isSnapping","spec","close","open","effectiveSpec","expand","DefaultSnapSpec","collapse","resetGestureValues","gestures","velocitySign","initialVelocity","normalize","animateToProgress","target","onAnimationFinish","undefined","determineDismissal","calculateProgressVelocity","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-screen-gesture-handlers.ts"],"mappings":"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","ignoreList":[]}
@@ -41,7 +41,8 @@ const useScrollRegistry = props => {
41
41
  contentHeight: 0,
42
42
  contentWidth: 0,
43
43
  layoutHeight: 0,
44
- layoutWidth: 0
44
+ layoutWidth: 0,
45
+ isTouched: true
45
46
  };
46
47
  }
47
48
  v.x = event.contentOffset.x;
@@ -68,7 +69,8 @@ const useScrollRegistry = props => {
68
69
  layoutHeight: 0,
69
70
  layoutWidth: 0,
70
71
  contentWidth: width,
71
- contentHeight: height
72
+ contentHeight: height,
73
+ isTouched: false
72
74
  };
73
75
  }
74
76
  v.contentWidth = width;
@@ -96,7 +98,8 @@ const useScrollRegistry = props => {
96
98
  contentHeight: 0,
97
99
  contentWidth: 0,
98
100
  layoutHeight: height,
99
- layoutWidth: width
101
+ layoutWidth: width,
102
+ isTouched: false
100
103
  };
101
104
  }
102
105
  v.layoutHeight = height;
@@ -108,10 +111,50 @@ const useScrollRegistry = props => {
108
111
  ancestorConfig.modify(updateLayout);
109
112
  }
110
113
  });
114
+ const onTouchStart = (0, _useStableCallback.default)(event => {
115
+ props.onTouchStart?.(event);
116
+ const setTouched = v => {
117
+ "worklet";
118
+
119
+ if (v === null) {
120
+ return {
121
+ x: 0,
122
+ y: 0,
123
+ contentHeight: 0,
124
+ contentWidth: 0,
125
+ layoutHeight: 0,
126
+ layoutWidth: 0,
127
+ isTouched: true
128
+ };
129
+ }
130
+ v.isTouched = true;
131
+ return v;
132
+ };
133
+ scrollConfig.modify(setTouched);
134
+ for (const ancestorConfig of ancestorScrollConfigs) {
135
+ ancestorConfig.modify(setTouched);
136
+ }
137
+ });
138
+ const onTouchEnd = (0, _useStableCallback.default)(event => {
139
+ props.onTouchEnd?.(event);
140
+ const clearTouched = v => {
141
+ "worklet";
142
+
143
+ if (v === null) return v;
144
+ v.isTouched = false;
145
+ return v;
146
+ };
147
+ scrollConfig.modify(clearTouched);
148
+ for (const ancestorConfig of ancestorScrollConfigs) {
149
+ ancestorConfig.modify(clearTouched);
150
+ }
151
+ });
111
152
  return {
112
153
  scrollHandler,
113
154
  onContentSizeChange,
114
- onLayout
155
+ onLayout,
156
+ onTouchStart,
157
+ onTouchEnd
115
158
  };
116
159
  };
117
160
  exports.useScrollRegistry = useScrollRegistry;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeReanimated","_gestures","_useStableCallback","_interopRequireDefault","e","__esModule","default","useScrollRegistry","props","context","useGestureContext","scrollConfig","ancestorContext","ancestorScrollConfigs","useMemo","configs","current","push","scrollHandler","useAnimatedScrollHandler","onScroll","event","updateScrollPosition","v","x","contentOffset","y","contentHeight","contentWidth","layoutHeight","layoutWidth","modify","ancestorConfig","onContentSizeChange","useStableCallback","width","height","updateContentSize","onLayout","nativeEvent","layout","updateLayout","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-scroll-registry.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeReanimated","_gestures","_useStableCallback","_interopRequireDefault","e","__esModule","default","useScrollRegistry","props","context","useGestureContext","scrollConfig","ancestorContext","ancestorScrollConfigs","useMemo","configs","current","push","scrollHandler","useAnimatedScrollHandler","onScroll","event","updateScrollPosition","v","x","contentOffset","y","contentHeight","contentWidth","layoutHeight","layoutWidth","isTouched","modify","ancestorConfig","onContentSizeChange","useStableCallback","width","height","updateContentSize","onLayout","nativeEvent","layout","updateLayout","onTouchStart","setTouched","onTouchEnd","clearTouched","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-scroll-registry.tsx"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ var _gestures = require("../../providers/gestures.provider");
10
10
  var _core = require("../../providers/stack/core.provider");
11
11
  var _managed = require("../../providers/stack/managed.provider");
12
12
  var _stack = require("../../types/stack.types");
13
- var _startScreenTransition = require("../../utils/animation/start-screen-transition");
13
+ var _animateToProgress = require("../../utils/animation/animate-to-progress");
14
14
  var _resetStoresForScreen = require("../../utils/reset-stores-for-screen");
15
15
  var _useSharedValueState = require("../reanimated/use-shared-value-state");
16
16
  var _useStableCallback = _interopRequireDefault(require("../use-stable-callback"));
@@ -42,7 +42,7 @@ const useManagedClose = ({
42
42
  (0, _reactNativeReanimated.useAnimatedReaction)(() => closingRouteKeysShared.value, keys => {
43
43
  if (!keys?.includes(current.route.key)) return;
44
44
  (0, _reactNativeReanimated.runOnJS)(activate)();
45
- (0, _startScreenTransition.startScreenTransition)({
45
+ (0, _animateToProgress.animateToProgress)({
46
46
  target: "close",
47
47
  spec: current.options.transitionSpec,
48
48
  animations,
@@ -80,7 +80,7 @@ const useNativeStackClose = ({
80
80
  }
81
81
  e.preventDefault();
82
82
  activate();
83
- (0, _startScreenTransition.startScreenTransition)({
83
+ (0, _animateToProgress.animateToProgress)({
84
84
  target: "close",
85
85
  spec: current.options.transitionSpec,
86
86
  animations,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeReanimated","_gestures","_core","_managed","_stack","_startScreenTransition","_resetStoresForScreen","_useSharedValueState","_useStableCallback","_interopRequireDefault","e","__esModule","default","useManagedClose","current","animations","activate","deactivate","handleCloseRoute","closingRouteKeysShared","useManagedStackContext","handleCloseEnd","useStableCallback","finished","route","requestAnimationFrame","resetStoresForScreen","useAnimatedReaction","value","keys","includes","key","runOnJS","startScreenTransition","target","spec","options","transitionSpec","onAnimationFinish","useNativeStackClose","gestureCtx","useGestureContext","isAncestorDismissingViaGesture","useSharedValueState","useDerivedValue","ancestorContext","gestureAnimationValues","isDismissing","handleBeforeRemove","isEnabled","enableTransitions","navigation","isFirstScreen","getState","index","closing","set","preventDefault","dispatch","data","action","useLayoutEffect","addListener","useCloseTransition","flags","useStackCoreContext","isNativeStack","STACK_TYPE","StackType","NATIVE","closeParams"],"sourceRoot":"../../../../../src","sources":["shared/hooks/lifecycle/use-close-transition.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeReanimated","_gestures","_core","_managed","_stack","_animateToProgress","_resetStoresForScreen","_useSharedValueState","_useStableCallback","_interopRequireDefault","e","__esModule","default","useManagedClose","current","animations","activate","deactivate","handleCloseRoute","closingRouteKeysShared","useManagedStackContext","handleCloseEnd","useStableCallback","finished","route","requestAnimationFrame","resetStoresForScreen","useAnimatedReaction","value","keys","includes","key","runOnJS","animateToProgress","target","spec","options","transitionSpec","onAnimationFinish","useNativeStackClose","gestureCtx","useGestureContext","isAncestorDismissingViaGesture","useSharedValueState","useDerivedValue","ancestorContext","gestureAnimationValues","isDismissing","handleBeforeRemove","isEnabled","enableTransitions","navigation","isFirstScreen","getState","index","closing","set","preventDefault","dispatch","data","action","useLayoutEffect","addListener","useCloseTransition","flags","useStackCoreContext","isNativeStack","STACK_TYPE","StackType","NATIVE","closeParams"],"sourceRoot":"../../../../../src","sources":["shared/hooks/lifecycle/use-close-transition.ts"],"mappings":"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","ignoreList":[]}
@@ -5,8 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useOpenTransition = useOpenTransition;
7
7
  var _react = require("react");
8
- var _startScreenTransition = require("../../utils/animation/start-screen-transition");
8
+ var _animateToProgress = require("../../utils/animation/animate-to-progress");
9
9
  var _useHighRefreshRate = require("../animation/use-high-refresh-rate");
10
+ /**
11
+ * Calculates the initial progress value based on snap points configuration.
12
+ */
13
+ function getInitialProgress({
14
+ snapPoints,
15
+ initialSnapIndex
16
+ }) {
17
+ if (!snapPoints) {
18
+ return undefined;
19
+ }
20
+ const clampedIndex = Math.min(Math.max(0, initialSnapIndex), snapPoints.length - 1);
21
+ return snapPoints[clampedIndex];
22
+ }
23
+
10
24
  /**
11
25
  * Handles opening animation on mount.
12
26
  * Returns activate/deactivate functions for high refresh rate.
@@ -19,9 +33,17 @@ function useOpenTransition(current, animations) {
19
33
 
20
34
  // biome-ignore lint/correctness/useExhaustiveDependencies: Must only run once on mount
21
35
  (0, _react.useLayoutEffect)(() => {
36
+ const {
37
+ snapPoints,
38
+ initialSnapIndex = 0
39
+ } = current.options;
40
+ const targetProgress = getInitialProgress({
41
+ snapPoints,
42
+ initialSnapIndex
43
+ });
22
44
  activateHighRefreshRate();
23
- (0, _startScreenTransition.startScreenTransition)({
24
- target: "open",
45
+ (0, _animateToProgress.animateToProgress)({
46
+ target: targetProgress ?? "open",
25
47
  spec: current.options.transitionSpec,
26
48
  animations,
27
49
  onAnimationFinish: deactivateHighRefreshRate
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_startScreenTransition","_useHighRefreshRate","useOpenTransition","current","animations","activateHighRefreshRate","deactivateHighRefreshRate","useHighRefreshRate","useLayoutEffect","startScreenTransition","target","spec","options","transitionSpec","onAnimationFinish"],"sourceRoot":"../../../../../src","sources":["shared/hooks/lifecycle/use-open-transition.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAChCC,OAAuB,EACvBC,UAA6B,EAC5B;EACD,MAAM;IAAEC,uBAAuB;IAAEC;EAA0B,CAAC,GAC3D,IAAAC,sCAAkB,EAACJ,OAAO,CAAC;;EAE5B;EACA,IAAAK,sBAAe,EAAC,MAAM;IACrBH,uBAAuB,CAAC,CAAC;IACzB,IAAAI,4CAAqB,EAAC;MACrBC,MAAM,EAAE,MAAM;MACdC,IAAI,EAAER,OAAO,CAACS,OAAO,CAACC,cAAc;MACpCT,UAAU;MACVU,iBAAiB,EAAER;IACpB,CAAC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAED,uBAAuB;IAAEC;EAA0B,CAAC;AAC9D","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_animateToProgress","_useHighRefreshRate","getInitialProgress","snapPoints","initialSnapIndex","undefined","clampedIndex","Math","min","max","length","useOpenTransition","current","animations","activateHighRefreshRate","deactivateHighRefreshRate","useHighRefreshRate","useLayoutEffect","options","targetProgress","animateToProgress","target","spec","transitionSpec","onAnimationFinish"],"sourceRoot":"../../../../../src","sources":["shared/hooks/lifecycle/use-open-transition.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA,SAASG,kBAAkBA,CAAC;EAC3BC,UAAU;EACVC;AAID,CAAC,EAAsB;EACtB,IAAI,CAACD,UAAU,EAAE;IAChB,OAAOE,SAAS;EACjB;EAEA,MAAMC,YAAY,GAAGC,IAAI,CAACC,GAAG,CAC5BD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEL,gBAAgB,CAAC,EAC7BD,UAAU,CAACO,MAAM,GAAG,CACrB,CAAC;EACD,OAAOP,UAAU,CAACG,YAAY,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACO,SAASK,iBAAiBA,CAChCC,OAAuB,EACvBC,UAA6B,EAC5B;EACD,MAAM;IAAEC,uBAAuB;IAAEC;EAA0B,CAAC,GAC3D,IAAAC,sCAAkB,EAACJ,OAAO,CAAC;;EAE5B;EACA,IAAAK,sBAAe,EAAC,MAAM;IACrB,MAAM;MAAEd,UAAU;MAAEC,gBAAgB,GAAG;IAAE,CAAC,GAAGQ,OAAO,CAACM,OAAO;IAC5D,MAAMC,cAAc,GAAGjB,kBAAkB,CAAC;MAAEC,UAAU;MAAEC;IAAiB,CAAC,CAAC;IAE3EU,uBAAuB,CAAC,CAAC;IACzB,IAAAM,oCAAiB,EAAC;MACjBC,MAAM,EAAEF,cAAc,IAAI,MAAM;MAChCG,IAAI,EAAEV,OAAO,CAACM,OAAO,CAACK,cAAc;MACpCV,UAAU;MACVW,iBAAiB,EAAET;IACpB,CAAC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAED,uBAAuB;IAAEC;EAA0B,CAAC;AAC9D","ignoreList":[]}
@@ -6,7 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useScreenState = useScreenState;
7
7
  var _react = require("react");
8
8
  var _reactNativeReanimated = require("react-native-reanimated");
9
+ var _specs = require("../../configs/specs");
9
10
  var _keys = require("../../providers/screen/keys.provider");
11
+ var _animation = require("../../stores/animation.store");
12
+ var _animateToProgress = require("../../utils/animation/animate-to-progress");
10
13
  var _useSharedValueState = require("../reanimated/use-shared-value-state");
11
14
  var _useStack = require("./use-stack");
12
15
  /**
@@ -32,6 +35,33 @@ function useScreenState() {
32
35
  const focusedScene = (0, _react.useMemo)(() => {
33
36
  return scenes[focusedIndex] ?? scenes[scenes.length - 1];
34
37
  }, [scenes, focusedIndex]);
38
+ const currentOptions = current.options;
39
+ const animations = (0, _react.useMemo)(() => _animation.AnimationStore.getAll(current.route.key), [current.route.key]);
40
+ const snapTo = (0, _react.useCallback)(targetIndex => {
41
+ const points = currentOptions?.snapPoints;
42
+ if (!points || points.length === 0) {
43
+ console.warn("snapTo called but no snapPoints defined");
44
+ return;
45
+ }
46
+ const sorted = [...points].sort((a, b) => a - b);
47
+ if (targetIndex < 0 || targetIndex >= sorted.length) {
48
+ console.warn(`snapTo index ${targetIndex} out of bounds (0-${sorted.length - 1})`);
49
+ return;
50
+ }
51
+ const targetProgress = sorted[targetIndex];
52
+ (0, _reactNativeReanimated.runOnUI)(() => {
53
+ "worklet";
54
+
55
+ (0, _animateToProgress.animateToProgress)({
56
+ target: targetProgress,
57
+ animations,
58
+ spec: {
59
+ open: focusedScene.descriptor.options.transitionSpec?.expand ?? _specs.DefaultSnapSpec,
60
+ close: focusedScene.descriptor.options.transitionSpec?.collapse ?? _specs.DefaultSnapSpec
61
+ }
62
+ });
63
+ })();
64
+ }, [currentOptions?.snapPoints, animations, focusedScene]);
35
65
  return (0, _react.useMemo)(() => ({
36
66
  index,
37
67
  options: focusedScene?.descriptor?.options ?? {},
@@ -39,7 +69,8 @@ function useScreenState() {
39
69
  focusedRoute: focusedScene?.route ?? current.route,
40
70
  focusedIndex,
41
71
  meta: focusedScene?.descriptor?.options?.meta,
42
- navigation: current.navigation
43
- }), [index, focusedScene, routes, focusedIndex, current.navigation, current.route]);
72
+ navigation: current.navigation,
73
+ snapTo
74
+ }), [index, focusedScene, routes, focusedIndex, current.navigation, current.route, snapTo]);
44
75
  }
45
76
  //# sourceMappingURL=use-screen-state.js.map