"use strict"; (function(){ const wMsg = function(type,data){ postMessage({ type, data: arguments.length<3 ? data : Array.prototype.slice.call(arguments,1) }); }; const stderr = function(){wMsg('stderr', Array.prototype.slice.call(arguments));}; self.onerror = function() { const err = arguments[4]; if(err && 'ExitStatus'==err.name){ pikchrModule.isDead = true; stderr("FATAL ERROR:", err.message); stderr("Restarting the app requires reloading the page."); wMsg('error', err); } pikchrModule.setStatus('Exception thrown, see JavaScript console: '+err); }; self.onmessage = function f(ev){ ev = ev.data; switch(ev.type){ case 'pikchr': if(pikchrModule.isDead){ stderr("wasm module has exit()ed. Cannot pikchr."); return; } if(!f._){ f._ = pikchrModule.cwrap('pikchr', 'string', [ 'string', 'string', 'number', 'number', 'number' ]); } wMsg('working','start'); const stack = pikchrModule.stackSave(); try { const pnWidth = pikchrModule.stackAlloc(4), pnHeight = pikchrModule.stackAlloc(4); let script = '', flags = 0, cssClass = null; if('string'===typeof ev.data){ script = ev.data; }else if(ev.data && 'object'===typeof ev.data){ script = ev.data.pikchr; flags = ev.data.darkMode ? 0x02 : 0; if(ev.data.cssClass) cssClass = ev.data.cssClass; } pikchrModule.setValue(pnWidth, 0, "i32"); pikchrModule.setValue(pnHeight, 0, "i32"); const msg = { pikchr: script, result: (f._(script, cssClass, flags, pnWidth, pnHeight) || "").trim(), flags: flags }; msg.isError = !!(msg.result && msg.result.startsWith('