99- ** 动态类型自动补全** :基于 ` ScriptMetadata ` 提供变量名补全和点号链式访问补全(如 ` request.test.name ` )
1010- ** Groovy 语法提示** :内置 ` if ` /` for ` /` while ` /` println ` /` return ` 等常用 Groovy 语法片段
1111- ** 代码格式化** :内置 Groovy 格式化器,也可通过 ` onFormat ` 自定义格式化逻辑
12- - ** 属性面板** :右侧侧边栏展示主函数签名、变量、数据类型(字段和方法),支持折叠/展开和拖拽调节宽度
12+ - ** 属性面板** :右侧侧边栏展示主函数签名、函数入参、绑定参数、数据类型(字段和方法),支持折叠/展开和拖拽调节宽度
13+ - ** 脚本说明** :工具栏"脚本说明"按钮,点击展开/收起脚本描述弹框,支持多行文本和 ` key: value ` 格式高亮
1314- ** 主题切换** :暗色/亮色两套主题,编辑器、补全弹窗、属性面板同步切换,编辑器内部管理主题状态
1415- ** 全屏模式** :支持 CSS 全屏(` position: fixed ` 覆盖视口),不影响编辑器内容
1516- ** 自定义工具栏** :通过 ` toolbarExtra ` 传入任意 React 节点
@@ -127,7 +128,44 @@ function App() {
127128
128129| 属性 | 类型 | 默认值 | 说明 |
129130| ---| ---| ---| ---|
130- | ` toolbarExtra ` | ` React.ReactNode ` | ` undefined ` | 工具栏额外内容,渲染在内置按钮之后,可传入任意 JSX |
131+ | ` toolbar ` | ` ToolbarItem[] ` | ` undefined ` | 工具栏自定义按钮列表,渲染在内置按钮之后、` toolbarExtra ` 之前 |
132+ | ` toolbarExtra ` | ` React.ReactNode ` | ` undefined ` | 工具栏额外内容,渲染在最后,可传入任意 JSX |
133+
134+ ` ToolbarItem ` 类型:
135+
136+ ``` typescript
137+ interface ToolbarItem {
138+ key: string ; // 唯一标识
139+ label: ReactNode ; // 按钮内容
140+ title: string ; // 鼠标悬停提示
141+ backgroundColor: string ;
142+ hoverBackgroundColor: string ;
143+ textColor: string ;
144+ borderColor: string ;
145+ onClick: () => void ;
146+ }
147+ ```
148+
149+ ** 使用按钮列表:**
150+
151+ ``` tsx
152+ <ScriptCodeEditor
153+ toolbar = { [
154+ {
155+ key: ' save' ,
156+ label: ' 💾 保存' ,
157+ title: ' 保存脚本' ,
158+ backgroundColor: ' #007bff' ,
159+ hoverBackgroundColor: ' #0056b3' ,
160+ textColor: ' #fff' ,
161+ borderColor: ' #007bff' ,
162+ onClick : () => saveCode (),
163+ },
164+ ]}
165+ />
166+ ```
167+
168+ ** 使用自定义内容:**
131169
132170``` tsx
133171<ScriptCodeEditor
@@ -154,7 +192,7 @@ function App() {
154192interface ScriptMetadata {
155193 /** 主函数名称(可选) */
156194 mainMethod? : string ;
157- /** 主函数描述信息 (可选,提供后在属性面板主函数名旁显示悬浮提示 ) */
195+ /** 脚本说明 (可选,提供后在工具栏显示"脚本说明"按钮,点击展开/收起描述弹框 ) */
158196 description? : string ;
159197 /** 注入变量(如 $request,name 含 $ 前缀) */
160198 binds: ScriptBindInfo [];
0 commit comments