@tamagui/sheet 2.0.0-1769536410877 → 2.0.0-1769546410712
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/SheetImplementationCustom.cjs +31 -66
- package/dist/cjs/SheetImplementationCustom.js +40 -70
- package/dist/cjs/SheetImplementationCustom.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.native.js +33 -73
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/SheetScrollView.cjs +0 -2
- package/dist/cjs/SheetScrollView.js +0 -2
- package/dist/cjs/SheetScrollView.js.map +1 -1
- package/dist/cjs/SheetScrollView.native.js +0 -2
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/useGestureHandlerPan.cjs +11 -21
- package/dist/cjs/useGestureHandlerPan.js +11 -20
- package/dist/cjs/useGestureHandlerPan.js.map +1 -1
- package/dist/cjs/useGestureHandlerPan.native.js +11 -21
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.js +41 -73
- package/dist/esm/SheetImplementationCustom.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs +33 -68
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js +35 -75
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/SheetScrollView.js +0 -2
- package/dist/esm/SheetScrollView.js.map +1 -1
- package/dist/esm/SheetScrollView.mjs +0 -2
- package/dist/esm/SheetScrollView.mjs.map +1 -1
- package/dist/esm/SheetScrollView.native.js +0 -2
- package/dist/esm/SheetScrollView.native.js.map +1 -1
- package/dist/esm/useGestureHandlerPan.js +11 -20
- package/dist/esm/useGestureHandlerPan.js.map +1 -1
- package/dist/esm/useGestureHandlerPan.mjs +11 -21
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
- package/dist/esm/useGestureHandlerPan.native.js +11 -21
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.js +41 -73
- package/dist/jsx/SheetImplementationCustom.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +33 -68
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.js +33 -73
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/SheetScrollView.js +0 -2
- package/dist/jsx/SheetScrollView.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +0 -2
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.native.js +0 -2
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/useGestureHandlerPan.js +11 -20
- package/dist/jsx/useGestureHandlerPan.js.map +1 -1
- package/dist/jsx/useGestureHandlerPan.mjs +11 -21
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
- package/dist/jsx/useGestureHandlerPan.native.js +11 -21
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
- package/package.json +20 -20
- package/src/SheetImplementationCustom.tsx +46 -138
- package/src/SheetScrollView.tsx +0 -2
- package/src/types.tsx +0 -47
- package/src/useGestureHandlerPan.tsx +10 -57
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts.map +1 -1
- package/types/types.d.ts +0 -38
- package/types/types.d.ts.map +1 -1
- package/types/useGestureHandlerPan.d.ts +1 -2
- package/types/useGestureHandlerPan.d.ts.map +1 -1
- package/dist/cjs/useKeyboardControllerSheet.cjs +0 -38
- package/dist/cjs/useKeyboardControllerSheet.js +0 -34
- package/dist/cjs/useKeyboardControllerSheet.js.map +0 -6
- package/dist/cjs/useKeyboardControllerSheet.native.js +0 -114
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +0 -1
- package/dist/esm/useKeyboardControllerSheet.js +0 -18
- package/dist/esm/useKeyboardControllerSheet.js.map +0 -6
- package/dist/esm/useKeyboardControllerSheet.mjs +0 -15
- package/dist/esm/useKeyboardControllerSheet.mjs.map +0 -1
- package/dist/esm/useKeyboardControllerSheet.native.js +0 -88
- package/dist/esm/useKeyboardControllerSheet.native.js.map +0 -1
- package/dist/jsx/useKeyboardControllerSheet.js +0 -18
- package/dist/jsx/useKeyboardControllerSheet.js.map +0 -6
- package/dist/jsx/useKeyboardControllerSheet.mjs +0 -15
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +0 -1
- package/dist/jsx/useKeyboardControllerSheet.native.js +0 -114
- package/dist/jsx/useKeyboardControllerSheet.native.js.map +0 -1
- package/src/useKeyboardControllerSheet.native.ts +0 -136
- package/src/useKeyboardControllerSheet.ts +0 -26
- package/types/useKeyboardControllerSheet.d.ts +0 -7
- package/types/useKeyboardControllerSheet.d.ts.map +0 -1
- package/types/useKeyboardControllerSheet.native.d.ts +0 -13
- package/types/useKeyboardControllerSheet.native.d.ts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useGestureHandlerPan.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,aAAa,SAAS,cAA8B;AAC7D,SAAS,wBAAwB,+BAA+B;AAKhE,MAAM,mBAAmB;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -28,19 +28,13 @@ function useGestureHandlerPan(config) {
|
|
|
28
28
|
// track previous translation for direction detection (like actions-sheet)
|
|
29
29
|
prevTranslationY: 0,
|
|
30
30
|
// track if scroll was engaged (scrollY > 0) at some point
|
|
31
|
-
scrollEngaged: !1
|
|
32
|
-
// positions frozen at gesture start — keyboard may dismiss during drag (input blur),
|
|
33
|
-
// causing positions to revert. Frozen positions ensure stable snap calculation.
|
|
34
|
-
frozenPositions: [],
|
|
35
|
-
frozenMinY: 0,
|
|
36
|
-
// whether pan gesture actually started (vs just a tap in onBegin)
|
|
37
|
-
panStarted: !1
|
|
31
|
+
scrollEngaged: !1
|
|
38
32
|
}),
|
|
39
33
|
onStart = useCallback(() => {
|
|
40
|
-
stopSpring();
|
|
41
|
-
}, [stopSpring]),
|
|
42
|
-
onEnd = useCallback(
|
|
43
|
-
setIsDragging(!1), scrollBridge.setParentDragging(!1), scrollBridge.setScrollEnabled?.(!0), setPosition(closestPoint), animateTo(closestPoint
|
|
34
|
+
stopSpring(), setIsDragging(!0);
|
|
35
|
+
}, [stopSpring, setIsDragging]),
|
|
36
|
+
onEnd = useCallback(closestPoint => {
|
|
37
|
+
setIsDragging(!1), scrollBridge.setParentDragging(!1), scrollBridge.setScrollEnabled?.(!0), setPosition(closestPoint), animateTo(closestPoint);
|
|
44
38
|
}, [setIsDragging, scrollBridge, setPosition, animateTo]);
|
|
45
39
|
return {
|
|
46
40
|
panGesture: useMemo(() => {
|
|
@@ -52,13 +46,12 @@ function useGestureHandlerPan(config) {
|
|
|
52
46
|
const minY = positions[0],
|
|
53
47
|
gs = gestureStateRef.current,
|
|
54
48
|
gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(() => {
|
|
55
|
-
gs.panStarted = !1, config.pauseKeyboardHandler && (config.pauseKeyboardHandler.current = !0);
|
|
56
49
|
const pos = getCurrentPosition(),
|
|
57
50
|
atTop = pos <= minY + AT_TOP_THRESHOLD,
|
|
58
51
|
currentScrollY = scrollBridge.y;
|
|
59
|
-
gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0,
|
|
52
|
+
gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, atTop || scrollBridge.setScrollEnabled?.(!1, 0);
|
|
60
53
|
}).onStart(() => {
|
|
61
|
-
|
|
54
|
+
scrollBridge.initialPosition = gs.startY, onStart();
|
|
62
55
|
}).onChange(event => {
|
|
63
56
|
const {
|
|
64
57
|
translationY
|
|
@@ -83,10 +76,7 @@ function useGestureHandlerPan(config) {
|
|
|
83
76
|
velocityY
|
|
84
77
|
} = event,
|
|
85
78
|
currentPos = gs.startY + gs.accumulatedOffset;
|
|
86
|
-
scrollBridge.scrollLockY = void 0
|
|
87
|
-
const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions,
|
|
88
|
-
snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
|
|
89
|
-
if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
79
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
90
80
|
onEnd(0);
|
|
91
81
|
return;
|
|
92
82
|
}
|
|
@@ -94,14 +84,14 @@ function useGestureHandlerPan(config) {
|
|
|
94
84
|
projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
95
85
|
let closestPoint = 0,
|
|
96
86
|
minDist = Number.POSITIVE_INFINITY;
|
|
97
|
-
for (let i = 0; i <
|
|
98
|
-
const pos =
|
|
87
|
+
for (let i = 0; i < positions.length; i++) {
|
|
88
|
+
const pos = positions[i],
|
|
99
89
|
dist = Math.abs(projectedEnd - pos);
|
|
100
90
|
dist < minDist && (minDist = dist, closestPoint = i);
|
|
101
91
|
}
|
|
102
92
|
onEnd(closestPoint);
|
|
103
93
|
}).onFinalize(() => {
|
|
104
|
-
scrollBridge.scrollLockY = void 0
|
|
94
|
+
scrollBridge.scrollLockY = void 0;
|
|
105
95
|
}).runOnJS(!0);
|
|
106
96
|
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
107
97
|
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]),
|
|
@@ -1 +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","
|
|
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":"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","ignoreList":[]}
|
|
@@ -55,20 +55,14 @@ function useGestureHandlerPan(config) {
|
|
|
55
55
|
// track previous translation for direction detection (like actions-sheet)
|
|
56
56
|
prevTranslationY: 0,
|
|
57
57
|
// track if scroll was engaged (scrollY > 0) at some point
|
|
58
|
-
scrollEngaged: !1
|
|
59
|
-
// positions frozen at gesture start — keyboard may dismiss during drag (input blur),
|
|
60
|
-
// causing positions to revert. Frozen positions ensure stable snap calculation.
|
|
61
|
-
frozenPositions: [],
|
|
62
|
-
frozenMinY: 0,
|
|
63
|
-
// whether pan gesture actually started (vs just a tap in onBegin)
|
|
64
|
-
panStarted: !1
|
|
58
|
+
scrollEngaged: !1
|
|
65
59
|
}),
|
|
66
60
|
onStart = (0, import_react.useCallback)(function () {
|
|
67
|
-
stopSpring();
|
|
68
|
-
}, [stopSpring]),
|
|
69
|
-
onEnd = (0, import_react.useCallback)(function (closestPoint
|
|
61
|
+
stopSpring(), setIsDragging(!0);
|
|
62
|
+
}, [stopSpring, setIsDragging]),
|
|
63
|
+
onEnd = (0, import_react.useCallback)(function (closestPoint) {
|
|
70
64
|
var _scrollBridge_setScrollEnabled;
|
|
71
|
-
setIsDragging(!1), scrollBridge.setParentDragging(!1), (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0), setPosition(closestPoint), animateTo(closestPoint
|
|
65
|
+
setIsDragging(!1), scrollBridge.setParentDragging(!1), (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0), setPosition(closestPoint), animateTo(closestPoint);
|
|
72
66
|
}, [setIsDragging, scrollBridge, setPosition, animateTo]),
|
|
73
67
|
panGesture = (0, import_react.useMemo)(function () {
|
|
74
68
|
if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) return null;
|
|
@@ -79,16 +73,15 @@ function useGestureHandlerPan(config) {
|
|
|
79
73
|
var minY = positions[0],
|
|
80
74
|
gs = gestureStateRef.current,
|
|
81
75
|
gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(function () {
|
|
82
|
-
gs.panStarted = !1, config.pauseKeyboardHandler && (config.pauseKeyboardHandler.current = !0);
|
|
83
76
|
var pos = getCurrentPosition(),
|
|
84
77
|
atTop = pos <= minY + AT_TOP_THRESHOLD,
|
|
85
78
|
currentScrollY = scrollBridge.y;
|
|
86
|
-
if (gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0,
|
|
79
|
+
if (gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, !atTop) {
|
|
87
80
|
var _scrollBridge_setScrollEnabled;
|
|
88
81
|
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !1, 0);
|
|
89
82
|
}
|
|
90
83
|
}).onStart(function () {
|
|
91
|
-
|
|
84
|
+
scrollBridge.initialPosition = gs.startY, onStart();
|
|
92
85
|
}).onChange(function (event) {
|
|
93
86
|
var {
|
|
94
87
|
translationY
|
|
@@ -118,21 +111,18 @@ function useGestureHandlerPan(config) {
|
|
|
118
111
|
velocityY
|
|
119
112
|
} = event,
|
|
120
113
|
currentPos = gs.startY + gs.accumulatedOffset;
|
|
121
|
-
scrollBridge.scrollLockY = void 0
|
|
122
|
-
var snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions,
|
|
123
|
-
snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
|
|
124
|
-
if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
114
|
+
if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
125
115
|
onEnd(0);
|
|
126
116
|
return;
|
|
127
117
|
}
|
|
128
|
-
for (var velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2, closestPoint = 0, minDist = Number.POSITIVE_INFINITY, i = 0; i <
|
|
129
|
-
var pos =
|
|
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],
|
|
130
120
|
dist = Math.abs(projectedEnd - pos);
|
|
131
121
|
dist < minDist && (minDist = dist, closestPoint = i);
|
|
132
122
|
}
|
|
133
123
|
onEnd(closestPoint);
|
|
134
124
|
}).onFinalize(function () {
|
|
135
|
-
scrollBridge.scrollLockY = void 0
|
|
125
|
+
scrollBridge.scrollLockY = void 0;
|
|
136
126
|
}).runOnJS(!0);
|
|
137
127
|
return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
|
|
138
128
|
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]);
|
|
@@ -1 +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","
|
|
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-1769546410712",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"*.css"
|
|
@@ -72,24 +72,24 @@
|
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@tamagui/adapt": "2.0.0-
|
|
76
|
-
"@tamagui/animate-presence": "2.0.0-
|
|
77
|
-
"@tamagui/animations-react-native": "2.0.0-
|
|
78
|
-
"@tamagui/compose-refs": "2.0.0-
|
|
79
|
-
"@tamagui/constants": "2.0.0-
|
|
80
|
-
"@tamagui/core": "2.0.0-
|
|
81
|
-
"@tamagui/create-context": "2.0.0-
|
|
82
|
-
"@tamagui/helpers": "2.0.0-
|
|
83
|
-
"@tamagui/native": "2.0.0-
|
|
84
|
-
"@tamagui/portal": "2.0.0-
|
|
85
|
-
"@tamagui/remove-scroll": "2.0.0-
|
|
86
|
-
"@tamagui/scroll-view": "2.0.0-
|
|
87
|
-
"@tamagui/stacks": "2.0.0-
|
|
88
|
-
"@tamagui/use-constant": "2.0.0-
|
|
89
|
-
"@tamagui/use-controllable-state": "2.0.0-
|
|
90
|
-
"@tamagui/use-did-finish-ssr": "2.0.0-
|
|
91
|
-
"@tamagui/use-keyboard-visible": "2.0.0-
|
|
92
|
-
"@tamagui/z-index-stack": "2.0.0-
|
|
75
|
+
"@tamagui/adapt": "2.0.0-1769546410712",
|
|
76
|
+
"@tamagui/animate-presence": "2.0.0-1769546410712",
|
|
77
|
+
"@tamagui/animations-react-native": "2.0.0-1769546410712",
|
|
78
|
+
"@tamagui/compose-refs": "2.0.0-1769546410712",
|
|
79
|
+
"@tamagui/constants": "2.0.0-1769546410712",
|
|
80
|
+
"@tamagui/core": "2.0.0-1769546410712",
|
|
81
|
+
"@tamagui/create-context": "2.0.0-1769546410712",
|
|
82
|
+
"@tamagui/helpers": "2.0.0-1769546410712",
|
|
83
|
+
"@tamagui/native": "2.0.0-1769546410712",
|
|
84
|
+
"@tamagui/portal": "2.0.0-1769546410712",
|
|
85
|
+
"@tamagui/remove-scroll": "2.0.0-1769546410712",
|
|
86
|
+
"@tamagui/scroll-view": "2.0.0-1769546410712",
|
|
87
|
+
"@tamagui/stacks": "2.0.0-1769546410712",
|
|
88
|
+
"@tamagui/use-constant": "2.0.0-1769546410712",
|
|
89
|
+
"@tamagui/use-controllable-state": "2.0.0-1769546410712",
|
|
90
|
+
"@tamagui/use-did-finish-ssr": "2.0.0-1769546410712",
|
|
91
|
+
"@tamagui/use-keyboard-visible": "2.0.0-1769546410712",
|
|
92
|
+
"@tamagui/z-index-stack": "2.0.0-1769546410712"
|
|
93
93
|
},
|
|
94
94
|
"peerDependencies": {
|
|
95
95
|
"react": "*",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@tamagui/build": "2.0.0-
|
|
105
|
+
"@tamagui/build": "2.0.0-1769546410712",
|
|
106
106
|
"react": "*",
|
|
107
107
|
"react-native": "0.81.5",
|
|
108
108
|
"react-native-gesture-handler": "~2.28.0"
|
|
@@ -19,41 +19,19 @@ import type {
|
|
|
19
19
|
LayoutChangeEvent,
|
|
20
20
|
PanResponderGestureState,
|
|
21
21
|
} from 'react-native'
|
|
22
|
-
import { Dimensions, PanResponder, View } from 'react-native'
|
|
22
|
+
import { Dimensions, Keyboard, PanResponder, View } from 'react-native'
|
|
23
23
|
import { ParentSheetContext, SheetInsideSheetContext } from './contexts'
|
|
24
24
|
import { GestureDetectorWrapper } from './GestureDetectorWrapper'
|
|
25
25
|
import { GestureSheetProvider } from './GestureSheetContext'
|
|
26
|
-
import { getSafeArea } from '@tamagui/native'
|
|
27
26
|
import { resisted } from './helpers'
|
|
28
27
|
import { SheetProvider } from './SheetContext'
|
|
29
28
|
import type { SheetProps, SnapPointsMode } from './types'
|
|
30
29
|
import { useGestureHandlerPan } from './useGestureHandlerPan'
|
|
31
|
-
import { useKeyboardControllerSheet } from './useKeyboardControllerSheet'
|
|
32
30
|
import { useSheetOpenState } from './useSheetOpenState'
|
|
33
31
|
import { useSheetProviderProps } from './useSheetProviderProps'
|
|
34
32
|
|
|
35
33
|
const hiddenSize = 10_000.1
|
|
36
34
|
|
|
37
|
-
// safe area top inset, cached per-session (device-constant value)
|
|
38
|
-
let _cachedSafeAreaTop: number | undefined
|
|
39
|
-
function getSafeAreaTopInset(): number {
|
|
40
|
-
if (_cachedSafeAreaTop !== undefined) return _cachedSafeAreaTop
|
|
41
|
-
// try tamagui native safe area state first
|
|
42
|
-
const sa = getSafeArea()
|
|
43
|
-
if (sa.isEnabled) {
|
|
44
|
-
_cachedSafeAreaTop = sa.getInsets().top
|
|
45
|
-
return _cachedSafeAreaTop
|
|
46
|
-
}
|
|
47
|
-
// fallback: react-native-safe-area-context initialWindowMetrics (no provider needed)
|
|
48
|
-
try {
|
|
49
|
-
const sac = require('react-native-safe-area-context')
|
|
50
|
-
_cachedSafeAreaTop = sac.initialWindowMetrics?.insets?.top ?? 0
|
|
51
|
-
} catch {
|
|
52
|
-
_cachedSafeAreaTop = 0
|
|
53
|
-
}
|
|
54
|
-
return _cachedSafeAreaTop ?? 0
|
|
55
|
-
}
|
|
56
|
-
|
|
57
35
|
let sheetHiddenStyleSheet: HTMLStyleElement | null = null
|
|
58
36
|
|
|
59
37
|
// on web we are always relative to window, on to screen
|
|
@@ -163,74 +141,6 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
163
141
|
[screenSize, effectiveFrameSize, snapPoints, snapPointsMode]
|
|
164
142
|
)
|
|
165
143
|
|
|
166
|
-
// keyboard state tracking — just tracks height/visibility, no position animation.
|
|
167
|
-
// Position animation is handled via keyboard-adjusted positions below,
|
|
168
|
-
// matching the react-native-actions-sheet pattern.
|
|
169
|
-
const {
|
|
170
|
-
keyboardHeight,
|
|
171
|
-
isKeyboardVisible,
|
|
172
|
-
dismissKeyboard,
|
|
173
|
-
pauseKeyboardHandler,
|
|
174
|
-
flushPendingHide,
|
|
175
|
-
} = useKeyboardControllerSheet({
|
|
176
|
-
enabled: !isWeb && Boolean(moveOnKeyboardChange),
|
|
177
|
-
})
|
|
178
|
-
|
|
179
|
-
const [isDragging, setIsDragging_] = React.useState(false)
|
|
180
|
-
|
|
181
|
-
// synchronous dragging ref — set BEFORE async state commits.
|
|
182
|
-
// RNGH onBegin fires before keyboard hide event reaches JS,
|
|
183
|
-
// so the ref is true by the time activePositions memo re-evaluates.
|
|
184
|
-
// Also controls pauseKeyboardHandler to freeze keyboard state during drag.
|
|
185
|
-
const isDraggingRef = React.useRef(false)
|
|
186
|
-
const setIsDragging = React.useCallback(
|
|
187
|
-
(val: boolean) => {
|
|
188
|
-
isDraggingRef.current = val
|
|
189
|
-
pauseKeyboardHandler.current = val
|
|
190
|
-
setIsDragging_(val)
|
|
191
|
-
// when drag ends, flush any keyboard hide that was suppressed during drag
|
|
192
|
-
// so isKeyboardVisible/keyboardHeight reflect actual state
|
|
193
|
-
if (!val) {
|
|
194
|
-
flushPendingHide()
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
[pauseKeyboardHandler, flushPendingHide]
|
|
198
|
-
)
|
|
199
|
-
|
|
200
|
-
// keyboard-adjusted positions: shift snap points up by keyboard height
|
|
201
|
-
// when keyboard is visible. This drives both gesture snap calculation
|
|
202
|
-
// and animation targets — keyboard never dismissed during drag.
|
|
203
|
-
// Capped at safe area top inset so the sheet never goes above the notch/status bar
|
|
204
|
-
// (matching the react-native-actions-sheet pattern).
|
|
205
|
-
//
|
|
206
|
-
// IMPORTANT: frozen during drag to prevent gesture handler recreation.
|
|
207
|
-
// When user drags, TextInput may blur → keyboard dismisses → positions would revert,
|
|
208
|
-
// causing the gesture useMemo to recreate and cancel the active drag.
|
|
209
|
-
// The post-drag reconciliation effect handles animating to correct position after drag ends.
|
|
210
|
-
const activePositionsRef = React.useRef(positions)
|
|
211
|
-
const activePositions = React.useMemo(() => {
|
|
212
|
-
// during drag, return frozen positions to prevent gesture handler recreation.
|
|
213
|
-
// check both state (for re-render trigger) and ref (for synchronous check
|
|
214
|
-
// when keyboard hide event fires before isDragging state commits)
|
|
215
|
-
if (isDragging || isDraggingRef.current) return activePositionsRef.current
|
|
216
|
-
|
|
217
|
-
let result: number[]
|
|
218
|
-
if (!isKeyboardVisible || keyboardHeight <= 0) {
|
|
219
|
-
result = positions
|
|
220
|
-
} else {
|
|
221
|
-
const safeAreaTop = isWeb ? 0 : getSafeAreaTopInset()
|
|
222
|
-
result = positions.map((p) => {
|
|
223
|
-
// don't adjust the off-screen/close position (from dismissOnSnapToBottom's 0% snap)
|
|
224
|
-
// — it must stay at screenSize so the user can drag between real snap points
|
|
225
|
-
// without accidentally closing the sheet
|
|
226
|
-
if (screenSize && p >= screenSize) return p
|
|
227
|
-
return Math.max(safeAreaTop, p - keyboardHeight)
|
|
228
|
-
})
|
|
229
|
-
}
|
|
230
|
-
activePositionsRef.current = result
|
|
231
|
-
return result
|
|
232
|
-
}, [positions, isKeyboardVisible, keyboardHeight, screenSize, isDragging])
|
|
233
|
-
|
|
234
144
|
const { useAnimatedNumber, useAnimatedNumberStyle, useAnimatedNumberReaction } =
|
|
235
145
|
animationDriver
|
|
236
146
|
const AnimatedView = (animationDriver.View ?? TamaguiView) as typeof Animated.View
|
|
@@ -269,8 +179,8 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
269
179
|
at.current = value
|
|
270
180
|
scrollBridge.paneY = value
|
|
271
181
|
// update isAtTop for scroll enable/disable
|
|
272
|
-
//
|
|
273
|
-
const minY =
|
|
182
|
+
// positions[0] is the top snap point (minY)
|
|
183
|
+
const minY = positions[0]
|
|
274
184
|
const wasAtTop = scrollBridge.isAtTop
|
|
275
185
|
const nowAtTop = value <= minY + 5
|
|
276
186
|
if (wasAtTop !== nowAtTop) {
|
|
@@ -286,7 +196,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
286
196
|
}
|
|
287
197
|
}
|
|
288
198
|
},
|
|
289
|
-
[animationDriver,
|
|
199
|
+
[animationDriver, positions]
|
|
290
200
|
)
|
|
291
201
|
)
|
|
292
202
|
|
|
@@ -298,23 +208,20 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
298
208
|
}
|
|
299
209
|
}
|
|
300
210
|
|
|
301
|
-
const animateTo = useEvent((position: number
|
|
211
|
+
const animateTo = useEvent((position: number) => {
|
|
302
212
|
if (frameSize === 0) return
|
|
303
213
|
|
|
304
|
-
let toValue = isHidden || position === -1 ? screenSize :
|
|
214
|
+
let toValue = isHidden || position === -1 ? screenSize : positions[position]
|
|
305
215
|
|
|
306
216
|
if (at.current === toValue) return
|
|
307
217
|
|
|
308
218
|
at.current = toValue
|
|
309
219
|
stopSpring()
|
|
310
220
|
|
|
311
|
-
animatedNumber.setValue(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
...transitionConfig,
|
|
316
|
-
}
|
|
317
|
-
)
|
|
221
|
+
animatedNumber.setValue(toValue, {
|
|
222
|
+
type: 'spring',
|
|
223
|
+
...transitionConfig,
|
|
224
|
+
})
|
|
318
225
|
})
|
|
319
226
|
|
|
320
227
|
useIsomorphicLayoutEffect(() => {
|
|
@@ -375,6 +282,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
375
282
|
|
|
376
283
|
const disableDrag = props.disableDrag ?? controller?.disableDrag
|
|
377
284
|
const themeName = useThemeName()
|
|
285
|
+
const [isDragging, setIsDragging] = React.useState(false)
|
|
378
286
|
const [blockPan, setBlockPan] = React.useState(false)
|
|
379
287
|
|
|
380
288
|
const panResponder = React.useMemo(() => {
|
|
@@ -534,41 +442,9 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
534
442
|
})
|
|
535
443
|
}, [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition])
|
|
536
444
|
|
|
537
|
-
// animate to keyboard-adjusted position when keyboard state changes
|
|
538
|
-
React.useEffect(() => {
|
|
539
|
-
if (isDragging || isHidden || !open || disableAnimation) return
|
|
540
|
-
if (!frameSize || !screenSize) return
|
|
541
|
-
// use timing animation to match iOS keyboard animation (~250ms)
|
|
542
|
-
animateTo(position, { type: 'timing', duration: 250 })
|
|
543
|
-
}, [isKeyboardVisible, keyboardHeight])
|
|
544
|
-
|
|
545
|
-
// reconcile position after drag ends — if keyboard dismissed during drag
|
|
546
|
-
// (e.g., input blur), activePositions reverted but onEnd used frozen positions
|
|
547
|
-
// for snap index. This effect ensures the sheet animates to the correct
|
|
548
|
-
// non-keyboard-adjusted position for the chosen snap index.
|
|
549
|
-
const wasDragging = React.useRef(false)
|
|
550
|
-
React.useEffect(() => {
|
|
551
|
-
if (isDragging) {
|
|
552
|
-
wasDragging.current = true
|
|
553
|
-
return
|
|
554
|
-
}
|
|
555
|
-
if (!wasDragging.current) return
|
|
556
|
-
wasDragging.current = false
|
|
557
|
-
// drag just ended — reconcile position with latest activePositions
|
|
558
|
-
if (!frameSize || !screenSize || isHidden || !open) return
|
|
559
|
-
animateTo(position)
|
|
560
|
-
}, [isDragging])
|
|
561
|
-
|
|
562
|
-
// dismiss keyboard when sheet closes
|
|
563
|
-
React.useEffect(() => {
|
|
564
|
-
if (!open && isKeyboardVisible) {
|
|
565
|
-
dismissKeyboard()
|
|
566
|
-
}
|
|
567
|
-
}, [open])
|
|
568
|
-
|
|
569
445
|
// gesture handler hook for RNGH-based gesture coordination
|
|
570
446
|
const { panGesture, panGestureRef, gestureHandlerEnabled } = useGestureHandlerPan({
|
|
571
|
-
positions
|
|
447
|
+
positions,
|
|
572
448
|
frameSize,
|
|
573
449
|
setPosition,
|
|
574
450
|
animateTo,
|
|
@@ -581,10 +457,9 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
581
457
|
isShowingInnerSheet,
|
|
582
458
|
setAnimatedPosition: (val: number) => {
|
|
583
459
|
// directly set the animated value for smooth dragging
|
|
584
|
-
|
|
460
|
+
// console.warn('[RNGH-Sheet] setAnimatedPosition:', val.toFixed(1))
|
|
585
461
|
animatedNumber.setValue(val, { type: 'direct' })
|
|
586
462
|
},
|
|
587
|
-
pauseKeyboardHandler,
|
|
588
463
|
})
|
|
589
464
|
|
|
590
465
|
const handleAnimationViewLayout = React.useCallback(
|
|
@@ -625,6 +500,39 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
|
|
|
625
500
|
}
|
|
626
501
|
})
|
|
627
502
|
|
|
503
|
+
const sizeBeforeKeyboard = React.useRef<number | null>(null)
|
|
504
|
+
React.useEffect(() => {
|
|
505
|
+
if (isWeb || !moveOnKeyboardChange) return
|
|
506
|
+
const keyboardShowListener = Keyboard.addListener(
|
|
507
|
+
currentPlatform === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow',
|
|
508
|
+
(e) => {
|
|
509
|
+
if (sizeBeforeKeyboard.current !== null) return
|
|
510
|
+
sizeBeforeKeyboard.current =
|
|
511
|
+
isHidden || position === -1 ? screenSize : positions[position]
|
|
512
|
+
animatedNumber.setValue(
|
|
513
|
+
Math.max(sizeBeforeKeyboard.current - e.endCoordinates.height, 0),
|
|
514
|
+
{
|
|
515
|
+
type: 'timing',
|
|
516
|
+
duration: 250,
|
|
517
|
+
}
|
|
518
|
+
)
|
|
519
|
+
}
|
|
520
|
+
)
|
|
521
|
+
const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', () => {
|
|
522
|
+
if (sizeBeforeKeyboard.current === null) return
|
|
523
|
+
animatedNumber.setValue(sizeBeforeKeyboard.current, {
|
|
524
|
+
type: 'timing',
|
|
525
|
+
duration: 250,
|
|
526
|
+
})
|
|
527
|
+
sizeBeforeKeyboard.current = null
|
|
528
|
+
})
|
|
529
|
+
|
|
530
|
+
return () => {
|
|
531
|
+
keyboardDidHideListener.remove()
|
|
532
|
+
keyboardShowListener.remove()
|
|
533
|
+
}
|
|
534
|
+
}, [moveOnKeyboardChange, positions, position, isHidden])
|
|
535
|
+
|
|
628
536
|
// we need to set this *after* fully closed to 0, to avoid it overlapping
|
|
629
537
|
// the page when resizing quickly on web for example
|
|
630
538
|
const [opacity, setOpacity] = React.useState(open ? 1 : 0)
|
package/src/SheetScrollView.tsx
CHANGED
|
@@ -279,8 +279,6 @@ export const SheetScrollView = React.forwardRef<
|
|
|
279
279
|
}}
|
|
280
280
|
contentContainerStyle={{ minHeight: '100%' }}
|
|
281
281
|
bounces={false}
|
|
282
|
-
keyboardShouldPersistTaps="always"
|
|
283
|
-
keyboardDismissMode="none"
|
|
284
282
|
{...props}
|
|
285
283
|
>
|
|
286
284
|
{/* wrapper to measure actual content height (not min-height expanded) */}
|
package/src/types.tsx
CHANGED
|
@@ -125,50 +125,3 @@ export type ScrollBridge = {
|
|
|
125
125
|
// whether sheet is at top position (for scroll enable/disable)
|
|
126
126
|
isAtTop?: boolean
|
|
127
127
|
}
|
|
128
|
-
|
|
129
|
-
// keyboard controller sheet types
|
|
130
|
-
|
|
131
|
-
export interface KeyboardControllerSheetOptions {
|
|
132
|
-
/**
|
|
133
|
-
* Whether keyboard handling is enabled.
|
|
134
|
-
* When false, the hook is a no-op.
|
|
135
|
-
*/
|
|
136
|
-
enabled: boolean
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export interface KeyboardControllerSheetResult {
|
|
140
|
-
/**
|
|
141
|
-
* Whether keyboard-controller is available and enabled.
|
|
142
|
-
*/
|
|
143
|
-
keyboardControllerEnabled: boolean
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Current keyboard height (0 when hidden).
|
|
147
|
-
* On web or when keyboard-controller is not available, always 0.
|
|
148
|
-
*/
|
|
149
|
-
keyboardHeight: number
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Whether the keyboard is currently visible.
|
|
153
|
-
*/
|
|
154
|
-
isKeyboardVisible: boolean
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Dismiss the keyboard programmatically.
|
|
158
|
-
* Called when sheet closes to dismiss the keyboard.
|
|
159
|
-
*/
|
|
160
|
-
dismissKeyboard: () => void
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Ref to pause keyboard hide state updates (action-sheet pattern).
|
|
164
|
-
* When true, keyboard hide events are ignored — keeps isKeyboardVisible=true
|
|
165
|
-
* and keyboardHeight at their last values during drag.
|
|
166
|
-
*/
|
|
167
|
-
pauseKeyboardHandler: React.RefObject<boolean>
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Flush any keyboard hide event that was suppressed while paused.
|
|
171
|
-
* Call after drag ends to reconcile actual keyboard state.
|
|
172
|
-
*/
|
|
173
|
-
flushPendingHide: () => void
|
|
174
|
-
}
|