From 6691acfa0358f60216d507b4d295dc7b289c397c Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Wed, 12 Mar 2025 18:43:03 +0100 Subject: [PATCH] core/sys/wasm/js: add `open` binding to `window.open` --- core/sys/wasm/js/general.odin | 3 ++- core/sys/wasm/js/odin.js | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/core/sys/wasm/js/general.odin b/core/sys/wasm/js/general.odin index 4ed2ae298..22bb08e2b 100644 --- a/core/sys/wasm/js/general.odin +++ b/core/sys/wasm/js/general.odin @@ -9,4 +9,5 @@ foreign odin_env { abort :: proc() -> ! --- alert :: proc(msg: string) --- evaluate :: proc(str: string) --- -} \ No newline at end of file + open :: proc(url: string, name := "", specs := "") --- +} diff --git a/core/sys/wasm/js/odin.js b/core/sys/wasm/js/odin.js index 29227c526..183b74cd7 100644 --- a/core/sys/wasm/js/odin.js +++ b/core/sys/wasm/js/odin.js @@ -1421,6 +1421,13 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) { abort: () => { Module.abort() }, evaluate: (str_ptr, str_len) => { eval.call(null, wasmMemoryInterface.loadString(str_ptr, str_len)); }, + open: (url_ptr, url_len, name_ptr, name_len, specs_ptr, specs_len) => { + const url = wasmMemoryInterface.loadString(url_ptr, url_len); + const name = wasmMemoryInterface.loadString(name_ptr, name_len); + const specs = wasmMemoryInterface.loadString(specs_ptr, specs_len); + window.open(url, name, specs); + }, + // return a bigint to be converted to i64 time_now: () => BigInt(Date.now()), tick_now: () => performance.now(),