import React, { useMemo } from 'react'
import Markdown from 'react-markdown'
import {
InfioBlockAction,
ParsedInfioBlock,
parseinfioBlocks,
} from '../../utils/parse-infio-block'
import MarkdownActionBlock from './MarkdownActionBlock'
import MarkdownReferenceBlock from './MarkdownReferenceBlock'
function ReactMarkdown({
onApply,
isApplying,
children,
}: {
onApply: (blockInfo: {
content: string
filename?: string
startLine?: number
endLine?: number
}) => void
children: string
isApplying: boolean
}) {
const blocks: ParsedInfioBlock[] = useMemo(
() => parseinfioBlocks(children),
[children],
)
return (
<>
{blocks.map((block, index) =>
block.type === 'string' ? (
{block.content}
) : block.startLine && block.endLine && block.filename && block.action === InfioBlockAction.Reference ? (
) : (
{block.content}
),
)}
>
)
}
export default React.memo(ReactMarkdown)