UNPKG

@good-react-native/keyboard-avoider

Version:

A package for *easily* creating the keyboard avoiding behavior your want.

60 lines (53 loc) 1.32 kB
import {TextInput} from 'react-native'; import Animated, {Easing} from 'react-native-reanimated'; export async function measureFocusedInputBottomYAsync() { return new Promise<number>(resolve => { const input = TextInput.State.currentlyFocusedInput(); if (!input) return; input.measure((x, y, width, height, pageX, pageY) => { resolve(pageY + height); }); }); } export function measureFocusedInputBottomY( callback: (bottomY: number) => void, ) { const input = TextInput.State.currentlyFocusedInput(); if (!input) return; input.measure((x, y, width, height, pageX, pageY) => { callback(pageY + height); }); } export function measureInputBottomYAsync() { return new Promise<number>(resolve => { measureFocusedInputBottomY(resolve); }); } export function calcAndroidSystemPan({ keyboardEndY, inputBottomY, }: { keyboardEndY: number; inputBottomY: number; }) { const delta = inputBottomY - keyboardEndY; return Math.max(0, delta); } export function closeAnimation( duration: number, easing: Animated.EasingFunction, ) { return { duration: duration + 50, easing: Easing.out(easing), }; } export function openAnimation( duration: number, easing: Animated.EasingFunction, ) { return { duration, easing: Easing.out(easing), }; }