1 line
2.3 KiB
Plaintext
1 line
2.3 KiB
Plaintext
{"version":3,"sources":["../src/use-event-listeners.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\"\n\ninterface EventListeners {\n add<K extends keyof DocumentEventMap>(\n el: EventTarget,\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions,\n ): void\n add(\n el: EventTarget,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void\n remove<K extends keyof DocumentEventMap>(\n el: EventTarget,\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions,\n ): void\n remove(\n el: EventTarget,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void\n}\n\nexport function useEventListeners(): EventListeners {\n const listeners = useRef(new Map())\n const currentListeners = listeners.current\n\n const add = useCallback((el: any, type: any, listener: any, options: any) => {\n listeners.current.set(listener, { type, el, options })\n el.addEventListener(type, listener, options)\n }, [])\n\n const remove = useCallback(\n (el: any, type: any, listener: any, options: any) => {\n el.removeEventListener(type, listener, options)\n listeners.current.delete(listener)\n },\n [],\n )\n\n useEffect(\n () => () => {\n currentListeners.forEach((value, key) => {\n remove(value.el, value.type, key, value.options)\n })\n },\n [remove, currentListeners],\n )\n\n return { add, remove }\n}\n"],"mappings":";;;AAAA,SAAS,aAAa,WAAW,cAAc;AA6BxC,SAAS,oBAAoC;AAClD,QAAM,YAAY,OAAO,oBAAI,IAAI,CAAC;AAClC,QAAM,mBAAmB,UAAU;AAEnC,QAAM,MAAM,YAAY,CAAC,IAAS,MAAW,UAAe,YAAiB;AAC3E,cAAU,QAAQ,IAAI,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC;AACrD,OAAG,iBAAiB,MAAM,UAAU,OAAO;AAAA,EAC7C,GAAG,CAAC,CAAC;AAEL,QAAM,SAAS;AAAA,IACb,CAAC,IAAS,MAAW,UAAe,YAAiB;AACnD,SAAG,oBAAoB,MAAM,UAAU,OAAO;AAC9C,gBAAU,QAAQ,OAAO,QAAQ;AAAA,IACnC;AAAA,IACA,CAAC;AAAA,EACH;AAEA;AAAA,IACE,MAAM,MAAM;AACV,uBAAiB,QAAQ,CAAC,OAAO,QAAQ;AACvC,eAAO,MAAM,IAAI,MAAM,MAAM,KAAK,MAAM,OAAO;AAAA,MACjD,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,gBAAgB;AAAA,EAC3B;AAEA,SAAO,EAAE,KAAK,OAAO;AACvB;","names":[]} |