import { X } from 'lucide-react'; import { useEffect, useMemo } from 'react'; import { PlatformActionButton } from '../../../../../packages/shared/src/components/PlatformActionButton'; import { PlatformIconButton } from '../../../../../packages/shared/src/components/PlatformIconButton'; import { ChatMarkdownMessage } from '../../components/ChatMarkdownMessage'; import { ThemedModal } from '../../components/modal/ThemedModal'; import { resourceDocumentPreviewMarkdown } from '../../features/resource-canvas/resourceDocumentPreviewModel'; import type { ProjectResourceCardPreviewState } from './resourceCardPreviewModel'; import type { ProjectResource } from './resourceProjectionModel'; export function ResourceDocumentPreviewDialog({ resource, identity, preview, onRequestPreview, onClose, }: { resource: ProjectResource; identity: string; preview: ProjectResourceCardPreviewState; onRequestPreview: ( resource: ProjectResource, identity: string, reason: 'detail', ) => void; onClose: () => void; }) { useEffect(() => { onRequestPreview(resource, identity, 'detail'); }, [resource, identity, onRequestPreview]); const content = preview.status === 'loaded' ? preview.preview.content : undefined; const markdown = useMemo( () => content === undefined ? '' : resourceDocumentPreviewMarkdown(resource, content), [resource, content], ); return (
{resource.label}
{preview.status === 'idle' || preview.status === 'loading' ? (

正在加载文档…

) : preview.status === 'failed' ? ( <>

{preview.error}

{preview.retryable ? ( onRequestPreview(resource, identity, 'detail')} > 重试 ) : null} ) : content === undefined ? (

没有可预览的文本内容

) : content === '' ? (

文档为空

) : ( )}
); }