diff --git a/src/useCustomEvent.ts b/src/useCustomEvent.ts index dbf28cc..0704080 100644 --- a/src/useCustomEvent.ts +++ b/src/useCustomEvent.ts @@ -4,7 +4,7 @@ import { useEmitter } from './useEmitter'; import type { Element, Options } from './types'; interface Params { - readonly eventName: string; + readonly eventName: string | string[]; onSignal?: (e: CustomEvent) => void; readonly element?: Element; readonly options?: Options; diff --git a/src/useEmitter.ts b/src/useEmitter.ts index b66156f..0919d1d 100644 --- a/src/useEmitter.ts +++ b/src/useEmitter.ts @@ -1,10 +1,23 @@ import type { Element } from './types'; -export const useEmitter = (eventName: string, element: Element = window) => { +export const useEmitter = ( + eventName: string | string[], + element: Element = window +) => { const callEvent = (data: T) => { - const event = new CustomEvent(eventName, { detail: data }); + const x = (z: string) => { + const event = new CustomEvent(z, { detail: data }); - element.dispatchEvent(event); + element.dispatchEvent(event); + }; + + if (typeof eventName === 'string') { + x(eventName); + } else { + eventName.map((z) => { + x(z); + }); + } }; return callEvent; diff --git a/src/useListener.ts b/src/useListener.ts index 056a73e..ad8a156 100644 --- a/src/useListener.ts +++ b/src/useListener.ts @@ -3,7 +3,7 @@ import { useEffect } from 'react'; import type { Element, Options } from './types'; export const useListener = ( - eventName: string, + eventName: string | string[], onSignal: (e: CustomEvent) => void, element: Element = window, options: Options = {} @@ -13,8 +13,17 @@ export const useListener = ( onSignal(e as CustomEvent); }; - element.addEventListener(eventName, handleSignal, options); + const x = (eventName: string) => { + element.addEventListener(eventName, handleSignal, options); - return () => element.removeEventListener(eventName, handleSignal, options); + return () => + element.removeEventListener(eventName, handleSignal, options); + }; + + if (typeof eventName === 'string') { + x(eventName); + } else { + eventName.map((z) => x(z)); + } }, [element, eventName, onSignal, options]); };