react-native-gesture-handler 2.23.0 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RNGestureHandler.podspec +8 -0
- package/android/build.gradle +9 -3
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +2 -1
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +2 -1
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +60 -0
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +26 -0
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +26 -0
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
- package/android/paper77/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +67 -0
- package/android/paper77/src/main/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
- package/apple/RNGestureHandlerButton.mm +12 -2
- package/lib/commonjs/ActionType.js +3 -3
- package/lib/commonjs/ActionType.js.map +1 -1
- package/lib/commonjs/Directions.js +8 -11
- package/lib/commonjs/Directions.js.map +1 -1
- package/lib/commonjs/EnableNewWebImplementation.js +10 -2
- package/lib/commonjs/EnableNewWebImplementation.js.map +1 -1
- package/lib/commonjs/GestureHandlerRootViewContext.js +7 -2
- package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -1
- package/lib/commonjs/PlatformConstants.js +6 -1
- package/lib/commonjs/PlatformConstants.js.map +1 -1
- package/lib/commonjs/PlatformConstants.web.js +3 -1
- package/lib/commonjs/PlatformConstants.web.js.map +1 -1
- package/lib/commonjs/PointerType.js +5 -3
- package/lib/commonjs/PointerType.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +6 -2
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +37 -11
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +32 -22
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/commonjs/RNRenderer.js +3 -1
- package/lib/commonjs/RNRenderer.js.map +1 -1
- package/lib/commonjs/RNRenderer.web.js +2 -1
- package/lib/commonjs/RNRenderer.web.js.map +1 -1
- package/lib/commonjs/State.js +3 -4
- package/lib/commonjs/State.js.map +1 -1
- package/lib/commonjs/TouchEventType.js +3 -3
- package/lib/commonjs/TouchEventType.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +115 -90
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js +81 -28
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureButtonsProps.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +37 -26
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +27 -13
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.js +6 -2
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.web.js +12 -4
- package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.android.js +15 -4
- package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.js +14 -4
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.web.js +13 -4
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -1
- package/lib/commonjs/components/Pressable/Pressable.js +77 -29
- package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
- package/lib/commonjs/components/Pressable/PressableProps.js.map +1 -1
- package/lib/commonjs/components/Pressable/index.js +3 -1
- package/lib/commonjs/components/Pressable/index.js.map +1 -1
- package/lib/commonjs/components/Pressable/utils.js +20 -5
- package/lib/commonjs/components/Pressable/utils.js.map +1 -1
- package/lib/commonjs/components/ReanimatedDrawerLayout.js +86 -44
- package/lib/commonjs/components/ReanimatedDrawerLayout.js.map +1 -1
- package/lib/commonjs/components/ReanimatedSwipeable.js +45 -18
- package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +75 -34
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/Text.js +28 -10
- package/lib/commonjs/components/Text.js.map +1 -1
- package/lib/commonjs/components/gestureHandlerRootHOC.js +14 -5
- package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/components/touchables/ExtraButtonProps.js +2 -0
- package/lib/commonjs/components/touchables/ExtraButtonProps.js.map +1 -0
- package/lib/commonjs/components/touchables/GenericTouchable.js +76 -40
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchableProps.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableHighlight.js +34 -19
- package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +32 -16
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +5 -2
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js +25 -16
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +25 -13
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/commonjs/components/touchables/index.js +12 -7
- package/lib/commonjs/components/touchables/index.js.map +1 -1
- package/lib/commonjs/findNodeHandle.js +4 -1
- package/lib/commonjs/findNodeHandle.js.map +1 -1
- package/lib/commonjs/findNodeHandle.web.js +14 -5
- package/lib/commonjs/findNodeHandle.web.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +6 -1
- package/lib/commonjs/getReactNativeVersion.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.web.js +1 -0
- package/lib/commonjs/getReactNativeVersion.web.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +14 -13
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.web.js +1 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -1
- package/lib/commonjs/ghQueueMicrotask.js +2 -1
- package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
- package/lib/commonjs/handlers/FlingGestureHandler.js +11 -9
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +22 -15
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/GestureHandlerEventPayload.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +11 -9
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/NativeViewGestureHandler.js +13 -10
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +32 -13
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PinchGestureHandler.js +9 -7
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -1
- package/lib/commonjs/handlers/RotationGestureHandler.js +9 -7
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +11 -9
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +146 -59
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/createNativeWrapper.js +30 -18
- package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.js +1 -0
- package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.web.js +2 -1
- package/lib/commonjs/handlers/customDirectEventTypes.web.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +10 -9
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +14 -5
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js +21 -13
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +29 -9
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +10 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +36 -11
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +3 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +24 -12
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +48 -12
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +13 -3
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +9 -2
- package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +14 -6
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +55 -27
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +46 -14
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/flingGesture.js +12 -5
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +19 -8
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +84 -44
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js +31 -17
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js +27 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +9 -3
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +7 -2
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js +25 -11
- package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +14 -6
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/manualGesture.js +6 -0
- package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/nativeGesture.js +12 -5
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +43 -18
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/pinchGesture.js +9 -2
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +8 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/handlers/gestures/rotationGesture.js +9 -2
- package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +22 -10
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/handlers/getNextHandlerTag.js +1 -0
- package/lib/commonjs/handlers/getNextHandlerTag.js.map +1 -1
- package/lib/commonjs/handlers/handlersRegistry.js +21 -6
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
- package/lib/commonjs/handlers/utils.js +26 -6
- package/lib/commonjs/handlers/utils.js.map +1 -1
- package/lib/commonjs/index.js +104 -75
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +11 -4
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/jestUtils/index.js +5 -4
- package/lib/commonjs/jestUtils/index.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js +83 -19
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/mocks.js +15 -5
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/mountRegistry.js +12 -3
- package/lib/commonjs/mountRegistry.js.map +1 -1
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +5 -1
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js +7 -2
- package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js +7 -2
- package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/commonjs/typeUtils.js.map +1 -1
- package/lib/commonjs/utils.js +37 -13
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/Gestures.js +23 -5
- package/lib/commonjs/web/Gestures.js.map +1 -1
- package/lib/commonjs/web/constants.js +4 -2
- package/lib/commonjs/web/constants.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +41 -5
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +42 -13
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +49 -6
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +195 -62
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/HoverGestureHandler.js +19 -6
- package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +47 -6
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +11 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +49 -8
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +123 -8
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +41 -4
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +42 -4
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +67 -6
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +17 -9
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/CircularBuffer.js +15 -3
- package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +41 -7
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +78 -11
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +48 -8
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +22 -5
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/KeyboardEventManager.js +26 -4
- package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/LeastSquareSolver.js +67 -30
- package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js +14 -7
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +45 -10
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +45 -9
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +18 -3
- package/lib/commonjs/web/tools/Vector.js.map +1 -1
- package/lib/commonjs/web/tools/VelocityTracker.js +31 -9
- package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -1
- package/lib/commonjs/web/tools/WheelEventManager.js +17 -4
- package/lib/commonjs/web/tools/WheelEventManager.js.map +1 -1
- package/lib/commonjs/web/utils.js +76 -27
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/commonjs/web_hammer/DiscreteGestureHandler.js +19 -7
- package/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/DraggingGestureHandler.js +13 -3
- package/lib/commonjs/web_hammer/DraggingGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/Errors.js +3 -0
- package/lib/commonjs/web_hammer/Errors.js.map +1 -1
- package/lib/commonjs/web_hammer/FlingGestureHandler.js +44 -13
- package/lib/commonjs/web_hammer/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js +142 -55
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js +11 -2
- package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/LongPressGestureHandler.js +19 -5
- package/lib/commonjs/web_hammer/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NativeViewGestureHandler.js +24 -16
- package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +16 -9
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +49 -8
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/PinchGestureHandler.js +11 -2
- package/lib/commonjs/web_hammer/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/PressGestureHandler.js +43 -15
- package/lib/commonjs/web_hammer/PressGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/RotationGestureHandler.js +13 -2
- package/lib/commonjs/web_hammer/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/TapGestureHandler.js +52 -33
- package/lib/commonjs/web_hammer/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/constants.js +26 -13
- package/lib/commonjs/web_hammer/constants.js.map +1 -1
- package/lib/commonjs/web_hammer/utils.js +14 -4
- package/lib/commonjs/web_hammer/utils.js.map +1 -1
- package/lib/module/ActionType.js +1 -3
- package/lib/module/ActionType.js.map +1 -1
- package/lib/module/Directions.js +3 -9
- package/lib/module/Directions.js.map +1 -1
- package/lib/module/EnableNewWebImplementation.js +5 -2
- package/lib/module/EnableNewWebImplementation.js.map +1 -1
- package/lib/module/GestureHandlerRootViewContext.js.map +1 -1
- package/lib/module/PlatformConstants.js +1 -0
- package/lib/module/PlatformConstants.js.map +1 -1
- package/lib/module/PlatformConstants.web.js +1 -0
- package/lib/module/PlatformConstants.web.js.map +1 -1
- package/lib/module/PointerType.js +4 -3
- package/lib/module/PointerType.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +0 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +20 -10
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +17 -18
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/module/RNRenderer.js.map +1 -1
- package/lib/module/RNRenderer.web.js.map +1 -1
- package/lib/module/State.js +1 -4
- package/lib/module/State.js.map +1 -1
- package/lib/module/TouchEventType.js +1 -3
- package/lib/module/TouchEventType.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +99 -80
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js +55 -19
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureButtonsProps.js.map +1 -1
- package/lib/module/components/GestureComponents.js +12 -17
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +4 -4
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.web.js +2 -1
- package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.android.js +2 -1
- package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.js +2 -1
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.web.js +2 -1
- package/lib/module/components/GestureHandlerRootView.web.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +59 -26
- package/lib/module/components/Pressable/Pressable.js.map +1 -1
- package/lib/module/components/Pressable/PressableProps.js.map +1 -1
- package/lib/module/components/Pressable/index.js.map +1 -1
- package/lib/module/components/Pressable/utils.js +14 -4
- package/lib/module/components/Pressable/utils.js.map +1 -1
- package/lib/module/components/ReanimatedDrawerLayout.js +66 -40
- package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
- package/lib/module/components/ReanimatedSwipeable.js +30 -14
- package/lib/module/components/ReanimatedSwipeable.js.map +1 -1
- package/lib/module/components/Swipeable.js +59 -28
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/Text.js +15 -7
- package/lib/module/components/Text.js.map +1 -1
- package/lib/module/components/gestureHandlerRootHOC.js +2 -2
- package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/components/touchables/ExtraButtonProps.js +2 -0
- package/lib/module/components/touchables/ExtraButtonProps.js.map +1 -0
- package/lib/module/components/touchables/GenericTouchable.js +63 -34
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchableProps.js.map +1 -1
- package/lib/module/components/touchables/TouchableHighlight.js +24 -15
- package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js +20 -10
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.js +2 -2
- package/lib/module/components/touchables/TouchableNativeFeedback.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js +16 -10
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/components/touchables/TouchableWithoutFeedback.js +15 -10
- package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/module/components/touchables/index.js.map +1 -1
- package/lib/module/findNodeHandle.js.map +1 -1
- package/lib/module/findNodeHandle.web.js +11 -5
- package/lib/module/findNodeHandle.web.js.map +1 -1
- package/lib/module/getReactNativeVersion.js.map +1 -1
- package/lib/module/getReactNativeVersion.web.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +13 -13
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.web.js.map +1 -1
- package/lib/module/ghQueueMicrotask.js.map +1 -1
- package/lib/module/handlers/FlingGestureHandler.js +0 -6
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +8 -12
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/GestureHandlerEventPayload.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +0 -6
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/NativeViewGestureHandler.js +0 -6
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +19 -8
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PinchGestureHandler.js +0 -2
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -1
- package/lib/module/handlers/RotationGestureHandler.js +0 -2
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +0 -6
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js +119 -57
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/createNativeWrapper.js +22 -15
- package/lib/module/handlers/createNativeWrapper.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.web.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +4 -9
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js +4 -3
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js +7 -8
- package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +16 -8
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +1 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/index.js +13 -7
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +2 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +14 -11
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +39 -12
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +5 -5
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +6 -2
- package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +7 -5
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/utils.js +28 -23
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +38 -14
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/flingGesture.js +9 -5
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js +17 -8
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +73 -44
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureComposition.js +24 -16
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +14 -1
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +4 -3
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -0
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js +18 -9
- package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +11 -6
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/manualGesture.js +4 -0
- package/lib/module/handlers/gestures/manualGesture.js.map +1 -1
- package/lib/module/handlers/gestures/nativeGesture.js +9 -5
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +41 -18
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/pinchGesture.js +7 -2
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +5 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/handlers/gestures/rotationGesture.js +7 -2
- package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +19 -10
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/handlers/getNextHandlerTag.js.map +1 -1
- package/lib/module/handlers/handlersRegistry.js +5 -0
- package/lib/module/handlers/handlersRegistry.js.map +1 -1
- package/lib/module/handlers/utils.js +13 -4
- package/lib/module/handlers/utils.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +2 -3
- package/lib/module/init.js.map +1 -1
- package/lib/module/jestUtils/index.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js +66 -20
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/mocks.js +7 -3
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/mountRegistry.js +10 -3
- package/lib/module/mountRegistry.js.map +1 -1
- package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/module/typeUtils.js.map +1 -1
- package/lib/module/utils.js +15 -6
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/Gestures.js +1 -2
- package/lib/module/web/Gestures.js.map +1 -1
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +38 -5
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +38 -13
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +39 -5
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +181 -61
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/HoverGestureHandler.js +11 -5
- package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/IGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +40 -5
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +6 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +41 -7
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +114 -7
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +33 -3
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +34 -3
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +59 -5
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +14 -9
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/CircularBuffer.js +13 -3
- package/lib/module/web/tools/CircularBuffer.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +39 -7
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +71 -10
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +37 -7
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +19 -5
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/KeyboardEventManager.js +19 -3
- package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
- package/lib/module/web/tools/LeastSquareSolver.js +65 -30
- package/lib/module/web/tools/LeastSquareSolver.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js +12 -7
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +35 -9
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +39 -8
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/Vector.js +14 -3
- package/lib/module/web/tools/Vector.js.map +1 -1
- package/lib/module/web/tools/VelocityTracker.js +25 -8
- package/lib/module/web/tools/VelocityTracker.js.map +1 -1
- package/lib/module/web/tools/WheelEventManager.js +10 -3
- package/lib/module/web/tools/WheelEventManager.js.map +1 -1
- package/lib/module/web/utils.js +57 -22
- package/lib/module/web/utils.js.map +1 -1
- package/lib/module/web_hammer/DiscreteGestureHandler.js +13 -4
- package/lib/module/web_hammer/DiscreteGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/DraggingGestureHandler.js +5 -0
- package/lib/module/web_hammer/DraggingGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/Errors.js +1 -0
- package/lib/module/web_hammer/Errors.js.map +1 -1
- package/lib/module/web_hammer/FlingGestureHandler.js +35 -10
- package/lib/module/web_hammer/FlingGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js +130 -53
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/IndiscreteGestureHandler.js +6 -1
- package/lib/module/web_hammer/IndiscreteGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/LongPressGestureHandler.js +11 -2
- package/lib/module/web_hammer/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NativeViewGestureHandler.js +12 -12
- package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +8 -6
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +40 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/PinchGestureHandler.js +5 -0
- package/lib/module/web_hammer/PinchGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/PressGestureHandler.js +34 -13
- package/lib/module/web_hammer/PressGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/RotationGestureHandler.js +6 -0
- package/lib/module/web_hammer/RotationGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/TapGestureHandler.js +45 -31
- package/lib/module/web_hammer/TapGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/constants.js +1 -2
- package/lib/module/web_hammer/constants.js.map +1 -1
- package/lib/module/web_hammer/utils.js +2 -2
- package/lib/module/web_hammer/utils.js.map +1 -1
- package/lib/typescript/components/GestureComponents.d.ts +1 -1
- package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +5 -0
- package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +7 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -2
- package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +2 -0
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +2 -2
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -1
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +3 -7
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +2 -2
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -2
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -1
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/web/utils.d.ts +2 -0
- package/package.json +9 -8
- package/src/components/GestureComponents.tsx +1 -1
- package/src/components/ReanimatedDrawerLayout.tsx +17 -4
- package/src/components/Text.tsx +5 -0
- package/src/components/touchables/ExtraButtonProps.ts +7 -0
- package/src/components/touchables/GenericTouchable.tsx +0 -2
- package/src/components/touchables/GenericTouchableProps.ts +2 -0
- package/src/components/touchables/TouchableHighlight.tsx +2 -2
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +1 -1
- package/src/components/touchables/TouchableNativeFeedback.tsx +1 -1
- package/src/components/touchables/TouchableNativeFeedbackProps.tsx +3 -8
- package/src/components/touchables/TouchableOpacity.tsx +2 -2
- package/src/components/touchables/TouchableWithoutFeedback.tsx +22 -4
- package/src/handlers/createHandler.tsx +20 -9
- package/src/handlers/createNativeWrapper.tsx +7 -3
- package/src/handlers/gestures/GestureDetector/Wrap.web.tsx +2 -4
- package/src/utils.ts +6 -0
- package/src/web/utils.ts +21 -3
@@ -4,8 +4,10 @@ const numberAsInset = value => ({
|
|
4
4
|
top: value,
|
5
5
|
bottom: value
|
6
6
|
});
|
7
|
+
|
7
8
|
const addInsets = (a, b) => {
|
8
9
|
var _a$left, _b$left, _a$right, _b$right, _a$top, _b$top, _a$bottom, _b$bottom;
|
10
|
+
|
9
11
|
return {
|
10
12
|
left: ((_a$left = a.left) !== null && _a$left !== void 0 ? _a$left : 0) + ((_b$left = b.left) !== null && _b$left !== void 0 ? _b$left : 0),
|
11
13
|
right: ((_a$right = a.right) !== null && _a$right !== void 0 ? _a$right : 0) + ((_b$right = b.right) !== null && _b$right !== void 0 ? _b$right : 0),
|
@@ -13,6 +15,7 @@ const addInsets = (a, b) => {
|
|
13
15
|
bottom: ((_a$bottom = a.bottom) !== null && _a$bottom !== void 0 ? _a$bottom : 0) + ((_b$bottom = b.bottom) !== null && _b$bottom !== void 0 ? _b$bottom : 0)
|
14
16
|
};
|
15
17
|
};
|
18
|
+
|
16
19
|
const touchDataToPressEvent = (data, timestamp, targetId) => ({
|
17
20
|
identifier: data.id,
|
18
21
|
locationX: data.x,
|
@@ -24,7 +27,9 @@ const touchDataToPressEvent = (data, timestamp, targetId) => ({
|
|
24
27
|
touches: [],
|
25
28
|
// Always empty - legacy compatibility
|
26
29
|
changedTouches: [] // Always empty - legacy compatibility
|
30
|
+
|
27
31
|
});
|
32
|
+
|
28
33
|
const gestureToPressEvent = (event, timestamp, targetId) => ({
|
29
34
|
identifier: event.handlerTag,
|
30
35
|
locationX: event.x,
|
@@ -36,15 +41,18 @@ const gestureToPressEvent = (event, timestamp, targetId) => ({
|
|
36
41
|
touches: [],
|
37
42
|
// Always empty - legacy compatibility
|
38
43
|
changedTouches: [] // Always empty - legacy compatibility
|
44
|
+
|
39
45
|
});
|
46
|
+
|
40
47
|
const isTouchWithinInset = (dimensions, inset, touch) => {
|
41
48
|
var _touch$x, _inset$right, _touch$y, _inset$bottom, _touch$x2, _inset$left, _touch$y2, _inset$top;
|
49
|
+
|
42
50
|
return ((_touch$x = touch === null || touch === void 0 ? void 0 : touch.x) !== null && _touch$x !== void 0 ? _touch$x : 0) < ((_inset$right = inset.right) !== null && _inset$right !== void 0 ? _inset$right : 0) + dimensions.width && ((_touch$y = touch === null || touch === void 0 ? void 0 : touch.y) !== null && _touch$y !== void 0 ? _touch$y : 0) < ((_inset$bottom = inset.bottom) !== null && _inset$bottom !== void 0 ? _inset$bottom : 0) + dimensions.height && ((_touch$x2 = touch === null || touch === void 0 ? void 0 : touch.x) !== null && _touch$x2 !== void 0 ? _touch$x2 : 0) > -((_inset$left = inset.left) !== null && _inset$left !== void 0 ? _inset$left : 0) && ((_touch$y2 = touch === null || touch === void 0 ? void 0 : touch.y) !== null && _touch$y2 !== void 0 ? _touch$y2 : 0) > -((_inset$top = inset.top) !== null && _inset$top !== void 0 ? _inset$top : 0);
|
43
51
|
};
|
52
|
+
|
44
53
|
const gestureToPressableEvent = event => {
|
45
|
-
const timestamp = Date.now();
|
54
|
+
const timestamp = Date.now(); // As far as I can see, there isn't a conventional way of getting targetId with the data we get
|
46
55
|
|
47
|
-
// As far as I can see, there isn't a conventional way of getting targetId with the data we get
|
48
56
|
const targetId = 0;
|
49
57
|
const pressEvent = gestureToPressEvent(event, timestamp, targetId);
|
50
58
|
return {
|
@@ -62,11 +70,12 @@ const gestureToPressableEvent = event => {
|
|
62
70
|
}
|
63
71
|
};
|
64
72
|
};
|
73
|
+
|
65
74
|
const gestureTouchToPressableEvent = event => {
|
66
75
|
var _event$allTouches$at$, _event$allTouches$at, _event$allTouches$at$2, _event$allTouches$at2, _event$allTouches$at$3, _event$allTouches$at3, _event$allTouches$at$4, _event$allTouches$at4;
|
67
|
-
const timestamp = Date.now();
|
68
76
|
|
69
|
-
// As far as I can see, there isn't a conventional way of getting targetId with the data we get
|
77
|
+
const timestamp = Date.now(); // As far as I can see, there isn't a conventional way of getting targetId with the data we get
|
78
|
+
|
70
79
|
const targetId = 0;
|
71
80
|
const touchesList = event.allTouches.map(touch => touchDataToPressEvent(touch, timestamp, targetId));
|
72
81
|
const changedTouchesList = event.changedTouches.map(touch => touchDataToPressEvent(touch, timestamp, targetId));
|
@@ -85,5 +94,6 @@ const gestureTouchToPressableEvent = event => {
|
|
85
94
|
}
|
86
95
|
};
|
87
96
|
};
|
97
|
+
|
88
98
|
export { numberAsInset, addInsets, isTouchWithinInset, gestureToPressableEvent, gestureTouchToPressableEvent };
|
89
99
|
//# sourceMappingURL=utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["numberAsInset","value","left","right","top","bottom","addInsets","a","b","
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["numberAsInset","value","left","right","top","bottom","addInsets","a","b","touchDataToPressEvent","data","timestamp","targetId","identifier","id","locationX","x","locationY","y","pageX","absoluteX","pageY","absoluteY","target","touches","changedTouches","gestureToPressEvent","event","handlerTag","isTouchWithinInset","dimensions","inset","touch","width","height","gestureToPressableEvent","Date","now","pressEvent","nativeEvent","force","undefined","gestureTouchToPressableEvent","touchesList","allTouches","map","changedTouchesList","at"],"mappings":"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","sourcesContent":["import { Insets } from 'react-native';\nimport {\n HoverGestureHandlerEventPayload,\n LongPressGestureHandlerEventPayload,\n} from '../../handlers/GestureHandlerEventPayload';\nimport {\n TouchData,\n GestureStateChangeEvent,\n GestureTouchEvent,\n} from '../../handlers/gestureHandlerCommon';\nimport { InnerPressableEvent, PressableEvent } from './PressableProps';\n\nconst numberAsInset = (value: number): Insets => ({\n left: value,\n right: value,\n top: value,\n bottom: value,\n});\n\nconst addInsets = (a: Insets, b: Insets): Insets => ({\n left: (a.left ?? 0) + (b.left ?? 0),\n right: (a.right ?? 0) + (b.right ?? 0),\n top: (a.top ?? 0) + (b.top ?? 0),\n bottom: (a.bottom ?? 0) + (b.bottom ?? 0),\n});\n\nconst touchDataToPressEvent = (\n data: TouchData,\n timestamp: number,\n targetId: number\n): InnerPressableEvent => ({\n identifier: data.id,\n locationX: data.x,\n locationY: data.y,\n pageX: data.absoluteX,\n pageY: data.absoluteY,\n target: targetId,\n timestamp: timestamp,\n touches: [], // Always empty - legacy compatibility\n changedTouches: [], // Always empty - legacy compatibility\n});\n\nconst gestureToPressEvent = (\n event: GestureStateChangeEvent<\n HoverGestureHandlerEventPayload | LongPressGestureHandlerEventPayload\n >,\n timestamp: number,\n targetId: number\n): InnerPressableEvent => ({\n identifier: event.handlerTag,\n locationX: event.x,\n locationY: event.y,\n pageX: event.absoluteX,\n pageY: event.absoluteY,\n target: targetId,\n timestamp: timestamp,\n touches: [], // Always empty - legacy compatibility\n changedTouches: [], // Always empty - legacy compatibility\n});\n\nconst isTouchWithinInset = (\n dimensions: { width: number; height: number },\n inset: Insets,\n touch?: TouchData\n) =>\n (touch?.x ?? 0) < (inset.right ?? 0) + dimensions.width &&\n (touch?.y ?? 0) < (inset.bottom ?? 0) + dimensions.height &&\n (touch?.x ?? 0) > -(inset.left ?? 0) &&\n (touch?.y ?? 0) > -(inset.top ?? 0);\n\nconst gestureToPressableEvent = (\n event: GestureStateChangeEvent<\n HoverGestureHandlerEventPayload | LongPressGestureHandlerEventPayload\n >\n): PressableEvent => {\n const timestamp = Date.now();\n\n // As far as I can see, there isn't a conventional way of getting targetId with the data we get\n const targetId = 0;\n\n const pressEvent = gestureToPressEvent(event, timestamp, targetId);\n\n return {\n nativeEvent: {\n touches: [pressEvent],\n changedTouches: [pressEvent],\n identifier: pressEvent.identifier,\n locationX: event.x,\n locationY: event.y,\n pageX: event.absoluteX,\n pageY: event.absoluteY,\n target: targetId,\n timestamp: timestamp,\n force: undefined,\n },\n };\n};\n\nconst gestureTouchToPressableEvent = (\n event: GestureTouchEvent\n): PressableEvent => {\n const timestamp = Date.now();\n\n // As far as I can see, there isn't a conventional way of getting targetId with the data we get\n const targetId = 0;\n\n const touchesList = event.allTouches.map((touch: TouchData) =>\n touchDataToPressEvent(touch, timestamp, targetId)\n );\n const changedTouchesList = event.changedTouches.map((touch: TouchData) =>\n touchDataToPressEvent(touch, timestamp, targetId)\n );\n\n return {\n nativeEvent: {\n touches: touchesList,\n changedTouches: changedTouchesList,\n identifier: event.handlerTag,\n locationX: event.allTouches.at(0)?.x ?? -1,\n locationY: event.allTouches.at(0)?.y ?? -1,\n pageX: event.allTouches.at(0)?.absoluteX ?? -1,\n pageY: event.allTouches.at(0)?.absoluteY ?? -1,\n target: targetId,\n timestamp: timestamp,\n force: undefined,\n },\n };\n};\n\nexport {\n numberAsInset,\n addInsets,\n isTouchWithinInset,\n gestureToPressableEvent,\n gestureTouchToPressableEvent,\n};\n"]}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
// This component is based on RN's DrawerLayoutAndroid API
|
2
2
|
// It's cross-compatible with all platforms despite
|
3
3
|
// `DrawerLayoutAndroid` only being available on android
|
4
|
-
|
5
4
|
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';
|
6
5
|
import { StyleSheet, Keyboard, StatusBar, I18nManager, Platform } from 'react-native';
|
7
6
|
import Animated, { Extrapolation, interpolate, runOnJS, useAnimatedProps, useAnimatedStyle, useDerivedValue, useSharedValue, withSpring } from 'react-native-reanimated';
|
@@ -9,34 +8,44 @@ import { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';
|
|
9
8
|
import { GestureDetector } from '../handlers/gestures/GestureDetector';
|
10
9
|
import { MouseButton } from '../handlers/gestureHandlerCommon';
|
11
10
|
const DRAG_TOSS = 0.05;
|
12
|
-
export let DrawerPosition
|
11
|
+
export let DrawerPosition;
|
12
|
+
|
13
|
+
(function (DrawerPosition) {
|
13
14
|
DrawerPosition[DrawerPosition["LEFT"] = 0] = "LEFT";
|
14
15
|
DrawerPosition[DrawerPosition["RIGHT"] = 1] = "RIGHT";
|
15
|
-
|
16
|
-
|
17
|
-
export let DrawerState
|
16
|
+
})(DrawerPosition || (DrawerPosition = {}));
|
17
|
+
|
18
|
+
export let DrawerState;
|
19
|
+
|
20
|
+
(function (DrawerState) {
|
18
21
|
DrawerState[DrawerState["IDLE"] = 0] = "IDLE";
|
19
22
|
DrawerState[DrawerState["DRAGGING"] = 1] = "DRAGGING";
|
20
23
|
DrawerState[DrawerState["SETTLING"] = 2] = "SETTLING";
|
21
|
-
|
22
|
-
|
23
|
-
export let DrawerType
|
24
|
+
})(DrawerState || (DrawerState = {}));
|
25
|
+
|
26
|
+
export let DrawerType;
|
27
|
+
|
28
|
+
(function (DrawerType) {
|
24
29
|
DrawerType[DrawerType["FRONT"] = 0] = "FRONT";
|
25
30
|
DrawerType[DrawerType["BACK"] = 1] = "BACK";
|
26
31
|
DrawerType[DrawerType["SLIDE"] = 2] = "SLIDE";
|
27
|
-
|
28
|
-
|
29
|
-
export let DrawerLockMode
|
32
|
+
})(DrawerType || (DrawerType = {}));
|
33
|
+
|
34
|
+
export let DrawerLockMode;
|
35
|
+
|
36
|
+
(function (DrawerLockMode) {
|
30
37
|
DrawerLockMode[DrawerLockMode["UNLOCKED"] = 0] = "UNLOCKED";
|
31
38
|
DrawerLockMode[DrawerLockMode["LOCKED_CLOSED"] = 1] = "LOCKED_CLOSED";
|
32
39
|
DrawerLockMode[DrawerLockMode["LOCKED_OPEN"] = 2] = "LOCKED_OPEN";
|
33
|
-
|
34
|
-
|
35
|
-
export let DrawerKeyboardDismissMode
|
40
|
+
})(DrawerLockMode || (DrawerLockMode = {}));
|
41
|
+
|
42
|
+
export let DrawerKeyboardDismissMode;
|
43
|
+
|
44
|
+
(function (DrawerKeyboardDismissMode) {
|
36
45
|
DrawerKeyboardDismissMode[DrawerKeyboardDismissMode["NONE"] = 0] = "NONE";
|
37
46
|
DrawerKeyboardDismissMode[DrawerKeyboardDismissMode["ON_DRAG"] = 1] = "ON_DRAG";
|
38
|
-
|
39
|
-
|
47
|
+
})(DrawerKeyboardDismissMode || (DrawerKeyboardDismissMode = {}));
|
48
|
+
|
40
49
|
const defaultProps = {
|
41
50
|
drawerWidth: 200,
|
42
51
|
drawerPosition: DrawerPosition.LEFT,
|
@@ -49,7 +58,10 @@ const defaultProps = {
|
|
49
58
|
activeCursor: 'auto',
|
50
59
|
mouseButton: MouseButton.LEFT,
|
51
60
|
statusBarAnimation: 'slide'
|
52
|
-
};
|
61
|
+
}; // StatusBar.setHidden and Keyboard.dismiss cannot be directly referenced in worklets.
|
62
|
+
|
63
|
+
const setStatusBarHidden = StatusBar.setHidden;
|
64
|
+
const dismissKeyboard = Keyboard.dismiss;
|
53
65
|
const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
54
66
|
const [containerWidth, setContainerWidth] = useState(0);
|
55
67
|
const [drawerState, setDrawerState] = useState(DrawerState.IDLE);
|
@@ -77,12 +89,11 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
77
89
|
onDrawerSlide,
|
78
90
|
onDrawerClose,
|
79
91
|
onDrawerOpen,
|
80
|
-
onDrawerStateChanged
|
92
|
+
onDrawerStateChanged,
|
93
|
+
animationSpeed: animationSpeedProp
|
81
94
|
} = props;
|
82
95
|
const isFromLeft = drawerPosition === DrawerPosition.LEFT;
|
83
|
-
const sideCorrection = isFromLeft ? 1 : -1;
|
84
|
-
|
85
|
-
// While closing the drawer when user starts gesture in the greyed out part of the window,
|
96
|
+
const sideCorrection = isFromLeft ? 1 : -1; // While closing the drawer when user starts gesture in the greyed out part of the window,
|
86
97
|
// we want the drawer to follow only once the finger reaches the edge of the drawer.
|
87
98
|
// See the diagram for reference. * = starting finger position, < = current finger position
|
88
99
|
// 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+
|
@@ -98,15 +109,18 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
98
109
|
onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);
|
99
110
|
}, []);
|
100
111
|
const isDrawerOpen = useSharedValue(false);
|
112
|
+
|
101
113
|
const handleContainerLayout = ({
|
102
114
|
nativeEvent
|
103
115
|
}) => {
|
104
116
|
setContainerWidth(nativeEvent.layout.width);
|
105
117
|
};
|
118
|
+
|
106
119
|
const emitStateChanged = useCallback((newState, drawerWillShow) => {
|
107
120
|
'worklet';
|
108
121
|
|
109
122
|
var _runOnJS;
|
123
|
+
|
110
124
|
onDrawerStateChanged && ((_runOnJS = runOnJS(onDrawerStateChanged)) === null || _runOnJS === void 0 ? void 0 : _runOnJS(newState, drawerWillShow));
|
111
125
|
}, [onDrawerStateChanged]);
|
112
126
|
const drawerAnimatedProps = useAnimatedProps(() => ({
|
@@ -114,19 +128,17 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
114
128
|
}));
|
115
129
|
const overlayAnimatedProps = useAnimatedProps(() => ({
|
116
130
|
pointerEvents: isDrawerOpen.value ? 'auto' : 'none'
|
117
|
-
}));
|
118
|
-
|
119
|
-
// While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth
|
131
|
+
})); // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth
|
120
132
|
// This way it can be swiped open even when it's hidden
|
133
|
+
|
121
134
|
const [edgeHitSlop, setEdgeHitSlop] = useState(isFromLeft ? {
|
122
135
|
left: 0,
|
123
136
|
width: edgeWidth
|
124
137
|
} : {
|
125
138
|
right: 0,
|
126
139
|
width: edgeWidth
|
127
|
-
});
|
140
|
+
}); // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise
|
128
141
|
|
129
|
-
// gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise
|
130
142
|
const gestureOrientation = useMemo(() => sideCorrection * (drawerOpened ? -1 : 1), [sideCorrection, drawerOpened]);
|
131
143
|
useEffect(() => {
|
132
144
|
setEdgeHitSlop(isFromLeft ? {
|
@@ -144,15 +156,17 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
144
156
|
isDrawerOpen.value = willShow;
|
145
157
|
emitStateChanged(DrawerState.SETTLING, willShow);
|
146
158
|
runOnJS(setDrawerState)(DrawerState.SETTLING);
|
159
|
+
|
147
160
|
if (hideStatusBar) {
|
148
|
-
runOnJS(
|
161
|
+
runOnJS(setStatusBarHidden)(willShow, statusBarAnimation);
|
149
162
|
}
|
163
|
+
|
150
164
|
const normalizedToValue = interpolate(toValue, [0, drawerWidth], [0, 1], Extrapolation.CLAMP);
|
151
165
|
const normalizedInitialVelocity = interpolate(initialVelocity, [0, drawerWidth], [0, 1], Extrapolation.CLAMP);
|
152
166
|
openValue.value = withSpring(normalizedToValue, {
|
153
167
|
overshootClamping: true,
|
154
168
|
velocity: normalizedInitialVelocity,
|
155
|
-
mass: animationSpeed ? 1 / animationSpeed : 1,
|
169
|
+
mass: animationSpeed ? 1 / animationSpeed : 1 / (animationSpeedProp !== null && animationSpeedProp !== void 0 ? animationSpeedProp : 1),
|
156
170
|
damping: 40,
|
157
171
|
stiffness: 500
|
158
172
|
}, finished => {
|
@@ -160,11 +174,14 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
160
174
|
emitStateChanged(DrawerState.IDLE, willShow);
|
161
175
|
runOnJS(setDrawerOpened)(willShow);
|
162
176
|
runOnJS(setDrawerState)(DrawerState.IDLE);
|
177
|
+
|
163
178
|
if (willShow) {
|
164
179
|
var _runOnJS2;
|
180
|
+
|
165
181
|
onDrawerOpen && ((_runOnJS2 = runOnJS(onDrawerOpen)) === null || _runOnJS2 === void 0 ? void 0 : _runOnJS2());
|
166
182
|
} else {
|
167
183
|
var _runOnJS3;
|
184
|
+
|
168
185
|
onDrawerClose && ((_runOnJS3 = runOnJS(onDrawerClose)) === null || _runOnJS3 === void 0 ? void 0 : _runOnJS3());
|
169
186
|
}
|
170
187
|
}
|
@@ -178,6 +195,7 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
178
195
|
velocityX,
|
179
196
|
x: touchX
|
180
197
|
} = event;
|
198
|
+
|
181
199
|
if (drawerPosition !== DrawerPosition.LEFT) {
|
182
200
|
// See description in _updateAnimatedEvent about why events are flipped
|
183
201
|
// for right-side drawer
|
@@ -185,14 +203,18 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
185
203
|
touchX = containerWidth - touchX;
|
186
204
|
velocityX = -velocityX;
|
187
205
|
}
|
206
|
+
|
188
207
|
const gestureStartX = touchX - dragX;
|
189
208
|
let dragOffsetBasedOnStart = 0;
|
209
|
+
|
190
210
|
if (drawerType === DrawerType.FRONT) {
|
191
211
|
dragOffsetBasedOnStart = gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;
|
192
212
|
}
|
213
|
+
|
193
214
|
const startOffsetX = dragX + dragOffsetBasedOnStart + (isDrawerOpen.value ? drawerWidth : 0);
|
194
215
|
const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;
|
195
216
|
const shouldOpen = projOffsetX > drawerWidth / 2;
|
217
|
+
|
196
218
|
if (shouldOpen) {
|
197
219
|
animateDrawer(drawerWidth, velocityX);
|
198
220
|
} else {
|
@@ -203,12 +225,14 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
203
225
|
'worklet';
|
204
226
|
|
205
227
|
var _options$initialVeloc;
|
228
|
+
|
206
229
|
animateDrawer(drawerWidth, (_options$initialVeloc = options.initialVelocity) !== null && _options$initialVeloc !== void 0 ? _options$initialVeloc : 0, options.animationSpeed);
|
207
230
|
}, [animateDrawer, drawerWidth]);
|
208
231
|
const closeDrawer = useCallback((options = {}) => {
|
209
232
|
'worklet';
|
210
233
|
|
211
234
|
var _options$initialVeloc2;
|
235
|
+
|
212
236
|
animateDrawer(0, (_options$initialVeloc2 = options.initialVelocity) !== null && _options$initialVeloc2 !== void 0 ? _options$initialVeloc2 : 0, options.animationSpeed);
|
213
237
|
}, [animateDrawer]);
|
214
238
|
const overlayDismissGesture = useMemo(() => Gesture.Tap().maxDistance(25).onEnd(() => {
|
@@ -229,11 +253,13 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
229
253
|
return Gesture.Pan().activeCursor(activeCursor).mouseButton(mouseButton).hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop).minDistance(drawerOpened ? 100 : 0).activeOffsetX(gestureOrientation * minSwipeDistance).failOffsetY([-15, 15]).simultaneousWithExternalGesture(overlayDismissGesture).enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture).enabled(drawerState !== DrawerState.SETTLING && (drawerOpened ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)).onStart(() => {
|
230
254
|
emitStateChanged(DrawerState.DRAGGING, false);
|
231
255
|
runOnJS(setDrawerState)(DrawerState.DRAGGING);
|
256
|
+
|
232
257
|
if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {
|
233
|
-
runOnJS(
|
258
|
+
runOnJS(dismissKeyboard)();
|
234
259
|
}
|
260
|
+
|
235
261
|
if (hideStatusBar) {
|
236
|
-
runOnJS(
|
262
|
+
runOnJS(setStatusBarHidden)(true, statusBarAnimation);
|
237
263
|
}
|
238
264
|
}).onUpdate(event => {
|
239
265
|
const startedOutsideTranslation = isFromLeft ? interpolate(event.x, [0, drawerWidth, drawerWidth + 1], [0, drawerWidth, drawerWidth]) : interpolate(event.x - containerWidth, [-drawerWidth - 1, -drawerWidth, 0], [drawerWidth, drawerWidth, 0]);
|
@@ -241,9 +267,8 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
241
267
|
const adjustedTranslation = Math.max(drawerOpened ? startedOutsideTranslation : 0, startedInsideTranslation);
|
242
268
|
openValue.value = interpolate(adjustedTranslation, [-drawerWidth, 0, drawerWidth], [1, 0, 1], Extrapolation.CLAMP);
|
243
269
|
}).onEnd(handleRelease);
|
244
|
-
}, [drawerLockMode, openValue, drawerWidth, emitStateChanged, gestureOrientation, handleRelease, edgeHitSlop, fillHitSlop, minSwipeDistance, hideStatusBar, keyboardDismissMode, overlayDismissGesture, drawerOpened, isFromLeft, containerWidth, sideCorrection, drawerState, activeCursor, enableTrackpadTwoFingerGesture, mouseButton, statusBarAnimation]);
|
270
|
+
}, [drawerLockMode, openValue, drawerWidth, emitStateChanged, gestureOrientation, handleRelease, edgeHitSlop, fillHitSlop, minSwipeDistance, hideStatusBar, keyboardDismissMode, overlayDismissGesture, drawerOpened, isFromLeft, containerWidth, sideCorrection, drawerState, activeCursor, enableTrackpadTwoFingerGesture, mouseButton, statusBarAnimation]); // When using RTL, row and row-reverse flex directions are flipped.
|
245
271
|
|
246
|
-
// When using RTL, row and row-reverse flex directions are flipped.
|
247
272
|
const reverseContentDirection = I18nManager.isRTL ? isFromLeft : !isFromLeft;
|
248
273
|
const dynamicDrawerStyles = {
|
249
274
|
backgroundColor: drawerBackgroundColor,
|
@@ -253,6 +278,7 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
253
278
|
if (drawerType === DrawerType.FRONT) {
|
254
279
|
return {};
|
255
280
|
}
|
281
|
+
|
256
282
|
return {
|
257
283
|
transform: [{
|
258
284
|
translateX: interpolate(openValue.value, [0, 1], [0, drawerWidth * sideCorrection], Extrapolation.CLAMP)
|
@@ -263,6 +289,7 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
263
289
|
const closedDrawerOffset = drawerWidth * -sideCorrection;
|
264
290
|
const isBack = drawerType === DrawerType.BACK;
|
265
291
|
const isIdle = drawerState === DrawerState.IDLE;
|
292
|
+
|
266
293
|
if (isBack) {
|
267
294
|
return {
|
268
295
|
transform: [{
|
@@ -271,12 +298,15 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
271
298
|
flexDirection: reverseContentDirection ? 'row-reverse' : 'row'
|
272
299
|
};
|
273
300
|
}
|
301
|
+
|
274
302
|
let translateX = 0;
|
303
|
+
|
275
304
|
if (isIdle) {
|
276
305
|
translateX = drawerOpened ? 0 : closedDrawerOffset;
|
277
306
|
} else {
|
278
307
|
translateX = interpolate(openValue.value, [0, 1], [closedDrawerOffset, 0], Extrapolation.CLAMP);
|
279
308
|
}
|
309
|
+
|
280
310
|
return {
|
281
311
|
transform: [{
|
282
312
|
translateX
|
@@ -318,25 +348,21 @@ const DrawerLayout = /*#__PURE__*/forwardRef(function DrawerLayout(props, ref) {
|
|
318
348
|
});
|
319
349
|
export default DrawerLayout;
|
320
350
|
const styles = StyleSheet.create({
|
321
|
-
drawerContainer: {
|
322
|
-
...StyleSheet.absoluteFillObject,
|
351
|
+
drawerContainer: { ...StyleSheet.absoluteFillObject,
|
323
352
|
zIndex: 1001,
|
324
353
|
flexDirection: 'row'
|
325
354
|
},
|
326
|
-
containerInFront: {
|
327
|
-
...StyleSheet.absoluteFillObject,
|
355
|
+
containerInFront: { ...StyleSheet.absoluteFillObject,
|
328
356
|
zIndex: 1002
|
329
357
|
},
|
330
|
-
containerOnBack: {
|
331
|
-
...StyleSheet.absoluteFillObject
|
358
|
+
containerOnBack: { ...StyleSheet.absoluteFillObject
|
332
359
|
},
|
333
360
|
main: {
|
334
361
|
flex: 1,
|
335
362
|
zIndex: 0,
|
336
363
|
overflow: 'hidden'
|
337
364
|
},
|
338
|
-
overlay: {
|
339
|
-
...StyleSheet.absoluteFillObject,
|
365
|
+
overlay: { ...StyleSheet.absoluteFillObject,
|
340
366
|
zIndex: 1000
|
341
367
|
}
|
342
368
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useState","StyleSheet","Keyboard","StatusBar","I18nManager","Platform","Animated","Extrapolation","interpolate","runOnJS","useAnimatedProps","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","GestureObjects","Gesture","GestureDetector","MouseButton","DRAG_TOSS","DrawerPosition","DrawerState","DrawerType","DrawerLockMode","DrawerKeyboardDismissMode","defaultProps","drawerWidth","drawerPosition","LEFT","drawerType","FRONT","edgeWidth","minSwipeDistance","overlayColor","drawerLockMode","UNLOCKED","enableTrackpadTwoFingerGesture","activeCursor","mouseButton","statusBarAnimation","DrawerLayout","props","ref","containerWidth","setContainerWidth","drawerState","setDrawerState","IDLE","drawerOpened","setDrawerOpened","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","hideStatusBar","keyboardDismissMode","userSelect","enableContextMenu","renderNavigationView","onDrawerSlide","onDrawerClose","onDrawerOpen","onDrawerStateChanged","isFromLeft","sideCorrection","openValue","value","isDrawerOpen","handleContainerLayout","nativeEvent","layout","width","emitStateChanged","newState","drawerWillShow","_runOnJS","drawerAnimatedProps","accessibilityViewIsModal","overlayAnimatedProps","pointerEvents","edgeHitSlop","setEdgeHitSlop","left","right","gestureOrientation","animateDrawer","toValue","initialVelocity","animationSpeed","willShow","SETTLING","setHidden","normalizedToValue","CLAMP","normalizedInitialVelocity","overshootClamping","velocity","mass","damping","stiffness","finished","_runOnJS2","_runOnJS3","handleRelease","event","translationX","dragX","velocityX","x","touchX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","openDrawer","options","_options$initialVeloc","closeDrawer","_options$initialVeloc2","overlayDismissGesture","Tap","maxDistance","onEnd","LOCKED_OPEN","overlayAnimatedStyle","opacity","backgroundColor","fillHitSlop","panGesture","Pan","hitSlop","minDistance","activeOffsetX","failOffsetY","simultaneousWithExternalGesture","enabled","LOCKED_CLOSED","onStart","DRAGGING","ON_DRAG","dismiss","onUpdate","startedOutsideTranslation","startedInsideTranslation","adjustedTranslation","Math","max","reverseContentDirection","isRTL","dynamicDrawerStyles","containerStyles","transform","translateX","drawerAnimatedStyle","closedDrawerOffset","isBack","BACK","isIdle","flexDirection","containerAnimatedProps","importantForAccessibility","OS","undefined","children","createElement","gesture","View","style","styles","main","onLayout","containerOnBack","containerInFront","animatedProps","overlay","drawerContainer","create","absoluteFillObject","zIndex","flex","overflow"],"sources":["ReanimatedDrawerLayout.tsx"],"sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n// It's cross-compatible with all platforms despite\n// `DrawerLayoutAndroid` only being available on android\n\nimport React, {\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n StyleSheet,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n Platform,\n} from 'react-native';\n\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedProps,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n UserSelect,\n ActiveCursor,\n MouseButton,\n HitSlop,\n GestureStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\n\nconst DRAG_TOSS = 0.05;\n\nexport enum DrawerPosition {\n LEFT,\n RIGHT,\n}\n\nexport enum DrawerState {\n IDLE,\n DRAGGING,\n SETTLING,\n}\n\nexport enum DrawerType {\n FRONT,\n BACK,\n SLIDE,\n}\n\nexport enum DrawerLockMode {\n UNLOCKED,\n LOCKED_CLOSED,\n LOCKED_OPEN,\n}\n\nexport enum DrawerKeyboardDismissMode {\n NONE,\n ON_DRAG,\n}\n\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the native android implementation already and is one\n * of the required params. The gesture handler version of DrawerLayout makes it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: SharedValue<number>\n ) => ReactNode;\n\n /**\n * Determines the side from which the drawer will open.\n */\n drawerPosition?: DrawerPosition;\n\n /**\n * Width of the drawer.\n */\n drawerWidth?: number;\n\n /**\n * Background color of the drawer.\n */\n drawerBackgroundColor?: string;\n\n /**\n * Specifies the lock mode of the drawer.\n * Programatic opening/closing isn't affected by the lock mode. Defaults to `UNLOCKED`.\n * - `UNLOCKED` - the drawer will respond to gestures.\n * - `LOCKED_CLOSED` - the drawer will move freely until it settles in a closed position, then the gestures will be disabled.\n * - `LOCKED_OPEN` - the drawer will move freely until it settles in an opened position, then the gestures will be disabled.\n */\n drawerLockMode?: DrawerLockMode;\n\n /**\n * Determines if system keyboard should be closed upon dragging the drawer.\n */\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n\n /**\n * Type of animation that will play when opening the drawer.\n */\n drawerType?: DrawerType;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n /**\n * Minimal distance to swipe before the drawer starts moving.\n */\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default 'rgba(0, 0, 0, 0.7)'\n *\n * Color of the background overlay.\n * Animated from `0%` to `100%` as the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style wrapping the content.\n */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style wrapping the drawer.\n */\n drawerContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n // Implicit `children` prop has been removed in @types/react^18.0.\n /**\n * Elements that will be rendered inside the content view.\n */\n children?: ReactNode | ((openValue?: SharedValue<number>) => ReactNode);\n\n /**\n * @default 'none'\n * Sets whether the text inside both the drawer and the context window can be selected.\n * Values: 'none' | 'text' | 'auto'\n */\n userSelect?: UserSelect;\n\n /**\n * @default 'auto'\n * Sets the displayed cursor pictogram when the drawer is being dragged.\n * Values: see CSS cursor values\n */\n activeCursor?: ActiveCursor;\n\n /**\n * @default 'MouseButton.LEFT'\n * Allows to choose which mouse button should underlying pan handler react to.\n */\n mouseButton?: MouseButton;\n\n /**\n * @default 'false if MouseButton.RIGHT is specified'\n * Allows to enable/disable context menu.\n */\n enableContextMenu?: boolean;\n}\n\nexport type DrawerMovementOption = {\n initialVelocity?: number;\n animationSpeed?: number;\n};\n\nexport interface DrawerLayoutMethods {\n openDrawer: (options?: DrawerMovementOption) => void;\n closeDrawer: (options?: DrawerMovementOption) => void;\n}\n\nconst defaultProps = {\n drawerWidth: 200,\n drawerPosition: DrawerPosition.LEFT,\n drawerType: DrawerType.FRONT,\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: DrawerLockMode.UNLOCKED,\n enableTrackpadTwoFingerGesture: false,\n activeCursor: 'auto' as ActiveCursor,\n mouseButton: MouseButton.LEFT,\n statusBarAnimation: 'slide' as StatusBarAnimation,\n};\n\nconst DrawerLayout = forwardRef<DrawerLayoutMethods, DrawerLayoutProps>(\n function DrawerLayout(props: DrawerLayoutProps, ref) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [drawerState, setDrawerState] = useState<DrawerState>(\n DrawerState.IDLE\n );\n const [drawerOpened, setDrawerOpened] = useState(false);\n\n const {\n drawerPosition = defaultProps.drawerPosition,\n drawerWidth = defaultProps.drawerWidth,\n drawerType = defaultProps.drawerType,\n drawerBackgroundColor,\n drawerContainerStyle,\n contentContainerStyle,\n minSwipeDistance = defaultProps.minSwipeDistance,\n edgeWidth = defaultProps.edgeWidth,\n drawerLockMode = defaultProps.drawerLockMode,\n overlayColor = defaultProps.overlayColor,\n enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture,\n activeCursor = defaultProps.activeCursor,\n mouseButton = defaultProps.mouseButton,\n statusBarAnimation = defaultProps.statusBarAnimation,\n hideStatusBar,\n keyboardDismissMode,\n userSelect,\n enableContextMenu,\n renderNavigationView,\n onDrawerSlide,\n onDrawerClose,\n onDrawerOpen,\n onDrawerStateChanged,\n } = props;\n\n const isFromLeft = drawerPosition === DrawerPosition.LEFT;\n\n const sideCorrection = isFromLeft ? 1 : -1;\n\n // While closing the drawer when user starts gesture in the greyed out part of the window,\n // we want the drawer to follow only once the finger reaches the edge of the drawer.\n // See the diagram for reference. * = starting finger position, < = current finger position\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|..<*..| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n\n const openValue = useSharedValue<number>(0);\n\n useDerivedValue(() => {\n onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);\n }, []);\n\n const isDrawerOpen = useSharedValue(false);\n\n const handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n setContainerWidth(nativeEvent.layout.width);\n };\n\n const emitStateChanged = useCallback(\n (newState: DrawerState, drawerWillShow: boolean) => {\n 'worklet';\n onDrawerStateChanged &&\n runOnJS(onDrawerStateChanged)?.(newState, drawerWillShow);\n },\n [onDrawerStateChanged]\n );\n\n const drawerAnimatedProps = useAnimatedProps(() => ({\n accessibilityViewIsModal: isDrawerOpen.value,\n }));\n\n const overlayAnimatedProps = useAnimatedProps(() => ({\n pointerEvents: isDrawerOpen.value ? ('auto' as const) : ('none' as const),\n }));\n\n // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth\n // This way it can be swiped open even when it's hidden\n const [edgeHitSlop, setEdgeHitSlop] = useState<HitSlop>(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n\n // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise\n const gestureOrientation = useMemo(\n () => sideCorrection * (drawerOpened ? -1 : 1),\n [sideCorrection, drawerOpened]\n );\n\n useEffect(() => {\n setEdgeHitSlop(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n }, [isFromLeft, edgeWidth]);\n\n const animateDrawer = useCallback(\n (toValue: number, initialVelocity: number, animationSpeed?: number) => {\n 'worklet';\n const willShow = toValue !== 0;\n isDrawerOpen.value = willShow;\n\n emitStateChanged(DrawerState.SETTLING, willShow);\n runOnJS(setDrawerState)(DrawerState.SETTLING);\n\n if (hideStatusBar) {\n runOnJS(StatusBar.setHidden)(willShow, statusBarAnimation);\n }\n\n const normalizedToValue = interpolate(\n toValue,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n const normalizedInitialVelocity = interpolate(\n initialVelocity,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n openValue.value = withSpring(\n normalizedToValue,\n {\n overshootClamping: true,\n velocity: normalizedInitialVelocity,\n mass: animationSpeed ? 1 / animationSpeed : 1,\n damping: 40,\n stiffness: 500,\n },\n (finished) => {\n if (finished) {\n emitStateChanged(DrawerState.IDLE, willShow);\n runOnJS(setDrawerOpened)(willShow);\n runOnJS(setDrawerState)(DrawerState.IDLE);\n if (willShow) {\n onDrawerOpen && runOnJS(onDrawerOpen)?.();\n } else {\n onDrawerClose && runOnJS(onDrawerClose)?.();\n }\n }\n }\n );\n },\n [\n openValue,\n emitStateChanged,\n isDrawerOpen,\n hideStatusBar,\n onDrawerClose,\n onDrawerOpen,\n drawerWidth,\n statusBarAnimation,\n ]\n );\n\n const handleRelease = useCallback(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n 'worklet';\n let { translationX: dragX, velocityX, x: touchX } = event;\n\n if (drawerPosition !== DrawerPosition.LEFT) {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === DrawerType.FRONT) {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;\n }\n\n const startOffsetX =\n dragX +\n dragOffsetBasedOnStart +\n (isDrawerOpen.value ? drawerWidth : 0);\n\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth / 2;\n\n if (shouldOpen) {\n animateDrawer(drawerWidth, velocityX);\n } else {\n animateDrawer(0, velocityX);\n }\n },\n [\n animateDrawer,\n containerWidth,\n drawerPosition,\n drawerType,\n drawerWidth,\n isDrawerOpen,\n ]\n );\n\n const openDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(\n drawerWidth,\n options.initialVelocity ?? 0,\n options.animationSpeed\n );\n },\n [animateDrawer, drawerWidth]\n );\n\n const closeDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(0, options.initialVelocity ?? 0, options.animationSpeed);\n },\n [animateDrawer]\n );\n\n const overlayDismissGesture = useMemo(\n () =>\n Gesture.Tap()\n .maxDistance(25)\n .onEnd(() => {\n if (\n isDrawerOpen.value &&\n drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n ) {\n closeDrawer();\n }\n }),\n [closeDrawer, isDrawerOpen, drawerLockMode]\n );\n\n const overlayAnimatedStyle = useAnimatedStyle(() => ({\n opacity: openValue.value,\n backgroundColor: overlayColor,\n }));\n\n const fillHitSlop = useMemo(\n () => (isFromLeft ? { left: drawerWidth } : { right: drawerWidth }),\n [drawerWidth, isFromLeft]\n );\n\n const panGesture = useMemo(() => {\n return Gesture.Pan()\n .activeCursor(activeCursor)\n .mouseButton(mouseButton)\n .hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop)\n .minDistance(drawerOpened ? 100 : 0)\n .activeOffsetX(gestureOrientation * minSwipeDistance)\n .failOffsetY([-15, 15])\n .simultaneousWithExternalGesture(overlayDismissGesture)\n .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)\n .enabled(\n drawerState !== DrawerState.SETTLING &&\n (drawerOpened\n ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)\n )\n .onStart(() => {\n emitStateChanged(DrawerState.DRAGGING, false);\n runOnJS(setDrawerState)(DrawerState.DRAGGING);\n if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {\n runOnJS(Keyboard.dismiss)();\n }\n if (hideStatusBar) {\n runOnJS(StatusBar.setHidden)(true, statusBarAnimation);\n }\n })\n .onUpdate((event) => {\n const startedOutsideTranslation = isFromLeft\n ? interpolate(\n event.x,\n [0, drawerWidth, drawerWidth + 1],\n [0, drawerWidth, drawerWidth]\n )\n : interpolate(\n event.x - containerWidth,\n [-drawerWidth - 1, -drawerWidth, 0],\n [drawerWidth, drawerWidth, 0]\n );\n\n const startedInsideTranslation =\n sideCorrection *\n (event.translationX +\n (drawerOpened ? drawerWidth * -gestureOrientation : 0));\n\n const adjustedTranslation = Math.max(\n drawerOpened ? startedOutsideTranslation : 0,\n startedInsideTranslation\n );\n\n openValue.value = interpolate(\n adjustedTranslation,\n [-drawerWidth, 0, drawerWidth],\n [1, 0, 1],\n Extrapolation.CLAMP\n );\n })\n .onEnd(handleRelease);\n }, [\n drawerLockMode,\n openValue,\n drawerWidth,\n emitStateChanged,\n gestureOrientation,\n handleRelease,\n edgeHitSlop,\n fillHitSlop,\n minSwipeDistance,\n hideStatusBar,\n keyboardDismissMode,\n overlayDismissGesture,\n drawerOpened,\n isFromLeft,\n containerWidth,\n sideCorrection,\n drawerState,\n activeCursor,\n enableTrackpadTwoFingerGesture,\n mouseButton,\n statusBarAnimation,\n ]);\n\n // When using RTL, row and row-reverse flex directions are flipped.\n const reverseContentDirection = I18nManager.isRTL\n ? isFromLeft\n : !isFromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n\n const containerStyles = useAnimatedStyle(() => {\n if (drawerType === DrawerType.FRONT) {\n return {};\n }\n\n return {\n transform: [\n {\n translateX: interpolate(\n openValue.value,\n [0, 1],\n [0, drawerWidth * sideCorrection],\n Extrapolation.CLAMP\n ),\n },\n ],\n };\n });\n\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const closedDrawerOffset = drawerWidth * -sideCorrection;\n const isBack = drawerType === DrawerType.BACK;\n const isIdle = drawerState === DrawerState.IDLE;\n\n if (isBack) {\n return {\n transform: [{ translateX: 0 }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n }\n\n let translateX = 0;\n\n if (isIdle) {\n translateX = drawerOpened ? 0 : closedDrawerOffset;\n } else {\n translateX = interpolate(\n openValue.value,\n [0, 1],\n [closedDrawerOffset, 0],\n Extrapolation.CLAMP\n );\n }\n\n return {\n transform: [{ translateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n });\n\n const containerAnimatedProps = useAnimatedProps(() => ({\n importantForAccessibility:\n Platform.OS === 'android'\n ? isDrawerOpen.value\n ? ('no-hide-descendants' as const)\n : ('yes' as const)\n : undefined,\n }));\n\n const children =\n typeof props.children === 'function'\n ? props.children(openValue) // renderer function\n : props.children;\n\n useImperativeHandle(\n ref,\n () => ({\n openDrawer,\n closeDrawer,\n }),\n [openDrawer, closeDrawer]\n );\n\n return (\n <GestureDetector\n gesture={panGesture}\n userSelect={userSelect}\n enableContextMenu={enableContextMenu}>\n <Animated.View style={styles.main} onLayout={handleContainerLayout}>\n <GestureDetector gesture={overlayDismissGesture}>\n <Animated.View\n style={[\n drawerType === DrawerType.FRONT\n ? styles.containerOnBack\n : styles.containerInFront,\n containerStyles,\n contentContainerStyle,\n ]}\n animatedProps={containerAnimatedProps}>\n {children}\n <Animated.View\n animatedProps={overlayAnimatedProps}\n style={[styles.overlay, overlayAnimatedStyle]}\n />\n </Animated.View>\n </GestureDetector>\n <Animated.View\n pointerEvents=\"box-none\"\n animatedProps={drawerAnimatedProps}\n style={[\n styles.drawerContainer,\n drawerAnimatedStyle,\n drawerContainerStyle,\n ]}>\n <Animated.View style={dynamicDrawerStyles}>\n {renderNavigationView(openValue)}\n </Animated.View>\n </Animated.View>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default DrawerLayout;\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"sources":["ReanimatedDrawerLayout.tsx"],"names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useState","StyleSheet","Keyboard","StatusBar","I18nManager","Platform","Animated","Extrapolation","interpolate","runOnJS","useAnimatedProps","useAnimatedStyle","useDerivedValue","useSharedValue","withSpring","GestureObjects","Gesture","GestureDetector","MouseButton","DRAG_TOSS","DrawerPosition","DrawerState","DrawerType","DrawerLockMode","DrawerKeyboardDismissMode","defaultProps","drawerWidth","drawerPosition","LEFT","drawerType","FRONT","edgeWidth","minSwipeDistance","overlayColor","drawerLockMode","UNLOCKED","enableTrackpadTwoFingerGesture","activeCursor","mouseButton","statusBarAnimation","setStatusBarHidden","setHidden","dismissKeyboard","dismiss","DrawerLayout","props","ref","containerWidth","setContainerWidth","drawerState","setDrawerState","IDLE","drawerOpened","setDrawerOpened","drawerBackgroundColor","drawerContainerStyle","contentContainerStyle","hideStatusBar","keyboardDismissMode","userSelect","enableContextMenu","renderNavigationView","onDrawerSlide","onDrawerClose","onDrawerOpen","onDrawerStateChanged","animationSpeed","animationSpeedProp","isFromLeft","sideCorrection","openValue","value","isDrawerOpen","handleContainerLayout","nativeEvent","layout","width","emitStateChanged","newState","drawerWillShow","drawerAnimatedProps","accessibilityViewIsModal","overlayAnimatedProps","pointerEvents","edgeHitSlop","setEdgeHitSlop","left","right","gestureOrientation","animateDrawer","toValue","initialVelocity","willShow","SETTLING","normalizedToValue","CLAMP","normalizedInitialVelocity","overshootClamping","velocity","mass","damping","stiffness","finished","handleRelease","event","translationX","dragX","velocityX","x","touchX","gestureStartX","dragOffsetBasedOnStart","startOffsetX","projOffsetX","shouldOpen","openDrawer","options","closeDrawer","overlayDismissGesture","Tap","maxDistance","onEnd","LOCKED_OPEN","overlayAnimatedStyle","opacity","backgroundColor","fillHitSlop","panGesture","Pan","hitSlop","minDistance","activeOffsetX","failOffsetY","simultaneousWithExternalGesture","enabled","LOCKED_CLOSED","onStart","DRAGGING","ON_DRAG","onUpdate","startedOutsideTranslation","startedInsideTranslation","adjustedTranslation","Math","max","reverseContentDirection","isRTL","dynamicDrawerStyles","containerStyles","transform","translateX","drawerAnimatedStyle","closedDrawerOffset","isBack","BACK","isIdle","flexDirection","containerAnimatedProps","importantForAccessibility","OS","undefined","children","styles","main","containerOnBack","containerInFront","overlay","drawerContainer","create","absoluteFillObject","zIndex","flex","overflow"],"mappings":"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","sourcesContent":["// This component is based on RN's DrawerLayoutAndroid API\n// It's cross-compatible with all platforms despite\n// `DrawerLayoutAndroid` only being available on android\n\nimport React, {\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport {\n StyleSheet,\n Keyboard,\n StatusBar,\n I18nManager,\n StatusBarAnimation,\n StyleProp,\n ViewStyle,\n LayoutChangeEvent,\n Platform,\n} from 'react-native';\n\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedProps,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\n\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n UserSelect,\n ActiveCursor,\n MouseButton,\n HitSlop,\n GestureStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\n\nconst DRAG_TOSS = 0.05;\n\nexport enum DrawerPosition {\n LEFT,\n RIGHT,\n}\n\nexport enum DrawerState {\n IDLE,\n DRAGGING,\n SETTLING,\n}\n\nexport enum DrawerType {\n FRONT,\n BACK,\n SLIDE,\n}\n\nexport enum DrawerLockMode {\n UNLOCKED,\n LOCKED_CLOSED,\n LOCKED_OPEN,\n}\n\nexport enum DrawerKeyboardDismissMode {\n NONE,\n ON_DRAG,\n}\n\nexport interface DrawerLayoutProps {\n /**\n * This attribute is present in the native android implementation already and is one\n * of the required params. The gesture handler version of DrawerLayout makes it\n * possible for the function passed as `renderNavigationView` to take an\n * Animated value as a parameter that indicates the progress of drawer\n * opening/closing animation (progress value is 0 when closed and 1 when\n * opened). This can be used by the drawer component to animated its children\n * while the drawer is opening or closing.\n */\n renderNavigationView: (\n progressAnimatedValue: SharedValue<number>\n ) => ReactNode;\n\n /**\n * Determines the side from which the drawer will open.\n */\n drawerPosition?: DrawerPosition;\n\n /**\n * Width of the drawer.\n */\n drawerWidth?: number;\n\n /**\n * Background color of the drawer.\n */\n drawerBackgroundColor?: string;\n\n /**\n * Specifies the lock mode of the drawer.\n * Programatic opening/closing isn't affected by the lock mode. Defaults to `UNLOCKED`.\n * - `UNLOCKED` - the drawer will respond to gestures.\n * - `LOCKED_CLOSED` - the drawer will move freely until it settles in a closed position, then the gestures will be disabled.\n * - `LOCKED_OPEN` - the drawer will move freely until it settles in an opened position, then the gestures will be disabled.\n */\n drawerLockMode?: DrawerLockMode;\n\n /**\n * Determines if system keyboard should be closed upon dragging the drawer.\n */\n keyboardDismissMode?: DrawerKeyboardDismissMode;\n\n /**\n * Called when the drawer is closed.\n */\n onDrawerClose?: () => void;\n\n /**\n * Called when the drawer is opened.\n */\n onDrawerOpen?: () => void;\n\n /**\n * Called when the status of the drawer changes.\n */\n onDrawerStateChanged?: (\n newState: DrawerState,\n drawerWillShow: boolean\n ) => void;\n\n /**\n * Type of animation that will play when opening the drawer.\n */\n drawerType?: DrawerType;\n\n /**\n * Speed of animation that will play when letting go, or dismissing the drawer.\n * This will also be the default animation speed for programatic controlls.\n */\n animationSpeed?: number;\n\n /**\n * Defines how far from the edge of the content view the gesture should\n * activate.\n */\n edgeWidth?: number;\n\n /**\n * Minimal distance to swipe before the drawer starts moving.\n */\n minSwipeDistance?: number;\n\n /**\n * When set to true Drawer component will use\n * {@link https://reactnative.dev/docs/statusbar StatusBar} API to hide the OS\n * status bar whenever the drawer is pulled or when its in an \"open\" state.\n */\n hideStatusBar?: boolean;\n\n /**\n * @default 'slide'\n *\n * Can be used when hideStatusBar is set to true and will select the animation\n * used for hiding/showing the status bar. See\n * {@link https://reactnative.dev/docs/statusbar StatusBar} documentation for\n * more details\n */\n statusBarAnimation?: StatusBarAnimation;\n\n /**\n * @default 'rgba(0, 0, 0, 0.7)'\n *\n * Color of the background overlay.\n * Animated from `0%` to `100%` as the drawer opens.\n */\n overlayColor?: string;\n\n /**\n * Style wrapping the content.\n */\n contentContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style wrapping the drawer.\n */\n drawerContainerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n onDrawerSlide?: (position: number) => void;\n\n // Implicit `children` prop has been removed in @types/react^18.0.\n /**\n * Elements that will be rendered inside the content view.\n */\n children?: ReactNode | ((openValue?: SharedValue<number>) => ReactNode);\n\n /**\n * @default 'none'\n * Sets whether the text inside both the drawer and the context window can be selected.\n * Values: 'none' | 'text' | 'auto'\n */\n userSelect?: UserSelect;\n\n /**\n * @default 'auto'\n * Sets the displayed cursor pictogram when the drawer is being dragged.\n * Values: see CSS cursor values\n */\n activeCursor?: ActiveCursor;\n\n /**\n * @default 'MouseButton.LEFT'\n * Allows to choose which mouse button should underlying pan handler react to.\n */\n mouseButton?: MouseButton;\n\n /**\n * @default 'false if MouseButton.RIGHT is specified'\n * Allows to enable/disable context menu.\n */\n enableContextMenu?: boolean;\n}\n\nexport type DrawerMovementOption = {\n initialVelocity?: number;\n animationSpeed?: number;\n};\n\nexport interface DrawerLayoutMethods {\n openDrawer: (options?: DrawerMovementOption) => void;\n closeDrawer: (options?: DrawerMovementOption) => void;\n}\n\nconst defaultProps = {\n drawerWidth: 200,\n drawerPosition: DrawerPosition.LEFT,\n drawerType: DrawerType.FRONT,\n edgeWidth: 20,\n minSwipeDistance: 3,\n overlayColor: 'rgba(0, 0, 0, 0.7)',\n drawerLockMode: DrawerLockMode.UNLOCKED,\n enableTrackpadTwoFingerGesture: false,\n activeCursor: 'auto' as ActiveCursor,\n mouseButton: MouseButton.LEFT,\n statusBarAnimation: 'slide' as StatusBarAnimation,\n};\n\n// StatusBar.setHidden and Keyboard.dismiss cannot be directly referenced in worklets.\nconst setStatusBarHidden = StatusBar.setHidden;\nconst dismissKeyboard = Keyboard.dismiss;\n\nconst DrawerLayout = forwardRef<DrawerLayoutMethods, DrawerLayoutProps>(\n function DrawerLayout(props: DrawerLayoutProps, ref) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [drawerState, setDrawerState] = useState<DrawerState>(\n DrawerState.IDLE\n );\n const [drawerOpened, setDrawerOpened] = useState(false);\n\n const {\n drawerPosition = defaultProps.drawerPosition,\n drawerWidth = defaultProps.drawerWidth,\n drawerType = defaultProps.drawerType,\n drawerBackgroundColor,\n drawerContainerStyle,\n contentContainerStyle,\n minSwipeDistance = defaultProps.minSwipeDistance,\n edgeWidth = defaultProps.edgeWidth,\n drawerLockMode = defaultProps.drawerLockMode,\n overlayColor = defaultProps.overlayColor,\n enableTrackpadTwoFingerGesture = defaultProps.enableTrackpadTwoFingerGesture,\n activeCursor = defaultProps.activeCursor,\n mouseButton = defaultProps.mouseButton,\n statusBarAnimation = defaultProps.statusBarAnimation,\n hideStatusBar,\n keyboardDismissMode,\n userSelect,\n enableContextMenu,\n renderNavigationView,\n onDrawerSlide,\n onDrawerClose,\n onDrawerOpen,\n onDrawerStateChanged,\n animationSpeed: animationSpeedProp,\n } = props;\n\n const isFromLeft = drawerPosition === DrawerPosition.LEFT;\n\n const sideCorrection = isFromLeft ? 1 : -1;\n\n // While closing the drawer when user starts gesture in the greyed out part of the window,\n // we want the drawer to follow only once the finger reaches the edge of the drawer.\n // See the diagram for reference. * = starting finger position, < = current finger position\n // 1) +---------------+ 2) +---------------+ 3) +---------------+ 4) +---------------+\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|..<*..| |XXXXXXXX|.<-*..| |XXXXXXXX|<--*..| |XXXXX|<-----*..|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // |XXXXXXXX|......| |XXXXXXXX|......| |XXXXXXXX|......| |XXXXX|.........|\n // +---------------+ +---------------+ +---------------+ +---------------+\n\n const openValue = useSharedValue<number>(0);\n\n useDerivedValue(() => {\n onDrawerSlide && runOnJS(onDrawerSlide)(openValue.value);\n }, []);\n\n const isDrawerOpen = useSharedValue(false);\n\n const handleContainerLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n setContainerWidth(nativeEvent.layout.width);\n };\n\n const emitStateChanged = useCallback(\n (newState: DrawerState, drawerWillShow: boolean) => {\n 'worklet';\n onDrawerStateChanged &&\n runOnJS(onDrawerStateChanged)?.(newState, drawerWillShow);\n },\n [onDrawerStateChanged]\n );\n\n const drawerAnimatedProps = useAnimatedProps(() => ({\n accessibilityViewIsModal: isDrawerOpen.value,\n }));\n\n const overlayAnimatedProps = useAnimatedProps(() => ({\n pointerEvents: isDrawerOpen.value ? ('auto' as const) : ('none' as const),\n }));\n\n // While the drawer is hidden, it's hitSlop overflows onto the main view by edgeWidth\n // This way it can be swiped open even when it's hidden\n const [edgeHitSlop, setEdgeHitSlop] = useState<HitSlop>(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n\n // gestureOrientation is 1 if the gesture is expected to move from left to right and -1 otherwise\n const gestureOrientation = useMemo(\n () => sideCorrection * (drawerOpened ? -1 : 1),\n [sideCorrection, drawerOpened]\n );\n\n useEffect(() => {\n setEdgeHitSlop(\n isFromLeft\n ? { left: 0, width: edgeWidth }\n : { right: 0, width: edgeWidth }\n );\n }, [isFromLeft, edgeWidth]);\n\n const animateDrawer = useCallback(\n (toValue: number, initialVelocity: number, animationSpeed?: number) => {\n 'worklet';\n const willShow = toValue !== 0;\n isDrawerOpen.value = willShow;\n\n emitStateChanged(DrawerState.SETTLING, willShow);\n runOnJS(setDrawerState)(DrawerState.SETTLING);\n\n if (hideStatusBar) {\n runOnJS(setStatusBarHidden)(willShow, statusBarAnimation);\n }\n\n const normalizedToValue = interpolate(\n toValue,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n const normalizedInitialVelocity = interpolate(\n initialVelocity,\n [0, drawerWidth],\n [0, 1],\n Extrapolation.CLAMP\n );\n\n openValue.value = withSpring(\n normalizedToValue,\n {\n overshootClamping: true,\n velocity: normalizedInitialVelocity,\n mass: animationSpeed\n ? 1 / animationSpeed\n : 1 / (animationSpeedProp ?? 1),\n damping: 40,\n stiffness: 500,\n },\n (finished) => {\n if (finished) {\n emitStateChanged(DrawerState.IDLE, willShow);\n runOnJS(setDrawerOpened)(willShow);\n runOnJS(setDrawerState)(DrawerState.IDLE);\n if (willShow) {\n onDrawerOpen && runOnJS(onDrawerOpen)?.();\n } else {\n onDrawerClose && runOnJS(onDrawerClose)?.();\n }\n }\n }\n );\n },\n [\n openValue,\n emitStateChanged,\n isDrawerOpen,\n hideStatusBar,\n onDrawerClose,\n onDrawerOpen,\n drawerWidth,\n statusBarAnimation,\n ]\n );\n\n const handleRelease = useCallback(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n 'worklet';\n let { translationX: dragX, velocityX, x: touchX } = event;\n\n if (drawerPosition !== DrawerPosition.LEFT) {\n // See description in _updateAnimatedEvent about why events are flipped\n // for right-side drawer\n dragX = -dragX;\n touchX = containerWidth - touchX;\n velocityX = -velocityX;\n }\n\n const gestureStartX = touchX - dragX;\n let dragOffsetBasedOnStart = 0;\n\n if (drawerType === DrawerType.FRONT) {\n dragOffsetBasedOnStart =\n gestureStartX > drawerWidth ? gestureStartX - drawerWidth : 0;\n }\n\n const startOffsetX =\n dragX +\n dragOffsetBasedOnStart +\n (isDrawerOpen.value ? drawerWidth : 0);\n\n const projOffsetX = startOffsetX + DRAG_TOSS * velocityX;\n\n const shouldOpen = projOffsetX > drawerWidth / 2;\n\n if (shouldOpen) {\n animateDrawer(drawerWidth, velocityX);\n } else {\n animateDrawer(0, velocityX);\n }\n },\n [\n animateDrawer,\n containerWidth,\n drawerPosition,\n drawerType,\n drawerWidth,\n isDrawerOpen,\n ]\n );\n\n const openDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(\n drawerWidth,\n options.initialVelocity ?? 0,\n options.animationSpeed\n );\n },\n [animateDrawer, drawerWidth]\n );\n\n const closeDrawer = useCallback(\n (options: DrawerMovementOption = {}) => {\n 'worklet';\n animateDrawer(0, options.initialVelocity ?? 0, options.animationSpeed);\n },\n [animateDrawer]\n );\n\n const overlayDismissGesture = useMemo(\n () =>\n Gesture.Tap()\n .maxDistance(25)\n .onEnd(() => {\n if (\n isDrawerOpen.value &&\n drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n ) {\n closeDrawer();\n }\n }),\n [closeDrawer, isDrawerOpen, drawerLockMode]\n );\n\n const overlayAnimatedStyle = useAnimatedStyle(() => ({\n opacity: openValue.value,\n backgroundColor: overlayColor,\n }));\n\n const fillHitSlop = useMemo(\n () => (isFromLeft ? { left: drawerWidth } : { right: drawerWidth }),\n [drawerWidth, isFromLeft]\n );\n\n const panGesture = useMemo(() => {\n return Gesture.Pan()\n .activeCursor(activeCursor)\n .mouseButton(mouseButton)\n .hitSlop(drawerOpened ? fillHitSlop : edgeHitSlop)\n .minDistance(drawerOpened ? 100 : 0)\n .activeOffsetX(gestureOrientation * minSwipeDistance)\n .failOffsetY([-15, 15])\n .simultaneousWithExternalGesture(overlayDismissGesture)\n .enableTrackpadTwoFingerGesture(enableTrackpadTwoFingerGesture)\n .enabled(\n drawerState !== DrawerState.SETTLING &&\n (drawerOpened\n ? drawerLockMode !== DrawerLockMode.LOCKED_OPEN\n : drawerLockMode !== DrawerLockMode.LOCKED_CLOSED)\n )\n .onStart(() => {\n emitStateChanged(DrawerState.DRAGGING, false);\n runOnJS(setDrawerState)(DrawerState.DRAGGING);\n if (keyboardDismissMode === DrawerKeyboardDismissMode.ON_DRAG) {\n runOnJS(dismissKeyboard)();\n }\n if (hideStatusBar) {\n runOnJS(setStatusBarHidden)(true, statusBarAnimation);\n }\n })\n .onUpdate((event) => {\n const startedOutsideTranslation = isFromLeft\n ? interpolate(\n event.x,\n [0, drawerWidth, drawerWidth + 1],\n [0, drawerWidth, drawerWidth]\n )\n : interpolate(\n event.x - containerWidth,\n [-drawerWidth - 1, -drawerWidth, 0],\n [drawerWidth, drawerWidth, 0]\n );\n\n const startedInsideTranslation =\n sideCorrection *\n (event.translationX +\n (drawerOpened ? drawerWidth * -gestureOrientation : 0));\n\n const adjustedTranslation = Math.max(\n drawerOpened ? startedOutsideTranslation : 0,\n startedInsideTranslation\n );\n\n openValue.value = interpolate(\n adjustedTranslation,\n [-drawerWidth, 0, drawerWidth],\n [1, 0, 1],\n Extrapolation.CLAMP\n );\n })\n .onEnd(handleRelease);\n }, [\n drawerLockMode,\n openValue,\n drawerWidth,\n emitStateChanged,\n gestureOrientation,\n handleRelease,\n edgeHitSlop,\n fillHitSlop,\n minSwipeDistance,\n hideStatusBar,\n keyboardDismissMode,\n overlayDismissGesture,\n drawerOpened,\n isFromLeft,\n containerWidth,\n sideCorrection,\n drawerState,\n activeCursor,\n enableTrackpadTwoFingerGesture,\n mouseButton,\n statusBarAnimation,\n ]);\n\n // When using RTL, row and row-reverse flex directions are flipped.\n const reverseContentDirection = I18nManager.isRTL\n ? isFromLeft\n : !isFromLeft;\n\n const dynamicDrawerStyles = {\n backgroundColor: drawerBackgroundColor,\n width: drawerWidth,\n };\n\n const containerStyles = useAnimatedStyle(() => {\n if (drawerType === DrawerType.FRONT) {\n return {};\n }\n\n return {\n transform: [\n {\n translateX: interpolate(\n openValue.value,\n [0, 1],\n [0, drawerWidth * sideCorrection],\n Extrapolation.CLAMP\n ),\n },\n ],\n };\n });\n\n const drawerAnimatedStyle = useAnimatedStyle(() => {\n const closedDrawerOffset = drawerWidth * -sideCorrection;\n const isBack = drawerType === DrawerType.BACK;\n const isIdle = drawerState === DrawerState.IDLE;\n\n if (isBack) {\n return {\n transform: [{ translateX: 0 }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n }\n\n let translateX = 0;\n\n if (isIdle) {\n translateX = drawerOpened ? 0 : closedDrawerOffset;\n } else {\n translateX = interpolate(\n openValue.value,\n [0, 1],\n [closedDrawerOffset, 0],\n Extrapolation.CLAMP\n );\n }\n\n return {\n transform: [{ translateX }],\n flexDirection: reverseContentDirection ? 'row-reverse' : 'row',\n };\n });\n\n const containerAnimatedProps = useAnimatedProps(() => ({\n importantForAccessibility:\n Platform.OS === 'android'\n ? isDrawerOpen.value\n ? ('no-hide-descendants' as const)\n : ('yes' as const)\n : undefined,\n }));\n\n const children =\n typeof props.children === 'function'\n ? props.children(openValue) // renderer function\n : props.children;\n\n useImperativeHandle(\n ref,\n () => ({\n openDrawer,\n closeDrawer,\n }),\n [openDrawer, closeDrawer]\n );\n\n return (\n <GestureDetector\n gesture={panGesture}\n userSelect={userSelect}\n enableContextMenu={enableContextMenu}>\n <Animated.View style={styles.main} onLayout={handleContainerLayout}>\n <GestureDetector gesture={overlayDismissGesture}>\n <Animated.View\n style={[\n drawerType === DrawerType.FRONT\n ? styles.containerOnBack\n : styles.containerInFront,\n containerStyles,\n contentContainerStyle,\n ]}\n animatedProps={containerAnimatedProps}>\n {children}\n <Animated.View\n animatedProps={overlayAnimatedProps}\n style={[styles.overlay, overlayAnimatedStyle]}\n />\n </Animated.View>\n </GestureDetector>\n <Animated.View\n pointerEvents=\"box-none\"\n animatedProps={drawerAnimatedProps}\n style={[\n styles.drawerContainer,\n drawerAnimatedStyle,\n drawerContainerStyle,\n ]}>\n <Animated.View style={dynamicDrawerStyles}>\n {renderNavigationView(openValue)}\n </Animated.View>\n </Animated.View>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default DrawerLayout;\n\nconst styles = StyleSheet.create({\n drawerContainer: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1001,\n flexDirection: 'row',\n },\n containerInFront: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1002,\n },\n containerOnBack: {\n ...StyleSheet.absoluteFillObject,\n },\n main: {\n flex: 1,\n zIndex: 0,\n overflow: 'hidden',\n },\n overlay: {\n ...StyleSheet.absoluteFillObject,\n zIndex: 1000,\n },\n});\n"]}
|