import { DocumentParserType } from '@/constants/knowledge'; import { useHandleChunkMethodSelectChange } from '@/hooks/logic-hooks'; import { useSelectParserList } from '@/hooks/user-setting-hooks'; import { FormInstance } from 'antd'; import { useCallback, useEffect, useMemo, useState } from 'react'; const ParserListMap = new Map([ [ ['pdf'], [ DocumentParserType.Naive, DocumentParserType.Resume, DocumentParserType.Manual, DocumentParserType.Paper, DocumentParserType.Book, DocumentParserType.Laws, DocumentParserType.Presentation, DocumentParserType.One, DocumentParserType.Qa, DocumentParserType.KnowledgeGraph, ], ], [ ['doc', 'docx'], [ DocumentParserType.Naive, DocumentParserType.Resume, DocumentParserType.Book, DocumentParserType.Laws, DocumentParserType.One, DocumentParserType.Qa, DocumentParserType.Manual, DocumentParserType.KnowledgeGraph, ], ], [ ['xlsx', 'xls'], [ DocumentParserType.Naive, DocumentParserType.Qa, DocumentParserType.Table, DocumentParserType.One, DocumentParserType.KnowledgeGraph, ], ], [['ppt', 'pptx'], [DocumentParserType.Presentation]], [ ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tif', 'tiff', 'webp', 'svg', 'ico'], [DocumentParserType.Picture], ], [ ['txt'], [ DocumentParserType.Naive, DocumentParserType.Resume, DocumentParserType.Book, DocumentParserType.Laws, DocumentParserType.One, DocumentParserType.Qa, DocumentParserType.Table, DocumentParserType.KnowledgeGraph, ], ], [ ['csv'], [ DocumentParserType.Naive, DocumentParserType.Resume, DocumentParserType.Book, DocumentParserType.Laws, DocumentParserType.One, DocumentParserType.Qa, DocumentParserType.Table, DocumentParserType.KnowledgeGraph, ], ], [ ['md'], [ DocumentParserType.Naive, DocumentParserType.Qa, DocumentParserType.KnowledgeGraph, ], ], [['json'], [DocumentParserType.Naive, DocumentParserType.KnowledgeGraph]], [['eml'], [DocumentParserType.Email]], ]); const getParserList = ( values: string[], parserList: Array<{ value: string; label: string; }>, ) => { return parserList.filter((x) => values?.some((y) => y === x.value)); }; export const useFetchParserListOnMount = ( documentId: string, parserId: DocumentParserType, documentExtension: string, form: FormInstance, ) => { const [selectedTag, setSelectedTag] = useState(); const parserList = useSelectParserList(); const handleChunkMethodSelectChange = useHandleChunkMethodSelectChange(form); const nextParserList = useMemo(() => { const key = [...ParserListMap.keys()].find((x) => x.some((y) => y === documentExtension), ); if (key) { const values = ParserListMap.get(key); return getParserList(values ?? [], parserList); } return getParserList( [ DocumentParserType.Naive, DocumentParserType.Resume, DocumentParserType.Book, DocumentParserType.Laws, DocumentParserType.One, DocumentParserType.Qa, DocumentParserType.Table, ], parserList, ); }, [parserList, documentExtension]); useEffect(() => { setSelectedTag(parserId); }, [parserId, documentId]); const handleChange = (tag: string) => { handleChunkMethodSelectChange(tag); setSelectedTag(tag as DocumentParserType); }; return { parserList: nextParserList, handleChange, selectedTag }; }; const hideAutoKeywords = [ DocumentParserType.Qa, DocumentParserType.Table, DocumentParserType.Resume, DocumentParserType.KnowledgeGraph, DocumentParserType.Tag, ]; export const useShowAutoKeywords = () => { const showAutoKeywords = useCallback( (selectedTag: DocumentParserType | undefined) => { return hideAutoKeywords.every((x) => selectedTag !== x); }, [], ); return showAutoKeywords; };