'use client' import type { FC } from 'react' import React, { useCallback, useState } from 'react' import { useBoolean } from 'ahooks' import { RiArrowDownSLine } from '@remixicon/react' import { useTranslation } from 'react-i18next' import FileIcon from '../document-file-icon' import DocumentList from './document-list' import type { DocumentItem, ParentMode, SimpleDocumentDetail } from '@/models/datasets' import { ProcessMode } from '@/models/datasets' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' import cn from '@/utils/classnames' import SearchInput from '@/app/components/base/search-input' import { GeneralType, ParentChildType } from '@/app/components/base/icons/src/public/knowledge' import { useDocumentList } from '@/service/knowledge/use-document' import Loading from '@/app/components/base/loading' type Props = { datasetId: string value: { name?: string extension?: string processMode?: ProcessMode parentMode?: ParentMode } onChange: (value: SimpleDocumentDetail) => void } const DocumentPicker: FC = ({ datasetId, value, onChange, }) => { const { t } = useTranslation() const { name, extension, processMode, parentMode, } = value const [query, setQuery] = useState('') const { data } = useDocumentList({ datasetId, query: { keyword: query, page: 1, limit: 20, }, }) const documentsList = data?.data const isParentChild = processMode === ProcessMode.parentChild const TypeIcon = isParentChild ? ParentChildType : GeneralType const [open, { set: setOpen, toggle: togglePopup, }] = useBoolean(false) const ArrowIcon = RiArrowDownSLine const handleChange = useCallback(({ id }: DocumentItem) => { onChange(documentsList?.find(item => item.id === id) as SimpleDocumentDetail) setOpen(false) }, [documentsList, onChange, setOpen]) return (
{name || '--'}
{isParentChild ? t('dataset.chunkingMode.parentChild') : t('dataset.chunkingMode.general')} {isParentChild && ` ยท ${!parentMode ? '--' : parentMode === 'paragraph' ? t('dataset.parentMode.paragraph') : t('dataset.parentMode.fullDoc')}`}
{documentsList ? ( ({ id: d.id, name: d.name, extension: d.data_source_detail_dict?.upload_file?.extension || '', }))} onChange={handleChange} /> ) : (
)}
) } export default React.memo(DocumentPicker)