react-native-gesture-handler
Version:
Declarative API exposing native platform touch and gesture system to React Native
47 lines (36 loc) • 1.15 kB
text/typescript
import * as React from 'react';
export type KeyboardShouldPersistTaps =
| boolean
| 'always'
| 'never'
| 'handled'
| undefined;
export type JSResponderContextValue = {
isRNGHResponderEvent: React.MutableRefObject<boolean>;
keyboardShouldPersistTaps: KeyboardShouldPersistTaps;
};
export const JSResponderContext =
React.createContext<JSResponderContextValue | null>(null);
export function updateResponderEventValue(
jsResponderContext: JSResponderContextValue | null | undefined,
value: boolean
) {
const responderEventRef = jsResponderContext?.isRNGHResponderEvent;
if (responderEventRef) {
responderEventRef.current = value;
}
}
let isKeyboardVisible = false;
export function setKeyboardVisibility(visible: boolean) {
isKeyboardVisible = visible;
}
export function isKeyboardDismissingTap(
jsResponderContext: JSResponderContextValue | null | undefined
): boolean {
if (jsResponderContext == null) {
return false;
}
const mode = jsResponderContext.keyboardShouldPersistTaps;
const keyboardNeverPersistTaps = !mode || mode === 'never';
return keyboardNeverPersistTaps && isKeyboardVisible;
}