diff options
author | Hayleigh Thompson <me@hayleigh.dev> | 2024-03-31 10:56:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-31 10:56:36 +0100 |
commit | f45179f9124fb002e910afb618911c79a4a1549f (patch) | |
tree | 64aa1190458124a5556481c4d4b0bcb8db7c1c6b /src/server-component.mjs | |
parent | b6aea6702d762986a69f5660df78459ef81a2e9b (diff) | |
download | lustre-f45179f9124fb002e910afb618911c79a4a1549f.tar.gz lustre-f45179f9124fb002e910afb618911c79a4a1549f.zip |
🔀 Refactor vdom and add support for keyed vnodes. (#83)
* :truck: Keep around old vdom implementation for reference.
* :sparkles: Add a keyed vdom node.
* :alembic: Experiment with a different approach for handling component children.
* :construction: Here be scary works in progress.
* :sparkles: Implement keyed node diffing.
* :recycle: Don't use deprecated 'isOk' checks.
* :recycle: Remove separate Keyed node and add 'key' field to Element node.
* :sparkles: Add support for server components into new vdom.
* :bug: Fix broken build script.
* :recycle: Don't emit data-lustre-key attributes for server component patches.
* :package: Generate server component runtime.
* :bug: Fixed a bug where server component keys were ambiguous when double digit.
* :package: Generate server component runtime.
* :recycle: Refactor 'keyed' element to force all children of a node to be keyed.
* :memo: Consistently format '**Note**:'.
* :bug: Fixed bug with falsey className/style/innerHTML attributes.
* :bug: Fixed a bug not handling undefined 'prev' nodes correctly.
* :package: Generate server component runtime.
Diffstat (limited to 'src/server-component.mjs')
-rw-r--r-- | src/server-component.mjs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/server-component.mjs b/src/server-component.mjs index 373f4cd..ab08801 100644 --- a/src/server-component.mjs +++ b/src/server-component.mjs @@ -136,13 +136,15 @@ export class LustreServerComponent extends HTMLElement { } morph(vdom) { - this.#root = morph(this.#root, vdom, (msg) => { + this.#root = morph(this.#root, vdom, (handler) => (event) => { + const msg = handler(event); this.#socket?.send(JSON.stringify([Constants.event, msg.tag, msg.data])); }); } diff([diff]) { - this.#root = patch(this.#root, diff, (msg) => { + this.#root = patch(this.#root, diff, (handler) => (event) => { + const msg = handler(event); this.#socket?.send(JSON.stringify([Constants.event, msg.tag, msg.data])); }); } |