react-native-keyboard-controller
Version:
Keyboard manager which works in identical way on both iOS and Android
54 lines • 1.65 kB
JavaScript
import { useEffect, useLayoutEffect } from "react";
import { AndroidSoftInputModes } from "../constants";
import { useKeyboardContext } from "../context";
import { KeyboardController } from "../module";
export const useResizeMode = () => {
useEffect(() => {
KeyboardController.setInputMode(AndroidSoftInputModes.SOFT_INPUT_ADJUST_RESIZE);
return () => KeyboardController.setDefaultMode();
}, []);
};
export const useKeyboardAnimation = () => {
useResizeMode();
const context = useKeyboardContext();
return context.animated;
};
export const useReanimatedKeyboardAnimation = () => {
useResizeMode();
const context = useKeyboardContext();
return context.reanimated;
};
export function useGenericKeyboardHandler(handler, deps) {
const context = useKeyboardContext();
useLayoutEffect(() => {
const cleanup = context.setKeyboardHandlers(handler);
return () => cleanup();
}, deps);
}
export function useKeyboardHandler(handler, deps) {
useResizeMode();
useGenericKeyboardHandler(handler, deps);
}
export function useKeyboardController() {
const context = useKeyboardContext();
return {
setEnabled: context.setEnabled,
enabled: context.enabled
};
}
export function useReanimatedFocusedInput() {
const context = useKeyboardContext();
return {
input: context.layout
};
}
export function useFocusedInputHandler(handler, deps) {
const context = useKeyboardContext();
useLayoutEffect(() => {
const cleanup = context.setInputHandlers(handler);
return () => cleanup();
}, deps);
}
export * from "./useWindowDimensions";
export * from "./useKeyboardState";
//# sourceMappingURL=index.js.map