@muban/muban
Version:
Writing components for server-rendered HTML
16 lines (15 loc) • 519 B
JavaScript
/* eslint-disable @typescript-eslint/no-explicit-any */
import typedObjectEntries from '../../type-utils/typedObjectEntries';
export function eventBinding(target, events) {
typedObjectEntries(events).forEach(([eventName, fn]) => {
createEventBinding(eventName)(target, fn);
});
}
export function createEventBinding(eventName) {
return (target, fn) => {
target.addEventListener(eventName, fn);
return () => {
target.removeEventListener(eventName, fn);
};
};
}