@plteam/chat-ui
Version:
CUI Kit is a free and open-source library for creating AI assistant chat interfaces, built with React, Material UI, and TypeScript
33 lines (32 loc) • 1.46 kB
JavaScript
import * as React from 'react';
import { AdapterModel } from '../../models/AdapterModel';
export const AdapterProvider = ({ children, transformThread, transformMessage, reverseMessageTransforming }) => {
const baseThreadTransformer = React.useCallback((thread) => {
if (!!transformMessage && Array.isArray(thread.messages)) {
return {
...thread,
messages: thread.messages.map(transformMessage)
};
}
return thread;
}, [transformMessage]);
const value = React.useMemo(() => ({
transformThread: transformThread ?? baseThreadTransformer,
transformMessage,
reverseMessageTransforming,
}), [transformThread, transformMessage, baseThreadTransformer, reverseMessageTransforming]);
React.useMemo(() => {
AdapterModel.transformThread = value.transformThread;
AdapterModel.transformMessage = value.transformMessage;
AdapterModel.reverseMessageTransforming = value.reverseMessageTransforming;
}, [value]);
return (
// eslint-disable-next-line react/jsx-no-useless-fragment
React.createElement(React.Fragment, null, children));
// We abandoned (perhaps temporarily) React Context because it created unnecessary renders and slowed down the chat
/*return (
<AdapterContext.Provider value={value}>
{children}
</AdapterContext.Provider>
);*/
};