keydownWrapper

This commit is contained in:
sawka 2024-06-28 17:53:35 -07:00
parent 50a4074c39
commit b2cdd441d1
3 changed files with 18 additions and 10 deletions

View File

@ -210,15 +210,8 @@ const AppInner = () => {
</div>
);
}
function handleKeyDown(ev: KeyboardEvent) {
let waveEvent = keyutil.adaptFromReactOrNativeKeyEvent(ev);
const rtn = handleKeyDownInternal(waveEvent);
if (rtn) {
ev.preventDefault();
ev.stopPropagation();
}
}
function handleKeyDownInternal(waveEvent: WaveKeyboardEvent): boolean {
function handleKeyDown(waveEvent: WaveKeyboardEvent): boolean {
// global key handler for now (refactor later)
if (keyutil.checkKeyPressed(waveEvent, "Cmd:]")) {
switchTab(1);
@ -247,7 +240,7 @@ const AppInner = () => {
return false;
}
React.useEffect(() => {
const staticKeyDownHandler = handleKeyDown;
const staticKeyDownHandler = keyutil.keydownWrapper(handleKeyDown);
document.addEventListener("keydown", staticKeyDownHandler);
return () => {
document.removeEventListener("keydown", staticKeyDownHandler);

View File

@ -213,6 +213,7 @@ const TerminalView = ({ blockId }: { blockId: string }) => {
termWrap.initTerminal();
return () => {
termWrap.dispose();
rszObs.disconnect();
};
}, []);

View File

@ -12,6 +12,19 @@ function setKeyUtilPlatform(platform: NodeJS.Platform) {
PLATFORM = platform;
}
function keydownWrapper(
fn: (waveEvent: WaveKeyboardEvent) => boolean
): (event: KeyboardEvent | React.KeyboardEvent) => void {
return (event: KeyboardEvent | React.KeyboardEvent) => {
const waveEvent = adaptFromReactOrNativeKeyEvent(event);
const rtnVal = fn(waveEvent);
if (rtnVal) {
event.preventDefault();
event.stopPropagation();
}
};
}
function parseKey(key: string): { key: string; type: string } {
let regexMatch = key.match(KeyTypeCodeRegex);
if (regexMatch != null && regexMatch.length > 1) {
@ -142,6 +155,7 @@ export {
adaptFromElectronKeyEvent,
adaptFromReactOrNativeKeyEvent,
checkKeyPressed,
keydownWrapper,
parseKeyDescription,
setKeyUtilPlatform,
};