(
target: T | EventTarget[] | null,
event: Extract<K, string> | (string & {}),
listener?: (this: T, ev: EventMapType<Exclude<T, null>>[K]) => any,
options?: boolean | AddEventListenerOptions
)
| 70 | * Attaches an event listener on target(s) and returns a cleanup function. |
| 71 | */ |
| 72 | export function addEvent<T extends EventTarget, K extends keyof EventMapType<Exclude<T, null>>>( |
| 73 | target: T | EventTarget[] | null, |
| 74 | event: Extract<K, string> | (string & {}), |
| 75 | listener?: (this: T, ev: EventMapType<Exclude<T, null>>[K]) => any, |
| 76 | options?: boolean | AddEventListenerOptions |
| 77 | ): () => void { |
| 78 | if (listener == null || target == null) { |
| 79 | return () => {}; |
| 80 | } |
| 81 | |
| 82 | let eventTargets = Array.isArray(target) ? target : [target]; |
| 83 | |
| 84 | for (let eventTarget of eventTargets) { |
| 85 | eventTarget.addEventListener(event, listener as EventListener, options); |
| 86 | } |
| 87 | |
| 88 | return () => { |
| 89 | for (let eventTarget of eventTargets) { |
| 90 | eventTarget.removeEventListener(event, listener as EventListener, options); |
| 91 | } |
| 92 | }; |
| 93 | } |
no test coverage detected