From 3209afa4ff8ddad3e1f226df531cdf1f3f19d6c2 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 9 Feb 2023 19:20:44 +0100 Subject: [PATCH] minirepl: add keyboard shortcuts --- packages/react/src/components/MiniRepl.jsx | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/react/src/components/MiniRepl.jsx b/packages/react/src/components/MiniRepl.jsx index fd803ac1..b2c40d79 100644 --- a/packages/react/src/components/MiniRepl.jsx +++ b/packages/react/src/components/MiniRepl.jsx @@ -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); +}