From 8f488f48bd85f803128eda66c6dab00834a94aeb Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Thu, 15 Dec 2022 21:53:30 +0100 Subject: [PATCH] Adjust SuiWeb according to the standards --- src/js/SuiWeb.js | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/js/SuiWeb.js b/src/js/SuiWeb.js index 22f8b28..9df8812 100644 --- a/src/js/SuiWeb.js +++ b/src/js/SuiWeb.js @@ -11,6 +11,9 @@ export class SuiWeb * * @param {HTMLElement} element * The element to add the rendered node to. + * + * @returns {Node} + * The resulting element. */ static render(data, element) { @@ -19,14 +22,33 @@ export class SuiWeb let descriptor = data[0]; let args = data.slice(1); - if (typeof descriptor === "function") + if (typeof descriptor === "function" || typeof descriptor === "string") { - SuiWeb.render(descriptor(...args), element); - } - else if (typeof descriptor === "string") - { - let result = element.ownerDocument.createElement(descriptor); - element.appendChild(result); + /** + * @type {HTMLElement} + */ + let result; + + if (typeof descriptor === "function") + { + /** + * @type {any[]} + */ + let arg = []; + + if (typeof args[0] === "object" && !Array.isArray(args[0])) + { + arg = [args[0]]; + args = args.slice(1); + } + + result = /** @type {HTMLElement} */ (SuiWeb.render(descriptor(...arg), element)); + } + else + { + result = element.ownerDocument.createElement(descriptor); + element.appendChild(result); + } for (let arg of args) { @@ -39,6 +61,8 @@ export class SuiWeb SuiWeb.render(arg, result); } } + + return result; } else { @@ -47,7 +71,7 @@ export class SuiWeb } else if (typeof data === "string") { - element.appendChild(element.ownerDocument.createTextNode(data)); + return element.appendChild(element.ownerDocument.createTextNode(data)); } else {