"use client"; import { useEffect, useRef, useState } from "react"; import mermaid from "mermaid"; import { Block } from "@/lib/api"; interface MermaidViewerProps { block: Block; } export default function MermaidViewer({ block }: MermaidViewerProps) { const mermaidRef = useRef(null); const [renderError, setRenderError] = useState(null); useEffect(() => { mermaid.initialize({ startOnLoad: false, theme: "default", securityLevel: "loose", fontFamily: "inherit", }); }, []); useEffect(() => { const renderDiagram = async () => { if (!mermaidRef.current || !block.mermaid_code) return; try { setRenderError(null); mermaidRef.current.innerHTML = ""; const { svg } = await mermaid.render(`mermaid-exp-${block.id}`, block.mermaid_code); if (mermaidRef.current) { mermaidRef.current.innerHTML = svg; } } catch (error: any) { console.error("Mermaid parsing error:", error); setRenderError("Error al cargar el diagrama conceptual."); } }; renderDiagram(); }, [block.mermaid_code, block.id]); return (

{block.title || "Diagrama Interactivo"}

{block.description || "Explora el mapa visual a continuación."}

{renderError ? (
{renderError}
) : (
)}
); }