diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 20ed7acfa..17650ee5d 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1172,6 +1172,9 @@ class WebGLInterface { }; +function newlineCount(str, substr) { + return (str.match(/\n/g) || []).length; +}; function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { const MAX_INFO_CONSOLE_LINES = 512; @@ -1182,25 +1185,34 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { if (!line) { return; } - if (!line.includes("\n")) { + + // Print to console + if (line == "\n") { + console.log(currentLine); + currentLine = ""; + } else if (!line.includes("\n")) { currentLine = currentLine.concat(line); } else { - let printLast = line.endsWith("\n"); let lines = line.split("\n"); - for (let i = 0; i < lines.length-1; i++) { - let theLine = lines[i].trim("\r"); - currentLine = currentLine.concat(line); - console.log(currentLine); - currentLine = ""; + let printLast = lines.length > 1 && line.endsWith("\n"); + console.log(currentLine.concat(lines[0])); + currentLine = ""; + for (let i = 1; i < lines.length-1; i++) { + console.log(lines[i]); } - console.log(lines); + let last = lines[lines.length-1]; if (printLast) { - console.log(lines[lines.length-1]); + console.log(last); } else { - currentLine = currentLine.concat(lines[lines.length-1]); + currentLine = last; } } + + // HTML based console + if (!consoleElement) { + return; + } if (line.endsWith("\n")) { line = line.substring(0, line.length-1); } else if (infoConsoleLines.length > 0) { @@ -1212,19 +1224,18 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { if (infoConsoleLines.length > MAX_INFO_CONSOLE_LINES) { infoConsoleLines.shift(); } - if (consoleElement) { - let data = ""; - for (let i = 0; i < infoConsoleLines.length; i++) { - if (i != 0) { - data = data.concat("\n"); - } - data = data.concat(infoConsoleLines[i]); - } - let info = consoleElement; - info.innerHTML = data; - info.scrollTop = info.scrollHeight; + let data = ""; + for (let i = 0; i < infoConsoleLines.length; i++) { + if (i != 0) { + data = data.concat("\n"); + } + data = data.concat(infoConsoleLines[i]); } + + let info = consoleElement; + info.innerHTML = data; + info.scrollTop = info.scrollHeight; }; let event_temp_data = {}; @@ -1369,7 +1380,6 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { event_temp_data.id_len = id_len; event_temp_data.event = e; event_temp_data.name_code = name_code; - // console.log(e); wasmMemoryInterface.exports.odin_dom_do_event_callback(data, callback, odin_ctx); }; wasmMemoryInterface.listenerMap[{data: data, callback: callback}] = listener; @@ -1403,7 +1413,6 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { event_temp_data.id_len = 0; event_temp_data.event = e; event_temp_data.name_code = name_code; - // console.log(e); wasmMemoryInterface.exports.odin_dom_do_event_callback(data, callback, odin_ctx); }; wasmMemoryInterface.listenerMap[{data: data, callback: callback}] = listener; @@ -1414,10 +1423,13 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { remove_window_event_listener: (name_ptr, name_len, data, callback) => { let name = wasmMemoryInterface.loadString(name_ptr, name_len); let element = window; - let listener = wasmMemoryInterface.listenerMap[{data: data, callback: callback}]; - if (listener == undefined) { + let key = {data: data, callback: callback}; + let listener = wasmMemoryInterface.listenerMap[key]; + if (!listener) { return false; } + wasmMemoryInterface.listenerMap[key] = undefined; + element.removeEventListener(name, listener); return true; },