minirepl: add keyboard shortcuts

This commit is contained in:
Felix Roos 2023-02-09 19:20:44 +01:00
parent c350f262e6
commit 3209afa4ff

View File

@ -63,6 +63,27 @@ export function MiniRepl({ tune, hideOutsideView = false, enableKeyboard, drawTi
getTime: () => scheduler.now(),
});
// keyboard shortcuts
useKeydown(
useCallback(
async (e) => {
if (view?.hasFocus) {
if (e.ctrlKey || e.altKey) {
if (e.code === 'Enter') {
e.preventDefault();
flash(view);
await activateCode();
} else if (e.code === 'Period') {
stop();
e.preventDefault();
}
}
}
},
[activateCode, stop, view],
),
);
// set active pattern on ctrl+enter
useLayoutEffect(() => {
if (enableKeyboard) {
@ -150,3 +171,8 @@ function useEvent(name, onTrigger, useCapture = false) {
};
}, [onTrigger]);
}
// TODO: dedupe
function useKeydown(onTrigger) {
useEvent('keydown', onTrigger, true);
}