import React from 'react'; import { cssClasses, strings } from '@douyinfe/semi-foundation/aiChatDialogue/constants'; import { IconCode, IconWord, IconExcel, IconPdf, IconSendMsgStroked, IconVideo } from '@douyinfe/semi-icons'; import { Reference } from '@douyinfe/semi-foundation/aiChatDialogue/foundation'; import { Image } from '../../../index'; import cls from 'classnames'; export interface ReferenceWidgetProps { references: Reference[] } const prefixCls = cssClasses.PREFIX_REFERENCES; const referencePrefixCls = cssClasses.PREFIX_REFERENCE; const { DOCUMENT_TYPES, IMAGE_TYPES, PDF_TYPES, EXCEL_TYPES, CODE_TYPES, VIDEO_TYPES } = strings; export const ReferenceWidget = (props: ReferenceWidgetProps) => { const { references } = props; const renderReferenceIcon = (name: string) => { if (name) { const extension = name.split('.').pop(); let icon = null; let type = ''; if (DOCUMENT_TYPES.includes(extension)) { icon = ; type = 'word'; } else if (PDF_TYPES.includes(extension)) { icon = ; type = 'pdf'; } else if (EXCEL_TYPES.includes(extension)) { icon = ; type = 'excel'; } else if (CODE_TYPES.includes(extension)) { icon = ; type = 'code'; } else if (VIDEO_TYPES.includes(extension)) { icon = ; type = 'video'; } return icon && {icon}; } return null; }; const isImage = (name: string) => { if (name) { const extension = name.split('.').pop(); return IMAGE_TYPES.includes(extension); } return false; }; const renderReferenceImage = (reference: Reference) => { if (reference.url && isImage(reference.name)) { return ; } return null; }; return (
{references.map((reference) => ( // todo: 确认背景色和一行分布几个
{renderReferenceIcon(reference.name)} {renderReferenceImage(reference)} {reference.name || reference.content}
))}
); };