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

View File

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

View File

@ -12,6 +12,19 @@ function setKeyUtilPlatform(platform: NodeJS.Platform) {
PLATFORM = 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 } { function parseKey(key: string): { key: string; type: string } {
let regexMatch = key.match(KeyTypeCodeRegex); let regexMatch = key.match(KeyTypeCodeRegex);
if (regexMatch != null && regexMatch.length > 1) { if (regexMatch != null && regexMatch.length > 1) {
@ -142,6 +155,7 @@ export {
adaptFromElectronKeyEvent, adaptFromElectronKeyEvent,
adaptFromReactOrNativeKeyEvent, adaptFromReactOrNativeKeyEvent,
checkKeyPressed, checkKeyPressed,
keydownWrapper,
parseKeyDescription, parseKeyDescription,
setKeyUtilPlatform, setKeyUtilPlatform,
}; };