feat: support button in markdown (#9876)

This commit is contained in:
crazywoola 2024-10-25 21:51:59 +08:00 committed by GitHub
parent ace7ffab5f
commit f7aacefcd6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,6 +20,7 @@ import { useChatContext } from '@/app/components/base/chat/chat/context'
import VideoGallery from '@/app/components/base/video-gallery'
import AudioGallery from '@/app/components/base/audio-gallery'
import SVGRenderer from '@/app/components/base/svg-gallery'
import Button from '@/app/components/base/button'
// Available language https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_HLJS.MD
const capitalizationLanguageNameMap: Record<string, string> = {
@ -240,6 +241,22 @@ const Link = ({ node, ...props }: any) => {
}
}
const MarkdownButton = ({ node }: any) => {
const { onSend } = useChatContext()
const variant = node.properties.dataVariant
const message = node.properties.dataMessage
const size = node.properties.dataSize
return <Button variant={variant}
size={size}
className={cn('!h-8 !px-3 select-none')}
onClick={() => onSend?.(message)}
>
<span className='text-[13px]'>{node.children[0].value}</span>
</Button>
}
MarkdownButton.displayName = 'MarkdownButton'
export function Markdown(props: { content: string; className?: string }) {
const latexContent = preprocessLaTeX(props.content)
return (
@ -271,6 +288,7 @@ export function Markdown(props: { content: string; className?: string }) {
audio: AudioBlock,
a: Link,
p: Paragraph,
button: MarkdownButton,
}}
linkTarget='_blank'
>