I didn't make much progress because some basic widgets are missing, but I did find the experience similar to the DOM version and it would be easy to do both while remaining in the same register.
I'm doing all the work in a single commit so it's easier to rebase.
Below is a list of the individual changes I did
- Squash prev commits
- Remove top-level action handler (use Adapt instead).
- Type events in the same way as elements (could also do attributes the
same)
- Allow users to avoid compiling the typed html/attributes/events
- Use more specific types for mouse events from web_sys
- change "click" from PointerEvent to MouseEvent (PointerEvent caused a
panic on `dyn_into().unwrap()`)