import { ReactNode } from 'react'; export type EventRenderer = (...args: T) => ReactNode; export type EventRendererOpts = Record>; export type RenderMatrixEvent = ( eventType: string, isStateEvent: boolean, ...args: T ) => ReactNode; export const useMatrixEventRenderer = ( typeToRenderer: EventRendererOpts, renderStateEvent?: EventRenderer, renderEvent?: EventRenderer ): RenderMatrixEvent => (eventType, isStateEvent, ...args) => { const renderer = typeToRenderer[eventType]; if (typeToRenderer[eventType]) return renderer(...args); if (isStateEvent && renderStateEvent) { return renderStateEvent(...args); } if (!isStateEvent && renderEvent) { return renderEvent(...args); } return null; };