react-pdf-ner-annotator
Version:
A React component to annotate named entities directly onto a PDF.
36 lines • 1.55 kB
JavaScript
;
exports.__esModule = true;
var react_1 = require("react");
var useKeyPressedListener = function (targetKey) {
if (targetKey === void 0) { targetKey = 'CONTROL'; }
var _a = (0, react_1.useState)(false), keyPressed = _a[0], setKeyPressed = _a[1];
var getTargetKeys = (0, react_1.useCallback)(function () {
if (targetKey.toUpperCase() === 'CONTROL' || targetKey.toUpperCase() === 'META') {
return ['CONTROL', 'META'];
}
return [targetKey.toUpperCase()];
}, [targetKey]);
var downHandler = (0, react_1.useCallback)(function (_a) {
var key = _a.key;
if (getTargetKeys().includes(key === null || key === void 0 ? void 0 : key.toUpperCase())) {
setKeyPressed(true);
}
}, [getTargetKeys]);
var upHandler = (0, react_1.useCallback)(function (_a) {
var key = _a.key;
if (getTargetKeys().includes(key === null || key === void 0 ? void 0 : key.toUpperCase())) {
setKeyPressed(false);
}
}, [getTargetKeys]);
(0, react_1.useEffect)(function () {
window.addEventListener('keydown', downHandler);
window.addEventListener('keyup', upHandler);
return function () {
window.removeEventListener('keydown', downHandler);
window.removeEventListener('keyup', upHandler);
};
}, [downHandler, upHandler]);
return keyPressed;
};
exports["default"] = useKeyPressedListener;
//# sourceMappingURL=useKeyPressedListener.js.map