@logicflow/core 1.0.0-alpha.4 → 1.0.0-alpha.5

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 (51) hide show
  1. package/dist/logic-flow.js +11 -2
  2. package/dist/style/index.css +1 -1
  3. package/package.json +1 -1
  4. package/types/LogicFlow.d.ts +137 -341
  5. package/types/constant/DefaultTheme.d.ts +171 -271
  6. package/types/keyboard/index.d.ts +5 -1
  7. package/types/model/BaseModel.d.ts +0 -59
  8. package/types/model/EditConfigModel.d.ts +16 -6
  9. package/types/model/GraphModel.d.ts +58 -264
  10. package/types/model/SnaplineModel.d.ts +2 -6
  11. package/types/model/TransformModel.d.ts +2 -8
  12. package/types/model/edge/BaseEdgeModel.d.ts +10 -16
  13. package/types/model/edge/BezierEdgeModel.d.ts +0 -9
  14. package/types/model/edge/LineEdgeModel.d.ts +0 -6
  15. package/types/model/edge/PolylineEdgeModel.d.ts +0 -7
  16. package/types/model/node/BaseNodeModel.d.ts +29 -90
  17. package/types/model/node/CircleNodeModel.d.ts +4 -12
  18. package/types/model/node/DiamondNodeModel.d.ts +4 -7
  19. package/types/model/node/EllipseNodeModel.d.ts +2 -6
  20. package/types/model/node/HtmlNodeModel.d.ts +2 -0
  21. package/types/model/node/PolygonNodeModel.d.ts +2 -11
  22. package/types/model/node/RectNodeModel.d.ts +2 -9
  23. package/types/model/node/TextNodeModel.d.ts +4 -8
  24. package/types/options.d.ts +10 -84
  25. package/types/type/index.d.ts +37 -50
  26. package/types/util/edge.d.ts +3 -3
  27. package/types/util/graph.d.ts +1 -1
  28. package/types/util/node.d.ts +1 -1
  29. package/types/util/theme.d.ts +173 -2
  30. package/types/view/Anchor.d.ts +2 -0
  31. package/types/view/Graph.d.ts +3 -1
  32. package/types/view/basic-shape/Path.d.ts +9 -1
  33. package/types/view/basic-shape/Rect.d.ts +5 -1
  34. package/types/view/behavior/DnD.d.ts +4 -0
  35. package/types/view/edge/AdjustPoint.d.ts +3 -1
  36. package/types/view/edge/Arrow.d.ts +3 -3
  37. package/types/view/edge/BaseEdge.d.ts +20 -2
  38. package/types/view/edge/BezierEdge.d.ts +12 -0
  39. package/types/view/edge/LineEdge.d.ts +13 -0
  40. package/types/view/edge/PolylineEdge.d.ts +12 -0
  41. package/types/view/node/BaseNode.d.ts +36 -1
  42. package/types/view/node/CircleNode.d.ts +37 -0
  43. package/types/view/node/DiamondNode.d.ts +37 -0
  44. package/types/view/node/EllipseNode.d.ts +26 -0
  45. package/types/view/node/HtmlNode.d.ts +0 -20
  46. package/types/view/node/PolygonNode.d.ts +19 -1
  47. package/types/view/node/RectNode.d.ts +37 -0
  48. package/types/view/node/TextNode.d.ts +0 -1
  49. package/types/view/overlay/BackgroundOverlay.d.ts +29 -18
  50. package/types/view/overlay/CanvasOverlay.d.ts +2 -0
  51. package/types/view/overlay/OutlineOverlay.d.ts +1 -1
@@ -105,7 +105,7 @@
105
105
  display: flex;
106
106
  justify-content: center;
107
107
  align-items: center;
108
- /* border: 1px solid transparent; */
108
+ border: 1px solid transparent;
109
109
  }
110
110
  .lf-node-text-auto-wrap-content {
111
111
  line-height: 1.2;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logicflow/core",
3
- "version": "1.0.0-alpha.4",
3
+ "version": "1.0.0-alpha.5",
4
4
  "description": "LogicFlow core, to quickly build flowchart editor",
5
5
  "main": "dist/logic-flow.js",
6
6
  "unpkg": "dist/logic-flow.js",
@@ -4,134 +4,117 @@ import * as Options from './options';
4
4
  import * as _Model from './model';
5
5
  import History from './history/History';
6
6
  import Tool from './tool';
7
- import { CallbackType } from './event/eventEmitter';
7
+ import EventEmitter, { CallbackType } from './event/eventEmitter';
8
8
  import Keyboard from './keyboard';
9
- import { EdgeConfig, EdgeFilter, NodeConfig, Extension, ComponentRender, FocusOnArgs, EdgeData, GraphConfigData, RegisterElementFn, RegisterConfig, ZoomParam, PointTuple } from './type';
9
+ import { EdgeConfig, EdgeFilter, NodeConfig, NodeAttribute, Extension, ComponentRender, FocusOnArgs, EdgeAttribute, EdgeData, GraphConfigData, RegisterElementFn, RegisterConfig, ZoomParam, PointTuple } from './type';
10
10
  import SnaplineModel from './model/SnaplineModel';
11
- import { EditConfigInterface } from './model/editConfigModel';
12
- import { Theme } from './constant/DefaultTheme';
11
+ import { EditConfigInterface } from './model/EditConfigModel';
13
12
  declare type GraphConfigModel = {
14
13
  nodes: _Model.BaseNodeModel[];
15
14
  edges: _Model.BaseEdgeModel[];
16
15
  };
17
16
  export default class LogicFlow {
18
- /**
19
- * 只读:logicflow实例挂载的容器。
20
- */
21
17
  container: HTMLElement;
22
- /**
23
- * 只读:画布宽度
24
- */
25
18
  width: number;
26
- /**
27
- * 只读:画布高度
28
- */
29
19
  height: number;
30
- /**
31
- * 只读:控制整个logicflow画布的model
32
- */
33
20
  graphModel: GraphModel;
34
- /**
35
- * 只读:控制上一步、下一步相关
36
- */
37
21
  history: History;
38
22
  viewMap: Map<any, any>;
39
23
  tool: Tool;
40
24
  keyboard: Keyboard;
41
25
  dnd: Dnd;
42
26
  options: Options.Definition;
27
+ getSnapshot: () => void;
28
+ eventCenter: EventEmitter;
43
29
  snaplineModel: SnaplineModel;
44
- components: ComponentRender[];
45
30
  static extensions: Map<string, Extension>;
31
+ components: ComponentRender[];
32
+ adapterIn: (data: unknown) => GraphConfigData;
33
+ adapterOut: (data: GraphConfigData) => unknown;
34
+ [propName: string]: any;
35
+ constructor(options: Options.Definition);
36
+ on(evt: string, callback: CallbackType): void;
37
+ off(evt: string, callback: CallbackType): void;
38
+ once(evt: string, callback: CallbackType): void;
39
+ emit(evt: string, arg: any): void;
46
40
  /**
47
- * 自定义数据格式转换方法
48
- * 当接入系统格式和logicflow格式不一直的时候,可以自定义此方法来转换数据格式
49
- * 详情请参考adapter
50
- * @see todo
41
+ * 添加扩展, 待讨论,这里是不是静态方法好一些?
42
+ * 重复添加插件的时候,把上一次添加的插件的销毁。
43
+ * @param plugin 插件
51
44
  */
52
- adapterIn: (data: unknown) => GraphConfigData;
45
+ static use(extension: Extension): void;
46
+ installPlugins(disabledPlugins?: any[]): void;
47
+ __installPlugin(extension: any): void;
48
+ register(type: string | RegisterConfig, fn?: RegisterElementFn, isObserverView?: boolean): void;
49
+ _registerElement(config: any): void;
50
+ defaultRegister(): void;
51
+ undo(): void;
52
+ redo(): void;
53
53
  /**
54
- * 自定义数据格式转换方法
55
- * 把logicflow输入的格式转换也接入系统需要的格式
56
- * 详情请参考adapter
57
- * @see todo
54
+ * 放大缩小图形
55
+ * @param zoomSize 放大缩小的值,支持传入0-n之间的数字。小于1表示缩小,大于1表示放大。也支持传入true和false按照内置的刻度放大缩小
56
+ * @param point 缩放的原点
57
+ * @returns {string} -放大缩小的比例
58
58
  */
59
- adapterOut: (data: GraphConfigData) => unknown;
59
+ zoom(zoomSize?: ZoomParam, point?: PointTuple): string;
60
60
  /**
61
- * 支持插件在logicflow实例上增加自定义方法
61
+ * 还原图形
62
62
  */
63
- [propName: string]: any;
64
- constructor(options: Options.Definition);
63
+ resetZoom(): void;
65
64
  /**
66
- * 注册自定义节点和边
67
- * 支持两种方式
68
- * 方式一(推荐)
69
- * 详情见 todo: docs link
70
- * @example
71
- * import { RectNode, RectModel } from '@logicflow/core'
72
- * class CustomView extends RectNode {
73
- * }
74
- * class CustomModel extends RectModel {
75
- * }
76
- * lf.register({
77
- * type: 'custom',
78
- * view: CustomView,
79
- * model: CustomModel
80
- * })
81
- * 方式二
82
- * 不推荐,极个别在自定义的时候需要用到lf的情况下可以用这种方式。
83
- * 大多数情况下,我们可以直接在view中从this.props中获取graphModel
84
- * 或者model中直接this.graphModel获取model的方法。
85
- * @example
86
- * lf.register('custom', ({ RectNode, RectModel }) => {
87
- * class CustomView extends RectNode {}
88
- * class CustomModel extends RectModel {}
89
- * return {
90
- * view: CustomView,
91
- * model: CustomModel
92
- * }
93
- * })
65
+ * 设置图形缩小时,能缩放到的最小倍数。参数为0-1自己。默认0.2
66
+ * @param size 图形缩小的最小值
94
67
  */
95
- register(type: string | RegisterConfig, fn?: RegisterElementFn, isObserverView?: boolean): void;
96
- private registerElement;
97
- private defaultRegister;
68
+ setZoomMiniSize(size: number): void;
98
69
  /**
99
- * 将图形选中
100
- * @param id 选择元素ID
101
- * @param multiple 是否允许多选,如果为true,不会将上一个选中的元素重置
70
+ * 设置图形放大时,能放大到的最大倍数,默认16
71
+ * @param size 图形放大的最大值
102
72
  */
103
- selectElementById(id: string, multiple?: boolean): void;
73
+ setZoomMaxSize(size: number): void;
104
74
  /**
105
- * 定位到画布视口中心
106
- * 支持用户传入图形当前的坐标或id,可以通过type来区分是节点还是边的id,也可以不传(兜底)
107
- * @param focusOnArgs.id 如果传入的是id, 则画布视口中心移动到此id的元素中心点。
108
- * @param focusOnArgs.coordinate 如果传入的是坐标,则画布视口中心移动到此坐标。
75
+ * 获取缩放的值和平移的值。
109
76
  */
110
- focusOn(focusOnArgs: FocusOnArgs): void;
77
+ getTransform(): {
78
+ SCALE_X: number;
79
+ SCALE_Y: number;
80
+ TRANSLATE_X: number;
81
+ TRANSLATE_Y: number;
82
+ };
83
+ /**
84
+ * 平移图形
85
+ * @param x 向x轴移动距离
86
+ * @param y 向y轴移动距离
87
+ */
88
+ translate(x: number, y: number): void;
89
+ /**
90
+ * 还原图形为初始位置
91
+ */
92
+ resetTranslate(): void;
111
93
  /**
112
- * 设置主题样式
113
- * @param { object } style 自定义主题样式
114
- * todo docs link
94
+ * 将图形选中
95
+ * @param id 选择元素ID
96
+ * @param multiple 是否允许多选,如果为true,不会将上一个选中的元素重置
115
97
  */
116
- setTheme(style: Theme): void;
98
+ select(id: string, multiple?: boolean): void;
117
99
  /**
118
- * 重新设置画布的宽高
100
+ * 将图形定位到画布中心
101
+ * @param focusOnArgs 支持用户传入图形当前的坐标或id,可以通过type来区分是节点还是连线的id,也可以不传(兜底)
119
102
  */
120
- resize(width: number, height: number): void;
103
+ focusOn(focusOnArgs: FocusOnArgs): void;
104
+ setTheme(style: any): void;
121
105
  /**
122
- * 设置默认的边类型。
123
- * 也就是设置在节点直接有用户手动绘制的连线类型。
106
+ * 设置默认的连线类型
124
107
  * @param type Options.EdgeType
125
108
  */
126
109
  setDefaultEdgeType(type: Options.EdgeType): void;
127
110
  /**
128
- * 更新节点或边的文案
129
- * @param id 节点或者边id
111
+ * 更新节点或连线文案
112
+ * @param id 节点或者连线id
130
113
  * @param value 文案内容
131
114
  */
132
115
  updateText(id: string, value: string): void;
133
116
  /**
134
- * 删除元素,在不确定当前id是节点还是边时使用
117
+ * 删除元素,在不确定当前id是节点还是连线时使用
135
118
  * @param id 元素id
136
119
  */
137
120
  deleteElement(id: any): boolean;
@@ -142,7 +125,7 @@ export default class LogicFlow {
142
125
  */
143
126
  changeNodeType(id: string, type: string): void;
144
127
  /**
145
- * 获取节点连接的所有边的model
128
+ * 获取节点所有连线的model
146
129
  * @param nodeId 节点ID
147
130
  * @returns model数组
148
131
  */
@@ -158,99 +141,70 @@ export default class LogicFlow {
158
141
  */
159
142
  deleteNode(nodeId: string): boolean;
160
143
  /**
161
- * 克隆节点
162
- * @param nodeId 节点Id
144
+ * 显示节点文本编辑框
145
+ * @param nodeId 节点id
163
146
  */
164
- cloneNode(nodeId: string): _Model.BaseNodeModel;
147
+ editNodeText(nodeId: string): void;
165
148
  /**
166
- * 修改节点的id, 如果不传新的id,会内部自动创建一个。
167
- * @param { string } oldId 将要被修改的id
168
- * @param { string } newId 可选,修改后的id
169
- * @returns 修改后的节点id, 如果传入的oldId不存在,返回空字符串
170
- */
171
- changeNodeId<T extends string>(oldId: string, newId?: T): T | string;
172
- /**
173
- * 获取节点对象
149
+ * 克隆节点
174
150
  * @param nodeId 节点Id
175
151
  */
176
- getNodeModelById(nodeId: string): _Model.BaseNodeModel;
177
- /**
178
- * 获取节点数据
179
- * @param nodeId 节点
180
- */
181
- getNodeDataById(nodeId: string): NodeConfig;
182
- /**
183
- * 给两个节点之间添加一条边
184
- * @example
185
- * lf.addEdge({
186
- * type: 'polygon'
187
- * sourceNodeId: 'node_id_1',
188
- * targetNodeId: 'node_id_2',
189
- * })
190
- * @param {object} edgeConfig
191
- */
192
- addEdge(edgeConfig: EdgeConfig): void;
152
+ cloneNode(nodeId: string): _Model.BaseNodeModel;
153
+ createEdge(edgeConfig: EdgeConfig): void;
193
154
  /**
194
155
  * 删除边
195
156
  * @param {string} edgeId 边Id
196
157
  */
197
158
  deleteEdge(edgeId: string): boolean;
198
159
  /**
199
- * 删除指定类型的边, 基于边起点和终点,可以只传其一。
160
+ * 删除指定类型的边
161
+ * todo: API一致
200
162
  * @param config.sourceNodeId 边的起点节点ID
201
163
  * @param config.targetNodeId 边的终点节点ID
202
164
  */
203
- deleteEdgeByNodeId(config: {
204
- sourceNodeId?: string;
205
- targetNodeId?: string;
165
+ removeEdge(config: {
166
+ sourceNodeId: string;
167
+ targetNodeId: string;
206
168
  }): void;
207
169
  /**
208
- * 修改边的id, 如果不传新的id,会内部自动创建一个。
209
- * @param { string } oldId 将要被修改的id
210
- * @param { string } newId 可选,修改后的id
211
- * @returns 修改后的节点id, 如果传入的oldId不存在,返回空字符串
170
+ * 获取节点对象
171
+ * @param nodeId 节点Id
172
+ */
173
+ getNodeModel(nodeId: string): _Model.BaseNodeModel;
174
+ getNodeData(nodeId: string): NodeAttribute;
175
+ /**
176
+ * 设置节点数据
177
+ * @deprecated 不建议直接设置节点数据,更新文本请用updateText, 修改数据请用setProperties
212
178
  */
213
- changeEdgeId<T extends string>(oldId: string, newId?: T): T | string;
179
+ setNodeData(nodeAttribute: NodeAttribute): void;
180
+ getEdgeModel(config: EdgeFilter): _Model.BaseEdgeModel[];
214
181
  /**
215
- * 基于边Id获取边的model
182
+ * 获取边的model
216
183
  * @param edgeId 边的Id
217
- * @return model
218
184
  */
219
185
  getEdgeModelById(edgeId: string): _Model.BaseEdgeModel;
220
186
  /**
221
- * 获取满足条件边的model
222
- * @param edgeFilter 过滤条件
223
- * @example
224
- * 获取所有起点为节点A的边的model
225
- * lf.getEdgeModels({
226
- * sourceNodeId: 'nodeA_id'
227
- * })
228
- * 获取所有终点为节点B的边的model
229
- * lf.getEdgeModels({
230
- * targetNodeId: 'nodeB_id'
231
- * })
232
- * 获取起点为节点A,终点为节点B的边
233
- * lf.getEdgeModels({
234
- * sourceNodeId: 'nodeA_id',
235
- * targetNodeId: 'nodeB_id'
236
- * })
237
- * @return model数组
238
- */
239
- getEdgeModels(edgeFilter: EdgeFilter): _Model.BaseEdgeModel[];
240
- /**
241
- * 基于id获取边数据
242
- * @param edgeId 边Id
243
- * @returns EdgeData
244
- */
245
- getEdgeDataById(edgeId: string): EdgeData;
246
- /**
247
- * 显示节点、连线文本编辑框
248
- * @param id 元素id
187
+ * 获取边Model
188
+ * @deprecated 不建议使用getEdge, 建议使用getEdgeModel
189
+ */
190
+ getEdge(config: EdgeFilter): _Model.BaseEdgeModel[];
191
+ getEdgeData(edgeId: string): EdgeData;
192
+ /**
193
+ * 设置边数据
194
+ * @deprecated 不建议直接设置边数据,更新文本请用updateText, 修改数据请用setProperties
249
195
  */
250
- editText(id: string): void;
196
+ setEdgeData(edgeAttribute: EdgeAttribute): void;
197
+ /**
198
+ * 获取流程绘图数据
199
+ */
200
+ getGraphData(): GraphConfigData | any;
201
+ /**
202
+ * 获取流程绘图原始数据
203
+ * 在存在adapter时,可以使用getGraphRawData获取图原始数据
204
+ */
205
+ getGraphRawData(): GraphConfigData;
251
206
  /**
252
207
  * 设置元素的自定义属性
253
- * @see todo docs link
254
208
  * @param id 元素的id
255
209
  * @param properties 自定义属性
256
210
  */
@@ -262,73 +216,29 @@ export default class LogicFlow {
262
216
  */
263
217
  getProperties(id: string): Object;
264
218
  /**
265
- * 将某个元素放置到顶部。
266
- * 如果堆叠模式为默认模式,则将原置顶元素重新恢复原有层级。
267
- * 如果堆叠模式为递增模式,则将需指定元素zIndex设置为当前最大zIndex + 1。
268
- * @see todo link 堆叠模式
269
- * @param id 元素Id
270
- */
271
- toFront(id: any): void;
272
- /**
273
- * 设置元素的zIndex.
274
- * 注意:默认堆叠模式下,不建议使用此方法。
275
- * @see todo link 堆叠模式
276
- * @param id 元素id
277
- * @param zIndex zIndex的值,可以传数字,也支持传入'top' 和 'bottom'
278
- */
279
- setElementZIndex(id: string, zIndex: number | 'top' | 'bottom'): void;
280
- /**
281
- * 添加多个元素, 包括边和节点。
282
- */
283
- addElements({ nodes, edges }: GraphConfigData): GraphConfigModel;
284
- /**
285
- * 获取指定区域内的所有元素,此区域必须是DOM层。
286
- * 例如鼠标绘制选区后,获取选区内的所有元素。
287
- * @see todo 分层
288
- * @param leftTopPoint 区域左上角坐标, dom层坐标
289
- * @param rightBottomPoint 区域右下角坐标,dom层坐标
290
- */
291
- getAreaElement(leftTopPoint: PointTuple, rightBottomPoint: PointTuple): any[];
292
- /**
293
- * 获取选中的元素数据
294
- * @param isIgnoreCheck 是否包括sourceNode和targetNode没有被选中的边,默认包括。
295
- * 注意:复制的时候不能包括此类边, 因为复制的时候不允许悬空的边。
296
- */
297
- getSelectElements(isIgnoreCheck?: boolean): GraphConfigData;
298
- /**
299
- * 将所有选中的元素设置为非选中
300
- */
301
- clearSelectElements(): void;
302
- /**
303
- * 获取流程绘图数据
304
- * 注意: getGraphData返回的数据受到adapter影响,所以其数据格式不一定是logicflow内部图数据格式。
305
- * 如果实现通用插件,请使用getGraphRawData
306
- */
307
- getGraphData(): GraphConfigData | any;
308
- /**
309
- * 获取流程绘图原始数据
310
- * 在存在adapter时,可以使用getGraphRawData获取图原始数据
219
+ * 修改节点的id, 如果不传新的id,会内部自动创建一个。
220
+ * @param { string } oldId 将要被修改的id
221
+ * @param { string } newId 可选,修改后的id
222
+ * @returns 修改后的节点id
311
223
  */
312
- getGraphRawData(): GraphConfigData;
224
+ changeNodeId<T extends string>(oldId: string, newId?: T): false | T | string;
313
225
  /**
314
- * 清空画布
226
+ * 修改连线的id, 如果不传新的id,会内部自动创建一个。
227
+ * @param { string } oldId 将要被修改的id
228
+ * @param { string } newId 可选,修改后的id
229
+ * @returns 修改后的节点id
315
230
  */
316
- clearData(): void;
231
+ changeEdgeId<T extends string>(oldId: string, newId?: T): false | T | string;
317
232
  /**
318
233
  * 更新流程图编辑相关设置
319
- * @param {object} config 编辑配置
320
- * @see todo docs link
321
234
  */
322
235
  updateEditConfig(config: EditConfigInterface): void;
323
236
  /**
324
- * 获取流程图当前编辑相关设置
325
- * @see todo docs link
237
+ * 获取流程图编辑相关设置
326
238
  */
327
239
  getEditConfig(): Partial<_Model.EditConfigModel>;
328
240
  /**
329
241
  * 获取事件位置相对于画布左上角的坐标
330
- * 画布所在的位置可以是页面任何地方,原生事件返回的坐标是相对于页面左上角的,该方法可以提供以画布左上角为原点的准确位置。
331
- * @see todo link
332
242
  * @param {number} x 事件x坐标
333
243
  * @param {number} y 事件y坐标
334
244
  * @returns {object} Point 事件位置的坐标
@@ -346,156 +256,42 @@ export default class LogicFlow {
346
256
  };
347
257
  };
348
258
  /**
349
- * 历史记录操作
350
- * 返回上一步
351
- */
352
- undo(): void;
353
- /**
354
- * 历史记录操作
355
- * 恢复下一步
356
- */
357
- redo(): void;
358
- /**
359
- * 放大缩小图形
360
- * @param zoomSize 放大缩小的值,支持传入0-n之间的数字。小于1表示缩小,大于1表示放大。也支持传入true和false按照内置的刻度放大缩小
361
- * @param point 缩放的原点
362
- * @returns {string} -放大缩小的比例
363
- */
364
- zoom(zoomSize?: ZoomParam, point?: PointTuple): string;
365
- /**
366
- * 重置图形的放大缩写比例为默认
367
- */
368
- resetZoom(): void;
369
- /**
370
- * 设置图形缩小时,能缩放到的最小倍数。参数为0-1自己。默认0.2
371
- * @param size 图形缩小的最小值
372
- */
373
- setZoomMiniSize(size: number): void;
374
- /**
375
- * 设置图形放大时,能放大到的最大倍数,默认16
376
- * @param size 图形放大的最大值
377
- */
378
- setZoomMaxSize(size: number): void;
379
- /**
380
- * 获取缩放的值和平移的值。
381
- */
382
- getTransform(): {
383
- SCALE_X: number;
384
- SCALE_Y: number;
385
- TRANSLATE_X: number;
386
- TRANSLATE_Y: number;
387
- };
388
- /**
389
- * 平移图
390
- * @param x 向x轴移动距离
391
- * @param y 向y轴移动距离
392
- */
393
- translate(x: number, y: number): void;
394
- /**
395
- * 还原图形为初始位置
396
- */
397
- resetTranslate(): void;
398
- /**
399
- * 监听事件
400
- * 事件详情见 @see todo
401
- * 支持同时监听多个事件
402
- * @example
403
- * lf.on('node:click,node:contextmenu', (data) => {
404
- * });
405
- */
406
- on(evt: string, callback: CallbackType): void;
407
- /**
408
- * 撤销监听事件
409
- */
410
- off(evt: string, callback: CallbackType): void;
411
- /**
412
- * 监听事件,只监听一次
413
- */
414
- once(evt: string, callback: CallbackType): void;
415
- /**
416
- * 触发监听事件
417
- */
418
- emit(evt: string, arg: any): void;
419
- /**
420
- * 添加扩展, 待讨论,这里是不是静态方法好一些?
421
- * 重复添加插件的时候,把上一次添加的插件的销毁。
422
- * @param plugin 插件
423
- */
424
- static use(extension: Extension): void;
425
- private installPlugins;
426
- /**
427
- * 加载插件
428
- * 注意,不建议插件用这种方式加载,此方式只会出发render方法,
429
- * 可能不会实时出发cont
259
+ * 获取选中的元素数据
260
+ * @param isIgnoreCheck 是否包括sourceNode和targetNode没有被选中的连线,默认包括。
261
+ * 复制的时候不能包括此类连线, 因为复制的时候不允许悬空的连线。
430
262
  */
431
- private installPlugin;
263
+ getSelectElements(isIgnoreCheck?: boolean): GraphConfigData;
432
264
  /**
433
- * 修改对应元素 model 中的属性
434
- * 注意:此方法慎用,除非您对logicflow内部有足够的了解。
435
- * 大多数情况下,请使用setProperties、updateText、changeNodeId等方法。
436
- * 例如直接使用此方法修改节点的id,那么就是会导致连接到此节点的边的sourceNodeId出现找不到的情况。
265
+ * 动态修改 id 对应元素 model 中的属性
437
266
  * @param {string} id 元素id
438
267
  * @param {object} attributes 需要更新的属性
439
268
  */
440
269
  updateAttributes(id: string, attributes: object): void;
441
270
  /**
442
- * 内部保留方法
443
- * 创建一个fakerNode,用于dnd插件拖动节点进画布的时候使用。
271
+ * 清空画布
444
272
  */
445
- createFakerNode(nodeConfig: any): any;
273
+ clearData(): void;
446
274
  /**
447
- * 内部保留方法
448
- * 移除fakerNode
275
+ * 设置元素的层级高度,在元素重叠的时候大的在前面
449
276
  */
450
- removeFakerNode(): void;
277
+ setElementZIndex(id: any, zIndex: number | 'top' | 'bottom'): void;
451
278
  /**
452
- * 内部保留方法
453
- * 用于fakerNode显示对齐线
279
+ * 添加多个元素, 包括连线和节点。
454
280
  */
281
+ addElements({ nodes, edges }: GraphConfigData): GraphConfigModel;
282
+ clearSelectElements(): void;
283
+ createFakerNode(nodeConfig: any): any;
284
+ removeFakerNode(): void;
455
285
  setNodeSnapLine(data: any): void;
456
286
  /**
457
- * 内部保留方法
458
- * 用于fakerNode移除对齐线
287
+ * 获取指定区域坐标,此区域必须是DOM层,也就是可视区域。
288
+ * @param leftTopPoint 区域左上角坐标, dom层坐标
289
+ * @param rightBottomPoint 区域右下角坐标,dom层坐标
459
290
  */
291
+ getAreaElement(leftTopPoint: PointTuple, rightBottomPoint: PointTuple): any[];
460
292
  removeNodeSnapLine(): void;
461
- /**
462
- * 内部保留方法
463
- * 用于fakerNode移除对齐线
464
- */
465
293
  setView(type: string, component: any): void;
466
- /**
467
- * 内部保留方法
468
- * 获取指定类型的view
469
- */
470
294
  getView: (type: string) => any;
471
- /**
472
- * 渲染图
473
- * @example
474
- * lf.render({
475
- * nodes: [
476
- * {
477
- * id: 'node_1',
478
- * type: 'rect',
479
- * x: 100,
480
- * y: 100
481
- * },
482
- * {
483
- * id: 'node_2',
484
- * type: 'circel',
485
- * x: 300,
486
- * y: 200
487
- * }
488
- * ],
489
- * edges: [
490
- * {
491
- * sourceNodeId: 'node_1',
492
- * targetNodeId: 'node_2',
493
- * type: 'polyline'
494
- * }
495
- * ]
496
- * })
497
- * @param graphData 图数据
498
- */
499
295
  render(graphData?: {}): void;
500
296
  }
501
297
  export {};