react-native-screen-transitions 3.3.0-beta.3 → 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 +2 -0
  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 +59 -6
  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 +112 -5
  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 +1 -0
  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 +59 -7
  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 +112 -5
  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 +27 -2
  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 +1 -0
  94. package/src/shared/components/create-transition-aware-component.tsx +28 -25
  95. package/src/shared/components/screen-container.tsx +69 -7
  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 +166 -5
  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
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findCollapseTarget = findCollapseTarget;
7
+ var _constants = require("../../constants");
8
+ /**
9
+ * Finds the next lower snap point for backdrop collapse behavior.
10
+ *
11
+ * - If above min snap: returns next lower snap point
12
+ * - If at or below min snap: returns 0 (dismiss) if canDismiss, else stays at min
13
+ *
14
+ * @param currentProgress - Current animation progress
15
+ * @param snapPoints - Array of snap points
16
+ * @param canDismiss - Whether dismissing is allowed
17
+ */
18
+ function findCollapseTarget(currentProgress, snapPoints, canDismiss) {
19
+ "worklet";
20
+
21
+ const sorted = [...snapPoints].sort((a, b) => a - b);
22
+ const minSnap = sorted[0];
23
+
24
+ // Find next lower snap point
25
+ for (let i = sorted.length - 1; i >= 0; i--) {
26
+ if (sorted[i] < currentProgress - _constants.EPSILON) {
27
+ return {
28
+ target: sorted[i],
29
+ shouldDismiss: false
30
+ };
31
+ }
32
+ }
33
+
34
+ // At or below min snap → dismiss if allowed
35
+ if (canDismiss) {
36
+ return {
37
+ target: 0,
38
+ shouldDismiss: true
39
+ };
40
+ }
41
+
42
+ // Can't dismiss, stay at min
43
+ return {
44
+ target: minSnap,
45
+ shouldDismiss: false
46
+ };
47
+ }
48
+ //# sourceMappingURL=find-collapse-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_constants","require","findCollapseTarget","currentProgress","snapPoints","canDismiss","sorted","sort","a","b","minSnap","i","length","EPSILON","target","shouldDismiss"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/find-collapse-target.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CACjCC,eAAuB,EACvBC,UAAoB,EACpBC,UAAmB,EACQ;EAC3B,SAAS;;EAET,MAAMC,MAAM,GAAG,CAAC,GAAGF,UAAU,CAAC,CAACG,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EACpD,MAAMC,OAAO,GAAGJ,MAAM,CAAC,CAAC,CAAC;;EAEzB;EACA,KAAK,IAAIK,CAAC,GAAGL,MAAM,CAACM,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC5C,IAAIL,MAAM,CAACK,CAAC,CAAC,GAAGR,eAAe,GAAGU,kBAAO,EAAE;MAC1C,OAAO;QAAEC,MAAM,EAAER,MAAM,CAACK,CAAC,CAAC;QAAEI,aAAa,EAAE;MAAM,CAAC;IACnD;EACD;;EAEA;EACA,IAAIV,UAAU,EAAE;IACf,OAAO;MAAES,MAAM,EAAE,CAAC;MAAEC,aAAa,EAAE;IAAK,CAAC;EAC1C;;EAEA;EACA,OAAO;IAAED,MAAM,EAAEJ,OAAO;IAAEK,aAAa,EAAE;EAAM,CAAC;AACjD","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findNearestOwner = findNearestOwner;
7
+ exports.resolveOwnership = resolveOwnership;
8
+ var _ownership = require("../../types/ownership.types");
9
+ /**
10
+ * Minimal interface for ancestor context needed for ownership resolution.
11
+ * This allows the function to be used without importing the full GestureContextType.
12
+ */
13
+
14
+ /**
15
+ * Resolves ownership status for all directions relative to the current screen.
16
+ *
17
+ * For each direction:
18
+ * 1. If the current screen claims it → 'self' (should activate)
19
+ * 2. Else, walk up ancestors looking for a claim → 'ancestor' (should fail to bubble)
20
+ * 3. If no one claims it → 'none' (should fail, no gesture response)
21
+ *
22
+ * This is computed during render (JS thread) and the result can be safely
23
+ * used in worklets since it's a plain object.
24
+ *
25
+ * @param selfClaims - The directions claimed by the current screen
26
+ * @param ancestorContext - The ancestor context chain (can be null if no ancestors)
27
+ * @returns Ownership status for all four directions
28
+ */
29
+ function resolveOwnership(selfClaims, ancestorContext) {
30
+ const result = {
31
+ ..._ownership.NO_OWNERSHIP
32
+ };
33
+ for (const direction of _ownership.DIRECTIONS) {
34
+ result[direction] = resolveDirectionOwnership(direction, selfClaims, ancestorContext);
35
+ }
36
+ return result;
37
+ }
38
+
39
+ /**
40
+ * Resolves ownership for a single direction.
41
+ */
42
+ function resolveDirectionOwnership(direction, selfClaims, ancestorContext) {
43
+ // Check self first
44
+ if (selfClaims[direction]) {
45
+ return "self";
46
+ }
47
+
48
+ // Walk ancestors looking for a claim
49
+ let ancestor = ancestorContext;
50
+ while (ancestor) {
51
+ if (ancestor.claimedDirections?.[direction]) {
52
+ return "ancestor";
53
+ }
54
+ ancestor = ancestor.ancestorContext;
55
+ }
56
+
57
+ // No one claims this direction
58
+ return "none";
59
+ }
60
+
61
+ /**
62
+ * Finds the nearest ancestor (or self if isCurrentOwner) that claims any direction.
63
+ * Used for setting up native gesture relationships.
64
+ *
65
+ * @param selfClaimsAny - Whether the current screen claims any direction
66
+ * @param ancestorContext - The ancestor context chain
67
+ * @returns The nearest context that claims a direction, or null
68
+ */
69
+ function findNearestOwner(selfClaimsAny, ancestorContext) {
70
+ // If self claims any direction, self is the nearest owner
71
+ // (but we return null since this is used for finding ANCESTOR owners)
72
+ if (selfClaimsAny) {
73
+ return null;
74
+ }
75
+
76
+ // Walk ancestors looking for one that claims any direction
77
+ let ancestor = ancestorContext;
78
+ while (ancestor) {
79
+ const claims = ancestor.claimedDirections;
80
+ if (claims?.vertical || claims?.["vertical-inverted"] || claims?.horizontal || claims?.["horizontal-inverted"]) {
81
+ return ancestor;
82
+ }
83
+ ancestor = ancestor.ancestorContext;
84
+ }
85
+ return null;
86
+ }
87
+ //# sourceMappingURL=resolve-ownership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ownership","require","resolveOwnership","selfClaims","ancestorContext","result","NO_OWNERSHIP","direction","DIRECTIONS","resolveDirectionOwnership","ancestor","claimedDirections","findNearestOwner","selfClaimsAny","claims","vertical","horizontal"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/resolve-ownership.ts"],"mappings":";;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAOA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAC/BC,UAA6B,EAC7BC,eAA6C,EACxB;EACrB,MAAMC,MAA0B,GAAG;IAAE,GAAGC;EAAa,CAAC;EAEtD,KAAK,MAAMC,SAAS,IAAIC,qBAAU,EAAE;IACnCH,MAAM,CAACE,SAAS,CAAC,GAAGE,yBAAyB,CAC5CF,SAAS,EACTJ,UAAU,EACVC,eACD,CAAC;EACF;EAEA,OAAOC,MAAM;AACd;;AAEA;AACA;AACA;AACA,SAASI,yBAAyBA,CACjCF,SAAoB,EACpBJ,UAA6B,EAC7BC,eAA6C,EAC3B;EAClB;EACA,IAAID,UAAU,CAACI,SAAS,CAAC,EAAE;IAC1B,OAAO,MAAM;EACd;;EAEA;EACA,IAAIG,QAAQ,GAAGN,eAAe;EAC9B,OAAOM,QAAQ,EAAE;IAChB,IAAIA,QAAQ,CAACC,iBAAiB,GAAGJ,SAAS,CAAC,EAAE;MAC5C,OAAO,UAAU;IAClB;IACAG,QAAQ,GAAGA,QAAQ,CAACN,eAAe;EACpC;;EAEA;EACA,OAAO,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,gBAAgBA,CAC/BC,aAAsB,EACtBT,eAA6C,EACd;EAC/B;EACA;EACA,IAAIS,aAAa,EAAE;IAClB,OAAO,IAAI;EACZ;;EAEA;EACA,IAAIH,QAAQ,GAAGN,eAAe;EAC9B,OAAOM,QAAQ,EAAE;IAChB,MAAMI,MAAM,GAAGJ,QAAQ,CAACC,iBAAiB;IACzC,IACCG,MAAM,EAAEC,QAAQ,IAChBD,MAAM,GAAG,mBAAmB,CAAC,IAC7BA,MAAM,EAAEE,UAAU,IAClBF,MAAM,GAAG,qBAAqB,CAAC,EAC9B;MACD,OAAOJ,QAAQ;IAChB;IACAA,QAAQ,GAAGA,QAAQ,CAACN,eAAe;EACpC;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.velocity = void 0;
7
7
  var _reactNativeReanimated = require("react-native-reanimated");
8
+ var _constants = require("../../constants");
8
9
  const MAX_VELOCITY_MAGNITUDE = 3.2;
9
- const NEAR_ZERO_THRESHOLD = 0.01;
10
10
 
11
11
  /**
12
12
  * Converts velocity from pixels/second to normalized units/second (0-1 range)
@@ -35,7 +35,7 @@ const normalizeTranslation = (translation, dimension) => {
35
35
  const calculateRestoreVelocity = (currentValueNormalized, baseVelocityNormalized) => {
36
36
  "worklet";
37
37
 
38
- if (Math.abs(currentValueNormalized) < NEAR_ZERO_THRESHOLD) return 0;
38
+ if (Math.abs(currentValueNormalized) < _constants.ANIMATION_SNAP_THRESHOLD) return 0;
39
39
  const directionTowardZero = Math.sign(currentValueNormalized) || 1;
40
40
  const clampedVelocity = Math.min(Math.abs(baseVelocityNormalized), 1);
41
41
  return -directionTowardZero * clampedVelocity;
@@ -84,11 +84,22 @@ const shouldPassDismissalThreshold = (translationPixels, velocityPixelsPerSecond
84
84
  "worklet";
85
85
 
86
86
  const normalizedTranslation = translationPixels / Math.max(1, screenSize);
87
+
88
+ // If translation is essentially zero, velocity alone shouldn't trigger dismissal.
89
+ // User must have meaningfully moved in the dismiss direction.
90
+ if (Math.abs(normalizedTranslation) < _constants.EPSILON) {
91
+ return false;
92
+ }
87
93
  const normalizedVelocity = normalize(velocityPixelsPerSecond, screenSize);
88
94
  const projectedNormalizedPosition = normalizedTranslation + normalizedVelocity * velocityWeight;
89
- const exceedsThreshold = Math.abs(projectedNormalizedPosition) > 0.5;
90
- const hasMovement = translationPixels !== 0 || velocityPixelsPerSecond !== 0;
91
- return exceedsThreshold && hasMovement;
95
+
96
+ // The dismiss direction is determined by the sign of the translation.
97
+ // Multiplying by this sign normalizes the projection so "toward dismiss" is always positive.
98
+ // This prevents dismissal when the user drags back (opposing velocity flips projection negative).
99
+ const dismissSign = Math.sign(translationPixels);
100
+ const projectedInDismissDirection = projectedNormalizedPosition * dismissSign;
101
+ const exceedsThreshold = projectedInDismissDirection > 0.5;
102
+ return exceedsThreshold;
92
103
  };
93
104
  const velocity = exports.velocity = {
94
105
  normalize,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeReanimated","require","MAX_VELOCITY_MAGNITUDE","NEAR_ZERO_THRESHOLD","normalize","velocityPixelsPerSecond","screenSize","clamp","Math","max","normalizeTranslation","translation","dimension","calculateRestoreVelocity","currentValueNormalized","baseVelocityNormalized","abs","directionTowardZero","sign","clampedVelocity","min","calculateProgressVelocity","animations","shouldDismiss","event","dimensions","directions","currentProgress","progress","value","targetProgress","progressDelta","progressDirection","normalizedVelocityX","velocityX","width","normalizedVelocityY","velocityY","height","normalizedTranslationX","translationX","normalizedTranslationY","translationY","supportsHorizontalGestures","horizontal","horizontalInverted","supportsVerticalGestures","vertical","verticalInverted","progressVelocityMagnitude","shouldPassDismissalThreshold","translationPixels","velocityWeight","normalizedTranslation","normalizedVelocity","projectedNormalizedPosition","exceedsThreshold","hasMovement","velocity","exports"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/velocity.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeReanimated","require","_constants","MAX_VELOCITY_MAGNITUDE","normalize","velocityPixelsPerSecond","screenSize","clamp","Math","max","normalizeTranslation","translation","dimension","calculateRestoreVelocity","currentValueNormalized","baseVelocityNormalized","abs","ANIMATION_SNAP_THRESHOLD","directionTowardZero","sign","clampedVelocity","min","calculateProgressVelocity","animations","shouldDismiss","event","dimensions","directions","currentProgress","progress","value","targetProgress","progressDelta","progressDirection","normalizedVelocityX","velocityX","width","normalizedVelocityY","velocityY","height","normalizedTranslationX","translationX","normalizedTranslationY","translationY","supportsHorizontalGestures","horizontal","horizontalInverted","supportsVerticalGestures","vertical","verticalInverted","progressVelocityMagnitude","shouldPassDismissalThreshold","translationPixels","velocityWeight","normalizedTranslation","EPSILON","normalizedVelocity","projectedNormalizedPosition","dismissSign","projectedInDismissDirection","exceedsThreshold","velocity","exports"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/velocity.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ /** biome-ignore-all lint/style/noNonNullAssertion: <Options always exist> */
3
4
  import { runOnUI } from "react-native-reanimated";
4
5
  import { DefaultSnapSpec } from "../configs/specs";
5
6
  import { AnimationStore } from "../stores/animation.store";
@@ -1 +1 @@
1
- {"version":3,"names":["runOnUI","DefaultSnapSpec","AnimationStore","HistoryStore","animateToProgress","logger","snapTo","index","allHistory","toArray","screenWithSnapPoints","filter","entry","sp","descriptor","options","snapPoints","length","pop","warn","sorted","sort","a","b","targetProgress","animations","getAll","route","key","target","spec","open","transitionSpec","expand","close","collapse"],"sourceRoot":"../../../../src","sources":["shared/animation/snap-to.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,yBAAyB;AACjD,SAASC,eAAe,QAAQ,kBAAkB;AAClD,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,MAAM,QAAQ,iBAAiB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,KAAa,EAAQ;EAC3C;EACA;EACA;EACA,MAAMC,UAAU,GAAGL,YAAY,CAACM,OAAO,CAAC,CAAC;EACzC,MAAMC,oBAAoB,GAAGF,UAAU,CACrCG,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;IAC1BL,MAAM,CAACc,IAAI,CAAC,+CAA+C,CAAC;IAC5D;EACD;EAEA,MAAM;IAAEL;EAAW,CAAC,GAAGJ,oBAAoB;EAC3C,MAAMM,UAAU,GAAGF,UAAU,CAACC,OAAO,CAAEC,UAAW;EAElD,MAAMI,MAAM,GAAG,CAAC,GAAGJ,UAAU,CAAC,CAACK,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EAEpD,IAAIhB,KAAK,GAAG,CAAC,IAAIA,KAAK,IAAIa,MAAM,CAACH,MAAM,EAAE;IACxCZ,MAAM,CAACc,IAAI,CACV,iBAAiBZ,KAAK,qBAAqBa,MAAM,CAACH,MAAM,GAAG,CAAC,GAC7D,CAAC;IACD;EACD;EAEA,MAAMO,cAAc,GAAGJ,MAAM,CAACb,KAAK,CAAC;EACpC,MAAMkB,UAAU,GAAGvB,cAAc,CAACwB,MAAM,CAACZ,UAAU,CAACa,KAAK,CAACC,GAAG,CAAC;EAE9D5B,OAAO,CAAC,MAAM;IACb,SAAS;;IACTI,iBAAiB,CAAC;MACjByB,MAAM,EAAEL,cAAc;MACtBC,UAAU;MACVK,IAAI,EAAE;QACLC,IAAI,EAAEjB,UAAU,CAACC,OAAO,CAACiB,cAAc,EAAEC,MAAM,IAAIhC,eAAe;QAClEiC,KAAK,EAAEpB,UAAU,CAACC,OAAO,CAACiB,cAAc,EAAEG,QAAQ,IAAIlC;MACvD;IACD,CAAC,CAAC;EACH,CAAC,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"names":["runOnUI","DefaultSnapSpec","AnimationStore","HistoryStore","animateToProgress","logger","snapTo","index","allHistory","toArray","screenWithSnapPoints","filter","entry","sp","descriptor","options","snapPoints","length","pop","warn","sorted","sort","a","b","targetProgress","animations","getAll","route","key","target","spec","open","transitionSpec","expand","close","collapse"],"sourceRoot":"../../../../src","sources":["shared/animation/snap-to.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,QAAQ,yBAAyB;AACjD,SAASC,eAAe,QAAQ,kBAAkB;AAClD,SAASC,cAAc,QAAQ,2BAA2B;AAC1D,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,MAAM,QAAQ,iBAAiB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,KAAa,EAAQ;EAC3C;EACA;EACA;EACA,MAAMC,UAAU,GAAGL,YAAY,CAACM,OAAO,CAAC,CAAC;EACzC,MAAMC,oBAAoB,GAAGF,UAAU,CACrCG,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;IAC1BL,MAAM,CAACc,IAAI,CAAC,+CAA+C,CAAC;IAC5D;EACD;EAEA,MAAM;IAAEL;EAAW,CAAC,GAAGJ,oBAAoB;EAC3C,MAAMM,UAAU,GAAGF,UAAU,CAACC,OAAO,CAAEC,UAAW;EAElD,MAAMI,MAAM,GAAG,CAAC,GAAGJ,UAAU,CAAC,CAACK,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;EAEpD,IAAIhB,KAAK,GAAG,CAAC,IAAIA,KAAK,IAAIa,MAAM,CAACH,MAAM,EAAE;IACxCZ,MAAM,CAACc,IAAI,CACV,iBAAiBZ,KAAK,qBAAqBa,MAAM,CAACH,MAAM,GAAG,CAAC,GAC7D,CAAC;IACD;EACD;EAEA,MAAMO,cAAc,GAAGJ,MAAM,CAACb,KAAK,CAAC;EACpC,MAAMkB,UAAU,GAAGvB,cAAc,CAACwB,MAAM,CAACZ,UAAU,CAACa,KAAK,CAACC,GAAG,CAAC;EAE9D5B,OAAO,CAAC,MAAM;IACb,SAAS;;IACTI,iBAAiB,CAAC;MACjByB,MAAM,EAAEL,cAAc;MACtBC,UAAU;MACVK,IAAI,EAAE;QACLC,IAAI,EAAEjB,UAAU,CAACC,OAAO,CAACiB,cAAc,EAAEC,MAAM,IAAIhC,eAAe;QAClEiC,KAAK,EAAEpB,UAAU,CAACC,OAAO,CAACiB,cAAc,EAAEG,QAAQ,IAAIlC;MACvD;IACD,CAAC,CAAC;EACH,CAAC,CAAC,CAAC,CAAC;AACL","ignoreList":[]}
@@ -7,7 +7,6 @@ import { GestureDetector } from "react-native-gesture-handler";
7
7
  import Animated, { runOnUI, useAnimatedRef } from "react-native-reanimated";
8
8
  import { useAssociatedStyles } from "../hooks/animation/use-associated-style";
9
9
  import { useScrollRegistry } from "../hooks/gestures/use-scroll-registry";
10
- import { useGestureContext } from "../providers/gestures.provider";
11
10
  import { RegisterBoundsProvider } from "../providers/register-bounds.provider";
12
11
  import { jsx as _jsx } from "react/jsx-runtime";
13
12
  export function createTransitionAwareComponent(Wrapped, options = {}) {
@@ -16,34 +15,37 @@ export function createTransitionAwareComponent(Wrapped, options = {}) {
16
15
  } = options;
17
16
  const AnimatedComponent = Animated.createAnimatedComponent(Wrapped);
18
17
  const ScrollableInner = /*#__PURE__*/forwardRef((props, ref) => {
19
- const {
20
- nativeGesture
21
- } = useGestureContext();
18
+ // Determine scroll direction from the horizontal prop (standard ScrollView API)
19
+ const scrollDirection = props.horizontal ? "horizontal" : "vertical";
20
+
21
+ // Get scroll handlers and the gesture owner's nativeGesture for this axis
22
22
  const {
23
23
  scrollHandler,
24
24
  onContentSizeChange,
25
25
  onLayout,
26
- onTouchStart,
27
- onTouchEnd
26
+ nativeGesture
28
27
  } = useScrollRegistry({
29
28
  onScroll: props.onScroll,
30
29
  onContentSizeChange: props.onContentSizeChange,
31
30
  onLayout: props.onLayout,
32
- onTouchStart: props.onTouchStart,
33
- onTouchEnd: props.onTouchEnd
31
+ direction: scrollDirection
34
32
  });
33
+ const scrollableComponent = /*#__PURE__*/_jsx(AnimatedComponent, {
34
+ ...props,
35
+ ref: ref,
36
+ onScroll: scrollHandler,
37
+ onContentSizeChange: onContentSizeChange,
38
+ onLayout: onLayout,
39
+ scrollEventThrottle: props.scrollEventThrottle || 16
40
+ });
41
+
42
+ // If no gesture owner found for this axis, render without GestureDetector
43
+ if (!nativeGesture) {
44
+ return scrollableComponent;
45
+ }
35
46
  return /*#__PURE__*/_jsx(GestureDetector, {
36
47
  gesture: nativeGesture,
37
- children: /*#__PURE__*/_jsx(AnimatedComponent, {
38
- ...props,
39
- ref: ref,
40
- onScroll: scrollHandler,
41
- onContentSizeChange: onContentSizeChange,
42
- onLayout: onLayout,
43
- onTouchStart: onTouchStart,
44
- onTouchEnd: onTouchEnd,
45
- scrollEventThrottle: props.scrollEventThrottle || 16
46
- })
48
+ children: scrollableComponent
47
49
  });
48
50
  });
49
51
  const Inner = /*#__PURE__*/forwardRef((props, _) => {
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","memo","GestureDetector","Animated","runOnUI","useAnimatedRef","useAssociatedStyles","useScrollRegistry","useGestureContext","RegisterBoundsProvider","jsx","_jsx","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","createAnimatedComponent","ScrollableInner","props","ref","nativeGesture","scrollHandler","onContentSizeChange","onLayout","onTouchStart","onTouchEnd","onScroll","gesture","children","scrollEventThrottle","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","associatedStyles","id","captureActiveOnPress","handleInitialLayout","collapsable"],"sourceRoot":"../../../../src","sources":["shared/components/create-transition-aware-component.tsx"],"mappings":";;AAAA;;AAEA,SAA6BA,UAAU,EAAEC,IAAI,QAAQ,OAAO;AAE5D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,QAAQ,IAAIC,OAAO,EAAEC,cAAc,QAAQ,yBAAyB;AAC3E,SAASC,mBAAmB,QAAQ,yCAAyC;AAC7E,SAASC,iBAAiB,QAAQ,uCAAuC;AACzE,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,sBAAsB,QAAQ,uCAAuC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO/E,OAAO,SAASC,8BAA8BA,CAC7CC,OAAyB,EACzBC,OAA8C,GAAG,CAAC,CAAC,EAClD;EACD,MAAM;IAAEC,YAAY,GAAG;EAAM,CAAC,GAAGD,OAAO;EAExC,MAAME,iBAAiB,GAAGb,QAAQ,CAACc,uBAAuB,CAACJ,OAAO,CAAC;EAEnE,MAAMK,eAAe,gBAAGlB,UAAU,CAGhC,CAACmB,KAAU,EAAEC,GAAG,KAAK;IACtB,MAAM;MAAEC;IAAc,CAAC,GAAGb,iBAAiB,CAAC,CAAE;IAC9C,MAAM;MACLc,aAAa;MACbC,mBAAmB;MACnBC,QAAQ;MACRC,YAAY;MACZC;IACD,CAAC,GAAGnB,iBAAiB,CAAC;MACrBoB,QAAQ,EAAER,KAAK,CAACQ,QAAQ;MACxBJ,mBAAmB,EAAEJ,KAAK,CAACI,mBAAmB;MAC9CC,QAAQ,EAAEL,KAAK,CAACK,QAAQ;MACxBC,YAAY,EAAEN,KAAK,CAACM,YAAY;MAChCC,UAAU,EAAEP,KAAK,CAACO;IACnB,CAAC,CAAC;IAEF,oBACCf,IAAA,CAACT,eAAe;MAAC0B,OAAO,EAAEP,aAAc;MAAAQ,QAAA,eACvClB,IAAA,CAACK,iBAAiB;QAAA,GACZG,KAAK;QACVC,GAAG,EAAEA,GAAI;QACTO,QAAQ,EAAEL,aAAc;QACxBC,mBAAmB,EAAEA,mBAAoB;QACzCC,QAAQ,EAAEA,QAAS;QACnBC,YAAY,EAAEA,YAAa;QAC3BC,UAAU,EAAEA,UAAW;QACvBI,mBAAmB,EAAEX,KAAK,CAACW,mBAAmB,IAAI;MAAG,CACrD;IAAC,CACc,CAAC;EAEpB,CAAC,CAAC;EAEF,MAAMC,KAAK,gBAAG/B,UAAU,CAGtB,CAACmB,KAAK,EAAEa,CAAC,KAAK;IACf,MAAM;MAAEH,QAAQ;MAAEI,KAAK;MAAEC,cAAc;MAAEC,OAAO;MAAEC,OAAO;MAAE,GAAGC;IAAK,CAAC,GACnElB,KAAY;IAEb,MAAMmB,WAAW,GAAGjC,cAAc,CAAO,CAAC;IAE1C,MAAM;MAAEkC;IAAiB,CAAC,GAAGjC,mBAAmB,CAAC;MAChDkC,EAAE,EAAEN,cAAc,IAAIC,OAAO;MAC7BF;IACD,CAAC,CAAC;IAEF,oBACCtB,IAAA,CAACF,sBAAsB;MACtB6B,WAAW,EAAEA,WAAY;MACzBL,KAAK,EAAEA,KAAM;MACbG,OAAO,EAAEA,OAAQ;MACjBF,cAAc,EAAEA,cAAe;MAAAL,QAAA,EAE9BA,CAAC;QAAEY,oBAAoB;QAAEC;MAAoB,CAAC,kBAC9C/B,IAAA,CAACK,iBAAiB;QAAA,GACZqB,IAAI;QACTjB,GAAG,EAAEkB,WAAY;QACjBL,KAAK,EAAE,CAACA,KAAK,EAAEM,gBAAgB,CAAE;QACjCH,OAAO,EAAEK,oBAAqB;QAC9BjB,QAAQ,EAAEpB,OAAO,CAACsC,mBAAmB,CAAE;QACvCC,WAAW,EAAE,CAACT,cAAe;QAAAL,QAAA,EAE5BA;MAAQ,CACS;IACnB,CACsB,CAAC;EAE3B,CAAC,CAAC;EAEF,IAAId,YAAY,EAAE;IACjB,oBAAOd,IAAI,CAACiB,eAAe,CAAC;EAM7B;EAEA,oBAAOjB,IAAI,CAAC8B,KAAK,CAAC;AAMnB","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","memo","GestureDetector","Animated","runOnUI","useAnimatedRef","useAssociatedStyles","useScrollRegistry","RegisterBoundsProvider","jsx","_jsx","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","createAnimatedComponent","ScrollableInner","props","ref","scrollDirection","horizontal","scrollHandler","onContentSizeChange","onLayout","nativeGesture","onScroll","direction","scrollableComponent","scrollEventThrottle","gesture","children","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","associatedStyles","id","captureActiveOnPress","handleInitialLayout","collapsable"],"sourceRoot":"../../../../src","sources":["shared/components/create-transition-aware-component.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,15 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ /** biome-ignore-all lint/style/noNonNullAssertion: <Screen gesture is under the gesture context, so this will always exist.> */
3
4
  import { StackActions } from "@react-navigation/native";
4
5
  import { memo, useCallback } from "react";
5
6
  import { Pressable, StyleSheet, View } from "react-native";
6
7
  import { GestureDetector } from "react-native-gesture-handler";
7
- import Animated, { useAnimatedStyle } from "react-native-reanimated";
8
+ import Animated, { runOnUI, useAnimatedStyle } from "react-native-reanimated";
9
+ import { DefaultSnapSpec } from "../configs/specs";
8
10
  import { NO_STYLES } from "../constants";
9
11
  import { useBackdropPointerEvents } from "../hooks/use-backdrop-pointer-events";
10
12
  import { useGestureContext } from "../providers/gestures.provider";
11
13
  import { useKeys } from "../providers/screen/keys.provider";
12
14
  import { useScreenStyles } from "../providers/screen/styles.provider";
15
+ import { AnimationStore } from "../stores/animation.store";
16
+ import { GestureStore } from "../stores/gesture.store";
17
+ import { animateToProgress } from "../utils/animation/animate-to-progress";
18
+ import { findCollapseTarget } from "../utils/gesture/find-collapse-target";
13
19
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
20
  export const ScreenContainer = /*#__PURE__*/memo(({
15
21
  children
@@ -25,10 +31,56 @@ export const ScreenContainer = /*#__PURE__*/memo(({
25
31
  backdropBehavior
26
32
  } = useBackdropPointerEvents();
27
33
  const gestureContext = useGestureContext();
28
- const isDismissable = backdropBehavior === "dismiss";
34
+ const isBackdropActive = backdropBehavior === "dismiss" || backdropBehavior === "collapse";
35
+ const handleDismiss = useCallback(() => {
36
+ const state = current.navigation.getState();
37
+ current.navigation.dispatch({
38
+ ...StackActions.pop(),
39
+ source: current.route.key,
40
+ target: state.key
41
+ });
42
+ }, [current]);
29
43
  const handleBackdropPress = useCallback(() => {
30
- current.navigation.dispatch(StackActions.pop());
31
- }, [current.navigation]);
44
+ if (backdropBehavior === "dismiss") {
45
+ handleDismiss();
46
+ return;
47
+ }
48
+ if (backdropBehavior === "collapse") {
49
+ const snapPoints = current.options.snapPoints;
50
+ const canDismiss = current.options.gestureEnabled !== false;
51
+
52
+ // No snap points → fallback to dismiss
53
+ if (!snapPoints || snapPoints.length === 0) {
54
+ handleDismiss();
55
+ return;
56
+ }
57
+ const animations = AnimationStore.getAll(current.route.key);
58
+ const gestures = GestureStore.getRouteGestures(current.route.key);
59
+ const transitionSpec = current.options.transitionSpec;
60
+ runOnUI(() => {
61
+ "worklet";
62
+
63
+ const {
64
+ target,
65
+ shouldDismiss
66
+ } = findCollapseTarget(animations.progress.value, snapPoints, canDismiss);
67
+
68
+ // If already dismissing, skip
69
+ if (gestures.isDismissing.value) return;
70
+ gestures.isDismissing.value = shouldDismiss ? 1 : 0;
71
+ const spec = shouldDismiss ? transitionSpec : {
72
+ open: transitionSpec?.expand ?? DefaultSnapSpec,
73
+ close: transitionSpec?.collapse ?? DefaultSnapSpec
74
+ };
75
+ animateToProgress({
76
+ target,
77
+ spec,
78
+ animations,
79
+ onAnimationFinish: shouldDismiss ? handleDismiss : undefined
80
+ });
81
+ })();
82
+ }
83
+ }, [backdropBehavior, current, handleDismiss]);
32
84
  const animatedContentStyle = useAnimatedStyle(() => {
33
85
  "worklet";
34
86
 
@@ -44,8 +96,8 @@ export const ScreenContainer = /*#__PURE__*/memo(({
44
96
  pointerEvents: pointerEvents,
45
97
  children: [/*#__PURE__*/_jsx(Pressable, {
46
98
  style: StyleSheet.absoluteFillObject,
47
- pointerEvents: isDismissable ? "auto" : "none",
48
- onPress: isDismissable ? handleBackdropPress : undefined,
99
+ pointerEvents: isBackdropActive ? "auto" : "none",
100
+ onPress: isBackdropActive ? handleBackdropPress : undefined,
49
101
  children: /*#__PURE__*/_jsx(Animated.View, {
50
102
  style: [StyleSheet.absoluteFillObject, animatedBackdropStyle]
51
103
  })
@@ -53,7 +105,7 @@ export const ScreenContainer = /*#__PURE__*/memo(({
53
105
  gesture: gestureContext.panGesture,
54
106
  children: /*#__PURE__*/_jsx(Animated.View, {
55
107
  style: [styles.content, animatedContentStyle],
56
- pointerEvents: isDismissable ? "box-none" : pointerEvents,
108
+ pointerEvents: isBackdropActive ? "box-none" : pointerEvents,
57
109
  children: children
58
110
  })
59
111
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["StackActions","memo","useCallback","Pressable","StyleSheet","View","GestureDetector","Animated","useAnimatedStyle","NO_STYLES","useBackdropPointerEvents","useGestureContext","useKeys","useScreenStyles","jsx","_jsx","jsxs","_jsxs","ScreenContainer","children","stylesMap","current","pointerEvents","backdropBehavior","gestureContext","isDismissable","handleBackdropPress","navigation","dispatch","pop","animatedContentStyle","value","contentStyle","animatedBackdropStyle","backdropStyle","overlayStyle","style","styles","container","absoluteFillObject","onPress","undefined","gesture","panGesture","content","create","flex"],"sourceRoot":"../../../../src","sources":["shared/components/screen-container.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,0BAA0B;AACvD,SAASC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC1D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AACpE,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,wBAAwB,QAAQ,sCAAsC;AAC/E,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,OAAO,QAAQ,mCAAmC;AAC3D,SAASC,eAAe,QAAQ,qCAAqC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMtE,OAAO,MAAMC,eAAe,gBAAGjB,IAAI,CAAC,CAAC;EAAEkB;AAAgB,CAAC,KAAK;EAC5D,MAAM;IAAEC;EAAU,CAAC,GAAGP,eAAe,CAAC,CAAC;EACvC,MAAM;IAAEQ;EAAQ,CAAC,GAAGT,OAAO,CAAC,CAAC;EAC7B,MAAM;IAAEU,aAAa;IAAEC;EAAiB,CAAC,GAAGb,wBAAwB,CAAC,CAAC;EACtE,MAAMc,cAAc,GAAGb,iBAAiB,CAAC,CAAC;EAE1C,MAAMc,aAAa,GAAGF,gBAAgB,KAAK,SAAS;EAEpD,MAAMG,mBAAmB,GAAGxB,WAAW,CAAC,MAAM;IAC7CmB,OAAO,CAACM,UAAU,CAACC,QAAQ,CAAC5B,YAAY,CAAC6B,GAAG,CAAC,CAAC,CAAC;EAChD,CAAC,EAAE,CAACR,OAAO,CAACM,UAAU,CAAC,CAAC;EAExB,MAAMG,oBAAoB,GAAGtB,gBAAgB,CAAC,MAAM;IACnD,SAAS;;IACT,OAAOY,SAAS,CAACW,KAAK,CAACC,YAAY,IAAIvB,SAAS;EACjD,CAAC,CAAC;EAEF,MAAMwB,qBAAqB,GAAGzB,gBAAgB,CAAC,MAAM;IACpD,SAAS;;IACT,OACCY,SAAS,CAACW,KAAK,CAACG,aAAa,IAAId,SAAS,CAACW,KAAK,CAACI,YAAY,IAAI1B,SAAS;EAE5E,CAAC,CAAC;EAEF,oBACCQ,KAAA,CAACZ,IAAI;IAAC+B,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAChB,aAAa,EAAEA,aAAc;IAAAH,QAAA,gBAC3DJ,IAAA,CAACZ,SAAS;MACTiC,KAAK,EAAEhC,UAAU,CAACmC,kBAAmB;MACrCjB,aAAa,EAAEG,aAAa,GAAG,MAAM,GAAG,MAAO;MAC/Ce,OAAO,EAAEf,aAAa,GAAGC,mBAAmB,GAAGe,SAAU;MAAAtB,QAAA,eAEzDJ,IAAA,CAACR,QAAQ,CAACF,IAAI;QACb+B,KAAK,EAAE,CAAChC,UAAU,CAACmC,kBAAkB,EAAEN,qBAAqB;MAAE,CAC9D;IAAC,CACQ,CAAC,eACZlB,IAAA,CAACT,eAAe;MAACoC,OAAO,EAAElB,cAAc,CAAEmB,UAAW;MAAAxB,QAAA,eACpDJ,IAAA,CAACR,QAAQ,CAACF,IAAI;QACb+B,KAAK,EAAE,CAACC,MAAM,CAACO,OAAO,EAAEd,oBAAoB,CAAE;QAC9CR,aAAa,EAAEG,aAAa,GAAG,UAAU,GAAGH,aAAc;QAAAH,QAAA,EAEzDA;MAAQ,CACK;IAAC,CACA,CAAC;EAAA,CACb,CAAC;AAET,CAAC,CAAC;AAEF,MAAMkB,MAAM,GAAGjC,UAAU,CAACyC,MAAM,CAAC;EAChCP,SAAS,EAAE;IACVQ,IAAI,EAAE;EACP,CAAC;EACDF,OAAO,EAAE;IACRE,IAAI,EAAE;EACP;AACD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StackActions","memo","useCallback","Pressable","StyleSheet","View","GestureDetector","Animated","runOnUI","useAnimatedStyle","DefaultSnapSpec","NO_STYLES","useBackdropPointerEvents","useGestureContext","useKeys","useScreenStyles","AnimationStore","GestureStore","animateToProgress","findCollapseTarget","jsx","_jsx","jsxs","_jsxs","ScreenContainer","children","stylesMap","current","pointerEvents","backdropBehavior","gestureContext","isBackdropActive","handleDismiss","state","navigation","getState","dispatch","pop","source","route","key","target","handleBackdropPress","snapPoints","options","canDismiss","gestureEnabled","length","animations","getAll","gestures","getRouteGestures","transitionSpec","shouldDismiss","progress","value","isDismissing","spec","open","expand","close","collapse","onAnimationFinish","undefined","animatedContentStyle","contentStyle","animatedBackdropStyle","backdropStyle","overlayStyle","style","styles","container","absoluteFillObject","onPress","gesture","panGesture","content","create","flex"],"sourceRoot":"../../../../src","sources":["shared/components/screen-container.tsx"],"mappings":"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","ignoreList":[]}
@@ -84,6 +84,7 @@ export const FULLSCREEN_DIMENSIONS = dimensions => {
84
84
  * Default gesture config
85
85
  */
86
86
  export const GESTURE_VELOCITY_IMPACT = 0.3;
87
+ export const SNAP_VELOCITY_IMPACT = 0.1;
87
88
  export const DEFAULT_GESTURE_DIRECTION = "horizontal";
88
89
  export const DEFAULT_GESTURE_DRIVES_PROGRESS = true;
89
90
  export const DEFAULT_GESTURE_ACTIVATION_AREA = "screen";
@@ -95,4 +96,10 @@ export const FALSE = 0;
95
96
  * Small value for floating-point comparisons to handle animation/interpolation imprecision
96
97
  */
97
98
  export const EPSILON = 1e-5;
99
+
100
+ /**
101
+ * Threshold for snapping animations to target when "close enough" (1% of range).
102
+ * Prevents micro-jitter/oscillation near animation endpoints.
103
+ */
104
+ export const ANIMATION_SNAP_THRESHOLD = 0.01;
98
105
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","MASK_STYLE_ID","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","OS","TRUE","FALSE","EPSILON"],"sourceRoot":"../../../src","sources":["shared/constants.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AAOvC;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG,cAAc;AAC3C,OAAO,MAAMC,kBAAkB,GAAG,iBAAiB;;AAEnD;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAE1C;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG;EAC9BC,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJC,WAAW,EAAE,CAAC;EACdC,WAAW,EAAE,CAAC;EACdC,YAAY,EAAE,CAAC;EACfC,UAAU,EAAE,CAAC;EACbC,SAAS,EAAE;AACZ,CAAU;;AAEV;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAC1CC,KAAqB,EACrBC,IAA8B,MACF;EAC5BC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,SAAS,EAAE,CAAC;EACZC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE;IAAE,GAAGf;EAAuB,CAAC;EACtCS,KAAK;EACLC;AACD,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMM,+BAAsD,GAClElB,MAAM,CAACC,MAAM,CAAC;EACbY,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,SAAS,EAAE,CAAC;EACZC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAEf,sBAAsB;EAC/BS,KAAK,EAAE,CAAC;AACT,CAAC,CAAC;;AAEH;AACA;AACA;AACA,OAAO,MAAMQ,yBAAyB,GAAGnB,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,OAAO,MAAMmB,6BAA6B,GAAGpB,MAAM,CAACC,MAAM,CAAC;EAC1DoB,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,CAAC;EACRC,UAAU,EAAE,CAAC;EACbC,UAAU,EAAE,CAAC;EACbC,KAAK,EAAE,CAAC;EACRC,MAAM,EAAE;AACT,CAAC,CAAC;AACF,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAU;AAC1C,OAAO,MAAMC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAU;AAEzC,OAAO,MAAMC,qBAAqB,GACjCC,UAAkB,IACM;EACxB,SAAS;;EACT,OAAO;IACN5B,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJ4B,KAAK,EAAE,CAAC;IACRC,KAAK,EAAE,CAAC;IACRP,KAAK,EAAEK,UAAU,CAACL,KAAK;IACvBC,MAAM,EAAEI,UAAU,CAACJ;EACpB,CAAC;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMO,uBAAuB,GAAG,GAAG;AAC1C,OAAO,MAAMC,yBAAyB,GAAG,YAAY;AACrD,OAAO,MAAMC,+BAA+B,GAAG,IAAI;AACnD,OAAO,MAAMC,+BAA+C,GAAG,QAAQ;AAEvE,OAAO,MAAMC,MAAM,GAAG1C,QAAQ,CAAC2C,EAAE,KAAK,KAAK;AAE3C,OAAO,MAAMC,IAAI,GAAG,CAAC;AACrB,OAAO,MAAMC,KAAK,GAAG,CAAC;;AAEtB;AACA;AACA;AACA,OAAO,MAAMC,OAAO,GAAG,IAAI","ignoreList":[]}
1
+ {"version":3,"names":["Platform","MASK_STYLE_ID","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","OS","TRUE","FALSE","EPSILON","ANIMATION_SNAP_THRESHOLD"],"sourceRoot":"../../../src","sources":["shared/constants.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AAOvC;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG,cAAc;AAC3C,OAAO,MAAMC,kBAAkB,GAAG,iBAAiB;;AAEnD;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAE1C;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG;EAC9BC,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJC,WAAW,EAAE,CAAC;EACdC,WAAW,EAAE,CAAC;EACdC,YAAY,EAAE,CAAC;EACfC,UAAU,EAAE,CAAC;EACbC,SAAS,EAAE;AACZ,CAAU;;AAEV;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAC1CC,KAAqB,EACrBC,IAA8B,MACF;EAC5BC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,SAAS,EAAE,CAAC;EACZC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE;IAAE,GAAGf;EAAuB,CAAC;EACtCS,KAAK;EACLC;AACD,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMM,+BAAsD,GAClElB,MAAM,CAACC,MAAM,CAAC;EACbY,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAE,CAAC;EACVC,SAAS,EAAE,CAAC;EACZC,QAAQ,EAAE,CAAC;EACXC,OAAO,EAAEf,sBAAsB;EAC/BS,KAAK,EAAE,CAAC;AACT,CAAC,CAAC;;AAEH;AACA;AACA;AACA,OAAO,MAAMQ,yBAAyB,GAAGnB,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,OAAO,MAAMmB,6BAA6B,GAAGpB,MAAM,CAACC,MAAM,CAAC;EAC1DoB,MAAM,EAAE,CAAC;EACTC,MAAM,EAAE,CAAC;EACTC,KAAK,EAAE,CAAC;EACRC,UAAU,EAAE,CAAC;EACbC,UAAU,EAAE,CAAC;EACbC,KAAK,EAAE,CAAC;EACRC,MAAM,EAAE;AACT,CAAC,CAAC;AACF,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAU;AAC1C,OAAO,MAAMC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAU;AAEzC,OAAO,MAAMC,qBAAqB,GACjCC,UAAkB,IACM;EACxB,SAAS;;EACT,OAAO;IACN5B,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJ4B,KAAK,EAAE,CAAC;IACRC,KAAK,EAAE,CAAC;IACRP,KAAK,EAAEK,UAAU,CAACL,KAAK;IACvBC,MAAM,EAAEI,UAAU,CAACJ;EACpB,CAAC;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMO,uBAAuB,GAAG,GAAG;AAC1C,OAAO,MAAMC,oBAAoB,GAAG,GAAG;AACvC,OAAO,MAAMC,yBAAyB,GAAG,YAAY;AACrD,OAAO,MAAMC,+BAA+B,GAAG,IAAI;AACnD,OAAO,MAAMC,+BAA+C,GAAG,QAAQ;AAEvE,OAAO,MAAMC,MAAM,GAAG3C,QAAQ,CAAC4C,EAAE,KAAK,KAAK;AAE3C,OAAO,MAAMC,IAAI,GAAG,CAAC;AACrB,OAAO,MAAMC,KAAK,GAAG,CAAC;;AAEtB;AACA;AACA;AACA,OAAO,MAAMC,OAAO,GAAG,IAAI;;AAE3B;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAG,IAAI","ignoreList":[]}
@@ -5,10 +5,43 @@ import { useCallback, useMemo, useRef } from "react";
5
5
  import { Gesture } from "react-native-gesture-handler";
6
6
  import { useKeys } from "../../providers/screen/keys.provider";
7
7
  import { GestureStore } from "../../stores/gesture.store";
8
+ import { claimsAnyDirection } from "../../utils/gesture/compute-claimed-directions";
9
+ import { resolveOwnership } from "../../utils/gesture/resolve-ownership";
8
10
  import { useScreenGestureHandlers } from "./use-screen-gesture-handlers";
11
+ const DIRECTIONS = ["vertical", "vertical-inverted", "horizontal", "horizontal-inverted"];
12
+
13
+ /**
14
+ * Finds ancestor pan gestures that we shadow (claim the same direction).
15
+ * Used to block ancestors when child claims priority.
16
+ */
17
+ function findShadowedAncestorPanGestures(selfClaims, ancestorContext, isIsolated) {
18
+ const shadowedGestures = [];
19
+ let ancestor = ancestorContext;
20
+ while (ancestor) {
21
+ if (ancestor.isIsolated !== isIsolated) break;
22
+ const shadowsAncestor = DIRECTIONS.some(dir => selfClaims[dir] && ancestor?.claimedDirections?.[dir]);
23
+ if (shadowsAncestor && ancestor.panGesture) {
24
+ shadowedGestures.push(ancestor.panGesture);
25
+ }
26
+ ancestor = ancestor.ancestorContext;
27
+ }
28
+ return shadowedGestures;
29
+ }
30
+ /**
31
+ * Builds the Pan gesture for screen dismissal.
32
+ *
33
+ * Handles shadowing: when child claims same direction as ancestor,
34
+ * child's pan blocks ancestor's pan via `blocksExternalGesture()`.
35
+ *
36
+ * ScrollView coordination is handled separately by useScrollRegistry,
37
+ * which creates its own Native gesture per ScrollView.
38
+ */
9
39
  export const useBuildGestures = ({
10
40
  scrollConfig,
11
- ancestorContext
41
+ ancestorContext,
42
+ claimedDirections,
43
+ childDirectionClaims,
44
+ isIsolated
12
45
  }) => {
13
46
  const {
14
47
  current
@@ -17,33 +50,21 @@ export const useBuildGestures = ({
17
50
  const isFirstScreen = useMemo(() => {
18
51
  return navState.routes.findIndex(r => r.key === current.route.key) === 0;
19
52
  }, [navState.routes, current.route.key]);
20
-
21
- // Ref for external gesture coordination (e.g., swipeable lists)
22
53
  const panGestureRef = useRef(undefined);
23
54
  const gestureAnimationValues = GestureStore.getRouteGestures(current.route.key);
24
55
  const {
25
56
  snapPoints
26
57
  } = current.options;
27
-
28
- // Dismiss gesture is controlled by gestureEnabled (disabled for first screen)
29
58
  const canDismiss = Boolean(isFirstScreen ? false : current.options.gestureEnabled);
30
-
31
- // Snap navigation works independently - enabled when snap points exist
32
- // This matches iOS native sheet behavior where gestureEnabled: false
33
- // disables dismiss but you can still drag between detents
34
59
  const hasSnapPoints = Array.isArray(snapPoints) && snapPoints.length > 0;
35
60
  const gestureEnabled = canDismiss || hasSnapPoints;
61
+ const ownershipStatus = useMemo(() => resolveOwnership(claimedDirections, ancestorContext ?? null), [claimedDirections, ancestorContext]);
62
+ const selfClaimsAny = claimsAnyDirection(claimedDirections);
36
63
  const handleDismiss = useCallback(() => {
37
- // If an ancestor navigator is already dismissing, skip this dismiss to
38
- // avoid racing with the ancestor
39
- if (ancestorContext?.gestureAnimationValues.isDismissing?.value) {
40
- return;
41
- }
64
+ if (ancestorContext?.gestureAnimationValues.isDismissing?.value) return;
42
65
  const state = current.navigation.getState();
43
66
  const routeStillPresent = state.routes.some(route => route.key === current.route.key);
44
- if (!routeStillPresent) {
45
- return;
46
- }
67
+ if (!routeStillPresent) return;
47
68
  current.navigation.dispatch({
48
69
  ...StackActions.pop(),
49
70
  source: current.route.key,
@@ -60,38 +81,27 @@ export const useBuildGestures = ({
60
81
  scrollConfig,
61
82
  canDismiss,
62
83
  handleDismiss,
63
- ancestorIsDismissing: ancestorContext?.gestureAnimationValues.isDismissing
84
+ ownershipStatus,
85
+ ancestorIsDismissing: ancestorContext?.gestureAnimationValues.isDismissing,
86
+ claimedDirections,
87
+ ancestorContext,
88
+ childDirectionClaims
64
89
  });
65
90
  return useMemo(() => {
66
91
  const panGesture = Gesture.Pan().withRef(panGestureRef).enabled(gestureEnabled).manualActivation(true).onTouchesDown(onTouchesDown).onTouchesMove(onTouchesMove).onStart(onStart).onUpdate(onUpdate).onEnd(onEnd);
67
92
 
68
- // Native gesture setup depends on whether this screen has gestures
69
- let nativeGesture;
70
- if (gestureEnabled) {
71
- // This screen has gestures - set up normal pan/native relationship
72
- nativeGesture = Gesture.Native().requireExternalGestureToFail(panGesture);
73
- panGesture.blocksExternalGesture(nativeGesture);
74
- } else {
75
- // This screen has no gestures
76
- // Find nearest ancestor with gestureEnabled=true (attached pan)
77
- let activePanAncestor = ancestorContext;
78
- while (activePanAncestor && !activePanAncestor.gestureEnabled) {
79
- activePanAncestor = activePanAncestor.ancestorContext;
80
- }
81
- if (activePanAncestor?.panGesture) {
82
- // Found an ancestor with enabled pan - wait for it
83
- nativeGesture = Gesture.Native().requireExternalGestureToFail(activePanAncestor.panGesture);
84
- } else {
85
- // No ancestor with enabled pan - plain native
86
- nativeGesture = Gesture.Native();
93
+ // Block shadowed ancestor pan gestures when we claim same directions
94
+ if (selfClaimsAny) {
95
+ const shadowedAncestorGestures = findShadowedAncestorPanGestures(claimedDirections, ancestorContext, isIsolated);
96
+ for (const ancestorPan of shadowedAncestorGestures) {
97
+ panGesture.blocksExternalGesture(ancestorPan);
87
98
  }
88
99
  }
89
100
  return {
90
101
  panGesture,
91
102
  panGestureRef,
92
- nativeGesture,
93
103
  gestureAnimationValues
94
104
  };
95
- }, [gestureEnabled, onTouchesDown, onTouchesMove, onStart, onUpdate, onEnd, gestureAnimationValues, ancestorContext]);
105
+ }, [gestureEnabled, selfClaimsAny, claimedDirections, onTouchesDown, onTouchesMove, onStart, onUpdate, onEnd, gestureAnimationValues, ancestorContext, isIsolated]);
96
106
  };
97
107
  //# sourceMappingURL=use-build-gestures.js.map