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
|
@@ -5,33 +5,78 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useScrollRegistry = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
+
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
8
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
10
|
var _gestures = require("../../providers/gestures.provider");
|
|
10
11
|
var _useStableCallback = _interopRequireDefault(require("../use-stable-callback"));
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Connects ScrollViews to the gesture ownership system.
|
|
15
|
+
* Finds the gesture owner for the scroll axis and coordinates with their panGesture.
|
|
16
|
+
*/
|
|
13
17
|
|
|
18
|
+
/** Walks up context tree to find the screen that owns this scroll axis. */
|
|
19
|
+
function findGestureOwnerForAxis(context, axis) {
|
|
20
|
+
let current = context;
|
|
21
|
+
const startIsolated = context?.isIsolated;
|
|
22
|
+
while (current) {
|
|
23
|
+
if (startIsolated !== undefined && current.isIsolated !== startIsolated) {
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
const ownsAxis = axis === "vertical" ? current.claimedDirections?.vertical || current.claimedDirections?.["vertical-inverted"] : current.claimedDirections?.horizontal || current.claimedDirections?.["horizontal-inverted"];
|
|
27
|
+
if (ownsAxis) {
|
|
28
|
+
return {
|
|
29
|
+
scrollConfig: current.scrollConfig,
|
|
30
|
+
panGesture: current.panGesture
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
current = current.ancestorContext;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
scrollConfig: null,
|
|
37
|
+
panGesture: null
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Returns scroll handlers and a native gesture for ScrollView coordination.
|
|
42
|
+
* Automatically finds the gesture owner for the scroll axis.
|
|
43
|
+
*/
|
|
14
44
|
const useScrollRegistry = props => {
|
|
15
45
|
const context = (0, _gestures.useGestureContext)();
|
|
46
|
+
const scrollDirection = props.direction ?? "vertical";
|
|
16
47
|
const {
|
|
17
48
|
scrollConfig,
|
|
18
|
-
|
|
19
|
-
} = context;
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
49
|
+
panGesture
|
|
50
|
+
} = findGestureOwnerForAxis(context, scrollDirection);
|
|
51
|
+
const nativeGesture = (0, _react.useMemo)(() => {
|
|
52
|
+
if (!panGesture || !scrollConfig) return null;
|
|
53
|
+
const setIsTouched = () => {
|
|
54
|
+
"worklet";
|
|
55
|
+
|
|
56
|
+
if (scrollConfig.value) {
|
|
57
|
+
scrollConfig.value = {
|
|
58
|
+
...scrollConfig.value,
|
|
59
|
+
isTouched: true
|
|
60
|
+
};
|
|
26
61
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
62
|
+
};
|
|
63
|
+
const clearIsTouched = () => {
|
|
64
|
+
"worklet";
|
|
65
|
+
|
|
66
|
+
if (scrollConfig.value) {
|
|
67
|
+
scrollConfig.value = {
|
|
68
|
+
...scrollConfig.value,
|
|
69
|
+
isTouched: false
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return _reactNativeGestureHandler.Gesture.Native().onTouchesDown(setIsTouched).onTouchesUp(clearIsTouched).onTouchesCancelled(clearIsTouched).requireExternalGestureToFail(panGesture);
|
|
74
|
+
}, [panGesture, scrollConfig]);
|
|
31
75
|
const scrollHandler = (0, _reactNativeReanimated.useAnimatedScrollHandler)({
|
|
32
76
|
onScroll: event => {
|
|
33
77
|
props.onScroll?.(event);
|
|
34
|
-
|
|
78
|
+
if (!scrollConfig) return;
|
|
79
|
+
const update = v => {
|
|
35
80
|
"worklet";
|
|
36
81
|
|
|
37
82
|
if (v === null) {
|
|
@@ -49,17 +94,13 @@ const useScrollRegistry = props => {
|
|
|
49
94
|
v.y = event.contentOffset.y;
|
|
50
95
|
return v;
|
|
51
96
|
};
|
|
52
|
-
scrollConfig.modify(
|
|
53
|
-
|
|
54
|
-
// Sync to ALL ancestors, not just immediate parent
|
|
55
|
-
for (const ancestorConfig of ancestorScrollConfigs) {
|
|
56
|
-
ancestorConfig.modify(updateScrollPosition);
|
|
57
|
-
}
|
|
97
|
+
scrollConfig.modify(update);
|
|
58
98
|
}
|
|
59
99
|
});
|
|
60
100
|
const onContentSizeChange = (0, _useStableCallback.default)((width, height) => {
|
|
61
101
|
props.onContentSizeChange?.(width, height);
|
|
62
|
-
|
|
102
|
+
if (!scrollConfig) return;
|
|
103
|
+
const update = v => {
|
|
63
104
|
"worklet";
|
|
64
105
|
|
|
65
106
|
if (v === null) {
|
|
@@ -77,18 +118,16 @@ const useScrollRegistry = props => {
|
|
|
77
118
|
v.contentHeight = height;
|
|
78
119
|
return v;
|
|
79
120
|
};
|
|
80
|
-
scrollConfig.modify(
|
|
81
|
-
for (const ancestorConfig of ancestorScrollConfigs) {
|
|
82
|
-
ancestorConfig.modify(updateContentSize);
|
|
83
|
-
}
|
|
121
|
+
scrollConfig.modify(update);
|
|
84
122
|
});
|
|
85
123
|
const onLayout = (0, _useStableCallback.default)(event => {
|
|
86
124
|
props.onLayout?.(event);
|
|
125
|
+
if (!scrollConfig) return;
|
|
87
126
|
const {
|
|
88
127
|
width,
|
|
89
128
|
height
|
|
90
129
|
} = event.nativeEvent.layout;
|
|
91
|
-
const
|
|
130
|
+
const update = v => {
|
|
92
131
|
"worklet";
|
|
93
132
|
|
|
94
133
|
if (v === null) {
|
|
@@ -106,55 +145,13 @@ const useScrollRegistry = props => {
|
|
|
106
145
|
v.layoutWidth = width;
|
|
107
146
|
return v;
|
|
108
147
|
};
|
|
109
|
-
scrollConfig.modify(
|
|
110
|
-
for (const ancestorConfig of ancestorScrollConfigs) {
|
|
111
|
-
ancestorConfig.modify(updateLayout);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
const onTouchStart = (0, _useStableCallback.default)(event => {
|
|
115
|
-
props.onTouchStart?.(event);
|
|
116
|
-
const setTouched = v => {
|
|
117
|
-
"worklet";
|
|
118
|
-
|
|
119
|
-
if (v === null) {
|
|
120
|
-
return {
|
|
121
|
-
x: 0,
|
|
122
|
-
y: 0,
|
|
123
|
-
contentHeight: 0,
|
|
124
|
-
contentWidth: 0,
|
|
125
|
-
layoutHeight: 0,
|
|
126
|
-
layoutWidth: 0,
|
|
127
|
-
isTouched: true
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
v.isTouched = true;
|
|
131
|
-
return v;
|
|
132
|
-
};
|
|
133
|
-
scrollConfig.modify(setTouched);
|
|
134
|
-
for (const ancestorConfig of ancestorScrollConfigs) {
|
|
135
|
-
ancestorConfig.modify(setTouched);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
const onTouchEnd = (0, _useStableCallback.default)(event => {
|
|
139
|
-
props.onTouchEnd?.(event);
|
|
140
|
-
const clearTouched = v => {
|
|
141
|
-
"worklet";
|
|
142
|
-
|
|
143
|
-
if (v === null) return v;
|
|
144
|
-
v.isTouched = false;
|
|
145
|
-
return v;
|
|
146
|
-
};
|
|
147
|
-
scrollConfig.modify(clearTouched);
|
|
148
|
-
for (const ancestorConfig of ancestorScrollConfigs) {
|
|
149
|
-
ancestorConfig.modify(clearTouched);
|
|
150
|
-
}
|
|
148
|
+
scrollConfig.modify(update);
|
|
151
149
|
});
|
|
152
150
|
return {
|
|
153
151
|
scrollHandler,
|
|
154
152
|
onContentSizeChange,
|
|
155
153
|
onLayout,
|
|
156
|
-
|
|
157
|
-
onTouchEnd
|
|
154
|
+
nativeGesture
|
|
158
155
|
};
|
|
159
156
|
};
|
|
160
157
|
exports.useScrollRegistry = useScrollRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNativeReanimated","_gestures","_useStableCallback","_interopRequireDefault","e","__esModule","default","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_gestures","_useStableCallback","_interopRequireDefault","e","__esModule","default","findGestureOwnerForAxis","context","axis","current","startIsolated","isIsolated","undefined","ownsAxis","claimedDirections","vertical","horizontal","scrollConfig","panGesture","ancestorContext","useScrollRegistry","props","useGestureContext","scrollDirection","direction","nativeGesture","useMemo","setIsTouched","value","isTouched","clearIsTouched","Gesture","Native","onTouchesDown","onTouchesUp","onTouchesCancelled","requireExternalGestureToFail","scrollHandler","useAnimatedScrollHandler","onScroll","event","update","v","x","contentOffset","y","contentHeight","contentWidth","layoutHeight","layoutWidth","modify","onContentSizeChange","useStableCallback","width","height","onLayout","nativeEvent","layout","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-scroll-registry.tsx"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,0BAAA,GAAAD,OAAA;AAEA,IAAAE,sBAAA,GAAAF,OAAA;AAEA,IAAAG,SAAA,GAAAH,OAAA;AAKA,IAAAI,kBAAA,GAAAC,sBAAA,CAAAL,OAAA;AAAuD,SAAAK,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAhBvD;AACA;AACA;AACA;;AAeA;AACA,SAASG,uBAAuBA,CAC/BC,OAA8C,EAC9CC,IAA+B,EAI9B;EACD,IAAIC,OAAO,GAAGF,OAAO;EACrB,MAAMG,aAAa,GAAGH,OAAO,EAAEI,UAAU;EAEzC,OAAOF,OAAO,EAAE;IACf,IAAIC,aAAa,KAAKE,SAAS,IAAIH,OAAO,CAACE,UAAU,KAAKD,aAAa,EAAE;MACxE;IACD;IAEA,MAAMG,QAAQ,GACbL,IAAI,KAAK,UAAU,GAChBC,OAAO,CAACK,iBAAiB,EAAEC,QAAQ,IACpCN,OAAO,CAACK,iBAAiB,GAAG,mBAAmB,CAAC,GAC/CL,OAAO,CAACK,iBAAiB,EAAEE,UAAU,IACtCP,OAAO,CAACK,iBAAiB,GAAG,qBAAqB,CAAC;IAErD,IAAID,QAAQ,EAAE;MACb,OAAO;QACNI,YAAY,EAAER,OAAO,CAACQ,YAAY;QAClCC,UAAU,EAAET,OAAO,CAACS;MACrB,CAAC;IACF;IAEAT,OAAO,GAAGA,OAAO,CAACU,eAAe;EAClC;EAEA,OAAO;IAAEF,YAAY,EAAE,IAAI;IAAEC,UAAU,EAAE;EAAK,CAAC;AAChD;AASA;AACA;AACA;AACA;AACO,MAAME,iBAAiB,GAAIC,KAA8B,IAAK;EACpE,MAAMd,OAAO,GAAG,IAAAe,2BAAiB,EAAC,CAAC;EACnC,MAAMC,eAAe,GAAGF,KAAK,CAACG,SAAS,IAAI,UAAU;EAErD,MAAM;IAAEP,YAAY;IAAEC;EAAW,CAAC,GAAGZ,uBAAuB,CAC3DC,OAAO,EACPgB,eACD,CAAC;EAED,MAAME,aAAa,GAAG,IAAAC,cAAO,EAAC,MAAM;IACnC,IAAI,CAACR,UAAU,IAAI,CAACD,YAAY,EAAE,OAAO,IAAI;IAE7C,MAAMU,YAAY,GAAGA,CAAA,KAAM;MAC1B,SAAS;;MACT,IAAIV,YAAY,CAACW,KAAK,EAAE;QACvBX,YAAY,CAACW,KAAK,GAAG;UAAE,GAAGX,YAAY,CAACW,KAAK;UAAEC,SAAS,EAAE;QAAK,CAAC;MAChE;IACD,CAAC;IAED,MAAMC,cAAc,GAAGA,CAAA,KAAM;MAC5B,SAAS;;MACT,IAAIb,YAAY,CAACW,KAAK,EAAE;QACvBX,YAAY,CAACW,KAAK,GAAG;UAAE,GAAGX,YAAY,CAACW,KAAK;UAAEC,SAAS,EAAE;QAAM,CAAC;MACjE;IACD,CAAC;IAED,OAAOE,kCAAO,CAACC,MAAM,CAAC,CAAC,CACrBC,aAAa,CAACN,YAAY,CAAC,CAC3BO,WAAW,CAACJ,cAAc,CAAC,CAC3BK,kBAAkB,CAACL,cAAc,CAAC,CAClCM,4BAA4B,CAAClB,UAAU,CAAC;EAC3C,CAAC,EAAE,CAACA,UAAU,EAAED,YAAY,CAAC,CAAC;EAE9B,MAAMoB,aAAa,GAAG,IAAAC,+CAAwB,EAAC;IAC9CC,QAAQ,EAAGC,KAAK,IAAK;MACpBnB,KAAK,CAACkB,QAAQ,GAAGC,KAAK,CAAC;MACvB,IAAI,CAACvB,YAAY,EAAE;MAEnB,MAAMwB,MAAM,GAAIC,CAAM,IAAK;QAC1B,SAAS;;QACT,IAAIA,CAAC,KAAK,IAAI,EAAE;UACf,OAAO;YACNC,CAAC,EAAEH,KAAK,CAACI,aAAa,CAACD,CAAC;YACxBE,CAAC,EAAEL,KAAK,CAACI,aAAa,CAACC,CAAC;YACxBC,aAAa,EAAE,CAAC;YAChBC,YAAY,EAAE,CAAC;YACfC,YAAY,EAAE,CAAC;YACfC,WAAW,EAAE,CAAC;YACdpB,SAAS,EAAE;UACZ,CAAC;QACF;QACAa,CAAC,CAACC,CAAC,GAAGH,KAAK,CAACI,aAAa,CAACD,CAAC;QAC3BD,CAAC,CAACG,CAAC,GAAGL,KAAK,CAACI,aAAa,CAACC,CAAC;QAC3B,OAAOH,CAAC;MACT,CAAC;MACDzB,YAAY,CAACiC,MAAM,CAACT,MAAM,CAAC;IAC5B;EACD,CAAC,CAAC;EAEF,MAAMU,mBAAmB,GAAG,IAAAC,0BAAiB,EAC5C,CAACC,KAAa,EAAEC,MAAc,KAAK;IAClCjC,KAAK,CAAC8B,mBAAmB,GAAGE,KAAK,EAAEC,MAAM,CAAC;IAC1C,IAAI,CAACrC,YAAY,EAAE;IAEnB,MAAMwB,MAAM,GAAIC,CAAM,IAAK;MAC1B,SAAS;;MACT,IAAIA,CAAC,KAAK,IAAI,EAAE;QACf,OAAO;UACNC,CAAC,EAAE,CAAC;UACJE,CAAC,EAAE,CAAC;UACJG,YAAY,EAAE,CAAC;UACfC,WAAW,EAAE,CAAC;UACdF,YAAY,EAAEM,KAAK;UACnBP,aAAa,EAAEQ,MAAM;UACrBzB,SAAS,EAAE;QACZ,CAAC;MACF;MACAa,CAAC,CAACK,YAAY,GAAGM,KAAK;MACtBX,CAAC,CAACI,aAAa,GAAGQ,MAAM;MACxB,OAAOZ,CAAC;IACT,CAAC;IACDzB,YAAY,CAACiC,MAAM,CAACT,MAAM,CAAC;EAC5B,CACD,CAAC;EAED,MAAMc,QAAQ,GAAG,IAAAH,0BAAiB,EAAEZ,KAAwB,IAAK;IAChEnB,KAAK,CAACkC,QAAQ,GAAGf,KAAK,CAAC;IACvB,IAAI,CAACvB,YAAY,EAAE;IAEnB,MAAM;MAAEoC,KAAK;MAAEC;IAAO,CAAC,GAAGd,KAAK,CAACgB,WAAW,CAACC,MAAM;IAElD,MAAMhB,MAAM,GAAIC,CAAM,IAAK;MAC1B,SAAS;;MACT,IAAIA,CAAC,KAAK,IAAI,EAAE;QACf,OAAO;UACNC,CAAC,EAAE,CAAC;UACJE,CAAC,EAAE,CAAC;UACJC,aAAa,EAAE,CAAC;UAChBC,YAAY,EAAE,CAAC;UACfC,YAAY,EAAEM,MAAM;UACpBL,WAAW,EAAEI,KAAK;UAClBxB,SAAS,EAAE;QACZ,CAAC;MACF;MACAa,CAAC,CAACM,YAAY,GAAGM,MAAM;MACvBZ,CAAC,CAACO,WAAW,GAAGI,KAAK;MACrB,OAAOX,CAAC;IACT,CAAC;IACDzB,YAAY,CAACiC,MAAM,CAACT,MAAM,CAAC;EAC5B,CAAC,CAAC;EAEF,OAAO;IACNJ,aAAa;IACbc,mBAAmB;IACnBI,QAAQ;IACR9B;EACD,CAAC;AACF,CAAC;AAACiC,OAAA,CAAAtC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -4,15 +4,102 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useGestureContext = exports.ScreenGestureProvider = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
7
|
+
var _native = require("@react-navigation/native");
|
|
8
|
+
var _react = require("react");
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
10
|
var _useBuildGestures = require("../hooks/gestures/use-build-gestures");
|
|
11
|
-
var
|
|
11
|
+
var _gesture = require("../stores/gesture.store");
|
|
12
|
+
var _stack = require("../types/stack.types");
|
|
12
13
|
var _createProvider = _interopRequireDefault(require("../utils/create-provider"));
|
|
14
|
+
var _computeClaimedDirections = require("../utils/gesture/compute-claimed-directions");
|
|
13
15
|
var _keys = require("./screen/keys.provider");
|
|
14
|
-
var
|
|
16
|
+
var _core = require("./stack/core.provider");
|
|
15
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
+
/**
|
|
19
|
+
* Gesture System - Core Provider
|
|
20
|
+
*
|
|
21
|
+
* Each screen gets a GestureContext containing:
|
|
22
|
+
* - panGesture: Pan gesture handler for dismiss/snap
|
|
23
|
+
* - scrollConfig: Scroll state for boundary detection
|
|
24
|
+
* - claimedDirections: Which directions this screen handles
|
|
25
|
+
* - childDirectionClaims: Claims registered by descendant screens
|
|
26
|
+
*
|
|
27
|
+
* ScrollView coordination is handled by useScrollRegistry, which finds the
|
|
28
|
+
* gesture owner for the scroll axis and creates appropriate Native gestures.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
const NO_CLAIMS = {
|
|
32
|
+
vertical: null,
|
|
33
|
+
"vertical-inverted": null,
|
|
34
|
+
horizontal: null,
|
|
35
|
+
"horizontal-inverted": null
|
|
36
|
+
};
|
|
37
|
+
const DIRECTIONS = ["vertical", "vertical-inverted", "horizontal", "horizontal-inverted"];
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Registers direction claims on ancestors that this screen shadows.
|
|
41
|
+
* Only registers claims when this screen is the current (topmost) route
|
|
42
|
+
* in its navigator, preventing unfocused screens from blocking gestures.
|
|
43
|
+
*/
|
|
44
|
+
function useRegisterDirectionClaims(ancestorContext, claimedDirections, routeKey, isIsolated, isCurrentRoute) {
|
|
45
|
+
(0, _react.useEffect)(() => {
|
|
46
|
+
// Only register claims when this screen is the current route
|
|
47
|
+
if (!isCurrentRoute || !ancestorContext) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const gestureValues = _gesture.GestureStore.getRouteGestures(routeKey);
|
|
51
|
+
const isDismissing = gestureValues.isDismissing;
|
|
52
|
+
const claimedAncestors = [];
|
|
53
|
+
let ancestor = ancestorContext;
|
|
54
|
+
while (ancestor) {
|
|
55
|
+
if (ancestor.isIsolated !== isIsolated) break;
|
|
56
|
+
const shadowedDirections = [];
|
|
57
|
+
for (const dir of DIRECTIONS) {
|
|
58
|
+
if (claimedDirections[dir] && ancestor.claimedDirections?.[dir]) {
|
|
59
|
+
shadowedDirections.push(dir);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (shadowedDirections.length > 0) {
|
|
63
|
+
claimedAncestors.push({
|
|
64
|
+
ancestor,
|
|
65
|
+
directions: shadowedDirections
|
|
66
|
+
});
|
|
67
|
+
const newClaims = {
|
|
68
|
+
...ancestor.childDirectionClaims.value
|
|
69
|
+
};
|
|
70
|
+
for (const dir of shadowedDirections) {
|
|
71
|
+
newClaims[dir] = {
|
|
72
|
+
routeKey,
|
|
73
|
+
isDismissing
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
ancestor.childDirectionClaims.value = newClaims;
|
|
77
|
+
}
|
|
78
|
+
ancestor = ancestor.ancestorContext;
|
|
79
|
+
}
|
|
80
|
+
return () => {
|
|
81
|
+
for (const {
|
|
82
|
+
ancestor,
|
|
83
|
+
directions
|
|
84
|
+
} of claimedAncestors) {
|
|
85
|
+
const currentClaims = ancestor.childDirectionClaims.value;
|
|
86
|
+
const newClaims = {
|
|
87
|
+
...currentClaims
|
|
88
|
+
};
|
|
89
|
+
let needsUpdate = false;
|
|
90
|
+
for (const dir of directions) {
|
|
91
|
+
if (currentClaims[dir]?.routeKey === routeKey) {
|
|
92
|
+
newClaims[dir] = null;
|
|
93
|
+
needsUpdate = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (needsUpdate) {
|
|
97
|
+
ancestor.childDirectionClaims.value = newClaims;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}, [ancestorContext, claimedDirections, routeKey, isIsolated, isCurrentRoute]);
|
|
102
|
+
}
|
|
16
103
|
const {
|
|
17
104
|
ScreenGestureProvider,
|
|
18
105
|
useScreenGestureContext: useGestureContext
|
|
@@ -24,47 +111,48 @@ const {
|
|
|
24
111
|
const {
|
|
25
112
|
current
|
|
26
113
|
} = (0, _keys.useKeys)();
|
|
27
|
-
const ancestorContext = useGestureContext();
|
|
28
|
-
const scrollConfig = (0, _reactNativeReanimated.useSharedValue)(null);
|
|
29
114
|
const {
|
|
30
|
-
|
|
31
|
-
} = (0,
|
|
115
|
+
flags
|
|
116
|
+
} = (0, _core.useStackCoreContext)();
|
|
117
|
+
const ancestorContext = useGestureContext();
|
|
32
118
|
const hasGestures = current.options.gestureEnabled === true;
|
|
119
|
+
const isIsolated = flags.STACK_TYPE === _stack.StackType.COMPONENT;
|
|
120
|
+
const hasSnapPoints = Array.isArray(current.options.snapPoints) && current.options.snapPoints.length > 0;
|
|
121
|
+
const claimedDirections = (0, _react.useMemo)(() => (0, _computeClaimedDirections.computeClaimedDirections)(hasGestures, current.options.gestureDirection, hasSnapPoints), [hasGestures, current.options.gestureDirection, hasSnapPoints]);
|
|
122
|
+
const routeKey = current.route.key;
|
|
123
|
+
|
|
124
|
+
// Check if this screen is the current (topmost) route in its navigator
|
|
125
|
+
const isCurrentRoute = (0, _native.useNavigationState)(state => state.routes[state.index]?.key === routeKey);
|
|
126
|
+
const scrollConfig = (0, _reactNativeReanimated.useSharedValue)(null);
|
|
127
|
+
const childDirectionClaims = (0, _reactNativeReanimated.useSharedValue)(NO_CLAIMS);
|
|
128
|
+
useRegisterDirectionClaims(ancestorContext, claimedDirections, routeKey, isIsolated, isCurrentRoute);
|
|
33
129
|
const {
|
|
34
130
|
panGesture,
|
|
35
131
|
panGestureRef,
|
|
36
|
-
nativeGesture,
|
|
37
132
|
gestureAnimationValues
|
|
38
133
|
} = (0, _useBuildGestures.useBuildGestures)({
|
|
39
134
|
scrollConfig,
|
|
40
|
-
ancestorContext
|
|
135
|
+
ancestorContext,
|
|
136
|
+
claimedDirections,
|
|
137
|
+
childDirectionClaims,
|
|
138
|
+
isIsolated
|
|
41
139
|
});
|
|
42
140
|
const value = {
|
|
43
141
|
panGesture,
|
|
44
142
|
panGestureRef,
|
|
45
143
|
scrollConfig,
|
|
46
|
-
nativeGesture,
|
|
47
144
|
gestureAnimationValues,
|
|
48
145
|
ancestorContext,
|
|
49
|
-
gestureEnabled: hasGestures
|
|
146
|
+
gestureEnabled: hasGestures,
|
|
147
|
+
isIsolated,
|
|
148
|
+
claimedDirections,
|
|
149
|
+
childDirectionClaims
|
|
50
150
|
};
|
|
51
151
|
return {
|
|
52
152
|
value,
|
|
53
|
-
children
|
|
54
|
-
gesture: panGesture,
|
|
55
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
56
|
-
style: styles.container,
|
|
57
|
-
pointerEvents: pointerEvents,
|
|
58
|
-
children: children
|
|
59
|
-
})
|
|
60
|
-
})
|
|
153
|
+
children
|
|
61
154
|
};
|
|
62
155
|
});
|
|
63
156
|
exports.useGestureContext = useGestureContext;
|
|
64
157
|
exports.ScreenGestureProvider = ScreenGestureProvider;
|
|
65
|
-
const styles = _reactNative.StyleSheet.create({
|
|
66
|
-
container: {
|
|
67
|
-
flex: 1
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
158
|
//# sourceMappingURL=gestures.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_native","require","_react","_reactNativeReanimated","_useBuildGestures","_gesture","_stack","_createProvider","_interopRequireDefault","_computeClaimedDirections","_keys","_core","e","__esModule","default","NO_CLAIMS","vertical","horizontal","DIRECTIONS","useRegisterDirectionClaims","ancestorContext","claimedDirections","routeKey","isIsolated","isCurrentRoute","useEffect","gestureValues","GestureStore","getRouteGestures","isDismissing","claimedAncestors","ancestor","shadowedDirections","dir","push","length","directions","newClaims","childDirectionClaims","value","currentClaims","needsUpdate","ScreenGestureProvider","useScreenGestureContext","useGestureContext","createProvider","guarded","children","current","useKeys","flags","useStackCoreContext","hasGestures","options","gestureEnabled","STACK_TYPE","StackType","COMPONENT","hasSnapPoints","Array","isArray","snapPoints","useMemo","computeClaimedDirections","gestureDirection","route","key","useNavigationState","state","routes","index","scrollConfig","useSharedValue","panGesture","panGestureRef","gestureAnimationValues","useBuildGestures","exports"],"sourceRoot":"../../../../src","sources":["shared/providers/gestures.provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NO_OWNERSHIP = exports.NO_CLAIMS = exports.DIRECTIONS = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Gesture Ownership System Types
|
|
9
|
+
*
|
|
10
|
+
* Core principles:
|
|
11
|
+
* 1. Gestures dismiss stacks, not screens
|
|
12
|
+
* 2. Ownership is per-direction (4 independent directions)
|
|
13
|
+
* 3. Shadowing: child claiming same direction blocks parent
|
|
14
|
+
* 4. Inheritance: no local claim walks up tree to find owner
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The four independent gesture directions.
|
|
19
|
+
* Each direction is owned independently.
|
|
20
|
+
*
|
|
21
|
+
* Uses the same format as GestureDirection from gesture.types.ts
|
|
22
|
+
* (excluding 'bidirectional' which expands to all four).
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* All possible directions as an array for iteration.
|
|
27
|
+
*/
|
|
28
|
+
const DIRECTIONS = exports.DIRECTIONS = ["vertical", "vertical-inverted", "horizontal", "horizontal-inverted"];
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Map of which directions a screen claims ownership of.
|
|
32
|
+
* A screen claims a direction when:
|
|
33
|
+
* - gestureEnabled is true AND
|
|
34
|
+
* - gestureDirection includes that direction
|
|
35
|
+
*
|
|
36
|
+
* For snap points, both directions on the axis are claimed automatically.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Empty claims - used when gestureEnabled is false.
|
|
41
|
+
*/
|
|
42
|
+
const NO_CLAIMS = exports.NO_CLAIMS = {
|
|
43
|
+
vertical: false,
|
|
44
|
+
"vertical-inverted": false,
|
|
45
|
+
horizontal: false,
|
|
46
|
+
"horizontal-inverted": false
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Ownership status for a direction relative to the current screen.
|
|
51
|
+
*
|
|
52
|
+
* - 'self': Current screen owns this direction (should activate)
|
|
53
|
+
* - 'ancestor': An ancestor owns this direction (should fail to bubble up)
|
|
54
|
+
* - 'none': No one owns this direction (should fail, no gesture response)
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Map of ownership status for all four directions.
|
|
59
|
+
* Pre-computed during render for worklet access.
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Empty ownership - used when no gestures are configured anywhere.
|
|
64
|
+
*/
|
|
65
|
+
const NO_OWNERSHIP = exports.NO_OWNERSHIP = {
|
|
66
|
+
vertical: "none",
|
|
67
|
+
"vertical-inverted": "none",
|
|
68
|
+
horizontal: "none",
|
|
69
|
+
"horizontal-inverted": "none"
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=ownership.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DIRECTIONS","exports","NO_CLAIMS","vertical","horizontal","NO_OWNERSHIP"],"sourceRoot":"../../../../src","sources":["shared/types/ownership.types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACO,MAAMA,UAAuB,GAAAC,OAAA,CAAAD,UAAA,GAAG,CACtC,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,CACrB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAME,SAA4B,GAAAD,OAAA,CAAAC,SAAA,GAAG;EAC3CC,QAAQ,EAAE,KAAK;EACf,mBAAmB,EAAE,KAAK;EAC1BC,UAAU,EAAE,KAAK;EACjB,qBAAqB,EAAE;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAMC,YAAgC,GAAAJ,OAAA,CAAAI,YAAA,GAAG;EAC/CF,QAAQ,EAAE,MAAM;EAChB,mBAAmB,EAAE,MAAM;EAC3BC,UAAU,EAAE,MAAM;EAClB,qBAAqB,EAAE;AACxB,CAAC","ignoreList":[]}
|