@logicflow/extension 1.2.0-next.0 → 1.2.0-next.2

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 (104) hide show
  1. package/cjs/NodeResize/Control/Control.js +71 -16
  2. package/cjs/NodeResize/Node/DiamondResize.js +24 -10
  3. package/cjs/NodeResize/Node/EllipseResize.js +24 -10
  4. package/cjs/NodeResize/Node/HtmlResize.js +24 -10
  5. package/cjs/NodeResize/Node/RectResize.js +24 -10
  6. package/cjs/bpmn-adapter/index.js +74 -122
  7. package/cjs/bpmn-adapter/json2xml.js +2 -4
  8. package/cjs/bpmn-adapter/xml2json.js +247 -2
  9. package/cjs/components/control/index.js +16 -16
  10. package/cjs/components/dnd-panel/index.js +21 -0
  11. package/cjs/components/highlight/index.js +0 -1
  12. package/cjs/components/menu/index.js +9 -9
  13. package/cjs/components/mini-map/index.js +223 -138
  14. package/cjs/components/selection-select/index.js +6 -19
  15. package/cjs/index.js +0 -1
  16. package/cjs/materials/curved-edge/index.js +19 -5
  17. package/cjs/materials/curved-edge/searchMiddleIndex.js +17 -0
  18. package/cjs/materials/group/GroupNode.js +34 -65
  19. package/cjs/materials/group/index.js +80 -70
  20. package/cjs/style/index.css +10 -0
  21. package/cjs/tools/auto-layout/index.js +1 -1
  22. package/es/NodeResize/Control/Control.d.ts +4 -1
  23. package/es/NodeResize/Control/Control.js +71 -16
  24. package/es/NodeResize/Node/DiamondResize.d.ts +3 -1
  25. package/es/NodeResize/Node/DiamondResize.js +24 -10
  26. package/es/NodeResize/Node/EllipseResize.d.ts +3 -1
  27. package/es/NodeResize/Node/EllipseResize.js +24 -10
  28. package/es/NodeResize/Node/HtmlResize.d.ts +3 -1
  29. package/es/NodeResize/Node/HtmlResize.js +24 -10
  30. package/es/NodeResize/Node/RectResize.d.ts +3 -1
  31. package/es/NodeResize/Node/RectResize.js +24 -10
  32. package/es/bpmn-adapter/index.d.ts +33 -41
  33. package/es/bpmn-adapter/index.js +74 -122
  34. package/es/bpmn-adapter/json2xml.js +2 -4
  35. package/es/bpmn-adapter/xml2json.js +247 -2
  36. package/es/components/control/index.d.ts +3 -2
  37. package/es/components/control/index.js +16 -16
  38. package/es/components/dnd-panel/index.js +21 -0
  39. package/es/components/highlight/index.js +0 -1
  40. package/es/components/menu/index.d.ts +3 -2
  41. package/es/components/menu/index.js +9 -9
  42. package/es/components/mini-map/index.d.ts +57 -45
  43. package/es/components/mini-map/index.js +223 -138
  44. package/es/components/selection-select/index.d.ts +0 -1
  45. package/es/components/selection-select/index.js +6 -19
  46. package/es/index.d.ts +0 -1
  47. package/es/index.js +0 -1
  48. package/es/materials/curved-edge/index.js +19 -5
  49. package/es/materials/curved-edge/searchMiddleIndex.d.ts +1 -0
  50. package/es/materials/curved-edge/searchMiddleIndex.js +14 -0
  51. package/es/materials/group/GroupNode.d.ts +5 -7
  52. package/es/materials/group/GroupNode.js +34 -65
  53. package/es/materials/group/index.d.ts +19 -1
  54. package/es/materials/group/index.js +80 -70
  55. package/es/style/index.css +10 -0
  56. package/es/tools/auto-layout/index.d.ts +1 -1
  57. package/es/tools/auto-layout/index.js +1 -1
  58. package/lib/AutoLayout.js +1 -1
  59. package/lib/BpmnAdapter.js +1 -1
  60. package/lib/BpmnElement.js +1 -1
  61. package/lib/ContextMenu.js +1 -1
  62. package/lib/Control.js +1 -1
  63. package/lib/CurvedEdge.js +1 -1
  64. package/lib/DndPanel.js +1 -1
  65. package/lib/FlowPath.js +1 -1
  66. package/lib/Group.js +1 -1
  67. package/lib/Highlight.js +1 -1
  68. package/lib/InsertNodeInPolyline.js +1 -1
  69. package/lib/Menu.js +1 -1
  70. package/lib/MiniMap.js +1 -1
  71. package/lib/NodeResize.js +1 -1
  72. package/lib/RectLabelNode.js +1 -1
  73. package/lib/SelectionSelect.js +1 -1
  74. package/lib/Snapshot.js +1 -1
  75. package/lib/TurboAdapter.js +1 -1
  76. package/lib/lfJson2Xml.js +1 -1
  77. package/lib/lfXml2Json.js +1 -1
  78. package/lib/style/index.css +10 -0
  79. package/package.json +3 -2
  80. package/types/NodeResize/Control/Control.d.ts +4 -1
  81. package/types/NodeResize/Node/DiamondResize.d.ts +3 -1
  82. package/types/NodeResize/Node/EllipseResize.d.ts +3 -1
  83. package/types/NodeResize/Node/HtmlResize.d.ts +3 -1
  84. package/types/NodeResize/Node/RectResize.d.ts +3 -1
  85. package/types/bpmn-adapter/index.d.ts +33 -41
  86. package/types/components/control/index.d.ts +3 -2
  87. package/types/components/menu/index.d.ts +3 -2
  88. package/types/components/mini-map/index.d.ts +57 -45
  89. package/types/components/selection-select/index.d.ts +0 -1
  90. package/types/index.d.ts +0 -1
  91. package/types/materials/curved-edge/searchMiddleIndex.d.ts +1 -0
  92. package/types/materials/group/GroupNode.d.ts +5 -7
  93. package/types/materials/group/index.d.ts +19 -1
  94. package/types/tools/auto-layout/index.d.ts +1 -1
  95. package/cjs/locale/en-locale/en.js +0 -22
  96. package/cjs/locale/en-locale/index.js +0 -29
  97. package/cjs/locale/locale.js +0 -19
  98. package/es/locale/en-locale/en.d.ts +0 -19
  99. package/es/locale/en-locale/en.js +0 -19
  100. package/es/locale/en-locale/index.d.ts +0 -9
  101. package/es/locale/en-locale/index.js +0 -26
  102. package/es/locale/locale.d.ts +0 -6
  103. package/es/locale/locale.js +0 -16
  104. package/lib/EnLocale.js +0 -1
@@ -47,8 +47,6 @@ declare class GroupNodeModel extends RectResize.model {
47
47
  */
48
48
  foldGroup(isFolded: any): void;
49
49
  getAnchorStyle(anchorInfo: any): Record<string, any>;
50
- foldRect(isFolded: any): void;
51
- foldChildren(isFolded: any): import("@logicflow/core/types/model/edge/BaseEdgeModel").BaseEdgeModel[];
52
50
  /**
53
51
  * 折叠分组的时候,处理分组自身的连线和分组内部子节点上的连线
54
52
  * 边的分类:
@@ -92,10 +90,6 @@ declare class GroupNodeModel extends RectResize.model {
92
90
  * @param id 节点id
93
91
  */
94
92
  removeChild(id: any): void;
95
- /**
96
- * 获得包含嵌套组的所有子节点
97
- */
98
- getChildren(): any[];
99
93
  getAddableOutlineStyle(): {
100
94
  stroke: string;
101
95
  strokeWidth: number;
@@ -108,10 +102,14 @@ declare class GroupNodeModel extends RectResize.model {
108
102
  * 是否允许此节点添加到此分组中
109
103
  */
110
104
  isAllowAppendIn(nodeData: any): boolean;
105
+ /**
106
+ * 当groupA被添加到groupB中时,将groupB及groupB所属的group的zIndex减1
107
+ */
108
+ toBack(): void;
111
109
  }
112
110
  declare class GroupNode extends RectResize.view {
113
111
  getControlGroup(): h.JSX.Element;
114
- getAddAbleShape(): import("preact").VNode<any>;
112
+ getAddableShape(): import("preact").VNode<any>;
115
113
  getFoldIcon(): import("preact").VNode<any>;
116
114
  getResizeShape(): import("preact").VNode<any>;
117
115
  }
@@ -46,6 +46,7 @@ import { h } from '@logicflow/core';
46
46
  import { RectResize } from '../../NodeResize';
47
47
  var defaultWidth = 500;
48
48
  var defaultHeight = 300;
49
+ var DEFAULT_BOTTOM_Z_INDEX = -10000;
49
50
  var GroupNodeModel = /** @class */ (function (_super) {
50
51
  __extends(GroupNodeModel, _super);
51
52
  function GroupNodeModel() {
@@ -68,8 +69,7 @@ var GroupNodeModel = /** @class */ (function (_super) {
68
69
  this.height = defaultHeight;
69
70
  this.foldedWidth = 80;
70
71
  this.foldedHeight = 60;
71
- // todo: 参考bpmn.js, 分组和未加入分组的节点重合时,未加入分组的节点在分组之下。方便标识。
72
- this.zIndex = -1;
72
+ this.zIndex = DEFAULT_BOTTOM_Z_INDEX;
73
73
  this.radius = 0;
74
74
  this.text.editable = false;
75
75
  this.text.draggable = false;
@@ -77,8 +77,6 @@ var GroupNodeModel = /** @class */ (function (_super) {
77
77
  this.resizable = false;
78
78
  this.autoToFront = false;
79
79
  this.foldable = false;
80
- // 是否可以被嵌套
81
- this.nestable = false;
82
80
  if (this.properties.isFolded === undefined) {
83
81
  this.properties.isFolded = false;
84
82
  }
@@ -102,60 +100,41 @@ var GroupNodeModel = /** @class */ (function (_super) {
102
100
  * 3. 处理连线
103
101
  */
104
102
  GroupNodeModel.prototype.foldGroup = function (isFolded) {
103
+ var _this = this;
105
104
  this.setProperty('isFolded', isFolded);
106
105
  this.isFolded = isFolded;
107
106
  // step 1
108
- this.foldRect(isFolded);
109
- // step 2
110
- var allEdges = this.foldChildren(isFolded);
111
- // step 3
112
- console.log({ allEdges: allEdges });
113
- this.foldEdge(isFolded, allEdges);
114
- };
115
- GroupNodeModel.prototype.getAnchorStyle = function (anchorInfo) {
116
- var style = _super.prototype.getAnchorStyle.call(this, anchorInfo);
117
- style.stroke = 'transparent';
118
- style.fill = 'transparent';
119
- style.hover.fill = 'transparent';
120
- style.hover.stroke = 'transparent';
121
- return style;
122
- };
123
- GroupNodeModel.prototype.foldRect = function (isFolded) {
124
107
  if (isFolded) {
108
+ this.x = this.x - this.width / 2 + this.foldedWidth / 2;
109
+ this.y = this.y - this.height / 2 + this.foldedHeight / 2;
125
110
  this.unfoldedWidth = this.width;
126
111
  this.unfoldedHight = this.height;
127
- this.updateAttributes({
128
- x: this.x - this.width / 2 + this.foldedWidth / 2,
129
- y: this.y - this.height / 2 + this.foldedHeight / 2,
130
- width: this.foldedWidth,
131
- height: this.foldedHeight,
132
- });
112
+ this.width = this.foldedWidth;
113
+ this.height = this.foldedHeight;
133
114
  }
134
115
  else {
135
- this.updateAttributes({
136
- width: this.unfoldedWidth,
137
- height: this.unfoldedHight,
138
- x: this.x + this.unfoldedWidth / 2 - this.foldedWidth / 2,
139
- y: this.y + this.unfoldedHight / 2 - this.foldedHeight / 2,
140
- });
116
+ this.width = this.unfoldedWidth;
117
+ this.height = this.unfoldedHight;
118
+ this.x = this.x + this.width / 2 - this.foldedWidth / 2;
119
+ this.y = this.y + this.height / 2 - this.foldedHeight / 2;
141
120
  }
142
- };
143
- GroupNodeModel.prototype.foldChildren = function (isFolded) {
144
- var _this = this;
121
+ // step 2
145
122
  var allEdges = this.incoming.edges.concat(this.outgoing.edges);
146
123
  this.children.forEach(function (elementId) {
147
124
  var nodeModel = _this.graphModel.getElement(elementId);
148
- if (nodeModel.isGroup) {
149
- var childEdges = nodeModel.foldChildren(isFolded || nodeModel.isFolded);
150
- allEdges = allEdges.concat(childEdges);
151
- nodeModel.foldEdge(isFolded, childEdges);
152
- }
125
+ nodeModel.visible = !isFolded;
153
126
  allEdges = allEdges.concat(nodeModel.incoming.edges.concat(nodeModel.outgoing.edges));
154
- nodeModel.updateAttributes({
155
- visible: !isFolded,
156
- });
157
127
  });
158
- return allEdges;
128
+ // step 3
129
+ this.foldEdge(isFolded, allEdges);
130
+ };
131
+ GroupNodeModel.prototype.getAnchorStyle = function (anchorInfo) {
132
+ var style = _super.prototype.getAnchorStyle.call(this, anchorInfo);
133
+ style.stroke = 'transparent';
134
+ style.fill = 'transparent';
135
+ style.hover.fill = 'transparent';
136
+ style.hover.stroke = 'transparent';
137
+ return style;
159
138
  };
160
139
  /**
161
140
  * 折叠分组的时候,处理分组自身的连线和分组内部子节点上的连线
@@ -215,9 +194,7 @@ var GroupNodeModel = /** @class */ (function (_super) {
215
194
  if (targetNodeIdGroup.id !== _this.id || sourceNodeIdGroup.id !== _this.id) {
216
195
  _this.createVirtualEdge(data);
217
196
  }
218
- edgeModel.updateAttributes({
219
- visible: false,
220
- });
197
+ edgeModel.visible = false;
221
198
  }
222
199
  // 展开时,处理被隐藏的边的逻辑
223
200
  if (!isFolded && edgeModel.visible === false) {
@@ -233,9 +210,7 @@ var GroupNodeModel = /** @class */ (function (_super) {
233
210
  _this.createVirtualEdge(data);
234
211
  }
235
212
  else {
236
- edgeModel.updateAttributes({
237
- visible: true,
238
- });
213
+ edgeModel.visible = true;
239
214
  }
240
215
  }
241
216
  });
@@ -280,19 +255,6 @@ var GroupNodeModel = /** @class */ (function (_super) {
280
255
  GroupNodeModel.prototype.removeChild = function (id) {
281
256
  this.children.delete(id);
282
257
  };
283
- /**
284
- * 获得包含嵌套组的所有子节点
285
- */
286
- GroupNodeModel.prototype.getChildren = function () {
287
- var _this = this;
288
- return __spread(this.children).flatMap(function (child) {
289
- var model = _this.graphModel.getElement(child);
290
- if (model.isGroup) {
291
- return __spread([child], model.getChildren());
292
- }
293
- return child;
294
- });
295
- };
296
258
  GroupNodeModel.prototype.getAddableOutlineStyle = function () {
297
259
  return {
298
260
  stroke: '#FEB663',
@@ -312,6 +274,7 @@ var GroupNodeModel = /** @class */ (function (_super) {
312
274
  GroupNodeModel.prototype.getHistoryData = function () {
313
275
  var data = _super.prototype.getData.call(this);
314
276
  data.children = __spread(this.children);
277
+ data.isGroup = true;
315
278
  var properties = data.properties;
316
279
  delete properties.groupAddable;
317
280
  if (properties.isFolded) { // 如果分组被折叠
@@ -326,6 +289,12 @@ var GroupNodeModel = /** @class */ (function (_super) {
326
289
  GroupNodeModel.prototype.isAllowAppendIn = function (nodeData) {
327
290
  return true;
328
291
  };
292
+ /**
293
+ * 当groupA被添加到groupB中时,将groupB及groupB所属的group的zIndex减1
294
+ */
295
+ GroupNodeModel.prototype.toBack = function () {
296
+ this.zIndex--;
297
+ };
329
298
  return GroupNodeModel;
330
299
  }(RectResize.model));
331
300
  var GroupNode = /** @class */ (function (_super) {
@@ -337,7 +306,7 @@ var GroupNode = /** @class */ (function (_super) {
337
306
  var _a = this.props.model, resizable = _a.resizable, properties = _a.properties;
338
307
  return resizable && !properties.isFolded ? _super.prototype.getControlGroup.call(this) : null;
339
308
  };
340
- GroupNode.prototype.getAddAbleShape = function () {
309
+ GroupNode.prototype.getAddableShape = function () {
341
310
  var _a = this.props.model, width = _a.width, height = _a.height, x = _a.x, y = _a.y, radius = _a.radius, properties = _a.properties;
342
311
  if (!properties.groupAddable)
343
312
  return null;
@@ -383,7 +352,7 @@ var GroupNode = /** @class */ (function (_super) {
383
352
  };
384
353
  GroupNode.prototype.getResizeShape = function () {
385
354
  return h('g', {}, [
386
- this.getAddAbleShape(),
355
+ this.getAddableShape(),
387
356
  _super.prototype.getResizeShape.call(this),
388
357
  this.getFoldIcon(),
389
358
  ]);
@@ -2,9 +2,16 @@ import LogicFlow, { BaseNodeModel } from '@logicflow/core';
2
2
  import GroupNode from './GroupNode';
3
3
  declare type BaseNodeId = string;
4
4
  declare type GroupId = string;
5
+ declare type Bounds = {
6
+ x1: number;
7
+ y1: number;
8
+ x2: number;
9
+ y2: number;
10
+ };
5
11
  declare class Group {
6
12
  static pluginName: string;
7
13
  lf: LogicFlow;
14
+ topGroupZIndex: number;
8
15
  activeGroup: any;
9
16
  nodeGroupMap: Map<BaseNodeId, GroupId>;
10
17
  constructor({ lf }: {
@@ -24,10 +31,21 @@ declare class Group {
24
31
  setActiveGroup: ({ data }: {
25
32
  data: any;
26
33
  }) => void;
34
+ /**
35
+ * 1. 分组节点默认在普通节点下面。
36
+ * 2. 分组节点被选中后,会将分组节点以及其内部的其他分组节点放到其余分组节点的上面。
37
+ * 3. 分组节点取消选中后,不会将分组节点重置为原来的高度。
38
+ * 4. 由于LogicFlow核心目标是支持用户手动绘制流程图,所以不考虑一张流程图超过1000个分组节点的情况。
39
+ */
40
+ nodeSelected: ({ data }: {
41
+ data: any;
42
+ }) => void;
43
+ toFrontGroup: (model: any) => void;
27
44
  /**
28
45
  * 获取自定位置其所属分组
46
+ * 当分组重合时,优先返回最上层的分组
29
47
  */
30
- getGroup(nodeModel: BaseNodeModel): BaseNodeModel | undefined;
48
+ getGroup(bounds: Bounds, nodeData: BaseNodeModel): BaseNodeModel | undefined;
31
49
  /**
32
50
  * 获取某个节点所属的groupModel
33
51
  */
@@ -1,28 +1,11 @@
1
- var __read = (this && this.__read) || function (o, n) {
2
- var m = typeof Symbol === "function" && o[Symbol.iterator];
3
- if (!m) return o;
4
- var i = m.call(o), r, ar = [], e;
5
- try {
6
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
- }
8
- catch (error) { e = { error: error }; }
9
- finally {
10
- try {
11
- if (r && !r.done && (m = i["return"])) m.call(i);
12
- }
13
- finally { if (e) throw e.error; }
14
- }
15
- return ar;
16
- };
17
- var __spread = (this && this.__spread) || function () {
18
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
19
- return ar;
20
- };
21
1
  import GroupNode from './GroupNode';
2
+ var DEFAULT_TOP_Z_INDEX = -1000;
3
+ var DEFAULT_BOTTOM_Z_INDEX = -10000;
22
4
  var Group = /** @class */ (function () {
23
5
  function Group(_a) {
24
6
  var _this = this;
25
7
  var lf = _a.lf;
8
+ this.topGroupZIndex = DEFAULT_BOTTOM_Z_INDEX;
26
9
  this.nodeGroupMap = new Map();
27
10
  this.graphRendered = function (data) {
28
11
  // 如果节点
@@ -47,7 +30,9 @@ var Group = /** @class */ (function () {
47
30
  preGroup.setAllowAppendChild(false);
48
31
  }
49
32
  // 然后再判断这个节点是否在某个group中,如果在,则将其添加到对应的group中
50
- var group = _this.getGroup(_this.lf.getNodeModelById(data.id));
33
+ var nodeModel = _this.lf.getNodeModelById(data.id);
34
+ var bounds = nodeModel.getBounds();
35
+ var group = _this.getGroup(bounds, data);
51
36
  if (!group)
52
37
  return;
53
38
  var isAllowAppendIn = group.isAllowAppendIn(data);
@@ -58,20 +43,26 @@ var Group = /** @class */ (function () {
58
43
  });
59
44
  return;
60
45
  }
61
- if (data.id !== group.id) {
62
- group.addChild(data.id);
63
- _this.nodeGroupMap.set(data.id, group.id);
64
- group.setAllowAppendChild(false);
65
- }
66
- else if (data.children && data.children.length > 0) {
67
- // 表示当前添加的节点是一个新增的group
46
+ group.addChild(data.id);
47
+ _this.nodeGroupMap.set(data.id, group.id);
48
+ group.setAllowAppendChild(false);
49
+ // 如果这个节点是分组,那么将其子节点也记录下来
50
+ if (nodeModel.isGroup) {
68
51
  data.children.forEach(function (nodeId) {
69
52
  _this.nodeGroupMap.set(nodeId, data.id);
70
53
  });
54
+ _this.nodeSelected({ data: data });
71
55
  }
72
56
  };
73
57
  this.deleteGroupChild = function (_a) {
74
58
  var data = _a.data;
59
+ // 如果删除的是分组节点,则同时删除分组的子节点
60
+ if (data.children) {
61
+ data.children.forEach(function (nodeId) {
62
+ _this.nodeGroupMap.delete(nodeId);
63
+ _this.lf.deleteNode(nodeId);
64
+ });
65
+ }
75
66
  var groupId = _this.nodeGroupMap.get(data.id);
76
67
  if (groupId) {
77
68
  var group = _this.lf.getNodeModelById(groupId);
@@ -82,7 +73,8 @@ var Group = /** @class */ (function () {
82
73
  this.setActiveGroup = function (_a) {
83
74
  var data = _a.data;
84
75
  var nodeModel = _this.lf.getNodeModelById(data.id);
85
- var newGroup = _this.getGroup(nodeModel);
76
+ var bounds = nodeModel.getBounds();
77
+ var newGroup = _this.getGroup(bounds, data);
86
78
  if (_this.activeGroup) {
87
79
  _this.activeGroup.setAllowAppendChild(false);
88
80
  }
@@ -95,6 +87,46 @@ var Group = /** @class */ (function () {
95
87
  _this.activeGroup = newGroup;
96
88
  _this.activeGroup.setAllowAppendChild(true);
97
89
  };
90
+ /**
91
+ * 1. 分组节点默认在普通节点下面。
92
+ * 2. 分组节点被选中后,会将分组节点以及其内部的其他分组节点放到其余分组节点的上面。
93
+ * 3. 分组节点取消选中后,不会将分组节点重置为原来的高度。
94
+ * 4. 由于LogicFlow核心目标是支持用户手动绘制流程图,所以不考虑一张流程图超过1000个分组节点的情况。
95
+ */
96
+ this.nodeSelected = function (_a) {
97
+ var data = _a.data;
98
+ var nodeModel = _this.lf.getNodeModelById(data.id);
99
+ _this.toFrontGroup(nodeModel);
100
+ // 重置所有的group zIndex,防止group节点zIndex增长为正。
101
+ if (_this.topGroupZIndex > DEFAULT_TOP_Z_INDEX) {
102
+ _this.topGroupZIndex = DEFAULT_BOTTOM_Z_INDEX;
103
+ var allGroups = _this.lf.graphModel.nodes
104
+ .filter(function (node) { return node.isGroup; })
105
+ .sort(function (a, b) { return a.zIndex - b.zIndex; });
106
+ var preZIndex = 0;
107
+ for (var i = 0; i < allGroups.length; i++) {
108
+ var group = allGroups[i];
109
+ if (group.zIndex !== preZIndex) {
110
+ _this.topGroupZIndex++;
111
+ preZIndex = group.zIndex;
112
+ }
113
+ group.setZIndex(_this.topGroupZIndex);
114
+ }
115
+ }
116
+ };
117
+ this.toFrontGroup = function (model) {
118
+ if (!model || !model.isGroup) {
119
+ return;
120
+ }
121
+ _this.topGroupZIndex++;
122
+ model.setZIndex(_this.topGroupZIndex);
123
+ if (model.children) {
124
+ model.children.forEach(function (nodeId) {
125
+ var node = _this.lf.getNodeModelById(nodeId);
126
+ _this.toFrontGroup(node);
127
+ });
128
+ }
129
+ };
98
130
  lf.register(GroupNode);
99
131
  this.lf = lf;
100
132
  lf.graphModel.addNodeMoveRules(function (model, deltaX, deltaY) {
@@ -104,34 +136,23 @@ var Group = /** @class */ (function () {
104
136
  return true;
105
137
  }
106
138
  var groupModel = lf.getNodeModelById(_this.nodeGroupMap.get(model.id));
107
- var allowMove = true;
108
- if (groupModel && groupModel.isRestrict) {
109
- // 如果移动的节点存在分组中,且这个分组禁止子节点移出去。
139
+ if (groupModel && groupModel.isRestrict) { // 如果移动的节点存在分组中,且这个分组禁止子节点移出去。
110
140
  var _a = model.getBounds(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;
111
- allowMove = groupModel.isAllowMoveTo({
141
+ var r = groupModel.isAllowMoveTo({
112
142
  x1: x1 + deltaX,
113
143
  y1: y1 + deltaY,
114
144
  x2: x2 + deltaX,
115
145
  y2: y2 + deltaY,
116
146
  });
147
+ return r;
117
148
  }
118
- if (model.isGroup) {
119
- // 如果移动的是分组,那么分组的子节点也跟着移动。
120
- if (allowMove === true) {
121
- lf.graphModel.moveNodes(__spread(model.getChildren()), deltaX, deltaY, true);
122
- }
123
- else if (typeof allowMove !== 'boolean') {
124
- lf.graphModel.moveNodes(__spread(model.getChildren()), allowMove.x ? deltaX : 0, allowMove.y ? deltaY : 0, true);
125
- }
126
- }
127
- return allowMove;
149
+ return true;
128
150
  });
129
151
  lf.graphModel.group = this;
130
- lf.on('node:add', this.appendNodeToGroup);
152
+ lf.on('node:add,node:drop', this.appendNodeToGroup);
131
153
  lf.on('node:delete', this.deleteGroupChild);
132
- lf.on('node:drop', this.appendNodeToGroup);
133
- lf.on('node:dnd-drag', this.setActiveGroup);
134
- lf.on('node:drag', this.setActiveGroup);
154
+ lf.on('node:dnd-drag,node:drag', this.setActiveGroup);
155
+ lf.on('node:click', this.nodeSelected);
135
156
  lf.on('graph:rendered', this.graphRendered);
136
157
  }
137
158
  /**
@@ -153,33 +174,22 @@ var Group = /** @class */ (function () {
153
174
  };
154
175
  /**
155
176
  * 获取自定位置其所属分组
177
+ * 当分组重合时,优先返回最上层的分组
156
178
  */
157
- Group.prototype.getGroup = function (nodeModel) {
158
- if (nodeModel.nestable === false) {
159
- return null;
160
- }
161
- var bounds = nodeModel.getBounds();
179
+ Group.prototype.getGroup = function (bounds, nodeData) {
162
180
  var nodes = this.lf.graphModel.nodes;
163
- var selectedModel = null;
164
- for (var i = 0; i < nodes.length; i++) {
165
- var model = nodes[i];
166
- if (model !== nodeModel && model.isGroup && model.isInRange(bounds)) {
167
- if (selectedModel) {
168
- if (selectedModel.zIndex > model.zIndex) {
169
- selectedModel = model;
170
- }
171
- else if (selectedModel.zIndex === model.zIndex) {
172
- if (!model.isInRange(selectedModel.getBounds())) {
173
- selectedModel = model;
174
- }
175
- }
176
- }
177
- else {
178
- selectedModel = model;
179
- }
181
+ var groups = nodes.filter(function (node) { return node.isGroup && node.isInRange(bounds) && node.id !== nodeData.id; });
182
+ if (groups.length === 0)
183
+ return;
184
+ if (groups.length === 1)
185
+ return groups[0];
186
+ var topGroup = groups[groups.length - 1];
187
+ for (var i = groups.length - 2; i >= 0; i--) {
188
+ if (groups[i].zIndex > topGroup.zIndex) {
189
+ topGroup = groups[i];
180
190
  }
181
191
  }
182
- return selectedModel;
192
+ return topGroup;
183
193
  };
184
194
  /**
185
195
  * 获取某个节点所属的groupModel
@@ -164,6 +164,16 @@
164
164
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACL0lEQVRoQ+1YT2vUQBT/vS+Smc3u0ZtfwA+hUKEttIIVbMEWrGAL3UItqKCCCipooS3Ynu29ePfqLcnO5Nov0NsrWbc0myxtJpNmGZw9LZk37/3+vCTzQnD8R47jhycwbQe9A94BSwV8C1kKaL3dO2AtoWWC/8+BMJB9ItwHcM6MX0mqtm1EzOU7Y8bvJFV9k3zGDnSFPAVw76oIb8ZavzIpehnbE+Ilg/J7/8Za3THJVYfAHwB3x4owXsSpemNSuCs6zwEu7rl9AmEgt4hQspkIa5FS76uQCKV8RoxSLDP6pi1p7EAGsCvEBkA7ZbC0EuvBp+tI9IR4yqBSDIE3Iq13qwiQj6lFYEgikOsgvC4VJDyJlfo6CUg3kI9BmLBG67EevDUFn8XXJpBt7km5yox3xcIMfpRo/SN/PZRygRhj17J1JqwmSn2oA96awL926iwD/LEIgJjmo3RwMCQadGaZePh/3H5ejrT+XBd8IwSGJKRcAuPLhHZ6mIkMxlFpjbEUp+qbDfjGCGSJQiEWCfS9CiAmLCZK7VWJvSnG6h4oJu8FnTkm3r+uKDHNReng8CZgVdcbJTBqpxkwfk4EQJiJlTquCq5KnCeQV8npFnL6Jnb6Mer0i8zpo4TThzmnj9OjGXardDBrZqDZbmMmdnukdH6oL3xWOTG1vNh6oxn7AYB2PqtUOWC1GdP4Ya5N8I0ONG0Dv6znHZiW8t6BaSvvHfAONKSAf4w2JGTtNBey0xBAkjSEzwAAAABJRU5ErkJggg==');
165
165
  }
166
166
 
167
+ .lf-mini-map-no-header {
168
+ padding-top: 0;
169
+ }
170
+ .lf-mini-map-no-header .lf-mini-map-header {
171
+ display: none;
172
+ }
173
+ .lf-mini-map-no-close-icon .lf-mini-map-close{
174
+ display: none;
175
+ }
176
+
167
177
  /* 节点调整 */
168
178
 
169
179
  .lf-resize-control-0{
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 自动布局插件
3
- * 依赖flow-path插件
3
+ * 依赖flowPath插件
4
4
  * 未完善
5
5
  */
6
6
  import LogicFlow from '@logicflow/core';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 自动布局插件
3
- * 依赖flow-path插件
3
+ * 依赖flowPath插件
4
4
  * 未完善
5
5
  */
6
6
  var __assign = (this && this.__assign) || function () {