@react-native-aria/interactions
Version:
47 lines (45 loc) • 1.26 kB
JavaScript
;
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