@logicflow/core 0.7.15 → 1.0.0-alpha.10

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