UNPKG

@attio/react-native-bottom-sheet-toolbox

Version:
60 lines (58 loc) 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useBottomSheetKeyboardDismiss = useBottomSheetKeyboardDismiss; var _reactNative = require("react-native"); var _reactNativeReanimated = require("react-native-reanimated"); var _context = require("../context"); var _utils = require("../utils"); var _useBottomSheetDirection = require("./use-bottom-sheet-direction"); const dismiss = () => { _reactNative.Keyboard.dismiss(); }; /** * Dismiss the keyboard if the bottom sheet moves downwardly beneath the keyboard. */ function useBottomSheetKeyboardDismiss(extraBuffer) { const { isReadySharedValue, currentPositionSharedValue, childrenHeightSharedValue, wrapperHeightSharedValue, footerHeightSharedValue } = (0, _context.useBottomSheetToolboxInternalContext)(); const keyboardHeightSharedValue = (0, _context.useKeyboardHeightSharedValue)(); const keyboardProgressSharedValue = (0, _context.useKeyboardProgressSharedValue)(); const directionSharedValue = (0, _useBottomSheetDirection.useBottomSheetDirection)(); (0, _reactNativeReanimated.useAnimatedReaction)(() => { if (!isReadySharedValue.get() || keyboardProgressSharedValue.get() !== 1) { return null; } const normalizedBuffer = extraBuffer ? (0, _utils.normalizeSheetPosition)({ sheetPosition: extraBuffer, childrenHeightSharedValue, wrapperHeightSharedValue, footerHeightSharedValue }) : 0; if (normalizedBuffer === null) return null; const keyboardDismissTriggerHeight = keyboardHeightSharedValue.get() + normalizedBuffer; return { keyboardDismissTriggerHeight, currentPosition: currentPositionSharedValue.get(), direction: directionSharedValue.get() }; }, result => { if (result === null) return; const { keyboardDismissTriggerHeight, currentPosition, direction } = result; const shouldDismiss = currentPosition < keyboardDismissTriggerHeight && direction < 0; if (shouldDismiss) { (0, _reactNativeReanimated.runOnJS)(dismiss)(); } }, [extraBuffer, isReadySharedValue, currentPositionSharedValue, childrenHeightSharedValue, wrapperHeightSharedValue, directionSharedValue, keyboardHeightSharedValue, keyboardProgressSharedValue, footerHeightSharedValue]); } //# sourceMappingURL=use-bottom-sheet-keyboard-dismiss.js.map