import { EmptyType } from '@/components/empty/constant'; import Empty from '@/components/empty/empty'; import HighLightMarkdown from '@/components/highlight-markdown'; import { FileIcon } from '@/components/icon-font'; import { ImageWithPopover } from '@/components/image'; import { Input } from '@/components/originui/input'; import { SkeletonCard } from '@/components/skeleton-card'; import { Button } from '@/components/ui/button'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { RAGFlowPagination } from '@/components/ui/ragflow-pagination'; import { IReference } from '@/interfaces/database/chat'; import { cn } from '@/lib/utils'; import DOMPurify from 'dompurify'; import { isEmpty } from 'lodash'; import { BrainCircuit, Search, X } from 'lucide-react'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ISearchAppDetailProps } from '../next-searches/hooks'; import PdfDrawer from './document-preview-modal'; import { ISearchReturnProps } from './hooks'; import './index.less'; import MarkdownContent from './markdown-content'; import MindMapDrawer from './mindmap-drawer'; import RetrievalDocuments from './retrieval-documents'; export default function SearchingView({ setIsSearching, searchData, handleClickRelatedQuestion, handleTestChunk, setSelectedDocumentIds, answer, sendingLoading, relatedQuestions, isFirstRender, selectedDocumentIds, isSearchStrEmpty, searchStr, stopOutputMessage, visible, hideModal, documentId, selectedChunk, clickDocumentButton, mindMapVisible, hideMindMapModal, showMindMapModal, mindMapLoading, mindMap, chunks, total, handleSearch, pagination, onChange, }: ISearchReturnProps & { setIsSearching?: Dispatch>; searchData: ISearchAppDetailProps; }) { const { t } = useTranslation(); // useEffect(() => { // const changeLanguage = async () => { // await i18n.changeLanguage('zh'); // }; // changeLanguage(); // }, [i18n]); const [searchtext, setSearchtext] = useState(''); const [retrievalLoading, setRetrievalLoading] = useState(false); useEffect(() => { setSearchtext(searchStr); }, [searchStr, setSearchtext]); return (
{/* search header */}

{ setIsSearching?.(false); }} > RAGFlow

{ setSearchtext(e.target.value); }} disabled={sendingLoading} onKeyUp={(e) => { if (e.key === 'Enter') { handleSearch(searchtext); } }} />
{ setSearchtext(''); handleClickRelatedQuestion(''); }} /> |
{/* search body */}
{searchData.search_config.summary && !isSearchStrEmpty && ( <>
{t('search.AISummary')}
{isEmpty(answer) && sendingLoading ? ( ) : ( answer.answer && (
) )} {answer.answer && !sendingLoading && (
)} )} {/* retrieval documents */} {!isSearchStrEmpty && !sendingLoading && ( <>
{ setRetrievalLoading(loading); }} >
{/*
*/} )}
{chunks?.length > 0 && ( <> {chunks.map((chunk, index) => { return (
{chunk.content_with_weight}
clickDocumentButton(chunk.doc_id, chunk as any) } > {chunk.docnm_kwd}
{index < chunks.length - 1 && (
)}
); })} )} {relatedQuestions?.length > 0 && searchData.search_config.related_search && ( <>

{t('search.relatedSearch')}

{relatedQuestions?.map((x, idx) => ( ))}
)}
{!isSearchStrEmpty && !retrievalLoading && !answer.answer && !sendingLoading && total <= 0 && chunks?.length <= 0 && relatedQuestions?.length <= 0 && (
)}
{total > 0 && (
)}
{mindMapVisible && (
)}
{!mindMapVisible && !isFirstRender && !isSearchStrEmpty && !isEmpty(searchData.search_config.kb_ids) && searchData.search_config.query_mindmap && (
{/* */}
{t('chunk.mind')}
)} {visible && ( )}
); }