From e75d90073e4540ad280a67d3ed04797a2bbbfe0e Mon Sep 17 00:00:00 2001 From: DarkWiiPlayer Date: Wed, 24 Jan 2024 10:14:43 +0100 Subject: [PATCH] Add methods param to component generator --- state.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/state.js b/state.js index 8f78209..d763352 100644 --- a/state.js +++ b/state.js @@ -284,8 +284,12 @@ const attributeObserver = new MutationObserver(mutations => { } }) -export const component = (generator, name) => { - name = name ?? camelToKebab(generator.name) +export const component = (name, generator, methods) => { + if (typeof name === "function") { + methods = generator + generator = name + name = camelToKebab(generator.name) + } const Element = class extends HTMLElement{ constructor() { super() @@ -298,9 +302,12 @@ export const component = (generator, name) => { } }) attributeObserver.observe(this, {attributes: true}) - this.replaceChildren(generator(this)) + this.replaceChildren(generator.call(this, this.state)) } } + if (methods) { + Object.defineProperties(Element.prototype, Object.getOwnPropertyDescriptors(methods)) + } customElements.define(name, Element) return Element; }