import { onCleanup } from 'solid-js'; function useEventListener( node: HTMLElement, type: K, listener: (ev: HTMLElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions, ): void; function useEventListener( node: Window, type: K, listener: (ev: WindowEventMap[K]) => void, options?: boolean | AddEventListenerOptions, ): void; function useEventListener( node: Document, type: K, listener: (ev: DocumentEventMap[K]) => void, options?: boolean | AddEventListenerOptions, ): void; function useEventListener( node: HTMLElement | Window | Document, type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions, ): void { node.addEventListener(type, listener, options); onCleanup(() => { node.removeEventListener(type, listener, options); }); } export default useEventListener;