import clsx from "clsx"; import { Button } from "../Button"; import Spinner from "../Spinner"; import { t } from "../../i18n"; import { alertTriangleIcon } from "../icons"; import { formatMermaidParseErrorMessage, getMermaidSyntaxErrorGuidance, isMermaidCaretLine, } from "./utils/mermaidError"; interface TTDDialogOutputProps { error: Error | null; canvasRef: React.RefObject; loaded: boolean; hideErrorDetails?: boolean; sourceText?: string; autoFixAvailable?: boolean; onApplyAutoFix?: () => void; } export const TTDDialogOutput = ({ error, canvasRef, loaded, hideErrorDetails, sourceText, autoFixAvailable, onApplyAutoFix, }: TTDDialogOutputProps) => { const errorMessage = error ? hideErrorDetails ? t("chat.errors.mermaidParseError") : formatMermaidParseErrorMessage(error.message) : null; const syntaxGuidance = error && !hideErrorDetails ? getMermaidSyntaxErrorGuidance(error.message, sourceText) : null; const showAutoFixButton = !!autoFixAvailable && !!onApplyAutoFix && !hideErrorDetails; const errorMessageLines = errorMessage?.split(/\r?\n/) ?? []; return (
{error && (
{alertTriangleIcon}
{syntaxGuidance && (
{syntaxGuidance.summary}
Likely causes:
    {syntaxGuidance.likelyCauses.map((cause) => (
  • {cause}
  • ))}
)}
{errorMessageLines.map((line, index) => ( {line} {index < errorMessageLines.length - 1 ? "\n" : ""} ))}
{!hideErrorDetails && (
{showAutoFixButton ? ( ) : null}
)}
)} {loaded ? (
) : ( )}
); };