diff --git a/src/windy/platforms/emscripten/emdefs.nim b/src/windy/platforms/emscripten/emdefs.nim index 503333da..a84a68f6 100644 --- a/src/windy/platforms/emscripten/emdefs.nim +++ b/src/windy/platforms/emscripten/emdefs.nim @@ -18,10 +18,22 @@ proc emscripten_sleep*(ms: cuint) {.importc.} #include EM_JS(int, get_window_width, (), { + var canvas = (typeof Module !== 'undefined' && Module.canvas) + ? Module.canvas + : document.getElementById('canvas'); + if (canvas && canvas.clientWidth > 0) { + return canvas.clientWidth; + } return window.innerWidth; }); EM_JS(int, get_window_height, (), { + var canvas = (typeof Module !== 'undefined' && Module.canvas) + ? Module.canvas + : document.getElementById('canvas'); + if (canvas && canvas.clientHeight > 0) { + return canvas.clientHeight; + } return window.innerHeight; }); @@ -42,6 +54,15 @@ EM_JS(void, setup_windy_runtime, (), { Module.canvas.windyContextHandlerAdded = true; } + if (Module.canvas && !Module.canvas.windyResizeObserverAdded && + typeof ResizeObserver !== 'undefined') { + var observer = new ResizeObserver(function() { + window.dispatchEvent(new Event('resize')); + }); + observer.observe(Module.canvas); + Module.canvas.windyResizeObserverAdded = true; + } + if (!window.windyErrorHandlerAdded) { window.addEventListener("error", function() { console.info("Exception thrown, see JavaScript console");