@attio/react-native-bottom-sheet-toolbox
Version:
60 lines (58 loc) • 2.38 kB
JavaScript
;
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