@hanzogui/sheet 7.3.0 → 8.0.0
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/.turbo/turbo-build.log +2 -0
- package/controller/index.cjs +2 -0
- package/controller/index.d.ts +5 -0
- package/controller/index.js +2 -0
- package/controller/index.native.cjs +2 -0
- package/controller/index.native.js +2 -0
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.cjs +137 -74
- package/dist/cjs/SheetImplementationCustom.native.js +162 -83
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/SheetScrollView.cjs +155 -34
- package/dist/cjs/SheetScrollView.native.js +160 -35
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/createSheet.cjs +7 -3
- package/dist/cjs/createSheet.native.js +7 -3
- package/dist/cjs/createSheet.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +13 -2
- package/dist/cjs/gestureState.native.js +14 -2
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/index.cjs +12 -1
- package/dist/cjs/index.native.js +11 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardAvoidance.cjs +93 -0
- package/dist/cjs/keyboardAvoidance.native.js +99 -0
- package/dist/cjs/keyboardAvoidance.native.js.map +1 -0
- package/dist/cjs/nativeSheet.cjs +3 -0
- package/dist/cjs/nativeSheet.native.js +3 -0
- package/dist/cjs/nativeSheet.native.js.map +1 -1
- package/dist/cjs/setupGestureHandler.cjs +9 -6
- package/dist/cjs/setupGestureHandler.native.js +11 -6
- package/dist/cjs/setupGestureHandler.native.js.map +1 -1
- package/dist/cjs/useGestureHandlerPan.cjs +86 -18
- package/dist/cjs/useGestureHandlerPan.native.js +91 -18
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
- package/dist/cjs/useKeyboardControllerSheet.cjs +68 -6
- package/dist/cjs/useSafeAreaInsets.cjs +44 -0
- package/dist/cjs/useSafeAreaInsets.native.js +48 -0
- package/dist/cjs/useSafeAreaInsets.native.js.map +1 -0
- package/dist/cjs/useSheetProviderProps.cjs +1 -1
- package/dist/cjs/useSheetProviderProps.native.js +1 -1
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
- package/dist/cjs/useSheetScrollViewGestures.cjs +30 -5
- package/dist/cjs/useSheetScrollViewGestures.native.js +4 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/cjs/webViewport.cjs +75 -0
- package/dist/cjs/webViewport.native.js +81 -0
- package/dist/cjs/webViewport.native.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
- package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs +143 -84
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js +173 -102
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/SheetScrollView.mjs +157 -36
- package/dist/esm/SheetScrollView.mjs.map +1 -1
- package/dist/esm/SheetScrollView.native.js +162 -37
- package/dist/esm/SheetScrollView.native.js.map +1 -1
- package/dist/esm/createSheet.mjs +9 -6
- package/dist/esm/createSheet.mjs.map +1 -1
- package/dist/esm/createSheet.native.js +19 -15
- package/dist/esm/createSheet.native.js.map +1 -1
- package/dist/esm/gestureState.mjs +13 -2
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js +14 -2
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/keyboardAvoidance.mjs +66 -0
- package/dist/esm/keyboardAvoidance.mjs.map +1 -0
- package/dist/esm/keyboardAvoidance.native.js +69 -0
- package/dist/esm/keyboardAvoidance.native.js.map +1 -0
- package/dist/esm/nativeSheet.mjs +3 -0
- package/dist/esm/nativeSheet.mjs.map +1 -1
- package/dist/esm/nativeSheet.native.js +3 -0
- package/dist/esm/nativeSheet.native.js.map +1 -1
- package/dist/esm/setupGestureHandler.mjs +9 -6
- package/dist/esm/setupGestureHandler.mjs.map +1 -1
- package/dist/esm/setupGestureHandler.native.js +11 -6
- package/dist/esm/setupGestureHandler.native.js.map +1 -1
- package/dist/esm/useGestureHandlerPan.mjs +87 -19
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
- package/dist/esm/useGestureHandlerPan.native.js +92 -19
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
- package/dist/esm/useKeyboardControllerSheet.mjs +69 -7
- package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/esm/useSafeAreaInsets.mjs +7 -0
- package/dist/esm/useSafeAreaInsets.mjs.map +1 -0
- package/dist/esm/useSafeAreaInsets.native.js +8 -0
- package/dist/esm/useSafeAreaInsets.native.js.map +1 -0
- package/dist/esm/useSheetProviderProps.mjs +1 -1
- package/dist/esm/useSheetProviderProps.mjs.map +1 -1
- package/dist/esm/useSheetProviderProps.native.js +1 -1
- package/dist/esm/useSheetProviderProps.native.js.map +1 -1
- package/dist/esm/useSheetScrollViewGestures.mjs +30 -5
- package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
- package/dist/esm/useSheetScrollViewGestures.native.js +4 -0
- package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/esm/webViewport.mjs +43 -0
- package/dist/esm/webViewport.mjs.map +1 -0
- package/dist/esm/webViewport.native.js +46 -0
- package/dist/esm/webViewport.native.js.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +143 -84
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.js +162 -83
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +157 -36
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.native.js +160 -35
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/createSheet.mjs +9 -6
- package/dist/jsx/createSheet.mjs.map +1 -1
- package/dist/jsx/createSheet.native.js +7 -3
- package/dist/jsx/createSheet.native.js.map +1 -1
- package/dist/jsx/gestureState.mjs +13 -2
- package/dist/jsx/gestureState.mjs.map +1 -1
- package/dist/jsx/gestureState.native.js +14 -2
- package/dist/jsx/gestureState.native.js.map +1 -1
- package/dist/jsx/index.js +2 -0
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -0
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +11 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keyboardAvoidance.mjs +66 -0
- package/dist/jsx/keyboardAvoidance.mjs.map +1 -0
- package/dist/jsx/keyboardAvoidance.native.js +99 -0
- package/dist/jsx/keyboardAvoidance.native.js.map +1 -0
- package/dist/jsx/nativeSheet.mjs +3 -0
- package/dist/jsx/nativeSheet.mjs.map +1 -1
- package/dist/jsx/nativeSheet.native.js +3 -0
- package/dist/jsx/nativeSheet.native.js.map +1 -1
- package/dist/jsx/setupGestureHandler.mjs +9 -6
- package/dist/jsx/setupGestureHandler.mjs.map +1 -1
- package/dist/jsx/setupGestureHandler.native.js +11 -6
- package/dist/jsx/setupGestureHandler.native.js.map +1 -1
- package/dist/jsx/useGestureHandlerPan.mjs +87 -19
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
- package/dist/jsx/useGestureHandlerPan.native.js +91 -18
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
- package/dist/jsx/useKeyboardControllerSheet.mjs +69 -7
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/jsx/useSafeAreaInsets.mjs +7 -0
- package/dist/jsx/useSafeAreaInsets.mjs.map +1 -0
- package/dist/jsx/useSafeAreaInsets.native.js +48 -0
- package/dist/jsx/useSafeAreaInsets.native.js.map +1 -0
- package/dist/jsx/useSheetProviderProps.mjs +1 -1
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
- package/dist/jsx/useSheetProviderProps.native.js +1 -1
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.mjs +30 -5
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.native.js +4 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/jsx/webViewport.mjs +43 -0
- package/dist/jsx/webViewport.mjs.map +1 -0
- package/dist/jsx/webViewport.native.js +81 -0
- package/dist/jsx/webViewport.native.js.map +1 -0
- package/next.md +78 -0
- package/package.json +30 -48
- package/setup-gesture-handler/index.cjs +2 -0
- package/setup-gesture-handler/index.js +2 -0
- package/setup-gesture-handler/index.native.cjs +2 -0
- package/setup-gesture-handler/index.native.js +2 -0
- package/src/GestureDetectorWrapper.tsx +0 -3
- package/src/SheetImplementationCustom.tsx +387 -127
- package/src/SheetScrollView.tsx +195 -22
- package/src/createSheet.tsx +20 -7
- package/src/gestureState.ts +22 -2
- package/src/index.ts +4 -0
- package/src/keyboardAvoidance.ts +121 -0
- package/src/nativeSheet.tsx +8 -1
- package/src/setupGestureHandler.ts +14 -5
- package/src/types.tsx +20 -1
- package/src/useGestureHandlerPan.tsx +94 -35
- package/src/useKeyboardControllerSheet.ts +127 -10
- package/src/useSafeAreaInsets.native.ts +29 -0
- package/src/useSafeAreaInsets.ts +19 -0
- package/src/useSheetProviderProps.tsx +12 -1
- package/src/useSheetScrollViewGestures.native.ts +4 -0
- package/src/useSheetScrollViewGestures.ts +52 -5
- package/src/webViewport.ts +100 -0
- package/test/keyboardAvoidance.test.ts +269 -0
- package/tsconfig.json +57 -0
- package/types/GestureDetectorWrapper.d.ts +1 -1
- package/types/GestureDetectorWrapper.d.ts.map +1 -1
- package/types/GestureSheetContext.d.ts +1 -1
- package/types/GestureSheetContext.d.ts.map +1 -1
- package/types/Sheet.d.ts +6 -5
- package/types/Sheet.d.ts.map +1 -1
- package/types/SheetContext.d.ts +5 -2
- package/types/SheetContext.d.ts.map +1 -1
- package/types/SheetController.d.ts +1 -2
- package/types/SheetController.d.ts.map +1 -1
- package/types/SheetImplementationCustom.d.ts +1 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts.map +1 -1
- package/types/createSheet.d.ts +13 -12
- package/types/createSheet.d.ts.map +1 -1
- package/types/gestureState.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/keyboardAvoidance.d.ts +26 -0
- package/types/keyboardAvoidance.d.ts.map +1 -0
- package/types/nativeSheet.d.ts.map +1 -1
- package/types/setupGestureHandler.d.ts.map +1 -1
- package/types/types.d.ts +10 -1
- package/types/types.d.ts.map +1 -1
- package/types/useGestureHandlerPan.d.ts +4 -1
- package/types/useGestureHandlerPan.d.ts.map +1 -1
- package/types/useKeyboardControllerSheet.d.ts +14 -3
- package/types/useKeyboardControllerSheet.d.ts.map +1 -1
- package/types/useSafeAreaInsets.d.ts +10 -0
- package/types/useSafeAreaInsets.d.ts.map +1 -0
- package/types/useSafeAreaInsets.native.d.ts +20 -0
- package/types/useSafeAreaInsets.native.d.ts.map +1 -0
- package/types/useSheetProviderProps.d.ts +3 -0
- package/types/useSheetProviderProps.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.d.ts +2 -1
- package/types/useSheetScrollViewGestures.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
- package/types/webViewport.d.ts +36 -0
- package/types/webViewport.d.ts.map +1 -0
- package/LICENSE +0 -42
|
@@ -25,9 +25,12 @@ __export(useGestureHandlerPan_exports, {
|
|
|
25
25
|
useGestureHandlerPan: () => useGestureHandlerPan
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(useGestureHandlerPan_exports);
|
|
28
|
+
var import_constants = require("@hanzogui/constants");
|
|
28
29
|
var import_react = require("react");
|
|
29
30
|
var import_gestureState = require("./gestureState.cjs");
|
|
31
|
+
var import_keyboardAvoidance = require("./keyboardAvoidance.cjs");
|
|
30
32
|
const AT_TOP_THRESHOLD = 5;
|
|
33
|
+
const SCROLL_HANDOFF_THRESHOLD = 160;
|
|
31
34
|
function useGestureHandlerPan(config) {
|
|
32
35
|
const {
|
|
33
36
|
positions,
|
|
@@ -46,6 +49,16 @@ function useGestureHandlerPan(config) {
|
|
|
46
49
|
} = config;
|
|
47
50
|
const gestureHandlerEnabled = (0, import_gestureState.isGestureHandlerEnabled)();
|
|
48
51
|
const panGestureRef = (0, import_react.useRef)(null);
|
|
52
|
+
const releaseConfigRef = (0, import_react.useRef)({
|
|
53
|
+
dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,
|
|
54
|
+
snapPointsMode: config.snapPointsMode ?? "percent",
|
|
55
|
+
isKeyboardVisible: config.isKeyboardVisible === true
|
|
56
|
+
});
|
|
57
|
+
releaseConfigRef.current = {
|
|
58
|
+
dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,
|
|
59
|
+
snapPointsMode: config.snapPointsMode ?? "percent",
|
|
60
|
+
isKeyboardVisible: config.isKeyboardVisible === true
|
|
61
|
+
};
|
|
49
62
|
const gestureStateRef = (0, import_react.useRef)({
|
|
50
63
|
startY: 0,
|
|
51
64
|
// track last translation when pan was active (for position calculation after handoff)
|
|
@@ -60,16 +73,43 @@ function useGestureHandlerPan(config) {
|
|
|
60
73
|
// causing positions to revert. Frozen positions ensure stable snap calculation.
|
|
61
74
|
frozenPositions: [],
|
|
62
75
|
frozenMinY: 0,
|
|
76
|
+
frozenIsKeyboardVisible: false,
|
|
63
77
|
// whether pan gesture actually started (vs just a tap in onBegin)
|
|
64
|
-
panStarted: false
|
|
78
|
+
panStarted: false,
|
|
79
|
+
startedBelowTop: false,
|
|
80
|
+
upwardDragAfterTop: 0,
|
|
81
|
+
scrollUnlockedAfterTop: false,
|
|
82
|
+
keepScrollLockedAfterEnd: false
|
|
65
83
|
});
|
|
84
|
+
const unlockScrollTimer = (0, import_react.useRef)(null);
|
|
85
|
+
(0, import_react.useEffect)(() => {
|
|
86
|
+
return () => {
|
|
87
|
+
if (unlockScrollTimer.current) {
|
|
88
|
+
clearTimeout(unlockScrollTimer.current);
|
|
89
|
+
unlockScrollTimer.current = null;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}, []);
|
|
66
93
|
const onStart = (0, import_react.useCallback)(() => {
|
|
67
94
|
stopSpring();
|
|
68
95
|
}, [stopSpring]);
|
|
69
|
-
const onEnd = (0, import_react.useCallback)((closestPoint, animationOverride) => {
|
|
96
|
+
const onEnd = (0, import_react.useCallback)((closestPoint, animationOverride, keepScrollLocked = false) => {
|
|
97
|
+
if (unlockScrollTimer.current) {
|
|
98
|
+
clearTimeout(unlockScrollTimer.current);
|
|
99
|
+
unlockScrollTimer.current = null;
|
|
100
|
+
}
|
|
70
101
|
setIsDragging(false);
|
|
71
102
|
scrollBridge.setParentDragging(false);
|
|
72
|
-
scrollBridge.
|
|
103
|
+
scrollBridge.lockScrollAtTop = false;
|
|
104
|
+
if (keepScrollLocked) {
|
|
105
|
+
scrollBridge.setScrollEnabled?.(false, 0);
|
|
106
|
+
unlockScrollTimer.current = setTimeout(() => {
|
|
107
|
+
unlockScrollTimer.current = null;
|
|
108
|
+
scrollBridge.setScrollEnabled?.(true);
|
|
109
|
+
}, 160);
|
|
110
|
+
} else {
|
|
111
|
+
scrollBridge.setScrollEnabled?.(true);
|
|
112
|
+
}
|
|
73
113
|
setPosition(closestPoint);
|
|
74
114
|
animateTo(closestPoint, animationOverride);
|
|
75
115
|
}, [setIsDragging, scrollBridge, setPosition, animateTo]);
|
|
@@ -100,6 +140,16 @@ function useGestureHandlerPan(config) {
|
|
|
100
140
|
gs.scrollEngaged = currentScrollY > 0;
|
|
101
141
|
gs.frozenPositions = [...positions];
|
|
102
142
|
gs.frozenMinY = minY;
|
|
143
|
+
gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;
|
|
144
|
+
gs.startedBelowTop = !atTop;
|
|
145
|
+
gs.upwardDragAfterTop = 0;
|
|
146
|
+
gs.scrollUnlockedAfterTop = false;
|
|
147
|
+
gs.keepScrollLockedAfterEnd = false;
|
|
148
|
+
scrollBridge.lockScrollAtTop = false;
|
|
149
|
+
if (unlockScrollTimer.current) {
|
|
150
|
+
clearTimeout(unlockScrollTimer.current);
|
|
151
|
+
unlockScrollTimer.current = null;
|
|
152
|
+
}
|
|
103
153
|
if (!atTop) {
|
|
104
154
|
scrollBridge.setScrollEnabled?.(false, 0);
|
|
105
155
|
}
|
|
@@ -141,13 +191,24 @@ function useGestureHandlerPan(config) {
|
|
|
141
191
|
}
|
|
142
192
|
} else {
|
|
143
193
|
if (hasScrollableContent) {
|
|
144
|
-
|
|
194
|
+
if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {
|
|
195
|
+
gs.upwardDragAfterTop += Math.max(0, -deltaY);
|
|
196
|
+
if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {
|
|
197
|
+
gs.scrollUnlockedAfterTop = true;
|
|
198
|
+
panHandles = false;
|
|
199
|
+
} else {
|
|
200
|
+
panHandles = true;
|
|
201
|
+
}
|
|
202
|
+
} else {
|
|
203
|
+
panHandles = false;
|
|
204
|
+
}
|
|
145
205
|
} else {
|
|
146
206
|
panHandles = true;
|
|
147
207
|
}
|
|
148
208
|
}
|
|
149
209
|
}
|
|
150
210
|
if (panHandles) {
|
|
211
|
+
scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
|
|
151
212
|
const lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
|
|
152
213
|
scrollBridge.setScrollEnabled?.(false, lockTo);
|
|
153
214
|
gs.accumulatedOffset += deltaY;
|
|
@@ -156,35 +217,42 @@ function useGestureHandlerPan(config) {
|
|
|
156
217
|
setAnimatedPosition(newPosition);
|
|
157
218
|
scrollBridge.setParentDragging(newPosition > minY);
|
|
158
219
|
} else {
|
|
220
|
+
scrollBridge.lockScrollAtTop = false;
|
|
159
221
|
scrollBridge.setScrollEnabled?.(true);
|
|
222
|
+
scrollBridge.setParentDragging(false);
|
|
160
223
|
}
|
|
161
224
|
}).onEnd(event => {
|
|
162
225
|
const {
|
|
163
226
|
velocityY
|
|
164
227
|
} = event;
|
|
165
228
|
const currentPos = gs.startY + gs.accumulatedOffset;
|
|
166
|
-
|
|
229
|
+
const keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
|
|
230
|
+
scrollBridge.lockScrollAtTop = false;
|
|
231
|
+
scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;
|
|
232
|
+
gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;
|
|
167
233
|
const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
|
|
168
234
|
const snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
|
|
169
235
|
if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
170
|
-
onEnd(0);
|
|
236
|
+
onEnd(0, void 0, keepScrollLockedAfterEnd);
|
|
171
237
|
return;
|
|
172
238
|
}
|
|
173
239
|
const velocity = velocityY / 1e3;
|
|
174
240
|
const projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
241
|
+
const releaseConfig = releaseConfigRef.current;
|
|
242
|
+
const closestPoint = (0, import_keyboardAvoidance.getSheetReleasePosition)({
|
|
243
|
+
positions: snapPositions,
|
|
244
|
+
projectedEnd,
|
|
245
|
+
currentPosition: currentPos,
|
|
246
|
+
frameSize,
|
|
247
|
+
dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,
|
|
248
|
+
snapPointsMode: releaseConfig.snapPointsMode,
|
|
249
|
+
isKeyboardVisible: gs.frozenIsKeyboardVisible,
|
|
250
|
+
isWeb: import_constants.isWeb
|
|
251
|
+
});
|
|
252
|
+
onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);
|
|
186
253
|
}).onFinalize(() => {
|
|
187
|
-
scrollBridge.
|
|
254
|
+
scrollBridge.lockScrollAtTop = false;
|
|
255
|
+
scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;
|
|
188
256
|
if (gs.panStarted) {
|
|
189
257
|
setIsDragging(false);
|
|
190
258
|
} else {
|
|
@@ -27,9 +27,12 @@ __export(useGestureHandlerPan_exports, {
|
|
|
27
27
|
useGestureHandlerPan: () => useGestureHandlerPan
|
|
28
28
|
});
|
|
29
29
|
module.exports = __toCommonJS(useGestureHandlerPan_exports);
|
|
30
|
+
var import_constants = require("@hanzogui/constants");
|
|
30
31
|
var import_react = require("react");
|
|
31
32
|
var import_gestureState = require("./gestureState.native.js");
|
|
33
|
+
var import_keyboardAvoidance = require("./keyboardAvoidance.native.js");
|
|
32
34
|
var AT_TOP_THRESHOLD = 5;
|
|
35
|
+
var SCROLL_HANDOFF_THRESHOLD = 160;
|
|
33
36
|
function useGestureHandlerPan(config) {
|
|
34
37
|
var {
|
|
35
38
|
positions,
|
|
@@ -48,6 +51,18 @@ function useGestureHandlerPan(config) {
|
|
|
48
51
|
} = config;
|
|
49
52
|
var gestureHandlerEnabled = (0, import_gestureState.isGestureHandlerEnabled)();
|
|
50
53
|
var panGestureRef = (0, import_react.useRef)(null);
|
|
54
|
+
var _config_snapPointsMode;
|
|
55
|
+
var releaseConfigRef = (0, import_react.useRef)({
|
|
56
|
+
dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,
|
|
57
|
+
snapPointsMode: (_config_snapPointsMode = config.snapPointsMode) !== null && _config_snapPointsMode !== void 0 ? _config_snapPointsMode : "percent",
|
|
58
|
+
isKeyboardVisible: config.isKeyboardVisible === true
|
|
59
|
+
});
|
|
60
|
+
var _config_snapPointsMode1;
|
|
61
|
+
releaseConfigRef.current = {
|
|
62
|
+
dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,
|
|
63
|
+
snapPointsMode: (_config_snapPointsMode1 = config.snapPointsMode) !== null && _config_snapPointsMode1 !== void 0 ? _config_snapPointsMode1 : "percent",
|
|
64
|
+
isKeyboardVisible: config.isKeyboardVisible === true
|
|
65
|
+
};
|
|
51
66
|
var gestureStateRef = (0, import_react.useRef)({
|
|
52
67
|
startY: 0,
|
|
53
68
|
// track last translation when pan was active (for position calculation after handoff)
|
|
@@ -62,17 +77,47 @@ function useGestureHandlerPan(config) {
|
|
|
62
77
|
// causing positions to revert. Frozen positions ensure stable snap calculation.
|
|
63
78
|
frozenPositions: [],
|
|
64
79
|
frozenMinY: 0,
|
|
80
|
+
frozenIsKeyboardVisible: false,
|
|
65
81
|
// whether pan gesture actually started (vs just a tap in onBegin)
|
|
66
|
-
panStarted: false
|
|
82
|
+
panStarted: false,
|
|
83
|
+
startedBelowTop: false,
|
|
84
|
+
upwardDragAfterTop: 0,
|
|
85
|
+
scrollUnlockedAfterTop: false,
|
|
86
|
+
keepScrollLockedAfterEnd: false
|
|
67
87
|
});
|
|
88
|
+
var unlockScrollTimer = (0, import_react.useRef)(null);
|
|
89
|
+
(0, import_react.useEffect)(function () {
|
|
90
|
+
return function () {
|
|
91
|
+
if (unlockScrollTimer.current) {
|
|
92
|
+
clearTimeout(unlockScrollTimer.current);
|
|
93
|
+
unlockScrollTimer.current = null;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}, []);
|
|
68
97
|
var onStart = (0, import_react.useCallback)(function () {
|
|
69
98
|
stopSpring();
|
|
70
99
|
}, [stopSpring]);
|
|
71
100
|
var onEnd = (0, import_react.useCallback)(function (closestPoint, animationOverride) {
|
|
72
|
-
var
|
|
101
|
+
var keepScrollLocked = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
|
|
102
|
+
if (unlockScrollTimer.current) {
|
|
103
|
+
clearTimeout(unlockScrollTimer.current);
|
|
104
|
+
unlockScrollTimer.current = null;
|
|
105
|
+
}
|
|
73
106
|
setIsDragging(false);
|
|
74
107
|
scrollBridge.setParentDragging(false);
|
|
75
|
-
|
|
108
|
+
scrollBridge.lockScrollAtTop = false;
|
|
109
|
+
if (keepScrollLocked) {
|
|
110
|
+
var _scrollBridge_setScrollEnabled;
|
|
111
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);
|
|
112
|
+
unlockScrollTimer.current = setTimeout(function () {
|
|
113
|
+
var _scrollBridge_setScrollEnabled2;
|
|
114
|
+
unlockScrollTimer.current = null;
|
|
115
|
+
(_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 ? void 0 : _scrollBridge_setScrollEnabled2.call(scrollBridge, true);
|
|
116
|
+
}, 160);
|
|
117
|
+
} else {
|
|
118
|
+
var _scrollBridge_setScrollEnabled1;
|
|
119
|
+
(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);
|
|
120
|
+
}
|
|
76
121
|
setPosition(closestPoint);
|
|
77
122
|
animateTo(closestPoint, animationOverride);
|
|
78
123
|
}, [setIsDragging, scrollBridge, setPosition, animateTo]);
|
|
@@ -103,6 +148,16 @@ function useGestureHandlerPan(config) {
|
|
|
103
148
|
gs.scrollEngaged = currentScrollY > 0;
|
|
104
149
|
gs.frozenPositions = [...positions];
|
|
105
150
|
gs.frozenMinY = minY;
|
|
151
|
+
gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;
|
|
152
|
+
gs.startedBelowTop = !atTop;
|
|
153
|
+
gs.upwardDragAfterTop = 0;
|
|
154
|
+
gs.scrollUnlockedAfterTop = false;
|
|
155
|
+
gs.keepScrollLockedAfterEnd = false;
|
|
156
|
+
scrollBridge.lockScrollAtTop = false;
|
|
157
|
+
if (unlockScrollTimer.current) {
|
|
158
|
+
clearTimeout(unlockScrollTimer.current);
|
|
159
|
+
unlockScrollTimer.current = null;
|
|
160
|
+
}
|
|
106
161
|
if (!atTop) {
|
|
107
162
|
var _scrollBridge_setScrollEnabled;
|
|
108
163
|
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);
|
|
@@ -145,7 +200,17 @@ function useGestureHandlerPan(config) {
|
|
|
145
200
|
}
|
|
146
201
|
} else {
|
|
147
202
|
if (hasScrollableContent) {
|
|
148
|
-
|
|
203
|
+
if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {
|
|
204
|
+
gs.upwardDragAfterTop += Math.max(0, -deltaY);
|
|
205
|
+
if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {
|
|
206
|
+
gs.scrollUnlockedAfterTop = true;
|
|
207
|
+
panHandles = false;
|
|
208
|
+
} else {
|
|
209
|
+
panHandles = true;
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
panHandles = false;
|
|
213
|
+
}
|
|
149
214
|
} else {
|
|
150
215
|
panHandles = true;
|
|
151
216
|
}
|
|
@@ -153,6 +218,7 @@ function useGestureHandlerPan(config) {
|
|
|
153
218
|
}
|
|
154
219
|
if (panHandles) {
|
|
155
220
|
var _scrollBridge_setScrollEnabled;
|
|
221
|
+
scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
|
|
156
222
|
var lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
|
|
157
223
|
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, lockTo);
|
|
158
224
|
gs.accumulatedOffset += deltaY;
|
|
@@ -162,35 +228,42 @@ function useGestureHandlerPan(config) {
|
|
|
162
228
|
scrollBridge.setParentDragging(newPosition > minY);
|
|
163
229
|
} else {
|
|
164
230
|
var _scrollBridge_setScrollEnabled1;
|
|
231
|
+
scrollBridge.lockScrollAtTop = false;
|
|
165
232
|
(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);
|
|
233
|
+
scrollBridge.setParentDragging(false);
|
|
166
234
|
}
|
|
167
235
|
}).onEnd(function (event) {
|
|
168
236
|
var {
|
|
169
237
|
velocityY
|
|
170
238
|
} = event;
|
|
171
239
|
var currentPos = gs.startY + gs.accumulatedOffset;
|
|
172
|
-
|
|
240
|
+
var keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
|
|
241
|
+
scrollBridge.lockScrollAtTop = false;
|
|
242
|
+
scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;
|
|
243
|
+
gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;
|
|
173
244
|
var snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
|
|
174
245
|
var snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
|
|
175
246
|
if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
176
|
-
onEnd(0);
|
|
247
|
+
onEnd(0, void 0, keepScrollLockedAfterEnd);
|
|
177
248
|
return;
|
|
178
249
|
}
|
|
179
250
|
var velocity = velocityY / 1e3;
|
|
180
251
|
var projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
181
|
-
var
|
|
182
|
-
var
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
252
|
+
var releaseConfig = releaseConfigRef.current;
|
|
253
|
+
var closestPoint = (0, import_keyboardAvoidance.getSheetReleasePosition)({
|
|
254
|
+
positions: snapPositions,
|
|
255
|
+
projectedEnd,
|
|
256
|
+
currentPosition: currentPos,
|
|
257
|
+
frameSize,
|
|
258
|
+
dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,
|
|
259
|
+
snapPointsMode: releaseConfig.snapPointsMode,
|
|
260
|
+
isKeyboardVisible: gs.frozenIsKeyboardVisible,
|
|
261
|
+
isWeb: import_constants.isWeb
|
|
262
|
+
});
|
|
263
|
+
onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);
|
|
192
264
|
}).onFinalize(function () {
|
|
193
|
-
scrollBridge.
|
|
265
|
+
scrollBridge.lockScrollAtTop = false;
|
|
266
|
+
scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;
|
|
194
267
|
if (gs.panStarted) {
|
|
195
268
|
setIsDragging(false);
|
|
196
269
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useGestureHandlerPan_exports","__export","useGestureHandlerPan","module","exports","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useGestureHandlerPan_exports","__export","useGestureHandlerPan","module","exports","import_constants","require","import_react","import_gestureState","import_keyboardAvoidance","AT_TOP_THRESHOLD","SCROLL_HANDOFF_THRESHOLD","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","isGestureHandlerEnabled","panGestureRef","useRef","_config_snapPointsMode","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","_config_snapPointsMode1","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","startedBelowTop","upwardDragAfterTop","scrollUnlockedAfterTop","keepScrollLockedAfterEnd","unlockScrollTimer","useEffect","clearTimeout","onStart","useCallback","onEnd","closestPoint","animationOverride","keepScrollLocked","arguments","length","setParentDragging","lockScrollAtTop","_scrollBridge_setScrollEnabled","setScrollEnabled","call","setTimeout","_scrollBridge_setScrollEnabled2","_scrollBridge_setScrollEnabled1","panGesture","useMemo","Gesture","getGestureHandlerState","minY","gs","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","Math","max","lockTo","newPosition","paneY","velocityY","scrollLockY","snapPositions","snapMinY","velocity","projectedEnd","releaseConfig","getSheetReleasePosition","currentPosition","isWeb","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -26,15 +26,77 @@ __export(useKeyboardControllerSheet_exports, {
|
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(useKeyboardControllerSheet_exports);
|
|
28
28
|
var import_react = require("react");
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
var import_constants = require("@hanzogui/constants");
|
|
30
|
+
var import_webViewport = require("./webViewport.cjs");
|
|
31
|
+
function useKeyboardControllerSheet(options) {
|
|
32
|
+
const {
|
|
33
|
+
enabled
|
|
34
|
+
} = options;
|
|
35
|
+
const [keyboardHeight, setKeyboardHeight] = (0, import_react.useState)(() => import_constants.isWeb && enabled && typeof window !== "undefined" && window.visualViewport ? (() => {
|
|
36
|
+
const resizeHeight = (0, import_webViewport.getWebKeyboardResizeHeight)();
|
|
37
|
+
return resizeHeight >= import_webViewport.MIN_KEYBOARD_HEIGHT && (0, import_webViewport.isEditableElement)(document.activeElement) ? (0, import_webViewport.getWebKeyboardBottomInset)() : 0;
|
|
38
|
+
})() : 0);
|
|
39
|
+
const [isKeyboardVisible, setIsKeyboardVisible] = (0, import_react.useState)(() => keyboardHeight > 0);
|
|
31
40
|
const pauseKeyboardHandler = (0, import_react.useRef)(false);
|
|
41
|
+
const pendingHide = (0, import_react.useRef)(false);
|
|
42
|
+
const isVisibleRef = (0, import_react.useRef)(false);
|
|
43
|
+
isVisibleRef.current = isKeyboardVisible;
|
|
44
|
+
const dismissKeyboard = (0, import_react.useCallback)(() => {
|
|
45
|
+
if (typeof document === "undefined") return;
|
|
46
|
+
const active = document.activeElement;
|
|
47
|
+
if ((0, import_webViewport.isEditableElement)(active)) {
|
|
48
|
+
active?.blur?.();
|
|
49
|
+
}
|
|
50
|
+
}, []);
|
|
51
|
+
const flushPendingHide = (0, import_react.useCallback)(() => {
|
|
52
|
+
if (pendingHide.current) {
|
|
53
|
+
pendingHide.current = false;
|
|
54
|
+
setIsKeyboardVisible(false);
|
|
55
|
+
setKeyboardHeight(0);
|
|
56
|
+
}
|
|
57
|
+
}, []);
|
|
58
|
+
(0, import_react.useEffect)(() => {
|
|
59
|
+
if (!import_constants.isWeb || !enabled) return;
|
|
60
|
+
if (typeof window === "undefined") return;
|
|
61
|
+
const vv = window.visualViewport;
|
|
62
|
+
if (!vv) return;
|
|
63
|
+
const update = () => {
|
|
64
|
+
const resizeHeight = (0, import_webViewport.getWebKeyboardResizeHeight)();
|
|
65
|
+
const height = (0, import_webViewport.getWebKeyboardBottomInset)();
|
|
66
|
+
const tall = resizeHeight >= import_webViewport.MIN_KEYBOARD_HEIGHT;
|
|
67
|
+
const editableFocused = (0, import_webViewport.isEditableElement)(document.activeElement);
|
|
68
|
+
const visible = tall && (editableFocused || isVisibleRef.current);
|
|
69
|
+
if (!visible) {
|
|
70
|
+
if (pauseKeyboardHandler.current && isVisibleRef.current) {
|
|
71
|
+
pendingHide.current = true;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
setIsKeyboardVisible(false);
|
|
75
|
+
setKeyboardHeight(0);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
pendingHide.current = false;
|
|
79
|
+
setIsKeyboardVisible(true);
|
|
80
|
+
setKeyboardHeight(prev => prev === height ? prev : height);
|
|
81
|
+
};
|
|
82
|
+
vv.addEventListener("resize", update);
|
|
83
|
+
vv.addEventListener("scroll", update);
|
|
84
|
+
window.addEventListener("focusin", update);
|
|
85
|
+
window.addEventListener("focusout", update);
|
|
86
|
+
update();
|
|
87
|
+
return () => {
|
|
88
|
+
vv.removeEventListener("resize", update);
|
|
89
|
+
vv.removeEventListener("scroll", update);
|
|
90
|
+
window.removeEventListener("focusin", update);
|
|
91
|
+
window.removeEventListener("focusout", update);
|
|
92
|
+
};
|
|
93
|
+
}, [enabled]);
|
|
32
94
|
return {
|
|
33
95
|
keyboardControllerEnabled: false,
|
|
34
|
-
keyboardHeight
|
|
35
|
-
isKeyboardVisible
|
|
36
|
-
dismissKeyboard
|
|
96
|
+
keyboardHeight,
|
|
97
|
+
isKeyboardVisible,
|
|
98
|
+
dismissKeyboard,
|
|
37
99
|
pauseKeyboardHandler,
|
|
38
|
-
flushPendingHide
|
|
100
|
+
flushPendingHide
|
|
39
101
|
};
|
|
40
102
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
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: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: true
|
|
30
|
+
}) : target, mod));
|
|
31
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: true
|
|
33
|
+
}), mod);
|
|
34
|
+
var useSafeAreaInsets_exports = {};
|
|
35
|
+
__export(useSafeAreaInsets_exports, {
|
|
36
|
+
SafeAreaInsetsContext: () => SafeAreaInsetsContext,
|
|
37
|
+
useSafeAreaInsets: () => useSafeAreaInsets
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(useSafeAreaInsets_exports);
|
|
40
|
+
var React = __toESM(require("react"), 1);
|
|
41
|
+
const SafeAreaInsetsContext = React.createContext(null);
|
|
42
|
+
function useSafeAreaInsets() {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
26
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
27
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
30
|
+
value: mod,
|
|
31
|
+
enumerable: true
|
|
32
|
+
}) : target, mod));
|
|
33
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
34
|
+
value: true
|
|
35
|
+
}), mod);
|
|
36
|
+
var useSafeAreaInsets_native_exports = {};
|
|
37
|
+
__export(useSafeAreaInsets_native_exports, {
|
|
38
|
+
SafeAreaInsetsContext: () => SafeAreaInsetsContext,
|
|
39
|
+
useSafeAreaInsets: () => useSafeAreaInsets
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(useSafeAreaInsets_native_exports);
|
|
42
|
+
var React = __toESM(require("react"), 1);
|
|
43
|
+
var import_react_native_safe_area_context = require("react-native-safe-area-context");
|
|
44
|
+
var SafeAreaInsetsContext = import_react_native_safe_area_context.SafeAreaInsetsContext;
|
|
45
|
+
function useSafeAreaInsets() {
|
|
46
|
+
return React.useContext(SafeAreaInsetsContext);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=useSafeAreaInsets.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useSafeAreaInsets_native_exports","__export","SafeAreaInsetsContext","useSafeAreaInsets","module","exports","__toCommonJS","React","__toESM","require","import_react_native_safe_area_context","useContext"],"sources":["../../src/useSafeAreaInsets.native.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gCAAA;AAAAC,QAAA,CAAAD,gCAAA;EAAAE,qBAAA,EAAAA,CAAA,KAAAA,qBAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,gCAAA;AAAA,IAAAO,KAAA,GAAuBC,OAAA,CAAAC,OAAA;AACvB,IAAAC,qCAAA,GAAiED,OAAA;AAI1D,IAAIP,qBAAA,GAAwBQ,qCAAA,CAAAR,qBAAA;AAexB,SAASC,kBAAA,EAAoB;EACpC,OAAOI,KAAA,CAAMI,UAAA,CAAWT,qBAAqB;AACjD","ignoreList":[]}
|
|
@@ -108,7 +108,7 @@ function useSheetProviderProps(props, state, options = {}) {
|
|
|
108
108
|
animationDriver
|
|
109
109
|
} = (0, import_core.useConfiguration)();
|
|
110
110
|
if (!animationDriver) {
|
|
111
|
-
throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in
|
|
111
|
+
throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in hanzogui.config.ts");
|
|
112
112
|
}
|
|
113
113
|
const scrollBridge = (0, import_use_constant.useConstant)(() => {
|
|
114
114
|
const parentDragListeners = /* @__PURE__ */new Set();
|
|
@@ -119,7 +119,7 @@ function useSheetProviderProps(props, state) {
|
|
|
119
119
|
animationDriver
|
|
120
120
|
} = (0, import_core.useConfiguration)();
|
|
121
121
|
if (!animationDriver) {
|
|
122
|
-
throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in
|
|
122
|
+
throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in hanzogui.config.ts");
|
|
123
123
|
}
|
|
124
124
|
var scrollBridge = (0, import_use_constant.useConstant)(function () {
|
|
125
125
|
var parentDragListeners = /* @__PURE__ */new Set();
|