@tamagui/sheet 2.0.0-1769233344020 → 2.0.0-1769288527117
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/dist/cjs/GestureDetectorWrapper.cjs +48 -0
- package/dist/cjs/GestureDetectorWrapper.js +29 -0
- package/dist/cjs/GestureDetectorWrapper.js.map +6 -0
- package/dist/cjs/GestureDetectorWrapper.native.js +53 -0
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/cjs/GestureSheetContext.cjs +52 -0
- package/dist/cjs/GestureSheetContext.js +43 -0
- package/dist/cjs/GestureSheetContext.js.map +6 -0
- package/dist/cjs/GestureSheetContext.native.js +56 -0
- package/dist/cjs/GestureSheetContext.native.js.map +1 -0
- package/dist/cjs/SheetImplementationCustom.cjs +85 -40
- package/dist/cjs/SheetImplementationCustom.js +81 -58
- package/dist/cjs/SheetImplementationCustom.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.native.js +105 -50
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/SheetScrollView.cjs +88 -17
- package/dist/cjs/SheetScrollView.js +85 -26
- package/dist/cjs/SheetScrollView.js.map +1 -1
- package/dist/cjs/SheetScrollView.native.js +102 -19
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +39 -0
- package/dist/cjs/gestureState.js +34 -0
- package/dist/cjs/gestureState.js.map +6 -0
- package/dist/cjs/gestureState.native.js +42 -0
- package/dist/cjs/gestureState.native.js.map +1 -0
- package/dist/cjs/setupGestureHandler.cjs +46 -0
- package/dist/cjs/setupGestureHandler.js +38 -0
- package/dist/cjs/setupGestureHandler.js.map +6 -0
- package/dist/cjs/setupGestureHandler.native.js +50 -0
- package/dist/cjs/setupGestureHandler.native.js.map +1 -0
- package/dist/cjs/useGestureHandlerPan.cjs +126 -0
- package/dist/cjs/useGestureHandlerPan.js +117 -0
- package/dist/cjs/useGestureHandlerPan.js.map +6 -0
- package/dist/cjs/useGestureHandlerPan.native.js +135 -0
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.js +15 -0
- package/dist/esm/GestureDetectorWrapper.js.map +6 -0
- package/dist/esm/GestureDetectorWrapper.mjs +25 -0
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/esm/GestureDetectorWrapper.native.js +27 -0
- package/dist/esm/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/esm/GestureSheetContext.js +28 -0
- package/dist/esm/GestureSheetContext.js.map +6 -0
- package/dist/esm/GestureSheetContext.mjs +28 -0
- package/dist/esm/GestureSheetContext.mjs.map +1 -0
- package/dist/esm/GestureSheetContext.native.js +29 -0
- package/dist/esm/GestureSheetContext.native.js.map +1 -0
- package/dist/esm/SheetImplementationCustom.js +83 -57
- package/dist/esm/SheetImplementationCustom.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs +85 -40
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js +105 -50
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/SheetScrollView.js +87 -26
- package/dist/esm/SheetScrollView.js.map +1 -1
- package/dist/esm/SheetScrollView.mjs +89 -18
- package/dist/esm/SheetScrollView.mjs.map +1 -1
- package/dist/esm/SheetScrollView.native.js +103 -20
- package/dist/esm/SheetScrollView.native.js.map +1 -1
- package/dist/esm/gestureState.js +18 -0
- package/dist/esm/gestureState.js.map +6 -0
- package/dist/esm/gestureState.mjs +13 -0
- package/dist/esm/gestureState.mjs.map +1 -0
- package/dist/esm/gestureState.native.js +13 -0
- package/dist/esm/gestureState.native.js.map +1 -0
- package/dist/esm/setupGestureHandler.js +22 -0
- package/dist/esm/setupGestureHandler.js.map +6 -0
- package/dist/esm/setupGestureHandler.mjs +22 -0
- package/dist/esm/setupGestureHandler.mjs.map +1 -0
- package/dist/esm/setupGestureHandler.native.js +23 -0
- package/dist/esm/setupGestureHandler.native.js.map +1 -0
- package/dist/esm/useGestureHandlerPan.js +102 -0
- package/dist/esm/useGestureHandlerPan.js.map +6 -0
- package/dist/esm/useGestureHandlerPan.mjs +103 -0
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
- package/dist/esm/useGestureHandlerPan.native.js +109 -0
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.js +15 -0
- package/dist/jsx/GestureDetectorWrapper.js.map +6 -0
- package/dist/jsx/GestureDetectorWrapper.mjs +25 -0
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.native.js +53 -0
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/jsx/GestureSheetContext.js +28 -0
- package/dist/jsx/GestureSheetContext.js.map +6 -0
- package/dist/jsx/GestureSheetContext.mjs +28 -0
- package/dist/jsx/GestureSheetContext.mjs.map +1 -0
- package/dist/jsx/GestureSheetContext.native.js +56 -0
- package/dist/jsx/GestureSheetContext.native.js.map +1 -0
- package/dist/jsx/SheetImplementationCustom.js +83 -57
- package/dist/jsx/SheetImplementationCustom.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +85 -40
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.js +105 -50
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/SheetScrollView.js +87 -26
- package/dist/jsx/SheetScrollView.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +89 -18
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.native.js +102 -19
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/gestureState.js +18 -0
- package/dist/jsx/gestureState.js.map +6 -0
- package/dist/jsx/gestureState.mjs +13 -0
- package/dist/jsx/gestureState.mjs.map +1 -0
- package/dist/jsx/gestureState.native.js +42 -0
- package/dist/jsx/gestureState.native.js.map +1 -0
- package/dist/jsx/setupGestureHandler.js +22 -0
- package/dist/jsx/setupGestureHandler.js.map +6 -0
- package/dist/jsx/setupGestureHandler.mjs +22 -0
- package/dist/jsx/setupGestureHandler.mjs.map +1 -0
- package/dist/jsx/setupGestureHandler.native.js +50 -0
- package/dist/jsx/setupGestureHandler.native.js.map +1 -0
- package/dist/jsx/useGestureHandlerPan.js +102 -0
- package/dist/jsx/useGestureHandlerPan.js.map +6 -0
- package/dist/jsx/useGestureHandlerPan.mjs +103 -0
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
- package/dist/jsx/useGestureHandlerPan.native.js +135 -0
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -0
- package/package.json +48 -21
- package/src/GestureDetectorWrapper.tsx +41 -0
- package/src/GestureSheetContext.tsx +62 -0
- package/src/SheetImplementationCustom.tsx +124 -57
- package/src/SheetScrollView.tsx +169 -20
- package/src/gestureState.ts +24 -0
- package/src/setupGestureHandler.ts +34 -0
- package/src/types.tsx +15 -0
- package/src/useGestureHandlerPan.tsx +312 -0
- package/types/GestureDetectorWrapper.d.ts +14 -0
- package/types/GestureDetectorWrapper.d.ts.map +1 -0
- package/types/GestureDetectorWrapper.native.d.ts +14 -0
- package/types/GestureSheetContext.d.ts +36 -0
- package/types/GestureSheetContext.d.ts.map +1 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts.map +1 -1
- package/types/gestureState.d.ts +11 -0
- package/types/gestureState.d.ts.map +1 -0
- package/types/gestureState.native.d.ts +12 -0
- package/types/setupGestureHandler.d.ts +11 -0
- package/types/setupGestureHandler.d.ts.map +1 -0
- package/types/setupGestureHandler.native.d.ts +41 -0
- package/types/types.d.ts +8 -0
- package/types/types.d.ts.map +1 -1
- package/types/useGestureHandlerPan.d.ts +43 -0
- package/types/useGestureHandlerPan.d.ts.map +1 -0
- package/types/useGestureHandlerPan.native.d.ts +33 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: !0
|
|
22
|
+
}), mod);
|
|
23
|
+
var setupGestureHandler_exports = {};
|
|
24
|
+
__export(setupGestureHandler_exports, {
|
|
25
|
+
isGestureHandlerEnabled: () => isGestureHandlerEnabled,
|
|
26
|
+
setupGestureHandler: () => setupGestureHandler
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(setupGestureHandler_exports);
|
|
29
|
+
var import_native = require("@tamagui/native");
|
|
30
|
+
function isGestureHandlerEnabled() {
|
|
31
|
+
return (0, import_native.getGestureHandler)().isEnabled;
|
|
32
|
+
}
|
|
33
|
+
function setupGestureHandler(config) {
|
|
34
|
+
var g = globalThis;
|
|
35
|
+
if (!g.__tamagui_sheet_gesture_handler_setup) {
|
|
36
|
+
g.__tamagui_sheet_gesture_handler_setup = !0;
|
|
37
|
+
var {
|
|
38
|
+
Gesture,
|
|
39
|
+
GestureDetector,
|
|
40
|
+
ScrollView
|
|
41
|
+
} = config;
|
|
42
|
+
Gesture && GestureDetector && (0, import_native.getGestureHandler)().set({
|
|
43
|
+
enabled: !0,
|
|
44
|
+
Gesture,
|
|
45
|
+
GestureDetector,
|
|
46
|
+
ScrollView: ScrollView || null
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=setupGestureHandler.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","setupGestureHandler_exports"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,YAAS;;AAEF,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAmC;AACjD,IAAAC,gBAAO,GAAAF,MAAoB,CAAAG,wBAAA;AAC7B,IAAAC,iBAAA,GAAAJ,MAAA,CAAAK,mBAAA;AAQO,IAAAC,YAAS,GAAAN,MAAA,CAAAO,SAAoB,CAAAC,cAAyC;AAC3E,IAAAC,QAAU,GAAAA,CAAAC,MAAA,EAAAC,GAAA;IACV,KAAI,IAAEC,IAAA,IAAAD,GAAA,EACJZ,SAAA,CAAAW,MAAA,EAAAE,IAAA;MAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;MAAAE,UAAA;IAAA;EAEF;EAAAC,WAAE,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA,KAAwC;IAE1C,IAAAF,IAAQ,WAASA,IAAA,YAAiB,WAAWA,IAAI,gBAE7C,SAAWG,GAAA,IAAAhB,iBACb,CAAAa,IAAA,GACE,CAAAX,YAAS,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,IAAAnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;IAAA,OACTE,EAAA;EAAA;AACA,IACAM,YAAY,GAAAC,GAAA,IAAAR,WAAc,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AAAA,IAC3BE,2BAAA;AAELhB,QAAA,CAAAgB,2BAAA","ignoreList":[]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
2
|
+
import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState";
|
|
3
|
+
const AT_TOP_THRESHOLD = 5;
|
|
4
|
+
function useGestureHandlerPan(config) {
|
|
5
|
+
const {
|
|
6
|
+
positions,
|
|
7
|
+
frameSize,
|
|
8
|
+
setPosition,
|
|
9
|
+
animateTo,
|
|
10
|
+
stopSpring,
|
|
11
|
+
scrollBridge,
|
|
12
|
+
setIsDragging,
|
|
13
|
+
getCurrentPosition,
|
|
14
|
+
resisted,
|
|
15
|
+
disableDrag,
|
|
16
|
+
isShowingInnerSheet,
|
|
17
|
+
setAnimatedPosition,
|
|
18
|
+
scrollGestureRef
|
|
19
|
+
} = config, gestureHandlerEnabled = isGestureHandlerEnabled(), panGestureRef = useRef(null), gestureStateRef = useRef({
|
|
20
|
+
startY: 0,
|
|
21
|
+
// track last translation when pan was active (for position calculation after handoff)
|
|
22
|
+
lastPanTranslationY: 0,
|
|
23
|
+
// accumulated position offset from all pan movements
|
|
24
|
+
accumulatedOffset: 0,
|
|
25
|
+
// track previous translation for direction detection (like actions-sheet)
|
|
26
|
+
prevTranslationY: 0,
|
|
27
|
+
// track if scroll was engaged (scrollY > 0) at some point
|
|
28
|
+
scrollEngaged: !1
|
|
29
|
+
}), onStart = useCallback(() => {
|
|
30
|
+
stopSpring(), setIsDragging(!0);
|
|
31
|
+
}, [stopSpring, setIsDragging]), onEnd = useCallback(
|
|
32
|
+
(closestPoint) => {
|
|
33
|
+
setIsDragging(!1), scrollBridge.setParentDragging(!1), scrollBridge.setScrollEnabled?.(!0), setPosition(closestPoint), animateTo(closestPoint);
|
|
34
|
+
},
|
|
35
|
+
[setIsDragging, scrollBridge, setPosition, animateTo]
|
|
36
|
+
);
|
|
37
|
+
return {
|
|
38
|
+
panGesture: useMemo(() => {
|
|
39
|
+
if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize)
|
|
40
|
+
return null;
|
|
41
|
+
const { Gesture } = getGestureHandlerState();
|
|
42
|
+
if (!Gesture)
|
|
43
|
+
return null;
|
|
44
|
+
const minY = positions[0], gs = gestureStateRef.current, gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(() => {
|
|
45
|
+
const pos = getCurrentPosition(), atTop = pos <= minY + AT_TOP_THRESHOLD, currentScrollY = scrollBridge.y;
|
|
46
|
+
gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, atTop || scrollBridge.setScrollEnabled?.(!1, 0);
|
|
47
|
+
}).onStart(() => {
|
|
48
|
+
scrollBridge.initialPosition = gs.startY, onStart();
|
|
49
|
+
}).onChange((event) => {
|
|
50
|
+
const { translationY } = event, isSwipingDown = gs.prevTranslationY < translationY, deltaY = translationY - gs.prevTranslationY;
|
|
51
|
+
gs.prevTranslationY = translationY;
|
|
52
|
+
const scrollY = scrollBridge.y;
|
|
53
|
+
scrollY > 0 && (gs.scrollEngaged = !0);
|
|
54
|
+
const isCurrentlyAtTop = gs.startY + gs.accumulatedOffset <= minY + AT_TOP_THRESHOLD, nodeIsScrolling = scrollY > 0;
|
|
55
|
+
let panHandles = !1;
|
|
56
|
+
const hasScrollableContent = scrollBridge.hasScrollableContent !== !1;
|
|
57
|
+
if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling && hasScrollableContent ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : hasScrollableContent ? panHandles = !1 : panHandles = !0 : isSwipingDown ? panHandles = !nodeIsScrolling || !hasScrollableContent : panHandles = !0, panHandles) {
|
|
58
|
+
const lockTo = isCurrentlyAtTop ? void 0 : 0;
|
|
59
|
+
scrollBridge.setScrollEnabled?.(!1, lockTo), gs.accumulatedOffset += deltaY;
|
|
60
|
+
const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
61
|
+
scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
|
|
62
|
+
} else
|
|
63
|
+
scrollBridge.setScrollEnabled?.(!0);
|
|
64
|
+
}).onEnd((event) => {
|
|
65
|
+
const { velocityY } = event, currentPos = gs.startY + gs.accumulatedOffset;
|
|
66
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
67
|
+
onEnd(0);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
71
|
+
let closestPoint = 0, minDist = Number.POSITIVE_INFINITY;
|
|
72
|
+
for (let i = 0; i < positions.length; i++) {
|
|
73
|
+
const pos = positions[i], dist = Math.abs(projectedEnd - pos);
|
|
74
|
+
dist < minDist && (minDist = dist, closestPoint = i);
|
|
75
|
+
}
|
|
76
|
+
onEnd(closestPoint);
|
|
77
|
+
}).onFinalize(() => {
|
|
78
|
+
scrollBridge.scrollLockY = void 0;
|
|
79
|
+
}).runOnJS(!0);
|
|
80
|
+
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
81
|
+
}, [
|
|
82
|
+
gestureHandlerEnabled,
|
|
83
|
+
disableDrag,
|
|
84
|
+
isShowingInnerSheet,
|
|
85
|
+
frameSize,
|
|
86
|
+
positions,
|
|
87
|
+
scrollBridge,
|
|
88
|
+
getCurrentPosition,
|
|
89
|
+
resisted,
|
|
90
|
+
onStart,
|
|
91
|
+
onEnd,
|
|
92
|
+
setIsDragging,
|
|
93
|
+
setAnimatedPosition
|
|
94
|
+
]),
|
|
95
|
+
panGestureRef,
|
|
96
|
+
gestureHandlerEnabled
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export {
|
|
100
|
+
useGestureHandlerPan
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=useGestureHandlerPan.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useGestureHandlerPan.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
2
|
+
import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
|
|
3
|
+
const AT_TOP_THRESHOLD = 5;
|
|
4
|
+
function useGestureHandlerPan(config) {
|
|
5
|
+
const {
|
|
6
|
+
positions,
|
|
7
|
+
frameSize,
|
|
8
|
+
setPosition,
|
|
9
|
+
animateTo,
|
|
10
|
+
stopSpring,
|
|
11
|
+
scrollBridge,
|
|
12
|
+
setIsDragging,
|
|
13
|
+
getCurrentPosition,
|
|
14
|
+
resisted,
|
|
15
|
+
disableDrag,
|
|
16
|
+
isShowingInnerSheet,
|
|
17
|
+
setAnimatedPosition,
|
|
18
|
+
scrollGestureRef
|
|
19
|
+
} = config,
|
|
20
|
+
gestureHandlerEnabled = isGestureHandlerEnabled(),
|
|
21
|
+
panGestureRef = useRef(null),
|
|
22
|
+
gestureStateRef = useRef({
|
|
23
|
+
startY: 0,
|
|
24
|
+
// track last translation when pan was active (for position calculation after handoff)
|
|
25
|
+
lastPanTranslationY: 0,
|
|
26
|
+
// accumulated position offset from all pan movements
|
|
27
|
+
accumulatedOffset: 0,
|
|
28
|
+
// track previous translation for direction detection (like actions-sheet)
|
|
29
|
+
prevTranslationY: 0,
|
|
30
|
+
// track if scroll was engaged (scrollY > 0) at some point
|
|
31
|
+
scrollEngaged: !1
|
|
32
|
+
}),
|
|
33
|
+
onStart = useCallback(() => {
|
|
34
|
+
stopSpring(), setIsDragging(!0);
|
|
35
|
+
}, [stopSpring, setIsDragging]),
|
|
36
|
+
onEnd = useCallback(closestPoint => {
|
|
37
|
+
setIsDragging(!1), scrollBridge.setParentDragging(!1), scrollBridge.setScrollEnabled?.(!0), setPosition(closestPoint), animateTo(closestPoint);
|
|
38
|
+
}, [setIsDragging, scrollBridge, setPosition, animateTo]);
|
|
39
|
+
return {
|
|
40
|
+
panGesture: useMemo(() => {
|
|
41
|
+
if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) return null;
|
|
42
|
+
const {
|
|
43
|
+
Gesture
|
|
44
|
+
} = getGestureHandlerState();
|
|
45
|
+
if (!Gesture) return null;
|
|
46
|
+
const minY = positions[0],
|
|
47
|
+
gs = gestureStateRef.current,
|
|
48
|
+
gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(() => {
|
|
49
|
+
const pos = getCurrentPosition(),
|
|
50
|
+
atTop = pos <= minY + AT_TOP_THRESHOLD,
|
|
51
|
+
currentScrollY = scrollBridge.y;
|
|
52
|
+
gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, atTop || scrollBridge.setScrollEnabled?.(!1, 0);
|
|
53
|
+
}).onStart(() => {
|
|
54
|
+
scrollBridge.initialPosition = gs.startY, onStart();
|
|
55
|
+
}).onChange(event => {
|
|
56
|
+
const {
|
|
57
|
+
translationY
|
|
58
|
+
} = event,
|
|
59
|
+
isSwipingDown = gs.prevTranslationY < translationY,
|
|
60
|
+
deltaY = translationY - gs.prevTranslationY;
|
|
61
|
+
gs.prevTranslationY = translationY;
|
|
62
|
+
const scrollY = scrollBridge.y;
|
|
63
|
+
scrollY > 0 && (gs.scrollEngaged = !0);
|
|
64
|
+
const isCurrentlyAtTop = gs.startY + gs.accumulatedOffset <= minY + AT_TOP_THRESHOLD,
|
|
65
|
+
nodeIsScrolling = scrollY > 0;
|
|
66
|
+
let panHandles = !1;
|
|
67
|
+
const hasScrollableContent = scrollBridge.hasScrollableContent !== !1;
|
|
68
|
+
if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling && hasScrollableContent ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : hasScrollableContent ? panHandles = !1 : panHandles = !0 : isSwipingDown ? panHandles = !nodeIsScrolling || !hasScrollableContent : panHandles = !0, panHandles) {
|
|
69
|
+
const lockTo = isCurrentlyAtTop ? void 0 : 0;
|
|
70
|
+
scrollBridge.setScrollEnabled?.(!1, lockTo), gs.accumulatedOffset += deltaY;
|
|
71
|
+
const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
72
|
+
scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
|
|
73
|
+
} else scrollBridge.setScrollEnabled?.(!0);
|
|
74
|
+
}).onEnd(event => {
|
|
75
|
+
const {
|
|
76
|
+
velocityY
|
|
77
|
+
} = event,
|
|
78
|
+
currentPos = gs.startY + gs.accumulatedOffset;
|
|
79
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
80
|
+
onEnd(0);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const velocity = velocityY / 1e3,
|
|
84
|
+
projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
85
|
+
let closestPoint = 0,
|
|
86
|
+
minDist = Number.POSITIVE_INFINITY;
|
|
87
|
+
for (let i = 0; i < positions.length; i++) {
|
|
88
|
+
const pos = positions[i],
|
|
89
|
+
dist = Math.abs(projectedEnd - pos);
|
|
90
|
+
dist < minDist && (minDist = dist, closestPoint = i);
|
|
91
|
+
}
|
|
92
|
+
onEnd(closestPoint);
|
|
93
|
+
}).onFinalize(() => {
|
|
94
|
+
scrollBridge.scrollLockY = void 0;
|
|
95
|
+
}).runOnJS(!0);
|
|
96
|
+
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
97
|
+
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]),
|
|
98
|
+
panGestureRef,
|
|
99
|
+
gestureHandlerEnabled
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export { useGestureHandlerPan };
|
|
103
|
+
//# sourceMappingURL=useGestureHandlerPan.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useMemo","useRef","getGestureHandlerState","isGestureHandlerEnabled","AT_TOP_THRESHOLD","useGestureHandlerPan","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","panGestureRef","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","onStart","onEnd","closestPoint","setParentDragging","setScrollEnabled","panGesture","Gesture","minY","gs","current","gesture","Pan","withRef","failOffsetX","shouldCancelWhenOutside","onBegin","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","lockTo","newPosition","paneY","velocityY","currentPos","scrollLockY","velocity","projectedEnd","minDist","Number","POSITIVE_INFINITY","i","length","dist","Math","abs","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,EAAaC,OAAA,EAASC,MAAA,QAA8B;AAC7D,SAASC,sBAAA,EAAwBC,uBAAA,QAA+B;AAKhE,MAAMC,gBAAA,GAAmB;AA4ClB,SAASC,qBAAqBC,MAAA,EAA4C;EAC/E,MAAM;MACJC,SAAA;MACAC,SAAA;MACAC,WAAA;MACAC,SAAA;MACAC,UAAA;MACAC,YAAA;MACAC,aAAA;MACAC,kBAAA;MACAC,QAAA;MACAC,WAAA;MACAC,mBAAA;MACAC,mBAAA;MACAC;IACF,IAAIb,MAAA;IAEEc,qBAAA,GAAwBjB,uBAAA,CAAwB;IAChDkB,aAAA,GAAgBpB,MAAA,CAAY,IAAI;IAIhCqB,eAAA,GAAkBrB,MAAA,CAAO;MAC7BsB,MAAA,EAAQ;MAAA;MAERC,mBAAA,EAAqB;MAAA;MAErBC,iBAAA,EAAmB;MAAA;MAEnBC,gBAAA,EAAkB;MAAA;MAElBC,aAAA,EAAe;IACjB,CAAC;IAEKC,OAAA,GAAU7B,WAAA,CAAY,MAAM;MAChCY,UAAA,CAAW,GACXE,aAAA,CAAc,EAAI;IACpB,GAAG,CAACF,UAAA,EAAYE,aAAa,CAAC;IAExBgB,KAAA,GAAQ9B,WAAA,CACX+B,YAAA,IAAyB;MACxBjB,aAAA,CAAc,EAAK,GACnBD,YAAA,CAAamB,iBAAA,CAAkB,EAAK,GAEpCnB,YAAA,CAAaoB,gBAAA,GAAmB,EAAI,GACpCvB,WAAA,CAAYqB,YAAY,GACxBpB,SAAA,CAAUoB,YAAY;IACxB,GACA,CAACjB,aAAA,EAAeD,YAAA,EAAcH,WAAA,EAAaC,SAAS,CACtD;EA+MA,OAAO;IACLuB,UAAA,EA9MiBjC,OAAA,CAAQ,MAAM;MAE/B,IAAI,CAACoB,qBAAA,IAAyBJ,WAAA,IAAeC,mBAAA,IAAuB,CAACT,SAAA,EACnE,OAAO;MAGT,MAAM;QAAE0B;MAAQ,IAAIhC,sBAAA,CAAuB;MAC3C,IAAI,CAACgC,OAAA,EACH,OAAO;MAGT,MAAMC,IAAA,GAAO5B,SAAA,CAAU,CAAC;QAClB6B,EAAA,GAAKd,eAAA,CAAgBe,OAAA;QAKrBC,OAAA,GAAUJ,OAAA,CAAQK,GAAA,CAAI,EACzBC,OAAA,CAAQnB,aAAa,EAErBoB,WAAA,CAAY,CAAC,KAAK,EAAE,CAAC,EACrBC,uBAAA,CAAwB,EAAK,EAC7BC,OAAA,CAAQ,MAAM;UAEb,MAAMC,GAAA,GAAM9B,kBAAA,CAAmB;YACzB+B,KAAA,GAAQD,GAAA,IAAOT,IAAA,GAAO/B,gBAAA;YACtB0C,cAAA,GAAiBlC,YAAA,CAAamC,CAAA;UAEpCX,EAAA,CAAGb,MAAA,GAASqB,GAAA,EACZR,EAAA,CAAGZ,mBAAA,GAAsB,GACzBY,EAAA,CAAGX,iBAAA,GAAoB,GACvBW,EAAA,CAAGV,gBAAA,GAAmB,GACtBU,EAAA,CAAGT,aAAA,GAAgBmB,cAAA,GAAiB,GAI/BD,KAAA,IACHjC,YAAA,CAAaoB,gBAAA,GAAmB,IAAO,CAAC;QAE5C,CAAC,EACAJ,OAAA,CAAQ,MAAM;UAEbhB,YAAA,CAAaoC,eAAA,GAAkBZ,EAAA,CAAGb,MAAA,EAClCK,OAAA,CAAQ;QACV,CAAC,EACAqB,QAAA,CAAUC,KAAA,IAAuD;UAChE,MAAM;cAAEC;YAAa,IAAID,KAAA;YAInBE,aAAA,GAAgBhB,EAAA,CAAGV,gBAAA,GAAmByB,YAAA;YACtCE,MAAA,GAASF,YAAA,GAAef,EAAA,CAAGV,gBAAA;UACjCU,EAAA,CAAGV,gBAAA,GAAmByB,YAAA;UAEtB,MAAMG,OAAA,GAAU1C,YAAA,CAAamC,CAAA;UAEzBO,OAAA,GAAU,MACZlB,EAAA,CAAGT,aAAA,GAAgB;UAKrB,MAAM4B,gBAAA,GADanB,EAAA,CAAGb,MAAA,GAASa,EAAA,CAAGX,iBAAA,IACKU,IAAA,GAAO/B,gBAAA;YACxCoD,eAAA,GAAkBF,OAAA,GAAU;UASlC,IAAIG,UAAA,GAAa;UAIjB,MAAMC,oBAAA,GAAuB9C,YAAA,CAAa8C,oBAAA,KAAyB;UA6CnE,IA3CKH,gBAAA,GAaCH,aAAA,GAEEI,eAAA,IAAmBE,oBAAA,GAErBD,UAAA,GAAa,MACJrB,EAAA,CAAGT,aAAA,EAIZ8B,UAAA,GAAa,MASXC,oBAAA,GAEFD,UAAA,GAAa,KAGbA,UAAA,GAAa,KAlCbL,aAAA,GAIFK,UAAA,GAAa,CAACD,eAAA,IAAmB,CAACE,oBAAA,GAGlCD,UAAA,GAAa,IAkCbA,UAAA,EAAY;YAId,MAAME,MAAA,GAASJ,gBAAA,GAAmB,SAAY;YAC9C3C,YAAA,CAAaoB,gBAAA,GAAmB,IAAO2B,MAAM,GAG7CvB,EAAA,CAAGX,iBAAA,IAAqB4B,MAAA;YACxB,MAAMO,WAAA,GAAc7C,QAAA,CAASqB,EAAA,CAAGb,MAAA,GAASa,EAAA,CAAGX,iBAAA,EAAmBU,IAAI;YAGnEvB,YAAA,CAAaiD,KAAA,GAAQD,WAAA,EACrB1C,mBAAA,CAAoB0C,WAAW,GAC/BhD,YAAA,CAAamB,iBAAA,CAAkB6B,WAAA,GAAczB,IAAI;UACnD,OAEEvB,YAAA,CAAaoB,gBAAA,GAAmB,EAAI;QAGxC,CAAC,EACAH,KAAA,CAAOqB,KAAA,IAAiC;UACvC,MAAM;cAAEY;YAAU,IAAIZ,KAAA;YAChBa,UAAA,GAAa3B,EAAA,CAAGb,MAAA,GAASa,EAAA,CAAGX,iBAAA;UAQlC,IAHAb,YAAA,CAAaoD,WAAA,GAAc,QAGvBD,UAAA,IAAc5B,IAAA,GAAO/B,gBAAA,IAAoBQ,YAAA,CAAamC,CAAA,GAAI,GAAG;YAC/DlB,KAAA,CAAM,CAAC;YACP;UACF;UAGA,MAAMoC,QAAA,GAAWH,SAAA,GAAY;YACvBI,YAAA,GAAeH,UAAA,GAAavD,SAAA,GAAYyD,QAAA,GAAW;UAEzD,IAAInC,YAAA,GAAe;YACfqC,OAAA,GAAUC,MAAA,CAAOC,iBAAA;UAErB,SAASC,CAAA,GAAI,GAAGA,CAAA,GAAI/D,SAAA,CAAUgE,MAAA,EAAQD,CAAA,IAAK;YACzC,MAAM1B,GAAA,GAAMrC,SAAA,CAAU+D,CAAC;cACjBE,IAAA,GAAOC,IAAA,CAAKC,GAAA,CAAIR,YAAA,GAAetB,GAAG;YACpC4B,IAAA,GAAOL,OAAA,KACTA,OAAA,GAAUK,IAAA,EACV1C,YAAA,GAAewC,CAAA;UAEnB;UAEAzC,KAAA,CAAMC,YAAY;QACpB,CAAC,EACA6C,UAAA,CAAW,MAAM;UAGhB/D,YAAA,CAAaoD,WAAA,GAAc;QAC7B,CAAC,EACAY,OAAA,CAAQ,EAAI;MAIf,OAAIzD,gBAAA,EAAkBkB,OAAA,GAEbC,OAAA,CAAQuC,+BAAA,CAAgC1D,gBAAA,CAAiBkB,OAAO,IAGlEC,OAAA;IACT,GAAG,CACDlB,qBAAA,EACAJ,WAAA,EACAC,mBAAA,EACAT,SAAA,EACAD,SAAA,EACAK,YAAA,EACAE,kBAAA,EACAC,QAAA,EACAa,OAAA,EACAC,KAAA,EACAhB,aAAA,EACAK,mBAAA,CACD;IAICG,aAAA;IACAD;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: !0
|
|
22
|
+
}), mod);
|
|
23
|
+
var useGestureHandlerPan_exports = {};
|
|
24
|
+
__export(useGestureHandlerPan_exports, {
|
|
25
|
+
useGestureHandlerPan: () => useGestureHandlerPan
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(useGestureHandlerPan_exports);
|
|
28
|
+
var import_react = require("react"),
|
|
29
|
+
import_gestureState = require("./gestureState.native.js"),
|
|
30
|
+
AT_TOP_THRESHOLD = 5;
|
|
31
|
+
function useGestureHandlerPan(config) {
|
|
32
|
+
var {
|
|
33
|
+
positions,
|
|
34
|
+
frameSize,
|
|
35
|
+
setPosition,
|
|
36
|
+
animateTo,
|
|
37
|
+
stopSpring,
|
|
38
|
+
scrollBridge,
|
|
39
|
+
setIsDragging,
|
|
40
|
+
getCurrentPosition,
|
|
41
|
+
resisted,
|
|
42
|
+
disableDrag,
|
|
43
|
+
isShowingInnerSheet,
|
|
44
|
+
setAnimatedPosition,
|
|
45
|
+
scrollGestureRef
|
|
46
|
+
} = config,
|
|
47
|
+
gestureHandlerEnabled = (0, import_gestureState.isGestureHandlerEnabled)(),
|
|
48
|
+
panGestureRef = (0, import_react.useRef)(null),
|
|
49
|
+
gestureStateRef = (0, import_react.useRef)({
|
|
50
|
+
startY: 0,
|
|
51
|
+
// track last translation when pan was active (for position calculation after handoff)
|
|
52
|
+
lastPanTranslationY: 0,
|
|
53
|
+
// accumulated position offset from all pan movements
|
|
54
|
+
accumulatedOffset: 0,
|
|
55
|
+
// track previous translation for direction detection (like actions-sheet)
|
|
56
|
+
prevTranslationY: 0,
|
|
57
|
+
// track if scroll was engaged (scrollY > 0) at some point
|
|
58
|
+
scrollEngaged: !1
|
|
59
|
+
}),
|
|
60
|
+
onStart = (0, import_react.useCallback)(function () {
|
|
61
|
+
stopSpring(), setIsDragging(!0);
|
|
62
|
+
}, [stopSpring, setIsDragging]),
|
|
63
|
+
onEnd = (0, import_react.useCallback)(function (closestPoint) {
|
|
64
|
+
var _scrollBridge_setScrollEnabled;
|
|
65
|
+
setIsDragging(!1), scrollBridge.setParentDragging(!1), (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0), setPosition(closestPoint), animateTo(closestPoint);
|
|
66
|
+
}, [setIsDragging, scrollBridge, setPosition, animateTo]),
|
|
67
|
+
panGesture = (0, import_react.useMemo)(function () {
|
|
68
|
+
if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) return null;
|
|
69
|
+
var {
|
|
70
|
+
Gesture
|
|
71
|
+
} = (0, import_gestureState.getGestureHandlerState)();
|
|
72
|
+
if (!Gesture) return null;
|
|
73
|
+
var minY = positions[0],
|
|
74
|
+
gs = gestureStateRef.current,
|
|
75
|
+
gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(function () {
|
|
76
|
+
var pos = getCurrentPosition(),
|
|
77
|
+
atTop = pos <= minY + AT_TOP_THRESHOLD,
|
|
78
|
+
currentScrollY = scrollBridge.y;
|
|
79
|
+
if (gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, !atTop) {
|
|
80
|
+
var _scrollBridge_setScrollEnabled;
|
|
81
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !1, 0);
|
|
82
|
+
}
|
|
83
|
+
}).onStart(function () {
|
|
84
|
+
scrollBridge.initialPosition = gs.startY, onStart();
|
|
85
|
+
}).onChange(function (event) {
|
|
86
|
+
var {
|
|
87
|
+
translationY
|
|
88
|
+
} = event,
|
|
89
|
+
isSwipingDown = gs.prevTranslationY < translationY,
|
|
90
|
+
deltaY = translationY - gs.prevTranslationY;
|
|
91
|
+
gs.prevTranslationY = translationY;
|
|
92
|
+
var scrollY = scrollBridge.y;
|
|
93
|
+
scrollY > 0 && (gs.scrollEngaged = !0);
|
|
94
|
+
var currentPos = gs.startY + gs.accumulatedOffset,
|
|
95
|
+
isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD,
|
|
96
|
+
nodeIsScrolling = scrollY > 0,
|
|
97
|
+
panHandles = !1,
|
|
98
|
+
hasScrollableContent = scrollBridge.hasScrollableContent !== !1;
|
|
99
|
+
if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling && hasScrollableContent ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : hasScrollableContent ? panHandles = !1 : panHandles = !0 : isSwipingDown ? panHandles = !nodeIsScrolling || !hasScrollableContent : panHandles = !0, panHandles) {
|
|
100
|
+
var _scrollBridge_setScrollEnabled,
|
|
101
|
+
lockTo = isCurrentlyAtTop ? void 0 : 0;
|
|
102
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !1, lockTo), gs.accumulatedOffset += deltaY;
|
|
103
|
+
var newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
104
|
+
scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
|
|
105
|
+
} else {
|
|
106
|
+
var _scrollBridge_setScrollEnabled1;
|
|
107
|
+
(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !0);
|
|
108
|
+
}
|
|
109
|
+
}).onEnd(function (event) {
|
|
110
|
+
var {
|
|
111
|
+
velocityY
|
|
112
|
+
} = event,
|
|
113
|
+
currentPos = gs.startY + gs.accumulatedOffset;
|
|
114
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
115
|
+
onEnd(0);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
for (var velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2, closestPoint = 0, minDist = Number.POSITIVE_INFINITY, i = 0; i < positions.length; i++) {
|
|
119
|
+
var pos = positions[i],
|
|
120
|
+
dist = Math.abs(projectedEnd - pos);
|
|
121
|
+
dist < minDist && (minDist = dist, closestPoint = i);
|
|
122
|
+
}
|
|
123
|
+
onEnd(closestPoint);
|
|
124
|
+
}).onFinalize(function () {
|
|
125
|
+
scrollBridge.scrollLockY = void 0;
|
|
126
|
+
}).runOnJS(!0);
|
|
127
|
+
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
128
|
+
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]);
|
|
129
|
+
return {
|
|
130
|
+
panGesture,
|
|
131
|
+
panGestureRef,
|
|
132
|
+
gestureHandlerEnabled
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=useGestureHandlerPan.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useGestureHandlerPan_exports","useGestureHandlerPan","module","exports","import_react","require","import_gestureState","AT_TOP_THRESHOLD","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","isGestureHandlerEnabled","panGestureRef","useRef","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","onStart","useCallback","onEnd","closestPoint","_scrollBridge_setScrollEnabled","setParentDragging","setScrollEnabled","panGesture","useMemo","Gesture","getGestureHandlerState","minY","gs","current","gesture","Pan","withRef","failOffsetX","shouldCancelWhenOutside","onBegin","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","lockTo","newPosition","paneY","_scrollBridge_setScrollEnabled1","velocityY","scrollLockY","velocity","projectedEnd","minDist","Number","POSITIVE_INFINITY","i","length","dist","Math","abs","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/sheet",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-1769288527117",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css"
|
|
@@ -25,6 +25,13 @@
|
|
|
25
25
|
"lint": "biome check src",
|
|
26
26
|
"lint:fix": "biome check --write src"
|
|
27
27
|
},
|
|
28
|
+
"typesVersions": {
|
|
29
|
+
"*": {
|
|
30
|
+
"setup-gesture-handler": [
|
|
31
|
+
"./types/setupGestureHandler.d.ts"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
},
|
|
28
35
|
"exports": {
|
|
29
36
|
"./package.json": "./package.json",
|
|
30
37
|
".": {
|
|
@@ -50,35 +57,55 @@
|
|
|
50
57
|
"import": "./dist/esm/controller.mjs",
|
|
51
58
|
"require": "./dist/cjs/controller.cjs",
|
|
52
59
|
"default": "./dist/cjs/controller.native.js"
|
|
60
|
+
},
|
|
61
|
+
"./setup-gesture-handler": {
|
|
62
|
+
"react-native": {
|
|
63
|
+
"types": "./types/setupGestureHandler.d.ts",
|
|
64
|
+
"module": "./dist/esm/setupGestureHandler.native.js",
|
|
65
|
+
"import": "./dist/esm/setupGestureHandler.native.js",
|
|
66
|
+
"require": "./dist/cjs/setupGestureHandler.native.js"
|
|
67
|
+
},
|
|
68
|
+
"types": "./types/setupGestureHandler.d.ts",
|
|
69
|
+
"module": "./dist/esm/setupGestureHandler.mjs",
|
|
70
|
+
"import": "./dist/esm/setupGestureHandler.mjs",
|
|
71
|
+
"require": "./dist/cjs/setupGestureHandler.cjs"
|
|
53
72
|
}
|
|
54
73
|
},
|
|
55
74
|
"dependencies": {
|
|
56
|
-
"@tamagui/adapt": "2.0.0-
|
|
57
|
-
"@tamagui/animate-presence": "2.0.0-
|
|
58
|
-
"@tamagui/animations-react-native": "2.0.0-
|
|
59
|
-
"@tamagui/compose-refs": "2.0.0-
|
|
60
|
-
"@tamagui/constants": "2.0.0-
|
|
61
|
-
"@tamagui/core": "2.0.0-
|
|
62
|
-
"@tamagui/create-context": "2.0.0-
|
|
63
|
-
"@tamagui/helpers": "2.0.0-
|
|
64
|
-
"@tamagui/
|
|
65
|
-
"@tamagui/
|
|
66
|
-
"@tamagui/scroll
|
|
67
|
-
"@tamagui/
|
|
68
|
-
"@tamagui/
|
|
69
|
-
"@tamagui/use-
|
|
70
|
-
"@tamagui/use-
|
|
71
|
-
"@tamagui/use-
|
|
72
|
-
"@tamagui/
|
|
75
|
+
"@tamagui/adapt": "2.0.0-1769288527117",
|
|
76
|
+
"@tamagui/animate-presence": "2.0.0-1769288527117",
|
|
77
|
+
"@tamagui/animations-react-native": "2.0.0-1769288527117",
|
|
78
|
+
"@tamagui/compose-refs": "2.0.0-1769288527117",
|
|
79
|
+
"@tamagui/constants": "2.0.0-1769288527117",
|
|
80
|
+
"@tamagui/core": "2.0.0-1769288527117",
|
|
81
|
+
"@tamagui/create-context": "2.0.0-1769288527117",
|
|
82
|
+
"@tamagui/helpers": "2.0.0-1769288527117",
|
|
83
|
+
"@tamagui/native": "2.0.0-1769288527117",
|
|
84
|
+
"@tamagui/portal": "2.0.0-1769288527117",
|
|
85
|
+
"@tamagui/remove-scroll": "2.0.0-1769288527117",
|
|
86
|
+
"@tamagui/scroll-view": "2.0.0-1769288527117",
|
|
87
|
+
"@tamagui/stacks": "2.0.0-1769288527117",
|
|
88
|
+
"@tamagui/use-constant": "2.0.0-1769288527117",
|
|
89
|
+
"@tamagui/use-controllable-state": "2.0.0-1769288527117",
|
|
90
|
+
"@tamagui/use-did-finish-ssr": "2.0.0-1769288527117",
|
|
91
|
+
"@tamagui/use-keyboard-visible": "2.0.0-1769288527117",
|
|
92
|
+
"@tamagui/z-index-stack": "2.0.0-1769288527117"
|
|
73
93
|
},
|
|
74
94
|
"peerDependencies": {
|
|
75
95
|
"react": "*",
|
|
76
|
-
"react-native": "*"
|
|
96
|
+
"react-native": "*",
|
|
97
|
+
"react-native-gesture-handler": ">=2.0.0"
|
|
98
|
+
},
|
|
99
|
+
"peerDependenciesMeta": {
|
|
100
|
+
"react-native-gesture-handler": {
|
|
101
|
+
"optional": true
|
|
102
|
+
}
|
|
77
103
|
},
|
|
78
104
|
"devDependencies": {
|
|
79
|
-
"@tamagui/build": "2.0.0-
|
|
105
|
+
"@tamagui/build": "2.0.0-1769288527117",
|
|
80
106
|
"react": "*",
|
|
81
|
-
"react-native": "0.81.5"
|
|
107
|
+
"react-native": "0.81.5",
|
|
108
|
+
"react-native-gesture-handler": "~2.28.0"
|
|
82
109
|
},
|
|
83
110
|
"publishConfig": {
|
|
84
111
|
"access": "public"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type React from 'react'
|
|
2
|
+
import { View, type ViewStyle } from 'react-native'
|
|
3
|
+
import { getGestureHandlerState, isGestureHandlerEnabled } from './gestureState'
|
|
4
|
+
|
|
5
|
+
interface GestureDetectorWrapperProps {
|
|
6
|
+
gesture: any
|
|
7
|
+
children: React.ReactNode
|
|
8
|
+
style?: ViewStyle
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Conditionally wraps children with GestureDetector when RNGH is available.
|
|
13
|
+
* Uses a plain View wrapper that GestureDetector can attach gesture handlers to.
|
|
14
|
+
*/
|
|
15
|
+
export function GestureDetectorWrapper({
|
|
16
|
+
gesture,
|
|
17
|
+
children,
|
|
18
|
+
style,
|
|
19
|
+
}: GestureDetectorWrapperProps) {
|
|
20
|
+
const { GestureDetector } = getGestureHandlerState()
|
|
21
|
+
const enabled = isGestureHandlerEnabled()
|
|
22
|
+
|
|
23
|
+
// console.warn('[RNGH-Wrapper] enabled:', enabled, 'hasDetector:', !!GestureDetector, 'hasGesture:', !!gesture)
|
|
24
|
+
|
|
25
|
+
// only wrap if we have RNGH available AND a gesture to attach
|
|
26
|
+
if (enabled && GestureDetector && gesture) {
|
|
27
|
+
// GestureDetector needs a native View to attach handlers to
|
|
28
|
+
// the View wrapper ensures proper gesture propagation
|
|
29
|
+
// console.warn('[RNGH-Wrapper] WRAPPING')
|
|
30
|
+
return (
|
|
31
|
+
<GestureDetector gesture={gesture}>
|
|
32
|
+
<View style={style} collapsable={false}>
|
|
33
|
+
{children}
|
|
34
|
+
</View>
|
|
35
|
+
</GestureDetector>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// pass through children in a consistent View wrapper
|
|
40
|
+
return <View style={style}>{children}</View>
|
|
41
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type React from 'react'
|
|
2
|
+
import { createContext, useContext, type RefObject } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface GestureSheetContextValue {
|
|
5
|
+
/**
|
|
6
|
+
* The sheet's pan gesture object, used for simultaneousHandlers
|
|
7
|
+
* in ScrollView to coordinate gestures
|
|
8
|
+
*/
|
|
9
|
+
panGesture: any | null
|
|
10
|
+
/**
|
|
11
|
+
* Ref to the pan gesture for simultaneousHandlers prop
|
|
12
|
+
*/
|
|
13
|
+
panGestureRef: RefObject<any> | null
|
|
14
|
+
/**
|
|
15
|
+
* Whether the sheet is currently being dragged by the user
|
|
16
|
+
*/
|
|
17
|
+
isDragging: boolean
|
|
18
|
+
/**
|
|
19
|
+
* Set whether panning should be blocked (e.g., when scrolling)
|
|
20
|
+
*/
|
|
21
|
+
setBlockPan: (blocked: boolean) => void
|
|
22
|
+
/**
|
|
23
|
+
* Whether pan gesture is currently blocked
|
|
24
|
+
*/
|
|
25
|
+
blockPan: boolean
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const GestureSheetContext = createContext<GestureSheetContextValue | null>(null)
|
|
29
|
+
|
|
30
|
+
export function useGestureSheetContext(): GestureSheetContextValue | null {
|
|
31
|
+
return useContext(GestureSheetContext)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface GestureSheetProviderProps {
|
|
35
|
+
children: React.ReactNode
|
|
36
|
+
isDragging: boolean
|
|
37
|
+
blockPan: boolean
|
|
38
|
+
setBlockPan: (blocked: boolean) => void
|
|
39
|
+
panGesture: any | null
|
|
40
|
+
panGestureRef: RefObject<any> | null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function GestureSheetProvider({
|
|
44
|
+
children,
|
|
45
|
+
isDragging,
|
|
46
|
+
blockPan,
|
|
47
|
+
setBlockPan,
|
|
48
|
+
panGesture,
|
|
49
|
+
panGestureRef,
|
|
50
|
+
}: GestureSheetProviderProps) {
|
|
51
|
+
const value: GestureSheetContextValue = {
|
|
52
|
+
panGesture,
|
|
53
|
+
panGestureRef,
|
|
54
|
+
isDragging,
|
|
55
|
+
blockPan,
|
|
56
|
+
setBlockPan,
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<GestureSheetContext.Provider value={value}>{children}</GestureSheetContext.Provider>
|
|
61
|
+
)
|
|
62
|
+
}
|