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

26 lines (25 loc) 1.65 kB
import * as React from 'react'; import HistorySkeleton from '../HistorySkeleton'; import ThreadDeleteConfirm from '../ThreadDeleteConfirm'; import { useThreadsList } from './useThreadsList'; import ThreadListMapBlockGroupItem from './ThreadListMapBlockGroupItem'; import ThreadListItemMenu from '../ThreadListItemMenu'; import { useObserverValue } from '../../hooks/useObserverValue'; import { useHistoryContext } from '../../core/history/HistoryContext'; const ThreadsListMapBlock = () => { const { apiRef, loading, slots, slotProps, internal } = useHistoryContext(); const threads = useObserverValue(internal?.model.list) ?? []; const groupsMap = useThreadsList(threads, internal?.model) ?? {}; const setThread = (thread) => { if (internal?.model?.currentThread.value?.id !== thread.id) { apiRef.current?.onChangeCurrentThread?.({ thread }); apiRef.current?.onChangeThread(thread.id); } }; return (React.createElement(React.Fragment, null, React.createElement(slots.threadsList, { ...slotProps.threadsList }, (loading || !internal) ? (React.createElement(HistorySkeleton, null)) : (React.createElement(React.Fragment, null, groupsMap.map((groupModel, key) => (React.createElement(ThreadListMapBlockGroupItem, { key: groupModel.data.id, listGroupItem: groupModel, setThread: setThread, index: key, model: internal.model, slots: slots, slotProps: slotProps }))), React.createElement(ThreadListItemMenu, { model: internal.model })))), React.createElement(ThreadDeleteConfirm, null))); }; export default ThreadsListMapBlock;