|
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'], |
|
[ |
|
'naive', |
|
'resume', |
|
'manual', |
|
'paper', |
|
'book', |
|
'laws', |
|
'presentation', |
|
'one', |
|
'qa', |
|
'knowledge_graph', |
|
], |
|
], |
|
[ |
|
['doc', 'docx'], |
|
[ |
|
'naive', |
|
'resume', |
|
'book', |
|
'laws', |
|
'one', |
|
'qa', |
|
'manual', |
|
'knowledge_graph', |
|
], |
|
], |
|
[ |
|
['xlsx', 'xls'], |
|
['naive', 'qa', 'table', 'one', 'knowledge_graph'], |
|
], |
|
[['ppt', 'pptx'], ['presentation']], |
|
[ |
|
['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tif', 'tiff', 'webp', 'svg', 'ico'], |
|
['picture'], |
|
], |
|
[ |
|
['txt'], |
|
[ |
|
'naive', |
|
'resume', |
|
'book', |
|
'laws', |
|
'one', |
|
'qa', |
|
'table', |
|
'knowledge_graph', |
|
], |
|
], |
|
[ |
|
['csv'], |
|
[ |
|
'naive', |
|
'resume', |
|
'book', |
|
'laws', |
|
'one', |
|
'qa', |
|
'table', |
|
'knowledge_graph', |
|
], |
|
], |
|
[['md'], ['naive', 'qa', 'knowledge_graph']], |
|
[['json'], ['naive', 'knowledge_graph']], |
|
[['eml'], ['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: string, |
|
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( |
|
['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table'], |
|
parserList, |
|
); |
|
}, [parserList, documentExtension]); |
|
|
|
useEffect(() => { |
|
setSelectedTag(parserId); |
|
}, [parserId, documentId]); |
|
|
|
const handleChange = (tag: string) => { |
|
handleChunkMethodSelectChange(tag); |
|
setSelectedTag(tag); |
|
}; |
|
|
|
return { parserList: nextParserList, handleChange, selectedTag }; |
|
}; |
|
|
|
const hideAutoKeywords = ['qa', 'table', 'resume', 'knowledge_graph', 'tag']; |
|
|
|
export const useShowAutoKeywords = () => { |
|
const showAutoKeywords = useCallback((selectedTag: string) => { |
|
return hideAutoKeywords.every((x) => selectedTag !== x); |
|
}, []); |
|
|
|
return showAutoKeywords; |
|
}; |
|
|