import { JSONCode, XMLViewer, MarkdownRenderer } from '@vertesia/ui/widgets'; import { Loader2 } from 'lucide-react'; import { useEffect, useState } from "react"; import { useMagicPdfContext } from "./MagicPdfProvider"; import { ViewType } from "./types"; function LoadingSpinner({ className }: { className?: string }) { return (
); } interface ExtractedContentViewProps { pageNumber: number; viewType: ViewType; } export function ExtractedContentView({ viewType, pageNumber }: ExtractedContentViewProps) { switch (viewType) { case "json": return ; case "markdown": return ; default: return ; } } interface XmlPageViewProps { pageNumber: number; } function XmlPageView({ pageNumber }: XmlPageViewProps) { const { xmlPages: pages } = useMagicPdfContext(); return (
) } interface JsonPageLayoutViewProps { pageNumber: number; } function JsonPageLayoutView({ pageNumber }: JsonPageLayoutViewProps) { const [content, setContent] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const { layoutProvider } = useMagicPdfContext(); useEffect(() => { setLoading(true); setError(null); layoutProvider.getPageLayout(pageNumber) .then((layoutContent) => { setContent(layoutContent ? JSON.parse(layoutContent) : null); setLoading(false); }) .catch((err: Error) => { console.error(err); setError(err.message || 'Failed to load layout'); setLoading(false); }); }, [pageNumber, layoutProvider]); if (loading) { return (
); } if (error) { return (
{error}
); } return content ? : null; } interface MarkdownPageViewProps { pageNumber: number; } function MarkdownPageView({ pageNumber }: MarkdownPageViewProps) { const [content, setContent] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const { markdownProvider } = useMagicPdfContext(); useEffect(() => { setLoading(true); setError(null); markdownProvider.getPageMarkdown(pageNumber) .then((md) => { setContent(md); setLoading(false); }) .catch((err: Error) => { console.error(err); setError(err.message || 'Failed to load markdown'); setLoading(false); }); }, [pageNumber, markdownProvider]); if (loading) { return (
Loading...
); } if (error) { return (
{error}
); } return (
{content ? {content} :
No markdown content available
}
) }