e24781e983
- 快速编辑与改造打开时优先复用对应生成器最近一次 imageModel/aspectRatio/imageSize 参数。 - 统一创建草稿函数 createQuickEditPanelDraft / createRedrawPanelDraft / createEditDialogDraft 的参数注入与默认回退。 - 编辑生成弹窗价格与参数展示改为使用当前 dialog 的图片模型/尺寸参数。 - 调整工作流测试为当前统一提交链路并新增参数继承回归用例。
72 lines
2.6 KiB
TypeScript
72 lines
2.6 KiB
TypeScript
import { type Dispatch, type SetStateAction } from 'react';
|
|
|
|
import { UnifiedModal } from '../common/UnifiedModal';
|
|
import {
|
|
calculateEditorImageGenerationPrice,
|
|
} from './ImageCanvasGenerationModel';
|
|
import { ImageCanvasBasicGenerationComposerView } from './ImageCanvasBasicGenerationComposerView';
|
|
import type { GenerateDialogState } from './ImageCanvasEditorTypes';
|
|
|
|
type ImageCanvasEditGenerationModalViewProps = {
|
|
dialog: GenerateDialogState | null;
|
|
setGenerateDialog: Dispatch<SetStateAction<GenerateDialogState | null>>;
|
|
onSubmit: (dialog: GenerateDialogState) => void;
|
|
};
|
|
|
|
export function ImageCanvasEditGenerationModalView({
|
|
dialog,
|
|
setGenerateDialog,
|
|
onSubmit,
|
|
}: ImageCanvasEditGenerationModalViewProps) {
|
|
const isOpen = dialog?.mode === 'edit' && dialog.status !== 'generating';
|
|
const dialogImageModel = dialog?.imageModel ?? 'gpt-image-2';
|
|
const dialogImageSize = dialog?.imageSize ?? '1K';
|
|
const editPrice = calculateEditorImageGenerationPrice({
|
|
kind: 'quick-edit',
|
|
model: dialogImageModel,
|
|
imageSize: dialogImageSize,
|
|
});
|
|
|
|
return (
|
|
<UnifiedModal
|
|
open={isOpen}
|
|
title={dialog?.mode === 'edit' ? '修改图片' : '生成图片'}
|
|
size="sm"
|
|
closeLabel={dialog?.mode === 'edit' ? '关闭修改图片' : '关闭生成图片'}
|
|
closeDisabled={dialog?.status === 'generating'}
|
|
onClose={() => setGenerateDialog(null)}
|
|
panelClassName="image-canvas-editor__generate-dialog"
|
|
bodyClassName="image-canvas-editor__generate-dialog-body"
|
|
>
|
|
{dialog?.mode === 'edit' ? (
|
|
<ImageCanvasBasicGenerationComposerView
|
|
dialog={{
|
|
...dialog,
|
|
mode: 'edit',
|
|
imageModel: dialogImageModel,
|
|
aspectRatio: dialog.aspectRatio ?? '1:1',
|
|
imageSize: dialogImageSize,
|
|
generationReferences: [],
|
|
}}
|
|
style={{}}
|
|
setGenerateDialog={setGenerateDialog}
|
|
onRequestUpload={() => {}}
|
|
onSubmit={onSubmit}
|
|
dialogLabel="修改图片"
|
|
includeDimensions={false}
|
|
includeModel={false}
|
|
includeReferences={false}
|
|
promptPlaceholder="描述你想如何修改这张图片"
|
|
submitLabel="修改"
|
|
submitAriaLabel={`修改${editPrice}泥点`}
|
|
submittingStatusLabel="修改中"
|
|
formClassName="image-canvas-editor__generate-form"
|
|
footerClassName="image-canvas-editor__generate-body"
|
|
promptClassName="image-canvas-editor__generate-prompt"
|
|
submitButtonClassName="image-canvas-editor__generate-submit"
|
|
/>
|
|
) : null}
|
|
</UnifiedModal>
|
|
);
|
|
}
|