@tamagui/sheet 2.7.7 → 3.0.0-beta.643.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/dist/cjs/GestureDetectorWrapper.cjs +32 -41
- package/dist/cjs/GestureDetectorWrapper.native.cjs +48 -0
- package/dist/cjs/GestureDetectorWrapper.native.js +32 -40
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/cjs/GestureSheetContext.cjs +29 -37
- package/dist/cjs/GestureSheetContext.native.cjs +49 -0
- package/dist/cjs/GestureSheetContext.native.js +30 -37
- package/dist/cjs/GestureSheetContext.native.js.map +1 -1
- package/dist/cjs/Sheet.cjs +206 -99
- package/dist/cjs/Sheet.native.cjs +234 -0
- package/dist/cjs/Sheet.native.js +212 -98
- package/dist/cjs/Sheet.native.js.map +1 -1
- package/dist/cjs/SheetContext.cjs +44 -22
- package/dist/cjs/SheetContext.native.cjs +58 -0
- package/dist/cjs/SheetContext.native.js +45 -22
- package/dist/cjs/SheetContext.native.js.map +1 -1
- package/dist/cjs/SheetController.cjs +50 -56
- package/dist/cjs/SheetController.native.cjs +72 -0
- package/dist/cjs/SheetController.native.js +53 -58
- package/dist/cjs/SheetController.native.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.cjs +674 -605
- package/dist/cjs/SheetImplementationCustom.native.cjs +762 -0
- package/dist/cjs/SheetImplementationCustom.native.js +713 -644
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/SheetScrollView.cjs +291 -312
- package/dist/cjs/SheetScrollView.native.cjs +326 -0
- package/dist/cjs/SheetScrollView.native.js +299 -319
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/constants.cjs +22 -21
- package/dist/cjs/constants.native.cjs +37 -0
- package/dist/cjs/constants.native.js +22 -20
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/contexts.cjs +20 -28
- package/dist/cjs/contexts.native.cjs +38 -0
- package/dist/cjs/contexts.native.js +20 -27
- package/dist/cjs/contexts.native.js.map +1 -1
- package/dist/cjs/controller.cjs +17 -18
- package/dist/cjs/controller.native.cjs +32 -0
- package/dist/cjs/controller.native.js +17 -17
- package/dist/cjs/controller.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +29 -30
- package/dist/cjs/gestureState.native.cjs +54 -0
- package/dist/cjs/gestureState.native.js +30 -30
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/helpers.cjs +21 -24
- package/dist/cjs/helpers.native.cjs +35 -0
- package/dist/cjs/helpers.native.js +22 -24
- package/dist/cjs/helpers.native.js.map +1 -1
- package/dist/cjs/index.cjs +15 -21
- package/dist/cjs/index.native.cjs +37 -0
- package/dist/cjs/index.native.js +16 -21
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardAvoidance.cjs +56 -79
- package/dist/cjs/keyboardAvoidance.native.cjs +75 -0
- package/dist/cjs/keyboardAvoidance.native.js +56 -78
- package/dist/cjs/keyboardAvoidance.native.js.map +1 -1
- package/dist/cjs/nativeSheet.cjs +64 -76
- package/dist/cjs/nativeSheet.native.cjs +94 -0
- package/dist/cjs/nativeSheet.native.js +70 -83
- package/dist/cjs/nativeSheet.native.js.map +1 -1
- package/dist/cjs/types.cjs +10 -11
- package/dist/cjs/types.native.cjs +19 -0
- package/dist/cjs/types.native.js +10 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/useGestureHandlerPan.cjs +245 -257
- package/dist/cjs/useGestureHandlerPan.native.cjs +273 -0
- package/dist/cjs/useGestureHandlerPan.native.js +254 -265
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
- package/dist/cjs/useKeyboardControllerSheet.cjs +83 -88
- package/dist/cjs/useKeyboardControllerSheet.native.cjs +119 -0
- package/dist/cjs/useKeyboardControllerSheet.native.js +100 -111
- package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -1
- package/dist/cjs/useSafeAreaInsets.cjs +20 -26
- package/dist/cjs/useSafeAreaInsets.native.cjs +51 -0
- package/dist/cjs/useSafeAreaInsets.native.js +30 -25
- package/dist/cjs/useSafeAreaInsets.native.js.map +1 -1
- package/dist/cjs/useSheetController.cjs +27 -39
- package/dist/cjs/useSheetController.native.cjs +42 -0
- package/dist/cjs/useSheetController.native.js +28 -39
- package/dist/cjs/useSheetController.native.js.map +1 -1
- package/dist/cjs/useSheetOffscreenSize.cjs +44 -53
- package/dist/cjs/useSheetOffscreenSize.native.cjs +60 -0
- package/dist/cjs/useSheetOffscreenSize.native.js +48 -56
- package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -1
- package/dist/cjs/useSheetOpenState.cjs +69 -40
- package/dist/cjs/useSheetOpenState.native.cjs +88 -0
- package/dist/cjs/useSheetOpenState.native.js +74 -42
- package/dist/cjs/useSheetOpenState.native.js.map +1 -1
- package/dist/cjs/useSheetProviderProps.cjs +146 -164
- package/dist/cjs/useSheetProviderProps.native.cjs +176 -0
- package/dist/cjs/useSheetProviderProps.native.js +156 -174
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
- package/dist/cjs/useSheetScrollViewGestures.cjs +172 -180
- package/dist/cjs/useSheetScrollViewGestures.native.cjs +150 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js +136 -147
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/cjs/webViewport.cjs +47 -48
- package/dist/cjs/webViewport.native.cjs +79 -0
- package/dist/cjs/webViewport.native.js +50 -50
- package/dist/cjs/webViewport.native.js.map +1 -1
- package/dist/esm/GestureDetectorWrapper.mjs +19 -23
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
- package/dist/esm/GestureDetectorWrapper.native.js +20 -24
- package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/esm/GestureSheetContext.mjs +15 -20
- package/dist/esm/GestureSheetContext.mjs.map +1 -1
- package/dist/esm/GestureSheetContext.native.js +17 -22
- package/dist/esm/GestureSheetContext.native.js.map +1 -1
- package/dist/esm/Sheet.mjs +191 -83
- package/dist/esm/Sheet.mjs.map +1 -1
- package/dist/esm/Sheet.native.js +198 -83
- package/dist/esm/Sheet.native.js.map +1 -1
- package/dist/esm/SheetContext.mjs +21 -5
- package/dist/esm/SheetContext.mjs.map +1 -1
- package/dist/esm/SheetContext.native.js +21 -5
- package/dist/esm/SheetContext.native.js.map +1 -1
- package/dist/esm/SheetController.mjs +34 -30
- package/dist/esm/SheetController.mjs.map +1 -1
- package/dist/esm/SheetController.native.js +38 -34
- package/dist/esm/SheetController.native.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs +655 -580
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js +691 -612
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/SheetScrollView.mjs +277 -288
- package/dist/esm/SheetScrollView.mjs.map +1 -1
- package/dist/esm/SheetScrollView.native.js +286 -297
- package/dist/esm/SheetScrollView.native.js.map +1 -1
- package/dist/esm/constants.mjs +5 -3
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +5 -3
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/contexts.mjs +3 -3
- package/dist/esm/contexts.mjs.map +1 -1
- package/dist/esm/contexts.native.js +3 -3
- package/dist/esm/contexts.native.js.map +1 -1
- package/dist/esm/controller.mjs +2 -2
- package/dist/esm/controller.native.js +2 -2
- package/dist/esm/gestureState.mjs +13 -11
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js +14 -12
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/helpers.mjs +7 -6
- package/dist/esm/helpers.mjs.map +1 -1
- package/dist/esm/helpers.native.js +8 -7
- package/dist/esm/helpers.native.js.map +1 -1
- package/dist/esm/index.js +21 -14
- package/dist/esm/index.mjs +21 -14
- package/dist/esm/index.native.js +21 -14
- package/dist/esm/keyboardAvoidance.mjs +40 -61
- package/dist/esm/keyboardAvoidance.mjs.map +1 -1
- package/dist/esm/keyboardAvoidance.native.js +40 -61
- package/dist/esm/keyboardAvoidance.native.js.map +1 -1
- package/dist/esm/nativeSheet.mjs +52 -61
- package/dist/esm/nativeSheet.mjs.map +1 -1
- package/dist/esm/nativeSheet.native.js +58 -69
- package/dist/esm/nativeSheet.native.js.map +1 -1
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/dist/esm/useGestureHandlerPan.mjs +232 -239
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
- package/dist/esm/useGestureHandlerPan.native.js +241 -248
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
- package/dist/esm/useKeyboardControllerSheet.mjs +71 -71
- package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/esm/useKeyboardControllerSheet.native.js +92 -94
- package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -1
- package/dist/esm/useSafeAreaInsets.mjs +3 -1
- package/dist/esm/useSafeAreaInsets.mjs.map +1 -1
- package/dist/esm/useSafeAreaInsets.native.js +15 -3
- package/dist/esm/useSafeAreaInsets.native.js.map +1 -1
- package/dist/esm/useSheetController.mjs +14 -12
- package/dist/esm/useSheetController.mjs.map +1 -1
- package/dist/esm/useSheetController.native.js +14 -12
- package/dist/esm/useSheetController.native.js.map +1 -1
- package/dist/esm/useSheetOffscreenSize.mjs +30 -35
- package/dist/esm/useSheetOffscreenSize.mjs.map +1 -1
- package/dist/esm/useSheetOffscreenSize.native.js +34 -39
- package/dist/esm/useSheetOffscreenSize.native.js.map +1 -1
- package/dist/esm/useSheetOpenState.mjs +50 -22
- package/dist/esm/useSheetOpenState.mjs.map +1 -1
- package/dist/esm/useSheetOpenState.native.js +55 -25
- package/dist/esm/useSheetOpenState.native.js.map +1 -1
- package/dist/esm/useSheetProviderProps.mjs +130 -138
- package/dist/esm/useSheetProviderProps.mjs.map +1 -1
- package/dist/esm/useSheetProviderProps.native.js +140 -149
- package/dist/esm/useSheetProviderProps.native.js.map +1 -1
- package/dist/esm/useSheetScrollViewGestures.mjs +159 -162
- package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
- package/dist/esm/useSheetScrollViewGestures.native.js +123 -130
- package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/esm/webViewport.mjs +26 -25
- package/dist/esm/webViewport.mjs.map +1 -1
- package/dist/esm/webViewport.native.js +29 -28
- package/dist/esm/webViewport.native.js.map +1 -1
- package/dist/jsx/GestureDetectorWrapper.mjs +19 -23
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
- package/dist/jsx/GestureDetectorWrapper.native.cjs +48 -0
- package/dist/jsx/GestureDetectorWrapper.native.js +32 -40
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/jsx/GestureSheetContext.mjs +15 -20
- package/dist/jsx/GestureSheetContext.mjs.map +1 -1
- package/dist/jsx/GestureSheetContext.native.cjs +49 -0
- package/dist/jsx/GestureSheetContext.native.js +30 -37
- package/dist/jsx/GestureSheetContext.native.js.map +1 -1
- package/dist/jsx/Sheet.mjs +191 -83
- package/dist/jsx/Sheet.mjs.map +1 -1
- package/dist/jsx/Sheet.native.cjs +234 -0
- package/dist/jsx/Sheet.native.js +212 -98
- package/dist/jsx/Sheet.native.js.map +1 -1
- package/dist/jsx/SheetContext.mjs +21 -5
- package/dist/jsx/SheetContext.mjs.map +1 -1
- package/dist/jsx/SheetContext.native.cjs +58 -0
- package/dist/jsx/SheetContext.native.js +45 -22
- package/dist/jsx/SheetContext.native.js.map +1 -1
- package/dist/jsx/SheetController.mjs +34 -30
- package/dist/jsx/SheetController.mjs.map +1 -1
- package/dist/jsx/SheetController.native.cjs +72 -0
- package/dist/jsx/SheetController.native.js +53 -58
- package/dist/jsx/SheetController.native.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +655 -580
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.cjs +762 -0
- package/dist/jsx/SheetImplementationCustom.native.js +713 -644
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +277 -288
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.native.cjs +326 -0
- package/dist/jsx/SheetScrollView.native.js +299 -319
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/constants.mjs +5 -3
- package/dist/jsx/constants.mjs.map +1 -1
- package/dist/jsx/constants.native.cjs +37 -0
- package/dist/jsx/constants.native.js +22 -20
- package/dist/jsx/constants.native.js.map +1 -1
- package/dist/jsx/contexts.mjs +3 -3
- package/dist/jsx/contexts.mjs.map +1 -1
- package/dist/jsx/contexts.native.cjs +38 -0
- package/dist/jsx/contexts.native.js +20 -27
- package/dist/jsx/contexts.native.js.map +1 -1
- package/dist/jsx/controller.mjs +2 -2
- package/dist/jsx/controller.native.cjs +32 -0
- package/dist/jsx/controller.native.js +17 -17
- package/dist/jsx/controller.native.js.map +1 -1
- package/dist/jsx/gestureState.mjs +13 -11
- package/dist/jsx/gestureState.mjs.map +1 -1
- package/dist/jsx/gestureState.native.cjs +54 -0
- package/dist/jsx/gestureState.native.js +30 -30
- package/dist/jsx/gestureState.native.js.map +1 -1
- package/dist/jsx/helpers.mjs +7 -6
- package/dist/jsx/helpers.mjs.map +1 -1
- package/dist/jsx/helpers.native.cjs +35 -0
- package/dist/jsx/helpers.native.js +22 -24
- package/dist/jsx/helpers.native.js.map +1 -1
- package/dist/jsx/index.js +21 -14
- package/dist/jsx/index.mjs +21 -14
- package/dist/jsx/index.native.cjs +37 -0
- package/dist/jsx/index.native.js +16 -21
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keyboardAvoidance.mjs +40 -61
- package/dist/jsx/keyboardAvoidance.mjs.map +1 -1
- package/dist/jsx/keyboardAvoidance.native.cjs +75 -0
- package/dist/jsx/keyboardAvoidance.native.js +56 -78
- package/dist/jsx/keyboardAvoidance.native.js.map +1 -1
- package/dist/jsx/nativeSheet.mjs +52 -61
- package/dist/jsx/nativeSheet.mjs.map +1 -1
- package/dist/jsx/nativeSheet.native.cjs +94 -0
- package/dist/jsx/nativeSheet.native.js +70 -83
- package/dist/jsx/nativeSheet.native.js.map +1 -1
- package/dist/jsx/types.mjs +0 -2
- package/dist/jsx/types.native.cjs +19 -0
- package/dist/jsx/types.native.js +10 -10
- package/dist/jsx/types.native.js.map +1 -1
- package/dist/jsx/useGestureHandlerPan.mjs +232 -239
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
- package/dist/jsx/useGestureHandlerPan.native.cjs +273 -0
- package/dist/jsx/useGestureHandlerPan.native.js +254 -265
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
- package/dist/jsx/useKeyboardControllerSheet.mjs +71 -71
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/jsx/useKeyboardControllerSheet.native.cjs +119 -0
- package/dist/jsx/useKeyboardControllerSheet.native.js +100 -111
- package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -1
- package/dist/jsx/useSafeAreaInsets.mjs +3 -1
- package/dist/jsx/useSafeAreaInsets.mjs.map +1 -1
- package/dist/jsx/useSafeAreaInsets.native.cjs +51 -0
- package/dist/jsx/useSafeAreaInsets.native.js +30 -25
- package/dist/jsx/useSafeAreaInsets.native.js.map +1 -1
- package/dist/jsx/useSheetController.mjs +14 -12
- package/dist/jsx/useSheetController.mjs.map +1 -1
- package/dist/jsx/useSheetController.native.cjs +42 -0
- package/dist/jsx/useSheetController.native.js +28 -39
- package/dist/jsx/useSheetController.native.js.map +1 -1
- package/dist/jsx/useSheetOffscreenSize.mjs +30 -35
- package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -1
- package/dist/jsx/useSheetOffscreenSize.native.cjs +60 -0
- package/dist/jsx/useSheetOffscreenSize.native.js +48 -56
- package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -1
- package/dist/jsx/useSheetOpenState.mjs +50 -22
- package/dist/jsx/useSheetOpenState.mjs.map +1 -1
- package/dist/jsx/useSheetOpenState.native.cjs +88 -0
- package/dist/jsx/useSheetOpenState.native.js +74 -42
- package/dist/jsx/useSheetOpenState.native.js.map +1 -1
- package/dist/jsx/useSheetProviderProps.mjs +130 -138
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
- package/dist/jsx/useSheetProviderProps.native.cjs +176 -0
- package/dist/jsx/useSheetProviderProps.native.js +156 -174
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.mjs +159 -162
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.native.cjs +150 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js +136 -147
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/jsx/webViewport.mjs +26 -25
- package/dist/jsx/webViewport.mjs.map +1 -1
- package/dist/jsx/webViewport.native.cjs +79 -0
- package/dist/jsx/webViewport.native.js +50 -50
- package/dist/jsx/webViewport.native.js.map +1 -1
- package/package.json +33 -39
- package/src/Sheet.tsx +316 -77
- package/src/SheetContext.tsx +57 -7
- package/src/SheetController.tsx +7 -6
- package/src/SheetImplementationCustom.tsx +343 -140
- package/src/SheetScrollView.tsx +24 -13
- package/src/constants.tsx +3 -3
- package/src/helpers.tsx +0 -14
- package/src/index.ts +3 -6
- package/src/nativeSheet.tsx +5 -15
- package/src/types.tsx +104 -92
- package/src/useKeyboardControllerSheet.native.ts +7 -2
- package/src/useSafeAreaInsets.native.ts +20 -13
- package/src/useSheetController.tsx +15 -7
- package/src/useSheetOpenState.tsx +50 -4
- package/src/useSheetProviderProps.tsx +4 -27
- package/src/useSheetScrollViewGestures.ts +2 -2
- 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 +384 -135
- package/types/Sheet.d.ts.map +1 -1
- package/types/SheetContext.d.ts +28 -42
- package/types/SheetContext.d.ts.map +1 -1
- package/types/SheetController.d.ts +4 -2
- package/types/SheetController.d.ts.map +1 -1
- package/types/SheetImplementationCustom.d.ts +3 -35
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts +57 -23
- package/types/SheetScrollView.d.ts.map +1 -1
- package/types/constants.d.ts +3 -2
- package/types/constants.d.ts.map +1 -1
- package/types/index.d.ts +1 -3
- package/types/index.d.ts.map +1 -1
- package/types/nativeSheet.d.ts.map +1 -1
- package/types/types.d.ts +28 -17
- package/types/types.d.ts.map +1 -1
- package/types/useKeyboardControllerSheet.native.d.ts.map +1 -1
- package/types/useSafeAreaInsets.native.d.ts +4 -12
- package/types/useSafeAreaInsets.native.d.ts.map +1 -1
- package/types/useSheetController.d.ts +6 -6
- package/types/useSheetController.d.ts.map +1 -1
- package/types/useSheetOffscreenSize.d.ts.map +1 -1
- package/types/useSheetOpenState.d.ts +3 -2
- package/types/useSheetOpenState.d.ts.map +1 -1
- package/types/useSheetProviderProps.d.ts +5 -8
- package/types/useSheetProviderProps.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.d.ts +2 -2
- package/types/useSheetScrollViewGestures.d.ts.map +1 -1
- package/.turbo/turbo-build.log +0 -2
- 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/createSheet.cjs +0 -194
- package/dist/cjs/createSheet.native.js +0 -204
- package/dist/cjs/createSheet.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/useSheet.cjs +0 -29
- package/dist/cjs/useSheet.native.js +0 -34
- package/dist/cjs/useSheet.native.js.map +0 -1
- package/dist/esm/controller.mjs.map +0 -1
- 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/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.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.map +0 -1
- package/dist/esm/types.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/jsx/controller.mjs.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/index.js.map +0 -1
- package/dist/jsx/index.mjs.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.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/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/setup-gesture-handler.cjs +0 -1
- package/src/createSheet.tsx +0 -309
- package/src/setupGestureHandler.ts +0 -43
- package/src/useSheet.tsx +0 -3
- package/test/keyboardAvoidance.test.ts +0 -269
- package/tsconfig.json +0 -57
- package/types/createSheet.d.ts +0 -195
- package/types/createSheet.d.ts.map +0 -1
- package/types/setupGestureHandler.d.ts +0 -11
- package/types/setupGestureHandler.d.ts.map +0 -1
- package/types/useSheet.d.ts +0 -2
- package/types/useSheet.d.ts.map +0 -1
package/next.md
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# Sheet ScrollView Gesture Handoff - Next Steps
|
|
2
|
-
|
|
3
|
-
## Current Limitation
|
|
4
|
-
|
|
5
|
-
The Sheet + ScrollView gesture coordination on native iOS has limitations because Tamagui uses React Native's built-in `PanResponder`, while iOS's `UIScrollView` gesture recognizers fire BEFORE the RN responder system can claim the gesture.
|
|
6
|
-
|
|
7
|
-
This causes:
|
|
8
|
-
|
|
9
|
-
- Minor scroll "flicker" when starting to drag down from scroll top
|
|
10
|
-
- Imperfect handoff between scroll and sheet drag gestures
|
|
11
|
-
|
|
12
|
-
## Ideal Solution: react-native-gesture-handler Integration
|
|
13
|
-
|
|
14
|
-
Both `gorhom/bottom-sheet` and `react-native-actions-sheet` solve this by using `react-native-gesture-handler` which provides:
|
|
15
|
-
|
|
16
|
-
1. **`simultaneousHandlers`** - allows coordinating multiple gesture recognizers
|
|
17
|
-
2. **`GestureDetector`** with worklets - can check conditions and decide who handles gesture before it starts
|
|
18
|
-
3. **Native gesture coordination** - works at the iOS/Android gesture recognizer level, not the JS responder level
|
|
19
|
-
|
|
20
|
-
## Proposed API
|
|
21
|
-
|
|
22
|
-
```tsx
|
|
23
|
-
import { setupGestureHandler } from '@tamagui/sheet'
|
|
24
|
-
import { GestureHandlerRootView } from 'react-native-gesture-handler'
|
|
25
|
-
|
|
26
|
-
// Call once at app startup (optional - falls back to PanResponder)
|
|
27
|
-
setupGestureHandler({
|
|
28
|
-
// Pass the gesture handler module so we don't add it as a hard dependency
|
|
29
|
-
GestureDetector: require('react-native-gesture-handler').GestureDetector,
|
|
30
|
-
Gesture: require('react-native-gesture-handler').Gesture,
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
// Then wrap app
|
|
34
|
-
export default function App() {
|
|
35
|
-
return (
|
|
36
|
-
<GestureHandlerRootView style={{ flex: 1 }}>
|
|
37
|
-
<YourApp />
|
|
38
|
-
</GestureHandlerRootView>
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Implementation Notes
|
|
44
|
-
|
|
45
|
-
If `setupGestureHandler()` is called:
|
|
46
|
-
|
|
47
|
-
- Use `GestureDetector` with `Gesture.Pan()` instead of `PanResponder`
|
|
48
|
-
- Use `simultaneousHandlers` to coordinate with ScrollView's gesture
|
|
49
|
-
- Implement `blockPan` flag pattern from actions-sheet for smooth handoff
|
|
50
|
-
|
|
51
|
-
If not called:
|
|
52
|
-
|
|
53
|
-
- Fall back to current `PanResponder` implementation
|
|
54
|
-
- Accept the minor limitations on native
|
|
55
|
-
|
|
56
|
-
## References
|
|
57
|
-
|
|
58
|
-
- gorhom/bottom-sheet: Uses Reanimated worklets + gesture handler
|
|
59
|
-
- react-native-actions-sheet: Uses `blockPan` flag pattern with gesture handler
|
|
60
|
-
- Both are MIT licensed and can be used as reference
|
|
61
|
-
|
|
62
|
-
## Files to Modify
|
|
63
|
-
|
|
64
|
-
- `SheetImplementationCustom.tsx` - Replace PanResponder with GestureDetector
|
|
65
|
-
- `SheetScrollView.tsx` - Use `useScrollHandlers()` pattern from actions-sheet
|
|
66
|
-
- Add `setupGestureHandler.ts` for optional gesture handler registration
|
|
67
|
-
|
|
68
|
-
## Test Case
|
|
69
|
-
|
|
70
|
-
There's a test case at `code/kitchen-sink/src/usecases/SheetScrollableDrag.tsx` that demonstrates the bug and can be used to verify fixes. It's not exported in the main navigation but can be accessed directly for testing.
|
|
71
|
-
|
|
72
|
-
## Attempted Fixes
|
|
73
|
-
|
|
74
|
-
1. **Native scroll enable/disable based on pane position** - Tried disabling scroll when sheet is not at top position, but this completely broke scrolling because the initial pane position values aren't set correctly on mount.
|
|
75
|
-
|
|
76
|
-
2. **PaneY change listeners** - Added `onPaneYChange`/`setPaneY` to ScrollBridge to notify ScrollView of position changes during drag, but the fundamental issue remains that iOS UIScrollView gesture recognizers fire before RN's responder system.
|
|
77
|
-
|
|
78
|
-
The core issue is architectural: React Native's PanResponder cannot coordinate with iOS's native UIScrollView gesture recognizers at the right level. The only real solution is `react-native-gesture-handler` integration.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.assign(module.exports, require('./dist/cjs/setupGestureHandler.cjs'))
|
package/src/createSheet.tsx
DELETED
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
import { useComposedRefs } from '@tamagui/compose-refs'
|
|
2
|
-
import { isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
|
|
3
|
-
import type {
|
|
4
|
-
GetProps,
|
|
5
|
-
ViewProps,
|
|
6
|
-
TamaguiComponent,
|
|
7
|
-
TamaguiComponentExpectingVariants,
|
|
8
|
-
TamaguiElement,
|
|
9
|
-
} from '@tamagui/core'
|
|
10
|
-
import { View } from '@tamagui/core'
|
|
11
|
-
import { composeEventHandlers, withStaticProperties } from '@tamagui/helpers'
|
|
12
|
-
import { resolveViewZIndex } from '@tamagui/portal'
|
|
13
|
-
import { RemoveScroll } from '@tamagui/remove-scroll'
|
|
14
|
-
import { useDidFinishSSR } from '@tamagui/use-did-finish-ssr'
|
|
15
|
-
import { StackZIndexContext } from '@tamagui/z-index-stack'
|
|
16
|
-
import type { ForwardRefExoticComponent, FunctionComponent, RefAttributes } from 'react'
|
|
17
|
-
import { forwardRef, memo, useMemo, useEffect, useRef } from 'react'
|
|
18
|
-
import type { View as RNView } from 'react-native'
|
|
19
|
-
import { Platform } from 'react-native'
|
|
20
|
-
import { SHEET_HANDLE_NAME, SHEET_NAME, SHEET_OVERLAY_NAME } from './constants'
|
|
21
|
-
import { getNativeSheet } from './nativeSheet'
|
|
22
|
-
import { useSheetContext } from './SheetContext'
|
|
23
|
-
import { SheetImplementationCustom } from './SheetImplementationCustom'
|
|
24
|
-
import { SheetScrollView } from './SheetScrollView'
|
|
25
|
-
import type { SheetProps, SheetScopedProps } from './types'
|
|
26
|
-
import { useSheetController } from './useSheetController'
|
|
27
|
-
import { useSheetOffscreenSize } from './useSheetOffscreenSize'
|
|
28
|
-
import { getMaxViewportHeight } from './webViewport'
|
|
29
|
-
|
|
30
|
-
type SharedSheetProps = {
|
|
31
|
-
open?: boolean
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
type BaseProps = ViewProps & SharedSheetProps
|
|
35
|
-
|
|
36
|
-
type SheetStyledComponent = TamaguiComponentExpectingVariants<BaseProps, SharedSheetProps>
|
|
37
|
-
|
|
38
|
-
export function createSheet<
|
|
39
|
-
H extends TamaguiComponent | SheetStyledComponent,
|
|
40
|
-
F extends TamaguiComponent | SheetStyledComponent,
|
|
41
|
-
O extends TamaguiComponent | SheetStyledComponent,
|
|
42
|
-
>({ Handle, Frame, Overlay }: { Handle: H; Frame: F; Overlay: O }) {
|
|
43
|
-
const SheetHandle = Handle.styleable<any>(
|
|
44
|
-
(
|
|
45
|
-
{ __scopeSheet, ...props }: SheetScopedProps<SheetStyledComponent>,
|
|
46
|
-
forwardedRef
|
|
47
|
-
) => {
|
|
48
|
-
const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet)
|
|
49
|
-
const composedRef = useComposedRefs<TamaguiElement>(context.handleRef, forwardedRef)
|
|
50
|
-
|
|
51
|
-
// track if sheet was being dragged to prevent onPress toggle after drag
|
|
52
|
-
const wasDraggingRef = useRef(false)
|
|
53
|
-
|
|
54
|
-
// subscribe to parent dragging changes to track if we dragged during this press
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
if (!context.scrollBridge) return
|
|
57
|
-
return context.scrollBridge.onParentDragging((isDragging: boolean) => {
|
|
58
|
-
if (isDragging) {
|
|
59
|
-
wasDraggingRef.current = true
|
|
60
|
-
}
|
|
61
|
-
})
|
|
62
|
-
}, [context.scrollBridge])
|
|
63
|
-
|
|
64
|
-
if (context.onlyShowFrame) {
|
|
65
|
-
return null
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return (
|
|
69
|
-
// @ts-ignore
|
|
70
|
-
<Handle
|
|
71
|
-
ref={composedRef}
|
|
72
|
-
onPressIn={() => {
|
|
73
|
-
// reset at start of new press
|
|
74
|
-
wasDraggingRef.current = false
|
|
75
|
-
}}
|
|
76
|
-
onPress={() => {
|
|
77
|
-
// skip toggle if this was a drag gesture
|
|
78
|
-
if (wasDraggingRef.current) {
|
|
79
|
-
wasDraggingRef.current = false
|
|
80
|
-
return
|
|
81
|
-
}
|
|
82
|
-
// don't toggle to the bottom snap position when dismissOnSnapToBottom set
|
|
83
|
-
const max =
|
|
84
|
-
context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0)
|
|
85
|
-
const nextPos = (context.position + 1) % max
|
|
86
|
-
context.setPosition(nextPos)
|
|
87
|
-
}}
|
|
88
|
-
open={context.open}
|
|
89
|
-
{...props}
|
|
90
|
-
/>
|
|
91
|
-
)
|
|
92
|
-
}
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
/* -------------------------------------------------------------------------------------------------
|
|
96
|
-
* SheetOverlay
|
|
97
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
98
|
-
|
|
99
|
-
const SheetOverlay = Overlay.styleable<SheetScopedProps<{}>>((propsIn, ref) => {
|
|
100
|
-
const { __scopeSheet, ...props } = propsIn
|
|
101
|
-
const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet)
|
|
102
|
-
|
|
103
|
-
// this ones a bit weird for legacy reasons, we need to hoist it above <Sheet /> AnimatedView
|
|
104
|
-
// so we just pass it up to context
|
|
105
|
-
|
|
106
|
-
const element = useMemo(() => {
|
|
107
|
-
return (
|
|
108
|
-
// @ts-ignore
|
|
109
|
-
<Overlay
|
|
110
|
-
{...props}
|
|
111
|
-
ref={ref}
|
|
112
|
-
onPress={composeEventHandlers(
|
|
113
|
-
props.onPress,
|
|
114
|
-
context.dismissOnOverlayPress
|
|
115
|
-
? () => {
|
|
116
|
-
context.setOpen(false)
|
|
117
|
-
}
|
|
118
|
-
: undefined
|
|
119
|
-
)}
|
|
120
|
-
/>
|
|
121
|
-
)
|
|
122
|
-
}, [props, ref, context.dismissOnOverlayPress, context.setOpen])
|
|
123
|
-
|
|
124
|
-
useIsomorphicLayoutEffect(() => {
|
|
125
|
-
context.onOverlayComponent?.(element)
|
|
126
|
-
}, [element])
|
|
127
|
-
|
|
128
|
-
if (context.onlyShowFrame) {
|
|
129
|
-
return null
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return null
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
/* -------------------------------------------------------------------------------------------------
|
|
136
|
-
* Sheet
|
|
137
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
138
|
-
|
|
139
|
-
type ExtraFrameProps = {
|
|
140
|
-
/**
|
|
141
|
-
* by default the sheet adds a view below its bottom that extends past the
|
|
142
|
-
* largest visible viewport height. this covers spring overshoot when opening
|
|
143
|
-
* so page content never shows through below the sheet.
|
|
144
|
-
*/
|
|
145
|
-
disableHideBottomOverflow?: boolean
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Adds padding accounting for the currently offscreen content, so if you put a flex element inside
|
|
149
|
-
* the sheet, it will always flex to the height of the visible amount of the sheet. If this is not
|
|
150
|
-
* turned on, the inner content is always set to the max height of the sheet.
|
|
151
|
-
*/
|
|
152
|
-
adjustPaddingForOffscreenContent?: boolean
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const SheetFrame = Frame.styleable<SheetProps & ExtraFrameProps>(
|
|
156
|
-
(
|
|
157
|
-
{
|
|
158
|
-
__scopeSheet,
|
|
159
|
-
adjustPaddingForOffscreenContent,
|
|
160
|
-
disableHideBottomOverflow,
|
|
161
|
-
children,
|
|
162
|
-
...props
|
|
163
|
-
},
|
|
164
|
-
forwardedRef
|
|
165
|
-
) => {
|
|
166
|
-
const context = useSheetContext(SHEET_NAME, __scopeSheet)
|
|
167
|
-
const { hasFit, disableRemoveScroll, frameSize, contentRef, open } = context
|
|
168
|
-
const composedContentRef = useComposedRefs(forwardedRef, contentRef)
|
|
169
|
-
const offscreenSize = useSheetOffscreenSize(context)
|
|
170
|
-
|
|
171
|
-
// FIX: Store the frameSize when open for use during close animation
|
|
172
|
-
const stableFrameSize = useRef(frameSize)
|
|
173
|
-
useEffect(() => {
|
|
174
|
-
if (open && frameSize) {
|
|
175
|
-
stableFrameSize.current = frameSize
|
|
176
|
-
}
|
|
177
|
-
}, [open, frameSize])
|
|
178
|
-
|
|
179
|
-
const sheetContents = useMemo(() => {
|
|
180
|
-
// FIX: Use fixed height during close animation to prevent content-driven resizing
|
|
181
|
-
const shouldUseFixedHeight = hasFit && !open && stableFrameSize.current
|
|
182
|
-
|
|
183
|
-
return (
|
|
184
|
-
// @ts-expect-error
|
|
185
|
-
<Frame
|
|
186
|
-
ref={composedContentRef}
|
|
187
|
-
flex={hasFit && open ? 0 : 1}
|
|
188
|
-
flexBasis={hasFit ? 'auto' : undefined}
|
|
189
|
-
height={
|
|
190
|
-
shouldUseFixedHeight
|
|
191
|
-
? stableFrameSize.current
|
|
192
|
-
: hasFit
|
|
193
|
-
? undefined
|
|
194
|
-
: frameSize
|
|
195
|
-
}
|
|
196
|
-
pointerEvents={open ? 'auto' : 'none'}
|
|
197
|
-
data-state={open ? 'open' : 'closed'}
|
|
198
|
-
{...props}
|
|
199
|
-
>
|
|
200
|
-
<StackZIndexContext zIndex={resolveViewZIndex(props.zIndex)}>
|
|
201
|
-
{children}
|
|
202
|
-
</StackZIndexContext>
|
|
203
|
-
|
|
204
|
-
{adjustPaddingForOffscreenContent && (
|
|
205
|
-
<View data-sheet-offscreen-pad height={offscreenSize} width="100%" />
|
|
206
|
-
)}
|
|
207
|
-
</Frame>
|
|
208
|
-
)
|
|
209
|
-
}, [
|
|
210
|
-
open,
|
|
211
|
-
props,
|
|
212
|
-
frameSize,
|
|
213
|
-
offscreenSize,
|
|
214
|
-
adjustPaddingForOffscreenContent,
|
|
215
|
-
hasFit,
|
|
216
|
-
])
|
|
217
|
-
|
|
218
|
-
return (
|
|
219
|
-
<>
|
|
220
|
-
<RemoveScroll enabled={!disableRemoveScroll && context.open}>
|
|
221
|
-
{sheetContents}
|
|
222
|
-
</RemoveScroll>
|
|
223
|
-
|
|
224
|
-
{/* below frame hide when bouncing past 100% */}
|
|
225
|
-
{!disableHideBottomOverflow && (
|
|
226
|
-
// @ts-ignore
|
|
227
|
-
<Frame
|
|
228
|
-
{...props}
|
|
229
|
-
componentName="SheetCover"
|
|
230
|
-
data-sheet-cover=""
|
|
231
|
-
children={null}
|
|
232
|
-
// Don't inherit testID - this is a visual helper element
|
|
233
|
-
testID={undefined}
|
|
234
|
-
id={undefined}
|
|
235
|
-
position="absolute"
|
|
236
|
-
// anchor the cover's top at the sheet's bottom edge (top: 100% of the
|
|
237
|
-
// container), then extend it downward. on web extend it past the
|
|
238
|
-
// largest viewport safari can reveal as its chrome retracts, so the
|
|
239
|
-
// sheet background covers the bottom instead of revealing the page.
|
|
240
|
-
// native keeps frameSize.
|
|
241
|
-
top="100%"
|
|
242
|
-
zIndex={-1}
|
|
243
|
-
height={
|
|
244
|
-
isWeb
|
|
245
|
-
? Math.max(context.frameSize, getMaxViewportHeight())
|
|
246
|
-
: context.frameSize
|
|
247
|
-
}
|
|
248
|
-
maxHeight={isWeb ? 'none' : undefined}
|
|
249
|
-
left={0}
|
|
250
|
-
right={0}
|
|
251
|
-
borderWidth={0}
|
|
252
|
-
borderRadius={0}
|
|
253
|
-
shadowOpacity={0}
|
|
254
|
-
/>
|
|
255
|
-
)}
|
|
256
|
-
</>
|
|
257
|
-
)
|
|
258
|
-
}
|
|
259
|
-
) as any as ForwardRefExoticComponent<
|
|
260
|
-
SheetScopedProps<
|
|
261
|
-
Omit<GetProps<typeof Frame>, keyof ExtraFrameProps> & ExtraFrameProps
|
|
262
|
-
>
|
|
263
|
-
>
|
|
264
|
-
|
|
265
|
-
const Sheet = forwardRef<RNView, SheetProps>(function Sheet(props, ref) {
|
|
266
|
-
const hydrated = useDidFinishSSR()
|
|
267
|
-
const { isShowingNonSheet } = useSheetController()
|
|
268
|
-
|
|
269
|
-
let SheetImplementation = SheetImplementationCustom
|
|
270
|
-
|
|
271
|
-
if (props.native && Platform.OS === 'ios') {
|
|
272
|
-
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
273
|
-
const impl = getNativeSheet('ios')
|
|
274
|
-
if (impl) {
|
|
275
|
-
// @ts-expect-error accepting external sheet implementation
|
|
276
|
-
SheetImplementation = impl
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Performance is sensitive here so avoid all the hooks below with this
|
|
283
|
-
*/
|
|
284
|
-
if (isShowingNonSheet || !hydrated) {
|
|
285
|
-
return null
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
return <SheetImplementation ref={ref} {...props} />
|
|
289
|
-
})
|
|
290
|
-
|
|
291
|
-
const components = {
|
|
292
|
-
Frame: SheetFrame,
|
|
293
|
-
Overlay: SheetOverlay,
|
|
294
|
-
Handle: SheetHandle,
|
|
295
|
-
ScrollView: SheetScrollView,
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
const Controlled = withStaticProperties(Sheet, components) as any as FunctionComponent<
|
|
299
|
-
Omit<SheetProps, 'open' | 'onOpenChange'> & RefAttributes<RNView>
|
|
300
|
-
> &
|
|
301
|
-
typeof components
|
|
302
|
-
|
|
303
|
-
return withStaticProperties(Sheet, {
|
|
304
|
-
...components,
|
|
305
|
-
Controlled,
|
|
306
|
-
})
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
/* -------------------------------------------------------------------------------------------------*/
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Legacy setup - prefer `import '@tamagui/native/setup-gesture-handler'` instead.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { getGestureHandler } from '@tamagui/native'
|
|
6
|
-
|
|
7
|
-
import type { GestureState } from '@tamagui/native'
|
|
8
|
-
|
|
9
|
-
const SHEET_GESTURE_STATE_KEY = '__tamagui_sheet_gesture_state__'
|
|
10
|
-
|
|
11
|
-
export function isGestureHandlerEnabled(): boolean {
|
|
12
|
-
const g = globalThis as typeof globalThis & {
|
|
13
|
-
[SHEET_GESTURE_STATE_KEY]?: GestureState
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return g[SHEET_GESTURE_STATE_KEY]?.enabled ?? getGestureHandler().isEnabled
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface SetupGestureHandlerConfig {
|
|
20
|
-
Gesture: any
|
|
21
|
-
GestureDetector: any
|
|
22
|
-
ScrollView?: any
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function setupGestureHandler(config: SetupGestureHandlerConfig): void {
|
|
26
|
-
const g = globalThis as any
|
|
27
|
-
if (g.__tamagui_sheet_gesture_handler_setup) {
|
|
28
|
-
return
|
|
29
|
-
}
|
|
30
|
-
g.__tamagui_sheet_gesture_handler_setup = true
|
|
31
|
-
|
|
32
|
-
const { Gesture, GestureDetector, ScrollView } = config
|
|
33
|
-
|
|
34
|
-
if (Gesture && GestureDetector) {
|
|
35
|
-
g[SHEET_GESTURE_STATE_KEY] = {
|
|
36
|
-
enabled: true,
|
|
37
|
-
Gesture,
|
|
38
|
-
GestureDetector,
|
|
39
|
-
ScrollView: ScrollView || null,
|
|
40
|
-
RootView: null,
|
|
41
|
-
} satisfies GestureState
|
|
42
|
-
}
|
|
43
|
-
}
|
package/src/useSheet.tsx
DELETED