From a535f1e9d65f350a712be701389fc6f41814d806 Mon Sep 17 00:00:00 2001 From: waynemwashuma <94756970+waynemwashuma@users.noreply.github.com> Date: Tue, 12 May 2026 20:25:35 +0300 Subject: [PATCH 1/2] Fix css selector on window --- src/window-dom/hooks/window.js | 37 +++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/window-dom/hooks/window.js b/src/window-dom/hooks/window.js index 056a58ff..9f3b13c4 100644 --- a/src/window-dom/hooks/window.js +++ b/src/window-dom/hooks/window.js @@ -11,25 +11,35 @@ export function openWindow(entity, world) { // SAFETY: Component is guaranteed as this is its component hook const window = /** @type {Window}*/(world.get(entity, Window)) - const windows = world.getResource(Windows) - let element - if (window.selector) element = /** @type {HTMLElement | undefined}*/(document.querySelector(window.selector)) - if (!element) { - element = document.createElement('canvas') - } - if (element.nodeName !== 'CANVAS') { - element = document.createElement('canvas') - warn(`The provided selector '${window.selector}' does not yield a canvas element.`) + if (window.selector) { + const canvas = document.querySelector(window.selector) + if (canvas instanceof HTMLCanvasElement) { + registerWindow(world,entity, canvas, window) + return + } else { + warn(`The provided selector '${window.selector}' does not yield a canvas element.`) + } } - const canvas = /** @type {HTMLCanvasElement}*/(element) + const canvas = document.createElement('canvas') - windows.setWindow(entity, canvas) - canvas.width = window.getWidth() - canvas.height = window.getHeight() document.body.append(canvas) + registerWindow(world,entity, canvas, window) +} +/** + * @param {import("../../ecs/registry.js").World} world + * @param {import("../../ecs/index.js").Entity} entity + * @param {HTMLCanvasElement} canvas + * @param {Window} window + */ +function registerWindow(world, entity, canvas, window){ + const windows = world.getResource(Windows) + + canvas.width = window.getWidth() + canvas.height = window.getHeight() + windows.setWindow(entity, canvas) // setting tabindex and focus to enable keyboard events // on the canvas element. canvas.tabIndex = -1 @@ -40,7 +50,6 @@ export function openWindow(entity, world) { setUpWindowEvents(world, canvas) setUpFileEvents(world, canvas) } - /** * @type {ComponentHook} */ From 47336a8a4a95fd37de0167805ec86762cbfa399a Mon Sep 17 00:00:00 2001 From: waynemwashuma <94756970+waynemwashuma@users.noreply.github.com> Date: Tue, 12 May 2026 21:00:50 +0300 Subject: [PATCH 2/2] Lint files --- src/window-dom/hooks/window.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/window-dom/hooks/window.js b/src/window-dom/hooks/window.js index 9f3b13c4..33b56a86 100644 --- a/src/window-dom/hooks/window.js +++ b/src/window-dom/hooks/window.js @@ -14,18 +14,21 @@ export function openWindow(entity, world) { if (window.selector) { const canvas = document.querySelector(window.selector) + if (canvas instanceof HTMLCanvasElement) { - registerWindow(world,entity, canvas, window) + registerWindow(world, entity, canvas, window) + return - } else { - warn(`The provided selector '${window.selector}' does not yield a canvas element.`) } + + warn(`The provided selector '${window.selector}' does not yield a canvas element.`) + } const canvas = document.createElement('canvas') document.body.append(canvas) - registerWindow(world,entity, canvas, window) + registerWindow(world, entity, canvas, window) } /** @@ -34,12 +37,13 @@ export function openWindow(entity, world) { * @param {HTMLCanvasElement} canvas * @param {Window} window */ -function registerWindow(world, entity, canvas, window){ +function registerWindow(world, entity, canvas, window) { const windows = world.getResource(Windows) - + canvas.width = window.getWidth() canvas.height = window.getHeight() windows.setWindow(entity, canvas) + // setting tabindex and focus to enable keyboard events // on the canvas element. canvas.tabIndex = -1 @@ -50,6 +54,7 @@ function registerWindow(world, entity, canvas, window){ setUpWindowEvents(world, canvas) setUpFileEvents(world, canvas) } + /** * @type {ComponentHook} */