UNPKG

@react-native-aria/interactions

Version:
47 lines (45 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useKeyboardDismissable = exports.keyboardDismissHandlerManager = void 0; var _react = require("react"); var _useBackHandler = require("./useBackHandler"); let keyboardDismissHandlers = []; const keyboardDismissHandlerManager = exports.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 */ const useKeyboardDismissable = ({ enabled, callback }) => { (0, _react.useEffect)(() => { let cleanupFn = () => {}; if (enabled) { cleanupFn = keyboardDismissHandlerManager.push(callback); } else { cleanupFn(); } return () => { cleanupFn(); }; }, [enabled, callback]); (0, _useBackHandler.useBackHandler)({ enabled, callback }); }; exports.useKeyboardDismissable = useKeyboardDismissable; //# sourceMappingURL=useKeyboardDismisssable.js.map