UNPKG

@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
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> );*/ };