UNPKG

@react-native-aria/interactions

Version:
40 lines (39 loc) 983 B
import { useEffect } from 'react'; import { useBackHandler } from './useBackHandler'; let keyboardDismissHandlers = []; export const keyboardDismissHandlerManager = { push: handler => { keyboardDismissHandlers.push(handler); return () => { keyboardDismissHandlers = keyboardDismissHandlers.filter(h => h !== handler); }; }, length: () => keyboardDismissHandlers.length, pop: () => { return keyboardDismissHandlers.pop(); } }; /** * Handles attaching callback for Escape key listener on web and Back button listener on Android */ export const useKeyboardDismissable = ({ enabled, callback }) => { useEffect(() => { let cleanupFn = () => {}; if (enabled) { cleanupFn = keyboardDismissHandlerManager.push(callback); } else { cleanupFn(); } return () => { cleanupFn(); }; }, [enabled, callback]); useBackHandler({ enabled, callback }); }; //# sourceMappingURL=useKeyboardDismisssable.js.map