diff --git a/src/renderer/src/assets/styles/markdown.scss b/src/renderer/src/assets/styles/markdown.scss index f52d57a7c2..7d4dbf0ce2 100644 --- a/src/renderer/src/assets/styles/markdown.scss +++ b/src/renderer/src/assets/styles/markdown.scss @@ -202,7 +202,7 @@ img { max-width: 100%; height: auto; - margin: 10px 0; + margin: 1em 0; } a, @@ -321,6 +321,10 @@ emoji-picker { --border-size: 0; } +.block-wrapper + .block-wrapper { + margin-top: 1em; +} + .katex, mjx-container { display: inline-block; diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index ba4217f76f..58c9adc074 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -3045,10 +3045,8 @@ export function isGenerateImageModel(model: Model): boolean { } const modelId = getLowerBaseModelName(model.id, '/') - if (GENERATE_IMAGE_MODELS.includes(modelId)) { - return true - } - return false + + return GENERATE_IMAGE_MODELS.some((imageModel) => modelId.includes(imageModel)) } export function isSupportedDisableGenerationModel(model: Model): boolean { diff --git a/src/renderer/src/pages/home/Messages/Blocks/ImageBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ImageBlock.tsx index 4ac6b0b0b0..4ae8b167cf 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/ImageBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/ImageBlock.tsx @@ -7,32 +7,42 @@ import styled from 'styled-components' interface Props { block: ImageMessageBlock + isSingle?: boolean } -const ImageBlock: React.FC = ({ block }) => { - if (block.status === MessageBlockStatus.PENDING) return +const ImageBlock: React.FC = ({ block, isSingle = false }) => { + if (block.status === MessageBlockStatus.PENDING) { + return + } + if (block.status === MessageBlockStatus.STREAMING || block.status === MessageBlockStatus.SUCCESS) { const images = block.metadata?.generateImageResponse?.images?.length ? block.metadata?.generateImageResponse?.images : block?.file ? [`file://${FileManager.getFilePath(block?.file)}`] : [] + return ( {images.map((src, index) => ( ))} ) - } else return null + } + + return null } + const Container = styled.div` - display: flex; - flex-direction: row; - gap: 10px; + display: block; ` export default React.memo(ImageBlock) diff --git a/src/renderer/src/pages/home/Messages/Blocks/index.tsx b/src/renderer/src/pages/home/Messages/Blocks/index.tsx index f19386c3af..a7e86164c1 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/index.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/index.tsx @@ -87,11 +87,20 @@ const MessageBlockRenderer: React.FC = ({ blocks, message }) => { {groupedBlocks.map((block) => { if (Array.isArray(block)) { const groupKey = block.map((imageBlock) => imageBlock.id).join('-') + // 单张图片不使用 ImageBlockGroup 包装 + if (block.length === 1) { + return ( + + + + ) + } + // 多张图片使用 ImageBlockGroup 包装 return ( {block.map((imageBlock) => ( - + ))} @@ -166,8 +175,8 @@ const MessageBlockRenderer: React.FC = ({ blocks, message }) => { export default React.memo(MessageBlockRenderer) const ImageBlockGroup = styled.div<{ count: number }>` - display: grid; - grid-template-columns: repeat(${({ count }) => Math.min(count, 3)}, minmax(200px, 1fr)); - gap: 8px; - max-width: 960px; + display: flex; + flex-wrap: wrap; + gap: 10px; + max-width: 100%; `