import { UnifiedModal } from '../common/UnifiedModal'; import type { CanvasLayer } from './ImageCanvasEditorTypes'; import { formatTaskIdForDisplay } from './ImageCanvasExportModel'; import { formatEditorGenerationInputFieldValue, formatLayerImageType, getEditorLayerModelDisplayName, isEditorUserVisibleGenerationInputField, } from './ImageCanvasGenerationModel'; export type ImageCanvasMetadataModalViewProps = { layer: CanvasLayer | null; onClose: () => void; }; function formatReferenceType(refType: 'project-resource' | 'asset') { return refType === 'project-resource' ? '项目资源' : '素材'; } export function ImageCanvasMetadataModalView({ layer, onClose, }: ImageCanvasMetadataModalViewProps) { const visibleGenerationInputFields = layer?.generationInputs?.fields.filter( isEditorUserVisibleGenerationInputField, ) ?? []; const generationInputReferences = layer?.generationInputs?.references ?? []; const mediaLabel = layer?.mediaType === 'audio' ? '音频' : layer?.mediaType === 'video' ? '视频' : layer?.mediaType === 'image-sequence' ? '序列帧' : '图片'; // TODO: Remove this override after full dark style support. return ( {layer ? (
{mediaLabel}类型
{formatLayerImageType(layer)}
生成输入
{visibleGenerationInputFields.length || generationInputReferences.length ? ( <> {visibleGenerationInputFields.map((field) => (
{field.title} {formatEditorGenerationInputFieldValue(field)}
))} {generationInputReferences.length ? (
{generationInputReferences.map((reference) => (
{reference.title} {reference.label?.trim() || '参考素材'} {formatReferenceType(reference.refType)} ·{' '} {reference.refId}
))}
) : null} ) : ( '-' )}
Model
{getEditorLayerModelDisplayName(layer.model)}
{layer.mediaType !== 'audio' ? ( <>
Resolution
{layer.originalWidth} x {layer.originalHeight} px
) : null}
Task
{layer.generationInputs?.soundEffect?.schemaVersion === 2 ? layer.taskId || '-' : formatTaskIdForDisplay(layer.taskId)}
) : null}
); }