From 7bd921b51c7b17ea51a84a691d4c7349ba15bbaa Mon Sep 17 00:00:00 2001 From: XcantloadX <3188996979@qq.com> Date: Tue, 18 Mar 2025 11:18:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(devtool):=20ImageAnnotation=20=E4=B8=AD?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BF=AE=E6=94=B9=E7=8E=B0=E6=9C=89=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=9A=84=E6=A0=87=E6=B3=A8=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/PropertyGrid.tsx | 24 ++++++++++++++++- .../src/hooks/useImageMetaData.tsx | 14 +++++++--- .../pages/ImageAnnotation/ImageAnnotation.tsx | 26 ++++++++++++++++--- .../pages/ScriptRecorder/ScriptRecorder.tsx | 12 ++++----- 4 files changed, 62 insertions(+), 14 deletions(-) diff --git a/kotonebot-devtool/src/components/PropertyGrid.tsx b/kotonebot-devtool/src/components/PropertyGrid.tsx index a4c9ae5..f57fd94 100644 --- a/kotonebot-devtool/src/components/PropertyGrid.tsx +++ b/kotonebot-devtool/src/components/PropertyGrid.tsx @@ -5,6 +5,12 @@ export interface PropertyRenderBase { required?: boolean, } +type SelectOption = { + value: T, + options: Array<{ value: T, label: string }>, + onChange: (value: T) => void +} + interface PropertyRenderInputOptions { text: { value: string, @@ -17,7 +23,8 @@ interface PropertyRenderInputOptions { 'long-text': { value: string, onChange: (value: string) => void - } + }, + select: SelectOption } type RenderType = keyof PropertyRenderInputOptions; @@ -162,6 +169,21 @@ const PropertyGrid: React.FC = ({ properties, titleColumnWidt } else if (type === 'long-text') { const propertyLongText = property.render as PropertyRenderInputOptions['long-text']; field =