import { useGetKnowledgeSearchParams } from '@/hooks/route-hook'; import api, { api_host } from '@/utils/api'; import { useSize } from 'ahooks'; import { CustomTextRenderer } from 'node_modules/react-pdf/dist/esm/shared/types'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { useGetPipelineResultSearchParams } from '../../hooks'; export const useDocumentResizeObserver = () => { const [containerWidth, setContainerWidth] = useState(); const [containerRef, setContainerRef] = useState(null); const size = useSize(containerRef); const onResize = useCallback((width?: number) => { if (width) { setContainerWidth(width); } }, []); useEffect(() => { onResize(size?.width); }, [size?.width, onResize]); return { containerWidth, setContainerRef }; }; function highlightPattern(text: string, pattern: string, pageNumber: number) { if (pageNumber === 2) { return `${text}`; } if (text.trim() !== '' && pattern.match(text)) { // return pattern.replace(text, (value) => `${value}`); return `${text}`; } return text.replace(pattern, (value) => `${value}`); } export const useHighlightText = (searchText: string = '') => { const textRenderer: CustomTextRenderer = useCallback( (textItem) => { return highlightPattern(textItem.str, searchText, textItem.pageNumber); }, [searchText], ); return textRenderer; }; export const useGetDocumentUrl = (isAgent: boolean) => { const { documentId } = useGetKnowledgeSearchParams(); const { createdBy, documentId: id } = useGetPipelineResultSearchParams(); const url = useMemo(() => { if (isAgent) { return api.downloadFile + `?id=${id}&created_by=${createdBy}`; } return `${api_host}/document/get/${documentId}`; }, [createdBy, documentId, id, isAgent]); return url; };