diff --git a/src/NetscriptJSEvaluator.js b/src/NetscriptJSEvaluator.js index d3241f557..5325911a3 100644 --- a/src/NetscriptJSEvaluator.js +++ b/src/NetscriptJSEvaluator.js @@ -38,10 +38,10 @@ export async function executeJSScript(scripts = [], workerScript) { // load fully dynamic content. So we hide the import from webpack // by placing it inside an eval call. urls = _getScriptUrls(script, scripts, []); - script.module = await eval('import(urls[urls.length - 1].url)'); + script.module = new Promise(resolve => resolve(eval('import(urls[urls.length - 1].url)'))); script.dependencies = urls.map(u => u.filename); } - loadedModule = script.module; + loadedModule = await script.module; let ns = workerScript.env.vars; diff --git a/utils/DialogBox.js b/utils/DialogBox.js index 127740271..aa165bb94 100644 --- a/utils/DialogBox.js +++ b/utils/DialogBox.js @@ -1,3 +1,5 @@ +import { KEY } from "./helpers/keyCodes"; + /** * Create and display a pop-up dialog box. * This dialog box does not allow for any interaction and should close when clicking @@ -9,28 +11,31 @@ let dialogBoxes = []; $(document).click(function(event) { if (dialogBoxOpened && dialogBoxes.length >= 1) { if (!$(event.target).closest(dialogBoxes[0]).length){ - dialogBoxes[0].remove(); - dialogBoxes.splice(0, 1); - if (dialogBoxes.length == 0) { - dialogBoxOpened = false; - } else { - dialogBoxes[0].style.visibility = "visible"; - } + closeTopmostDialogBox(); } } }); +function closeTopmostDialogBox() { + if (!dialogBoxOpened || dialogBoxes.length === 0) return; + dialogBoxes[0].remove(); + dialogBoxes.shift(); + if (dialogBoxes.length == 0) { + dialogBoxOpened = false; + } else { + dialogBoxes[0].style.visibility = "visible"; + } +} // Dialog box close buttons $(document).on('click', '.dialog-box-close-button', function( event ) { - if (dialogBoxOpened && dialogBoxes.length >= 1) { - dialogBoxes[0].remove(); - dialogBoxes.splice(0, 1); - if (dialogBoxes.length == 0) { - dialogBoxOpened = false; - } else { - dialogBoxes[0].style.visibility = "visible"; - } + closeTopmostDialogBox(); +}); + +document.addEventListener("keydown", function (event) { + if (event.keyCode == KEY.ESC && dialogBoxOpened) { + closeTopmostDialogBox(); + event.preventDefault(); } });