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
}
)
}