react-native-screen-transitions 3.3.0-beta.0 → 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.
- package/README.md +104 -9
- package/lib/commonjs/blank-stack/components/adjusted-screen.js +2 -2
- package/lib/commonjs/blank-stack/components/adjusted-screen.js.map +1 -1
- package/lib/commonjs/shared/constants.js +36 -10
- package/lib/commonjs/shared/constants.js.map +1 -1
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +25 -18
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +0 -25
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +71 -63
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js +9 -37
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -1
- package/lib/commonjs/shared/utils/animation/animate-to-progress.js +5 -1
- package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +90 -23
- package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
- package/lib/commonjs/shared/utils/logger.js +22 -0
- package/lib/commonjs/shared/utils/logger.js.map +1 -0
- package/lib/module/blank-stack/components/adjusted-screen.js +1 -1
- package/lib/module/blank-stack/components/adjusted-screen.js.map +1 -1
- package/lib/module/shared/constants.js +34 -9
- package/lib/module/shared/constants.js.map +1 -1
- package/lib/module/shared/hooks/animation/use-screen-animation.js +25 -18
- package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js +0 -25
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +66 -58
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
- package/lib/module/shared/hooks/navigation/use-screen-state.js +9 -37
- package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -1
- package/lib/module/shared/utils/animation/animate-to-progress.js +5 -1
- package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -1
- package/lib/module/shared/utils/gesture/check-gesture-activation.js +90 -23
- package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
- package/lib/module/shared/utils/logger.js +17 -0
- package/lib/module/shared/utils/logger.js.map +1 -0
- package/lib/typescript/blank-stack/components/adjusted-screen.d.ts.map +1 -1
- package/lib/typescript/shared/constants.d.ts +9 -0
- package/lib/typescript/shared/constants.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts +1 -16
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts +0 -7
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +9 -0
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +4 -5
- package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
- package/lib/typescript/shared/utils/logger.d.ts +6 -0
- package/lib/typescript/shared/utils/logger.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/blank-stack/components/adjusted-screen.tsx +1 -1
- package/src/shared/__tests__/derivations.test.ts +1 -0
- package/src/shared/__tests__/gesture-activation.test.ts +29 -56
- package/src/shared/constants.ts +36 -9
- package/src/shared/hooks/animation/use-screen-animation.tsx +32 -21
- package/src/shared/hooks/gestures/use-build-gestures.tsx +2 -34
- package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +89 -91
- package/src/shared/hooks/navigation/use-screen-state.tsx +9 -56
- package/src/shared/types/animation.types.ts +10 -0
- package/src/shared/utils/animation/animate-to-progress.ts +4 -1
- package/src/shared/utils/gesture/check-gesture-activation.ts +74 -23
- package/src/shared/utils/logger.ts +15 -0
package/README.md
CHANGED
|
@@ -212,13 +212,14 @@ options={{
|
|
|
212
212
|
|
|
213
213
|
### Gesture Options
|
|
214
214
|
|
|
215
|
-
| Option | Description
|
|
216
|
-
| ------------------------- |
|
|
217
|
-
| `gestureEnabled` | Enable swipe-to-dismiss
|
|
218
|
-
| `gestureDirection` | Direction(s) for swipe gesture
|
|
219
|
-
| `gestureActivationArea` | Where gesture can start
|
|
220
|
-
| `gestureResponseDistance` | Pixel threshold for activation
|
|
221
|
-
| `gestureVelocityImpact` | How much velocity affects dismissal
|
|
215
|
+
| Option | Description |
|
|
216
|
+
| ------------------------- | ----------------------------------------- |
|
|
217
|
+
| `gestureEnabled` | Enable swipe-to-dismiss |
|
|
218
|
+
| `gestureDirection` | Direction(s) for swipe gesture |
|
|
219
|
+
| `gestureActivationArea` | Where gesture can start |
|
|
220
|
+
| `gestureResponseDistance` | Pixel threshold for activation |
|
|
221
|
+
| `gestureVelocityImpact` | How much velocity affects dismissal |
|
|
222
|
+
| `backdropBehavior` | Touch handling for backdrop area |
|
|
222
223
|
|
|
223
224
|
### Gesture Direction
|
|
224
225
|
|
|
@@ -268,6 +269,94 @@ Gesture rules with scrollables:
|
|
|
268
269
|
|
|
269
270
|
---
|
|
270
271
|
|
|
272
|
+
## Bottom Sheets
|
|
273
|
+
|
|
274
|
+
Create multi-stop bottom sheets with snap points:
|
|
275
|
+
|
|
276
|
+
### Basic Configuration
|
|
277
|
+
|
|
278
|
+
```tsx
|
|
279
|
+
<Stack.Screen
|
|
280
|
+
name="Sheet"
|
|
281
|
+
options={{
|
|
282
|
+
gestureEnabled: true,
|
|
283
|
+
gestureDirection: "vertical",
|
|
284
|
+
snapPoints: [0.5, 1], // 50% and 100% height
|
|
285
|
+
initialSnapIndex: 0, // Start at 50%
|
|
286
|
+
backdropBehavior: "dismiss", // Tap backdrop to dismiss
|
|
287
|
+
...Transition.Presets.SlideFromBottom(),
|
|
288
|
+
}}
|
|
289
|
+
/>
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Options
|
|
293
|
+
|
|
294
|
+
| Option | Description |
|
|
295
|
+
| ------------------ | ------------------------------------------------------- |
|
|
296
|
+
| `snapPoints` | Array of fractions (0-1) where sheet can rest |
|
|
297
|
+
| `initialSnapIndex` | Index of initial snap point (default: 0) |
|
|
298
|
+
| `backdropBehavior` | Touch handling: `"block"`, `"passthrough"`, `"dismiss"` |
|
|
299
|
+
|
|
300
|
+
### Programmatic Control
|
|
301
|
+
|
|
302
|
+
Control snap points from within your screen:
|
|
303
|
+
|
|
304
|
+
```tsx
|
|
305
|
+
import { useScreenState } from "react-native-screen-transitions";
|
|
306
|
+
|
|
307
|
+
function BottomSheet() {
|
|
308
|
+
const { snapTo } = useScreenState();
|
|
309
|
+
|
|
310
|
+
// Expand to full height (index 1)
|
|
311
|
+
const expand = () => snapTo(1);
|
|
312
|
+
|
|
313
|
+
// Collapse to half height (index 0)
|
|
314
|
+
const collapse = () => snapTo(0);
|
|
315
|
+
|
|
316
|
+
return (
|
|
317
|
+
<View>
|
|
318
|
+
<Button title="Expand" onPress={expand} />
|
|
319
|
+
<Button title="Collapse" onPress={collapse} />
|
|
320
|
+
</View>
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
The animated `snapIndex` is available in screen interpolators via `ScreenInterpolationProps`:
|
|
326
|
+
|
|
327
|
+
```tsx
|
|
328
|
+
screenStyleInterpolator: ({ snapIndex }) => {
|
|
329
|
+
// snapIndex interpolates between snap point indices
|
|
330
|
+
// e.g., 0.5 means halfway between snap point 0 and 1
|
|
331
|
+
return {
|
|
332
|
+
contentStyle: {
|
|
333
|
+
opacity: interpolate(snapIndex, [0, 1], [0.5, 1]),
|
|
334
|
+
},
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### ScrollView Behavior
|
|
340
|
+
|
|
341
|
+
With `Transition.ScrollView` inside a snap-enabled sheet:
|
|
342
|
+
- **Scroll at top**: Swipe up expands, swipe down collapses
|
|
343
|
+
- **Scrolled into content**: Normal scroll behavior
|
|
344
|
+
|
|
345
|
+
### Snap Animation Specs
|
|
346
|
+
|
|
347
|
+
Customize snap animations separately from enter/exit:
|
|
348
|
+
|
|
349
|
+
```tsx
|
|
350
|
+
transitionSpec: {
|
|
351
|
+
open: { stiffness: 1000, damping: 500, mass: 3 }, // Screen enter
|
|
352
|
+
close: { stiffness: 1000, damping: 500, mass: 3 }, // Screen exit
|
|
353
|
+
expand: { stiffness: 300, damping: 30 }, // Snap up
|
|
354
|
+
collapse: { stiffness: 300, damping: 30 }, // Snap down
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
271
360
|
## Shared Elements (Bounds API)
|
|
272
361
|
|
|
273
362
|
Animate elements between screens by tagging them.
|
|
@@ -382,13 +471,19 @@ function DetailScreen() {
|
|
|
382
471
|
|
|
383
472
|
### useScreenState
|
|
384
473
|
|
|
385
|
-
Get navigation state
|
|
474
|
+
Get navigation state and snap point controls:
|
|
386
475
|
|
|
387
476
|
```tsx
|
|
388
477
|
import { useScreenState } from "react-native-screen-transitions";
|
|
389
478
|
|
|
390
479
|
function DetailScreen() {
|
|
391
|
-
const {
|
|
480
|
+
const {
|
|
481
|
+
index,
|
|
482
|
+
focusedRoute,
|
|
483
|
+
routes,
|
|
484
|
+
navigation,
|
|
485
|
+
snapTo, // Snap to index programmatically
|
|
486
|
+
} = useScreenState();
|
|
392
487
|
// ...
|
|
393
488
|
}
|
|
394
489
|
```
|
|
@@ -7,6 +7,7 @@ exports.AdjustedScreen = void 0;
|
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
9
9
|
var _reactNativeScreens = require("react-native-screens");
|
|
10
|
+
var _constants = require("../../shared/constants");
|
|
10
11
|
var _useStack = require("../../shared/hooks/navigation/use-stack");
|
|
11
12
|
var _layoutAnchor = require("../../shared/providers/layout-anchor.provider");
|
|
12
13
|
var _managed = require("../../shared/providers/stack/managed.provider");
|
|
@@ -19,7 +20,6 @@ var ScreenActivity = /*#__PURE__*/function (ScreenActivity) {
|
|
|
19
20
|
ScreenActivity[ScreenActivity["ON_TOP"] = 2] = "ON_TOP";
|
|
20
21
|
return ScreenActivity;
|
|
21
22
|
}(ScreenActivity || {});
|
|
22
|
-
const EPSILON = 1e-5;
|
|
23
23
|
const POINT_NONE = "none";
|
|
24
24
|
const POINT_BOX_NONE = "box-none";
|
|
25
25
|
const AnimatedNativeScreen = _reactNativeReanimated.default.createAnimatedComponent(_reactNativeScreens.Screen);
|
|
@@ -54,7 +54,7 @@ const AdjustedScreen = ({
|
|
|
54
54
|
screenActivity.set(ScreenActivity.INACTIVE);
|
|
55
55
|
} else {
|
|
56
56
|
const outputValue = index === routesLength - 1 ? ScreenActivity.ON_TOP : index >= routesLength - activeScreensLimit ? ScreenActivity.TRANSITIONING_OR_BELOW_TOP : ScreenActivity.INACTIVE;
|
|
57
|
-
const v = (0, _reactNativeReanimated.interpolate)(sceneProgress.get(), [0, 1 - EPSILON, 1], [1, 1, outputValue], _reactNativeReanimated.Extrapolation.CLAMP);
|
|
57
|
+
const v = (0, _reactNativeReanimated.interpolate)(sceneProgress.get(), [0, 1 - _constants.EPSILON, 1], [1, 1, outputValue], _reactNativeReanimated.Extrapolation.CLAMP);
|
|
58
58
|
const next = Math.trunc(v) ?? ScreenActivity.TRANSITIONING_OR_BELOW_TOP;
|
|
59
59
|
if (next !== screenActivity.get()) {
|
|
60
60
|
screenActivity.set(next);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeReanimated","_interopRequireWildcard","_reactNativeScreens","_useStack","_layoutAnchor","_managed","_animation","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ScreenActivity","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeReanimated","_interopRequireWildcard","_reactNativeScreens","_constants","_useStack","_layoutAnchor","_managed","_animation","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ScreenActivity","POINT_NONE","POINT_BOX_NONE","AnimatedNativeScreen","Animated","createAnimatedComponent","RNSScreen","AdjustedScreen","routeKey","index","isPreloaded","children","freezeOnBlur","shouldFreeze","flags","DISABLE_NATIVE_SCREENS","useStack","activeScreensLimit","routes","useManagedStackContext","routesLength","length","screenRef","useAnimatedRef","sceneProgress","AnimationStore","getAnimation","sceneClosing","screenActivity","useSharedValue","TRANSITIONING_OR_BELOW_TOP","useDerivedValue","INACTIVE","outputValue","ON_TOP","v","interpolate","EPSILON","Extrapolation","CLAMP","next","Math","trunc","animatedProps","useAnimatedProps","activity","activityState","pointerEvents","AdjustedScreenComponent","View","jsx","enabled","ref","style","StyleSheet","absoluteFill","LayoutAnchorProvider","anchorRef","exports"],"sourceRoot":"../../../../src","sources":["blank-stack/components/adjusted-screen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TRUE = exports.NO_STYLES = exports.MASK_STYLE_ID = exports.IS_WEB = exports.GESTURE_VELOCITY_IMPACT = exports.FULLSCREEN_DIMENSIONS = exports.FALSE = exports.EXIT_RANGE = exports.ENTER_RANGE = exports.EMPTY_BOUND_HELPER_RESULT_RAW = exports.EMPTY_BOUND_HELPER_RESULT = exports.DEFAULT_SCREEN_TRANSITION_STATE = exports.DEFAULT_GESTURE_DRIVES_PROGRESS = exports.DEFAULT_GESTURE_DIRECTION = exports.DEFAULT_GESTURE_ACTIVATION_AREA = exports.CONTAINER_STYLE_ID = void 0;
|
|
6
|
+
exports.createScreenTransitionState = exports.TRUE = exports.NO_STYLES = exports.MASK_STYLE_ID = exports.IS_WEB = exports.GESTURE_VELOCITY_IMPACT = exports.FULLSCREEN_DIMENSIONS = exports.FALSE = exports.EXIT_RANGE = exports.EPSILON = exports.ENTER_RANGE = exports.EMPTY_BOUND_HELPER_RESULT_RAW = exports.EMPTY_BOUND_HELPER_RESULT = exports.DEFAULT_SCREEN_TRANSITION_STATE = exports.DEFAULT_GESTURE_DRIVES_PROGRESS = exports.DEFAULT_GESTURE_DIRECTION = exports.DEFAULT_GESTURE_ACTIVATION_AREA = exports.CONTAINER_STYLE_ID = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
/**
|
|
9
9
|
* Masked view integration
|
|
@@ -17,22 +17,43 @@ const CONTAINER_STYLE_ID = exports.CONTAINER_STYLE_ID = "_ROOT_CONTAINER";
|
|
|
17
17
|
const NO_STYLES = exports.NO_STYLES = Object.freeze({});
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* Default
|
|
20
|
+
* Default gesture values
|
|
21
21
|
*/
|
|
22
|
-
const
|
|
22
|
+
const DEFAULT_GESTURE_VALUES = {
|
|
23
|
+
x: 0,
|
|
24
|
+
y: 0,
|
|
25
|
+
normalizedX: 0,
|
|
26
|
+
normalizedY: 0,
|
|
27
|
+
isDismissing: 0,
|
|
28
|
+
isDragging: 0,
|
|
29
|
+
direction: null
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new screen transition state object
|
|
34
|
+
*/
|
|
35
|
+
const createScreenTransitionState = (route, meta) => ({
|
|
23
36
|
progress: 0,
|
|
24
37
|
closing: 0,
|
|
25
38
|
animating: 0,
|
|
26
39
|
entering: 1,
|
|
27
40
|
gesture: {
|
|
28
|
-
|
|
29
|
-
y: 0,
|
|
30
|
-
normalizedX: 0,
|
|
31
|
-
normalizedY: 0,
|
|
32
|
-
isDismissing: 0,
|
|
33
|
-
isDragging: 0,
|
|
34
|
-
direction: null
|
|
41
|
+
...DEFAULT_GESTURE_VALUES
|
|
35
42
|
},
|
|
43
|
+
route,
|
|
44
|
+
meta
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Default screen transition state
|
|
49
|
+
*/
|
|
50
|
+
exports.createScreenTransitionState = createScreenTransitionState;
|
|
51
|
+
const DEFAULT_SCREEN_TRANSITION_STATE = exports.DEFAULT_SCREEN_TRANSITION_STATE = Object.freeze({
|
|
52
|
+
progress: 0,
|
|
53
|
+
closing: 0,
|
|
54
|
+
animating: 0,
|
|
55
|
+
entering: 1,
|
|
56
|
+
gesture: DEFAULT_GESTURE_VALUES,
|
|
36
57
|
route: {}
|
|
37
58
|
});
|
|
38
59
|
|
|
@@ -75,4 +96,9 @@ const DEFAULT_GESTURE_ACTIVATION_AREA = exports.DEFAULT_GESTURE_ACTIVATION_AREA
|
|
|
75
96
|
const IS_WEB = exports.IS_WEB = _reactNative.Platform.OS === "web";
|
|
76
97
|
const TRUE = exports.TRUE = 1;
|
|
77
98
|
const FALSE = exports.FALSE = 0;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Small value for floating-point comparisons to handle animation/interpolation imprecision
|
|
102
|
+
*/
|
|
103
|
+
const EPSILON = exports.EPSILON = 1e-5;
|
|
78
104
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","MASK_STYLE_ID","exports","CONTAINER_STYLE_ID","NO_STYLES","Object","freeze","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","MASK_STYLE_ID","exports","CONTAINER_STYLE_ID","NO_STYLES","Object","freeze","DEFAULT_GESTURE_VALUES","x","y","normalizedX","normalizedY","isDismissing","isDragging","direction","createScreenTransitionState","route","meta","progress","closing","animating","entering","gesture","DEFAULT_SCREEN_TRANSITION_STATE","EMPTY_BOUND_HELPER_RESULT","EMPTY_BOUND_HELPER_RESULT_RAW","scaleX","scaleY","scale","translateX","translateY","width","height","ENTER_RANGE","EXIT_RANGE","FULLSCREEN_DIMENSIONS","dimensions","pageX","pageY","GESTURE_VELOCITY_IMPACT","DEFAULT_GESTURE_DIRECTION","DEFAULT_GESTURE_DRIVES_PROGRESS","DEFAULT_GESTURE_ACTIVATION_AREA","IS_WEB","Platform","OS","TRUE","FALSE","EPSILON"],"sourceRoot":"../../../src","sources":["shared/constants.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,23 +16,24 @@ var _gesture = require("../../stores/gesture.store");
|
|
|
16
16
|
var _derivations = require("../../utils/animation/derivations");
|
|
17
17
|
var _bounds = require("../../utils/bounds");
|
|
18
18
|
var _useStack = require("../navigation/use-stack");
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Computes the animated snap index based on progress and snap points.
|
|
21
|
+
* Returns -1 if no snap points, otherwise interpolates between indices.
|
|
22
|
+
*/
|
|
23
|
+
const computeSnapIndex = (progress, snapPoints) => {
|
|
24
|
+
"worklet";
|
|
25
|
+
|
|
26
|
+
if (snapPoints.length === 0) return -1;
|
|
27
|
+
if (progress <= snapPoints[0]) return 0;
|
|
28
|
+
if (progress >= snapPoints[snapPoints.length - 1]) return snapPoints.length - 1;
|
|
29
|
+
for (let i = 0; i < snapPoints.length - 1; i++) {
|
|
30
|
+
if (progress <= snapPoints[i + 1]) {
|
|
31
|
+
const t = (progress - snapPoints[i]) / (snapPoints[i + 1] - snapPoints[i]);
|
|
32
|
+
return i + t;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return snapPoints.length - 1;
|
|
36
|
+
};
|
|
36
37
|
const unwrapInto = s => {
|
|
37
38
|
"worklet";
|
|
38
39
|
|
|
@@ -64,7 +65,7 @@ const useBuildScreenTransitionState = descriptor => {
|
|
|
64
65
|
gesture: _gesture.GestureStore.getRouteGestures(key),
|
|
65
66
|
route: descriptor.route,
|
|
66
67
|
meta,
|
|
67
|
-
unwrapped: createScreenTransitionState(descriptor.route, meta)
|
|
68
|
+
unwrapped: (0, _constants.createScreenTransitionState)(descriptor.route, meta)
|
|
68
69
|
};
|
|
69
70
|
}, [key, descriptor?.route, meta]);
|
|
70
71
|
};
|
|
@@ -94,6 +95,10 @@ function _useScreenAnimation() {
|
|
|
94
95
|
const prevAnimation = useBuildScreenTransitionState(previousDescriptor);
|
|
95
96
|
const currentRouteKey = currentDescriptor?.route?.key;
|
|
96
97
|
const currentIndex = routeKeys.indexOf(currentRouteKey);
|
|
98
|
+
const sortedSnapPoints = (0, _react.useMemo)(() => {
|
|
99
|
+
const points = currentDescriptor?.options?.snapPoints;
|
|
100
|
+
return points ? [...points].sort((a, b) => a - b) : [];
|
|
101
|
+
}, [currentDescriptor?.options?.snapPoints]);
|
|
97
102
|
const screenInterpolatorProps = (0, _reactNativeReanimated.useDerivedValue)(() => {
|
|
98
103
|
"worklet";
|
|
99
104
|
|
|
@@ -113,6 +118,7 @@ function _useScreenAnimation() {
|
|
|
113
118
|
// This gives us the sum of progress values from current screen onwards
|
|
114
119
|
// Falls back to current progress if index is invalid
|
|
115
120
|
const stackProgress = currentIndex >= 0 ? rootStackProgress.value - currentIndex : progress;
|
|
121
|
+
const snapIndex = computeSnapIndex(current.progress, sortedSnapPoints);
|
|
116
122
|
return {
|
|
117
123
|
layouts: {
|
|
118
124
|
screen: dimensions
|
|
@@ -123,6 +129,7 @@ function _useScreenAnimation() {
|
|
|
123
129
|
next,
|
|
124
130
|
progress,
|
|
125
131
|
stackProgress,
|
|
132
|
+
snapIndex,
|
|
126
133
|
...helpers
|
|
127
134
|
};
|
|
128
135
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_reactNativeSafeAreaContext","_constants","_keys","_animation","_gesture","_derivations","_bounds","_useStack","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_reactNativeSafeAreaContext","_constants","_keys","_animation","_gesture","_derivations","_bounds","_useStack","computeSnapIndex","progress","snapPoints","length","i","t","unwrapInto","s","out","unwrapped","value","closing","entering","animating","gesture","x","y","normalizedX","normalizedY","isDismissing","isDragging","direction","meta","useBuildScreenTransitionState","descriptor","key","route","options","useMemo","undefined","AnimationStore","getAnimation","GestureStore","getRouteGestures","createScreenTransitionState","hasTransitionsEnabled","alwaysOn","enableTransitions","_useScreenAnimation","windowDimensions","useWindowDimensions","dimensions","insets","useSafeAreaInsets","flags","stackProgress","rootStackProgress","routeKeys","useStack","transitionsAlwaysOn","TRANSITIONS_ALWAYS_ON","current","currentDescriptor","next","nextDescriptor","previous","previousDescriptor","useKeys","currentAnimation","nextAnimation","prevAnimation","currentRouteKey","currentIndex","indexOf","sortedSnapPoints","points","sort","a","b","screenInterpolatorProps","useDerivedValue","DEFAULT_SCREEN_TRANSITION_STATE","helpers","derivations","snapIndex","layouts","screen","nextInterpolator","screenStyleInterpolator","currentInterpolator","useScreenAnimation","props","bounds","createBounds"],"sourceRoot":"../../../../../src","sources":["shared/hooks/animation/use-screen-animation.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,18 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useBuildGestures = void 0;
|
|
7
7
|
var _native = require("@react-navigation/native");
|
|
8
8
|
var _react = require("react");
|
|
9
|
-
var _reactNative = require("react-native");
|
|
10
9
|
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
11
|
-
var _constants = require("../../constants");
|
|
12
10
|
var _keys = require("../../providers/screen/keys.provider");
|
|
13
|
-
var _animation = require("../../stores/animation.store");
|
|
14
11
|
var _gesture = require("../../stores/gesture.store");
|
|
15
12
|
var _useScreenGestureHandlers = require("./use-screen-gesture-handlers");
|
|
16
13
|
const useBuildGestures = ({
|
|
17
14
|
scrollConfig,
|
|
18
15
|
ancestorContext
|
|
19
16
|
}) => {
|
|
20
|
-
const dimensions = (0, _reactNative.useWindowDimensions)();
|
|
21
17
|
const {
|
|
22
18
|
current
|
|
23
19
|
} = (0, _keys.useKeys)();
|
|
@@ -29,14 +25,7 @@ const useBuildGestures = ({
|
|
|
29
25
|
// Ref for external gesture coordination (e.g., swipeable lists)
|
|
30
26
|
const panGestureRef = (0, _react.useRef)(undefined);
|
|
31
27
|
const gestureAnimationValues = _gesture.GestureStore.getRouteGestures(current.route.key);
|
|
32
|
-
const animations = _animation.AnimationStore.getAll(current.route.key);
|
|
33
28
|
const {
|
|
34
|
-
gestureDirection = _constants.DEFAULT_GESTURE_DIRECTION,
|
|
35
|
-
gestureVelocityImpact = _constants.GESTURE_VELOCITY_IMPACT,
|
|
36
|
-
gestureDrivesProgress = _constants.DEFAULT_GESTURE_DRIVES_PROGRESS,
|
|
37
|
-
gestureActivationArea = _constants.DEFAULT_GESTURE_ACTIVATION_AREA,
|
|
38
|
-
gestureResponseDistance,
|
|
39
|
-
transitionSpec,
|
|
40
29
|
snapPoints
|
|
41
30
|
} = current.options;
|
|
42
31
|
|
|
@@ -72,25 +61,11 @@ const useBuildGestures = ({
|
|
|
72
61
|
onUpdate,
|
|
73
62
|
onEnd
|
|
74
63
|
} = (0, _useScreenGestureHandlers.useScreenGestureHandlers)({
|
|
75
|
-
dimensions,
|
|
76
|
-
animations,
|
|
77
|
-
gestureAnimationValues,
|
|
78
|
-
gestureDirection,
|
|
79
|
-
gestureDrivesProgress,
|
|
80
|
-
gestureVelocityImpact,
|
|
81
64
|
scrollConfig,
|
|
82
|
-
gestureActivationArea,
|
|
83
|
-
gestureResponseDistance,
|
|
84
|
-
snapPoints,
|
|
85
65
|
canDismiss,
|
|
86
|
-
transitionSpec,
|
|
87
66
|
handleDismiss,
|
|
88
67
|
ancestorIsDismissing: ancestorContext?.gestureAnimationValues.isDismissing
|
|
89
68
|
});
|
|
90
|
-
|
|
91
|
-
// Memoize gestures to keep stable references - critical for RNGH
|
|
92
|
-
// Child gestures reference ancestor's pan via requireExternalGestureToFail,
|
|
93
|
-
// so the pan gesture MUST be stable or children will reference stale objects
|
|
94
69
|
return (0, _react.useMemo)(() => {
|
|
95
70
|
const panGesture = _reactNativeGestureHandler.Gesture.Pan().withRef(panGestureRef).enabled(gestureEnabled).manualActivation(true).onTouchesDown(onTouchesDown).onTouchesMove(onTouchesMove).onStart(onStart).onUpdate(onUpdate).onEnd(onEnd);
|
|
96
71
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_native","require","_react","
|
|
1
|
+
{"version":3,"names":["_native","require","_react","_reactNativeGestureHandler","_keys","_gesture","_useScreenGestureHandlers","useBuildGestures","scrollConfig","ancestorContext","current","useKeys","navState","navigation","getState","isFirstScreen","useMemo","routes","findIndex","r","key","route","panGestureRef","useRef","undefined","gestureAnimationValues","GestureStore","getRouteGestures","snapPoints","options","canDismiss","Boolean","gestureEnabled","hasSnapPoints","Array","isArray","length","handleDismiss","useCallback","isDismissing","value","state","routeStillPresent","some","dispatch","StackActions","pop","source","target","onTouchesDown","onTouchesMove","onStart","onUpdate","onEnd","useScreenGestureHandlers","ancestorIsDismissing","panGesture","Gesture","Pan","withRef","enabled","manualActivation","nativeGesture","Native","requireExternalGestureToFail","blocksExternalGesture","activePanAncestor","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-build-gestures.tsx"],"mappings":"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","ignoreList":[]}
|