'use client' import type { FC } from 'react' import React, { useState } from 'react' import { useBoolean } from 'ahooks' import { RiArrowDownSLine, RiArrowUpSLine } from '@remixicon/react' import FileIcon from '../document-file-icon' import type { ParentMode, ProcessMode, SimpleDocumentDetail } 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 { 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 === 'hierarchical' const TypeIcon = isParentChild ? ParentChildType : GeneralType const [open, { set: setOpen, toggle: togglePopup, }] = useBoolean(false) const ArrowIcon = open ? RiArrowDownSLine : RiArrowUpSLine return (
{name || '--'}
{isParentChild ? 'Parent-Child' : 'General'} {isParentChild && ` ยท ${parentMode || '--'}`}
{documentsList ? (
{documentsList.map(item => (
{ onChange(item) setOpen(false) } } >
{item.name}
))}
) : (
)}
) } export default React.memo(DocumentPicker)