DioxusLabs / DioxusLabs/blitz

missing hooks for dom standard compat

Open
#495 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
4.1k
Forks
203
Avg merge
8h 58m
Merged PRs (30d)
112

Description

Here is a list of hooks that are currently missing from blitz-dom and that would help an embedder of it implement the dom standard:

Various hooks which allow the embedding window agent queue microtasks:

- https://dom.spec.whatwg.org/#queue-a-tree-mutation-record
- https://dom.spec.whatwg.org/#queue-a-mutation-observer-compound-microtask
- https://dom.spec.whatwg.org/#signal-a-slot-change (this is only useful is shadow dom itself is implemented)

Various extensions in the mutation algos that allow other web standards to define handlers.

- https://dom.spec.whatwg.org/#concept-node-insert-ext
- https://dom.spec.whatwg.org/#concept-node-post-connection-ext
- https://dom.spec.whatwg.org/#concept-node-remove-ext
- https://dom.spec.whatwg.org/#concept-node-move-ext
- example use: https://html.spec.whatwg.org/multipage/infrastructure.html#dom-trees

For clarity, in blitz-dom I think all that is needed for the above are just synchronous hooks that are called into from the right places of the dom algos (so for example the dom mutator could call into the extension hooks), somewhat similar to how event handling can be handled via the EventHandler trait.

Contributor guide

Open the contributing guide

Research direction

Start by locating the blitz-dom DOM mutator and the EventHandler trait, then trace the mutation algorithms named in the issue. Add synchronous extension points at the listed insertion, connection, removal, and move steps, plus hooks for the specified microtask operations; done means an embedder can receive each hook from the correct DOM algorithm location.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
frontend, web-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.