@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 2.71 kB
Source Map (JSON)
{"version":3,"file":"StreamdownRender.mjs","names":[],"sources":["../../../src/Markdown/SyntaxMarkdown/StreamdownRender.tsx"],"sourcesContent":["'use client';\n\nimport { marked } from 'marked';\nimport { memo, useId, useMemo } from 'react';\nimport Markdown, { Options } from 'react-markdown';\n\nimport {\n useMarkdownComponents,\n useMarkdownContent,\n useMarkdownRehypePlugins,\n useMarkdownRemarkPlugins,\n} from '@/hooks/useMarkdown';\n\nimport { styles } from './style';\n\nconst parseMarkdownIntoBlocks = (markdown: string): string[] => {\n const tokens = marked.lexer(markdown);\n return tokens.map((token) => token.raw);\n};\n\nconst StreamdownBlock = memo<Options>(\n ({ children, ...rest }) => {\n return <Markdown {...rest}>{children}</Markdown>;\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n\nStreamdownBlock.displayName = 'StreamdownBlock';\n\nexport const StreamdownRender = memo<Options>(\n ({ children, ...rest }) => {\n const escapedContent = useMarkdownContent(children || '');\n const components = useMarkdownComponents();\n const rehypePluginsList = useMarkdownRehypePlugins();\n const remarkPluginsList = useMarkdownRemarkPlugins();\n const generatedId = useId();\n const blocks = useMemo(\n () => parseMarkdownIntoBlocks(typeof escapedContent === 'string' ? escapedContent : ''),\n [escapedContent],\n );\n\n return (\n <div className={styles.animated}>\n {blocks.map((block, index) => (\n <StreamdownBlock\n {...rest}\n components={components}\n key={`${generatedId}-block_${index}`}\n rehypePlugins={rehypePluginsList}\n remarkPlugins={remarkPluginsList}\n >\n {block}\n </StreamdownBlock>\n ))}\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\nStreamdownRender.displayName = 'StreamdownRender';\n\nexport default StreamdownRender;\n"],"mappings":";;;;;;;;;;;;;AAeA,MAAM,2BAA2B,aAA+B;AAE9D,QADe,OAAO,MAAM,SAAS,CACvB,KAAK,UAAU,MAAM,IAAI;;AAGzC,MAAM,kBAAkB,MACrB,EAAE,UAAU,GAAG,WAAW;AACzB,QAAO,oBAAC;EAAS,GAAI;EAAO;GAAoB;IAEjD,WAAW,cAAc,UAAU,aAAa,UAAU,SAC5D;AAED,gBAAgB,cAAc;AAE9B,MAAa,mBAAmB,MAC7B,EAAE,UAAU,GAAG,WAAW;CACzB,MAAM,iBAAiB,mBAAmB,YAAY,GAAG;CACzD,MAAM,aAAa,uBAAuB;CAC1C,MAAM,oBAAoB,0BAA0B;CACpD,MAAM,oBAAoB,0BAA0B;CACpD,MAAM,cAAc,OAAO;CAC3B,MAAM,SAAS,cACP,wBAAwB,OAAO,mBAAmB,WAAW,iBAAiB,GAAG,EACvF,CAAC,eAAe,CACjB;AAED,QACE,oBAAC;EAAI,WAAW,OAAO;YACpB,OAAO,KAAK,OAAO,UAClB,8BAAC;GACC,GAAI;GACQ;GACZ,KAAK,GAAG,YAAY,SAAS;GAC7B,eAAe;GACf,eAAe;KAEd,MACe,CAClB;GACE;IAGT,WAAW,cAAc,UAAU,aAAa,UAAU,SAC5D;AACD,iBAAiB,cAAc;AAE/B,+BAAe"}