import { isUndefined } from "lodash-es"; import { useEffect, useRef, useState } from "react"; import { markdownServiceClient } from "@/grpcweb"; import { Node } from "@/types/proto/api/v2/markdown_service"; import Renderer from "./Renderer"; interface Props { content: string; nodes?: Node[]; className?: string; onMemoContentClick?: (e: React.MouseEvent) => void; } const MemoContent: React.FC = (props: Props) => { const { className, content, onMemoContentClick } = props; const [nodes, setNodes] = useState(props.nodes ?? []); const memoContentContainerRef = useRef(null); useEffect(() => { if (!isUndefined(props.nodes)) { return; } markdownServiceClient .parseMarkdown({ markdown: content, }) .then(({ nodes }) => { setNodes(nodes); }); }, [content, props.nodes]); const handleMemoContentClick = async (e: React.MouseEvent) => { if (onMemoContentClick) { onMemoContentClick(e); } }; return (
{nodes.map((node, index) => ( ))}
); }; export default MemoContent;