@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
39 lines (38 loc) • 1.51 kB
JavaScript
import * as React from 'react';
import { NOOP } from '../../utils/NOOP';
import { ObservableReactValue } from '../../utils/observers';
import { EventsEmitter } from '../../models/EventsEmitter';
export const useApiRef = (userApiRef) => {
const apiRef = React.useRef({
onChangeThread: NOOP,
openNewThread: NOOP,
updateScrollButtonState: NOOP,
deleteThread: NOOP,
getProgressStatus: () => '',
sendUserMessage: () => new Promise((resolve) => setTimeout(resolve, 100)),
onEditMessage: () => new Promise((resolve) => setTimeout(resolve, 100)),
setProgressStatus: NOOP,
handleChangeBranch: NOOP,
getCurrentThread: () => undefined,
getThreadById: () => undefined,
getAllMessages: () => [],
getBranchMessages: () => [],
getAllThreads: () => [],
allMessages: new ObservableReactValue([]),
branch: new ObservableReactValue([]),
getListener: () => undefined,
getConversationBlockHeight: () => 0,
setMenuDrawerOpen: NOOP,
setActiveTool: NOOP,
setDeleteItem: NOOP,
setMessageText: NOOP,
emitter: EventsEmitter.getMockMethods(),
});
React.useMemo(() => {
if (userApiRef) {
const { getListener, branch, allMessages, updateScrollButtonState, ...otherProps } = apiRef.current;
userApiRef.current = otherProps;
}
}, [userApiRef]);
return apiRef;
};