@@ -1188,6 +1188,30 @@ module ControlPanel = {
11881188 ~editorCode : React .ref <string >,
11891189 ~setCurrentTab : (tab => tab ) => unit ,
11901190 ) => {
1191+ React .useEffect (() => {
1192+ switch state {
1193+ | Ready (_ )
1194+ | Compiling (_ )
1195+ | Executing (_ ) =>
1196+ let onKeyDown = event => {
1197+ switch (
1198+ event -> ReactEvent .Keyboard .metaKey || event -> ReactEvent .Keyboard .ctrlKey ,
1199+ event -> ReactEvent .Keyboard .key ,
1200+ ) {
1201+ | (true , "e" ) =>
1202+ event -> ReactEvent .Keyboard .preventDefault
1203+ setCurrentTab (_ => Output )
1204+ dispatch (RunCode )
1205+ | _ => ()
1206+ }
1207+ }
1208+
1209+ WebAPI .Window .addEventListener (window , Keydown , onKeyDown )
1210+ Some (() => WebAPI .Window .removeEventListener (window , Keydown , onKeyDown ))
1211+ | _ => None
1212+ }
1213+ }, (state , dispatch , setCurrentTab ))
1214+
11911215 let children = switch state {
11921216 | Init => React .string ("Initializing..." )
11931217 | SwitchingCompiler (_ready , _version ) => React .string ("Switching Compiler..." )
@@ -1206,28 +1230,6 @@ module ControlPanel = {
12061230 | _ => false
12071231 }
12081232
1209- let runCode = () => {
1210- setCurrentTab (_ => Output )
1211- dispatch (RunCode )
1212- }
1213-
1214- let onKeyDown = event => {
1215- switch (
1216- event -> ReactEvent .Keyboard .metaKey || event -> ReactEvent .Keyboard .ctrlKey ,
1217- event -> ReactEvent .Keyboard .key ,
1218- ) {
1219- | (true , "e" ) =>
1220- event -> ReactEvent .Keyboard .preventDefault
1221- runCode ()
1222- | _ => ()
1223- }
1224- }
1225-
1226- React .useEffect (() => {
1227- WebAPI .Window .addEventListener (window , Keydown , onKeyDown )
1228- Some (() => WebAPI .Window .removeEventListener (window , Keydown , onKeyDown ))
1229- }, [])
1230-
12311233 let runButtonText = {
12321234 let userAgent = window .navigator .userAgent
12331235 let run = "Run"
@@ -1253,7 +1255,14 @@ module ControlPanel = {
12531255 >
12541256 {React .string ("Auto-run" )}
12551257 </ToggleButton >
1256- <Button onClick = {_ => runCode ()}> {React .string (runButtonText )} </Button >
1258+ <Button
1259+ onClick = {_ => {
1260+ setCurrentTab (_ => Output )
1261+ dispatch (RunCode )
1262+ }}
1263+ >
1264+ {React .string (runButtonText )}
1265+ </Button >
12571266 <Button onClick = onFormatClick > {React .string ("Format" )} </Button >
12581267 <ShareButton actionIndicatorKey />
12591268 </div >
0 commit comments