@hanzogui/sheet 7.0.0 → 7.3.1
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/LICENSE +40 -19
- package/dist/cjs/GestureDetectorWrapper.cjs +54 -0
- package/dist/cjs/GestureDetectorWrapper.native.js +58 -0
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/cjs/GestureSheetContext.cjs +54 -0
- package/dist/cjs/GestureSheetContext.native.js +58 -0
- package/dist/cjs/GestureSheetContext.native.js.map +1 -0
- package/dist/cjs/Sheet.cjs +119 -0
- package/dist/cjs/Sheet.native.js +122 -0
- package/dist/cjs/Sheet.native.js.map +1 -0
- package/dist/cjs/SheetContext.cjs +34 -0
- package/dist/cjs/SheetContext.native.js +37 -0
- package/dist/cjs/SheetContext.native.js.map +1 -0
- package/dist/cjs/SheetController.cjs +73 -0
- package/dist/cjs/SheetController.native.js +79 -0
- package/dist/cjs/SheetController.native.js.map +1 -0
- package/dist/cjs/SheetImplementationCustom.cjs +589 -0
- package/dist/cjs/SheetImplementationCustom.native.js +615 -0
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -0
- package/dist/cjs/SheetScrollView.cjs +216 -0
- package/dist/cjs/SheetScrollView.native.js +223 -0
- package/dist/cjs/SheetScrollView.native.js.map +1 -0
- package/dist/cjs/constants.cjs +34 -0
- package/dist/cjs/constants.native.js +37 -0
- package/dist/cjs/constants.native.js.map +1 -0
- package/dist/cjs/contexts.cjs +44 -0
- package/dist/cjs/contexts.native.js +47 -0
- package/dist/cjs/contexts.native.js.map +1 -0
- package/dist/cjs/controller.cjs +31 -0
- package/dist/cjs/controller.native.js +34 -0
- package/dist/cjs/controller.native.js.map +1 -0
- package/dist/cjs/createSheet.cjs +190 -0
- package/dist/cjs/createSheet.native.js +200 -0
- package/dist/cjs/createSheet.native.js.map +1 -0
- package/dist/cjs/gestureState.cjs +41 -0
- package/dist/cjs/gestureState.native.js +44 -0
- package/dist/cjs/gestureState.native.js.map +1 -0
- package/dist/cjs/helpers.cjs +35 -0
- package/dist/cjs/helpers.native.js +39 -0
- package/dist/cjs/helpers.native.js.map +1 -0
- package/dist/cjs/index.cjs +30 -0
- package/dist/cjs/index.native.js +33 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/nativeSheet.cjs +96 -0
- package/dist/cjs/nativeSheet.native.js +106 -0
- package/dist/cjs/nativeSheet.native.js.map +1 -0
- package/dist/cjs/setupGestureHandler.cjs +52 -0
- package/dist/cjs/setupGestureHandler.native.js +55 -0
- package/dist/cjs/setupGestureHandler.native.js.map +1 -0
- package/dist/cjs/types.cjs +18 -0
- package/dist/cjs/types.native.js +21 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/useGestureHandlerPan.cjs +206 -0
- package/dist/cjs/useGestureHandlerPan.native.js +213 -0
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -0
- package/dist/cjs/useKeyboardControllerSheet.cjs +40 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js +132 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/cjs/useSheet.cjs +29 -0
- package/dist/cjs/useSheet.native.js +34 -0
- package/dist/cjs/useSheet.native.js.map +1 -0
- package/dist/cjs/useSheetController.cjs +52 -0
- package/dist/cjs/useSheetController.native.js +55 -0
- package/dist/cjs/useSheetController.native.js.map +1 -0
- package/dist/cjs/useSheetOffscreenSize.cjs +63 -0
- package/dist/cjs/useSheetOffscreenSize.native.js +70 -0
- package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/cjs/useSheetOpenState.cjs +52 -0
- package/dist/cjs/useSheetOpenState.native.js +58 -0
- package/dist/cjs/useSheetOpenState.native.js.map +1 -0
- package/dist/cjs/useSheetProviderProps.cjs +181 -0
- package/dist/cjs/useSheetProviderProps.native.js +196 -0
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -0
- package/dist/cjs/useSheetScrollViewGestures.cjs +166 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js +159 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.mjs +29 -0
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/esm/GestureDetectorWrapper.native.js +30 -0
- package/dist/esm/GestureDetectorWrapper.native.js.map +1 -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/Sheet.mjs +89 -0
- package/dist/esm/Sheet.mjs.map +1 -0
- package/dist/esm/Sheet.native.js +89 -0
- package/dist/esm/Sheet.native.js.map +1 -0
- package/dist/esm/SheetContext.mjs +6 -0
- package/dist/esm/SheetContext.mjs.map +1 -0
- package/dist/esm/SheetContext.native.js +6 -0
- package/dist/esm/SheetContext.native.js.map +1 -0
- package/dist/esm/SheetController.mjs +37 -0
- package/dist/esm/SheetController.mjs.map +1 -0
- package/dist/esm/SheetController.native.js +40 -0
- package/dist/esm/SheetController.native.js.map +1 -0
- package/dist/esm/SheetImplementationCustom.mjs +552 -0
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -0
- package/dist/esm/SheetImplementationCustom.native.js +572 -0
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -0
- package/dist/esm/SheetScrollView.mjs +180 -0
- package/dist/esm/SheetScrollView.mjs.map +1 -0
- package/dist/esm/SheetScrollView.native.js +184 -0
- package/dist/esm/SheetScrollView.native.js.map +1 -0
- package/dist/esm/constants.mjs +6 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/constants.native.js +6 -0
- package/dist/esm/constants.native.js.map +1 -0
- package/dist/esm/contexts.mjs +7 -0
- package/dist/esm/contexts.mjs.map +1 -0
- package/dist/esm/contexts.native.js +7 -0
- package/dist/esm/contexts.native.js.map +1 -0
- package/dist/esm/controller.mjs +4 -0
- package/dist/esm/controller.mjs.map +1 -0
- package/dist/esm/controller.native.js +4 -0
- package/dist/esm/controller.native.js.map +1 -0
- package/dist/esm/createSheet.mjs +165 -0
- package/dist/esm/createSheet.mjs.map +1 -0
- package/dist/esm/createSheet.native.js +172 -0
- package/dist/esm/createSheet.native.js.map +1 -0
- package/dist/esm/gestureState.mjs +13 -0
- package/dist/esm/gestureState.mjs.map +1 -0
- package/dist/esm/gestureState.native.js +13 -0
- package/dist/esm/gestureState.native.js.map +1 -0
- package/dist/esm/helpers.mjs +10 -0
- package/dist/esm/helpers.mjs.map +1 -0
- package/dist/esm/helpers.native.js +11 -0
- package/dist/esm/helpers.native.js.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +12 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +12 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/nativeSheet.mjs +70 -0
- package/dist/esm/nativeSheet.mjs.map +1 -0
- package/dist/esm/nativeSheet.native.js +77 -0
- package/dist/esm/nativeSheet.native.js.map +1 -0
- package/dist/esm/setupGestureHandler.mjs +26 -0
- package/dist/esm/setupGestureHandler.mjs.map +1 -0
- package/dist/esm/setupGestureHandler.native.js +26 -0
- package/dist/esm/setupGestureHandler.native.js.map +1 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/useGestureHandlerPan.mjs +181 -0
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
- package/dist/esm/useGestureHandlerPan.native.js +185 -0
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -0
- package/dist/esm/useKeyboardControllerSheet.mjs +15 -0
- package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -0
- package/dist/esm/useKeyboardControllerSheet.native.js +104 -0
- package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/esm/useSheet.mjs +4 -0
- package/dist/esm/useSheet.mjs.map +1 -0
- package/dist/esm/useSheet.native.js +6 -0
- package/dist/esm/useSheet.native.js.map +1 -0
- package/dist/esm/useSheetController.mjs +15 -0
- package/dist/esm/useSheetController.mjs.map +1 -0
- package/dist/esm/useSheetController.native.js +15 -0
- package/dist/esm/useSheetController.native.js.map +1 -0
- package/dist/esm/useSheetOffscreenSize.mjs +38 -0
- package/dist/esm/useSheetOffscreenSize.mjs.map +1 -0
- package/dist/esm/useSheetOffscreenSize.native.js +42 -0
- package/dist/esm/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/esm/useSheetOpenState.mjs +27 -0
- package/dist/esm/useSheetOpenState.mjs.map +1 -0
- package/dist/esm/useSheetOpenState.native.js +30 -0
- package/dist/esm/useSheetOpenState.native.js.map +1 -0
- package/dist/esm/useSheetProviderProps.mjs +145 -0
- package/dist/esm/useSheetProviderProps.mjs.map +1 -0
- package/dist/esm/useSheetProviderProps.native.js +157 -0
- package/dist/esm/useSheetProviderProps.native.js.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.mjs +141 -0
- package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.native.js +131 -0
- package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.mjs +29 -0
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.native.js +58 -0
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -0
- package/dist/jsx/GestureSheetContext.mjs +28 -0
- package/dist/jsx/GestureSheetContext.mjs.map +1 -0
- package/dist/jsx/GestureSheetContext.native.js +58 -0
- package/dist/jsx/GestureSheetContext.native.js.map +1 -0
- package/dist/jsx/Sheet.mjs +89 -0
- package/dist/jsx/Sheet.mjs.map +1 -0
- package/dist/jsx/Sheet.native.js +122 -0
- package/dist/jsx/Sheet.native.js.map +1 -0
- package/dist/jsx/SheetContext.mjs +6 -0
- package/dist/jsx/SheetContext.mjs.map +1 -0
- package/dist/jsx/SheetContext.native.js +37 -0
- package/dist/jsx/SheetContext.native.js.map +1 -0
- package/dist/jsx/SheetController.mjs +37 -0
- package/dist/jsx/SheetController.mjs.map +1 -0
- package/dist/jsx/SheetController.native.js +79 -0
- package/dist/jsx/SheetController.native.js.map +1 -0
- package/dist/jsx/SheetImplementationCustom.mjs +552 -0
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -0
- package/dist/jsx/SheetImplementationCustom.native.js +615 -0
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -0
- package/dist/jsx/SheetScrollView.mjs +180 -0
- package/dist/jsx/SheetScrollView.mjs.map +1 -0
- package/dist/jsx/SheetScrollView.native.js +223 -0
- package/dist/jsx/SheetScrollView.native.js.map +1 -0
- package/dist/jsx/constants.mjs +6 -0
- package/dist/jsx/constants.mjs.map +1 -0
- package/dist/jsx/constants.native.js +37 -0
- package/dist/jsx/constants.native.js.map +1 -0
- package/dist/jsx/contexts.mjs +7 -0
- package/dist/jsx/contexts.mjs.map +1 -0
- package/dist/jsx/contexts.native.js +47 -0
- package/dist/jsx/contexts.native.js.map +1 -0
- package/dist/jsx/controller.mjs +4 -0
- package/dist/jsx/controller.mjs.map +1 -0
- package/dist/jsx/controller.native.js +34 -0
- package/dist/jsx/controller.native.js.map +1 -0
- package/dist/jsx/createSheet.mjs +165 -0
- package/dist/jsx/createSheet.mjs.map +1 -0
- package/dist/jsx/createSheet.native.js +200 -0
- package/dist/jsx/createSheet.native.js.map +1 -0
- package/dist/jsx/gestureState.mjs +13 -0
- package/dist/jsx/gestureState.mjs.map +1 -0
- package/dist/jsx/gestureState.native.js +44 -0
- package/dist/jsx/gestureState.native.js.map +1 -0
- package/dist/jsx/helpers.mjs +10 -0
- package/dist/jsx/helpers.mjs.map +1 -0
- package/dist/jsx/helpers.native.js +39 -0
- package/dist/jsx/helpers.native.js.map +1 -0
- package/dist/jsx/index.js +12 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/index.mjs +12 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +33 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/dist/jsx/nativeSheet.mjs +70 -0
- package/dist/jsx/nativeSheet.mjs.map +1 -0
- package/dist/jsx/nativeSheet.native.js +106 -0
- package/dist/jsx/nativeSheet.native.js.map +1 -0
- package/dist/jsx/setupGestureHandler.mjs +26 -0
- package/dist/jsx/setupGestureHandler.mjs.map +1 -0
- package/dist/jsx/setupGestureHandler.native.js +55 -0
- package/dist/jsx/setupGestureHandler.native.js.map +1 -0
- package/dist/jsx/types.mjs +2 -0
- package/dist/jsx/types.mjs.map +1 -0
- package/dist/jsx/types.native.js +21 -0
- package/dist/jsx/types.native.js.map +1 -0
- package/dist/jsx/useGestureHandlerPan.mjs +181 -0
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
- package/dist/jsx/useGestureHandlerPan.native.js +213 -0
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -0
- package/dist/jsx/useKeyboardControllerSheet.mjs +15 -0
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -0
- package/dist/jsx/useKeyboardControllerSheet.native.js +132 -0
- package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -0
- package/dist/jsx/useSheet.mjs +4 -0
- package/dist/jsx/useSheet.mjs.map +1 -0
- package/dist/jsx/useSheet.native.js +34 -0
- package/dist/jsx/useSheet.native.js.map +1 -0
- package/dist/jsx/useSheetController.mjs +15 -0
- package/dist/jsx/useSheetController.mjs.map +1 -0
- package/dist/jsx/useSheetController.native.js +55 -0
- package/dist/jsx/useSheetController.native.js.map +1 -0
- package/dist/jsx/useSheetOffscreenSize.mjs +38 -0
- package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -0
- package/dist/jsx/useSheetOffscreenSize.native.js +70 -0
- package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -0
- package/dist/jsx/useSheetOpenState.mjs +27 -0
- package/dist/jsx/useSheetOpenState.mjs.map +1 -0
- package/dist/jsx/useSheetOpenState.native.js +58 -0
- package/dist/jsx/useSheetOpenState.native.js.map +1 -0
- package/dist/jsx/useSheetProviderProps.mjs +145 -0
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -0
- package/dist/jsx/useSheetProviderProps.native.js +196 -0
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -0
- package/dist/jsx/useSheetScrollViewGestures.mjs +141 -0
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js +159 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -0
- package/package.json +40 -26
- package/src/Sheet.tsx +3 -3
- package/src/SheetImplementationCustom.tsx +5 -5
- package/src/createSheet.tsx +9 -9
- package/src/setupGestureHandler.ts +2 -2
- package/src/useSheetProviderProps.tsx +4 -4
- package/types/GestureDetectorWrapper.d.ts +1 -1
- package/types/GestureDetectorWrapper.d.ts.map +1 -0
- package/types/GestureSheetContext.d.ts +1 -1
- package/types/GestureSheetContext.d.ts.map +1 -0
- package/types/Sheet.d.ts +15 -15
- package/types/Sheet.d.ts.map +1 -0
- package/types/SheetContext.d.ts +4 -4
- package/types/SheetContext.d.ts.map +1 -0
- package/types/SheetController.d.ts +2 -1
- package/types/SheetController.d.ts.map +1 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -0
- package/types/SheetScrollView.d.ts +1 -1
- package/types/SheetScrollView.d.ts.map +1 -0
- package/types/constants.d.ts.map +1 -0
- package/types/contexts.d.ts.map +1 -0
- package/types/controller.d.ts.map +1 -0
- package/types/createSheet.d.ts +11 -11
- package/types/createSheet.d.ts.map +1 -0
- package/types/gestureState.d.ts.map +1 -0
- package/types/helpers.d.ts.map +1 -0
- package/types/index.d.ts.map +1 -0
- package/types/nativeSheet.d.ts.map +1 -0
- package/types/setupGestureHandler.d.ts.map +1 -0
- package/types/types.d.ts.map +1 -0
- package/types/useGestureHandlerPan.d.ts.map +1 -0
- package/types/useKeyboardControllerSheet.d.ts.map +1 -0
- package/types/useKeyboardControllerSheet.native.d.ts.map +1 -0
- package/types/useSheet.d.ts.map +1 -0
- package/types/useSheetController.d.ts.map +1 -0
- package/types/useSheetOffscreenSize.d.ts.map +1 -0
- package/types/useSheetOpenState.d.ts.map +1 -0
- package/types/useSheetProviderProps.d.ts +3 -3
- package/types/useSheetProviderProps.d.ts.map +1 -0
- package/types/useSheetScrollViewGestures.d.ts.map +1 -0
- package/types/useSheetScrollViewGestures.native.d.ts.map +1 -0
- package/controller/index.cjs +0 -2
- package/controller/index.d.ts +0 -5
- package/controller/index.js +0 -2
- package/controller/index.native.cjs +0 -2
- package/controller/index.native.js +0 -2
- package/next.md +0 -78
- package/setup-gesture-handler/index.cjs +0 -2
- package/setup-gesture-handler/index.js +0 -2
- package/setup-gesture-handler/index.native.cjs +0 -2
- package/setup-gesture-handler/index.native.js +0 -2
- package/tsconfig.json +0 -56
|
@@ -0,0 +1,181 @@
|
|
|
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
|
+
const gestureHandlerEnabled = isGestureHandlerEnabled();
|
|
21
|
+
const panGestureRef = useRef(null);
|
|
22
|
+
const 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: false,
|
|
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: false
|
|
38
|
+
});
|
|
39
|
+
const onStart = useCallback(() => {
|
|
40
|
+
stopSpring();
|
|
41
|
+
}, [stopSpring]);
|
|
42
|
+
const onEnd = useCallback((closestPoint, animationOverride) => {
|
|
43
|
+
setIsDragging(false);
|
|
44
|
+
scrollBridge.setParentDragging(false);
|
|
45
|
+
scrollBridge.setScrollEnabled?.(true);
|
|
46
|
+
setPosition(closestPoint);
|
|
47
|
+
animateTo(closestPoint, animationOverride);
|
|
48
|
+
}, [setIsDragging, scrollBridge, setPosition, animateTo]);
|
|
49
|
+
const panGesture = useMemo(() => {
|
|
50
|
+
if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const {
|
|
54
|
+
Gesture
|
|
55
|
+
} = getGestureHandlerState();
|
|
56
|
+
if (!Gesture) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const minY = positions[0];
|
|
60
|
+
const gs = gestureStateRef.current;
|
|
61
|
+
const gesture = Gesture.Pan().withRef(panGestureRef).activeOffsetY([-10, 10]).failOffsetX([-20, 20]).shouldCancelWhenOutside(false).onBegin(() => {
|
|
62
|
+
gs.panStarted = false;
|
|
63
|
+
if (config.pauseKeyboardHandler) {
|
|
64
|
+
config.pauseKeyboardHandler.current = true;
|
|
65
|
+
}
|
|
66
|
+
const pos = getCurrentPosition();
|
|
67
|
+
const atTop = pos <= minY + AT_TOP_THRESHOLD;
|
|
68
|
+
const currentScrollY = scrollBridge.y;
|
|
69
|
+
gs.startY = pos;
|
|
70
|
+
gs.lastPanTranslationY = 0;
|
|
71
|
+
gs.accumulatedOffset = 0;
|
|
72
|
+
gs.prevTranslationY = 0;
|
|
73
|
+
gs.scrollEngaged = currentScrollY > 0;
|
|
74
|
+
gs.frozenPositions = [...positions];
|
|
75
|
+
gs.frozenMinY = minY;
|
|
76
|
+
if (!atTop) {
|
|
77
|
+
scrollBridge.setScrollEnabled?.(false, 0);
|
|
78
|
+
}
|
|
79
|
+
}).onStart(() => {
|
|
80
|
+
gs.panStarted = true;
|
|
81
|
+
setIsDragging(true);
|
|
82
|
+
scrollBridge.initialPosition = gs.startY;
|
|
83
|
+
onStart();
|
|
84
|
+
}).onChange(event => {
|
|
85
|
+
const {
|
|
86
|
+
translationY
|
|
87
|
+
} = event;
|
|
88
|
+
const isSwipingDown = gs.prevTranslationY < translationY;
|
|
89
|
+
const deltaY = translationY - gs.prevTranslationY;
|
|
90
|
+
gs.prevTranslationY = translationY;
|
|
91
|
+
const scrollY = scrollBridge.y;
|
|
92
|
+
if (scrollY > 0) {
|
|
93
|
+
gs.scrollEngaged = true;
|
|
94
|
+
}
|
|
95
|
+
const currentPos = gs.startY + gs.accumulatedOffset;
|
|
96
|
+
const isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD;
|
|
97
|
+
const nodeIsScrolling = scrollY > 0;
|
|
98
|
+
let panHandles = false;
|
|
99
|
+
const hasScrollableContent = scrollBridge.hasScrollableContent !== false;
|
|
100
|
+
if (!isCurrentlyAtTop) {
|
|
101
|
+
if (isSwipingDown) {
|
|
102
|
+
panHandles = !nodeIsScrolling || !hasScrollableContent;
|
|
103
|
+
} else {
|
|
104
|
+
panHandles = true;
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
if (isSwipingDown) {
|
|
108
|
+
if (nodeIsScrolling && hasScrollableContent) {
|
|
109
|
+
panHandles = false;
|
|
110
|
+
} else if (gs.scrollEngaged && hasScrollableContent) {
|
|
111
|
+
panHandles = true;
|
|
112
|
+
} else {
|
|
113
|
+
panHandles = true;
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
if (hasScrollableContent) {
|
|
117
|
+
panHandles = false;
|
|
118
|
+
} else {
|
|
119
|
+
panHandles = true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (panHandles) {
|
|
124
|
+
const lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
|
|
125
|
+
scrollBridge.setScrollEnabled?.(false, lockTo);
|
|
126
|
+
gs.accumulatedOffset += deltaY;
|
|
127
|
+
const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
128
|
+
scrollBridge.paneY = newPosition;
|
|
129
|
+
setAnimatedPosition(newPosition);
|
|
130
|
+
scrollBridge.setParentDragging(newPosition > minY);
|
|
131
|
+
} else {
|
|
132
|
+
scrollBridge.setScrollEnabled?.(true);
|
|
133
|
+
}
|
|
134
|
+
}).onEnd(event => {
|
|
135
|
+
const {
|
|
136
|
+
velocityY
|
|
137
|
+
} = event;
|
|
138
|
+
const currentPos = gs.startY + gs.accumulatedOffset;
|
|
139
|
+
scrollBridge.scrollLockY = void 0;
|
|
140
|
+
const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
|
|
141
|
+
const snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
|
|
142
|
+
if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
143
|
+
onEnd(0);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const velocity = velocityY / 1e3;
|
|
147
|
+
const projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
148
|
+
let closestPoint = 0;
|
|
149
|
+
let minDist = Number.POSITIVE_INFINITY;
|
|
150
|
+
for (let i = 0; i < snapPositions.length; i++) {
|
|
151
|
+
const pos = snapPositions[i];
|
|
152
|
+
const dist = Math.abs(projectedEnd - pos);
|
|
153
|
+
if (dist < minDist) {
|
|
154
|
+
minDist = dist;
|
|
155
|
+
closestPoint = i;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
onEnd(closestPoint);
|
|
159
|
+
}).onFinalize(() => {
|
|
160
|
+
scrollBridge.scrollLockY = void 0;
|
|
161
|
+
if (gs.panStarted) {
|
|
162
|
+
setIsDragging(false);
|
|
163
|
+
} else {
|
|
164
|
+
if (config.pauseKeyboardHandler) {
|
|
165
|
+
config.pauseKeyboardHandler.current = false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}).runOnJS(true);
|
|
169
|
+
if (scrollGestureRef?.current) {
|
|
170
|
+
return gesture.simultaneousWithExternalGesture(scrollGestureRef.current);
|
|
171
|
+
}
|
|
172
|
+
return gesture;
|
|
173
|
+
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]);
|
|
174
|
+
return {
|
|
175
|
+
panGesture,
|
|
176
|
+
panGestureRef,
|
|
177
|
+
gestureHandlerEnabled
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export { useGestureHandlerPan };
|
|
181
|
+
//# 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","frozenPositions","frozenMinY","panStarted","onStart","onEnd","closestPoint","animationOverride","setParentDragging","setScrollEnabled","panGesture","Gesture","minY","gs","current","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","lockTo","newPosition","paneY","velocityY","scrollLockY","snapPositions","length","snapMinY","velocity","projectedEnd","minDist","Number","POSITIVE_INFINITY","i","dist","Math","abs","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
2
|
+
import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.native.js";
|
|
3
|
+
var AT_TOP_THRESHOLD = 5;
|
|
4
|
+
function useGestureHandlerPan(config) {
|
|
5
|
+
var {
|
|
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
|
+
var gestureHandlerEnabled = isGestureHandlerEnabled();
|
|
21
|
+
var panGestureRef = useRef(null);
|
|
22
|
+
var 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: false,
|
|
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: false
|
|
38
|
+
});
|
|
39
|
+
var onStart = useCallback(function () {
|
|
40
|
+
stopSpring();
|
|
41
|
+
}, [stopSpring]);
|
|
42
|
+
var onEnd = useCallback(function (closestPoint, animationOverride) {
|
|
43
|
+
var _scrollBridge_setScrollEnabled;
|
|
44
|
+
setIsDragging(false);
|
|
45
|
+
scrollBridge.setParentDragging(false);
|
|
46
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, true);
|
|
47
|
+
setPosition(closestPoint);
|
|
48
|
+
animateTo(closestPoint, animationOverride);
|
|
49
|
+
}, [setIsDragging, scrollBridge, setPosition, animateTo]);
|
|
50
|
+
var panGesture = useMemo(function () {
|
|
51
|
+
if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
var {
|
|
55
|
+
Gesture
|
|
56
|
+
} = getGestureHandlerState();
|
|
57
|
+
if (!Gesture) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
var minY = positions[0];
|
|
61
|
+
var gs = gestureStateRef.current;
|
|
62
|
+
var gesture = Gesture.Pan().withRef(panGestureRef).activeOffsetY([-10, 10]).failOffsetX([-20, 20]).shouldCancelWhenOutside(false).onBegin(function () {
|
|
63
|
+
gs.panStarted = false;
|
|
64
|
+
if (config.pauseKeyboardHandler) {
|
|
65
|
+
config.pauseKeyboardHandler.current = true;
|
|
66
|
+
}
|
|
67
|
+
var pos = getCurrentPosition();
|
|
68
|
+
var atTop = pos <= minY + AT_TOP_THRESHOLD;
|
|
69
|
+
var currentScrollY = scrollBridge.y;
|
|
70
|
+
gs.startY = pos;
|
|
71
|
+
gs.lastPanTranslationY = 0;
|
|
72
|
+
gs.accumulatedOffset = 0;
|
|
73
|
+
gs.prevTranslationY = 0;
|
|
74
|
+
gs.scrollEngaged = currentScrollY > 0;
|
|
75
|
+
gs.frozenPositions = [...positions];
|
|
76
|
+
gs.frozenMinY = minY;
|
|
77
|
+
if (!atTop) {
|
|
78
|
+
var _scrollBridge_setScrollEnabled;
|
|
79
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);
|
|
80
|
+
}
|
|
81
|
+
}).onStart(function () {
|
|
82
|
+
gs.panStarted = true;
|
|
83
|
+
setIsDragging(true);
|
|
84
|
+
scrollBridge.initialPosition = gs.startY;
|
|
85
|
+
onStart();
|
|
86
|
+
}).onChange(function (event) {
|
|
87
|
+
var {
|
|
88
|
+
translationY
|
|
89
|
+
} = event;
|
|
90
|
+
var isSwipingDown = gs.prevTranslationY < translationY;
|
|
91
|
+
var deltaY = translationY - gs.prevTranslationY;
|
|
92
|
+
gs.prevTranslationY = translationY;
|
|
93
|
+
var scrollY = scrollBridge.y;
|
|
94
|
+
if (scrollY > 0) {
|
|
95
|
+
gs.scrollEngaged = true;
|
|
96
|
+
}
|
|
97
|
+
var currentPos = gs.startY + gs.accumulatedOffset;
|
|
98
|
+
var isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD;
|
|
99
|
+
var nodeIsScrolling = scrollY > 0;
|
|
100
|
+
var panHandles = false;
|
|
101
|
+
var hasScrollableContent = scrollBridge.hasScrollableContent !== false;
|
|
102
|
+
if (!isCurrentlyAtTop) {
|
|
103
|
+
if (isSwipingDown) {
|
|
104
|
+
panHandles = !nodeIsScrolling || !hasScrollableContent;
|
|
105
|
+
} else {
|
|
106
|
+
panHandles = true;
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
if (isSwipingDown) {
|
|
110
|
+
if (nodeIsScrolling && hasScrollableContent) {
|
|
111
|
+
panHandles = false;
|
|
112
|
+
} else if (gs.scrollEngaged && hasScrollableContent) {
|
|
113
|
+
panHandles = true;
|
|
114
|
+
} else {
|
|
115
|
+
panHandles = true;
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
if (hasScrollableContent) {
|
|
119
|
+
panHandles = false;
|
|
120
|
+
} else {
|
|
121
|
+
panHandles = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (panHandles) {
|
|
126
|
+
var _scrollBridge_setScrollEnabled;
|
|
127
|
+
var lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
|
|
128
|
+
(_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, lockTo);
|
|
129
|
+
gs.accumulatedOffset += deltaY;
|
|
130
|
+
var newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
|
|
131
|
+
scrollBridge.paneY = newPosition;
|
|
132
|
+
setAnimatedPosition(newPosition);
|
|
133
|
+
scrollBridge.setParentDragging(newPosition > minY);
|
|
134
|
+
} else {
|
|
135
|
+
var _scrollBridge_setScrollEnabled1;
|
|
136
|
+
(_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);
|
|
137
|
+
}
|
|
138
|
+
}).onEnd(function (event) {
|
|
139
|
+
var {
|
|
140
|
+
velocityY
|
|
141
|
+
} = event;
|
|
142
|
+
var currentPos = gs.startY + gs.accumulatedOffset;
|
|
143
|
+
scrollBridge.scrollLockY = void 0;
|
|
144
|
+
var snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
|
|
145
|
+
var snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
|
|
146
|
+
if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
|
|
147
|
+
onEnd(0);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
var velocity = velocityY / 1e3;
|
|
151
|
+
var projectedEnd = currentPos + frameSize * velocity * 0.2;
|
|
152
|
+
var closestPoint = 0;
|
|
153
|
+
var minDist = Number.POSITIVE_INFINITY;
|
|
154
|
+
for (var i = 0; i < snapPositions.length; i++) {
|
|
155
|
+
var pos = snapPositions[i];
|
|
156
|
+
var dist = Math.abs(projectedEnd - pos);
|
|
157
|
+
if (dist < minDist) {
|
|
158
|
+
minDist = dist;
|
|
159
|
+
closestPoint = i;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
onEnd(closestPoint);
|
|
163
|
+
}).onFinalize(function () {
|
|
164
|
+
scrollBridge.scrollLockY = void 0;
|
|
165
|
+
if (gs.panStarted) {
|
|
166
|
+
setIsDragging(false);
|
|
167
|
+
} else {
|
|
168
|
+
if (config.pauseKeyboardHandler) {
|
|
169
|
+
config.pauseKeyboardHandler.current = false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}).runOnJS(true);
|
|
173
|
+
if (scrollGestureRef === null || scrollGestureRef === void 0 ? void 0 : scrollGestureRef.current) {
|
|
174
|
+
return gesture.simultaneousWithExternalGesture(scrollGestureRef.current);
|
|
175
|
+
}
|
|
176
|
+
return gesture;
|
|
177
|
+
}, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]);
|
|
178
|
+
return {
|
|
179
|
+
panGesture,
|
|
180
|
+
panGestureRef,
|
|
181
|
+
gestureHandlerEnabled
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
export { useGestureHandlerPan };
|
|
185
|
+
//# sourceMappingURL=useGestureHandlerPan.native.js.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","frozenPositions","frozenMinY","panStarted","onStart","onEnd","closestPoint","animationOverride","_scrollBridge_setScrollEnabled","setParentDragging","setScrollEnabled","call","panGesture","Gesture","minY","gs","current","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","lockTo","newPosition","paneY","_scrollBridge_setScrollEnabled1","velocityY","scrollLockY","snapPositions","length","snapMinY","velocity","projectedEnd","minDist","Number","POSITIVE_INFINITY","i","dist","Math","abs","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useRef } from "react";
|
|
2
|
+
const noop = () => {};
|
|
3
|
+
function useKeyboardControllerSheet(_options) {
|
|
4
|
+
const pauseKeyboardHandler = useRef(false);
|
|
5
|
+
return {
|
|
6
|
+
keyboardControllerEnabled: false,
|
|
7
|
+
keyboardHeight: 0,
|
|
8
|
+
isKeyboardVisible: false,
|
|
9
|
+
dismissKeyboard: noop,
|
|
10
|
+
pauseKeyboardHandler,
|
|
11
|
+
flushPendingHide: noop
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export { useKeyboardControllerSheet };
|
|
15
|
+
//# sourceMappingURL=useKeyboardControllerSheet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useRef","noop","useKeyboardControllerSheet","_options","pauseKeyboardHandler","keyboardControllerEnabled","keyboardHeight","isKeyboardVisible","dismissKeyboard","flushPendingHide"],"sources":["../../src/useKeyboardControllerSheet.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,MAAA,QAAc;AAMvB,MAAMC,IAAA,GAAOA,CAAA,KAAM,CAAC;AAEb,SAASC,2BACdC,QAAA,EAC+B;EAC/B,MAAMC,oBAAA,GAAuBJ,MAAA,CAAO,KAAK;EACzC,OAAO;IACLK,yBAAA,EAA2B;IAC3BC,cAAA,EAAgB;IAChBC,iBAAA,EAAmB;IACnBC,eAAA,EAAiBP,IAAA;IACjBG,oBAAA;IACAK,gBAAA,EAAkBR;EACpB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { Keyboard, Platform } from "react-native";
|
|
3
|
+
var isKeyboardControllerEnabled = function () {
|
|
4
|
+
return false;
|
|
5
|
+
};
|
|
6
|
+
var getKeyboardControllerState = function () {
|
|
7
|
+
return {};
|
|
8
|
+
};
|
|
9
|
+
try {
|
|
10
|
+
var nativeModule = require("@hanzogui/native");
|
|
11
|
+
isKeyboardControllerEnabled = nativeModule.isKeyboardControllerEnabled;
|
|
12
|
+
getKeyboardControllerState = nativeModule.getKeyboardControllerState;
|
|
13
|
+
} catch (e) {}
|
|
14
|
+
function useKeyboardControllerSheet(options) {
|
|
15
|
+
var {
|
|
16
|
+
enabled
|
|
17
|
+
} = options;
|
|
18
|
+
var [keyboardHeight, setKeyboardHeight] = useState(0);
|
|
19
|
+
var [isKeyboardVisible, setIsKeyboardVisible] = useState(false);
|
|
20
|
+
var keyboardControllerEnabled = isKeyboardControllerEnabled();
|
|
21
|
+
var pauseKeyboardHandler = useRef(false);
|
|
22
|
+
var pendingHide = useRef(false);
|
|
23
|
+
var dismissKeyboard = useCallback(function () {
|
|
24
|
+
Keyboard.dismiss();
|
|
25
|
+
if (keyboardControllerEnabled) {
|
|
26
|
+
try {
|
|
27
|
+
var _KeyboardController_dismiss;
|
|
28
|
+
var {
|
|
29
|
+
KeyboardController
|
|
30
|
+
} = getKeyboardControllerState();
|
|
31
|
+
KeyboardController === null || KeyboardController === void 0 ? void 0 : (_KeyboardController_dismiss = KeyboardController.dismiss) === null || _KeyboardController_dismiss === void 0 ? void 0 : _KeyboardController_dismiss.call(KeyboardController);
|
|
32
|
+
} catch (e) {}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
// ignore errors from keyboard-controller
|
|
36
|
+
[keyboardControllerEnabled]);
|
|
37
|
+
var flushPendingHide = useCallback(function () {
|
|
38
|
+
if (pendingHide.current) {
|
|
39
|
+
pendingHide.current = false;
|
|
40
|
+
setIsKeyboardVisible(false);
|
|
41
|
+
setKeyboardHeight(0);
|
|
42
|
+
}
|
|
43
|
+
}, []);
|
|
44
|
+
useEffect(function () {
|
|
45
|
+
if (!enabled || !keyboardControllerEnabled) return;
|
|
46
|
+
var {
|
|
47
|
+
KeyboardEvents
|
|
48
|
+
} = getKeyboardControllerState();
|
|
49
|
+
if (!(KeyboardEvents === null || KeyboardEvents === void 0 ? void 0 : KeyboardEvents.addListener)) return;
|
|
50
|
+
var showSub = KeyboardEvents.addListener("keyboardWillShow", function (e) {
|
|
51
|
+
var _e_height;
|
|
52
|
+
var height = (_e_height = e === null || e === void 0 ? void 0 : e.height) !== null && _e_height !== void 0 ? _e_height : 0;
|
|
53
|
+
if (height > 0) {
|
|
54
|
+
setKeyboardHeight(height);
|
|
55
|
+
}
|
|
56
|
+
setIsKeyboardVisible(true);
|
|
57
|
+
});
|
|
58
|
+
var hideSub = KeyboardEvents.addListener("keyboardWillHide", function () {
|
|
59
|
+
if (pauseKeyboardHandler.current) {
|
|
60
|
+
pendingHide.current = true;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
setIsKeyboardVisible(false);
|
|
64
|
+
setKeyboardHeight(0);
|
|
65
|
+
});
|
|
66
|
+
return function () {
|
|
67
|
+
var _showSub_remove, _hideSub_remove;
|
|
68
|
+
showSub === null || showSub === void 0 ? void 0 : (_showSub_remove = showSub.remove) === null || _showSub_remove === void 0 ? void 0 : _showSub_remove.call(showSub);
|
|
69
|
+
hideSub === null || hideSub === void 0 ? void 0 : (_hideSub_remove = hideSub.remove) === null || _hideSub_remove === void 0 ? void 0 : _hideSub_remove.call(hideSub);
|
|
70
|
+
};
|
|
71
|
+
}, [enabled, keyboardControllerEnabled]);
|
|
72
|
+
useEffect(function () {
|
|
73
|
+
if (!enabled) return;
|
|
74
|
+
if (keyboardControllerEnabled) return;
|
|
75
|
+
var showEvent = Platform.OS === "ios" ? "keyboardWillShow" : "keyboardDidShow";
|
|
76
|
+
var hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
|
|
77
|
+
var showListener = Keyboard.addListener(showEvent, function (e) {
|
|
78
|
+
setKeyboardHeight(e.endCoordinates.height);
|
|
79
|
+
setIsKeyboardVisible(true);
|
|
80
|
+
});
|
|
81
|
+
var hideListener = Keyboard.addListener(hideEvent, function () {
|
|
82
|
+
if (pauseKeyboardHandler.current) {
|
|
83
|
+
pendingHide.current = true;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
setIsKeyboardVisible(false);
|
|
87
|
+
setKeyboardHeight(0);
|
|
88
|
+
});
|
|
89
|
+
return function () {
|
|
90
|
+
showListener.remove();
|
|
91
|
+
hideListener.remove();
|
|
92
|
+
};
|
|
93
|
+
}, [enabled, keyboardControllerEnabled]);
|
|
94
|
+
return {
|
|
95
|
+
keyboardControllerEnabled,
|
|
96
|
+
keyboardHeight,
|
|
97
|
+
isKeyboardVisible,
|
|
98
|
+
dismissKeyboard,
|
|
99
|
+
pauseKeyboardHandler,
|
|
100
|
+
flushPendingHide
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export { useKeyboardControllerSheet };
|
|
104
|
+
//# sourceMappingURL=useKeyboardControllerSheet.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","Keyboard","Platform","isKeyboardControllerEnabled","getKeyboardControllerState","nativeModule","require","e","useKeyboardControllerSheet","options","enabled","keyboardHeight","setKeyboardHeight","isKeyboardVisible","setIsKeyboardVisible","keyboardControllerEnabled","pauseKeyboardHandler","pendingHide","dismissKeyboard","dismiss","_KeyboardController_dismiss","KeyboardController","call","flushPendingHide","current","KeyboardEvents","addListener","showSub","_e_height","height","hideSub","_showSub_remove","_hideSub_remove","remove","showEvent","OS","hideEvent","showListener","endCoordinates","hideListener"],"sources":["../../src/useKeyboardControllerSheet.native.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useSheetContext","useSheet"],"sources":["../../src/useSheet.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAEzB,MAAMC,QAAA,GAAWA,CAAA,KAAMD,eAAA,CAAgB,IAAI,MAAS","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useSheetContext","useSheet"],"sources":["../../src/useSheet.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAEzB,IAAAC,QAAM,YAAAA,CAAA,EAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
const useSheetController = () => {
|
|
3
|
+
const controller = React.useContext(SheetControllerContext);
|
|
4
|
+
const isHidden = controller?.hidden;
|
|
5
|
+
const isShowingNonSheet = isHidden && controller?.open;
|
|
6
|
+
return {
|
|
7
|
+
controller,
|
|
8
|
+
isHidden,
|
|
9
|
+
isShowingNonSheet,
|
|
10
|
+
disableDrag: controller?.disableDrag
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
const SheetControllerContext = React.createContext(null);
|
|
14
|
+
export { SheetControllerContext, useSheetController };
|
|
15
|
+
//# sourceMappingURL=useSheetController.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useSheetController","controller","useContext","SheetControllerContext","isHidden","hidden","isShowingNonSheet","open","disableDrag","createContext"],"sources":["../../src/useSheetController.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAEX,MAAMC,kBAAA,GAAqBA,CAAA,KAAM;EACtC,MAAMC,UAAA,GAAaF,KAAA,CAAMG,UAAA,CAAWC,sBAAsB;EAC1D,MAAMC,QAAA,GAAWH,UAAA,EAAYI,MAAA;EAC7B,MAAMC,iBAAA,GAAoBF,QAAA,IAAYH,UAAA,EAAYM,IAAA;EAClD,OAAO;IACLN,UAAA;IACAG,QAAA;IACAE,iBAAA;IACAE,WAAA,EAAaP,UAAA,EAAYO;EAC3B;AACF;AAEO,MAAML,sBAAA,GACXJ,KAAA,CAAMU,aAAA,CAAkD,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
var useSheetController = function () {
|
|
3
|
+
var controller = React.useContext(SheetControllerContext);
|
|
4
|
+
var isHidden = controller === null || controller === void 0 ? void 0 : controller.hidden;
|
|
5
|
+
var isShowingNonSheet = isHidden && (controller === null || controller === void 0 ? void 0 : controller.open);
|
|
6
|
+
return {
|
|
7
|
+
controller,
|
|
8
|
+
isHidden,
|
|
9
|
+
isShowingNonSheet,
|
|
10
|
+
disableDrag: controller === null || controller === void 0 ? void 0 : controller.disableDrag
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
var SheetControllerContext = /* @__PURE__ */React.createContext(null);
|
|
14
|
+
export { SheetControllerContext, useSheetController };
|
|
15
|
+
//# sourceMappingURL=useSheetController.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useSheetController","controller","useContext","SheetControllerContext","isHidden","hidden","isShowingNonSheet","open","disableDrag","createContext"],"sources":["../../src/useSheetController.tsx"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,KAAA,MAAW;AAEX,IAAAC,kBAAM,YAAAA,CAAA,EAA2B;EACtC,IAAAC,UAAM,GAAAF,KAAa,CAAAG,UAAM,CAAAC,sBAAW;EACpC,IAAAC,QAAM,GAAAH,UAAW,KAAY,QAAAA,UAAA,uBAAAA,UAAA,CAAAI,MAAA;EAC7B,IAAAC,iBAAM,GAAAF,QAAoB,KAAAH,UAAY,KAAY,QAAAA,UAAA,uBAAAA,UAAA,CAAAM,IAAA;EAClD,OAAO;IACLN,UAAA;IACAG,QAAA;IACAE,iBAAA;IACAE,WAAA,EAAaP,UAAA,KAAY,QAAAA,UAAA,uBAAAA,UAAA,CAAAO;EAC3B;AACF;AAEO,IAAAL,sBAAM,kBACLJ,KAAA,CAAkDU,aAAI","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const useSheetOffscreenSize = ({
|
|
2
|
+
snapPoints,
|
|
3
|
+
position,
|
|
4
|
+
screenSize,
|
|
5
|
+
frameSize,
|
|
6
|
+
snapPointsMode
|
|
7
|
+
}) => {
|
|
8
|
+
if (snapPointsMode === "fit") {
|
|
9
|
+
return 0;
|
|
10
|
+
}
|
|
11
|
+
if (snapPointsMode === "constant") {
|
|
12
|
+
const maxSize2 = Number(snapPoints[0]);
|
|
13
|
+
const currentSize2 = Number(snapPoints[position] ?? 0);
|
|
14
|
+
const offscreenSize2 = maxSize2 - currentSize2;
|
|
15
|
+
return offscreenSize2;
|
|
16
|
+
}
|
|
17
|
+
if (snapPointsMode === "percent") {
|
|
18
|
+
const maxPercentOpened = Number(snapPoints[0]) / 100;
|
|
19
|
+
const percentOpened = Number(snapPoints[position] ?? 0) / 100;
|
|
20
|
+
const percentHidden = maxPercentOpened - percentOpened;
|
|
21
|
+
const offscreenSize2 = percentHidden * screenSize;
|
|
22
|
+
return offscreenSize2;
|
|
23
|
+
}
|
|
24
|
+
const maxSnapPoint = snapPoints[0];
|
|
25
|
+
if (maxSnapPoint === "fit") {
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
const maxSize = typeof maxSnapPoint === "string" ? Number(maxSnapPoint.slice(0, -1)) / 100 * screenSize : maxSnapPoint;
|
|
29
|
+
const currentSnapPoint = snapPoints[position] ?? 0;
|
|
30
|
+
const currentSize = typeof currentSnapPoint === "string" ? Number(currentSnapPoint.slice(0, -1)) / 100 * screenSize : currentSnapPoint;
|
|
31
|
+
const offscreenSize = maxSize - currentSize;
|
|
32
|
+
if (Number.isNaN(offscreenSize)) {
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
return offscreenSize;
|
|
36
|
+
};
|
|
37
|
+
export { useSheetOffscreenSize };
|
|
38
|
+
//# sourceMappingURL=useSheetOffscreenSize.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useSheetOffscreenSize","snapPoints","position","screenSize","frameSize","snapPointsMode","maxSize","Number","currentSize","offscreenSize","maxSize2","currentSize2","maxPercentOpened","percentOpened","percentHidden","maxSnapPoint","slice","currentSnapPoint","isNaN"],"sources":["../../src/useSheetOffscreenSize.tsx"],"sourcesContent":[null],"mappings":"AAEO,MAAMA,qBAAA,GAAwBA,CAAC;EACpCC,UAAA;EACAC,QAAA;EACAC,UAAA;EACAC,SAAA;EACAC;AACF,MAAyB;EACvB,IAAIA,cAAA,KAAmB,OAAO;IAC5B,OAAO;EACT;EAEA,IAAIA,cAAA,KAAmB,YAAY;IACjC,MAAMC,QAAA,GAAUC,MAAA,CAAON,UAAA,CAAW,CAAC,CAAC;IACpC,MAAMO,YAAA,GAAcD,MAAA,CAAON,UAAA,CAAWC,QAAQ,KAAK,CAAC;IACpD,MAAMO,cAAA,GAAgBC,QAAA,GAAUC,YAAA;IAChC,OAAOF,cAAA;EACT;EAEA,IAAIJ,cAAA,KAAmB,WAAW;IAChC,MAAMO,gBAAA,GAAmBL,MAAA,CAAON,UAAA,CAAW,CAAC,CAAC,IAAI;IACjD,MAAMY,aAAA,GAAgBN,MAAA,CAAON,UAAA,CAAWC,QAAQ,KAAK,CAAC,IAAI;IAC1D,MAAMY,aAAA,GAAgBF,gBAAA,GAAmBC,aAAA;IACzC,MAAMJ,cAAA,GAAgBK,aAAA,GAAgBX,UAAA;IACtC,OAAOM,cAAA;EACT;EAGA,MAAMM,YAAA,GAAed,UAAA,CAAW,CAAC;EACjC,IAAIc,YAAA,KAAiB,OAAO;IAC1B,OAAO;EACT;EAEA,MAAMT,OAAA,GACJ,OAAOS,YAAA,KAAiB,WACnBR,MAAA,CAAOQ,YAAA,CAAaC,KAAA,CAAM,GAAG,EAAE,CAAC,IAAI,MAAOb,UAAA,GAC5CY,YAAA;EACN,MAAME,gBAAA,GAAmBhB,UAAA,CAAWC,QAAQ,KAAK;EACjD,MAAMM,WAAA,GACJ,OAAOS,gBAAA,KAAqB,WACvBV,MAAA,CAAOU,gBAAA,CAAiBD,KAAA,CAAM,GAAG,EAAE,CAAC,IAAI,MAAOb,UAAA,GAChDc,gBAAA;EACN,MAAMR,aAAA,GAAgBH,OAAA,GAAUE,WAAA;EAChC,IAAID,MAAA,CAAOW,KAAA,CAAMT,aAAa,GAAG;IAC/B,OAAO;EACT;EACA,OAAOA,aAAA;AACT","ignoreList":[]}
|