@huanban/rulego-editor-react 1.0.0

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.
Files changed (49) hide show
  1. package/README.md +311 -0
  2. package/dist/components/ComponentSidebar.d.ts +77 -0
  3. package/dist/components/ComponentSidebar.d.ts.map +1 -0
  4. package/dist/components/ContextMenu.d.ts +102 -0
  5. package/dist/components/ContextMenu.d.ts.map +1 -0
  6. package/dist/components/DataViewDialog.d.ts +41 -0
  7. package/dist/components/DataViewDialog.d.ts.map +1 -0
  8. package/dist/components/DebugPanel.d.ts +92 -0
  9. package/dist/components/DebugPanel.d.ts.map +1 -0
  10. package/dist/components/EdgePropertyDrawer.d.ts +48 -0
  11. package/dist/components/EdgePropertyDrawer.d.ts.map +1 -0
  12. package/dist/components/EditorToolbar.d.ts +99 -0
  13. package/dist/components/EditorToolbar.d.ts.map +1 -0
  14. package/dist/components/ImportExportDialog.d.ts +45 -0
  15. package/dist/components/ImportExportDialog.d.ts.map +1 -0
  16. package/dist/components/MiniMap.d.ts +75 -0
  17. package/dist/components/MiniMap.d.ts.map +1 -0
  18. package/dist/components/NodePropertyDrawer.d.ts +83 -0
  19. package/dist/components/NodePropertyDrawer.d.ts.map +1 -0
  20. package/dist/components/RuleChainSettings.d.ts +74 -0
  21. package/dist/components/RuleChainSettings.d.ts.map +1 -0
  22. package/dist/components/RuleGoEditor.d.ts +168 -0
  23. package/dist/components/RuleGoEditor.d.ts.map +1 -0
  24. package/dist/components/SearchPanel.d.ts +52 -0
  25. package/dist/components/SearchPanel.d.ts.map +1 -0
  26. package/dist/components/ValidationPanel.d.ts +57 -0
  27. package/dist/components/ValidationPanel.d.ts.map +1 -0
  28. package/dist/components/WorkflowInfoPanel.d.ts +57 -0
  29. package/dist/components/WorkflowInfoPanel.d.ts.map +1 -0
  30. package/dist/components/WorkflowList.d.ts +91 -0
  31. package/dist/components/WorkflowList.d.ts.map +1 -0
  32. package/dist/hooks/useClipboard.d.ts +89 -0
  33. package/dist/hooks/useClipboard.d.ts.map +1 -0
  34. package/dist/hooks/useEditorCore.d.ts +102 -0
  35. package/dist/hooks/useEditorCore.d.ts.map +1 -0
  36. package/dist/hooks/useEditorI18n.d.ts +33 -0
  37. package/dist/hooks/useEditorI18n.d.ts.map +1 -0
  38. package/dist/hooks/useEditorTheme.d.ts +37 -0
  39. package/dist/hooks/useEditorTheme.d.ts.map +1 -0
  40. package/dist/hooks/useKeyboardShortcuts.d.ts +73 -0
  41. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  42. package/dist/index.cjs.js +2494 -0
  43. package/dist/index.cjs.js.map +1 -0
  44. package/dist/index.d.ts +104 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.esm.js +62356 -0
  47. package/dist/index.esm.js.map +1 -0
  48. package/dist/style.css +1 -0
  49. package/package.json +69 -0
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @file components/EditorToolbar.tsx
3
+ * @description 编辑器工具栏 — React 实现
4
+ *
5
+ * 功能:
6
+ * - 保存/撤销/重做操作按钮
7
+ * - 删除选中元素
8
+ * - 缩放控制(放大/缩小/适应画布/重置)
9
+ * - 全屏切换
10
+ * - 调试模式开关
11
+ * - 数据视图触发
12
+ * - 设置入口
13
+ * - 校验入口
14
+ * - 零 UI 框架依赖(纯 React + CSS)
15
+ *
16
+ * @see EditorToolbarProps — 工具栏参数
17
+ */
18
+ import React from 'react';
19
+ /** 工具栏按钮定义 */
20
+ export interface ToolbarButton {
21
+ /** 唯一标识 */
22
+ key: string;
23
+ /** 显示图标(emoji 或文本) */
24
+ icon: string;
25
+ /** 提示文本 */
26
+ tooltip: string;
27
+ /** 是否禁用 */
28
+ disabled?: boolean;
29
+ /** 是否激活状态 */
30
+ active?: boolean;
31
+ /** 点击回调 */
32
+ onClick: () => void;
33
+ /** 是否隐藏 */
34
+ hidden?: boolean;
35
+ /** 分隔符(在按钮前添加) */
36
+ dividerBefore?: boolean;
37
+ }
38
+ /** EditorToolbar Props */
39
+ export interface EditorToolbarProps {
40
+ /** 是否可撤销 */
41
+ canUndo?: boolean;
42
+ /** 是否可重做 */
43
+ canRedo?: boolean;
44
+ /** 是否全屏 */
45
+ isFullscreen?: boolean;
46
+ /** 是否调试模式 */
47
+ isDebugMode?: boolean;
48
+ /** 当前缩放比例 */
49
+ zoomLevel?: number;
50
+ /** 是否有选中元素 */
51
+ hasSelection?: boolean;
52
+ /** 保存 */
53
+ onSave?: () => void;
54
+ /** 撤销 */
55
+ onUndo?: () => void;
56
+ /** 重做 */
57
+ onRedo?: () => void;
58
+ /** 删除选中 */
59
+ onDelete?: () => void;
60
+ /** 放大 */
61
+ onZoomIn?: () => void;
62
+ /** 缩小 */
63
+ onZoomOut?: () => void;
64
+ /** 适应画布 */
65
+ onFitView?: () => void;
66
+ /** 重置缩放 */
67
+ onResetZoom?: () => void;
68
+ /** 全屏切换 */
69
+ onFullscreen?: () => void;
70
+ /** 调试模式切换 */
71
+ onToggleDebug?: () => void;
72
+ /** 查看数据 */
73
+ onViewData?: () => void;
74
+ /** 设置 */
75
+ onSettings?: () => void;
76
+ /** 校验 */
77
+ onValidate?: () => void;
78
+ /** 新建规则链 */
79
+ onNew?: () => void;
80
+ /** 导入 */
81
+ onImport?: () => void;
82
+ /** 导出 */
83
+ onExport?: () => void;
84
+ /** 额外的自定义按钮(插入到工具栏末尾) */
85
+ extraButtons?: ToolbarButton[];
86
+ /** 隐藏的按钮 key 列表 */
87
+ hiddenButtons?: string[];
88
+ /** 规则链名称(显示在工具栏中央) */
89
+ chainName?: string;
90
+ }
91
+ /**
92
+ * EditorToolbar 组件
93
+ *
94
+ * 纯 React 实现的编辑器工具栏,无 antd 依赖。
95
+ * 提供完整的编辑器操作按钮。
96
+ */
97
+ declare const EditorToolbar: React.FC<EditorToolbarProps>;
98
+ export default EditorToolbar;
99
+ //# sourceMappingURL=EditorToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorToolbar.d.ts","sourceRoot":"","sources":["../../src/components/EditorToolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,cAAc;AACd,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,GAAG,EAAE,MAAM,CAAA;IACX,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,OAAO,EAAE,MAAM,CAAA;IACf,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW;IACX,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kBAAkB;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,0BAA0B;AAC1B,MAAM,WAAW,kBAAkB;IACjC,YAAY;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW;IACX,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc;IACd,YAAY,CAAC,EAAE,OAAO,CAAA;IAGtB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS;IACT,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW;IACX,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,SAAS;IACT,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,SAAS;IACT,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAClB,SAAS;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAErB,yBAAyB;IACzB,YAAY,CAAC,EAAE,aAAa,EAAE,CAAA;IAC9B,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwH/C,CAAA;AAID,eAAe,aAAa,CAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @file ImportExportDialog.tsx
3
+ * @description 规则链导入/导出对话框
4
+ *
5
+ * 功能:
6
+ * - 导出当前规则链为 JSON 文件
7
+ * - 从 JSON 文件导入规则链
8
+ * - 支持拖拽上传文件
9
+ * - JSON 格式验证和预览
10
+ * - 支持复制导出内容到剪贴板
11
+ *
12
+ * 设计:
13
+ * - 纯 React + CSS,无外部 UI 库依赖
14
+ * - rge- 前缀 CSS 类名避免冲突
15
+ * - 通过回调 props 传递导入数据
16
+ */
17
+ import React from 'react';
18
+ /** 导入/导出模式 */
19
+ export type ImportExportMode = 'import' | 'export';
20
+ /** ImportExportDialog 属性 */
21
+ export interface ImportExportDialogProps {
22
+ /** 初始模式,默认 'export' */
23
+ mode?: ImportExportMode;
24
+ /** 当前规则链数据 (导出用) */
25
+ data?: any;
26
+ /** 规则链名称 (用于文件名) */
27
+ chainName?: string;
28
+ /** 导入成功回调,参数为解析后的 JSON 数据 */
29
+ onImport?: (data: any) => void;
30
+ /** 关闭对话框回调 */
31
+ onClose: () => void;
32
+ /** 通知回调 */
33
+ onNotify?: (type: 'success' | 'error' | 'info', message: string) => void;
34
+ }
35
+ /**
36
+ * ImportExportDialog 组件
37
+ *
38
+ * @description
39
+ * 提供规则链的导入和导出功能。导出时展示格式化的 JSON,
40
+ * 支持复制到剪贴板和下载为文件。导入时支持文件选择和拖拽上传,
41
+ * 自动验证 JSON 格式并预览内容。
42
+ */
43
+ declare const ImportExportDialog: React.FC<ImportExportDialogProps>;
44
+ export default ImportExportDialog;
45
+ //# sourceMappingURL=ImportExportDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportExportDialog.d.ts","sourceRoot":"","sources":["../../src/components/ImportExportDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAwC,MAAM,OAAO,CAAA;AAM5D,cAAc;AACd,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAElD,4BAA4B;AAC5B,MAAM,WAAW,uBAAuB;IACtC,uBAAuB;IACvB,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,oBAAoB;IACpB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9B,cAAc;IACd,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW;IACX,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACzE;AAMD;;;;;;;GAOG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+PzD,CAAA;AAED,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @file components/MiniMap.tsx
3
+ * @description 小地图导航组件 — React 实现
4
+ *
5
+ * 功能:
6
+ * - 显示画布全局缩略视图
7
+ * - 标记所有节点位置(按类型着色)
8
+ * - 标记当前视口范围(拖拽移动)
9
+ * - 标记选中节点(高亮)
10
+ * - 可折叠/展开
11
+ * - 零 UI 框架依赖(纯 React + CSS)
12
+ *
13
+ * @see MiniMapProps — 参数类型
14
+ */
15
+ import React from 'react';
16
+ /** 小地图中的节点数据 */
17
+ export interface MiniMapNode {
18
+ /** 节点 ID */
19
+ id: string;
20
+ /** X 坐标 */
21
+ x: number;
22
+ /** Y 坐标 */
23
+ y: number;
24
+ /** 宽度 */
25
+ width?: number;
26
+ /** 高度 */
27
+ height?: number;
28
+ /** 节点类型 */
29
+ type?: string;
30
+ /** 是否选中 */
31
+ selected?: boolean;
32
+ /** 显示颜色 */
33
+ color?: string;
34
+ }
35
+ /** 小地图中的视口数据 */
36
+ export interface MiniMapViewport {
37
+ /** 视口左上角 X */
38
+ x: number;
39
+ /** 视口左上角 Y */
40
+ y: number;
41
+ /** 视口宽度 */
42
+ width: number;
43
+ /** 视口高度 */
44
+ height: number;
45
+ }
46
+ /** MiniMap Props */
47
+ export interface MiniMapProps {
48
+ /** 所有节点列表 */
49
+ nodes: MiniMapNode[];
50
+ /** 当前视口范围 */
51
+ viewport?: MiniMapViewport;
52
+ /** 小地图宽度(默认 200) */
53
+ width?: number;
54
+ /** 小地图高度(默认 150) */
55
+ height?: number;
56
+ /** 是否默认折叠 */
57
+ defaultCollapsed?: boolean;
58
+ /** 位置(右下角/左下角/右上角/左上角) */
59
+ position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
60
+ /** 视口拖拽回调 — 返回画布坐标 */
61
+ onViewportChange?: (center: {
62
+ x: number;
63
+ y: number;
64
+ }) => void;
65
+ /** 节点点击回调 */
66
+ onNodeClick?: (nodeId: string) => void;
67
+ }
68
+ /**
69
+ * MiniMap 组件
70
+ *
71
+ * 显示画布全局缩略图,方便大型规则链的导航。
72
+ */
73
+ declare const MiniMap: React.FC<MiniMapProps>;
74
+ export default MiniMap;
75
+ //# sourceMappingURL=MiniMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiniMap.d.ts","sourceRoot":"","sources":["../../src/components/MiniMap.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAmD,MAAM,OAAO,CAAA;AAIvE,gBAAgB;AAChB,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,WAAW;IACX,CAAC,EAAE,MAAM,CAAA;IACT,WAAW;IACX,CAAC,EAAE,MAAM,CAAA;IACT,SAAS;IACT,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,cAAc;IACd,CAAC,EAAE,MAAM,CAAA;IACT,cAAc;IACd,CAAC,EAAE,MAAM,CAAA;IACT,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;IACb,WAAW;IACX,MAAM,EAAE,MAAM,CAAA;CACf;AAED,oBAAoB;AACpB,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,aAAa;IACb,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAA;IACpE,sBAAsB;IACtB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7D,aAAa;IACb,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAwCD;;;;GAIG;AACH,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuJnC,CAAA;AAID,eAAe,OAAO,CAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * @file components/NodePropertyDrawer.tsx
3
+ * @description 节点属性编辑抽屉 — React 实现
4
+ *
5
+ * 功能:
6
+ * - 双击节点弹出侧边抽屉,编辑节点配置
7
+ * - 根据组件 fields 定义动态渲染表单(string/bool/int/float/map/array/script)
8
+ * - 支持节点 ID、名称、调试模式、描述等基础字段
9
+ * - 提交后通过 onSubmit 回调更新节点属性
10
+ * - 零 UI 框架依赖(纯 React + CSS)
11
+ *
12
+ * @see ComponentField — 字段定义类型
13
+ */
14
+ import React from 'react';
15
+ /** 组件字段定义 */
16
+ export interface FieldDef {
17
+ /** 字段名 */
18
+ name: string;
19
+ /** 字段类型 */
20
+ type: string;
21
+ /** 显示标签 */
22
+ label?: string;
23
+ /** 字段描述 */
24
+ desc?: string;
25
+ /** 默认值 */
26
+ defaultValue?: unknown;
27
+ /** 校验规则 */
28
+ rules?: unknown[];
29
+ }
30
+ /** 节点模型数据 */
31
+ export interface NodeModel {
32
+ /** LogicFlow 节点 ID */
33
+ id: string;
34
+ /** RuleGo 节点 ID */
35
+ nodeId?: string;
36
+ /** 节点类型 */
37
+ type: string;
38
+ /** 节点名称 */
39
+ name: string;
40
+ /** 调试模式 */
41
+ debugMode?: boolean;
42
+ /** 节点配置 */
43
+ configuration?: Record<string, unknown>;
44
+ /** 附加信息(描述等) */
45
+ additionalInfo?: Record<string, unknown>;
46
+ /** 额外属性 */
47
+ [key: string]: unknown;
48
+ }
49
+ /** 节点视图定义(组件定义) */
50
+ export interface NodeView {
51
+ /** 组件类型 */
52
+ type: string;
53
+ /** 显示标签 */
54
+ label?: string;
55
+ /** 描述 */
56
+ desc?: string;
57
+ /** 字段定义列表 */
58
+ fields?: FieldDef[];
59
+ /** 额外属性 */
60
+ [key: string]: unknown;
61
+ }
62
+ /** NodePropertyDrawer Props */
63
+ export interface NodePropertyDrawerProps {
64
+ /** 是否显示 */
65
+ visible: boolean;
66
+ /** 节点模型数据 */
67
+ nodeModel: NodeModel | null;
68
+ /** 节点视图/组件定义 */
69
+ nodeView: NodeView | null;
70
+ /** 提交回调 */
71
+ onSubmit: (model: NodeModel) => void;
72
+ /** 关闭回调 */
73
+ onClose: () => void;
74
+ }
75
+ /**
76
+ * NodePropertyDrawer 组件
77
+ *
78
+ * 纯 React 实现的节点属性编辑抽屉,无 antd 依赖。
79
+ * 根据组件 fields 动态渲染表单,支持多种字段类型。
80
+ */
81
+ declare const NodePropertyDrawer: React.FC<NodePropertyDrawerProps>;
82
+ export default NodePropertyDrawer;
83
+ //# sourceMappingURL=NodePropertyDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodePropertyDrawer.d.ts","sourceRoot":"","sources":["../../src/components/NodePropertyDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAA2C,MAAM,OAAO,CAAA;AAI/D,aAAa;AACb,MAAM,WAAW,QAAQ;IACvB,UAAU;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU;IACV,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;CAClB;AAED,aAAa;AACb,MAAM,WAAW,SAAS;IACxB,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,gBAAgB;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,WAAW;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,mBAAmB;AACnB,MAAM,WAAW,QAAQ;IACvB,WAAW;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa;IACb,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,WAAW;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,+BAA+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa;IACb,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,gBAAgB;IAChB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,WAAW;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACpC,WAAW;IACX,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAYD;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA0VzD,CAAA;AAID,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,74 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuleChainSettings.d.ts","sourceRoot":"","sources":["../../src/components/RuleChainSettings.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAA8B,MAAM,OAAO,CAAA;AAIlD,cAAc;AACd,MAAM,WAAW,qBAAqB;IACpC,aAAa;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS;IACT,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,YAAY;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa;IACb,IAAI,EAAE,qBAAqB,CAAA;IAC3B,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,iBAAiB;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,UAAU;QACV,GAAG,EAAE,MAAM,CAAA;QACX,WAAW;QACX,KAAK,EAAE,MAAM,CAAA;QACb,WAAW;QACX,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAA;QAC1D,iBAAiB;QACjB,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACjD,UAAU;QACV,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,SAAS;QACT,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW;QACX,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAC,CAAA;IAGF,WAAW;IACX,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAA;IAC9C,cAAc;IACd,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6OvD,CAAA;AAID,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,168 @@
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
+ data?: RuleChainData | null;
56
+ /** 初始组件列表 */
57
+ components?: ComponentDefinition[];
58
+ /** 是否显示工具栏, 默认 true */
59
+ showToolbar?: boolean;
60
+ /** 工具栏左侧标题 */
61
+ toolbarTitle?: string;
62
+ /** 是否显示侧边栏, 默认 true */
63
+ showSidebar?: boolean;
64
+ /** 侧边栏宽度, 默认 220 */
65
+ sidebarWidth?: number;
66
+ /** 侧边栏是否默认收起 */
67
+ sidebarCollapsed?: boolean;
68
+ /** 是否显示信息按钮 */
69
+ showInfoButton?: boolean;
70
+ /** 是否显示导出按钮, 默认 true */
71
+ showExportDialog?: boolean;
72
+ /** 是否显示运行按钮 */
73
+ showRunButton?: boolean;
74
+ /** 是否显示组件管理按钮 */
75
+ showComponentManage?: boolean;
76
+ /** 是否显示部署按钮, 默认 true */
77
+ showDeployButton?: boolean;
78
+ /** 是否显示运行记录按钮 */
79
+ showRunHistory?: boolean;
80
+ /** 运行记录 URL (支持 {chainId} 占位符) */
81
+ runHistoryUrl?: string;
82
+ /** 是否显示调试日志 Tab */
83
+ showDebugTab?: boolean;
84
+ /** 语言设置, 默认 'zh_cn' */
85
+ locale?: string;
86
+ /** LogicFlow 额外配置 (与默认配置合并) */
87
+ lfOptions?: Record<string, unknown>;
88
+ /** LogicFlow 插件数组 */
89
+ lfPlugins?: any[];
90
+ /** EditorCore 额外配置 */
91
+ coreOptions?: Record<string, unknown>;
92
+ /** 编辑器就绪 */
93
+ onReady?: (ctx: {
94
+ lf: LogicFlow;
95
+ core: EditorCore;
96
+ }) => void;
97
+ /** 保存回调 */
98
+ onSave?: (data: unknown) => void;
99
+ /** 节点点击 */
100
+ onNodeClick?: (data: unknown) => void;
101
+ /** 节点双击 */
102
+ onNodeDbClick?: (data: unknown) => void;
103
+ /** 边点击 */
104
+ onEdgeClick?: (data: unknown) => void;
105
+ /** 数据变化 */
106
+ onChange?: () => void;
107
+ /** 点击信息按钮 */
108
+ onInfoClick?: (chainInfo: any) => void;
109
+ /** 劫持导出 */
110
+ onExportDSL?: (data: {
111
+ json: string;
112
+ imageDataUrl?: string;
113
+ }) => void;
114
+ /** 劫持运行 */
115
+ onRunClick?: (chainId: string) => void;
116
+ /** 劫持组件管理 */
117
+ onComponentManage?: () => void;
118
+ /** 语言切换回调 */
119
+ onLocaleChange?: (locale: string) => void;
120
+ /** 劫持部署 */
121
+ onDeploy?: (chainId: string, action: 'deploy' | 'undeploy' | 'reload') => void;
122
+ /** 选择规则链 */
123
+ onSelectRuleChain?: (ruleChain: any) => void;
124
+ /** 删除规则链 */
125
+ onDeleteRuleChain?: (chainId: string) => void;
126
+ /** 劫持运行记录 */
127
+ onRunHistory?: (chainId: string) => void;
128
+ /** 规则链列表数据 */
129
+ ruleItems?: any[];
130
+ /** 规则链 API 地址 */
131
+ rulesApi?: string;
132
+ }
133
+ /**
134
+ * RuleGoEditor 的命令式 API
135
+ * 通过 useRef + forwardRef 暴露给父组件
136
+ */
137
+ export interface RuleGoEditorRef {
138
+ /** HuanbanRulegoEditor 实例 (editor-core) */
139
+ editor: HuanbanRulegoEditor | null;
140
+ /** LogicFlow 实例 */
141
+ lf: LogicFlow | null;
142
+ /** EditorCore 实例 */
143
+ core: EditorCore | null;
144
+ /** 重新加载数据 */
145
+ loadData: (data: RuleChainData) => void;
146
+ /** 重新加载组件 */
147
+ loadComponents: (components: ComponentDefinition[]) => void;
148
+ /** 导出数据 */
149
+ exportData: () => RuleChainData | null;
150
+ /** 切换小地图 */
151
+ toggleMiniMap: () => void;
152
+ }
153
+ /**
154
+ * RuleGoEditor — React 封装组件
155
+ *
156
+ * 内部直接使用 editor-core 的 HuanbanRulegoEditor,
157
+ * 所有功能与原生 JS 版完全一致:
158
+ * - 工具栏 (保存/撤销/重做/导出/部署/运行/语言/主题)
159
+ * - 组件侧边栏 (分类折叠/搜索/拖拽添加)
160
+ * - 画布 (LogicFlow 2.x)
161
+ * - 右键菜单
162
+ * - 节点/边属性抽屉
163
+ * - 小地图
164
+ * - 键盘快捷键
165
+ */
166
+ declare const RuleGoEditor: React.ForwardRefExoticComponent<RuleGoEditorProps & React.RefAttributes<RuleGoEditorRef>>;
167
+ export default RuleGoEditor;
168
+ //# sourceMappingURL=RuleGoEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuleGoEditor.d.ts","sourceRoot":"","sources":["../../src/components/RuleGoEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPanel.d.ts","sourceRoot":"","sources":["../../src/components/SearchPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAA4D,MAAM,OAAO,CAAA;AAMhF,YAAY;AACZ,MAAM,WAAW,gBAAgB;IAC/B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,WAAW;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAqB;AACrB,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB;IACjB,KAAK,EAAE,gBAAgB,EAAE,CAAA;IACzB,yBAAyB;IACzB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,eAAe;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW;IACX,QAAQ,CAAC,EAAE,YAAY,GAAG,WAAW,CAAA;CACtC;AAgCD;;;;;;;GAOG;AACH,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4H3C,CAAA;AAED,eAAe,WAAW,CAAA"}