From cb136fb445eebe27296af4762694b545c2049c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 22 Sep 2026 13:33:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=BB=E5=B8=83=E5=9B=BE=E5=B1=82=E7=9A=84?= =?UTF-8?q?=E5=AA=92=E4=BD=93=E6=B8=B2=E6=9F=93=E5=88=86=E6=B4=BE=E6=8A=BD?= =?UTF-8?q?=E6=88=90=E7=8B=AC=E7=AB=8B=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - src/components/image-editor/ImageCanvasWorldView.tsx:音频 / 视频 / 序列帧 / model3d / 默认图片这条五层三元链提成 renderCanvasLayerMedia(早返回写成一列判断),渲染分支与传参不变,新增媒体类型不再加深三元 验证:npx vitest run src/components/image-editor/ImageCanvasWorldView.test.tsx(57 用例全绿)、npm run typecheck --- .../image-editor/ImageCanvasWorldView.tsx | 79 ++++++++++++------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/src/components/image-editor/ImageCanvasWorldView.tsx b/src/components/image-editor/ImageCanvasWorldView.tsx index 8b6fcf200..4242e66ad 100644 --- a/src/components/image-editor/ImageCanvasWorldView.tsx +++ b/src/components/image-editor/ImageCanvasWorldView.tsx @@ -1024,6 +1024,52 @@ function ImageCanvasImageSequenceLayer({ ); } +/** + * 图层正文按媒体类型 / 资源类别分派:早返回写成一列判断,新增类型不会再加深三元链。 + */ +function renderCanvasLayerMedia({ + layer, + mediaTransform, + isHovered, + onSelectLayer, +}: { + layer: CanvasLayer; + mediaTransform?: string; + isHovered: boolean; + onSelectLayer: () => void; +}) { + if (layer.mediaType === 'audio') { + return ( + + ); + } + if (layer.mediaType === 'video') { + return ( + + ); + } + if (layer.mediaType === 'image-sequence') { + return ( + + ); + } + if (layer.assetKind === 'model3d') { + return ( + + ); + } + return ( + + ); +} + const MemoizedCanvasLayerNode = memo(function CanvasLayerNode({ layer, isSelected, @@ -1078,33 +1124,12 @@ const MemoizedCanvasLayerNode = memo(function CanvasLayerNode({ onMouseLeave={() => handlers.onLayerMouseLeave(layer.id)} aria-label={`选择${layer.title}`} > - {layer.mediaType === 'audio' ? ( - handlers.onSelectLayer(layer.id)} - /> - ) : layer.mediaType === 'video' ? ( - - ) : layer.mediaType === 'image-sequence' ? ( - - ) : layer.assetKind === 'model3d' ? ( - - ) : ( - - )} + {renderCanvasLayerMedia({ + layer, + mediaTransform, + isHovered, + onSelectLayer: () => handlers.onSelectLayer(layer.id), + })}