Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

hooks.ts 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { useSelectParserList } from '@/hooks/user-setting-hooks';
  2. import { useEffect, useMemo, useState } from 'react';
  3. const ParserListMap = new Map([
  4. [
  5. ['pdf'],
  6. [
  7. 'naive',
  8. 'resume',
  9. 'manual',
  10. 'paper',
  11. 'book',
  12. 'laws',
  13. 'presentation',
  14. 'one',
  15. 'qa',
  16. ],
  17. ],
  18. [
  19. ['doc', 'docx'],
  20. ['naive', 'resume', 'book', 'laws', 'one', 'qa', 'manual'],
  21. ],
  22. [
  23. ['xlsx', 'xls'],
  24. ['naive', 'qa', 'table', 'one'],
  25. ],
  26. [['ppt', 'pptx'], ['presentation']],
  27. [
  28. ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tif', 'tiff', 'webp', 'svg', 'ico'],
  29. ['picture'],
  30. ],
  31. [['txt'], ['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table']],
  32. [['csv'], ['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table']],
  33. [['md'], ['naive', 'qa']],
  34. [['json'], ['naive']],
  35. ]);
  36. const getParserList = (
  37. values: string[],
  38. parserList: Array<{
  39. value: string;
  40. label: string;
  41. }>,
  42. ) => {
  43. return parserList.filter((x) => values?.some((y) => y === x.value));
  44. };
  45. export const useFetchParserListOnMount = (
  46. documentId: string,
  47. parserId: string,
  48. documentExtension: string,
  49. ) => {
  50. const [selectedTag, setSelectedTag] = useState('');
  51. const parserList = useSelectParserList();
  52. const nextParserList = useMemo(() => {
  53. const key = [...ParserListMap.keys()].find((x) =>
  54. x.some((y) => y === documentExtension),
  55. );
  56. if (key) {
  57. const values = ParserListMap.get(key);
  58. return getParserList(values ?? [], parserList);
  59. }
  60. return getParserList(
  61. ['naive', 'resume', 'book', 'laws', 'one', 'qa', 'table'],
  62. parserList,
  63. );
  64. }, [parserList, documentExtension]);
  65. useEffect(() => {
  66. setSelectedTag(parserId);
  67. }, [parserId, documentId]);
  68. const handleChange = (tag: string) => {
  69. // const nextSelectedTag = checked ? tag : selectedTag;
  70. setSelectedTag(tag);
  71. };
  72. return { parserList: nextParserList, handleChange, selectedTag };
  73. };