| // visit https://reactjs.org/docs/error-decoder.html?invariant=185 for the full message | // visit https://reactjs.org/docs/error-decoder.html?invariant=185 for the full message | ||||
| // or use the non-minified dev environment for full errors and additional helpful warnings. | // or use the non-minified dev environment for full errors and additional helpful warnings. | ||||
| const CodeBlock: any = memo(({ inline, className, children, ...props }: any) => { | |||||
| const CodeBlock: any = memo(({ inline, className, children = '', ...props }: any) => { | |||||
| const { theme } = useTheme() | const { theme } = useTheme() | ||||
| const [isSVG, setIsSVG] = useState(true) | const [isSVG, setIsSVG] = useState(true) | ||||
| const match = /language-(\w+)/.exec(className || '') | const match = /language-(\w+)/.exec(className || '') | ||||
| const { onSend } = useChatContext() | const { onSend } = useChatContext() | ||||
| const hidden_text = decodeURIComponent(node.properties.href.toString().split('abbr:')[1]) | const hidden_text = decodeURIComponent(node.properties.href.toString().split('abbr:')[1]) | ||||
| return <abbr className="cursor-pointer underline !decoration-primary-700 decoration-dashed" onClick={() => onSend?.(hidden_text)} title={node.children[0]?.value}>{node.children[0]?.value}</abbr> | |||||
| return <abbr className="cursor-pointer underline !decoration-primary-700 decoration-dashed" onClick={() => onSend?.(hidden_text)} title={node.children[0]?.value || ''}>{node.children[0]?.value || ''}</abbr> | |||||
| } | } | ||||
| else { | else { | ||||
| return <a {...props} target="_blank" className="cursor-pointer underline !decoration-primary-700 decoration-dashed">{children || 'Download'}</a> | return <a {...props} target="_blank" className="cursor-pointer underline !decoration-primary-700 decoration-dashed">{children || 'Download'}</a> |