fn(parent_node: DOMNode, view: View<'t587>) -> ({ node: DOMNode, view: View<'t587>, children: ChildState<'t587>, parent: DOMNode }, List<Str>) / { Dom<'t588> }
Top-level: build a view, returning state + events.
fn(parent_node: DOMNode, view: View<'msg>, events: List<Str>) -> ({ node: DOMNode, view: View<'msg>, children: ChildState<'msg>, parent: DOMNode }, List<Str>) / { Dom<'t354> }
Internal dispatcher: build any view type.