Local modifications to ClusterLabs/Anvil by Alteeve
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

26 lines
849 B

import { MutableRefObject } from 'react';
import { MessageGroupForwardedRefContent } from '../components/MessageGroup';
type BuildMapToMessageSetterReturnType<T extends MapToInputTestID> = {
[MessageSetterID in keyof T]: MessageSetterFunction;
};
const buildMapToMessageSetter = <T extends MapToInputTestID>(
mapToID: T,
messageGroupRef: MutableRefObject<MessageGroupForwardedRefContent>,
): BuildMapToMessageSetterReturnType<T> =>
Object.entries(mapToID).reduce<BuildMapToMessageSetterReturnType<T>>(
(previous, [key, id]) => {
const setter: MessageSetterFunction = (message?) => {
messageGroupRef.current.setMessage?.call(null, id, message);
};
previous[key as keyof T] = setter;
return previous;
},
{} as BuildMapToMessageSetterReturnType<T>,
);
export default buildMapToMessageSetter;