From 228d31db312d1916d26b028674f08b12aecb5f47 Mon Sep 17 00:00:00 2001 From: kdletters Date: Sat, 27 Jun 2026 15:54:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E8=97=8F=E8=A7=86=E9=A2=91=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E7=B4=A0=E6=9D=90=E6=A0=85=E6=A0=BC=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 视频图层不再显示裁扩和去除背景按钮 角色动作序列图层不再显示裁扩和去除背景按钮 补充选中图层工具栏回归测试 --- ...ageCanvasSelectedLayerToolbarView.test.tsx | 47 +++++++++++++++++++ .../ImageCanvasSelectedLayerToolbarView.tsx | 33 ++++++++----- 2 files changed, 68 insertions(+), 12 deletions(-) diff --git a/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.test.tsx b/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.test.tsx index d2f843139..530e239e0 100644 --- a/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.test.tsx +++ b/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.test.tsx @@ -155,6 +155,53 @@ describe('ImageCanvasSelectedLayerToolbarView', () => { expect(props.onDownloadLayer).toHaveBeenCalledWith(layer); }); + it('removes raster edit actions for video and character animation layers', () => { + renderSelectedToolbar({ + selectedLayer: createLayer({ + title: '生成视频', + src: '/generated/video.mp4', + mediaType: 'video', + assetKind: 'video', + }), + }); + const videoToolbar = screen.getByRole('toolbar', { name: '图片工具栏' }); + + expect( + within(videoToolbar).queryByRole('button', { name: '裁扩按钮' }), + ).toBeNull(); + expect( + within(videoToolbar).queryByRole('button', { name: '去除背景按钮' }), + ).toBeNull(); + expect( + within(videoToolbar).getAllByRole('button').map((button) => + button.getAttribute('aria-label'), + ), + ).toEqual(['快速编辑', '改造', '下载按钮']); + + cleanup(); + renderSelectedToolbar({ + selectedLayer: createLayer({ + title: '角色动作', + src: '/generated/action/frame-01.png', + mediaType: 'image-sequence', + assetKind: 'character-animation', + }), + }); + const actionToolbar = screen.getByRole('toolbar', { name: '图片工具栏' }); + + expect( + within(actionToolbar).queryByRole('button', { name: '裁扩按钮' }), + ).toBeNull(); + expect( + within(actionToolbar).queryByRole('button', { name: '去除背景按钮' }), + ).toBeNull(); + expect( + within(actionToolbar).getAllByRole('button').map((button) => + button.getAttribute('aria-label'), + ), + ).toEqual(['快速编辑', '改造', '下载按钮']); + }); + it('renders character animation only for character layers', () => { const layer = createLayer({ sourceType: 'generated', diff --git a/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx b/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx index c7f22d13a..e8d5d67c9 100644 --- a/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx +++ b/src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx @@ -68,6 +68,11 @@ export function ImageCanvasSelectedLayerToolbarView({ ); } + const canRasterEdit = + selectedLayer.mediaType !== 'video' && + selectedLayer.mediaType !== 'image-sequence' && + selectedLayer.assetKind !== 'character-animation'; + return (