on function
Attaches handler to event on target, returning a disposer that detaches
it (handy for components that re-render and must avoid listener leaks).
Implementation
void Function() on(
web.EventTarget target,
String event,
void Function(web.Event event) handler,
) {
final js = handler.toJS;
target.addEventListener(event, js);
return () => target.removeEventListener(event, js);
}