async/await messagebox
HTML
<div id="app"></div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
text-align: center;
}
JavaScript
function makeScript(owner, text, argsSig) {
let _scriptFunc_;
let own = owner;
try {
const promiseCode = `let __res = null;let __rej = null;let __promise = new Promise((resolve, reject) => {__res = resolve;__rej = reject;});try {\n`;
const ending = `;\n;__res();} catch (err) { __rej(err);}; return __promise;`;
const scriptSource = "_scriptFunc_ = async function(" + argsSig + ") {\"use strict\";\n" + promiseCode + text + ending + "\n}";
console.log(scriptSource);
eval(scriptSource);
}
catch (err) {
console.log(err);
return null;
}
const ret = _scriptFunc_.bind(this);
return ret;
}
async function messagebox(_text) {
let resolveFunc = null;
let rejectFunc = null;
let promise = new Promise((resolve,reject) => {
resolveFunc = resolve;
rejectFunc = reject;
});
let win = document.createElement("div");
let $win = $(win);
$("#app").append($win);
win.innerHTML = `
<div id="messageboxtext"></div>
<button id="accept" style="width:200px;height:50px;">OK</button>
`;
const acceptButton = $("#accept", $win);
const $text = $("#messageboxtext", $win);
$text.text(_text);
$(acceptButton).click(() => {
resolveFunc("ok");
$win.remove();
});
$win.css({'position':'relative','width':'auto', 'height':'auto', 'background-color':'red'});
return promise;
}
function Messagebox() {
return {
ShowInput : async function(_text) {
return await messagebox(_text);
}
};
}
function ScriptBuilder(_this, owner, text, argsSig) {
try {
return makeScript.call(_this, owner, text, argsSig);
} catch (_err2) {
console.log(_err2);
}
}
window.Messagebox = Messagebox();
let scriptThis = {Message:""};
let _script = ScriptBuilder(scriptThis, "scriptName", `
this.Message += await Messagebox.ShowInput(question + ' 1 ');
console.log(this.Message);
this.Message += await...