@tamagui/sheet 2.0.0-1769233344020 → 2.0.0-1769256574467
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 +80 -8
- package/dist/cjs/SheetScrollView.js +76 -10
- package/dist/cjs/SheetScrollView.js.map +1 -1
- package/dist/cjs/SheetScrollView.native.js +94 -10
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +31 -0
- package/dist/cjs/gestureState.js +24 -0
- package/dist/cjs/gestureState.js.map +6 -0
- package/dist/cjs/gestureState.native.js +34 -0
- package/dist/cjs/gestureState.native.js.map +1 -0
- package/dist/cjs/setupGestureHandler.cjs +43 -0
- package/dist/cjs/setupGestureHandler.js +35 -0
- package/dist/cjs/setupGestureHandler.js.map +6 -0
- package/dist/cjs/setupGestureHandler.native.js +47 -0
- package/dist/cjs/setupGestureHandler.native.js.map +1 -0
- package/dist/cjs/useGestureHandlerPan.cjs +125 -0
- package/dist/cjs/useGestureHandlerPan.js +116 -0
- package/dist/cjs/useGestureHandlerPan.js.map +6 -0
- package/dist/cjs/useGestureHandlerPan.native.js +134 -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 +77 -9
- package/dist/esm/SheetScrollView.js.map +1 -1
- package/dist/esm/SheetScrollView.mjs +80 -8
- package/dist/esm/SheetScrollView.mjs.map +1 -1
- package/dist/esm/SheetScrollView.native.js +94 -10
- package/dist/esm/SheetScrollView.native.js.map +1 -1
- package/dist/esm/gestureState.js +13 -0
- package/dist/esm/gestureState.js.map +6 -0
- package/dist/esm/gestureState.mjs +5 -0
- package/dist/esm/gestureState.mjs.map +1 -0
- package/dist/esm/gestureState.native.js +5 -0
- package/dist/esm/gestureState.native.js.map +1 -0
- package/dist/esm/setupGestureHandler.js +19 -0
- package/dist/esm/setupGestureHandler.js.map +6 -0
- package/dist/esm/setupGestureHandler.mjs +19 -0
- package/dist/esm/setupGestureHandler.mjs.map +1 -0
- package/dist/esm/setupGestureHandler.native.js +20 -0
- package/dist/esm/setupGestureHandler.native.js.map +1 -0
- package/dist/esm/useGestureHandlerPan.js +101 -0
- package/dist/esm/useGestureHandlerPan.js.map +6 -0
- package/dist/esm/useGestureHandlerPan.mjs +102 -0
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
- package/dist/esm/useGestureHandlerPan.native.js +108 -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 +77 -9
- package/dist/jsx/SheetScrollView.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +80 -8
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.native.js +94 -10
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/gestureState.js +13 -0
- package/dist/jsx/gestureState.js.map +6 -0
- package/dist/jsx/gestureState.mjs +5 -0
- package/dist/jsx/gestureState.mjs.map +1 -0
- package/dist/jsx/gestureState.native.js +34 -0
- package/dist/jsx/gestureState.native.js.map +1 -0
- package/dist/jsx/setupGestureHandler.js +19 -0
- package/dist/jsx/setupGestureHandler.js.map +6 -0
- package/dist/jsx/setupGestureHandler.mjs +19 -0
- package/dist/jsx/setupGestureHandler.mjs.map +1 -0
- package/dist/jsx/setupGestureHandler.native.js +47 -0
- package/dist/jsx/setupGestureHandler.native.js.map +1 -0
- package/dist/jsx/useGestureHandlerPan.js +101 -0
- package/dist/jsx/useGestureHandlerPan.js.map +6 -0
- package/dist/jsx/useGestureHandlerPan.mjs +102 -0
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
- package/dist/jsx/useGestureHandlerPan.native.js +134 -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 +157 -8
- package/src/gestureState.ts +17 -0
- package/src/setupGestureHandler.ts +32 -0
- package/src/types.tsx +15 -0
- package/src/useGestureHandlerPan.tsx +299 -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/GestureDetectorWrapper.native.d.ts.map +1 -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 +9 -0
- package/types/gestureState.d.ts.map +1 -0
- package/types/gestureState.native.d.ts +12 -0
- package/types/gestureState.native.d.ts.map +1 -0
- package/types/setupGestureHandler.d.ts +12 -0
- package/types/setupGestureHandler.d.ts.map +1 -0
- package/types/setupGestureHandler.native.d.ts +41 -0
- package/types/setupGestureHandler.native.d.ts.map +1 -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
- package/types/useGestureHandlerPan.native.d.ts.map +1 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { setGestureHandlerState, isGestureHandlerEnabled } from "@tamagui/native";
|
|
2
|
+
function setupGestureHandler(config) {
|
|
3
|
+
const g = globalThis;
|
|
4
|
+
if (g.__tamagui_sheet_gesture_handler_setup)
|
|
5
|
+
return;
|
|
6
|
+
g.__tamagui_sheet_gesture_handler_setup = !0;
|
|
7
|
+
const { Gesture, GestureDetector, ScrollView } = config;
|
|
8
|
+
Gesture && GestureDetector && setGestureHandlerState({
|
|
9
|
+
enabled: !0,
|
|
10
|
+
Gesture,
|
|
11
|
+
GestureDetector,
|
|
12
|
+
ScrollView: ScrollView || null
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
isGestureHandlerEnabled,
|
|
17
|
+
setupGestureHandler
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=setupGestureHandler.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/setupGestureHandler.ts"],
|
|
4
|
+
"mappings": "AAIA,SAAS,wBAAwB,+BAA+B;AAUzD,SAAS,oBAAoB,QAAyC;AAC3E,QAAM,IAAI;AACV,MAAI,EAAE;AACJ;AAEF,IAAE,wCAAwC;AAE1C,QAAM,EAAE,SAAS,iBAAiB,WAAW,IAAI;AAEjD,EAAI,WAAW,mBACb,uBAAuB;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY,cAAc;AAAA,EAC5B,CAAC;AAEL;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { setGestureHandlerState, isGestureHandlerEnabled } from "@tamagui/native";
|
|
2
|
+
function setupGestureHandler(config) {
|
|
3
|
+
const g = globalThis;
|
|
4
|
+
if (g.__tamagui_sheet_gesture_handler_setup) return;
|
|
5
|
+
g.__tamagui_sheet_gesture_handler_setup = !0;
|
|
6
|
+
const {
|
|
7
|
+
Gesture,
|
|
8
|
+
GestureDetector,
|
|
9
|
+
ScrollView
|
|
10
|
+
} = config;
|
|
11
|
+
Gesture && GestureDetector && setGestureHandlerState({
|
|
12
|
+
enabled: !0,
|
|
13
|
+
Gesture,
|
|
14
|
+
GestureDetector,
|
|
15
|
+
ScrollView: ScrollView || null
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { isGestureHandlerEnabled, setupGestureHandler };
|
|
19
|
+
//# sourceMappingURL=setupGestureHandler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["setGestureHandlerState","isGestureHandlerEnabled","setupGestureHandler","config","g","globalThis","__tamagui_sheet_gesture_handler_setup","Gesture","GestureDetector","ScrollView","enabled"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,sBAAA,EAAwBC,uBAAA,QAA+B;AAUzD,SAASC,oBAAoBC,MAAA,EAAyC;EAC3E,MAAMC,CAAA,GAAIC,UAAA;EACV,IAAID,CAAA,CAAEE,qCAAA,EACJ;EAEFF,CAAA,CAAEE,qCAAA,GAAwC;EAE1C,MAAM;IAAEC,OAAA;IAASC,eAAA;IAAiBC;EAAW,IAAIN,MAAA;EAE7CI,OAAA,IAAWC,eAAA,IACbR,sBAAA,CAAuB;IACrBU,OAAA,EAAS;IACTH,OAAA;IACAC,eAAA;IACAC,UAAA,EAAYA,UAAA,IAAc;EAC5B,CAAC;AAEL","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
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: () => import_native.isGestureHandlerEnabled,
|
|
26
|
+
setupGestureHandler: () => setupGestureHandler
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(setupGestureHandler_exports);
|
|
29
|
+
var import_native = require("@tamagui/native");
|
|
30
|
+
function setupGestureHandler(config) {
|
|
31
|
+
var g = globalThis;
|
|
32
|
+
if (!g.__tamagui_sheet_gesture_handler_setup) {
|
|
33
|
+
g.__tamagui_sheet_gesture_handler_setup = !0;
|
|
34
|
+
var {
|
|
35
|
+
Gesture,
|
|
36
|
+
GestureDetector,
|
|
37
|
+
ScrollView
|
|
38
|
+
} = config;
|
|
39
|
+
Gesture && GestureDetector && (0, import_native.setGestureHandlerState)({
|
|
40
|
+
enabled: !0,
|
|
41
|
+
Gesture,
|
|
42
|
+
GestureDetector,
|
|
43
|
+
ScrollView: ScrollView || null
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# 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"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,YAAS;;AAUF,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAA6D;AAC3E,IAAAC,gBAAU,GAAAF,MAAA,CAAAG,wBAAA;AACV,IAAAC,iBAAM,GAAAJ,MAAA,CAAAK,mBAAA;AACJ,IAAAC,YAAA,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AAEF,IAAEC,QAAA,GAAAA,CAAAC,MAAA,EAAAC,GAAA;IAEF,SAAQC,IAAA,IAASD,GAAA,EAEbZ,SAAW,CAAAW,MAAA,EAAAE,IAAA;MAAAC,GACb,EAAAF,GAAA,CAAAC,IAAA;MAAAE,UAAuB;IAAA;EAAA;EAAAC,WACZ,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;IAAA,IACTF,IAAA,WAAAA,IAAA,uBAAAA,IAAA,gBACA,SAAAG,GAAA,IAAAhB,iBAAA,CAAAa,IAAA,GACA,CAAAX,YAAY,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAc,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;IAC5B,OAACE,EAAA;EAEL","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : panHandles = !1 : isSwipingDown ? panHandles = !nodeIsScrolling : panHandles = !0, panHandles) {
|
|
57
|
+
const lockTo = isCurrentlyAtTop ? void 0 : 0;
|
|
58
|
+
scrollBridge.setScrollEnabled?.(!1, lockTo), gs.accumulatedOffset += deltaY;
|
|
59
|
+
const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
60
|
+
scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
|
|
61
|
+
} else
|
|
62
|
+
scrollBridge.setScrollEnabled?.(!0);
|
|
63
|
+
}).onEnd((event) => {
|
|
64
|
+
const { velocityY } = event, currentPos = gs.startY + gs.accumulatedOffset;
|
|
65
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
66
|
+
onEnd(0);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
70
|
+
let closestPoint = 0, minDist = Number.POSITIVE_INFINITY;
|
|
71
|
+
for (let i = 0; i < positions.length; i++) {
|
|
72
|
+
const pos = positions[i], dist = Math.abs(projectedEnd - pos);
|
|
73
|
+
dist < minDist && (minDist = dist, closestPoint = i);
|
|
74
|
+
}
|
|
75
|
+
onEnd(closestPoint);
|
|
76
|
+
}).onFinalize(() => {
|
|
77
|
+
scrollBridge.scrollLockY = void 0;
|
|
78
|
+
}).runOnJS(!0);
|
|
79
|
+
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
80
|
+
}, [
|
|
81
|
+
gestureHandlerEnabled,
|
|
82
|
+
disableDrag,
|
|
83
|
+
isShowingInnerSheet,
|
|
84
|
+
frameSize,
|
|
85
|
+
positions,
|
|
86
|
+
scrollBridge,
|
|
87
|
+
getCurrentPosition,
|
|
88
|
+
resisted,
|
|
89
|
+
onStart,
|
|
90
|
+
onEnd,
|
|
91
|
+
setIsDragging,
|
|
92
|
+
setAnimatedPosition
|
|
93
|
+
]),
|
|
94
|
+
panGestureRef,
|
|
95
|
+
gestureHandlerEnabled
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
useGestureHandlerPan
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=useGestureHandlerPan.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useGestureHandlerPan.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,aAAa,SAAS,cAA8B;AAC7D,SAAS,wBAAwB,+BAA+B;AAKhE,MAAM,mBAAmB;AA4ClB,SAAS,qBAAqB,QAA4C;AAC/E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,QAEE,wBAAwB,wBAAwB,GAChD,gBAAgB,OAAY,IAAI,GAIhC,kBAAkB,OAAO;AAAA,IAC7B,QAAQ;AAAA;AAAA,IAER,qBAAqB;AAAA;AAAA,IAErB,mBAAmB;AAAA;AAAA,IAEnB,kBAAkB;AAAA;AAAA,IAElB,eAAe;AAAA,EACjB,CAAC,GAEK,UAAU,YAAY,MAAM;AAChC,eAAW,GACX,cAAc,EAAI;AAAA,EACpB,GAAG,CAAC,YAAY,aAAa,CAAC,GAExB,QAAQ;AAAA,IACZ,CAAC,iBAAyB;AACxB,oBAAc,EAAK,GACnB,aAAa,kBAAkB,EAAK,GAEpC,aAAa,mBAAmB,EAAI,GACpC,YAAY,YAAY,GACxB,UAAU,YAAY;AAAA,IACxB;AAAA,IACA,CAAC,eAAe,cAAc,aAAa,SAAS;AAAA,EACtD;AAkMA,SAAO;AAAA,IACL,YAjMiB,QAAQ,MAAM;AAE/B,UAAI,CAAC,yBAAyB,eAAe,uBAAuB,CAAC;AACnE,eAAO;AAGT,YAAM,EAAE,QAAQ,IAAI,uBAAuB;AAC3C,UAAI,CAAC;AACH,eAAO;AAGT,YAAM,OAAO,UAAU,CAAC,GAClB,KAAK,gBAAgB,SAKrB,UAAU,QAAQ,IAAI,EACzB,QAAQ,aAAa,EAErB,YAAY,CAAC,KAAK,EAAE,CAAC,EACrB,wBAAwB,EAAK,EAC7B,QAAQ,MAAM;AAEb,cAAM,MAAM,mBAAmB,GACzB,QAAQ,OAAO,OAAO,kBACtB,iBAAiB,aAAa;AAEpC,WAAG,SAAS,KACZ,GAAG,sBAAsB,GACzB,GAAG,oBAAoB,GACvB,GAAG,mBAAmB,GACtB,GAAG,gBAAgB,iBAAiB,GAI/B,SACH,aAAa,mBAAmB,IAAO,CAAC;AAAA,MAE5C,CAAC,EACA,QAAQ,MAAM;AAEb,qBAAa,kBAAkB,GAAG,QAClC,QAAQ;AAAA,MACV,CAAC,EACA,SAAS,CAAC,UAAuD;AAChE,cAAM,EAAE,aAAa,IAAI,OAInB,gBAAgB,GAAG,mBAAmB,cACtC,SAAS,eAAe,GAAG;AACjC,WAAG,mBAAmB;AAEtB,cAAM,UAAU,aAAa;AAE7B,QAAI,UAAU,MACZ,GAAG,gBAAgB;AAKrB,cAAM,mBADa,GAAG,SAAS,GAAG,qBACK,OAAO,kBACxC,kBAAkB,UAAU;AASlC,YAAI,aAAa;AAoCjB,YAlCK,mBAYC,gBAEE,kBAEF,aAAa,MACJ,GAAG,eAIZ,aAAa,MAOf,aAAa,KA1BX,gBAGF,aAAa,CAAC,kBAGd,aAAa,IA0Bb,YAAY;AAId,gBAAM,SAAS,mBAAmB,SAAY;AAC9C,uBAAa,mBAAmB,IAAO,MAAM,GAG7C,GAAG,qBAAqB;AACxB,gBAAM,cAAc,SAAS,GAAG,SAAS,GAAG,mBAAmB,IAAI;AAGnE,uBAAa,QAAQ,aACrB,oBAAoB,WAAW,GAC/B,aAAa,kBAAkB,cAAc,IAAI;AAAA,QACnD;AAEE,uBAAa,mBAAmB,EAAI;AAAA,MAGxC,CAAC,EACA,MAAM,CAAC,UAAiC;AACvC,cAAM,EAAE,UAAU,IAAI,OAChB,aAAa,GAAG,SAAS,GAAG;AAQlC,YAHA,aAAa,cAAc,QAGvB,cAAc,OAAO,oBAAoB,aAAa,IAAI,GAAG;AAC/D,gBAAM,CAAC;AACP;AAAA,QACF;AAGA,cAAM,WAAW,YAAY,KACvB,eAAe,aAAa,YAAY,WAAW;AAEzD,YAAI,eAAe,GACf,UAAU,OAAO;AAErB,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,gBAAM,MAAM,UAAU,CAAC,GACjB,OAAO,KAAK,IAAI,eAAe,GAAG;AACxC,UAAI,OAAO,YACT,UAAU,MACV,eAAe;AAAA,QAEnB;AAEA,cAAM,YAAY;AAAA,MACpB,CAAC,EACA,WAAW,MAAM;AAGhB,qBAAa,cAAc;AAAA,MAC7B,CAAC,EACA,QAAQ,EAAI;AAIf,aAAI,kBAAkB,UAEb,QAAQ,gCAAgC,iBAAiB,OAAO,IAGlE;AAAA,IACT,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IAIC;AAAA,IACA;AAAA,EACF;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : panHandles = !1 : isSwipingDown ? panHandles = !nodeIsScrolling : panHandles = !0, panHandles) {
|
|
68
|
+
const lockTo = isCurrentlyAtTop ? void 0 : 0;
|
|
69
|
+
scrollBridge.setScrollEnabled?.(!1, lockTo), gs.accumulatedOffset += deltaY;
|
|
70
|
+
const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
71
|
+
scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
|
|
72
|
+
} else scrollBridge.setScrollEnabled?.(!0);
|
|
73
|
+
}).onEnd(event => {
|
|
74
|
+
const {
|
|
75
|
+
velocityY
|
|
76
|
+
} = event,
|
|
77
|
+
currentPos = gs.startY + gs.accumulatedOffset;
|
|
78
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
79
|
+
onEnd(0);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const velocity = velocityY / 1e3,
|
|
83
|
+
projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
84
|
+
let closestPoint = 0,
|
|
85
|
+
minDist = Number.POSITIVE_INFINITY;
|
|
86
|
+
for (let i = 0; i < positions.length; i++) {
|
|
87
|
+
const pos = positions[i],
|
|
88
|
+
dist = Math.abs(projectedEnd - pos);
|
|
89
|
+
dist < minDist && (minDist = dist, closestPoint = i);
|
|
90
|
+
}
|
|
91
|
+
onEnd(closestPoint);
|
|
92
|
+
}).onFinalize(() => {
|
|
93
|
+
scrollBridge.scrollLockY = void 0;
|
|
94
|
+
}).runOnJS(!0);
|
|
95
|
+
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
96
|
+
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]),
|
|
97
|
+
panGestureRef,
|
|
98
|
+
gestureHandlerEnabled
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export { useGestureHandlerPan };
|
|
102
|
+
//# 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","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":"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","ignoreList":[]}
|
|
@@ -0,0 +1,134 @@
|
|
|
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
|
+
if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : panHandles = !1 : isSwipingDown ? panHandles = !nodeIsScrolling : panHandles = !0, panHandles) {
|
|
99
|
+
var _scrollBridge_setScrollEnabled,
|
|
100
|
+
lockTo = isCurrentlyAtTop ? void 0 : 0;
|
|
101
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !1, lockTo), gs.accumulatedOffset += deltaY;
|
|
102
|
+
var newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
103
|
+
scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
|
|
104
|
+
} else {
|
|
105
|
+
var _scrollBridge_setScrollEnabled1;
|
|
106
|
+
(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !0);
|
|
107
|
+
}
|
|
108
|
+
}).onEnd(function (event) {
|
|
109
|
+
var {
|
|
110
|
+
velocityY
|
|
111
|
+
} = event,
|
|
112
|
+
currentPos = gs.startY + gs.accumulatedOffset;
|
|
113
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
114
|
+
onEnd(0);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
for (var velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2, closestPoint = 0, minDist = Number.POSITIVE_INFINITY, i = 0; i < positions.length; i++) {
|
|
118
|
+
var pos = positions[i],
|
|
119
|
+
dist = Math.abs(projectedEnd - pos);
|
|
120
|
+
dist < minDist && (minDist = dist, closestPoint = i);
|
|
121
|
+
}
|
|
122
|
+
onEnd(closestPoint);
|
|
123
|
+
}).onFinalize(function () {
|
|
124
|
+
scrollBridge.scrollLockY = void 0;
|
|
125
|
+
}).runOnJS(!0);
|
|
126
|
+
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
127
|
+
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]);
|
|
128
|
+
return {
|
|
129
|
+
panGesture,
|
|
130
|
+
panGestureRef,
|
|
131
|
+
gestureHandlerEnabled
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# 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","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-1769256574467",
|
|
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-1769256574467",
|
|
76
|
+
"@tamagui/animate-presence": "2.0.0-1769256574467",
|
|
77
|
+
"@tamagui/animations-react-native": "2.0.0-1769256574467",
|
|
78
|
+
"@tamagui/compose-refs": "2.0.0-1769256574467",
|
|
79
|
+
"@tamagui/constants": "2.0.0-1769256574467",
|
|
80
|
+
"@tamagui/core": "2.0.0-1769256574467",
|
|
81
|
+
"@tamagui/create-context": "2.0.0-1769256574467",
|
|
82
|
+
"@tamagui/helpers": "2.0.0-1769256574467",
|
|
83
|
+
"@tamagui/native": "2.0.0-1769256574467",
|
|
84
|
+
"@tamagui/portal": "2.0.0-1769256574467",
|
|
85
|
+
"@tamagui/remove-scroll": "2.0.0-1769256574467",
|
|
86
|
+
"@tamagui/scroll-view": "2.0.0-1769256574467",
|
|
87
|
+
"@tamagui/stacks": "2.0.0-1769256574467",
|
|
88
|
+
"@tamagui/use-constant": "2.0.0-1769256574467",
|
|
89
|
+
"@tamagui/use-controllable-state": "2.0.0-1769256574467",
|
|
90
|
+
"@tamagui/use-did-finish-ssr": "2.0.0-1769256574467",
|
|
91
|
+
"@tamagui/use-keyboard-visible": "2.0.0-1769256574467",
|
|
92
|
+
"@tamagui/z-index-stack": "2.0.0-1769256574467"
|
|
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-1769256574467",
|
|
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
|
+
}
|