|
|
|
@@ -101,7 +101,7 @@ const MarkdownContent = ({ |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
const getPopoverContent = useCallback( |
|
|
|
const getReferenceInfo = useCallback( |
|
|
|
(chunkIndex: number) => { |
|
|
|
const chunks = reference?.chunks ?? []; |
|
|
|
const chunkItem = chunks[chunkIndex]; |
|
|
|
@@ -114,6 +114,31 @@ const MarkdownContent = ({ |
|
|
|
const fileExtension = documentId ? getExtension(document?.doc_name) : ''; |
|
|
|
const imageId = chunkItem?.image_id; |
|
|
|
|
|
|
|
return { |
|
|
|
documentUrl, |
|
|
|
fileThumbnail, |
|
|
|
fileExtension, |
|
|
|
imageId, |
|
|
|
chunkItem, |
|
|
|
documentId, |
|
|
|
document, |
|
|
|
}; |
|
|
|
}, |
|
|
|
[fileThumbnails, reference?.chunks, reference?.doc_aggs], |
|
|
|
); |
|
|
|
|
|
|
|
const getPopoverContent = useCallback( |
|
|
|
(chunkIndex: number) => { |
|
|
|
const { |
|
|
|
documentUrl, |
|
|
|
fileThumbnail, |
|
|
|
fileExtension, |
|
|
|
imageId, |
|
|
|
chunkItem, |
|
|
|
documentId, |
|
|
|
document, |
|
|
|
} = getReferenceInfo(chunkIndex); |
|
|
|
|
|
|
|
return ( |
|
|
|
<div key={chunkItem?.id} className="flex gap-2"> |
|
|
|
{imageId && ( |
|
|
|
@@ -171,20 +196,34 @@ const MarkdownContent = ({ |
|
|
|
</div> |
|
|
|
); |
|
|
|
}, |
|
|
|
[reference, fileThumbnails, handleDocumentButtonClick], |
|
|
|
[getReferenceInfo, handleDocumentButtonClick], |
|
|
|
); |
|
|
|
|
|
|
|
const renderReference = useCallback( |
|
|
|
(text: string) => { |
|
|
|
let replacedText = reactStringReplace(text, reg, (match, i) => { |
|
|
|
const chunks = reference?.chunks ?? []; |
|
|
|
const chunkIndex = getChunkIndex(match); |
|
|
|
const chunkItem = chunks[chunkIndex]; |
|
|
|
const imageId = chunkItem?.image_id; |
|
|
|
|
|
|
|
const { documentUrl, fileExtension, imageId, chunkItem, documentId } = |
|
|
|
getReferenceInfo(chunkIndex); |
|
|
|
|
|
|
|
const docType = chunkItem?.doc_type; |
|
|
|
|
|
|
|
return showImage(docType) ? ( |
|
|
|
<Image id={imageId} className={styles.referenceChunkImage}></Image> |
|
|
|
<Image |
|
|
|
id={imageId} |
|
|
|
className={styles.referenceInnerChunkImage} |
|
|
|
onClick={ |
|
|
|
documentId |
|
|
|
? handleDocumentButtonClick( |
|
|
|
documentId, |
|
|
|
chunkItem, |
|
|
|
fileExtension === 'pdf', |
|
|
|
documentUrl, |
|
|
|
) |
|
|
|
: () => {} |
|
|
|
} |
|
|
|
></Image> |
|
|
|
) : ( |
|
|
|
<Popover content={getPopoverContent(chunkIndex)} key={i}> |
|
|
|
<InfoCircleOutlined className={styles.referenceIcon} /> |
|
|
|
@@ -198,7 +237,7 @@ const MarkdownContent = ({ |
|
|
|
|
|
|
|
return replacedText; |
|
|
|
}, |
|
|
|
[getPopoverContent, reference?.chunks], |
|
|
|
[getPopoverContent, getReferenceInfo, handleDocumentButtonClick], |
|
|
|
); |
|
|
|
|
|
|
|
return ( |