@logicflow/extension 2.2.2 → 2.2.4-alpha.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 (52) hide show
  1. package/es/constant/events.d.ts +9 -0
  2. package/es/constant/events.js +11 -0
  3. package/es/dynamic-group/index.d.ts +41 -3
  4. package/es/dynamic-group/index.js +281 -117
  5. package/es/dynamic-group/model.d.ts +48 -1
  6. package/es/dynamic-group/model.js +138 -23
  7. package/es/dynamic-group/node.d.ts +1 -0
  8. package/es/dynamic-group/node.js +52 -19
  9. package/es/dynamic-group/titleText.d.ts +8 -0
  10. package/es/dynamic-group/titleText.js +84 -0
  11. package/es/dynamic-group/utils.d.ts +69 -0
  12. package/es/dynamic-group/utils.js +162 -0
  13. package/es/index.css +321 -1
  14. package/es/index.d.ts +1 -0
  15. package/es/index.js +1 -0
  16. package/es/index.less +1 -0
  17. package/es/materials/group/GroupNode.js +5 -2
  18. package/es/materials/group/index.js +7 -6
  19. package/es/pool/LaneModel.d.ts +1 -1
  20. package/es/pool/PoolModel.d.ts +1 -1
  21. package/es/pool/index.d.ts +3 -2
  22. package/es/pool/index.js +44 -60
  23. package/es/style/index.css +321 -1
  24. package/es/style/index.less +381 -0
  25. package/lib/constant/events.d.ts +9 -0
  26. package/lib/constant/events.js +14 -0
  27. package/lib/dynamic-group/index.d.ts +41 -3
  28. package/lib/dynamic-group/index.js +280 -116
  29. package/lib/dynamic-group/model.d.ts +48 -1
  30. package/lib/dynamic-group/model.js +137 -22
  31. package/lib/dynamic-group/node.d.ts +1 -0
  32. package/lib/dynamic-group/node.js +53 -20
  33. package/lib/dynamic-group/titleText.d.ts +8 -0
  34. package/lib/dynamic-group/titleText.js +90 -0
  35. package/lib/dynamic-group/utils.d.ts +69 -0
  36. package/lib/dynamic-group/utils.js +172 -1
  37. package/lib/index.css +321 -1
  38. package/lib/index.d.ts +1 -0
  39. package/lib/index.js +1 -0
  40. package/lib/index.less +1 -0
  41. package/lib/materials/group/GroupNode.js +5 -2
  42. package/lib/materials/group/index.js +7 -6
  43. package/lib/pool/LaneModel.d.ts +1 -1
  44. package/lib/pool/PoolModel.d.ts +1 -1
  45. package/lib/pool/index.d.ts +3 -2
  46. package/lib/pool/index.js +44 -60
  47. package/lib/style/index.css +321 -1
  48. package/lib/style/index.less +381 -0
  49. package/package.json +6 -6
  50. package/dist/index.css +0 -1
  51. package/dist/index.min.js +0 -2
  52. package/dist/index.min.js.map +0 -1
@@ -54,6 +54,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.GroupNode = exports.GroupNodeModel = void 0;
55
55
  var core_1 = require("@logicflow/core");
56
56
  var lodash_es_1 = require("lodash-es");
57
+ var events_1 = require("../../constant/events");
57
58
  var NodeResize_1 = require("../../NodeResize");
58
59
  var defaultWidth = 500;
59
60
  var defaultHeight = 300;
@@ -300,7 +301,9 @@ var GroupNodeModel = /** @class */ (function (_super) {
300
301
  */
301
302
  GroupNodeModel.prototype.addChild = function (id) {
302
303
  this.children.add(id);
303
- this.graphModel.eventCenter.emit('group:add-node', { data: this.getData() });
304
+ this.graphModel.eventCenter.emit(events_1.ExtensionEventType.GROUP_ADD_NODE, {
305
+ data: this.getData(),
306
+ });
304
307
  };
305
308
  /**
306
309
  * 删除分组子节点
@@ -308,7 +311,7 @@ var GroupNodeModel = /** @class */ (function (_super) {
308
311
  */
309
312
  GroupNodeModel.prototype.removeChild = function (id) {
310
313
  this.children.delete(id);
311
- this.graphModel.eventCenter.emit('group:remove-node', {
314
+ this.graphModel.eventCenter.emit(events_1.ExtensionEventType.GROUP_REMOVE_NODE, {
312
315
  data: this.getData(),
313
316
  });
314
317
  };
@@ -72,6 +72,7 @@ exports.Group = void 0;
72
72
  var lodash_es_1 = require("lodash-es");
73
73
  var core_1 = require("@logicflow/core");
74
74
  var GroupNode_1 = __importDefault(require("./GroupNode"));
75
+ var events_1 = require("../../constant/events");
75
76
  var DEFAULT_TOP_Z_INDEX = -1000;
76
77
  var DEFAULT_BOTTOM_Z_INDEX = -10000;
77
78
  var Group = /** @class */ (function () {
@@ -138,7 +139,7 @@ var Group = /** @class */ (function () {
138
139
  return;
139
140
  var isAllowAppendIn = group.isAllowAppendIn(data);
140
141
  if (!isAllowAppendIn) {
141
- _this.lf.emit('group:not-allowed', {
142
+ _this.lf.emit(events_1.ExtensionEventType.GROUP_NOT_ALLOWED, {
142
143
  group: group.getData(),
143
144
  node: data,
144
145
  });
@@ -324,11 +325,11 @@ var Group = /** @class */ (function () {
324
325
  return true;
325
326
  });
326
327
  lf.graphModel.group = this;
327
- lf.on('node:add,node:drop,node:dnd-add', this.appendNodeToGroup);
328
- lf.on('node:delete', this.deleteGroupChild);
329
- lf.on('node:dnd-drag,node:drag', this.setActiveGroup);
330
- lf.on('node:click', this.nodeSelected);
331
- lf.on('graph:rendered', this.graphRendered);
328
+ lf.on(events_1.NODE_ADD_DROP_DND_EVENTS, this.appendNodeToGroup);
329
+ lf.on(core_1.EventType.NODE_DELETE, this.deleteGroupChild);
330
+ lf.on(events_1.NODE_DRAG_EVENTS, this.setActiveGroup);
331
+ lf.on(core_1.EventType.NODE_CLICK, this.nodeSelected);
332
+ lf.on(core_1.EventType.GRAPH_RENDERED, this.graphRendered);
332
333
  // https://github.com/didi/LogicFlow/issues/1346
333
334
  // 重写 addElements() 方法,在 addElements() 原有基础上增加对 group 内部所有 nodes 和 edges 的复制功能
334
335
  lf.addElements = function (_a, distance) {
@@ -54,7 +54,7 @@ export declare class LaneModel extends DynamicGroupNodeModel {
54
54
  /**
55
55
  * 获取文本样式
56
56
  */
57
- getTextStyle(): {
57
+ getTextStyle(): Record<string, unknown> & {
58
58
  [x: string]: unknown;
59
59
  fill?: string | undefined;
60
60
  stroke?: string | undefined;
@@ -91,7 +91,7 @@ export declare class PoolModel extends DynamicGroupNodeModel {
91
91
  /**
92
92
  * 获取文本样式
93
93
  */
94
- getTextStyle(): {
94
+ getTextStyle(): Record<string, unknown> & {
95
95
  [x: string]: unknown;
96
96
  fill?: string | undefined;
97
97
  stroke?: string | undefined;
@@ -1,4 +1,5 @@
1
1
  import LogicFlow, { CallbackArgs, Model, BaseNodeModel, BaseEdgeModel } from '@logicflow/core';
2
+ import { ExtensionEventType } from '../constant/events';
2
3
  import { PoolModel } from './PoolModel';
3
4
  import { PoolView } from './PoolView';
4
5
  import { LaneModel } from './LaneModel';
@@ -46,7 +47,7 @@ export declare class PoolElements {
46
47
  onSelectionDrop: () => void;
47
48
  onNodeAddOrDrop: ({ data: node }: CallbackArgs<'node:add'>) => void;
48
49
  addNodeToGroup: (node: LogicFlow.NodeData) => void;
49
- onGroupAddNode: ({ data: groupData, childId, }: CallbackArgs<'group:add-node'>) => void;
50
+ onGroupAddNode: ({ data: groupData, childId, }: CallbackArgs<ExtensionEventType.GROUP_ADD_NODE>) => void;
50
51
  removeNodeFromGroup: ({ data: node, model, }: CallbackArgs<'node:delete'>) => void;
51
52
  onSelectionDrag: () => void;
52
53
  onNodeDrag: ({ data: node }: CallbackArgs<'node:drag'>) => void;
@@ -57,7 +58,7 @@ export declare class PoolElements {
57
58
  * @param isSelected
58
59
  */
59
60
  onNodeSelect: ({ data: node, isMultiple, isSelected, }: Omit<CallbackArgs<'node:click'>, 'e' | 'position'>) => void;
60
- onNodeMove: ({ deltaX, deltaY, data, }: Omit<CallbackArgs<'node:mousemove'>, 'e' | 'position'>) => void;
61
+ onNodeMove: ({ data, }: Omit<CallbackArgs<'node:mousemove'>, 'e' | 'position'>) => void;
61
62
  onGraphRendered: ({ data }: CallbackArgs<'graph:rendered'>) => void;
62
63
  removeChildrenInGroupNodeData<T extends LogicFlow.NodeData | LogicFlow.NodeConfig>(nodeData: T): T;
63
64
  /**
package/lib/pool/index.js CHANGED
@@ -39,11 +39,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.PoolElements = exports.LaneNode = exports.PoolNode = void 0;
40
40
  var core_1 = require("@logicflow/core");
41
41
  var lodash_es_1 = require("lodash-es");
42
+ var events_1 = require("../constant/events");
42
43
  var PoolModel_1 = require("./PoolModel");
43
44
  var PoolView_1 = require("./PoolView");
44
45
  var LaneModel_1 = require("./LaneModel");
45
46
  var LaneView_1 = require("./LaneView");
46
47
  var utils_1 = require("./utils");
48
+ var utils_2 = require("../dynamic-group/utils");
47
49
  exports.PoolNode = {
48
50
  type: 'pool',
49
51
  view: PoolView_1.PoolView,
@@ -205,12 +207,8 @@ var PoolElements = /** @class */ (function () {
205
207
  }
206
208
  };
207
209
  this.onNodeMove = function (_a) {
208
- var deltaX = _a.deltaX, deltaY = _a.deltaY, data = _a.data;
209
- var id = data.id, x = data.x, y = data.y, properties = data.properties;
210
- if (!properties) {
211
- return;
212
- }
213
- var width = properties.width, height = properties.height;
210
+ var data = _a.data;
211
+ var id = data.id;
214
212
  var groupId = _this.nodeLaneMap.get(id);
215
213
  if (!groupId) {
216
214
  return;
@@ -221,13 +219,11 @@ var PoolElements = /** @class */ (function () {
221
219
  }
222
220
  // 当父节点isRestrict=true & autoResize=true
223
221
  // 子节点在父节点中移动时,父节点会自动调整大小
224
- // step1: 计算出当前child的bounds
225
- var newX = x + deltaX / 2;
226
- var newY = y + deltaY / 2;
227
- var minX = newX - width / 2;
228
- var minY = newY - height / 2;
229
- var maxX = newX + width / 2;
230
- var maxY = newY + height / 2;
222
+ var childModel = _this.lf.getNodeModelById(id);
223
+ if (!childModel) {
224
+ return;
225
+ }
226
+ var _b = childModel.getBounds(), minX = _b.minX, minY = _b.minY, maxX = _b.maxX, maxY = _b.maxY;
231
227
  // step2:比较当前child.bounds与parent.bounds的差异,比如child.minX<parent.minX,那么parent.minX=child.minX
232
228
  var hasChange = false;
233
229
  var groupBounds = groupModel.getBounds();
@@ -259,6 +255,7 @@ var PoolElements = /** @class */ (function () {
259
255
  groupModel.moveTo(newGroupX, newGroupY);
260
256
  groupModel.width = newGroupWidth;
261
257
  groupModel.height = newGroupHeight;
258
+ groupModel.updateExpandedSize(newGroupWidth, newGroupHeight);
262
259
  };
263
260
  this.onGraphRendered = function (_a) {
264
261
  var data = _a.data;
@@ -396,35 +393,22 @@ var PoolElements = /** @class */ (function () {
396
393
  * @param newHeight
397
394
  */
398
395
  PoolElements.prototype.checkGroupBoundsWithChildren = function (groupModel, deltaX, deltaY, newWidth, newHeight) {
399
- if (groupModel.children) {
400
- var children = groupModel.children, x = groupModel.x, y = groupModel.y;
401
- // 根据deltaX和deltaY计算出当前model的bounds
402
- var newX = x + deltaX / 2;
403
- var newY = y + deltaY / 2;
404
- var groupMinX = newX - newWidth / 2;
405
- var groupMinY = newY - newHeight / 2;
406
- var groupMaxX = newX + newWidth / 2;
407
- var groupMaxY = newY + newHeight / 2;
408
- var childrenArray = Array.from(children);
409
- for (var i = 0; i < childrenArray.length; i++) {
410
- var childId = childrenArray[i];
411
- var child = this.lf.getNodeModelById(childId);
412
- if (!child) {
413
- continue;
414
- }
415
- var childBounds = child.getBounds();
416
- var minX = childBounds.minX, minY = childBounds.minY, maxX = childBounds.maxX, maxY = childBounds.maxY;
417
- // parent:resize后的bounds不能小于child:bounds,否则阻止其resize
418
- var canResize = groupMinX <= minX &&
419
- groupMinY <= minY &&
420
- groupMaxX >= maxX &&
421
- groupMaxY >= maxY;
422
- if (!canResize) {
423
- return false;
424
- }
425
- }
396
+ var _this = this;
397
+ var childrenBounds = (0, utils_2.getChildrenBounds)(groupModel, function (id) {
398
+ return _this.lf.getNodeModelById(id);
399
+ });
400
+ if (!childrenBounds) {
401
+ return true;
426
402
  }
427
- return true;
403
+ var newX = groupModel.x + deltaX / 2;
404
+ var newY = groupModel.y + deltaY / 2;
405
+ var groupBounds = {
406
+ minX: newX - newWidth / 2,
407
+ minY: newY - newHeight / 2,
408
+ maxX: newX + newWidth / 2,
409
+ maxY: newY + newHeight / 2,
410
+ };
411
+ return (0, utils_2.isGroupBoundsContainsChildren)(groupBounds, childrenBounds);
428
412
  };
429
413
  PoolElements.prototype.init = function () {
430
414
  var _this = this;
@@ -455,21 +439,21 @@ var PoolElements = /** @class */ (function () {
455
439
  return true;
456
440
  });
457
441
  graphModel.addNodeResizeRules(function (model, deltaX, deltaY, width, height) {
458
- if (model.isGroup && model.isRestrict) {
442
+ if (model.isGroup) {
459
443
  return _this.checkGroupBoundsWithChildren(model, deltaX, deltaY, width, height);
460
444
  }
461
445
  return true;
462
446
  });
463
447
  graphModel.dynamicGroup = this;
464
- lf.on('node:add,node:drop,node:dnd-add', this.onNodeAddOrDrop);
465
- lf.on('selection:drop', this.onSelectionDrop);
466
- lf.on('node:delete', this.removeNodeFromGroup);
467
- lf.on('node:drag,node:dnd-drag', this.onNodeDrag);
468
- lf.on('selection:drag', this.onSelectionDrag);
469
- lf.on('node:click', this.onNodeSelect);
470
- lf.on('node:mousemove', this.onNodeMove);
471
- lf.on('graph:rendered', this.onGraphRendered);
472
- lf.on('group:add-node', this.onGroupAddNode);
448
+ lf.on(events_1.NODE_ADD_DROP_DND_EVENTS, this.onNodeAddOrDrop);
449
+ lf.on(core_1.EventType.SELECTION_DROP, this.onSelectionDrop);
450
+ lf.on(core_1.EventType.NODE_DELETE, this.removeNodeFromGroup);
451
+ lf.on(events_1.NODE_DRAG_EVENTS, this.onNodeDrag);
452
+ lf.on(core_1.EventType.SELECTION_DRAG, this.onSelectionDrag);
453
+ lf.on(core_1.EventType.NODE_CLICK, this.onNodeSelect);
454
+ lf.on(core_1.EventType.NODE_MOUSEMOVE, this.onNodeMove);
455
+ lf.on(core_1.EventType.GRAPH_RENDERED, this.onGraphRendered);
456
+ lf.on(events_1.ExtensionEventType.GROUP_ADD_NODE, this.onGroupAddNode);
473
457
  lf.addElements = function (_a, distance) {
474
458
  var selectedNodes = _a.nodes, selectedEdges = _a.edges;
475
459
  if (distance === void 0) { distance = 40; }
@@ -510,15 +494,15 @@ var PoolElements = /** @class */ (function () {
510
494
  PoolElements.prototype.render = function () { };
511
495
  PoolElements.prototype.destroy = function () {
512
496
  // 销毁监听的事件,并移除渲染的 dom 内容
513
- this.lf.off('node:add,node:drop,node:dnd-add', this.onNodeAddOrDrop);
514
- this.lf.off('selection:drop', this.onSelectionDrop);
515
- this.lf.off('node:delete', this.removeNodeFromGroup);
516
- this.lf.off('node:drag,node:dnd-drag', this.onNodeDrag);
517
- this.lf.off('selection:drag', this.onSelectionDrag);
518
- this.lf.off('node:click', this.onNodeSelect);
519
- this.lf.off('node:mousemove', this.onNodeMove);
520
- this.lf.off('graph:rendered', this.onGraphRendered);
521
- this.lf.off('group:add-node', this.onGroupAddNode);
497
+ this.lf.off(events_1.NODE_ADD_DROP_DND_EVENTS, this.onNodeAddOrDrop);
498
+ this.lf.off(core_1.EventType.SELECTION_DROP, this.onSelectionDrop);
499
+ this.lf.off(core_1.EventType.NODE_DELETE, this.removeNodeFromGroup);
500
+ this.lf.off(events_1.NODE_DRAG_EVENTS, this.onNodeDrag);
501
+ this.lf.off(core_1.EventType.SELECTION_DRAG, this.onSelectionDrag);
502
+ this.lf.off(core_1.EventType.NODE_CLICK, this.onNodeSelect);
503
+ this.lf.off(core_1.EventType.NODE_MOUSEMOVE, this.onNodeMove);
504
+ this.lf.off(core_1.EventType.GRAPH_RENDERED, this.onGraphRendered);
505
+ this.lf.off(events_1.ExtensionEventType.GROUP_ADD_NODE, this.onGroupAddNode);
522
506
  };
523
507
  PoolElements.pluginName = 'PoolElements';
524
508
  return PoolElements;