Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Apr 28, 2020. It is now read-only.

Commit a3ecd35

Browse files
committed
Reset body onkeydown after reload ui is stopped
1 parent 54c431e commit a3ecd35

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

sail.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
(function() {
2+
let oldonkeydown
23
function startReloadUI() {
34
const div = document.createElement("div")
45
div.className = "msgbox-overlay"
@@ -8,6 +9,7 @@
89
<div class="msg">Rebuilding container</div>
910
</div>`
1011
// Prevent keypresses.
12+
let oldonkeydown = document.body.onkeydown
1113
document.body.onkeydown = ev => {
1214
ev.stopPropagation()
1315
}
@@ -22,6 +24,7 @@
2224
}
2325

2426
function stopReloadUI() {
27+
document.body.onkeydown = oldonkeydown
2528
removeElementsByClass("msgbox-overlay")
2629
}
2730

@@ -45,7 +48,6 @@
4548
}
4649
let oldTTY = tsrv.getActiveInstance()
4750
tsrv.setActiveInstance(tty)
48-
// Show the panel and focus it to prevent the user from editing the Dockerfile.
4951
tsrv.showPanel(true)
5052

5153
startReloadUI()

sail.js.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
package main
22

33
//go:generate go run sail.js_gen.go
4-
const sailJS = "(function() {\n function startReloadUI() {\n const div = document.createElement(\"div\")\n div.className = \"msgbox-overlay\"\n div.style.opacity = 1\n div.style.textAlign = \"center\"\n div.innerHTML = `<div class=\"msgbox\">\n <div class=\"msg\">Rebuilding container</div>\n </div>`\n // Prevent keypresses.\n document.body.onkeydown = ev => {\n ev.stopPropagation()\n }\n document.querySelector(\".monaco-workbench\").appendChild(div)\n }\n\n function removeElementsByClass(className) {\n let elements = document.getElementsByClassName(className);\n for (let e of elements) {\n e.parentNode.removeChild(e)\n }\n }\n\n function stopReloadUI() {\n removeElementsByClass(\"msgbox-overlay\")\n }\n\n let tty\n let rebuilding\n function rebuild() {\n if (rebuilding) {\n return\n }\n rebuilding = true\n\n const tsrv = window.ide.workbench.terminalService\n\n if (tty == null) {\n tty = tsrv.createTerminal({\n name: \"sail\",\n isRendererOnly: true,\n }, false)\n } else {\n tty.clear()\n }\n let oldTTY = tsrv.getActiveInstance()\n tsrv.setActiveInstance(tty)\n // Show the panel and focus it to prevent the user from editing the Dockerfile.\n tsrv.showPanel(true)\n\n startReloadUI()\n\n const ws = new WebSocket(\"ws://\" + location.host + \"/sail/api/v1/reload\")\n ws.onmessage = (ev) => {\n const msg = JSON.parse(ev.data)\n const out = atob(msg.v).replace(/\\n/g, \"\\n\\r\")\n tty.write(out)\n }\n ws.onclose = (ev) => {\n if (ev.code === 1000) {\n tsrv.setActiveInstance(oldTTY)\n } else {\n alert(\"reload failed; please see logs in sail terminal\")\n }\n stopReloadUI()\n rebuilding = false\n }\n }\n\n window.addEventListener(\"ide-ready\", () => {\n class rebuildAction extends window.ide.workbench.action {\n run() {\n rebuild()\n }\n }\n\n window.ide.workbench.actionsRegistry.registerWorkbenchAction(new window.ide.workbench.syncActionDescriptor(rebuildAction, \"sail.rebuild\", \"Rebuild container\", {\n primary: ((1 << 11) >>> 0) | 48 // That's cmd + R. See vscode source for the magic numbers.\n }), \"sail: Rebuild container\", \"sail\");\n\n const statusBarService = window.ide.workbench.statusbarService\n statusBarService.addEntry({\n text: \"rebuild\",\n tooltip: \"Rebuild sail container\",\n command: \"sail.rebuild\"\n }, 0)\n })\n}())\n"
4+
const sailJS = "(function() {\n let oldonkeydown\n function startReloadUI() {\n const div = document.createElement(\"div\")\n div.className = \"msgbox-overlay\"\n div.style.opacity = 1\n div.style.textAlign = \"center\"\n div.innerHTML = `<div class=\"msgbox\">\n <div class=\"msg\">Rebuilding container</div>\n </div>`\n // Prevent keypresses.\n let oldonkeydown = document.body.onkeydown\n document.body.onkeydown = ev => {\n ev.stopPropagation()\n }\n document.querySelector(\".monaco-workbench\").appendChild(div)\n }\n\n function removeElementsByClass(className) {\n let elements = document.getElementsByClassName(className);\n for (let e of elements) {\n e.parentNode.removeChild(e)\n }\n }\n\n function stopReloadUI() {\n document.body.onkeydown = oldonkeydown\n removeElementsByClass(\"msgbox-overlay\")\n }\n\n let tty\n let rebuilding\n function rebuild() {\n if (rebuilding) {\n return\n }\n rebuilding = true\n\n const tsrv = window.ide.workbench.terminalService\n\n if (tty == null) {\n tty = tsrv.createTerminal({\n name: \"sail\",\n isRendererOnly: true,\n }, false)\n } else {\n tty.clear()\n }\n let oldTTY = tsrv.getActiveInstance()\n tsrv.setActiveInstance(tty)\n tsrv.showPanel(true)\n\n startReloadUI()\n\n const ws = new WebSocket(\"ws://\" + location.host + \"/sail/api/v1/reload\")\n ws.onmessage = (ev) => {\n const msg = JSON.parse(ev.data)\n const out = atob(msg.v).replace(/\\n/g, \"\\n\\r\")\n tty.write(out)\n }\n ws.onclose = (ev) => {\n if (ev.code === 1000) {\n tsrv.setActiveInstance(oldTTY)\n } else {\n alert(\"reload failed; please see logs in sail terminal\")\n }\n stopReloadUI()\n rebuilding = false\n }\n }\n\n window.addEventListener(\"ide-ready\", () => {\n class rebuildAction extends window.ide.workbench.action {\n run() {\n rebuild()\n }\n }\n\n window.ide.workbench.actionsRegistry.registerWorkbenchAction(new window.ide.workbench.syncActionDescriptor(rebuildAction, \"sail.rebuild\", \"Rebuild container\", {\n primary: ((1 << 11) >>> 0) | 48 // That's cmd + R. See vscode source for the magic numbers.\n }), \"sail: Rebuild container\", \"sail\");\n\n const statusBarService = window.ide.workbench.statusbarService\n statusBarService.addEntry({\n text: \"rebuild\",\n tooltip: \"Rebuild sail container\",\n command: \"sail.rebuild\"\n }, 0)\n })\n}())\n"

0 commit comments

Comments
 (0)