@logicflow/extension 2.2.3 → 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 +8 -8
  50. package/dist/index.css +0 -1
  51. package/dist/index.min.js +0 -2
  52. package/dist/index.min.js.map +0 -1
@@ -51,6 +51,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
51
51
  };
52
52
  import { h } from '@logicflow/core';
53
53
  import { isArray } from 'lodash-es';
54
+ import { ExtensionEventType } from '../../constant/events';
54
55
  import { RectResizeModel, RectResizeView } from '../../NodeResize';
55
56
  var defaultWidth = 500;
56
57
  var defaultHeight = 300;
@@ -297,7 +298,9 @@ var GroupNodeModel = /** @class */ (function (_super) {
297
298
  */
298
299
  GroupNodeModel.prototype.addChild = function (id) {
299
300
  this.children.add(id);
300
- this.graphModel.eventCenter.emit('group:add-node', { data: this.getData() });
301
+ this.graphModel.eventCenter.emit(ExtensionEventType.GROUP_ADD_NODE, {
302
+ data: this.getData(),
303
+ });
301
304
  };
302
305
  /**
303
306
  * 删除分组子节点
@@ -305,7 +308,7 @@ var GroupNodeModel = /** @class */ (function (_super) {
305
308
  */
306
309
  GroupNodeModel.prototype.removeChild = function (id) {
307
310
  this.children.delete(id);
308
- this.graphModel.eventCenter.emit('group:remove-node', {
311
+ this.graphModel.eventCenter.emit(ExtensionEventType.GROUP_REMOVE_NODE, {
309
312
  data: this.getData(),
310
313
  });
311
314
  };
@@ -52,6 +52,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
52
52
  import { forEach, isEmpty, isObject } from 'lodash-es';
53
53
  import { EventType, } from '@logicflow/core';
54
54
  import GroupNode from './GroupNode';
55
+ import { ExtensionEventType, NODE_ADD_DROP_DND_EVENTS, NODE_DRAG_EVENTS, } from '../../constant/events';
55
56
  var DEFAULT_TOP_Z_INDEX = -1000;
56
57
  var DEFAULT_BOTTOM_Z_INDEX = -10000;
57
58
  var Group = /** @class */ (function () {
@@ -118,7 +119,7 @@ var Group = /** @class */ (function () {
118
119
  return;
119
120
  var isAllowAppendIn = group.isAllowAppendIn(data);
120
121
  if (!isAllowAppendIn) {
121
- _this.lf.emit('group:not-allowed', {
122
+ _this.lf.emit(ExtensionEventType.GROUP_NOT_ALLOWED, {
122
123
  group: group.getData(),
123
124
  node: data,
124
125
  });
@@ -304,11 +305,11 @@ var Group = /** @class */ (function () {
304
305
  return true;
305
306
  });
306
307
  lf.graphModel.group = this;
307
- lf.on('node:add,node:drop,node:dnd-add', this.appendNodeToGroup);
308
- lf.on('node:delete', this.deleteGroupChild);
309
- lf.on('node:dnd-drag,node:drag', this.setActiveGroup);
310
- lf.on('node:click', this.nodeSelected);
311
- lf.on('graph:rendered', this.graphRendered);
308
+ lf.on(NODE_ADD_DROP_DND_EVENTS, this.appendNodeToGroup);
309
+ lf.on(EventType.NODE_DELETE, this.deleteGroupChild);
310
+ lf.on(NODE_DRAG_EVENTS, this.setActiveGroup);
311
+ lf.on(EventType.NODE_CLICK, this.nodeSelected);
312
+ lf.on(EventType.GRAPH_RENDERED, this.graphRendered);
312
313
  // https://github.com/didi/LogicFlow/issues/1346
313
314
  // 重写 addElements() 方法,在 addElements() 原有基础上增加对 group 内部所有 nodes 和 edges 的复制功能
314
315
  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/es/pool/index.js CHANGED
@@ -36,11 +36,13 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
36
36
  };
37
37
  import { EventType, transformNodeData, transformEdgeData, } from '@logicflow/core';
38
38
  import { assign, filter, forEach, cloneDeep, has, map } from 'lodash-es';
39
+ import { ExtensionEventType, NODE_ADD_DROP_DND_EVENTS, NODE_DRAG_EVENTS, } from '../constant/events';
39
40
  import { PoolModel } from './PoolModel';
40
41
  import { PoolView } from './PoolView';
41
42
  import { LaneModel } from './LaneModel';
42
43
  import { LaneView } from './LaneView';
43
44
  import { isAllowMoveTo, isBoundsInLane } from './utils';
45
+ import { getChildrenBounds, isGroupBoundsContainsChildren, } from '../dynamic-group/utils';
44
46
  export var PoolNode = {
45
47
  type: 'pool',
46
48
  view: PoolView,
@@ -202,12 +204,8 @@ var PoolElements = /** @class */ (function () {
202
204
  }
203
205
  };
204
206
  this.onNodeMove = function (_a) {
205
- var deltaX = _a.deltaX, deltaY = _a.deltaY, data = _a.data;
206
- var id = data.id, x = data.x, y = data.y, properties = data.properties;
207
- if (!properties) {
208
- return;
209
- }
210
- var width = properties.width, height = properties.height;
207
+ var data = _a.data;
208
+ var id = data.id;
211
209
  var groupId = _this.nodeLaneMap.get(id);
212
210
  if (!groupId) {
213
211
  return;
@@ -218,13 +216,11 @@ var PoolElements = /** @class */ (function () {
218
216
  }
219
217
  // 当父节点isRestrict=true & autoResize=true
220
218
  // 子节点在父节点中移动时,父节点会自动调整大小
221
- // step1: 计算出当前child的bounds
222
- var newX = x + deltaX / 2;
223
- var newY = y + deltaY / 2;
224
- var minX = newX - width / 2;
225
- var minY = newY - height / 2;
226
- var maxX = newX + width / 2;
227
- var maxY = newY + height / 2;
219
+ var childModel = _this.lf.getNodeModelById(id);
220
+ if (!childModel) {
221
+ return;
222
+ }
223
+ var _b = childModel.getBounds(), minX = _b.minX, minY = _b.minY, maxX = _b.maxX, maxY = _b.maxY;
228
224
  // step2:比较当前child.bounds与parent.bounds的差异,比如child.minX<parent.minX,那么parent.minX=child.minX
229
225
  var hasChange = false;
230
226
  var groupBounds = groupModel.getBounds();
@@ -256,6 +252,7 @@ var PoolElements = /** @class */ (function () {
256
252
  groupModel.moveTo(newGroupX, newGroupY);
257
253
  groupModel.width = newGroupWidth;
258
254
  groupModel.height = newGroupHeight;
255
+ groupModel.updateExpandedSize(newGroupWidth, newGroupHeight);
259
256
  };
260
257
  this.onGraphRendered = function (_a) {
261
258
  var data = _a.data;
@@ -393,35 +390,22 @@ var PoolElements = /** @class */ (function () {
393
390
  * @param newHeight
394
391
  */
395
392
  PoolElements.prototype.checkGroupBoundsWithChildren = function (groupModel, deltaX, deltaY, newWidth, newHeight) {
396
- if (groupModel.children) {
397
- var children = groupModel.children, x = groupModel.x, y = groupModel.y;
398
- // 根据deltaX和deltaY计算出当前model的bounds
399
- var newX = x + deltaX / 2;
400
- var newY = y + deltaY / 2;
401
- var groupMinX = newX - newWidth / 2;
402
- var groupMinY = newY - newHeight / 2;
403
- var groupMaxX = newX + newWidth / 2;
404
- var groupMaxY = newY + newHeight / 2;
405
- var childrenArray = Array.from(children);
406
- for (var i = 0; i < childrenArray.length; i++) {
407
- var childId = childrenArray[i];
408
- var child = this.lf.getNodeModelById(childId);
409
- if (!child) {
410
- continue;
411
- }
412
- var childBounds = child.getBounds();
413
- var minX = childBounds.minX, minY = childBounds.minY, maxX = childBounds.maxX, maxY = childBounds.maxY;
414
- // parent:resize后的bounds不能小于child:bounds,否则阻止其resize
415
- var canResize = groupMinX <= minX &&
416
- groupMinY <= minY &&
417
- groupMaxX >= maxX &&
418
- groupMaxY >= maxY;
419
- if (!canResize) {
420
- return false;
421
- }
422
- }
393
+ var _this = this;
394
+ var childrenBounds = getChildrenBounds(groupModel, function (id) {
395
+ return _this.lf.getNodeModelById(id);
396
+ });
397
+ if (!childrenBounds) {
398
+ return true;
423
399
  }
424
- return true;
400
+ var newX = groupModel.x + deltaX / 2;
401
+ var newY = groupModel.y + deltaY / 2;
402
+ var groupBounds = {
403
+ minX: newX - newWidth / 2,
404
+ minY: newY - newHeight / 2,
405
+ maxX: newX + newWidth / 2,
406
+ maxY: newY + newHeight / 2,
407
+ };
408
+ return isGroupBoundsContainsChildren(groupBounds, childrenBounds);
425
409
  };
426
410
  PoolElements.prototype.init = function () {
427
411
  var _this = this;
@@ -452,21 +436,21 @@ var PoolElements = /** @class */ (function () {
452
436
  return true;
453
437
  });
454
438
  graphModel.addNodeResizeRules(function (model, deltaX, deltaY, width, height) {
455
- if (model.isGroup && model.isRestrict) {
439
+ if (model.isGroup) {
456
440
  return _this.checkGroupBoundsWithChildren(model, deltaX, deltaY, width, height);
457
441
  }
458
442
  return true;
459
443
  });
460
444
  graphModel.dynamicGroup = this;
461
- lf.on('node:add,node:drop,node:dnd-add', this.onNodeAddOrDrop);
462
- lf.on('selection:drop', this.onSelectionDrop);
463
- lf.on('node:delete', this.removeNodeFromGroup);
464
- lf.on('node:drag,node:dnd-drag', this.onNodeDrag);
465
- lf.on('selection:drag', this.onSelectionDrag);
466
- lf.on('node:click', this.onNodeSelect);
467
- lf.on('node:mousemove', this.onNodeMove);
468
- lf.on('graph:rendered', this.onGraphRendered);
469
- lf.on('group:add-node', this.onGroupAddNode);
445
+ lf.on(NODE_ADD_DROP_DND_EVENTS, this.onNodeAddOrDrop);
446
+ lf.on(EventType.SELECTION_DROP, this.onSelectionDrop);
447
+ lf.on(EventType.NODE_DELETE, this.removeNodeFromGroup);
448
+ lf.on(NODE_DRAG_EVENTS, this.onNodeDrag);
449
+ lf.on(EventType.SELECTION_DRAG, this.onSelectionDrag);
450
+ lf.on(EventType.NODE_CLICK, this.onNodeSelect);
451
+ lf.on(EventType.NODE_MOUSEMOVE, this.onNodeMove);
452
+ lf.on(EventType.GRAPH_RENDERED, this.onGraphRendered);
453
+ lf.on(ExtensionEventType.GROUP_ADD_NODE, this.onGroupAddNode);
470
454
  lf.addElements = function (_a, distance) {
471
455
  var selectedNodes = _a.nodes, selectedEdges = _a.edges;
472
456
  if (distance === void 0) { distance = 40; }
@@ -507,15 +491,15 @@ var PoolElements = /** @class */ (function () {
507
491
  PoolElements.prototype.render = function () { };
508
492
  PoolElements.prototype.destroy = function () {
509
493
  // 销毁监听的事件,并移除渲染的 dom 内容
510
- this.lf.off('node:add,node:drop,node:dnd-add', this.onNodeAddOrDrop);
511
- this.lf.off('selection:drop', this.onSelectionDrop);
512
- this.lf.off('node:delete', this.removeNodeFromGroup);
513
- this.lf.off('node:drag,node:dnd-drag', this.onNodeDrag);
514
- this.lf.off('selection:drag', this.onSelectionDrag);
515
- this.lf.off('node:click', this.onNodeSelect);
516
- this.lf.off('node:mousemove', this.onNodeMove);
517
- this.lf.off('graph:rendered', this.onGraphRendered);
518
- this.lf.off('group:add-node', this.onGroupAddNode);
494
+ this.lf.off(NODE_ADD_DROP_DND_EVENTS, this.onNodeAddOrDrop);
495
+ this.lf.off(EventType.SELECTION_DROP, this.onSelectionDrop);
496
+ this.lf.off(EventType.NODE_DELETE, this.removeNodeFromGroup);
497
+ this.lf.off(NODE_DRAG_EVENTS, this.onNodeDrag);
498
+ this.lf.off(EventType.SELECTION_DRAG, this.onSelectionDrag);
499
+ this.lf.off(EventType.NODE_CLICK, this.onNodeSelect);
500
+ this.lf.off(EventType.NODE_MOUSEMOVE, this.onNodeMove);
501
+ this.lf.off(EventType.GRAPH_RENDERED, this.onGraphRendered);
502
+ this.lf.off(ExtensionEventType.GROUP_ADD_NODE, this.onGroupAddNode);
519
503
  };
520
504
  PoolElements.pluginName = 'PoolElements';
521
505
  return PoolElements;