UNPKG

@muban/muban

Version:

Writing components for server-rendered HTML

16 lines (15 loc) 519 B
/* 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); }; }; }