@hanzogui/sheet 8.3.0 → 8.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/GestureDetectorWrapper.js +23 -0
- package/dist/cjs/GestureDetectorWrapper.js.map +1 -0
- package/dist/cjs/GestureSheetContext.js +21 -0
- package/dist/cjs/GestureSheetContext.js.map +1 -0
- package/dist/cjs/Sheet.js +102 -0
- package/dist/cjs/Sheet.js.map +1 -0
- package/dist/cjs/SheetContext.js +8 -0
- package/dist/cjs/SheetContext.js.map +1 -0
- package/dist/cjs/SheetController.js +33 -0
- package/dist/cjs/SheetController.js.map +1 -0
- package/dist/cjs/SheetImplementationCustom.js +866 -0
- package/dist/cjs/SheetImplementationCustom.js.map +1 -0
- package/dist/cjs/SheetScrollView.js +278 -0
- package/dist/cjs/SheetScrollView.js.map +1 -0
- package/dist/cjs/constants.js +8 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/contexts.js +10 -0
- package/dist/cjs/contexts.js.map +1 -0
- package/dist/cjs/controller.js +11 -0
- package/dist/cjs/controller.js.map +1 -0
- package/dist/cjs/createSheet.js +153 -0
- package/dist/cjs/createSheet.js.map +1 -0
- package/dist/cjs/gestureState.js +35 -0
- package/dist/cjs/gestureState.js.map +1 -0
- package/dist/cjs/helpers.js +29 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.js +19 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/keyboardAvoidance.js +67 -0
- package/dist/cjs/keyboardAvoidance.js.map +1 -0
- package/dist/cjs/nativeSheet.js +52 -0
- package/dist/cjs/nativeSheet.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/setupGestureHandler.js +31 -0
- package/dist/cjs/setupGestureHandler.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/useGestureHandlerPan.js +356 -0
- package/dist/cjs/useGestureHandlerPan.js.map +1 -0
- package/dist/cjs/useKeyboardControllerSheet.js +124 -0
- package/dist/cjs/useKeyboardControllerSheet.js.map +1 -0
- package/dist/cjs/useSafeAreaInsets.js +16 -0
- package/dist/cjs/useSafeAreaInsets.js.map +1 -0
- package/dist/cjs/useSheet.js +7 -0
- package/dist/cjs/useSheet.js.map +1 -0
- package/dist/cjs/useSheetController.js +19 -0
- package/dist/cjs/useSheetController.js.map +1 -0
- package/dist/cjs/useSheetOffscreenSize.js +40 -0
- package/dist/cjs/useSheetOffscreenSize.js.map +1 -0
- package/dist/cjs/useSheetOpenState.js +29 -0
- package/dist/cjs/useSheetOpenState.js.map +1 -0
- package/dist/cjs/useSheetProviderProps.js +169 -0
- package/dist/cjs/useSheetProviderProps.js.map +1 -0
- package/dist/cjs/useSheetScrollViewGestures.js +195 -0
- package/dist/cjs/useSheetScrollViewGestures.js.map +1 -0
- package/dist/cjs/webViewport.js +108 -0
- package/dist/cjs/webViewport.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.js +20 -0
- package/dist/esm/GestureDetectorWrapper.js.map +1 -0
- package/dist/esm/GestureSheetContext.js +17 -0
- package/dist/esm/GestureSheetContext.js.map +1 -0
- package/dist/esm/Sheet.js +97 -0
- package/dist/esm/Sheet.js.map +1 -0
- package/dist/esm/SheetContext.js +5 -0
- package/dist/esm/SheetContext.js.map +1 -0
- package/dist/esm/SheetController.js +28 -0
- package/dist/esm/SheetController.js.map +1 -0
- package/dist/esm/SheetImplementationCustom.js +862 -0
- package/dist/esm/SheetImplementationCustom.js.map +1 -0
- package/dist/esm/SheetScrollView.js +274 -0
- package/dist/esm/SheetScrollView.js.map +1 -0
- package/dist/esm/constants.js +5 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/contexts.js +6 -0
- package/dist/esm/contexts.js.map +1 -0
- package/dist/esm/controller.js +5 -0
- package/dist/esm/controller.js.map +1 -0
- package/dist/esm/createSheet.js +150 -0
- package/dist/esm/createSheet.js.map +1 -0
- package/dist/esm/gestureState.js +29 -0
- package/dist/esm/gestureState.js.map +1 -0
- package/dist/esm/helpers.js +26 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.js +13 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/keyboardAvoidance.js +62 -0
- package/dist/esm/keyboardAvoidance.js.map +1 -0
- package/dist/esm/nativeSheet.js +48 -0
- package/dist/esm/nativeSheet.js.map +1 -0
- package/dist/esm/setupGestureHandler.js +27 -0
- package/dist/esm/setupGestureHandler.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/useGestureHandlerPan.js +353 -0
- package/dist/esm/useGestureHandlerPan.js.map +1 -0
- package/dist/esm/useKeyboardControllerSheet.js +121 -0
- package/dist/esm/useKeyboardControllerSheet.js.map +1 -0
- package/dist/esm/useSafeAreaInsets.js +11 -0
- package/dist/esm/useSafeAreaInsets.js.map +1 -0
- package/dist/esm/useSheet.js +3 -0
- package/dist/esm/useSheet.js.map +1 -0
- package/dist/esm/useSheetController.js +14 -0
- package/dist/esm/useSheetController.js.map +1 -0
- package/dist/esm/useSheetOffscreenSize.js +36 -0
- package/dist/esm/useSheetOffscreenSize.js.map +1 -0
- package/dist/esm/useSheetOpenState.js +25 -0
- package/dist/esm/useSheetOpenState.js.map +1 -0
- package/dist/esm/useSheetProviderProps.js +165 -0
- package/dist/esm/useSheetProviderProps.js.map +1 -0
- package/dist/esm/useSheetScrollViewGestures.js +192 -0
- package/dist/esm/useSheetScrollViewGestures.js.map +1 -0
- package/dist/esm/webViewport.js +98 -0
- package/dist/esm/webViewport.js.map +1 -0
- package/dist/native/GestureDetectorWrapper.js +20 -0
- package/dist/native/GestureDetectorWrapper.js.map +1 -0
- package/dist/native/GestureSheetContext.js +17 -0
- package/dist/native/GestureSheetContext.js.map +1 -0
- package/dist/native/Sheet.js +97 -0
- package/dist/native/Sheet.js.map +1 -0
- package/dist/native/SheetContext.js +5 -0
- package/dist/native/SheetContext.js.map +1 -0
- package/dist/native/SheetController.js +28 -0
- package/dist/native/SheetController.js.map +1 -0
- package/dist/native/SheetImplementationCustom.js +862 -0
- package/dist/native/SheetImplementationCustom.js.map +1 -0
- package/dist/native/SheetScrollView.js +274 -0
- package/dist/native/SheetScrollView.js.map +1 -0
- package/dist/native/constants.js +5 -0
- package/dist/native/constants.js.map +1 -0
- package/dist/native/contexts.js +6 -0
- package/dist/native/contexts.js.map +1 -0
- package/dist/native/controller.js +5 -0
- package/dist/native/controller.js.map +1 -0
- package/dist/native/createSheet.js +150 -0
- package/dist/native/createSheet.js.map +1 -0
- package/dist/native/gestureState.js +29 -0
- package/dist/native/gestureState.js.map +1 -0
- package/dist/native/helpers.js +26 -0
- package/dist/native/helpers.js.map +1 -0
- package/dist/native/index.js +13 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/keyboardAvoidance.js +62 -0
- package/dist/native/keyboardAvoidance.js.map +1 -0
- package/dist/native/nativeSheet.js +48 -0
- package/dist/native/nativeSheet.js.map +1 -0
- package/dist/native/setupGestureHandler.js +27 -0
- package/dist/native/setupGestureHandler.js.map +1 -0
- package/dist/native/types.js +2 -0
- package/dist/native/types.js.map +1 -0
- package/dist/native/useGestureHandlerPan.js +353 -0
- package/dist/native/useGestureHandlerPan.js.map +1 -0
- package/dist/native/useKeyboardControllerSheet.js +118 -0
- package/dist/native/useKeyboardControllerSheet.js.map +1 -0
- package/dist/native/useSafeAreaInsets.js +25 -0
- package/dist/native/useSafeAreaInsets.js.map +1 -0
- package/dist/native/useSheet.js +3 -0
- package/dist/native/useSheet.js.map +1 -0
- package/dist/native/useSheetController.js +14 -0
- package/dist/native/useSheetController.js.map +1 -0
- package/dist/native/useSheetOffscreenSize.js +36 -0
- package/dist/native/useSheetOffscreenSize.js.map +1 -0
- package/dist/native/useSheetOpenState.js +25 -0
- package/dist/native/useSheetOpenState.js.map +1 -0
- package/dist/native/useSheetProviderProps.js +165 -0
- package/dist/native/useSheetProviderProps.js.map +1 -0
- package/dist/native/useSheetScrollViewGestures.js +131 -0
- package/dist/native/useSheetScrollViewGestures.js.map +1 -0
- package/dist/native/webViewport.js +98 -0
- package/dist/native/webViewport.js.map +1 -0
- package/package.json +46 -49
- package/src/GestureDetectorWrapper.tsx +1 -1
- package/src/Sheet.tsx +4 -4
- package/src/SheetContext.tsx +2 -2
- package/src/SheetController.d.ts +7 -0
- package/src/SheetController.d.ts.map +1 -0
- package/src/SheetController.js +38 -0
- package/src/SheetController.js.map +1 -0
- package/src/SheetController.tsx +2 -2
- package/src/SheetImplementationCustom.tsx +14 -14
- package/src/SheetScrollView.tsx +6 -6
- package/src/controller.ts +2 -2
- package/src/createSheet.tsx +9 -9
- package/src/index.ts +12 -12
- package/src/nativeSheet.tsx +4 -4
- package/src/useGestureHandlerPan.tsx +3 -3
- package/src/useKeyboardControllerSheet.native.ts +1 -1
- package/src/useKeyboardControllerSheet.ts +2 -2
- package/src/useSafeAreaInsets.native.ts +1 -1
- package/src/useSheet.tsx +1 -1
- package/src/useSheetController.d.ts +20 -0
- package/src/useSheetController.d.ts.map +1 -0
- package/src/useSheetController.js +14 -0
- package/src/useSheetController.js.map +1 -0
- package/src/useSheetOffscreenSize.tsx +1 -1
- package/src/useSheetOpenState.tsx +2 -2
- package/src/useSheetProviderProps.tsx +2 -2
- package/src/useSheetScrollViewGestures.native.ts +1 -1
- package/src/useSheetScrollViewGestures.ts +1 -1
- 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 +81 -89
- package/types/Sheet.d.ts.map +1 -1
- package/types/SheetContext.d.ts +5 -5
- package/types/SheetContext.d.ts.map +1 -1
- package/types/SheetController.d.ts +3 -2
- package/types/SheetController.d.ts.map +1 -1
- package/types/SheetImplementationCustom.d.ts +3 -3
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts +6 -6
- package/types/controller.d.ts +2 -2
- package/types/controller.d.ts.map +1 -1
- package/types/createSheet.d.ts +85 -85
- package/types/createSheet.d.ts.map +1 -1
- package/types/index.d.ts +12 -12
- package/types/index.d.ts.map +1 -1
- package/types/nativeSheet.d.ts +1 -1
- package/types/nativeSheet.d.ts.map +1 -1
- package/types/useGestureHandlerPan.d.ts +1 -1
- package/types/useGestureHandlerPan.d.ts.map +1 -1
- package/types/useKeyboardControllerSheet.d.ts +1 -1
- package/types/useKeyboardControllerSheet.d.ts.map +1 -1
- package/types/useKeyboardControllerSheet.native.d.ts +1 -1
- package/types/useKeyboardControllerSheet.native.d.ts.map +1 -1
- package/types/useSafeAreaInsets.native.d.ts +1 -1
- package/types/useSafeAreaInsets.native.d.ts.map +1 -1
- package/types/useSheet.d.ts +1 -1
- package/types/useSheet.d.ts.map +1 -1
- package/types/useSheetOffscreenSize.d.ts +1 -1
- package/types/useSheetOffscreenSize.d.ts.map +1 -1
- package/types/useSheetOpenState.d.ts +2 -2
- package/types/useSheetOpenState.d.ts.map +1 -1
- package/types/useSheetProviderProps.d.ts +3 -3
- package/types/useSheetProviderProps.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.d.ts +1 -1
- package/types/useSheetScrollViewGestures.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.native.d.ts +1 -1
- package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
- 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/dist/cjs/GestureDetectorWrapper.cjs +0 -54
- package/dist/cjs/GestureDetectorWrapper.native.js +0 -58
- package/dist/cjs/GestureDetectorWrapper.native.js.map +0 -1
- package/dist/cjs/GestureSheetContext.cjs +0 -54
- package/dist/cjs/GestureSheetContext.native.js +0 -58
- package/dist/cjs/GestureSheetContext.native.js.map +0 -1
- package/dist/cjs/Sheet.cjs +0 -119
- package/dist/cjs/Sheet.native.js +0 -122
- package/dist/cjs/Sheet.native.js.map +0 -1
- package/dist/cjs/SheetContext.cjs +0 -34
- package/dist/cjs/SheetContext.native.js +0 -37
- package/dist/cjs/SheetContext.native.js.map +0 -1
- package/dist/cjs/SheetController.cjs +0 -73
- package/dist/cjs/SheetController.native.js +0 -79
- package/dist/cjs/SheetController.native.js.map +0 -1
- package/dist/cjs/SheetImplementationCustom.cjs +0 -652
- package/dist/cjs/SheetImplementationCustom.native.js +0 -694
- package/dist/cjs/SheetImplementationCustom.native.js.map +0 -1
- package/dist/cjs/SheetScrollView.cjs +0 -337
- package/dist/cjs/SheetScrollView.native.js +0 -348
- package/dist/cjs/SheetScrollView.native.js.map +0 -1
- package/dist/cjs/constants.cjs +0 -34
- package/dist/cjs/constants.native.js +0 -37
- package/dist/cjs/constants.native.js.map +0 -1
- package/dist/cjs/contexts.cjs +0 -44
- package/dist/cjs/contexts.native.js +0 -47
- package/dist/cjs/contexts.native.js.map +0 -1
- package/dist/cjs/controller.cjs +0 -31
- package/dist/cjs/controller.native.js +0 -34
- package/dist/cjs/controller.native.js.map +0 -1
- package/dist/cjs/createSheet.cjs +0 -194
- package/dist/cjs/createSheet.native.js +0 -204
- package/dist/cjs/createSheet.native.js.map +0 -1
- package/dist/cjs/gestureState.cjs +0 -52
- package/dist/cjs/gestureState.native.js +0 -56
- package/dist/cjs/gestureState.native.js.map +0 -1
- package/dist/cjs/helpers.cjs +0 -35
- package/dist/cjs/helpers.native.js +0 -39
- package/dist/cjs/helpers.native.js.map +0 -1
- package/dist/cjs/index.cjs +0 -41
- package/dist/cjs/index.native.js +0 -44
- package/dist/cjs/index.native.js.map +0 -1
- package/dist/cjs/keyboardAvoidance.cjs +0 -93
- package/dist/cjs/keyboardAvoidance.native.js +0 -99
- package/dist/cjs/keyboardAvoidance.native.js.map +0 -1
- package/dist/cjs/nativeSheet.cjs +0 -99
- package/dist/cjs/nativeSheet.native.js +0 -109
- package/dist/cjs/nativeSheet.native.js.map +0 -1
- package/dist/cjs/setupGestureHandler.cjs +0 -55
- package/dist/cjs/setupGestureHandler.native.js +0 -60
- package/dist/cjs/setupGestureHandler.native.js.map +0 -1
- package/dist/cjs/types.cjs +0 -18
- package/dist/cjs/types.native.js +0 -21
- package/dist/cjs/types.native.js.map +0 -1
- package/dist/cjs/useGestureHandlerPan.cjs +0 -274
- package/dist/cjs/useGestureHandlerPan.native.js +0 -286
- package/dist/cjs/useGestureHandlerPan.native.js.map +0 -1
- package/dist/cjs/useKeyboardControllerSheet.cjs +0 -102
- package/dist/cjs/useKeyboardControllerSheet.native.js +0 -132
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +0 -1
- package/dist/cjs/useSafeAreaInsets.cjs +0 -44
- package/dist/cjs/useSafeAreaInsets.native.js +0 -48
- package/dist/cjs/useSafeAreaInsets.native.js.map +0 -1
- package/dist/cjs/useSheet.cjs +0 -29
- package/dist/cjs/useSheet.native.js +0 -34
- package/dist/cjs/useSheet.native.js.map +0 -1
- package/dist/cjs/useSheetController.cjs +0 -52
- package/dist/cjs/useSheetController.native.js +0 -55
- package/dist/cjs/useSheetController.native.js.map +0 -1
- package/dist/cjs/useSheetOffscreenSize.cjs +0 -63
- package/dist/cjs/useSheetOffscreenSize.native.js +0 -70
- package/dist/cjs/useSheetOffscreenSize.native.js.map +0 -1
- package/dist/cjs/useSheetOpenState.cjs +0 -52
- package/dist/cjs/useSheetOpenState.native.js +0 -58
- package/dist/cjs/useSheetOpenState.native.js.map +0 -1
- package/dist/cjs/useSheetProviderProps.cjs +0 -181
- package/dist/cjs/useSheetProviderProps.native.js +0 -196
- package/dist/cjs/useSheetProviderProps.native.js.map +0 -1
- package/dist/cjs/useSheetScrollViewGestures.cjs +0 -191
- package/dist/cjs/useSheetScrollViewGestures.native.js +0 -163
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +0 -1
- package/dist/cjs/webViewport.cjs +0 -75
- package/dist/cjs/webViewport.native.js +0 -81
- package/dist/cjs/webViewport.native.js.map +0 -1
- package/dist/esm/GestureDetectorWrapper.mjs +0 -29
- package/dist/esm/GestureDetectorWrapper.mjs.map +0 -1
- package/dist/esm/GestureDetectorWrapper.native.js +0 -30
- package/dist/esm/GestureDetectorWrapper.native.js.map +0 -1
- package/dist/esm/GestureSheetContext.mjs +0 -28
- package/dist/esm/GestureSheetContext.mjs.map +0 -1
- package/dist/esm/GestureSheetContext.native.js +0 -29
- package/dist/esm/GestureSheetContext.native.js.map +0 -1
- package/dist/esm/Sheet.mjs +0 -89
- package/dist/esm/Sheet.mjs.map +0 -1
- package/dist/esm/Sheet.native.js +0 -89
- package/dist/esm/Sheet.native.js.map +0 -1
- package/dist/esm/SheetContext.mjs +0 -6
- package/dist/esm/SheetContext.mjs.map +0 -1
- package/dist/esm/SheetContext.native.js +0 -6
- package/dist/esm/SheetContext.native.js.map +0 -1
- package/dist/esm/SheetController.mjs +0 -37
- package/dist/esm/SheetController.mjs.map +0 -1
- package/dist/esm/SheetController.native.js +0 -40
- package/dist/esm/SheetController.native.js.map +0 -1
- package/dist/esm/SheetImplementationCustom.mjs +0 -611
- package/dist/esm/SheetImplementationCustom.mjs.map +0 -1
- package/dist/esm/SheetImplementationCustom.native.js +0 -643
- package/dist/esm/SheetImplementationCustom.native.js.map +0 -1
- package/dist/esm/SheetScrollView.mjs +0 -301
- package/dist/esm/SheetScrollView.mjs.map +0 -1
- package/dist/esm/SheetScrollView.native.js +0 -309
- package/dist/esm/SheetScrollView.native.js.map +0 -1
- package/dist/esm/constants.mjs +0 -6
- package/dist/esm/constants.mjs.map +0 -1
- package/dist/esm/constants.native.js +0 -6
- package/dist/esm/constants.native.js.map +0 -1
- package/dist/esm/contexts.mjs +0 -7
- package/dist/esm/contexts.mjs.map +0 -1
- package/dist/esm/contexts.native.js +0 -7
- package/dist/esm/contexts.native.js.map +0 -1
- package/dist/esm/controller.mjs +0 -4
- package/dist/esm/controller.mjs.map +0 -1
- package/dist/esm/controller.native.js +0 -4
- package/dist/esm/controller.native.js.map +0 -1
- package/dist/esm/createSheet.mjs +0 -168
- package/dist/esm/createSheet.mjs.map +0 -1
- package/dist/esm/createSheet.native.js +0 -176
- package/dist/esm/createSheet.native.js.map +0 -1
- package/dist/esm/gestureState.mjs +0 -24
- package/dist/esm/gestureState.mjs.map +0 -1
- package/dist/esm/gestureState.native.js +0 -25
- package/dist/esm/gestureState.native.js.map +0 -1
- package/dist/esm/helpers.mjs +0 -10
- package/dist/esm/helpers.mjs.map +0 -1
- package/dist/esm/helpers.native.js +0 -11
- package/dist/esm/helpers.native.js.map +0 -1
- package/dist/esm/index.mjs +0 -14
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js +0 -14
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/keyboardAvoidance.mjs +0 -66
- package/dist/esm/keyboardAvoidance.mjs.map +0 -1
- package/dist/esm/keyboardAvoidance.native.js +0 -69
- package/dist/esm/keyboardAvoidance.native.js.map +0 -1
- package/dist/esm/nativeSheet.mjs +0 -73
- package/dist/esm/nativeSheet.mjs.map +0 -1
- package/dist/esm/nativeSheet.native.js +0 -80
- package/dist/esm/nativeSheet.native.js.map +0 -1
- package/dist/esm/setupGestureHandler.mjs +0 -29
- package/dist/esm/setupGestureHandler.mjs.map +0 -1
- package/dist/esm/setupGestureHandler.native.js +0 -31
- package/dist/esm/setupGestureHandler.native.js.map +0 -1
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js +0 -2
- package/dist/esm/types.native.js.map +0 -1
- package/dist/esm/useGestureHandlerPan.mjs +0 -249
- package/dist/esm/useGestureHandlerPan.mjs.map +0 -1
- package/dist/esm/useGestureHandlerPan.native.js +0 -258
- package/dist/esm/useGestureHandlerPan.native.js.map +0 -1
- package/dist/esm/useKeyboardControllerSheet.mjs +0 -77
- package/dist/esm/useKeyboardControllerSheet.mjs.map +0 -1
- package/dist/esm/useKeyboardControllerSheet.native.js +0 -104
- package/dist/esm/useKeyboardControllerSheet.native.js.map +0 -1
- package/dist/esm/useSafeAreaInsets.mjs +0 -7
- package/dist/esm/useSafeAreaInsets.mjs.map +0 -1
- package/dist/esm/useSafeAreaInsets.native.js +0 -8
- package/dist/esm/useSafeAreaInsets.native.js.map +0 -1
- package/dist/esm/useSheet.mjs +0 -4
- package/dist/esm/useSheet.mjs.map +0 -1
- package/dist/esm/useSheet.native.js +0 -6
- package/dist/esm/useSheet.native.js.map +0 -1
- package/dist/esm/useSheetController.mjs +0 -15
- package/dist/esm/useSheetController.mjs.map +0 -1
- package/dist/esm/useSheetController.native.js +0 -15
- package/dist/esm/useSheetController.native.js.map +0 -1
- package/dist/esm/useSheetOffscreenSize.mjs +0 -38
- package/dist/esm/useSheetOffscreenSize.mjs.map +0 -1
- package/dist/esm/useSheetOffscreenSize.native.js +0 -42
- package/dist/esm/useSheetOffscreenSize.native.js.map +0 -1
- package/dist/esm/useSheetOpenState.mjs +0 -27
- package/dist/esm/useSheetOpenState.mjs.map +0 -1
- package/dist/esm/useSheetOpenState.native.js +0 -30
- package/dist/esm/useSheetOpenState.native.js.map +0 -1
- package/dist/esm/useSheetProviderProps.mjs +0 -145
- package/dist/esm/useSheetProviderProps.mjs.map +0 -1
- package/dist/esm/useSheetProviderProps.native.js +0 -157
- package/dist/esm/useSheetProviderProps.native.js.map +0 -1
- package/dist/esm/useSheetScrollViewGestures.mjs +0 -166
- package/dist/esm/useSheetScrollViewGestures.mjs.map +0 -1
- package/dist/esm/useSheetScrollViewGestures.native.js +0 -135
- package/dist/esm/useSheetScrollViewGestures.native.js.map +0 -1
- package/dist/esm/webViewport.mjs +0 -43
- package/dist/esm/webViewport.mjs.map +0 -1
- package/dist/esm/webViewport.native.js +0 -46
- package/dist/esm/webViewport.native.js.map +0 -1
- package/dist/jsx/GestureDetectorWrapper.mjs +0 -29
- package/dist/jsx/GestureDetectorWrapper.mjs.map +0 -1
- package/dist/jsx/GestureDetectorWrapper.native.js +0 -58
- package/dist/jsx/GestureDetectorWrapper.native.js.map +0 -1
- package/dist/jsx/GestureSheetContext.mjs +0 -28
- package/dist/jsx/GestureSheetContext.mjs.map +0 -1
- package/dist/jsx/GestureSheetContext.native.js +0 -58
- package/dist/jsx/GestureSheetContext.native.js.map +0 -1
- package/dist/jsx/Sheet.mjs +0 -89
- package/dist/jsx/Sheet.mjs.map +0 -1
- package/dist/jsx/Sheet.native.js +0 -122
- package/dist/jsx/Sheet.native.js.map +0 -1
- package/dist/jsx/SheetContext.mjs +0 -6
- package/dist/jsx/SheetContext.mjs.map +0 -1
- package/dist/jsx/SheetContext.native.js +0 -37
- package/dist/jsx/SheetContext.native.js.map +0 -1
- package/dist/jsx/SheetController.mjs +0 -37
- package/dist/jsx/SheetController.mjs.map +0 -1
- package/dist/jsx/SheetController.native.js +0 -79
- package/dist/jsx/SheetController.native.js.map +0 -1
- package/dist/jsx/SheetImplementationCustom.mjs +0 -611
- package/dist/jsx/SheetImplementationCustom.mjs.map +0 -1
- package/dist/jsx/SheetImplementationCustom.native.js +0 -694
- package/dist/jsx/SheetImplementationCustom.native.js.map +0 -1
- package/dist/jsx/SheetScrollView.mjs +0 -301
- package/dist/jsx/SheetScrollView.mjs.map +0 -1
- package/dist/jsx/SheetScrollView.native.js +0 -348
- package/dist/jsx/SheetScrollView.native.js.map +0 -1
- package/dist/jsx/constants.mjs +0 -6
- package/dist/jsx/constants.mjs.map +0 -1
- package/dist/jsx/constants.native.js +0 -37
- package/dist/jsx/constants.native.js.map +0 -1
- package/dist/jsx/contexts.mjs +0 -7
- package/dist/jsx/contexts.mjs.map +0 -1
- package/dist/jsx/contexts.native.js +0 -47
- package/dist/jsx/contexts.native.js.map +0 -1
- package/dist/jsx/controller.mjs +0 -4
- package/dist/jsx/controller.mjs.map +0 -1
- package/dist/jsx/controller.native.js +0 -34
- package/dist/jsx/controller.native.js.map +0 -1
- package/dist/jsx/createSheet.mjs +0 -168
- package/dist/jsx/createSheet.mjs.map +0 -1
- package/dist/jsx/createSheet.native.js +0 -204
- package/dist/jsx/createSheet.native.js.map +0 -1
- package/dist/jsx/gestureState.mjs +0 -24
- package/dist/jsx/gestureState.mjs.map +0 -1
- package/dist/jsx/gestureState.native.js +0 -56
- package/dist/jsx/gestureState.native.js.map +0 -1
- package/dist/jsx/helpers.mjs +0 -10
- package/dist/jsx/helpers.mjs.map +0 -1
- package/dist/jsx/helpers.native.js +0 -39
- package/dist/jsx/helpers.native.js.map +0 -1
- package/dist/jsx/index.js +0 -14
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs +0 -14
- package/dist/jsx/index.mjs.map +0 -1
- package/dist/jsx/index.native.js +0 -44
- package/dist/jsx/index.native.js.map +0 -1
- package/dist/jsx/keyboardAvoidance.mjs +0 -66
- package/dist/jsx/keyboardAvoidance.mjs.map +0 -1
- package/dist/jsx/keyboardAvoidance.native.js +0 -99
- package/dist/jsx/keyboardAvoidance.native.js.map +0 -1
- package/dist/jsx/nativeSheet.mjs +0 -73
- package/dist/jsx/nativeSheet.mjs.map +0 -1
- package/dist/jsx/nativeSheet.native.js +0 -109
- package/dist/jsx/nativeSheet.native.js.map +0 -1
- package/dist/jsx/setupGestureHandler.mjs +0 -29
- package/dist/jsx/setupGestureHandler.mjs.map +0 -1
- package/dist/jsx/setupGestureHandler.native.js +0 -60
- package/dist/jsx/setupGestureHandler.native.js.map +0 -1
- package/dist/jsx/types.mjs +0 -2
- package/dist/jsx/types.mjs.map +0 -1
- package/dist/jsx/types.native.js +0 -21
- package/dist/jsx/types.native.js.map +0 -1
- package/dist/jsx/useGestureHandlerPan.mjs +0 -249
- package/dist/jsx/useGestureHandlerPan.mjs.map +0 -1
- package/dist/jsx/useGestureHandlerPan.native.js +0 -286
- package/dist/jsx/useGestureHandlerPan.native.js.map +0 -1
- package/dist/jsx/useKeyboardControllerSheet.mjs +0 -77
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +0 -1
- package/dist/jsx/useKeyboardControllerSheet.native.js +0 -132
- package/dist/jsx/useKeyboardControllerSheet.native.js.map +0 -1
- package/dist/jsx/useSafeAreaInsets.mjs +0 -7
- package/dist/jsx/useSafeAreaInsets.mjs.map +0 -1
- package/dist/jsx/useSafeAreaInsets.native.js +0 -48
- package/dist/jsx/useSafeAreaInsets.native.js.map +0 -1
- package/dist/jsx/useSheet.mjs +0 -4
- package/dist/jsx/useSheet.mjs.map +0 -1
- package/dist/jsx/useSheet.native.js +0 -34
- package/dist/jsx/useSheet.native.js.map +0 -1
- package/dist/jsx/useSheetController.mjs +0 -15
- package/dist/jsx/useSheetController.mjs.map +0 -1
- package/dist/jsx/useSheetController.native.js +0 -55
- package/dist/jsx/useSheetController.native.js.map +0 -1
- package/dist/jsx/useSheetOffscreenSize.mjs +0 -38
- package/dist/jsx/useSheetOffscreenSize.mjs.map +0 -1
- package/dist/jsx/useSheetOffscreenSize.native.js +0 -70
- package/dist/jsx/useSheetOffscreenSize.native.js.map +0 -1
- package/dist/jsx/useSheetOpenState.mjs +0 -27
- package/dist/jsx/useSheetOpenState.mjs.map +0 -1
- package/dist/jsx/useSheetOpenState.native.js +0 -58
- package/dist/jsx/useSheetOpenState.native.js.map +0 -1
- package/dist/jsx/useSheetProviderProps.mjs +0 -145
- package/dist/jsx/useSheetProviderProps.mjs.map +0 -1
- package/dist/jsx/useSheetProviderProps.native.js +0 -196
- package/dist/jsx/useSheetProviderProps.native.js.map +0 -1
- package/dist/jsx/useSheetScrollViewGestures.mjs +0 -166
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +0 -1
- package/dist/jsx/useSheetScrollViewGestures.native.js +0 -163
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +0 -1
- package/dist/jsx/webViewport.mjs +0 -43
- package/dist/jsx/webViewport.mjs.map +0 -1
- package/dist/jsx/webViewport.native.js +0 -81
- package/dist/jsx/webViewport.native.js.map +0 -1
- 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/setup-gesture-handler.cjs +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Web implementation of the keyboard controller sheet hook.
|
|
4
|
+
*
|
|
5
|
+
* Mobile browsers don't expose a keyboard API, but they do resize the
|
|
6
|
+
* VisualViewport when the soft keyboard opens. We use the viewport shrink
|
|
7
|
+
* (`clientHeight - visualViewport.height`) to detect the keyboard, then feed the
|
|
8
|
+
* bottom layout inset (`clientHeight - (offsetTop + height)`) into
|
|
9
|
+
* SheetImplementationCustom. The bottom inset accounts for iOS Safari panning
|
|
10
|
+
* the visual viewport during focus, so the sheet doesn't over-lift.
|
|
11
|
+
*
|
|
12
|
+
* Without this, a bottom sheet on mobile web stays pinned behind the keyboard:
|
|
13
|
+
* react-native-web's Dimensions tracks the (shrinking) VisualViewport, so any
|
|
14
|
+
* content sized off window dimensions collapses while the sheet's bottom stays
|
|
15
|
+
* occluded. See SheetImplementationCustom's activePositions / keyboardOccludedHeight.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.useKeyboardControllerSheet = useKeyboardControllerSheet;
|
|
19
|
+
const react_1 = require("react");
|
|
20
|
+
const constants_1 = require("@hanzogui/constants");
|
|
21
|
+
const webViewport_ts_1 = require("./webViewport.js");
|
|
22
|
+
function useKeyboardControllerSheet(options) {
|
|
23
|
+
const { enabled } = options;
|
|
24
|
+
// initialize from the CURRENT viewport, not blindly from 0/false. when the
|
|
25
|
+
// sheet opens with the soft keyboard already up (e.g. it was raised by a field
|
|
26
|
+
// on the page behind, or by an autofocus whose keyboard wins the race against
|
|
27
|
+
// the first layout), a false initial value makes the sheet's very first render
|
|
28
|
+
// believe the keyboard is down — it captures a keyboard-free baseline from a
|
|
29
|
+
// keyboard-shrunk layout and the anchor/seed machinery has to recover. reading
|
|
30
|
+
// the viewport synchronously here removes that first-render race: the sheet
|
|
31
|
+
// knows the keyboard is up on render 1 and takes the seed path deterministically.
|
|
32
|
+
const [keyboardHeight, setKeyboardHeight] = (0, react_1.useState)(() => constants_1.isWeb && enabled && typeof window !== 'undefined' && window.visualViewport
|
|
33
|
+
? (() => {
|
|
34
|
+
const resizeHeight = (0, webViewport_ts_1.getWebKeyboardResizeHeight)();
|
|
35
|
+
return resizeHeight >= webViewport_ts_1.MIN_KEYBOARD_HEIGHT &&
|
|
36
|
+
(0, webViewport_ts_1.isEditableElement)(document.activeElement)
|
|
37
|
+
? (0, webViewport_ts_1.getWebKeyboardBottomInset)()
|
|
38
|
+
: 0;
|
|
39
|
+
})()
|
|
40
|
+
: 0);
|
|
41
|
+
const [isKeyboardVisible, setIsKeyboardVisible] = (0, react_1.useState)(() => keyboardHeight > 0);
|
|
42
|
+
// action-sheet pattern: pause keyboard hide events during drag so the sheet
|
|
43
|
+
// position doesn't revert mid-gesture when a TextInput blurs.
|
|
44
|
+
const pauseKeyboardHandler = (0, react_1.useRef)(false);
|
|
45
|
+
const pendingHide = (0, react_1.useRef)(false);
|
|
46
|
+
// live mirror of isKeyboardVisible so the listener can read it without
|
|
47
|
+
// re-subscribing on every toggle.
|
|
48
|
+
const isVisibleRef = (0, react_1.useRef)(false);
|
|
49
|
+
isVisibleRef.current = isKeyboardVisible;
|
|
50
|
+
const dismissKeyboard = (0, react_1.useCallback)(() => {
|
|
51
|
+
if (typeof document === 'undefined')
|
|
52
|
+
return;
|
|
53
|
+
const active = document.activeElement;
|
|
54
|
+
if ((0, webViewport_ts_1.isEditableElement)(active)) {
|
|
55
|
+
active?.blur?.();
|
|
56
|
+
}
|
|
57
|
+
}, []);
|
|
58
|
+
const flushPendingHide = (0, react_1.useCallback)(() => {
|
|
59
|
+
if (pendingHide.current) {
|
|
60
|
+
pendingHide.current = false;
|
|
61
|
+
setIsKeyboardVisible(false);
|
|
62
|
+
setKeyboardHeight(0);
|
|
63
|
+
}
|
|
64
|
+
}, []);
|
|
65
|
+
(0, react_1.useEffect)(() => {
|
|
66
|
+
if (!constants_1.isWeb || !enabled)
|
|
67
|
+
return;
|
|
68
|
+
if (typeof window === 'undefined')
|
|
69
|
+
return;
|
|
70
|
+
const vv = window.visualViewport;
|
|
71
|
+
if (!vv)
|
|
72
|
+
return;
|
|
73
|
+
const update = () => {
|
|
74
|
+
const resizeHeight = (0, webViewport_ts_1.getWebKeyboardResizeHeight)();
|
|
75
|
+
const height = (0, webViewport_ts_1.getWebKeyboardBottomInset)();
|
|
76
|
+
const tall = resizeHeight >= webViewport_ts_1.MIN_KEYBOARD_HEIGHT;
|
|
77
|
+
// require an editable element focused to *show* — this rules out URL-bar
|
|
78
|
+
// collapse and other viewport changes that aren't a keyboard. but stay
|
|
79
|
+
// visible while the viewport remains shrunk even if focus momentarily
|
|
80
|
+
// moves to a non-editable element (e.g. tapping between two inputs fires
|
|
81
|
+
// focusout→focusin), so the sheet doesn't flicker mid-transition.
|
|
82
|
+
const editableFocused = (0, webViewport_ts_1.isEditableElement)(document.activeElement);
|
|
83
|
+
const visible = tall && (editableFocused || isVisibleRef.current);
|
|
84
|
+
if (!visible) {
|
|
85
|
+
// suppress hide during an active drag so positions stay frozen; the
|
|
86
|
+
// drag-end flush reconciles the real state.
|
|
87
|
+
if (pauseKeyboardHandler.current && isVisibleRef.current) {
|
|
88
|
+
pendingHide.current = true;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
setIsKeyboardVisible(false);
|
|
92
|
+
setKeyboardHeight(0);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
pendingHide.current = false;
|
|
96
|
+
setIsKeyboardVisible(true);
|
|
97
|
+
setKeyboardHeight((prev) => (prev === height ? prev : height));
|
|
98
|
+
};
|
|
99
|
+
// resize tracks keyboard open/close. scroll tracks iOS Safari's focus pan:
|
|
100
|
+
// visualViewport.offsetTop can change after the height has settled, and the
|
|
101
|
+
// sheet cap must move in that same layout coordinate space.
|
|
102
|
+
vv.addEventListener('resize', update);
|
|
103
|
+
vv.addEventListener('scroll', update);
|
|
104
|
+
// focus changes flip editable state without necessarily resizing the viewport
|
|
105
|
+
window.addEventListener('focusin', update);
|
|
106
|
+
window.addEventListener('focusout', update);
|
|
107
|
+
update();
|
|
108
|
+
return () => {
|
|
109
|
+
vv.removeEventListener('resize', update);
|
|
110
|
+
vv.removeEventListener('scroll', update);
|
|
111
|
+
window.removeEventListener('focusin', update);
|
|
112
|
+
window.removeEventListener('focusout', update);
|
|
113
|
+
};
|
|
114
|
+
}, [enabled]);
|
|
115
|
+
return {
|
|
116
|
+
keyboardControllerEnabled: false,
|
|
117
|
+
keyboardHeight,
|
|
118
|
+
isKeyboardVisible,
|
|
119
|
+
dismissKeyboard,
|
|
120
|
+
pauseKeyboardHandler,
|
|
121
|
+
flushPendingHide,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=useKeyboardControllerSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeyboardControllerSheet.js","sourceRoot":"","sources":["../../src/useKeyboardControllerSheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafeAreaInsetsContext = void 0;
|
|
4
|
+
exports.useSafeAreaInsets = useSafeAreaInsets;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const React = tslib_1.__importStar(require("react"));
|
|
7
|
+
// web uses CSS env(safe-area-inset-*) for safe areas, so there is no native
|
|
8
|
+
// safe-area context to read here — the keyboard-avoidance path uses the visual
|
|
9
|
+
// viewport offset instead. this stub keeps the import resolvable on web (where
|
|
10
|
+
// react-native-safe-area-context isn't a dependency) and is the canonical type
|
|
11
|
+
// source for both platform variants.
|
|
12
|
+
exports.SafeAreaInsetsContext = React.createContext(null);
|
|
13
|
+
function useSafeAreaInsets() {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=useSafeAreaInsets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSafeAreaInsets.js","sourceRoot":"","sources":["../../src/useSafeAreaInsets.ts"],"names":[],"mappings":";;;;;AAAA,MAAY,KAAK,0CAAa;AAS9B,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,qCAAqC;AACxB,QAAA,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAwB,IAAI,CAAC,CAAA;AAErF;IACE,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSheet = void 0;
|
|
4
|
+
const SheetContext_tsx_1 = require("./SheetContext.js");
|
|
5
|
+
const useSheet = () => (0, SheetContext_tsx_1.useSheetContext)('', undefined);
|
|
6
|
+
exports.useSheet = useSheet;
|
|
7
|
+
//# sourceMappingURL=useSheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheet.js","sourceRoot":"","sources":["../../src/useSheet.tsx"],"names":[],"mappings":";;;AAAA,wDAAoD;AAE7C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAA,kCAAe,EAAC,EAAE,EAAE,SAAS,CAAC,CAAA;AAA/C,QAAA,QAAQ,GAAR,QAAQ,CAAuC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SheetControllerContext = exports.useSheetController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const useSheetController = () => {
|
|
7
|
+
const controller = react_1.default.useContext(exports.SheetControllerContext);
|
|
8
|
+
const isHidden = controller?.hidden;
|
|
9
|
+
const isShowingNonSheet = isHidden && controller?.open;
|
|
10
|
+
return {
|
|
11
|
+
controller,
|
|
12
|
+
isHidden,
|
|
13
|
+
isShowingNonSheet,
|
|
14
|
+
disableDrag: controller?.disableDrag,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
exports.useSheetController = useSheetController;
|
|
18
|
+
exports.SheetControllerContext = react_1.default.createContext(null);
|
|
19
|
+
//# sourceMappingURL=useSheetController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheetController.js","sourceRoot":"","sources":["../../src/useSheetController.tsx"],"names":[],"mappings":";;;;AAAA,0DAAyB;AAElB,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,UAAU,GAAG,eAAK,CAAC,UAAU,CAAC,QAAA,sBAAsB,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAA;IACnC,MAAM,iBAAiB,GAAG,QAAQ,IAAI,UAAU,EAAE,IAAI,CAAA;IACtD,OAAO;QACL,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,WAAW,EAAE,UAAU,EAAE,WAAW;KACrC,CAAA;AACH,CAAC,CAAA;AAVY,QAAA,kBAAkB,GAAlB,kBAAkB,CAU9B;AAEY,QAAA,sBAAsB,GACjC,eAAK,CAAC,aAAa,CAAqC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSheetOffscreenSize = void 0;
|
|
4
|
+
const useSheetOffscreenSize = ({ snapPoints, position, screenSize, frameSize, snapPointsMode, }) => {
|
|
5
|
+
if (snapPointsMode === 'fit') {
|
|
6
|
+
return 0;
|
|
7
|
+
}
|
|
8
|
+
if (snapPointsMode === 'constant') {
|
|
9
|
+
const maxSize = Number(snapPoints[0]);
|
|
10
|
+
const currentSize = Number(snapPoints[position] ?? 0);
|
|
11
|
+
const offscreenSize = maxSize - currentSize;
|
|
12
|
+
return offscreenSize;
|
|
13
|
+
}
|
|
14
|
+
if (snapPointsMode === 'percent') {
|
|
15
|
+
const maxPercentOpened = Number(snapPoints[0]) / 100;
|
|
16
|
+
const percentOpened = Number(snapPoints[position] ?? 0) / 100;
|
|
17
|
+
const percentHidden = maxPercentOpened - percentOpened;
|
|
18
|
+
const offscreenSize = percentHidden * screenSize;
|
|
19
|
+
return offscreenSize;
|
|
20
|
+
}
|
|
21
|
+
// mixed:
|
|
22
|
+
const maxSnapPoint = snapPoints[0];
|
|
23
|
+
if (maxSnapPoint === 'fit') {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
const maxSize = typeof maxSnapPoint === 'string'
|
|
27
|
+
? (Number(maxSnapPoint.slice(0, -1)) / 100) * screenSize
|
|
28
|
+
: maxSnapPoint;
|
|
29
|
+
const currentSnapPoint = snapPoints[position] ?? 0;
|
|
30
|
+
const currentSize = typeof currentSnapPoint === 'string'
|
|
31
|
+
? (Number(currentSnapPoint.slice(0, -1)) / 100) * screenSize
|
|
32
|
+
: currentSnapPoint;
|
|
33
|
+
const offscreenSize = maxSize - currentSize;
|
|
34
|
+
if (Number.isNaN(offscreenSize)) {
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
37
|
+
return offscreenSize;
|
|
38
|
+
};
|
|
39
|
+
exports.useSheetOffscreenSize = useSheetOffscreenSize;
|
|
40
|
+
//# sourceMappingURL=useSheetOffscreenSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheetOffscreenSize.js","sourceRoot":"","sources":["../../src/useSheetOffscreenSize.tsx"],"names":[],"mappings":";;;AAEO,MAAM,qBAAqB,GAAG,CAAC,EACpC,UAAU,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,cAAc,GACI,EAAE,EAAE;IACtB,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACrD,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,CAAA;QAC3C,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACpD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAA;QAC7D,MAAM,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAA;QACtD,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,CAAA;QAChD,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,SAAS;IACT,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,OAAO,GACX,OAAO,YAAY,KAAK,QAAQ;QAC9B,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU;QACxD,CAAC,CAAC,YAAY,CAAA;IAClB,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,WAAW,GACf,OAAO,gBAAgB,KAAK,QAAQ;QAClC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU;QAC5D,CAAC,CAAC,gBAAgB,CAAA;IACtB,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,CAAA;IAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AA9CY,QAAA,qBAAqB,GAArB,qBAAqB,CA8CjC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSheetOpenState = void 0;
|
|
4
|
+
const use_controllable_state_1 = require("@hanzogui/use-controllable-state");
|
|
5
|
+
const useSheetController_tsx_1 = require("./useSheetController.js");
|
|
6
|
+
const useSheetOpenState = (props) => {
|
|
7
|
+
const { isHidden, controller } = (0, useSheetController_tsx_1.useSheetController)();
|
|
8
|
+
const onOpenChangeInternal = (val) => {
|
|
9
|
+
controller?.onOpenChange?.(val);
|
|
10
|
+
props.onOpenChange?.(val);
|
|
11
|
+
};
|
|
12
|
+
const propVal = props.preferAdaptParentOpenState
|
|
13
|
+
? (controller?.open ?? props.open)
|
|
14
|
+
: (props.open ?? controller?.open);
|
|
15
|
+
const [open, setOpen] = (0, use_controllable_state_1.useControllableState)({
|
|
16
|
+
prop: propVal,
|
|
17
|
+
defaultProp: props.defaultOpen ?? false,
|
|
18
|
+
onChange: onOpenChangeInternal,
|
|
19
|
+
strategy: 'most-recent-wins',
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
open,
|
|
23
|
+
setOpen,
|
|
24
|
+
isHidden,
|
|
25
|
+
controller,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.useSheetOpenState = useSheetOpenState;
|
|
29
|
+
//# sourceMappingURL=useSheetOpenState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheetOpenState.js","sourceRoot":"","sources":["../../src/useSheetOpenState.tsx"],"names":[],"mappings":";;;AAAA,6EAAuE;AAGvE,oEAA6D;AAEtD,MAAM,iBAAiB,GAAG,CAAC,KAAiB,EAAE,EAAE;IACrD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAA,2CAAkB,GAAE,CAAA;IAErD,MAAM,oBAAoB,GAAG,CAAC,GAAY,EAAE,EAAE;QAC5C,UAAU,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;QAC/B,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,0BAA0B;QAC9C,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,IAAI,CAAC,CAAA;IAEpC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,6CAAoB,EAAC;QAC3C,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;QACvC,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,CAAA;IAEF,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,UAAU;KACX,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,iBAAiB,GAAjB,iBAAiB,CAyB7B"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSheetProviderProps = useSheetProviderProps;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const core_1 = require("@hanzogui/core");
|
|
7
|
+
const use_constant_1 = require("@hanzogui/use-constant");
|
|
8
|
+
const use_controllable_state_1 = require("@hanzogui/use-controllable-state");
|
|
9
|
+
function useSheetProviderProps(props, state, options = {}) {
|
|
10
|
+
const handleRef = react_1.default.useRef(null);
|
|
11
|
+
const contentRef = react_1.default.useRef(null);
|
|
12
|
+
const [frameSize, setFrameSize] = react_1.default.useState(0);
|
|
13
|
+
const [maxContentSize, setMaxContentSize] = react_1.default.useState(0);
|
|
14
|
+
const snapPointsMode = props.snapPointsMode ?? 'percent';
|
|
15
|
+
const snapPointsProp = props.snapPoints ??
|
|
16
|
+
(snapPointsMode === 'percent'
|
|
17
|
+
? [80]
|
|
18
|
+
: snapPointsMode === 'constant'
|
|
19
|
+
? [256]
|
|
20
|
+
: ['fit']);
|
|
21
|
+
const hasFit = snapPointsProp[0] === 'fit';
|
|
22
|
+
const snapPoints = react_1.default.useMemo(() => (props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp), [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
|
|
23
|
+
// lets set -1 to be always the "open = false" position
|
|
24
|
+
const [position_, setPositionImmediate] = (0, use_controllable_state_1.useControllableState)({
|
|
25
|
+
prop: props.position,
|
|
26
|
+
defaultProp: props.defaultPosition || (state.open ? 0 : -1),
|
|
27
|
+
onChange: props.onPositionChange,
|
|
28
|
+
strategy: 'most-recent-wins',
|
|
29
|
+
});
|
|
30
|
+
const position = state.open === false ? -1 : position_;
|
|
31
|
+
const { open } = state;
|
|
32
|
+
const setPosition = react_1.default.useCallback((next) => {
|
|
33
|
+
// close on dismissOnSnapToBottom (and set position so it animates)
|
|
34
|
+
if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
|
|
35
|
+
state.setOpen(false);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
setPositionImmediate(next);
|
|
39
|
+
}
|
|
40
|
+
}, [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]);
|
|
41
|
+
if (process.env.NODE_ENV === 'development') {
|
|
42
|
+
if (snapPointsMode === 'mixed' &&
|
|
43
|
+
snapPoints.some((p) => {
|
|
44
|
+
if (typeof p === 'string') {
|
|
45
|
+
if (p === 'fit') {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (p.endsWith('%')) {
|
|
49
|
+
const n = Number(p.slice(0, -1));
|
|
50
|
+
return n < 0 || n > 100;
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return typeof p !== 'number' || p < 0;
|
|
55
|
+
})) {
|
|
56
|
+
console.warn('⚠️ Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or "fit" when snapPointsMode is mixed');
|
|
57
|
+
}
|
|
58
|
+
if (snapPointsMode === 'mixed' && snapPoints.indexOf('fit') > 0) {
|
|
59
|
+
console.warn('⚠️ Invalid snapPoint given, "fit" must be the first/largest snap point when snapPointsMode is mixed');
|
|
60
|
+
}
|
|
61
|
+
if (snapPointsMode === 'fit' &&
|
|
62
|
+
(snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) ||
|
|
63
|
+
snapPoints[0] !== 'fit')) {
|
|
64
|
+
console.warn('⚠️ Invalid snapPoint given, there are no snap points when snapPointsMode is fit');
|
|
65
|
+
}
|
|
66
|
+
if (snapPointsMode === 'constant' &&
|
|
67
|
+
snapPoints.some((p) => typeof p !== 'number' || p < 0)) {
|
|
68
|
+
console.warn('⚠️ Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant');
|
|
69
|
+
}
|
|
70
|
+
if (snapPointsMode === 'percent' &&
|
|
71
|
+
snapPoints.some((p) => typeof p !== 'number' || p < 0 || p > 100)) {
|
|
72
|
+
console.warn('⚠️ Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// reset position to fully open on re-open after dismissOnSnapToBottom
|
|
76
|
+
if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
|
|
77
|
+
setPositionImmediate(0);
|
|
78
|
+
}
|
|
79
|
+
// open must set position
|
|
80
|
+
const shouldSetPositionOpen = open && position < 0;
|
|
81
|
+
react_1.default.useEffect(() => {
|
|
82
|
+
if (shouldSetPositionOpen) {
|
|
83
|
+
setPosition(0);
|
|
84
|
+
}
|
|
85
|
+
}, [setPosition, shouldSetPositionOpen]);
|
|
86
|
+
const { animationDriver } = (0, core_1.useConfiguration)();
|
|
87
|
+
if (!animationDriver) {
|
|
88
|
+
throw new Error(process.env.NODE_ENV === 'production'
|
|
89
|
+
? `❌ 008`
|
|
90
|
+
: 'Must set animations in hanzogui.config.ts');
|
|
91
|
+
}
|
|
92
|
+
const scrollBridge = (0, use_constant_1.useConstant)(() => {
|
|
93
|
+
const parentDragListeners = new Set();
|
|
94
|
+
const bridge = {
|
|
95
|
+
hasScrollableContent: false,
|
|
96
|
+
enabled: false,
|
|
97
|
+
y: 0,
|
|
98
|
+
paneY: 0,
|
|
99
|
+
paneMinY: 0,
|
|
100
|
+
scrollStartY: -1,
|
|
101
|
+
drag: () => { },
|
|
102
|
+
release: () => { },
|
|
103
|
+
scrollLock: false,
|
|
104
|
+
isParentDragging: false,
|
|
105
|
+
onParentDragging: (cb) => {
|
|
106
|
+
parentDragListeners.add(cb);
|
|
107
|
+
return () => {
|
|
108
|
+
parentDragListeners.delete(cb);
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
setParentDragging: (val) => {
|
|
112
|
+
if (val !== bridge.isParentDragging) {
|
|
113
|
+
bridge.isParentDragging = val;
|
|
114
|
+
parentDragListeners.forEach((cb) => cb(val));
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
return bridge;
|
|
119
|
+
});
|
|
120
|
+
// Handle both new disableRemoveScroll and deprecated forceRemoveScrollEnabled
|
|
121
|
+
let disableRemoveScroll;
|
|
122
|
+
if (props.disableRemoveScroll !== undefined) {
|
|
123
|
+
// New prop: disableRemoveScroll={true} means RemoveScroll is disabled
|
|
124
|
+
disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
|
|
125
|
+
}
|
|
126
|
+
else if (props.forceRemoveScrollEnabled !== undefined) {
|
|
127
|
+
// Deprecated prop: forceRemoveScrollEnabled can override the default
|
|
128
|
+
if (process.env.NODE_ENV === 'development') {
|
|
129
|
+
console.warn('[Sheet] forceRemoveScrollEnabled is deprecated. Use disableRemoveScroll instead.');
|
|
130
|
+
}
|
|
131
|
+
disableRemoveScroll = !props.forceRemoveScrollEnabled;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// Default: disabled when not open or not modal
|
|
135
|
+
disableRemoveScroll = !open || !props.modal;
|
|
136
|
+
}
|
|
137
|
+
const maxSnapPoint = snapPoints[0];
|
|
138
|
+
const screenSize = snapPointsMode === 'percent'
|
|
139
|
+
? frameSize / ((typeof maxSnapPoint === 'number' ? maxSnapPoint : 100) / 100)
|
|
140
|
+
: maxContentSize;
|
|
141
|
+
const providerProps = {
|
|
142
|
+
screenSize,
|
|
143
|
+
maxSnapPoint,
|
|
144
|
+
disableRemoveScroll,
|
|
145
|
+
scrollBridge,
|
|
146
|
+
modal: !!props.modal,
|
|
147
|
+
open: state.open,
|
|
148
|
+
setOpen: state.setOpen,
|
|
149
|
+
hidden: !!state.isHidden,
|
|
150
|
+
contentRef,
|
|
151
|
+
handleRef,
|
|
152
|
+
frameSize,
|
|
153
|
+
setFrameSize,
|
|
154
|
+
dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
|
|
155
|
+
dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
|
|
156
|
+
onOverlayComponent: options.onOverlayComponent,
|
|
157
|
+
scope: props.__scopeSheet,
|
|
158
|
+
hasFit,
|
|
159
|
+
position,
|
|
160
|
+
snapPoints,
|
|
161
|
+
snapPointsMode,
|
|
162
|
+
setMaxContentSize,
|
|
163
|
+
setPosition,
|
|
164
|
+
setPositionImmediate,
|
|
165
|
+
onlyShowFrame: false,
|
|
166
|
+
};
|
|
167
|
+
return providerProps;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=useSheetProviderProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSheetProviderProps.js","sourceRoot":"","sources":["../../src/useSheetProviderProps.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSheetScrollViewGestures = useSheetScrollViewGestures;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
function useSheetScrollViewGestures({ scrollRef, scrollBridge, hasScrollableContent, onManualScroll, }) {
|
|
6
|
+
const state = (0, react_1.useRef)({
|
|
7
|
+
startY: 0,
|
|
8
|
+
lastY: 0,
|
|
9
|
+
owner: 'none',
|
|
10
|
+
hadPanOwner: false,
|
|
11
|
+
panDragOffset: 0,
|
|
12
|
+
dys: [],
|
|
13
|
+
scrollYAtGestureStart: 0,
|
|
14
|
+
});
|
|
15
|
+
const onManualScrollRef = (0, react_1.useRef)(onManualScroll);
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
onManualScrollRef.current = onManualScroll;
|
|
18
|
+
}, [onManualScroll]);
|
|
19
|
+
(0, react_1.useEffect)(() => {
|
|
20
|
+
if (!scrollRef.current)
|
|
21
|
+
return;
|
|
22
|
+
const controller = new AbortController();
|
|
23
|
+
const node = scrollRef.current?.getScrollableNode();
|
|
24
|
+
if (!node)
|
|
25
|
+
return;
|
|
26
|
+
node.style.overscrollBehavior = 'contain';
|
|
27
|
+
// track original overflow to restore later
|
|
28
|
+
let originalOverflow = '';
|
|
29
|
+
const disableScroll = () => {
|
|
30
|
+
if (node.style.overflowY !== 'hidden') {
|
|
31
|
+
originalOverflow = node.style.overflowY;
|
|
32
|
+
node.style.overflowY = 'hidden';
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const enableScroll = () => {
|
|
36
|
+
node.style.overflowY = originalOverflow;
|
|
37
|
+
};
|
|
38
|
+
const setScrollTop = (nextScrollY) => {
|
|
39
|
+
if (node.scrollTop === nextScrollY)
|
|
40
|
+
return;
|
|
41
|
+
node.scrollTop = nextScrollY;
|
|
42
|
+
onManualScrollRef.current?.(node, nextScrollY);
|
|
43
|
+
};
|
|
44
|
+
const handleTouchStart = (e) => {
|
|
45
|
+
const touch = e.touches[0];
|
|
46
|
+
if (!touch)
|
|
47
|
+
return;
|
|
48
|
+
const currentScrollY = node.scrollTop;
|
|
49
|
+
state.current = {
|
|
50
|
+
startY: touch.pageY,
|
|
51
|
+
lastY: touch.pageY,
|
|
52
|
+
owner: 'none',
|
|
53
|
+
hadPanOwner: false,
|
|
54
|
+
panDragOffset: 0,
|
|
55
|
+
dys: [],
|
|
56
|
+
scrollYAtGestureStart: currentScrollY,
|
|
57
|
+
};
|
|
58
|
+
scrollBridge.scrollStartY = touch.pageY;
|
|
59
|
+
// claim this touch for the scroll-view gesture hook so the PanResponder
|
|
60
|
+
// (which also negotiates this touch via RNW's responder system) defers
|
|
61
|
+
// and doesn't double-drive the sheet position. cleared on touchend.
|
|
62
|
+
scrollBridge.scrollNodeTouched = true;
|
|
63
|
+
};
|
|
64
|
+
const handleTouchMove = (e) => {
|
|
65
|
+
const touch = e.touches[0];
|
|
66
|
+
if (!touch)
|
|
67
|
+
return;
|
|
68
|
+
const { current: s } = state;
|
|
69
|
+
const pageY = touch.pageY;
|
|
70
|
+
const dy = pageY - s.lastY;
|
|
71
|
+
s.lastY = pageY;
|
|
72
|
+
if (dy === 0)
|
|
73
|
+
return;
|
|
74
|
+
const isDraggingDown = dy > 0;
|
|
75
|
+
const currentScrollY = node.scrollTop;
|
|
76
|
+
const isPaneAtTop = scrollBridge.isAtTop ?? scrollBridge.paneY <= scrollBridge.paneMinY + 5;
|
|
77
|
+
scrollBridge.y = currentScrollY;
|
|
78
|
+
// simple ownership rules:
|
|
79
|
+
// - pan owns when: sheet not at top, OR (sheet at top AND scrollY=0 AND dragging down)
|
|
80
|
+
// - scroll owns otherwise
|
|
81
|
+
let shouldPanOwn = false;
|
|
82
|
+
if (!isPaneAtTop) {
|
|
83
|
+
// sheet not at top - pan always owns
|
|
84
|
+
shouldPanOwn = true;
|
|
85
|
+
}
|
|
86
|
+
else if (currentScrollY <= 0 && isDraggingDown) {
|
|
87
|
+
// at top, scroll at 0, dragging down - pan owns (pull sheet down)
|
|
88
|
+
shouldPanOwn = true;
|
|
89
|
+
}
|
|
90
|
+
const newOwner = shouldPanOwn ? 'pan' : 'scroll';
|
|
91
|
+
// handle transitions
|
|
92
|
+
if (newOwner !== s.owner) {
|
|
93
|
+
if (newOwner === 'pan') {
|
|
94
|
+
s.hadPanOwner = true;
|
|
95
|
+
s.panDragOffset = 0;
|
|
96
|
+
s.dys = [];
|
|
97
|
+
// re-baseline the pan origin to the sheet's CURRENT position so the
|
|
98
|
+
// offset (reset to 0 here) maps to where it actually is — required for
|
|
99
|
+
// a correct scroll→pan handoff now that the PanResponder defers to us.
|
|
100
|
+
scrollBridge.startPanDrag?.();
|
|
101
|
+
scrollBridge.setParentDragging(true);
|
|
102
|
+
disableScroll();
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
scrollBridge.setParentDragging(false);
|
|
106
|
+
scrollBridge.scrollLock = false;
|
|
107
|
+
if (s.hadPanOwner) {
|
|
108
|
+
disableScroll();
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
enableScroll();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
s.owner = newOwner;
|
|
115
|
+
}
|
|
116
|
+
if (s.owner === 'pan') {
|
|
117
|
+
if (e.cancelable)
|
|
118
|
+
e.preventDefault();
|
|
119
|
+
s.panDragOffset += dy;
|
|
120
|
+
scrollBridge.drag(s.panDragOffset);
|
|
121
|
+
s.dys.push(dy);
|
|
122
|
+
if (s.dys.length > 100)
|
|
123
|
+
s.dys = s.dys.slice(-10);
|
|
124
|
+
}
|
|
125
|
+
else if (s.owner === 'scroll' && (!e.isTrusted || s.hadPanOwner)) {
|
|
126
|
+
// synthetic events don't trigger native overflow scroll, so tests need us
|
|
127
|
+
// to move scrollTop directly. real mixed gestures need the same direct
|
|
128
|
+
// path after pan ownership: ios safari may not resume native scrolling
|
|
129
|
+
// mid-touch after an earlier prevented touchmove. pure real scrolls still
|
|
130
|
+
// use native scrolling; mixed pan↔scroll gestures keep overflow hidden
|
|
131
|
+
// and are driven here until touchend.
|
|
132
|
+
if (e.cancelable)
|
|
133
|
+
e.preventDefault();
|
|
134
|
+
const scrollDelta = -dy;
|
|
135
|
+
const maxScrollY = node.scrollHeight - node.clientHeight;
|
|
136
|
+
const newScrollY = Math.max(0, Math.min(maxScrollY, currentScrollY + scrollDelta));
|
|
137
|
+
if (newScrollY !== currentScrollY) {
|
|
138
|
+
setScrollTop(newScrollY);
|
|
139
|
+
scrollBridge.y = newScrollY;
|
|
140
|
+
if (newScrollY > 0)
|
|
141
|
+
scrollBridge.scrollStartY = -1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const handleTouchEnd = () => {
|
|
146
|
+
const { current: s } = state;
|
|
147
|
+
if (s.owner === 'pan') {
|
|
148
|
+
scrollBridge.setParentDragging(false);
|
|
149
|
+
let vy = 0;
|
|
150
|
+
if (s.dys.length) {
|
|
151
|
+
const recentDys = s.dys.slice(-10);
|
|
152
|
+
const dist = recentDys.reduce((a, b) => a + b, 0);
|
|
153
|
+
vy = (dist / recentDys.length) * 0.04;
|
|
154
|
+
}
|
|
155
|
+
scrollBridge.release({ dragAt: s.panDragOffset, vy });
|
|
156
|
+
}
|
|
157
|
+
else if (s.owner === 'scroll') {
|
|
158
|
+
// gesture ended while scrolling. a pan→scroll handoff only happens once
|
|
159
|
+
// the pane reached the top, so commit the top snap (index 0) and clear
|
|
160
|
+
// the dragging state HERE, on touchend — never mid-gesture (that would
|
|
161
|
+
// fight the live gesture). this replaces the PanResponder's release,
|
|
162
|
+
// which used to fire on touchend before it deferred to this hook.
|
|
163
|
+
scrollBridge.snapToPosition?.(0);
|
|
164
|
+
}
|
|
165
|
+
enableScroll();
|
|
166
|
+
s.owner = 'none';
|
|
167
|
+
s.hadPanOwner = false;
|
|
168
|
+
s.panDragOffset = 0;
|
|
169
|
+
s.dys = [];
|
|
170
|
+
scrollBridge.scrollNodeTouched = false;
|
|
171
|
+
};
|
|
172
|
+
node.addEventListener('touchstart', handleTouchStart, {
|
|
173
|
+
signal: controller.signal,
|
|
174
|
+
passive: true,
|
|
175
|
+
});
|
|
176
|
+
node.addEventListener('touchmove', handleTouchMove, {
|
|
177
|
+
signal: controller.signal,
|
|
178
|
+
passive: false,
|
|
179
|
+
});
|
|
180
|
+
node.addEventListener('touchend', handleTouchEnd, {
|
|
181
|
+
signal: controller.signal,
|
|
182
|
+
passive: true,
|
|
183
|
+
});
|
|
184
|
+
node.addEventListener('touchcancel', handleTouchEnd, {
|
|
185
|
+
signal: controller.signal,
|
|
186
|
+
passive: true,
|
|
187
|
+
});
|
|
188
|
+
return () => {
|
|
189
|
+
enableScroll();
|
|
190
|
+
controller.abort();
|
|
191
|
+
};
|
|
192
|
+
}, [scrollRef, scrollBridge, hasScrollableContent]);
|
|
193
|
+
return {};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=useSheetScrollViewGestures.js.map
|