import message from '@/components/ui/message'; import { Spin } from '@/components/ui/spin'; import request from '@/utils/request'; import classNames from 'classnames'; import mammoth from 'mammoth'; import { useEffect, useState } from 'react'; interface DocPreviewerProps { className?: string; url: string; } export const DocPreviewer: React.FC = ({ className, url, }) => { // const url = useGetDocumentUrl(); const [htmlContent, setHtmlContent] = useState(''); const [loading, setLoading] = useState(false); const fetchDocument = async () => { setLoading(true); const res = await request(url, { method: 'GET', responseType: 'blob', onError: () => { message.error('Document parsing failed'); console.error('Error loading document:', url); }, }); try { const arrayBuffer = await res.data.arrayBuffer(); const result = await mammoth.convertToHtml( { arrayBuffer }, { includeDefaultStyleMap: true }, ); const styledContent = result.value .replace(/

/g, '

') .replace(//g, ''); setHtmlContent(styledContent); } catch (err) { message.error('Document parsing failed'); console.error('Error parsing document:', err); } setLoading(false); }; useEffect(() => { if (url) { fetchDocument(); } }, [url]); return (

{loading && (
)} {!loading &&
}
); };