react-native-screen-transitions 3.3.0-beta.2 → 3.3.0-beta.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 (119) hide show
  1. package/README.md +95 -31
  2. package/lib/commonjs/shared/animation/snap-to.js +17 -10
  3. package/lib/commonjs/shared/animation/snap-to.js.map +1 -1
  4. package/lib/commonjs/shared/components/create-transition-aware-component.js +20 -18
  5. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  6. package/lib/commonjs/shared/components/screen-container.js +68 -9
  7. package/lib/commonjs/shared/components/screen-container.js.map +1 -1
  8. package/lib/commonjs/shared/constants.js +8 -1
  9. package/lib/commonjs/shared/constants.js.map +1 -1
  10. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +49 -39
  11. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  12. package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +110 -61
  13. package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
  14. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +67 -70
  15. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  16. package/lib/commonjs/shared/providers/gestures.provider.js +113 -25
  17. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
  18. package/lib/commonjs/shared/types/ownership.types.js +71 -0
  19. package/lib/commonjs/shared/types/ownership.types.js.map +1 -0
  20. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +72 -128
  21. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  22. package/lib/commonjs/shared/utils/gesture/compute-claimed-directions.js +81 -0
  23. package/lib/commonjs/shared/utils/gesture/compute-claimed-directions.js.map +1 -0
  24. package/lib/commonjs/shared/utils/gesture/determine-snap-target.js +1 -1
  25. package/lib/commonjs/shared/utils/gesture/determine-snap-target.js.map +1 -1
  26. package/lib/commonjs/shared/utils/gesture/find-collapse-target.js +48 -0
  27. package/lib/commonjs/shared/utils/gesture/find-collapse-target.js.map +1 -0
  28. package/lib/commonjs/shared/utils/gesture/resolve-ownership.js +87 -0
  29. package/lib/commonjs/shared/utils/gesture/resolve-ownership.js.map +1 -0
  30. package/lib/commonjs/shared/utils/gesture/velocity.js +16 -5
  31. package/lib/commonjs/shared/utils/gesture/velocity.js.map +1 -1
  32. package/lib/module/shared/animation/snap-to.js +16 -10
  33. package/lib/module/shared/animation/snap-to.js.map +1 -1
  34. package/lib/module/shared/components/create-transition-aware-component.js +20 -18
  35. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  36. package/lib/module/shared/components/screen-container.js +68 -10
  37. package/lib/module/shared/components/screen-container.js.map +1 -1
  38. package/lib/module/shared/constants.js +7 -0
  39. package/lib/module/shared/constants.js.map +1 -1
  40. package/lib/module/shared/hooks/gestures/use-build-gestures.js +49 -39
  41. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  42. package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +112 -63
  43. package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
  44. package/lib/module/shared/hooks/gestures/use-scroll-registry.js +68 -70
  45. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  46. package/lib/module/shared/providers/gestures.provider.js +113 -25
  47. package/lib/module/shared/providers/gestures.provider.js.map +1 -1
  48. package/lib/module/shared/types/ownership.types.js +67 -0
  49. package/lib/module/shared/types/ownership.types.js.map +1 -0
  50. package/lib/module/shared/utils/gesture/check-gesture-activation.js +70 -126
  51. package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  52. package/lib/module/shared/utils/gesture/compute-claimed-directions.js +77 -0
  53. package/lib/module/shared/utils/gesture/compute-claimed-directions.js.map +1 -0
  54. package/lib/module/shared/utils/gesture/determine-snap-target.js +1 -1
  55. package/lib/module/shared/utils/gesture/determine-snap-target.js.map +1 -1
  56. package/lib/module/shared/utils/gesture/find-collapse-target.js +44 -0
  57. package/lib/module/shared/utils/gesture/find-collapse-target.js.map +1 -0
  58. package/lib/module/shared/utils/gesture/resolve-ownership.js +83 -0
  59. package/lib/module/shared/utils/gesture/resolve-ownership.js.map +1 -0
  60. package/lib/module/shared/utils/gesture/velocity.js +16 -5
  61. package/lib/module/shared/utils/gesture/velocity.js.map +1 -1
  62. package/lib/typescript/shared/animation/snap-to.d.ts.map +1 -1
  63. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  64. package/lib/typescript/shared/components/screen-container.d.ts.map +1 -1
  65. package/lib/typescript/shared/constants.d.ts +6 -0
  66. package/lib/typescript/shared/constants.d.ts.map +1 -1
  67. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +15 -3
  68. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  69. package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts +52 -2
  70. package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -1
  71. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts +11 -6
  72. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
  73. package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts +1 -1
  74. package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts.map +1 -1
  75. package/lib/typescript/shared/providers/gestures.provider.d.ts +28 -3
  76. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
  77. package/lib/typescript/shared/types/ownership.types.d.ts +52 -0
  78. package/lib/typescript/shared/types/ownership.types.d.ts.map +1 -0
  79. package/lib/typescript/shared/types/screen.types.d.ts +22 -1
  80. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  81. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +23 -19
  82. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  83. package/lib/typescript/shared/utils/gesture/compute-claimed-directions.d.ts +23 -0
  84. package/lib/typescript/shared/utils/gesture/compute-claimed-directions.d.ts.map +1 -0
  85. package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts +5 -1
  86. package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts.map +1 -1
  87. package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts +17 -0
  88. package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts.map +1 -0
  89. package/lib/typescript/shared/utils/gesture/resolve-ownership.d.ts +36 -0
  90. package/lib/typescript/shared/utils/gesture/resolve-ownership.d.ts.map +1 -0
  91. package/lib/typescript/shared/utils/gesture/velocity.d.ts.map +1 -1
  92. package/package.json +121 -120
  93. package/src/shared/animation/snap-to.ts +17 -11
  94. package/src/shared/components/create-transition-aware-component.tsx +28 -25
  95. package/src/shared/components/screen-container.tsx +79 -12
  96. package/src/shared/constants.ts +7 -0
  97. package/src/shared/hooks/gestures/use-build-gestures.tsx +80 -44
  98. package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +147 -71
  99. package/src/shared/hooks/gestures/use-scroll-registry.tsx +94 -86
  100. package/src/shared/hooks/use-backdrop-pointer-events.ts +1 -1
  101. package/src/shared/providers/gestures.provider.tsx +168 -25
  102. package/src/shared/types/ownership.types.ts +77 -0
  103. package/src/shared/types/screen.types.ts +24 -1
  104. package/src/shared/utils/gesture/check-gesture-activation.ts +82 -116
  105. package/src/shared/utils/gesture/compute-claimed-directions.ts +93 -0
  106. package/src/shared/utils/gesture/determine-snap-target.ts +6 -2
  107. package/src/shared/utils/gesture/find-collapse-target.ts +42 -0
  108. package/src/shared/utils/gesture/resolve-ownership.ts +110 -0
  109. package/src/shared/utils/gesture/velocity.ts +16 -6
  110. package/src/shared/__tests__/bounds.store.test.ts +0 -394
  111. package/src/shared/__tests__/derivations.test.ts +0 -156
  112. package/src/shared/__tests__/determine-dismissal.test.ts +0 -111
  113. package/src/shared/__tests__/determine-snap-target.test.ts +0 -268
  114. package/src/shared/__tests__/geometry.test.ts +0 -130
  115. package/src/shared/__tests__/gesture-activation.test.ts +0 -471
  116. package/src/shared/__tests__/gesture.velocity.test.ts +0 -131
  117. package/src/shared/__tests__/history.store.test.ts +0 -550
  118. package/src/shared/__tests__/sync-routes-with-removed.test.ts +0 -137
  119. package/src/shared/__tests__/validate-snap-points.test.ts +0 -125
package/README.md CHANGED
@@ -14,6 +14,22 @@ Customizable screen transitions for React Native. Build gesture-driven, shared e
14
14
  - **Stack Progress** – Track animation progress across the entire stack
15
15
  - **Ready-Made Presets** – Instagram, Apple Music, X (Twitter) style transitions included
16
16
 
17
+ ## When to Use This Library
18
+
19
+ | Use Case | This Library | Alternative |
20
+ |----------|--------------|-------------|
21
+ | Custom transitions (slide, zoom, fade variations) | Yes | `@react-navigation/stack` works too |
22
+ | Shared element transitions | **Yes** | Limited options elsewhere |
23
+ | Multi-stop sheets (bottom, top, side) with snap points | **Yes** | Dedicated sheet libraries |
24
+ | Gesture-driven animations (drag to dismiss, elastic) | **Yes** | Requires custom implementation |
25
+ | Instagram/Apple Music/Twitter-style transitions | **Yes** | Custom implementation |
26
+ | Simple push/pop with platform defaults | Overkill | `@react-navigation/native-stack` |
27
+ | Maximum raw performance on low-end devices | Not ideal | `@react-navigation/native-stack` |
28
+
29
+ **Choose this library when** you need custom animations, shared elements, or gesture-driven transitions that go beyond platform defaults.
30
+
31
+ **Choose native-stack when** you want platform-native transitions with zero configuration and maximum performance on low-end Android devices.
32
+
17
33
  ## Installation
18
34
 
19
35
  ```bash
@@ -190,8 +206,10 @@ Control timing with spring configs:
190
206
  options={{
191
207
  screenStyleInterpolator: myInterpolator,
192
208
  transitionSpec: {
193
- open: { stiffness: 1000, damping: 500, mass: 3 },
194
- close: { stiffness: 1000, damping: 500, mass: 3 },
209
+ open: { stiffness: 1000, damping: 500, mass: 3 }, // Screen enters
210
+ close: { stiffness: 1000, damping: 500, mass: 3 }, // Screen exits
211
+ expand: { stiffness: 300, damping: 30 }, // Snap point increases
212
+ collapse: { stiffness: 300, damping: 30 }, // Snap point decreases
195
213
  },
196
214
  }}
197
215
  ```
@@ -212,14 +230,17 @@ options={{
212
230
 
213
231
  ### Gesture Options
214
232
 
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 |
233
+ | Option | Description |
234
+ | ------------------------- | ------------------------------------------------------------------------ |
235
+ | `gestureEnabled` | Enable swipe-to-dismiss |
236
+ | `gestureDirection` | Direction(s) for swipe gesture |
237
+ | `gestureActivationArea` | Where gesture can start |
238
+ | `gestureResponseDistance` | Pixel threshold for activation |
239
+ | `gestureVelocityImpact` | How much velocity affects dismissal (default: 0.3) |
240
+ | `gestureDrivesProgress` | Whether gesture controls animation progress (default: true) |
241
+ | `snapVelocityImpact` | How much velocity affects snap targeting (default: 0.1, lower = iOS-like)|
242
+ | `expandViaScrollView` | Whether scroll-at-top expands snap sheets (default: true) |
243
+ | `backdropBehavior` | Touch handling for backdrop area |
223
244
 
224
245
  ### Gesture Direction
225
246
 
@@ -269,44 +290,64 @@ Gesture rules with scrollables:
269
290
 
270
291
  ---
271
292
 
272
- ## Bottom Sheets
293
+ ## Snap Points
273
294
 
274
- Create multi-stop bottom sheets with snap points:
295
+ Create multi-stop sheets that snap to defined positions. Works with any gesture direction (bottom sheets, top sheets, side sheets):
275
296
 
276
297
  ### Basic Configuration
277
298
 
278
299
  ```tsx
300
+ // Bottom sheet (most common)
279
301
  <Stack.Screen
280
302
  name="Sheet"
281
303
  options={{
282
304
  gestureEnabled: true,
283
305
  gestureDirection: "vertical",
284
- snapPoints: [0.5, 1], // 50% and 100% height
306
+ snapPoints: [0.5, 1], // 50% and 100% of screen
285
307
  initialSnapIndex: 0, // Start at 50%
286
308
  backdropBehavior: "dismiss", // Tap backdrop to dismiss
287
309
  ...Transition.Presets.SlideFromBottom(),
288
310
  }}
289
311
  />
312
+
313
+ // Side sheet (same API, different direction)
314
+ <Stack.Screen
315
+ name="SidePanel"
316
+ options={{
317
+ gestureEnabled: true,
318
+ gestureDirection: "horizontal",
319
+ snapPoints: [0.3, 0.7, 1], // 30%, 70%, 100% of screen width
320
+ initialSnapIndex: 1,
321
+ ...Transition.Presets.SlideFromRight(),
322
+ }}
323
+ />
290
324
  ```
291
325
 
292
326
  ### Options
293
327
 
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"` |
328
+ | Option | Description |
329
+ | ------------------ | -------------------------------------------------------------------- |
330
+ | `snapPoints` | Array of fractions (0-1) where sheet can rest |
331
+ | `initialSnapIndex` | Index of initial snap point (default: 0) |
332
+ | `backdropBehavior` | Touch handling: `"block"`, `"passthrough"`, `"dismiss"`, `"collapse"`|
333
+
334
+ #### backdropBehavior Values
335
+
336
+ | Value | Description |
337
+ | --------------- | ---------------------------------------------------------------- |
338
+ | `"block"` | Backdrop catches all touches (default) |
339
+ | `"passthrough"` | Touches pass through to content behind |
340
+ | `"dismiss"` | Tapping backdrop dismisses the screen |
341
+ | `"collapse"` | Tapping backdrop collapses to next lower snap point, then dismisses |
299
342
 
300
343
  ### Programmatic Control
301
344
 
302
- Control snap points from within your screen:
345
+ Control snap points from anywhere in your app:
303
346
 
304
347
  ```tsx
305
- import { useScreenState } from "react-native-screen-transitions";
348
+ import { snapTo } from "react-native-screen-transitions";
306
349
 
307
350
  function BottomSheet() {
308
- const { snapTo } = useScreenState();
309
-
310
351
  // Expand to full height (index 1)
311
352
  const expand = () => snapTo(1);
312
353
 
@@ -471,19 +512,13 @@ function DetailScreen() {
471
512
 
472
513
  ### useScreenState
473
514
 
474
- Get navigation state and snap point controls:
515
+ Get navigation state without animation values:
475
516
 
476
517
  ```tsx
477
518
  import { useScreenState } from "react-native-screen-transitions";
478
519
 
479
520
  function DetailScreen() {
480
- const {
481
- index,
482
- focusedRoute,
483
- routes,
484
- navigation,
485
- snapTo, // Snap to index programmatically
486
- } = useScreenState();
521
+ const { index, focusedRoute, routes, navigation } = useScreenState();
487
522
  // ...
488
523
  }
489
524
  ```
@@ -503,6 +538,33 @@ function MyComponent() {
503
538
  }
504
539
  ```
505
540
 
541
+ ### useScreenGesture
542
+
543
+ Coordinate your own pan gestures with the navigation gesture:
544
+
545
+ ```tsx
546
+ import { useScreenGesture } from "react-native-screen-transitions";
547
+ import { Gesture, GestureDetector } from "react-native-gesture-handler";
548
+
549
+ function MyScreen() {
550
+ const screenGesture = useScreenGesture();
551
+
552
+ const myPanGesture = Gesture.Pan()
553
+ .simultaneousWithExternalGesture(screenGesture)
554
+ .onUpdate((e) => {
555
+ // Your gesture logic
556
+ });
557
+
558
+ return (
559
+ <GestureDetector gesture={myPanGesture}>
560
+ <View />
561
+ </GestureDetector>
562
+ );
563
+ }
564
+ ```
565
+
566
+ Use this when you have custom pan gestures that need to work alongside screen dismiss gestures.
567
+
506
568
  ---
507
569
 
508
570
  ## Advanced Animation Props
@@ -513,6 +575,8 @@ The full `screenStyleInterpolator` receives these props:
513
575
  | ---------------- | -------------------------------------------------------- |
514
576
  | `progress` | Combined progress (0-2) |
515
577
  | `stackProgress` | Accumulated progress across entire stack |
578
+ | `snapIndex` | Animated snap point index (-1 if no snap points) |
579
+ | `focused` | Whether this screen is the topmost in the stack |
516
580
  | `current` | Current screen state |
517
581
  | `previous` | Previous screen state |
518
582
  | `next` | Next screen state |
@@ -586,7 +650,7 @@ All three stacks share the same animation API. Choose based on your needs:
586
650
 
587
651
  ### Blank Stack
588
652
 
589
- The default choice. Pure JavaScript with native-level performance via `react-native-screens`.
653
+ The default choice. Uses `react-native-screens` for native screen containers, with animations powered by Reanimated worklets running on the UI thread (not the JS thread).
590
654
 
591
655
  ```tsx
592
656
  import { createBlankStackNavigator } from "react-native-screen-transitions/blank-stack";
@@ -9,6 +9,9 @@ var _specs = require("../configs/specs");
9
9
  var _animation = require("../stores/animation.store");
10
10
  var _history = require("../stores/history.store");
11
11
  var _animateToProgress = require("../utils/animation/animate-to-progress");
12
+ var _logger = require("../utils/logger");
13
+ /** biome-ignore-all lint/style/noNonNullAssertion: <Options always exist> */
14
+
12
15
  /**
13
16
  * Programmatically snap the currently focused screen to a specific snap point.
14
17
  *
@@ -26,22 +29,26 @@ var _animateToProgress = require("../utils/animation/animate-to-progress");
26
29
  * ```
27
30
  */
28
31
  function snapTo(index) {
29
- const recent = _history.HistoryStore.getMostRecent();
30
- if (!recent) {
31
- console.warn("snapTo: No screen in history");
32
+ // Find the most recent screen that has snapPoints defined.
33
+ // This handles cases where parent screens (e.g., expo-router) register after
34
+ // ComponentStack screens, but the ComponentStack is what we want to snap.
35
+ const allHistory = _history.HistoryStore.toArray();
36
+ const screenWithSnapPoints = allHistory.filter(entry => {
37
+ const sp = entry.descriptor.options?.snapPoints;
38
+ return sp && sp.length > 0;
39
+ }).pop(); // Last item is most recent (toArray returns oldest-first)
40
+
41
+ if (!screenWithSnapPoints) {
42
+ _logger.logger.warn("snapTo: No screens with snapPoints in history");
32
43
  return;
33
44
  }
34
45
  const {
35
46
  descriptor
36
- } = recent;
37
- const snapPoints = descriptor.options?.snapPoints;
38
- if (!snapPoints || snapPoints.length === 0) {
39
- console.warn("snapTo: No snapPoints defined on current screen");
40
- return;
41
- }
47
+ } = screenWithSnapPoints;
48
+ const snapPoints = descriptor.options.snapPoints;
42
49
  const sorted = [...snapPoints].sort((a, b) => a - b);
43
50
  if (index < 0 || index >= sorted.length) {
44
- console.warn(`snapTo: index ${index} out of bounds (0-${sorted.length - 1})`);
51
+ _logger.logger.warn(`snapTo: index ${index} out of bounds (0-${sorted.length - 1})`);
45
52
  return;
46
53
  }
47
54
  const targetProgress = sorted[index];
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeReanimated","require","_specs","_animation","_history","_animateToProgress","snapTo","index","recent","HistoryStore","getMostRecent","console","warn","descriptor","snapPoints","options","length","sorted","sort","a","b","targetProgress","animations","AnimationStore","getAll","route","key","runOnUI","animateToProgress","target","spec","open","transitionSpec","expand","DefaultSnapSpec","close","collapse"],"sourceRoot":"../../../../src","sources":["shared/animation/snap-to.ts"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,MAAMA,CAACC,KAAa,EAAQ;EAC3C,MAAMC,MAAM,GAAGC,qBAAY,CAACC,aAAa,CAAC,CAAC;EAE3C,IAAI,CAACF,MAAM,EAAE;IACZG,OAAO,CAACC,IAAI,CAAC,8BAA8B,CAAC;IAC5C;EACD;EAEA,MAAM;IAAEC;EAAW,CAAC,GAAGL,MAAM;EAC7B,MAAMM,UAAU,GAAGD,UAAU,CAACE,OAAO,EAAED,UAAU;EAEjD,IAAI,CAACA,UAAU,IAAIA,UAAU,CAACE,MAAM,KAAK,CAAC,EAAE;IAC3CL,OAAO,CAACC,IAAI,CAAC,iDAAiD,CAAC;IAC/D;EACD;EAEA,MAAMK,MAAM,GAAG,CAAC,GAAGH,UAAU,CAAC,CAACI,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EAEpD,IAAIb,KAAK,GAAG,CAAC,IAAIA,KAAK,IAAIU,MAAM,CAACD,MAAM,EAAE;IACxCL,OAAO,CAACC,IAAI,CACX,iBAAiBL,KAAK,qBAAqBU,MAAM,CAACD,MAAM,GAAG,CAAC,GAC7D,CAAC;IACD;EACD;EAEA,MAAMK,cAAc,GAAGJ,MAAM,CAACV,KAAK,CAAC;EACpC,MAAMe,UAAU,GAAGC,yBAAc,CAACC,MAAM,CAACX,UAAU,CAACY,KAAK,CAACC,GAAG,CAAC;EAE9D,IAAAC,8BAAO,EAAC,MAAM;IACb,SAAS;;IACT,IAAAC,oCAAiB,EAAC;MACjBC,MAAM,EAAER,cAAc;MACtBC,UAAU;MACVQ,IAAI,EAAE;QACLC,IAAI,EAAElB,UAAU,CAACE,OAAO,CAACiB,cAAc,EAAEC,MAAM,IAAIC,sBAAe;QAClEC,KAAK,EAAEtB,UAAU,CAACE,OAAO,CAACiB,cAAc,EAAEI,QAAQ,IAAIF;MACvD;IACD,CAAC,CAAC;EACH,CAAC,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeReanimated","require","_specs","_animation","_history","_animateToProgress","_logger","snapTo","index","allHistory","HistoryStore","toArray","screenWithSnapPoints","filter","entry","sp","descriptor","options","snapPoints","length","pop","logger","warn","sorted","sort","a","b","targetProgress","animations","AnimationStore","getAll","route","key","runOnUI","animateToProgress","target","spec","open","transitionSpec","expand","DefaultSnapSpec","close","collapse"],"sourceRoot":"../../../../src","sources":["shared/animation/snap-to.ts"],"mappings":";;;;;;AACA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AANA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,MAAMA,CAACC,KAAa,EAAQ;EAC3C;EACA;EACA;EACA,MAAMC,UAAU,GAAGC,qBAAY,CAACC,OAAO,CAAC,CAAC;EACzC,MAAMC,oBAAoB,GAAGH,UAAU,CACrCI,MAAM,CAAEC,KAAK,IAAK;IAClB,MAAMC,EAAE,GAAGD,KAAK,CAACE,UAAU,CAACC,OAAO,EAAEC,UAAU;IAC/C,OAAOH,EAAE,IAAIA,EAAE,CAACI,MAAM,GAAG,CAAC;EAC3B,CAAC,CAAC,CACDC,GAAG,CAAC,CAAC,CAAC,CAAC;;EAET,IAAI,CAACR,oBAAoB,EAAE;IAC1BS,cAAM,CAACC,IAAI,CAAC,+CAA+C,CAAC;IAC5D;EACD;EAEA,MAAM;IAAEN;EAAW,CAAC,GAAGJ,oBAAoB;EAC3C,MAAMM,UAAU,GAAGF,UAAU,CAACC,OAAO,CAAEC,UAAW;EAElD,MAAMK,MAAM,GAAG,CAAC,GAAGL,UAAU,CAAC,CAACM,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EAEpD,IAAIlB,KAAK,GAAG,CAAC,IAAIA,KAAK,IAAIe,MAAM,CAACJ,MAAM,EAAE;IACxCE,cAAM,CAACC,IAAI,CACV,iBAAiBd,KAAK,qBAAqBe,MAAM,CAACJ,MAAM,GAAG,CAAC,GAC7D,CAAC;IACD;EACD;EAEA,MAAMQ,cAAc,GAAGJ,MAAM,CAACf,KAAK,CAAC;EACpC,MAAMoB,UAAU,GAAGC,yBAAc,CAACC,MAAM,CAACd,UAAU,CAACe,KAAK,CAACC,GAAG,CAAC;EAE9D,IAAAC,8BAAO,EAAC,MAAM;IACb,SAAS;;IACT,IAAAC,oCAAiB,EAAC;MACjBC,MAAM,EAAER,cAAc;MACtBC,UAAU;MACVQ,IAAI,EAAE;QACLC,IAAI,EAAErB,UAAU,CAACC,OAAO,CAACqB,cAAc,EAAEC,MAAM,IAAIC,sBAAe;QAClEC,KAAK,EAAEzB,UAAU,CAACC,OAAO,CAACqB,cAAc,EAAEI,QAAQ,IAAIF;MACvD;IACD,CAAC,CAAC;EACH,CAAC,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
@@ -9,7 +9,6 @@ var _reactNativeGestureHandler = require("react-native-gesture-handler");
9
9
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
10
10
  var _useAssociatedStyle = require("../hooks/animation/use-associated-style");
11
11
  var _useScrollRegistry = require("../hooks/gestures/use-scroll-registry");
12
- var _gestures = require("../providers/gestures.provider");
13
12
  var _registerBounds = require("../providers/register-bounds.provider");
14
13
  var _jsxRuntime = require("react/jsx-runtime");
15
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -21,34 +20,37 @@ function createTransitionAwareComponent(Wrapped, options = {}) {
21
20
  } = options;
22
21
  const AnimatedComponent = _reactNativeReanimated.default.createAnimatedComponent(Wrapped);
23
22
  const ScrollableInner = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
24
- const {
25
- nativeGesture
26
- } = (0, _gestures.useGestureContext)();
23
+ // Determine scroll direction from the horizontal prop (standard ScrollView API)
24
+ const scrollDirection = props.horizontal ? "horizontal" : "vertical";
25
+
26
+ // Get scroll handlers and the gesture owner's nativeGesture for this axis
27
27
  const {
28
28
  scrollHandler,
29
29
  onContentSizeChange,
30
30
  onLayout,
31
- onTouchStart,
32
- onTouchEnd
31
+ nativeGesture
33
32
  } = (0, _useScrollRegistry.useScrollRegistry)({
34
33
  onScroll: props.onScroll,
35
34
  onContentSizeChange: props.onContentSizeChange,
36
35
  onLayout: props.onLayout,
37
- onTouchStart: props.onTouchStart,
38
- onTouchEnd: props.onTouchEnd
36
+ direction: scrollDirection
39
37
  });
38
+ const scrollableComponent = /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedComponent, {
39
+ ...props,
40
+ ref: ref,
41
+ onScroll: scrollHandler,
42
+ onContentSizeChange: onContentSizeChange,
43
+ onLayout: onLayout,
44
+ scrollEventThrottle: props.scrollEventThrottle || 16
45
+ });
46
+
47
+ // If no gesture owner found for this axis, render without GestureDetector
48
+ if (!nativeGesture) {
49
+ return scrollableComponent;
50
+ }
40
51
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
41
52
  gesture: nativeGesture,
42
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedComponent, {
43
- ...props,
44
- ref: ref,
45
- onScroll: scrollHandler,
46
- onContentSizeChange: onContentSizeChange,
47
- onLayout: onLayout,
48
- onTouchStart: onTouchStart,
49
- onTouchEnd: onTouchEnd,
50
- scrollEventThrottle: props.scrollEventThrottle || 16
51
- })
53
+ children: scrollableComponent
52
54
  });
53
55
  });
54
56
  const Inner = /*#__PURE__*/(0, _react.forwardRef)((props, _) => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_useAssociatedStyle","_useScrollRegistry","_gestures","_registerBounds","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","Animated","createAnimatedComponent","ScrollableInner","forwardRef","props","ref","nativeGesture","useGestureContext","scrollHandler","onContentSizeChange","onLayout","onTouchStart","onTouchEnd","useScrollRegistry","onScroll","jsx","GestureDetector","gesture","children","scrollEventThrottle","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","useAnimatedRef","associatedStyles","useAssociatedStyles","id","RegisterBoundsProvider","captureActiveOnPress","handleInitialLayout","runOnUI","collapsable","memo"],"sourceRoot":"../../../../src","sources":["shared/components/create-transition-aware-component.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_useAssociatedStyle","_useScrollRegistry","_registerBounds","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","Animated","createAnimatedComponent","ScrollableInner","forwardRef","props","ref","scrollDirection","horizontal","scrollHandler","onContentSizeChange","onLayout","nativeGesture","useScrollRegistry","onScroll","direction","scrollableComponent","jsx","scrollEventThrottle","GestureDetector","gesture","children","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","useAnimatedRef","associatedStyles","useAssociatedStyles","id","RegisterBoundsProvider","captureActiveOnPress","handleInitialLayout","runOnUI","collapsable","memo"],"sourceRoot":"../../../../src","sources":["shared/components/create-transition-aware-component.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,13 +7,22 @@ exports.ScreenContainer = void 0;
7
7
  var _native = require("@react-navigation/native");
8
8
  var _react = require("react");
9
9
  var _reactNative = require("react-native");
10
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
10
11
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
12
+ var _specs = require("../configs/specs");
11
13
  var _constants = require("../constants");
12
14
  var _useBackdropPointerEvents = require("../hooks/use-backdrop-pointer-events");
15
+ var _gestures = require("../providers/gestures.provider");
13
16
  var _keys = require("../providers/screen/keys.provider");
14
17
  var _styles = require("../providers/screen/styles.provider");
18
+ var _animation = require("../stores/animation.store");
19
+ var _gesture = require("../stores/gesture.store");
20
+ var _animateToProgress = require("../utils/animation/animate-to-progress");
21
+ var _findCollapseTarget = require("../utils/gesture/find-collapse-target");
15
22
  var _jsxRuntime = require("react/jsx-runtime");
16
23
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
+ /** biome-ignore-all lint/style/noNonNullAssertion: <Screen gesture is under the gesture context, so this will always exist.> */
25
+
17
26
  const ScreenContainer = exports.ScreenContainer = /*#__PURE__*/(0, _react.memo)(({
18
27
  children
19
28
  }) => {
@@ -27,10 +36,57 @@ const ScreenContainer = exports.ScreenContainer = /*#__PURE__*/(0, _react.memo)(
27
36
  pointerEvents,
28
37
  backdropBehavior
29
38
  } = (0, _useBackdropPointerEvents.useBackdropPointerEvents)();
30
- const isDismissable = backdropBehavior === "dismiss";
39
+ const gestureContext = (0, _gestures.useGestureContext)();
40
+ const isBackdropActive = backdropBehavior === "dismiss" || backdropBehavior === "collapse";
41
+ const handleDismiss = (0, _react.useCallback)(() => {
42
+ const state = current.navigation.getState();
43
+ current.navigation.dispatch({
44
+ ..._native.StackActions.pop(),
45
+ source: current.route.key,
46
+ target: state.key
47
+ });
48
+ }, [current]);
31
49
  const handleBackdropPress = (0, _react.useCallback)(() => {
32
- current.navigation.dispatch(_native.StackActions.pop());
33
- }, [current.navigation]);
50
+ if (backdropBehavior === "dismiss") {
51
+ handleDismiss();
52
+ return;
53
+ }
54
+ if (backdropBehavior === "collapse") {
55
+ const snapPoints = current.options.snapPoints;
56
+ const canDismiss = current.options.gestureEnabled !== false;
57
+
58
+ // No snap points → fallback to dismiss
59
+ if (!snapPoints || snapPoints.length === 0) {
60
+ handleDismiss();
61
+ return;
62
+ }
63
+ const animations = _animation.AnimationStore.getAll(current.route.key);
64
+ const gestures = _gesture.GestureStore.getRouteGestures(current.route.key);
65
+ const transitionSpec = current.options.transitionSpec;
66
+ (0, _reactNativeReanimated.runOnUI)(() => {
67
+ "worklet";
68
+
69
+ const {
70
+ target,
71
+ shouldDismiss
72
+ } = (0, _findCollapseTarget.findCollapseTarget)(animations.progress.value, snapPoints, canDismiss);
73
+
74
+ // If already dismissing, skip
75
+ if (gestures.isDismissing.value) return;
76
+ gestures.isDismissing.value = shouldDismiss ? 1 : 0;
77
+ const spec = shouldDismiss ? transitionSpec : {
78
+ open: transitionSpec?.expand ?? _specs.DefaultSnapSpec,
79
+ close: transitionSpec?.collapse ?? _specs.DefaultSnapSpec
80
+ };
81
+ (0, _animateToProgress.animateToProgress)({
82
+ target,
83
+ spec,
84
+ animations,
85
+ onAnimationFinish: shouldDismiss ? handleDismiss : undefined
86
+ });
87
+ })();
88
+ }
89
+ }, [backdropBehavior, current, handleDismiss]);
34
90
  const animatedContentStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
35
91
  "worklet";
36
92
 
@@ -46,15 +102,18 @@ const ScreenContainer = exports.ScreenContainer = /*#__PURE__*/(0, _react.memo)(
46
102
  pointerEvents: pointerEvents,
47
103
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
48
104
  style: _reactNative.StyleSheet.absoluteFillObject,
49
- pointerEvents: isDismissable ? "auto" : "none",
50
- onPress: isDismissable ? handleBackdropPress : undefined,
105
+ pointerEvents: isBackdropActive ? "auto" : "none",
106
+ onPress: isBackdropActive ? handleBackdropPress : undefined,
51
107
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
52
108
  style: [_reactNative.StyleSheet.absoluteFillObject, animatedBackdropStyle]
53
109
  })
54
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
55
- style: [styles.content, animatedContentStyle],
56
- pointerEvents: isDismissable ? "box-none" : pointerEvents,
57
- children: children
110
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
111
+ gesture: gestureContext.panGesture,
112
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
113
+ style: [styles.content, animatedContentStyle],
114
+ pointerEvents: isBackdropActive ? "box-none" : pointerEvents,
115
+ children: children
116
+ })
58
117
  })]
59
118
  });
60
119
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_native","require","_react","_reactNative","_reactNativeReanimated","_interopRequireWildcard","_constants","_useBackdropPointerEvents","_keys","_styles","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ScreenContainer","exports","memo","children","stylesMap","useScreenStyles","current","useKeys","pointerEvents","backdropBehavior","useBackdropPointerEvents","isDismissable","handleBackdropPress","useCallback","navigation","dispatch","StackActions","pop","animatedContentStyle","useAnimatedStyle","value","contentStyle","NO_STYLES","animatedBackdropStyle","backdropStyle","overlayStyle","jsxs","View","style","styles","container","jsx","Pressable","StyleSheet","absoluteFillObject","onPress","undefined","content","create","flex"],"sourceRoot":"../../../../src","sources":["shared/components/screen-container.tsx"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAC,uBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,yBAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AAAsE,IAAAS,WAAA,GAAAT,OAAA;AAAA,SAAAI,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAM/D,MAAMkB,eAAe,GAAAC,OAAA,CAAAD,eAAA,gBAAG,IAAAE,WAAI,EAAC,CAAC;EAAEC;AAAgB,CAAC,KAAK;EAC5D,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,uBAAe,EAAC,CAAC;EACvC,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EAC7B,MAAM;IAAEC,aAAa;IAAEC;EAAiB,CAAC,GAAG,IAAAC,kDAAwB,EAAC,CAAC;EAEtE,MAAMC,aAAa,GAAGF,gBAAgB,KAAK,SAAS;EAEpD,MAAMG,mBAAmB,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAC7CP,OAAO,CAACQ,UAAU,CAACC,QAAQ,CAACC,oBAAY,CAACC,GAAG,CAAC,CAAC,CAAC;EAChD,CAAC,EAAE,CAACX,OAAO,CAACQ,UAAU,CAAC,CAAC;EAExB,MAAMI,oBAAoB,GAAG,IAAAC,uCAAgB,EAAC,MAAM;IACnD,SAAS;;IACT,OAAOf,SAAS,CAACgB,KAAK,CAACC,YAAY,IAAIC,oBAAS;EACjD,CAAC,CAAC;EAEF,MAAMC,qBAAqB,GAAG,IAAAJ,uCAAgB,EAAC,MAAM;IACpD,SAAS;;IACT,OACCf,SAAS,CAACgB,KAAK,CAACI,aAAa,IAAIpB,SAAS,CAACgB,KAAK,CAACK,YAAY,IAAIH,oBAAS;EAE5E,CAAC,CAAC;EAEF,oBACC,IAAA1C,WAAA,CAAA8C,IAAA,EAACrD,YAAA,CAAAsD,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACtB,aAAa,EAAEA,aAAc;IAAAL,QAAA,gBAC3D,IAAAvB,WAAA,CAAAmD,GAAA,EAAC1D,YAAA,CAAA2D,SAAS;MACTJ,KAAK,EAAEK,uBAAU,CAACC,kBAAmB;MACrC1B,aAAa,EAAEG,aAAa,GAAG,MAAM,GAAG,MAAO;MAC/CwB,OAAO,EAAExB,aAAa,GAAGC,mBAAmB,GAAGwB,SAAU;MAAAjC,QAAA,eAEzD,IAAAvB,WAAA,CAAAmD,GAAA,EAACzD,sBAAA,CAAAiB,OAAQ,CAACoC,IAAI;QACbC,KAAK,EAAE,CAACK,uBAAU,CAACC,kBAAkB,EAAEX,qBAAqB;MAAE,CAC9D;IAAC,CACQ,CAAC,eACZ,IAAA3C,WAAA,CAAAmD,GAAA,EAACzD,sBAAA,CAAAiB,OAAQ,CAACoC,IAAI;MACbC,KAAK,EAAE,CAACC,MAAM,CAACQ,OAAO,EAAEnB,oBAAoB,CAAE;MAC9CV,aAAa,EAAEG,aAAa,GAAG,UAAU,GAAGH,aAAc;MAAAL,QAAA,EAEzDA;IAAQ,CACK,CAAC;EAAA,CACX,CAAC;AAET,CAAC,CAAC;AAEF,MAAM0B,MAAM,GAAGI,uBAAU,CAACK,MAAM,CAAC;EAChCR,SAAS,EAAE;IACVS,IAAI,EAAE;EACP,CAAC;EACDF,OAAO,EAAE;IACRE,IAAI,EAAE;EACP;AACD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_native","require","_react","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_specs","_constants","_useBackdropPointerEvents","_gestures","_keys","_styles","_animation","_gesture","_animateToProgress","_findCollapseTarget","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ScreenContainer","exports","memo","children","stylesMap","useScreenStyles","current","useKeys","pointerEvents","backdropBehavior","useBackdropPointerEvents","gestureContext","useGestureContext","isBackdropActive","handleDismiss","useCallback","state","navigation","getState","dispatch","StackActions","pop","source","route","key","target","handleBackdropPress","snapPoints","options","canDismiss","gestureEnabled","length","animations","AnimationStore","getAll","gestures","GestureStore","getRouteGestures","transitionSpec","runOnUI","shouldDismiss","findCollapseTarget","progress","value","isDismissing","spec","open","expand","DefaultSnapSpec","close","collapse","animateToProgress","onAnimationFinish","undefined","animatedContentStyle","useAnimatedStyle","contentStyle","NO_STYLES","animatedBackdropStyle","backdropStyle","overlayStyle","jsxs","View","style","styles","container","jsx","Pressable","StyleSheet","absoluteFillObject","onPress","GestureDetector","gesture","panGesture","content","create","flex"],"sourceRoot":"../../../../src","sources":["shared/components/screen-container.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.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;
6
+ exports.createScreenTransitionState = exports.TRUE = exports.SNAP_VELOCITY_IMPACT = 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 = exports.ANIMATION_SNAP_THRESHOLD = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  /**
9
9
  * Masked view integration
@@ -90,6 +90,7 @@ const FULLSCREEN_DIMENSIONS = dimensions => {
90
90
  */
91
91
  exports.FULLSCREEN_DIMENSIONS = FULLSCREEN_DIMENSIONS;
92
92
  const GESTURE_VELOCITY_IMPACT = exports.GESTURE_VELOCITY_IMPACT = 0.3;
93
+ const SNAP_VELOCITY_IMPACT = exports.SNAP_VELOCITY_IMPACT = 0.1;
93
94
  const DEFAULT_GESTURE_DIRECTION = exports.DEFAULT_GESTURE_DIRECTION = "horizontal";
94
95
  const DEFAULT_GESTURE_DRIVES_PROGRESS = exports.DEFAULT_GESTURE_DRIVES_PROGRESS = true;
95
96
  const DEFAULT_GESTURE_ACTIVATION_AREA = exports.DEFAULT_GESTURE_ACTIVATION_AREA = "screen";
@@ -101,4 +102,10 @@ const FALSE = exports.FALSE = 0;
101
102
  * Small value for floating-point comparisons to handle animation/interpolation imprecision
102
103
  */
103
104
  const EPSILON = exports.EPSILON = 1e-5;
105
+
106
+ /**
107
+ * Threshold for snapping animations to target when "close enough" (1% of range).
108
+ * Prevents micro-jitter/oscillation near animation endpoints.
109
+ */
110
+ const ANIMATION_SNAP_THRESHOLD = exports.ANIMATION_SNAP_THRESHOLD = 0.01;
104
111
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
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":[]}
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","SNAP_VELOCITY_IMPACT","DEFAULT_GESTURE_DIRECTION","DEFAULT_GESTURE_DRIVES_PROGRESS","DEFAULT_GESTURE_ACTIVATION_AREA","IS_WEB","Platform","OS","TRUE","FALSE","EPSILON","ANIMATION_SNAP_THRESHOLD"],"sourceRoot":"../../../src","sources":["shared/constants.ts"],"mappings":"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","ignoreList":[]}