import type { CustomWorldDraftCardDetail } from '../../../packages/shared/src/contracts/customWorldAgent'; import { CustomWorldDraftEditPanel } from './CustomWorldDraftEditPanel'; type CustomWorldAgentDraftDetailPanelProps = { detail: CustomWorldDraftCardDetail | null; loading: boolean; busy?: boolean; editMode?: boolean; onClose: () => void; onStartEdit?: () => void; onCancelEdit?: () => void; onSave?: ( sections: Array<{ sectionId: string; value: string; }>, ) => void; onGenerateCharacter?: () => void; onGenerateLandmark?: () => void; onOpenRoleAssetStudio?: () => void; }; function resolveKindLabel(kind: CustomWorldDraftCardDetail['kind']) { if (kind === 'world') return '世界总卡'; if (kind === 'camp') return '营地'; if (kind === 'faction') return '势力'; if (kind === 'character') return '角色'; if (kind === 'landmark') return '地点'; if (kind === 'thread') return '线程'; if (kind === 'chapter') return '第一幕'; if (kind === 'scene_chapter') return '场景章节'; return '草稿卡'; } function ActionButton(props: { label: string; onClick?: () => void; disabled?: boolean; tone?: 'default' | 'sky'; }) { const { label, onClick, disabled = false, tone = 'default' } = props; if (!onClick) { return null; } return ( ); } export function CustomWorldAgentDraftDetailPanel({ detail, loading, busy = false, editMode = false, onClose, onStartEdit, onCancelEdit, onSave, onGenerateCharacter, onGenerateLandmark, onOpenRoleAssetStudio, }: CustomWorldAgentDraftDetailPanelProps) { const shouldRenderImagePreview = ( detailKind: CustomWorldDraftCardDetail['kind'], sectionId: string, value: string, ) => detailKind === 'scene_chapter' && sectionId.endsWith(':backgroundImageSrc') && value !== '待继续精修'; return (
卡片详情
{loading ? '正在读取' : detail?.title || '选择一张草稿卡'}
{loading ? (
正在整理这张卡的内容。
) : detail ? (
{resolveKindLabel(detail.kind)} 关联 {detail.linkedIds.length} {detail.editable ? ( 可编辑 ) : null} {detail.kind === 'character' && detail.assetStatusLabel ? ( {detail.assetStatusLabel} ) : null}
{!editMode && detail.editable ? ( ) : null} {!editMode && detail.kind === 'character' ? ( ) : null} {!editMode ? ( <> ) : null}
{editMode && onSave && onCancelEdit ? ( ) : (
{detail.sections.map((section) => (
{section.label}
{shouldRenderImagePreview(detail.kind, section.id, section.value) ? ( {section.label} ) : null}
{section.value}
))}
)} {detail.warningMessages.length > 0 ? (
继续精修
{detail.warningMessages.map((message, index) => (
{message}
))}
) : null}
) : (
从草稿抽屉里点开一张卡,就能在这里看世界底稿的具体内容。
)}
); }