Files
cinny/src/app/hooks/useMatrixEventRenderer.ts
T
Lotus Bot 61a1f008d0 chore: upgrade i18next 26, prettier 3, fontsource-variable, domhandler 6, lint-staged 17
- i18next 23->26 + react-i18next 15->17
- prettier 2->3, reformat all files
- replace @fontsource/inter with @fontsource-variable/inter 5, update import path
- domhandler 5->6 (aligns with transitive deps)
- lint-staged 16->17
2026-05-21 23:30:50 -04:00

32 lines
889 B
TypeScript

import { ReactNode } from 'react';
export type EventRenderer<T extends unknown[]> = (...args: T) => ReactNode;
export type EventRendererOpts<T extends unknown[]> = Record<string, EventRenderer<T>>;
export type RenderMatrixEvent<T extends unknown[]> = (
eventType: string,
isStateEvent: boolean,
...args: T
) => ReactNode;
export const useMatrixEventRenderer =
<T extends unknown[]>(
typeToRenderer: EventRendererOpts<T>,
renderStateEvent?: EventRenderer<T>,
renderEvent?: EventRenderer<T>,
): RenderMatrixEvent<T> =>
(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;
};