fix: resolve merge conflicts

This commit is contained in:
Rohit Rajan
2025-11-20 18:51:46 +05:30
2 changed files with 72 additions and 53 deletions

View File

@@ -375,7 +375,7 @@ const RobotCreate: React.FC = () => {
/>
<Typography variant="body2" color="text.secondary" mb={3}>
Turn websites into LLM-ready Markdown or clean HTML content for AI apps.
Turn websites into LLM-ready Markdown & clean HTML for AI apps.
</Typography>
<Box sx={{ width: '100%', maxWidth: 700, mb: 2 }}>

View File

@@ -38,6 +38,7 @@ export const RunContent = ({ row, currentLog, interpretationInProgress, logEndRe
const { t } = useTranslation();
const [tab, setTab] = React.useState<string>('output');
const [markdownContent, setMarkdownContent] = useState<string>('');
const [htmlContent, setHtmlContent] = useState<string>('');
const [schemaData, setSchemaData] = useState<any[]>([]);
const [schemaColumns, setSchemaColumns] = useState<string[]>([]);
@@ -65,14 +66,25 @@ export const RunContent = ({ row, currentLog, interpretationInProgress, logEndRe
}, [interpretationInProgress]);
useEffect(() => {
setMarkdownContent('');
setHtmlContent('');
if (row.serializableOutput?.markdown && Array.isArray(row.serializableOutput.markdown)) {
const markdownData = row.serializableOutput.markdown[0];
if (markdownData && markdownData.content) {
if (markdownData?.content) {
setMarkdownContent(markdownData.content);
}
}
if (row.serializableOutput?.html && Array.isArray(row.serializableOutput.html)) {
const htmlData = row.serializableOutput.html[0];
if (htmlData?.content) {
setHtmlContent(htmlData.content);
}
}
}, [row.serializableOutput]);
useEffect(() => {
if (row.status === 'running' || row.status === 'queued' || row.status === 'scheduled') {
setSchemaData([]);
@@ -663,68 +675,75 @@ export const RunContent = ({ row, currentLog, interpretationInProgress, logEndRe
const hasData = schemaData.length > 0 || listData.length > 0 || legacyData.length > 0;
const hasScreenshots = row.binaryOutput && Object.keys(row.binaryOutput).length > 0;
const hasMarkdown = markdownContent.length > 0;
const hasHTML = htmlContent.length > 0;
return (
<Box sx={{ width: '100%' }}>
<TabContext value={tab}>
<TabPanel value='output' sx={{ width: '100%', maxWidth: '900px' }}>
{hasMarkdown ? (
<Box>
<Accordion defaultExpanded sx={{ mb: 2 }}>
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
<Box sx={{ display: 'flex', alignItems: 'center' }}>
<Typography variant='h6'>
Markdown Output
</Typography>
</Box>
</AccordionSummary>
<AccordionDetails>
<Paper
sx={{
p: 2,
maxHeight: '500px',
overflow: 'auto',
backgroundColor: (theme) => theme.palette.mode === 'dark' ? '#1e1e1e' : '#f5f5f5'
}}
>
<Typography
component="pre"
sx={{
whiteSpace: 'pre-wrap',
wordBreak: 'break-word',
fontFamily: 'monospace',
fontSize: '0.875rem'
}}
>
{markdownContent}
</Typography>
</Paper>
<Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2, mt: 2 }}>
<Box>
{hasMarkdown || hasHTML ? (
<>
{hasMarkdown && (
<Accordion defaultExpanded sx={{ mb: 2 }}>
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
<Typography variant='h6'>Markdown</Typography>
</AccordionSummary>
<AccordionDetails>
<Paper sx={{ p: 2, maxHeight: '500px', overflow: 'auto' }}>
<Typography component="pre" sx={{ whiteSpace: 'pre-wrap', fontFamily: 'monospace' }}>
{markdownContent}
</Typography>
</Paper>
<Box sx={{ mt: 2 }}>
<Button
component="a"
onClick={() => downloadMarkdown(markdownContent, 'output.md')}
sx={{
color: '#FF00C3',
textTransform: 'none',
p: 0,
minWidth: 'auto',
backgroundColor: 'transparent',
'&:hover': {
backgroundColor: 'transparent',
textDecoration: 'underline',
},
}}
sx={{ color: '#FF00C3', textTransform: 'none' }}
>
Download Markdown
Download
</Button>
</Box>
</Box>
</AccordionDetails>
</Accordion>
</Box>
</AccordionDetails>
</Accordion>
)}
{hasHTML && (
<Accordion defaultExpanded sx={{ mb: 2 }}>
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
<Typography variant='h6'>HTML</Typography>
</AccordionSummary>
<AccordionDetails>
<Paper sx={{ p: 2, maxHeight: '500px', overflow: 'auto' }}>
<Typography
component="pre"
sx={{ whiteSpace: 'pre-wrap', fontFamily: 'monospace' }}
>
{htmlContent}
</Typography>
</Paper>
<Box sx={{ mt: 2 }}>
<Button
onClick={() => {
const blob = new Blob([htmlContent], { type: 'text/html;charset=utf-8;' });
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = "output.html";
link.click();
setTimeout(() => URL.revokeObjectURL(url), 100);
}}
sx={{ color: '#FF00C3', textTransform: 'none' }}
>
Download
</Button>
</Box>
</AccordionDetails>
</Accordion>
)}
</>
) : (
// Traditional robot output
// Extract robot output
<>
{row.status === 'running' || row.status === 'queued' ? (
<>