import camelcase from 'camelcase'; import { useMemo } from 'react'; import { Listener } from '../listener'; type Props = { events: string[]; listeners: Record any>; }; export function HandleEvents(props: Props) { const { events, listeners: _listeners } = props; const eventMap = useMemo(() => createEventMap(events), events); const listeners = Object.fromEntries(Object.entries(_listeners).filter(([key]) => key in eventMap)) as unknown as Record void>; return ( <> {Object.keys(listeners).map(key => { const eventName = eventMap[key]; const listener = listeners[key]; return listener ? : null; })} ); } function createEventMap(events: string[]): Record { return events.reduce((acc, eventName) => { const key = camelcase(`on_${eventName}`); return { [key]: eventName, ...acc, }; }, {}); }