import * as Comlink from "comlink"; function setButtonsDisabledState(buttonIds, state) { for (let id of buttonIds) { let btn = document.getElementById(id); if (btn) { btn.disabled = state; } } } async function setup() { const worker = new Worker(new URL("worker.js", import.meta.url), { type: "module", }); const demos = await Comlink.wrap(worker).demos; const demoNames = [ "compactPublicKeyZeroKnowledgeBench", ]; function setupBtn(id) { // Handlers are named in the same way as buttons. let fn = demos[id]; let button = document.getElementById(id); if (button === null) { console.error(`button with id: ${id} not found`); return null; } // Assign onclick handler + enable the button. Object.assign(button, { onclick: async () => { document.getElementById("loader").hidden = false; document.getElementById("testSuccess").checked = false; setButtonsDisabledState(demoNames, true); console.log(`Running: ${id}`); try { let results = await fn(); document.getElementById("testSuccess").checked = true; if (results !== undefined) { document.getElementById("benchmarkResults").value = JSON.stringify(results); } } catch (error) { console.error(`Test Failed: ${error}`); document.getElementById("testSuccess").checked = false; } document.getElementById("loader").hidden = true; setButtonsDisabledState(demoNames, false); }, disabled: false, }); return button; } for (let demo of demoNames) { setupBtn(demo); } } setup();