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.
- package/README.md +95 -31
- package/lib/commonjs/shared/animation/snap-to.js +17 -10
- package/lib/commonjs/shared/animation/snap-to.js.map +1 -1
- package/lib/commonjs/shared/components/create-transition-aware-component.js +20 -18
- package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
- package/lib/commonjs/shared/components/screen-container.js +68 -9
- package/lib/commonjs/shared/components/screen-container.js.map +1 -1
- package/lib/commonjs/shared/constants.js +8 -1
- package/lib/commonjs/shared/constants.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +49 -39
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +110 -61
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +67 -70
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/commonjs/shared/providers/gestures.provider.js +113 -25
- package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
- package/lib/commonjs/shared/types/ownership.types.js +71 -0
- package/lib/commonjs/shared/types/ownership.types.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +72 -128
- package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/compute-claimed-directions.js +81 -0
- package/lib/commonjs/shared/utils/gesture/compute-claimed-directions.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/determine-snap-target.js +1 -1
- package/lib/commonjs/shared/utils/gesture/determine-snap-target.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/find-collapse-target.js +48 -0
- package/lib/commonjs/shared/utils/gesture/find-collapse-target.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/resolve-ownership.js +87 -0
- package/lib/commonjs/shared/utils/gesture/resolve-ownership.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/velocity.js +16 -5
- package/lib/commonjs/shared/utils/gesture/velocity.js.map +1 -1
- package/lib/module/shared/animation/snap-to.js +16 -10
- package/lib/module/shared/animation/snap-to.js.map +1 -1
- package/lib/module/shared/components/create-transition-aware-component.js +20 -18
- package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
- package/lib/module/shared/components/screen-container.js +68 -10
- package/lib/module/shared/components/screen-container.js.map +1 -1
- package/lib/module/shared/constants.js +7 -0
- package/lib/module/shared/constants.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js +49 -39
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +112 -63
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js +68 -70
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/module/shared/providers/gestures.provider.js +113 -25
- package/lib/module/shared/providers/gestures.provider.js.map +1 -1
- package/lib/module/shared/types/ownership.types.js +67 -0
- package/lib/module/shared/types/ownership.types.js.map +1 -0
- package/lib/module/shared/utils/gesture/check-gesture-activation.js +70 -126
- package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
- package/lib/module/shared/utils/gesture/compute-claimed-directions.js +77 -0
- package/lib/module/shared/utils/gesture/compute-claimed-directions.js.map +1 -0
- package/lib/module/shared/utils/gesture/determine-snap-target.js +1 -1
- package/lib/module/shared/utils/gesture/determine-snap-target.js.map +1 -1
- package/lib/module/shared/utils/gesture/find-collapse-target.js +44 -0
- package/lib/module/shared/utils/gesture/find-collapse-target.js.map +1 -0
- package/lib/module/shared/utils/gesture/resolve-ownership.js +83 -0
- package/lib/module/shared/utils/gesture/resolve-ownership.js.map +1 -0
- package/lib/module/shared/utils/gesture/velocity.js +16 -5
- package/lib/module/shared/utils/gesture/velocity.js.map +1 -1
- package/lib/typescript/shared/animation/snap-to.d.ts.map +1 -1
- package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container.d.ts.map +1 -1
- package/lib/typescript/shared/constants.d.ts +6 -0
- package/lib/typescript/shared/constants.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +15 -3
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts +52 -2
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts +11 -6
- package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts +1 -1
- package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts.map +1 -1
- package/lib/typescript/shared/providers/gestures.provider.d.ts +28 -3
- package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
- package/lib/typescript/shared/types/ownership.types.d.ts +52 -0
- package/lib/typescript/shared/types/ownership.types.d.ts.map +1 -0
- package/lib/typescript/shared/types/screen.types.d.ts +22 -1
- package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +23 -19
- package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/compute-claimed-directions.d.ts +23 -0
- package/lib/typescript/shared/utils/gesture/compute-claimed-directions.d.ts.map +1 -0
- package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts +5 -1
- package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts +17 -0
- package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts.map +1 -0
- package/lib/typescript/shared/utils/gesture/resolve-ownership.d.ts +36 -0
- package/lib/typescript/shared/utils/gesture/resolve-ownership.d.ts.map +1 -0
- package/lib/typescript/shared/utils/gesture/velocity.d.ts.map +1 -1
- package/package.json +121 -120
- package/src/shared/animation/snap-to.ts +17 -11
- package/src/shared/components/create-transition-aware-component.tsx +28 -25
- package/src/shared/components/screen-container.tsx +79 -12
- package/src/shared/constants.ts +7 -0
- package/src/shared/hooks/gestures/use-build-gestures.tsx +80 -44
- package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +147 -71
- package/src/shared/hooks/gestures/use-scroll-registry.tsx +94 -86
- package/src/shared/hooks/use-backdrop-pointer-events.ts +1 -1
- package/src/shared/providers/gestures.provider.tsx +168 -25
- package/src/shared/types/ownership.types.ts +77 -0
- package/src/shared/types/screen.types.ts +24 -1
- package/src/shared/utils/gesture/check-gesture-activation.ts +82 -116
- package/src/shared/utils/gesture/compute-claimed-directions.ts +93 -0
- package/src/shared/utils/gesture/determine-snap-target.ts +6 -2
- package/src/shared/utils/gesture/find-collapse-target.ts +42 -0
- package/src/shared/utils/gesture/resolve-ownership.ts +110 -0
- package/src/shared/utils/gesture/velocity.ts +16 -6
- package/src/shared/__tests__/bounds.store.test.ts +0 -394
- package/src/shared/__tests__/derivations.test.ts +0 -156
- package/src/shared/__tests__/determine-dismissal.test.ts +0 -111
- package/src/shared/__tests__/determine-snap-target.test.ts +0 -268
- package/src/shared/__tests__/geometry.test.ts +0 -130
- package/src/shared/__tests__/gesture-activation.test.ts +0 -471
- package/src/shared/__tests__/gesture.velocity.test.ts +0 -131
- package/src/shared/__tests__/history.store.test.ts +0 -550
- package/src/shared/__tests__/sync-routes-with-removed.test.ts +0 -137
- package/src/shared/__tests__/validate-snap-points.test.ts +0 -125
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { EPSILON } from "../../constants";
|
|
4
|
+
/**
|
|
5
|
+
* Finds the next lower snap point for backdrop collapse behavior.
|
|
6
|
+
*
|
|
7
|
+
* - If above min snap: returns next lower snap point
|
|
8
|
+
* - If at or below min snap: returns 0 (dismiss) if canDismiss, else stays at min
|
|
9
|
+
*
|
|
10
|
+
* @param currentProgress - Current animation progress
|
|
11
|
+
* @param snapPoints - Array of snap points
|
|
12
|
+
* @param canDismiss - Whether dismissing is allowed
|
|
13
|
+
*/
|
|
14
|
+
export function findCollapseTarget(currentProgress, snapPoints, canDismiss) {
|
|
15
|
+
"worklet";
|
|
16
|
+
|
|
17
|
+
const sorted = [...snapPoints].sort((a, b) => a - b);
|
|
18
|
+
const minSnap = sorted[0];
|
|
19
|
+
|
|
20
|
+
// Find next lower snap point
|
|
21
|
+
for (let i = sorted.length - 1; i >= 0; i--) {
|
|
22
|
+
if (sorted[i] < currentProgress - EPSILON) {
|
|
23
|
+
return {
|
|
24
|
+
target: sorted[i],
|
|
25
|
+
shouldDismiss: false
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// At or below min snap → dismiss if allowed
|
|
31
|
+
if (canDismiss) {
|
|
32
|
+
return {
|
|
33
|
+
target: 0,
|
|
34
|
+
shouldDismiss: true
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Can't dismiss, stay at min
|
|
39
|
+
return {
|
|
40
|
+
target: minSnap,
|
|
41
|
+
shouldDismiss: false
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=find-collapse-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EPSILON","findCollapseTarget","currentProgress","snapPoints","canDismiss","sorted","sort","a","b","minSnap","i","length","target","shouldDismiss"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/find-collapse-target.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,iBAAiB;AAOzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,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,GAAGF,OAAO,EAAE;MAC1C,OAAO;QAAEY,MAAM,EAAEP,MAAM,CAACK,CAAC,CAAC;QAAEG,aAAa,EAAE;MAAM,CAAC;IACnD;EACD;;EAEA;EACA,IAAIT,UAAU,EAAE;IACf,OAAO;MAAEQ,MAAM,EAAE,CAAC;MAAEC,aAAa,EAAE;IAAK,CAAC;EAC1C;;EAEA;EACA,OAAO;IAAED,MAAM,EAAEH,OAAO;IAAEI,aAAa,EAAE;EAAM,CAAC;AACjD","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { DIRECTIONS, NO_OWNERSHIP } from "../../types/ownership.types";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Minimal interface for ancestor context needed for ownership resolution.
|
|
7
|
+
* This allows the function to be used without importing the full GestureContextType.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Resolves ownership status for all directions relative to the current screen.
|
|
12
|
+
*
|
|
13
|
+
* For each direction:
|
|
14
|
+
* 1. If the current screen claims it → 'self' (should activate)
|
|
15
|
+
* 2. Else, walk up ancestors looking for a claim → 'ancestor' (should fail to bubble)
|
|
16
|
+
* 3. If no one claims it → 'none' (should fail, no gesture response)
|
|
17
|
+
*
|
|
18
|
+
* This is computed during render (JS thread) and the result can be safely
|
|
19
|
+
* used in worklets since it's a plain object.
|
|
20
|
+
*
|
|
21
|
+
* @param selfClaims - The directions claimed by the current screen
|
|
22
|
+
* @param ancestorContext - The ancestor context chain (can be null if no ancestors)
|
|
23
|
+
* @returns Ownership status for all four directions
|
|
24
|
+
*/
|
|
25
|
+
export function resolveOwnership(selfClaims, ancestorContext) {
|
|
26
|
+
const result = {
|
|
27
|
+
...NO_OWNERSHIP
|
|
28
|
+
};
|
|
29
|
+
for (const direction of DIRECTIONS) {
|
|
30
|
+
result[direction] = resolveDirectionOwnership(direction, selfClaims, ancestorContext);
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Resolves ownership for a single direction.
|
|
37
|
+
*/
|
|
38
|
+
function resolveDirectionOwnership(direction, selfClaims, ancestorContext) {
|
|
39
|
+
// Check self first
|
|
40
|
+
if (selfClaims[direction]) {
|
|
41
|
+
return "self";
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Walk ancestors looking for a claim
|
|
45
|
+
let ancestor = ancestorContext;
|
|
46
|
+
while (ancestor) {
|
|
47
|
+
if (ancestor.claimedDirections?.[direction]) {
|
|
48
|
+
return "ancestor";
|
|
49
|
+
}
|
|
50
|
+
ancestor = ancestor.ancestorContext;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// No one claims this direction
|
|
54
|
+
return "none";
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Finds the nearest ancestor (or self if isCurrentOwner) that claims any direction.
|
|
59
|
+
* Used for setting up native gesture relationships.
|
|
60
|
+
*
|
|
61
|
+
* @param selfClaimsAny - Whether the current screen claims any direction
|
|
62
|
+
* @param ancestorContext - The ancestor context chain
|
|
63
|
+
* @returns The nearest context that claims a direction, or null
|
|
64
|
+
*/
|
|
65
|
+
export function findNearestOwner(selfClaimsAny, ancestorContext) {
|
|
66
|
+
// If self claims any direction, self is the nearest owner
|
|
67
|
+
// (but we return null since this is used for finding ANCESTOR owners)
|
|
68
|
+
if (selfClaimsAny) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Walk ancestors looking for one that claims any direction
|
|
73
|
+
let ancestor = ancestorContext;
|
|
74
|
+
while (ancestor) {
|
|
75
|
+
const claims = ancestor.claimedDirections;
|
|
76
|
+
if (claims?.vertical || claims?.["vertical-inverted"] || claims?.horizontal || claims?.["horizontal-inverted"]) {
|
|
77
|
+
return ancestor;
|
|
78
|
+
}
|
|
79
|
+
ancestor = ancestor.ancestorContext;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=resolve-ownership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DIRECTIONS","NO_OWNERSHIP","resolveOwnership","selfClaims","ancestorContext","result","direction","resolveDirectionOwnership","ancestor","claimedDirections","findNearestOwner","selfClaimsAny","claims","vertical","horizontal"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/resolve-ownership.ts"],"mappings":";;AACA,SACCA,UAAU,EAEVC,YAAY,QAEN,6BAA6B;;AAEpC;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC/BC,UAA6B,EAC7BC,eAA6C,EACxB;EACrB,MAAMC,MAA0B,GAAG;IAAE,GAAGJ;EAAa,CAAC;EAEtD,KAAK,MAAMK,SAAS,IAAIN,UAAU,EAAE;IACnCK,MAAM,CAACC,SAAS,CAAC,GAAGC,yBAAyB,CAC5CD,SAAS,EACTH,UAAU,EACVC,eACD,CAAC;EACF;EAEA,OAAOC,MAAM;AACd;;AAEA;AACA;AACA;AACA,SAASE,yBAAyBA,CACjCD,SAAoB,EACpBH,UAA6B,EAC7BC,eAA6C,EAC3B;EAClB;EACA,IAAID,UAAU,CAACG,SAAS,CAAC,EAAE;IAC1B,OAAO,MAAM;EACd;;EAEA;EACA,IAAIE,QAAQ,GAAGJ,eAAe;EAC9B,OAAOI,QAAQ,EAAE;IAChB,IAAIA,QAAQ,CAACC,iBAAiB,GAAGH,SAAS,CAAC,EAAE;MAC5C,OAAO,UAAU;IAClB;IACAE,QAAQ,GAAGA,QAAQ,CAACJ,eAAe;EACpC;;EAEA;EACA,OAAO,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,gBAAgBA,CAC/BC,aAAsB,EACtBP,eAA6C,EACd;EAC/B;EACA;EACA,IAAIO,aAAa,EAAE;IAClB,OAAO,IAAI;EACZ;;EAEA;EACA,IAAIH,QAAQ,GAAGJ,eAAe;EAC9B,OAAOI,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,CAACJ,eAAe;EACpC;EAEA,OAAO,IAAI;AACZ","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { clamp } from "react-native-reanimated";
|
|
4
|
+
import { ANIMATION_SNAP_THRESHOLD, EPSILON } from "../../constants";
|
|
4
5
|
const MAX_VELOCITY_MAGNITUDE = 3.2;
|
|
5
|
-
const NEAR_ZERO_THRESHOLD = 0.01;
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Converts velocity from pixels/second to normalized units/second (0-1 range)
|
|
@@ -31,7 +31,7 @@ const normalizeTranslation = (translation, dimension) => {
|
|
|
31
31
|
const calculateRestoreVelocity = (currentValueNormalized, baseVelocityNormalized) => {
|
|
32
32
|
"worklet";
|
|
33
33
|
|
|
34
|
-
if (Math.abs(currentValueNormalized) <
|
|
34
|
+
if (Math.abs(currentValueNormalized) < ANIMATION_SNAP_THRESHOLD) return 0;
|
|
35
35
|
const directionTowardZero = Math.sign(currentValueNormalized) || 1;
|
|
36
36
|
const clampedVelocity = Math.min(Math.abs(baseVelocityNormalized), 1);
|
|
37
37
|
return -directionTowardZero * clampedVelocity;
|
|
@@ -80,11 +80,22 @@ const shouldPassDismissalThreshold = (translationPixels, velocityPixelsPerSecond
|
|
|
80
80
|
"worklet";
|
|
81
81
|
|
|
82
82
|
const normalizedTranslation = translationPixels / Math.max(1, screenSize);
|
|
83
|
+
|
|
84
|
+
// If translation is essentially zero, velocity alone shouldn't trigger dismissal.
|
|
85
|
+
// User must have meaningfully moved in the dismiss direction.
|
|
86
|
+
if (Math.abs(normalizedTranslation) < EPSILON) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
83
89
|
const normalizedVelocity = normalize(velocityPixelsPerSecond, screenSize);
|
|
84
90
|
const projectedNormalizedPosition = normalizedTranslation + normalizedVelocity * velocityWeight;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
|
|
92
|
+
// The dismiss direction is determined by the sign of the translation.
|
|
93
|
+
// Multiplying by this sign normalizes the projection so "toward dismiss" is always positive.
|
|
94
|
+
// This prevents dismissal when the user drags back (opposing velocity flips projection negative).
|
|
95
|
+
const dismissSign = Math.sign(translationPixels);
|
|
96
|
+
const projectedInDismissDirection = projectedNormalizedPosition * dismissSign;
|
|
97
|
+
const exceedsThreshold = projectedInDismissDirection > 0.5;
|
|
98
|
+
return exceedsThreshold;
|
|
88
99
|
};
|
|
89
100
|
export const velocity = {
|
|
90
101
|
normalize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clamp","
|
|
1
|
+
{"version":3,"names":["clamp","ANIMATION_SNAP_THRESHOLD","EPSILON","MAX_VELOCITY_MAGNITUDE","normalize","velocityPixelsPerSecond","screenSize","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","dismissSign","projectedInDismissDirection","exceedsThreshold","velocity"],"sourceRoot":"../../../../../src","sources":["shared/utils/gesture/velocity.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snap-to.d.ts","sourceRoot":"","sources":["../../../../src/shared/animation/snap-to.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snap-to.d.ts","sourceRoot":"","sources":["../../../../src/shared/animation/snap-to.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CA2C1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-transition-aware-component.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/create-transition-aware-component.tsx"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"create-transition-aware-component.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/create-transition-aware-component.tsx"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,OAAO,CAAC;AAS7D,UAAU,qCAAqC;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,MAAM,EAC9D,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,qCAA0C;;;;;;;;;;;;;sEAiGnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen-container.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/screen-container.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"screen-container.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/screen-container.tsx"],"names":[],"mappings":"AAiBA,KAAK,KAAK,GAAG;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,eAAe,qDAAuB,KAAK,6CAqGtD,CAAC"}
|
|
@@ -40,6 +40,7 @@ export declare const FULLSCREEN_DIMENSIONS: (dimensions: Layout) => MeasuredDime
|
|
|
40
40
|
* Default gesture config
|
|
41
41
|
*/
|
|
42
42
|
export declare const GESTURE_VELOCITY_IMPACT = 0.3;
|
|
43
|
+
export declare const SNAP_VELOCITY_IMPACT = 0.1;
|
|
43
44
|
export declare const DEFAULT_GESTURE_DIRECTION = "horizontal";
|
|
44
45
|
export declare const DEFAULT_GESTURE_DRIVES_PROGRESS = true;
|
|
45
46
|
export declare const DEFAULT_GESTURE_ACTIVATION_AREA: ActivationArea;
|
|
@@ -50,4 +51,9 @@ export declare const FALSE = 0;
|
|
|
50
51
|
* Small value for floating-point comparisons to handle animation/interpolation imprecision
|
|
51
52
|
*/
|
|
52
53
|
export declare const EPSILON = 0.00001;
|
|
54
|
+
/**
|
|
55
|
+
* Threshold for snapping animations to target when "close enough" (1% of range).
|
|
56
|
+
* Prevents micro-jitter/oscillation near animation endpoints.
|
|
57
|
+
*/
|
|
58
|
+
export declare const ANIMATION_SNAP_THRESHOLD = 0.01;
|
|
53
59
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/shared/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS,cAAoB,CAAC;AAe3C;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACvC,OAAO,cAAc,EACrB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,qBAQD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,qBAQ3C,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,yBAAyB,cAAoB,CAAC;AAC3D,eAAO,MAAM,6BAA6B;;;;;;;;EAQxC,CAAC;AACH,eAAO,MAAM,WAAW,iBAAkB,CAAC;AAC3C,eAAO,MAAM,UAAU,iBAAkB,CAAC;AAE1C,eAAO,MAAM,qBAAqB,GACjC,YAAY,MAAM,KAChB,kBAUF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,+BAA+B,EAAE,cAAyB,CAAC;AAExE,eAAO,MAAM,MAAM,SAAwB,CAAC;AAE5C,eAAO,MAAM,IAAI,IAAI,CAAC;AACtB,eAAO,MAAM,KAAK,IAAI,CAAC;AAEvB;;GAEG;AACH,eAAO,MAAM,OAAO,UAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/shared/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAC5C,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS,cAAoB,CAAC;AAe3C;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACvC,OAAO,cAAc,EACrB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,qBAQD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,qBAQ3C,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,yBAAyB,cAAoB,CAAC;AAC3D,eAAO,MAAM,6BAA6B;;;;;;;;EAQxC,CAAC;AACH,eAAO,MAAM,WAAW,iBAAkB,CAAC;AAC3C,eAAO,MAAM,UAAU,iBAAkB,CAAC;AAE1C,eAAO,MAAM,qBAAqB,GACjC,YAAY,MAAM,KAChB,kBAUF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,+BAA+B,EAAE,cAAyB,CAAC;AAExE,eAAO,MAAM,MAAM,SAAwB,CAAC;AAE5C,eAAO,MAAM,IAAI,IAAI,CAAC;AACtB,eAAO,MAAM,KAAK,IAAI,CAAC;AAEvB;;GAEG;AACH,eAAO,MAAM,OAAO,UAAO,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC"}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
import { type GestureType } from "react-native-gesture-handler";
|
|
2
2
|
import type { SharedValue } from "react-native-reanimated";
|
|
3
|
-
import type { GestureContextType, ScrollConfig } from "../../providers/gestures.provider";
|
|
3
|
+
import type { DirectionClaimMap, GestureContextType, ScrollConfig } from "../../providers/gestures.provider";
|
|
4
4
|
import { type GestureStoreMap } from "../../stores/gesture.store";
|
|
5
|
+
import type { ClaimedDirections } from "../../types/ownership.types";
|
|
5
6
|
interface BuildGesturesHookProps {
|
|
6
7
|
scrollConfig: SharedValue<ScrollConfig | null>;
|
|
7
8
|
ancestorContext?: GestureContextType | null;
|
|
9
|
+
claimedDirections: ClaimedDirections;
|
|
10
|
+
childDirectionClaims: SharedValue<DirectionClaimMap>;
|
|
11
|
+
isIsolated: boolean;
|
|
8
12
|
}
|
|
9
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Builds the Pan gesture for screen dismissal.
|
|
15
|
+
*
|
|
16
|
+
* Handles shadowing: when child claims same direction as ancestor,
|
|
17
|
+
* child's pan blocks ancestor's pan via `blocksExternalGesture()`.
|
|
18
|
+
*
|
|
19
|
+
* ScrollView coordination is handled separately by useScrollRegistry,
|
|
20
|
+
* which creates its own Native gesture per ScrollView.
|
|
21
|
+
*/
|
|
22
|
+
export declare const useBuildGestures: ({ scrollConfig, ancestorContext, claimedDirections, childDirectionClaims, isIsolated, }: BuildGesturesHookProps) => {
|
|
10
23
|
panGesture: GestureType;
|
|
11
24
|
panGestureRef: React.MutableRefObject<GestureType | undefined>;
|
|
12
|
-
nativeGesture: GestureType;
|
|
13
25
|
gestureAnimationValues: GestureStoreMap;
|
|
14
26
|
};
|
|
15
27
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-build-gestures.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-build-gestures.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACX,kBAAkB,EAClB,YAAY,EACZ,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-build-gestures.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-build-gestures.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,6BAA6B,CAAC;AAyChF,UAAU,sBAAsB;IAC/B,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5C,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACrD,UAAU,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,yFAM9B,sBAAsB,KAAG;IAC3B,UAAU,EAAE,WAAW,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC/D,sBAAsB,EAAE,eAAe,CAAC;CAkGxC,CAAC"}
|
|
@@ -1,14 +1,64 @@
|
|
|
1
1
|
import type { GestureStateChangeEvent, GestureTouchEvent, GestureUpdateEvent, PanGestureHandlerEventPayload } from "react-native-gesture-handler";
|
|
2
2
|
import type { GestureStateManagerType } from "react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager";
|
|
3
3
|
import { type SharedValue } from "react-native-reanimated";
|
|
4
|
-
import type { ScrollConfig } from "../../providers/gestures.provider";
|
|
4
|
+
import type { DirectionClaimMap, GestureContextType, ScrollConfig } from "../../providers/gestures.provider";
|
|
5
|
+
import type { ClaimedDirections, DirectionOwnership } from "../../types/ownership.types";
|
|
5
6
|
interface UseScreenGestureHandlersProps {
|
|
6
7
|
scrollConfig: SharedValue<ScrollConfig | null>;
|
|
7
8
|
ancestorIsDismissing?: SharedValue<number> | null;
|
|
8
9
|
canDismiss: boolean;
|
|
9
10
|
handleDismiss: () => void;
|
|
11
|
+
ownershipStatus: DirectionOwnership;
|
|
12
|
+
claimedDirections: ClaimedDirections;
|
|
13
|
+
ancestorContext: GestureContextType | null | undefined;
|
|
14
|
+
childDirectionClaims: SharedValue<DirectionClaimMap>;
|
|
10
15
|
}
|
|
11
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Gesture Handlers for Screen Dismissal and Snap Navigation
|
|
18
|
+
*
|
|
19
|
+
* ## Mental Model
|
|
20
|
+
*
|
|
21
|
+
* This hook implements the touch handling logic for the gesture ownership system.
|
|
22
|
+
* Each screen has a pan gesture handler that runs through this decision flow:
|
|
23
|
+
*
|
|
24
|
+
* ```
|
|
25
|
+
* onTouchesMove (for each touch move event):
|
|
26
|
+
* 1. ANCESTOR CHECK: If ancestor is dismissing → fail (avoid racing)
|
|
27
|
+
* 2. DIRECTION DETECTION: Determine swipe direction from touch delta
|
|
28
|
+
* 3. OWNERSHIP CHECK: Do we own this direction? (ownershipStatus)
|
|
29
|
+
* - "self" → continue
|
|
30
|
+
* - "ancestor" or null → fail (let it bubble up)
|
|
31
|
+
* 4. CHILD CLAIM CHECK: Has a child pre-registered a claim for this direction?
|
|
32
|
+
* - Yes → fail immediately (child shadows us, no delay)
|
|
33
|
+
* - No → continue
|
|
34
|
+
* 5. OFFSET THRESHOLD: Wait for sufficient touch movement
|
|
35
|
+
* 6. SCROLLVIEW CHECK: If touch is on ScrollView, is it at boundary?
|
|
36
|
+
* 7. EXPAND CHECK (snap sheets): If expanding via ScrollView, is expandViaScrollView enabled?
|
|
37
|
+
* 8. ACTIVATE!
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* ## Key Concepts
|
|
41
|
+
*
|
|
42
|
+
* **Ownership**: Pre-computed at render time. "self" means this screen handles
|
|
43
|
+
* the direction, "ancestor" means bubble up, null means no handler exists.
|
|
44
|
+
*
|
|
45
|
+
* **Child Claims**: Registered at mount time via useEffect in gestures.provider.tsx.
|
|
46
|
+
* When a child shadows our direction, it pre-registers a claim so we know to defer.
|
|
47
|
+
* IMPORTANT: This check happens BEFORE offset threshold to ensure the parent fails
|
|
48
|
+
* immediately when shadowed, avoiding any perceptible delay.
|
|
49
|
+
* ALSO: Claims from dismissing children are ignored, allowing the parent to handle
|
|
50
|
+
* new gestures while the child is animating out.
|
|
51
|
+
*
|
|
52
|
+
* **ScrollView Boundaries**: Per spec, a ScrollView must be at its boundary before
|
|
53
|
+
* yielding to gestures. The boundary depends on sheet type:
|
|
54
|
+
* - Bottom sheet (vertical): scrollY = 0 (top)
|
|
55
|
+
* - Top sheet (vertical-inverted): scrollY >= maxY (bottom)
|
|
56
|
+
*
|
|
57
|
+
* **Snap Points**: Sheets with snapPoints claim BOTH directions on their axis
|
|
58
|
+
* (e.g., vertical sheet claims vertical AND vertical-inverted). This allows
|
|
59
|
+
* expand (drag up) and collapse/dismiss (drag down) gestures.
|
|
60
|
+
*/
|
|
61
|
+
export declare const useScreenGestureHandlers: ({ scrollConfig, ancestorIsDismissing, canDismiss, handleDismiss, ownershipStatus, claimedDirections, ancestorContext, childDirectionClaims, }: UseScreenGestureHandlersProps) => {
|
|
12
62
|
onTouchesDown: (e: GestureTouchEvent) => void;
|
|
13
63
|
onTouchesMove: (e: GestureTouchEvent, manager: GestureStateManagerType) => void;
|
|
14
64
|
onStart: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-screen-gesture-handlers.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-screen-gesture-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mFAAmF,CAAC;AACjI,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-screen-gesture-handlers.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-screen-gesture-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mFAAmF,CAAC;AACjI,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,yBAAyB,CAAC;AAY3E,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,MAAM,mCAAmC,CAAC;AAK3C,OAAO,KAAK,EACX,iBAAiB,EAEjB,kBAAkB,EAClB,MAAM,6BAA6B,CAAC;AAerC,UAAU,6BAA6B;IACtC,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,kBAAkB,CAAC;IACpC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,oBAAoB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,wBAAwB,GAAI,+IAStC,6BAA6B;;;;;;CA+Y/B,CAAC"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Connects ScrollViews to the gesture ownership system.
|
|
3
|
+
* Finds the gesture owner for the scroll axis and coordinates with their panGesture.
|
|
4
|
+
*/
|
|
5
|
+
import type { LayoutChangeEvent } from "react-native";
|
|
3
6
|
import type { ReanimatedScrollEvent } from "react-native-reanimated/lib/typescript/hook/commonTypes";
|
|
4
7
|
interface ScrollProgressHookProps {
|
|
5
8
|
onScroll?: (event: ReanimatedScrollEvent) => void;
|
|
6
9
|
onContentSizeChange?: (width: number, height: number) => void;
|
|
7
10
|
onLayout?: (event: LayoutChangeEvent) => void;
|
|
8
|
-
|
|
9
|
-
onTouchEnd?: (event: GestureResponderEvent) => void;
|
|
11
|
+
direction?: "vertical" | "horizontal";
|
|
10
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns scroll handlers and a native gesture for ScrollView coordination.
|
|
15
|
+
* Automatically finds the gesture owner for the scroll axis.
|
|
16
|
+
*/
|
|
11
17
|
export declare const useScrollRegistry: (props: ScrollProgressHookProps) => {
|
|
12
18
|
scrollHandler: import("react-native-reanimated").ScrollHandlerProcessed<Record<string, unknown>>;
|
|
13
19
|
onContentSizeChange: (width: number, height: number) => void;
|
|
14
20
|
onLayout: (event: LayoutChangeEvent) => void;
|
|
15
|
-
|
|
16
|
-
onTouchEnd: (event: GestureResponderEvent) => void;
|
|
21
|
+
nativeGesture: import("react-native-gesture-handler/lib/typescript/handlers/gestures/nativeGesture").NativeGesture | null;
|
|
17
22
|
};
|
|
18
23
|
export {};
|
|
19
24
|
//# sourceMappingURL=use-scroll-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-scroll-registry.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-scroll-registry.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"use-scroll-registry.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-scroll-registry.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AA4CrG,UAAU,uBAAuB;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,uBAAuB;;;;;CAqH/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-backdrop-pointer-events.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/use-backdrop-pointer-events.ts"],"names":[],"mappings":"AAIA,KAAK,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"use-backdrop-pointer-events.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/use-backdrop-pointer-events.ts"],"names":[],"mappings":"AAIA,KAAK,gBAAgB,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzE,UAAU,2BAA2B;IACpC,aAAa,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,2BAA2B,CAatE"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Gesture System - Core Provider
|
|
3
|
+
*
|
|
4
|
+
* Each screen gets a GestureContext containing:
|
|
5
|
+
* - panGesture: Pan gesture handler for dismiss/snap
|
|
6
|
+
* - scrollConfig: Scroll state for boundary detection
|
|
7
|
+
* - claimedDirections: Which directions this screen handles
|
|
8
|
+
* - childDirectionClaims: Claims registered by descendant screens
|
|
9
|
+
*
|
|
10
|
+
* ScrollView coordination is handled by useScrollRegistry, which finds the
|
|
11
|
+
* gesture owner for the scroll axis and creates appropriate Native gestures.
|
|
12
|
+
*/
|
|
13
|
+
import type { GestureType } from "react-native-gesture-handler";
|
|
2
14
|
import type { SharedValue } from "react-native-reanimated";
|
|
3
|
-
import type
|
|
15
|
+
import { type GestureStoreMap } from "../stores/gesture.store";
|
|
16
|
+
import type { ClaimedDirections } from "../types/ownership.types";
|
|
4
17
|
export type ScrollConfig = {
|
|
5
18
|
x: number;
|
|
6
19
|
y: number;
|
|
@@ -10,14 +23,26 @@ export type ScrollConfig = {
|
|
|
10
23
|
layoutWidth: number;
|
|
11
24
|
isTouched: boolean;
|
|
12
25
|
};
|
|
26
|
+
export type DirectionClaim = {
|
|
27
|
+
routeKey: string;
|
|
28
|
+
isDismissing: SharedValue<number>;
|
|
29
|
+
} | null;
|
|
30
|
+
export type DirectionClaimMap = {
|
|
31
|
+
vertical: DirectionClaim;
|
|
32
|
+
"vertical-inverted": DirectionClaim;
|
|
33
|
+
horizontal: DirectionClaim;
|
|
34
|
+
"horizontal-inverted": DirectionClaim;
|
|
35
|
+
};
|
|
13
36
|
export interface GestureContextType {
|
|
14
37
|
panGesture: GestureType;
|
|
15
38
|
panGestureRef: React.MutableRefObject<GestureType | undefined>;
|
|
16
|
-
nativeGesture: GestureType;
|
|
17
39
|
scrollConfig: SharedValue<ScrollConfig | null>;
|
|
18
40
|
gestureAnimationValues: GestureStoreMap;
|
|
19
41
|
ancestorContext: GestureContextType | null;
|
|
20
42
|
gestureEnabled: boolean;
|
|
43
|
+
isIsolated: boolean;
|
|
44
|
+
claimedDirections: ClaimedDirections;
|
|
45
|
+
childDirectionClaims: SharedValue<DirectionClaimMap>;
|
|
21
46
|
}
|
|
22
47
|
interface ScreenGestureProviderProps {
|
|
23
48
|
children: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestures.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/gestures.provider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gestures.provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/gestures.provider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,0BAA0B,CAAC;AAO7E,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC,GAAG,IAAI,CAAC;AAET,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,mBAAmB,EAAE,cAAc,CAAC;IACpC,UAAU,EAAE,cAAc,CAAC;IAC3B,qBAAqB,EAAE,cAAc,CAAC;CACtC,CAAC;AA4FF,MAAM,WAAW,kBAAkB;IAClC,UAAU,EAAE,WAAW,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAC/D,YAAY,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,sBAAsB,EAAE,eAAe,CAAC;IACxC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED,UAAU,0BAA0B;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,eAAO,MACN,qBAAqB,kDACI,iBAAiB,iCAqEzC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gesture Ownership System Types
|
|
3
|
+
*
|
|
4
|
+
* Core principles:
|
|
5
|
+
* 1. Gestures dismiss stacks, not screens
|
|
6
|
+
* 2. Ownership is per-direction (4 independent directions)
|
|
7
|
+
* 3. Shadowing: child claiming same direction blocks parent
|
|
8
|
+
* 4. Inheritance: no local claim walks up tree to find owner
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* The four independent gesture directions.
|
|
12
|
+
* Each direction is owned independently.
|
|
13
|
+
*
|
|
14
|
+
* Uses the same format as GestureDirection from gesture.types.ts
|
|
15
|
+
* (excluding 'bidirectional' which expands to all four).
|
|
16
|
+
*/
|
|
17
|
+
export type Direction = "vertical" | "vertical-inverted" | "horizontal" | "horizontal-inverted";
|
|
18
|
+
/**
|
|
19
|
+
* All possible directions as an array for iteration.
|
|
20
|
+
*/
|
|
21
|
+
export declare const DIRECTIONS: Direction[];
|
|
22
|
+
/**
|
|
23
|
+
* Map of which directions a screen claims ownership of.
|
|
24
|
+
* A screen claims a direction when:
|
|
25
|
+
* - gestureEnabled is true AND
|
|
26
|
+
* - gestureDirection includes that direction
|
|
27
|
+
*
|
|
28
|
+
* For snap points, both directions on the axis are claimed automatically.
|
|
29
|
+
*/
|
|
30
|
+
export type ClaimedDirections = Record<Direction, boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Empty claims - used when gestureEnabled is false.
|
|
33
|
+
*/
|
|
34
|
+
export declare const NO_CLAIMS: ClaimedDirections;
|
|
35
|
+
/**
|
|
36
|
+
* Ownership status for a direction relative to the current screen.
|
|
37
|
+
*
|
|
38
|
+
* - 'self': Current screen owns this direction (should activate)
|
|
39
|
+
* - 'ancestor': An ancestor owns this direction (should fail to bubble up)
|
|
40
|
+
* - 'none': No one owns this direction (should fail, no gesture response)
|
|
41
|
+
*/
|
|
42
|
+
export type OwnershipStatus = "self" | "ancestor" | "none";
|
|
43
|
+
/**
|
|
44
|
+
* Map of ownership status for all four directions.
|
|
45
|
+
* Pre-computed during render for worklet access.
|
|
46
|
+
*/
|
|
47
|
+
export type DirectionOwnership = Record<Direction, OwnershipStatus>;
|
|
48
|
+
/**
|
|
49
|
+
* Empty ownership - used when no gestures are configured anywhere.
|
|
50
|
+
*/
|
|
51
|
+
export declare const NO_OWNERSHIP: DirectionOwnership;
|
|
52
|
+
//# sourceMappingURL=ownership.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownership.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/ownership.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAClB,UAAU,GACV,mBAAmB,GACnB,YAAY,GACZ,qBAAqB,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAKjC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,iBAKvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,kBAK1B,CAAC"}
|
|
@@ -65,8 +65,15 @@ export type ScreenTransitionConfig = {
|
|
|
65
65
|
gestureDirection?: GestureDirection | GestureDirection[];
|
|
66
66
|
/**
|
|
67
67
|
* How much the gesture's final velocity impacts the dismiss decision.
|
|
68
|
+
* @default 0.3
|
|
68
69
|
*/
|
|
69
70
|
gestureVelocityImpact?: number;
|
|
71
|
+
/**
|
|
72
|
+
* How much velocity affects snap point targeting. Lower values make snapping
|
|
73
|
+
* feel more deliberate (iOS-like), higher values make it more responsive to flicks.
|
|
74
|
+
* @default 0.1
|
|
75
|
+
*/
|
|
76
|
+
snapVelocityImpact?: number;
|
|
70
77
|
/**
|
|
71
78
|
* Distance threshold for gesture recognition throughout the screen.
|
|
72
79
|
*/
|
|
@@ -132,15 +139,29 @@ export type ScreenTransitionConfig = {
|
|
|
132
139
|
* @default 0
|
|
133
140
|
*/
|
|
134
141
|
initialSnapIndex?: number;
|
|
142
|
+
/**
|
|
143
|
+
* Controls whether swiping to expand the sheet works from within a ScrollView.
|
|
144
|
+
*
|
|
145
|
+
* - `true` (Apple Maps style): Swiping up at scroll top expands the sheet
|
|
146
|
+
* - `false` (Instagram style): Expand only works via deadspace (non-scrollable areas)
|
|
147
|
+
*
|
|
148
|
+
* Collapse (swipe down at scroll top) always works regardless of this setting.
|
|
149
|
+
*
|
|
150
|
+
* Only applies to screens with `snapPoints` configured.
|
|
151
|
+
*
|
|
152
|
+
* @default true
|
|
153
|
+
*/
|
|
154
|
+
expandViaScrollView?: boolean;
|
|
135
155
|
/**
|
|
136
156
|
* Controls how touches interact with the backdrop area (outside the screen content).
|
|
137
157
|
*
|
|
138
158
|
* - `'block'`: Backdrop catches all touches (default for most screens)
|
|
139
159
|
* - `'passthrough'`: Touches pass through to content behind (default for component stacks)
|
|
140
160
|
* - `'dismiss'`: Tapping backdrop dismisses the screen
|
|
161
|
+
* - `'collapse'`: Tapping backdrop collapses to next lower snap point (dismisses at min)
|
|
141
162
|
*
|
|
142
163
|
* @default 'block' (or 'passthrough' for component stacks)
|
|
143
164
|
*/
|
|
144
|
-
backdropBehavior?: "block" | "passthrough" | "dismiss";
|
|
165
|
+
backdropBehavior?: "block" | "passthrough" | "dismiss" | "collapse";
|
|
145
166
|
};
|
|
146
167
|
//# sourceMappingURL=screen.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD
|
|
1
|
+
{"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;OASG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;CACpE,CAAC"}
|