Spaces:
Running
Running
import React from "react"; | |
import ResultBlock from "./ResultBlock"; | |
const ToolResultRenderer: React.FC<{ | |
result: any; | |
rendererCode?: string; | |
input?: any; | |
}> = ({ result, rendererCode, input }) => { | |
if (!rendererCode) { | |
return <ResultBlock result={result} />; | |
} | |
try { | |
const exportMatch = rendererCode.match(/export\s+default\s+(.*)/s); | |
if (!exportMatch) { | |
throw new Error("Invalid renderer format - no export default found"); | |
} | |
const componentCode = exportMatch[1].trim(); | |
const componentFunction = new Function( | |
"React", | |
"input", | |
"output", | |
` | |
const { createElement: h, Fragment } = React; | |
const JSXComponent = ${componentCode}; | |
return JSXComponent(input, output); | |
`, | |
); | |
const element = componentFunction(React, input || {}, result); | |
return element; | |
} catch (error) { | |
return ( | |
<ResultBlock | |
error={error instanceof Error ? error.message : "Unknown error"} | |
result={result} | |
/> | |
); | |
} | |
}; | |
export default ToolResultRenderer; | |