@huanban/rulego-editor-react 1.0.13 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,74 +0,0 @@
1
- /**
2
- * @file components/RuleChainSettings.tsx
3
- * @description 规则链设置对话框 — React 实现
4
- *
5
- * 功能:
6
- * - 编辑规则链元数据(名称/描述/调试模式等)
7
- * - 管理规则链全局配置
8
- * - 模态对话框展示
9
- * - 表单验证
10
- * - 零 UI 框架依赖(纯 React + CSS)
11
- *
12
- * @see RuleChainSettingsProps — 设置参数
13
- */
14
- import React from 'react';
15
- /** 规则链设置数据 */
16
- export interface RuleChainSettingsData {
17
- /** 规则链 ID */
18
- id?: string;
19
- /** 规则链名称 */
20
- name: string;
21
- /** 是否为根链 */
22
- root?: boolean;
23
- /** 是否开启调试模式 */
24
- debugMode?: boolean;
25
- /** 描述 */
26
- description?: string;
27
- /** 额外配置(JSON) */
28
- additionalInfo?: Record<string, unknown>;
29
- /** 自定义字段 */
30
- [key: string]: unknown;
31
- }
32
- /** RuleChainSettings Props */
33
- export interface RuleChainSettingsProps {
34
- /** 是否可见 */
35
- visible: boolean;
36
- /** 当前设置数据 */
37
- data: RuleChainSettingsData;
38
- /** 是否只读 */
39
- readOnly?: boolean;
40
- /** 对话框标题 */
41
- title?: string;
42
- /** 额外的自定义字段定义 */
43
- customFields?: Array<{
44
- /** 字段名 */
45
- key: string;
46
- /** 显示名称 */
47
- label: string;
48
- /** 字段类型 */
49
- type: 'text' | 'number' | 'select' | 'textarea' | 'switch';
50
- /** select 的选项 */
51
- options?: Array<{
52
- label: string;
53
- value: string;
54
- }>;
55
- /** 默认值 */
56
- defaultValue?: unknown;
57
- /** 提示 */
58
- placeholder?: string;
59
- /** 帮助文本 */
60
- help?: string;
61
- }>;
62
- /** 保存回调 */
63
- onSave?: (data: RuleChainSettingsData) => void;
64
- /** 取消 / 关闭 */
65
- onClose: () => void;
66
- }
67
- /**
68
- * RuleChainSettings 组件
69
- *
70
- * 模态对话框形式的规则链设置面板。
71
- */
72
- declare const RuleChainSettings: React.FC<RuleChainSettingsProps>;
73
- export default RuleChainSettings;
74
- //# sourceMappingURL=RuleChainSettings.d.ts.map
@@ -1,181 +0,0 @@
1
- /**
2
- * @file components/RuleGoEditor.tsx
3
- * @description React 薄封装 — 直接复用 @huanban/rulego-editor-core 的 HuanbanRulegoEditor
4
- *
5
- * 设计理念:
6
- * - 所有编辑器核心逻辑(工具栏、侧边栏、组件列表、上下文菜单、属性面板、
7
- * 小地图、键盘快捷键等)全部在 editor-core 的 HuanbanRulegoEditor 中实现
8
- * - React 版只负责: 挂载 DOM → 创建实例 → 代理 Props → 卸载时销毁
9
- * - 这样 React / Vue / Angular 的封装都只需 ~100 行, 功能自动与 JS 版对齐
10
- *
11
- * @example
12
- * ```tsx
13
- * import { RuleGoEditor } from '@huanban/rulego-editor-react'
14
- *
15
- * function App() {
16
- * return (
17
- * <RuleGoEditor
18
- * apiBase="http://127.0.0.1:9090/api/v1"
19
- * data={ruleChainData}
20
- * components={componentsList}
21
- * onSave={(data) => console.log('保存', data)}
22
- * onReady={({ lf, core }) => console.log('就绪')}
23
- * />
24
- * )
25
- * }
26
- * ```
27
- *
28
- * @see HuanbanRulegoEditor — 核心引擎 (editor-core)
29
- */
30
- import React from 'react';
31
- import { HuanbanRulegoEditor } from '@huanban/rulego-editor-core';
32
- import type { EditorCore } from '@huanban/rulego-editor-core';
33
- import type { RuleChainData, ComponentDefinition } from '@huanban/rulego-editor-core';
34
- import LogicFlow from '@logicflow/core';
35
- /**
36
- * RuleGoEditor 组件 Props
37
- *
38
- * 大部分选项直接透传给 HuanbanRulegoEditor (editor-core)
39
- * React 特有的只有: className, style, width, height, ref
40
- */
41
- export interface RuleGoEditorProps {
42
- /** 容器高度, 默认 '100%' */
43
- height?: string | number;
44
- /** 容器宽度, 默认 '100%' */
45
- width?: string | number;
46
- /** className */
47
- className?: string;
48
- /** style */
49
- style?: React.CSSProperties;
50
- /** API 基础地址 (如 'http://127.0.0.1:9090/api/v1') */
51
- apiBase?: string;
52
- /** 请求超时毫秒数, 默认 5000 */
53
- fetchTimeout?: number;
54
- /**
55
- * 自定义请求头 — 用于注入 Authorization Token 等认证信息
56
- * 支持静态对象或动态函数(每次请求时调用获取最新 Token)
57
- */
58
- fetchHeaders?: Record<string, string> | (() => Record<string, string>);
59
- /**
60
- * 自定义 fetch 函数 — 完全替换原生 fetch
61
- * 当需要自定义请求逻辑(如统一认证拦截、请求签名、错误重试等)时使用
62
- * 函数签名: (url: string, init: RequestInit) => Promise<Response>
63
- */
64
- customFetch?: (url: string, init: RequestInit) => Promise<Response>;
65
- /** 初始规则链数据 */
66
- data?: RuleChainData | null;
67
- /** 初始组件列表 */
68
- components?: ComponentDefinition[];
69
- /** 是否显示工具栏, 默认 true */
70
- showToolbar?: boolean;
71
- /** 工具栏左侧标题 */
72
- toolbarTitle?: string;
73
- /** 是否显示侧边栏, 默认 true */
74
- showSidebar?: boolean;
75
- /** 侧边栏宽度, 默认 220 */
76
- sidebarWidth?: number;
77
- /** 侧边栏是否默认收起 */
78
- sidebarCollapsed?: boolean;
79
- /** 是否显示信息按钮 */
80
- showInfoButton?: boolean;
81
- /** 是否显示导出按钮, 默认 true */
82
- showExportDialog?: boolean;
83
- /** 是否显示运行按钮 */
84
- showRunButton?: boolean;
85
- /** 是否显示组件管理按钮 */
86
- showComponentManage?: boolean;
87
- /** 是否显示部署按钮, 默认 true */
88
- showDeployButton?: boolean;
89
- /** 是否显示运行记录按钮 */
90
- showRunHistory?: boolean;
91
- /** 运行记录 URL (支持 {chainId} 占位符) */
92
- runHistoryUrl?: string;
93
- /** 是否显示调试日志 Tab */
94
- showDebugTab?: boolean;
95
- /** 语言设置, 默认 'zh_cn' */
96
- locale?: string;
97
- /** LogicFlow 额外配置 (与默认配置合并) */
98
- lfOptions?: Record<string, unknown>;
99
- /** LogicFlow 插件数组 */
100
- lfPlugins?: any[];
101
- /** EditorCore 额外配置 */
102
- coreOptions?: Record<string, unknown>;
103
- /** 编辑器就绪 */
104
- onReady?: (ctx: {
105
- lf: LogicFlow;
106
- core: EditorCore;
107
- }) => void;
108
- /** 保存回调 */
109
- onSave?: (data: unknown) => void;
110
- /** 节点点击 */
111
- onNodeClick?: (data: unknown) => void;
112
- /** 节点双击 */
113
- onNodeDbClick?: (data: unknown) => void;
114
- /** 边点击 */
115
- onEdgeClick?: (data: unknown) => void;
116
- /** 数据变化 */
117
- onChange?: () => void;
118
- /** 点击信息按钮 */
119
- onInfoClick?: (chainInfo: any) => void;
120
- /** 劫持导出 */
121
- onExportDSL?: (data: {
122
- json: string;
123
- imageDataUrl?: string;
124
- }) => void;
125
- /** 劫持运行 */
126
- onRunClick?: (chainId: string) => void;
127
- /** 劫持组件管理 */
128
- onComponentManage?: () => void;
129
- /** 语言切换回调 */
130
- onLocaleChange?: (locale: string) => void;
131
- /** 劫持部署 */
132
- onDeploy?: (chainId: string, action: 'deploy' | 'undeploy' | 'reload') => void;
133
- /** 选择规则链 */
134
- onSelectRuleChain?: (ruleChain: any) => void;
135
- /** 删除规则链 */
136
- onDeleteRuleChain?: (chainId: string) => void;
137
- /** 劫持运行记录 */
138
- onRunHistory?: (chainId: string) => void;
139
- /** 规则链列表数据 */
140
- ruleItems?: any[];
141
- /** 规则链 API 地址 */
142
- rulesApi?: string;
143
- }
144
- /**
145
- * RuleGoEditor 的命令式 API
146
- * 通过 useRef + forwardRef 暴露给父组件
147
- */
148
- export interface RuleGoEditorRef {
149
- /** HuanbanRulegoEditor 实例 (editor-core) */
150
- editor: HuanbanRulegoEditor | null;
151
- /** LogicFlow 实例 */
152
- lf: LogicFlow | null;
153
- /** EditorCore 实例 */
154
- core: EditorCore | null;
155
- /** 重新加载数据 */
156
- loadData: (data: RuleChainData) => void;
157
- /** 重新加载组件 */
158
- loadComponents: (components: ComponentDefinition[]) => void;
159
- /** 导出数据 */
160
- exportData: () => RuleChainData | null;
161
- /** 切换小地图 */
162
- toggleMiniMap: () => void;
163
- /** 手动触发自动排版 — 基于 DAG 拓扑排序重新排列节点 */
164
- autoLayout: () => void;
165
- }
166
- /**
167
- * RuleGoEditor — React 封装组件
168
- *
169
- * 内部直接使用 editor-core 的 HuanbanRulegoEditor,
170
- * 所有功能与原生 JS 版完全一致:
171
- * - 工具栏 (保存/撤销/重做/导出/部署/运行/语言/主题)
172
- * - 组件侧边栏 (分类折叠/搜索/拖拽添加)
173
- * - 画布 (LogicFlow 2.x)
174
- * - 右键菜单
175
- * - 节点/边属性抽屉
176
- * - 小地图
177
- * - 键盘快捷键
178
- */
179
- declare const RuleGoEditor: React.ForwardRefExoticComponent<RuleGoEditorProps & React.RefAttributes<RuleGoEditorRef>>;
180
- export default RuleGoEditor;
181
- //# sourceMappingURL=RuleGoEditor.d.ts.map
@@ -1,52 +0,0 @@
1
- /**
2
- * @file SearchPanel.tsx
3
- * @description 节点搜索面板
4
- *
5
- * 功能:
6
- * - 按名称、类型、ID 搜索规则链中的节点
7
- * - 实时过滤和高亮匹配结果
8
- * - 点击搜索结果定位到对应节点
9
- * - 支持快捷键触发 (Ctrl/Cmd + F)
10
- * - 支持搜索历史记录(会话内)
11
- *
12
- * 设计:
13
- * - 纯 React + CSS,无外部 UI 库依赖
14
- * - rge- 前缀 CSS 类名避免冲突
15
- * - 通过回调 props 处理节点定位
16
- */
17
- import React from 'react';
18
- /** 搜索结果项 */
19
- export interface SearchResultItem {
20
- /** 节点 ID */
21
- id: string;
22
- /** 节点名称 */
23
- name: string;
24
- /** 节点类型 */
25
- type: string;
26
- /** 组件类型显示名 */
27
- typeLabel?: string;
28
- /** 附加信息 (如配置片段) */
29
- extra?: string;
30
- }
31
- /** SearchPanel 属性 */
32
- export interface SearchPanelProps {
33
- /** 所有可搜索的节点列表 */
34
- nodes: SearchResultItem[];
35
- /** 点击搜索结果回调 — 定位到对应节点 */
36
- onSelectNode?: (nodeId: string) => void;
37
- /** 关闭搜索面板回调 */
38
- onClose: () => void;
39
- /** 面板位置 */
40
- position?: 'top-center' | 'top-right';
41
- }
42
- /**
43
- * SearchPanel 组件
44
- *
45
- * @description
46
- * 提供节点搜索功能。输入关键词后实时过滤匹配节点,
47
- * 点击搜索结果可定位到画布中对应的节点。
48
- * 使用 ESC 键或关闭按钮关闭面板。
49
- */
50
- declare const SearchPanel: React.FC<SearchPanelProps>;
51
- export default SearchPanel;
52
- //# sourceMappingURL=SearchPanel.d.ts.map
@@ -1,57 +0,0 @@
1
- /**
2
- * @file components/ValidationPanel.tsx
3
- * @description 规则链验证面板 — React 实现
4
- *
5
- * 功能:
6
- * - 显示验证结果(错误/警告/信息)
7
- * - 按级别分组展示
8
- * - 点击错误项高亮对应节点/边
9
- * - 支持手动触发验证
10
- * - 统计信息展示
11
- * - 零 UI 框架依赖(纯 React + CSS)
12
- *
13
- * @see ValidationPanelProps — 面板参数
14
- */
15
- import React from 'react';
16
- /** 验证错误项 */
17
- export interface ValidationItem {
18
- /** 规则名称 */
19
- rule: string;
20
- /** 错误级别 */
21
- level: 'error' | 'warning' | 'info';
22
- /** 错误消息 */
23
- message: string;
24
- /** 关联的元素 ID */
25
- elementId?: string;
26
- /** 关联的元素类型 */
27
- elementType?: 'node' | 'edge';
28
- }
29
- /** ValidationPanel Props */
30
- export interface ValidationPanelProps {
31
- /** 验证结果列表 */
32
- items: ValidationItem[];
33
- /** 是否验证通过 */
34
- isValid?: boolean;
35
- /** 是否可见 */
36
- visible?: boolean;
37
- /** 是否正在验证中 */
38
- loading?: boolean;
39
- /** 面板标题 */
40
- title?: string;
41
- /** 手动触发验证 */
42
- onValidate?: () => void;
43
- /** 点击验证项(跳转到对应元素) */
44
- onItemClick?: (item: ValidationItem) => void;
45
- /** 关闭面板 */
46
- onClose?: () => void;
47
- /** 清除验证结果 */
48
- onClear?: () => void;
49
- }
50
- /**
51
- * ValidationPanel 组件
52
- *
53
- * 显示规则链校验结果,支持点击跳转到问题元素。
54
- */
55
- declare const ValidationPanel: React.FC<ValidationPanelProps>;
56
- export default ValidationPanel;
57
- //# sourceMappingURL=ValidationPanel.d.ts.map
@@ -1,57 +0,0 @@
1
- /**
2
- * @file components/WorkflowInfoPanel.tsx
3
- * @description 工作流信息面板组件 — 支持独立引用
4
- *
5
- * 六大替换能力:
6
- * 1. 请求替换: fetcher prop 或 apiBase
7
- * 2. CSS 替换: huanban_rulego_info__ 前缀 + CSS 变量
8
- * 3. Slot 插槽: renderBaseInfo / renderVarsSecrets / renderIntegration / renderExtraTabs
9
- * 4. 图标替换: icons prop
10
- * 5. 主题切换: theme prop
11
- * 6. 事件回调: onSave / onError / onRefresh
12
- *
13
- * Tab 页:
14
- * - 基础信息(名称/描述/状态)
15
- * - 变量与秘钥(key-value 编辑)
16
- * - 应用集成(API/MCP 地址展示)
17
- * - 自定义 Tab(通过 renderExtraTabs 扩展)
18
- *
19
- * @module @huanban/rulego-editor-react
20
- */
21
- import React from 'react';
22
- import type { WorkflowItem, WorkflowFetcher, WorkflowInfoIcons, WorkflowTheme, RuleChainAPIOptions } from '@huanban/rulego-editor-core';
23
- /** 自定义 Tab 定义 */
24
- export interface ExtraTab {
25
- key: string;
26
- label: React.ReactNode;
27
- children: React.ReactNode;
28
- }
29
- export interface WorkflowInfoPanelProps {
30
- apiBase?: string;
31
- apiOptions?: Partial<RuleChainAPIOptions>;
32
- fetcher?: WorkflowFetcher;
33
- /** 当前工作流数据 */
34
- workflow: WorkflowItem | null;
35
- theme?: WorkflowTheme;
36
- className?: string;
37
- style?: React.CSSProperties;
38
- icons?: Partial<WorkflowInfoIcons>;
39
- /** 默认激活的 Tab,默认 'base' */
40
- defaultTab?: string;
41
- /** 替换基础信息面板 */
42
- renderBaseInfo?: (workflow: WorkflowItem, defaultPanel: React.ReactNode) => React.ReactNode;
43
- /** 替换变量/秘钥面板 */
44
- renderVarsSecrets?: (workflow: WorkflowItem, defaultPanel: React.ReactNode) => React.ReactNode;
45
- /** 替换集成面板 */
46
- renderIntegration?: (workflow: WorkflowItem, apiBase: string, defaultPanel: React.ReactNode) => React.ReactNode;
47
- /** 追加自定义 Tab */
48
- renderExtraTabs?: (workflow: WorkflowItem) => ExtraTab[];
49
- /** 保存成功 */
50
- onSave?: (type: string) => void;
51
- /** 出错 */
52
- onError?: (error: Error) => void;
53
- /** 请求刷新外部数据 */
54
- onRefresh?: () => void;
55
- }
56
- export declare const WorkflowInfoPanel: React.FC<WorkflowInfoPanelProps>;
57
- //# sourceMappingURL=WorkflowInfoPanel.d.ts.map
@@ -1,91 +0,0 @@
1
- /**
2
- * @file components/WorkflowList.tsx
3
- * @description 工作流列表组件 — 支持独立引用
4
- *
5
- * 六大替换能力:
6
- * 1. 请求替换: fetcher prop(实现 WorkflowFetcher 接口)或 apiBase(用内置 fetch)
7
- * 2. CSS 替换: 所有 class 用 huanban_rulego_list__ 前缀 + CSS 变量,可完全覆盖
8
- * 3. Slot 插槽: renderHeader / renderActions / renderEmpty / renderCreateForm / renderRow
9
- * 4. 图标替换: icons prop(传入自定义图标 ReactNode)
10
- * 5. 主题切换: theme prop('light' | 'dark')
11
- * 6. 事件回调: onDesign / onInfo / onViewLogs / onChange / onError / onCreateSuccess
12
- *
13
- * 使用方式:
14
- * ```tsx
15
- * // 最简用法(内置 fetch)
16
- * <WorkflowList apiBase="http://127.0.0.1:9090/api/v1" />
17
- *
18
- * // 完整自定义
19
- * <WorkflowList
20
- * fetcher={myFetcher}
21
- * icons={{ design: <EditOutlined /> }}
22
- * theme="dark"
23
- * renderActions={(wf, defaults) => <>{defaults}<MyBtn /></>}
24
- * onDesign={(id) => navigate(`/editor/${id}`)}
25
- * />
26
- * ```
27
- *
28
- * @module @huanban/rulego-editor-react
29
- */
30
- import React from 'react';
31
- import type { WorkflowItem, WorkflowFetcher, WorkflowListIcons, WorkflowTheme, RuleChainAPIOptions } from '@huanban/rulego-editor-core';
32
- /**
33
- * WorkflowList 组件 Props
34
- */
35
- export interface WorkflowListProps {
36
- /** API 基础地址(用内置 RuleChainAPI) */
37
- apiBase?: string;
38
- /** API 配置(传给内置 RuleChainAPI 的完整配置) */
39
- apiOptions?: Partial<RuleChainAPIOptions>;
40
- /** 自定义请求适配器(传了就忽略 apiBase) */
41
- fetcher?: WorkflowFetcher;
42
- /** 每页条数,默认 10 */
43
- pageSize?: number;
44
- /** 主题 */
45
- theme?: WorkflowTheme;
46
- /** 额外 CSS 类名 */
47
- className?: string;
48
- /** 行内样式 */
49
- style?: React.CSSProperties;
50
- /** 自定义图标映射 */
51
- icons?: Partial<WorkflowListIcons>;
52
- /** 是否显示搜索框,默认 true */
53
- showSearch?: boolean;
54
- /** 是否显示新建按钮,默认 true */
55
- showCreate?: boolean;
56
- /** 是否显示刷新按钮,默认 true */
57
- showRefresh?: boolean;
58
- /** 替换标题栏区域 */
59
- renderHeader?: (defaultHeader: React.ReactNode) => React.ReactNode;
60
- /** 替换每行操作按钮 */
61
- renderActions?: (workflow: WorkflowItem, defaultActions: React.ReactNode) => React.ReactNode;
62
- /** 替换空状态 */
63
- renderEmpty?: () => React.ReactNode;
64
- /** 替换新建表单内容 */
65
- renderCreateForm?: (defaultForm: React.ReactNode, handlers: {
66
- close: () => void;
67
- submit: (data: Record<string, unknown>) => void;
68
- }) => React.ReactNode;
69
- /** 替换行渲染 */
70
- renderRow?: (workflow: WorkflowItem, index: number, defaultRow: React.ReactNode) => React.ReactNode;
71
- /** 点击设计按钮 */
72
- onDesign?: (chainId: string) => void;
73
- /** 点击信息按钮 */
74
- onInfo?: (workflow: WorkflowItem) => void;
75
- /** 点击查看日志 */
76
- onViewLogs?: (chainId: string) => void;
77
- /** 列表数据变化(增删改后) */
78
- onChange?: () => void;
79
- /** 发生错误 */
80
- onError?: (error: Error) => void;
81
- /** 创建成功 */
82
- onCreateSuccess?: (chainId: string) => void;
83
- }
84
- /**
85
- * 工作流列表组件
86
- *
87
- * @description 支持独立引用,所有功能在包里实现。
88
- * CSS 类名前缀 huanban_rulego_list__,不会污染宿主项目。
89
- */
90
- export declare const WorkflowList: React.FC<WorkflowListProps>;
91
- //# sourceMappingURL=WorkflowList.d.ts.map
@@ -1,89 +0,0 @@
1
- /**
2
- * @file useClipboard.ts
3
- * @description 规则链编辑器剪贴板管理 Hook
4
- *
5
- * 功能:
6
- * - 复制节点(单个/多个)到内部剪贴板
7
- * - 粘贴节点(自动偏移位置防重叠)
8
- * - 剪切节点(复制 + 删除)
9
- * - 全选节点
10
- * - 支持 Ctrl/Cmd + C/V/X/A 快捷键
11
- *
12
- * 设计:
13
- * - 使用内存剪贴板(不使用系统剪贴板,避免权限问题)
14
- * - 粘贴时自动生成新 ID,避免 ID 冲突
15
- * - 粘贴位置自动偏移 (30px, 30px)
16
- */
17
- /** 剪贴板中的节点数据 */
18
- export interface ClipboardNode {
19
- /** 原始节点 ID */
20
- originalId: string;
21
- /** 节点类型 */
22
- type: string;
23
- /** 节点名称 */
24
- name: string;
25
- /** 节点位置 X */
26
- x: number;
27
- /** 节点位置 Y */
28
- y: number;
29
- /** 节点属性数据 */
30
- properties: Record<string, unknown>;
31
- /** 节点的完整配置快照 */
32
- config?: Record<string, unknown>;
33
- }
34
- /** 剪贴板操作回调 */
35
- export interface ClipboardCallbacks {
36
- /** 获取当前选中的节点 */
37
- getSelectedNodes?: () => ClipboardNode[];
38
- /** 删除指定节点(剪切用) */
39
- onDeleteNodes?: (nodeIds: string[]) => void;
40
- /** 添加新节点(粘贴用) */
41
- onAddNodes?: (nodes: ClipboardNode[]) => void;
42
- /** 全选所有节点 */
43
- onSelectAll?: () => void;
44
- /** 通知消息 */
45
- onNotify?: (type: 'success' | 'info', message: string) => void;
46
- }
47
- /** useClipboard 返回值 */
48
- export interface ClipboardManager {
49
- /** 复制选中节点 */
50
- copy: () => void;
51
- /** 剪切选中节点 */
52
- cut: () => void;
53
- /** 粘贴剪贴板节点 */
54
- paste: () => void;
55
- /** 全选 */
56
- selectAll: () => void;
57
- /** 剪贴板是否有内容 */
58
- hasContent: boolean;
59
- /** 剪贴板中节点数量 */
60
- clipboardCount: number;
61
- /** 清空剪贴板 */
62
- clear: () => void;
63
- }
64
- /**
65
- * useClipboard Hook
66
- *
67
- * @description
68
- * 管理编辑器的复制/剪切/粘贴/全选操作。
69
- * 使用内存剪贴板存储节点数据,粘贴时自动生成新 ID 并偏移位置。
70
- *
71
- * @param callbacks - 操作回调
72
- * @returns 剪贴板管理器
73
- *
74
- * @example
75
- * ```tsx
76
- * const clipboard = useClipboard({
77
- * getSelectedNodes: () => selectedNodes,
78
- * onDeleteNodes: (ids) => deleteNodes(ids),
79
- * onAddNodes: (nodes) => addNodes(nodes),
80
- * onSelectAll: () => selectAllNodes(),
81
- * })
82
- *
83
- * // 在键盘事件中调用
84
- * clipboard.copy()
85
- * clipboard.paste()
86
- * ```
87
- */
88
- export declare function useClipboard(callbacks: ClipboardCallbacks): ClipboardManager;
89
- //# sourceMappingURL=useClipboard.d.ts.map