@logicflow/extension 2.2.4-alpha.0 → 2.2.4-alpha.1

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.
@@ -27,6 +27,7 @@ export declare class DynamicGroup {
27
27
  * 默认 true,与 v1.1 以来行为一致;为 false 时仅删除分组,成员保留并解除归属。
28
28
  */
29
29
  cascadeDeleteChildren: boolean;
30
+ sensorOutline: DynamicGroup.SensorOutlineOptions;
30
31
  topGroupZIndex: number;
31
32
  activeGroup?: DynamicGroupNodeModel;
32
33
  nodeGroupMap: Map<string, string>;
@@ -78,6 +79,8 @@ export declare class DynamicGroup {
78
79
  onNodeAdd: ({ data: node }: CallbackArgs<'node:add'>) => void;
79
80
  onNodeDndAdd: ({ data: node }: CallbackArgs<'node:dnd-add'>) => void;
80
81
  onNodeDrop: ({ data: node }: CallbackArgs<'node:drop'>) => void;
82
+ onNodeMouseUp: () => void;
83
+ clearDragTargetHighlight(): void;
81
84
  detachNodeFromGroup: (groupId: string, nodeId: string) => void;
82
85
  releaseGroupMembers: (groupModel: DynamicGroupNodeModel) => void;
83
86
  removeChildFromOtherGroups: (childId: string, ownerGroupId: string) => void;
@@ -145,12 +148,20 @@ export declare namespace DynamicGroup {
145
148
  childNodes: BaseNodeModel[];
146
149
  edgesData: EdgeData[];
147
150
  };
151
+ type SensorOutlineOptions = {
152
+ /** 拖拽感应外框描边颜色,默认 '#feb663' */
153
+ stroke?: string;
154
+ /** 拖拽感应外框线宽,默认 2 */
155
+ strokeWidth?: number;
156
+ };
148
157
  type DynamicGroupOptions = Partial<{
149
158
  isCollapsed: boolean;
150
159
  /** 为 true 时禁止手动将边连到/从分组节点;默认 false */
151
160
  disallowEdgeConnectToGroup: boolean;
152
161
  /** 删除分组时是否级联删除成员;默认 true */
153
162
  cascadeDeleteChildren: boolean;
163
+ /** 拖拽节点进入分组时的感应外框样式 */
164
+ sensorOutline: SensorOutlineOptions;
154
165
  }>;
155
166
  }
156
167
  export default DynamicGroup;
@@ -74,6 +74,7 @@ var DynamicGroup = /** @class */ (function () {
74
74
  * 默认 true,与 v1.1 以来行为一致;为 false 时仅删除分组,成员保留并解除归属。
75
75
  */
76
76
  this.cascadeDeleteChildren = true;
77
+ this.sensorOutline = {};
77
78
  this.topGroupZIndex = DEFAULT_BOTTOM_Z_INDEX;
78
79
  // 存储节点与 group 的映射关系
79
80
  this.nodeGroupMap = new Map();
@@ -120,6 +121,7 @@ var DynamicGroup = /** @class */ (function () {
120
121
  }
121
122
  };
122
123
  this.onSelectionDrop = function () {
124
+ _this.clearDragTargetHighlight();
123
125
  var selectedNodes = _this.lf.graphModel.getSelectElements().nodes;
124
126
  selectedNodes.forEach(function (node) {
125
127
  _this.addNodeToGroup(node);
@@ -133,11 +135,16 @@ var DynamicGroup = /** @class */ (function () {
133
135
  var node = _a.data;
134
136
  _this.syncGroupChildren(node);
135
137
  _this.addNodeToGroup(node);
138
+ _this.clearDragTargetHighlight();
136
139
  };
137
140
  this.onNodeDrop = function (_a) {
138
141
  var node = _a.data;
142
+ _this.clearDragTargetHighlight();
139
143
  _this.addNodeToGroup(node);
140
144
  };
145
+ this.onNodeMouseUp = function () {
146
+ _this.clearDragTargetHighlight();
147
+ };
141
148
  this.detachNodeFromGroup = function (groupId, nodeId) {
142
149
  var group = _this.lf.getNodeModelById(groupId);
143
150
  if (!group)
@@ -215,7 +222,6 @@ var DynamicGroup = /** @class */ (function () {
215
222
  if (targetGroup.isAllowAppendIn(node)) {
216
223
  targetGroup.addChild(node.id);
217
224
  // 建立节点与 group 的映射关系放在了 group.addChild 触发的事件中,与直接调用 addChild 的行为保持一致
218
- targetGroup.setAllowAppendChild(false);
219
225
  }
220
226
  else {
221
227
  // 抛出不允许插入的事件
@@ -230,7 +236,6 @@ var DynamicGroup = /** @class */ (function () {
230
236
  _this.detachNodeFromGroup(preGroupId, node.id);
231
237
  targetGroup.addChild(node.id);
232
238
  // 建立节点与 group 的映射关系放在了 group.addChild 触发的事件中,与直接调用 addChild 的行为保持一致
233
- targetGroup.setAllowAppendChild(false);
234
239
  }
235
240
  else {
236
241
  var preGroup = _this.lf.getNodeModelById(preGroupId);
@@ -564,6 +569,12 @@ var DynamicGroup = /** @class */ (function () {
564
569
  });
565
570
  this.topGroupZIndex = max;
566
571
  };
572
+ DynamicGroup.prototype.clearDragTargetHighlight = function () {
573
+ if (this.activeGroup) {
574
+ this.activeGroup.setAllowAppendChild(false);
575
+ this.activeGroup = undefined;
576
+ }
577
+ };
567
578
  DynamicGroup.prototype.removeChildrenInGroupNodeData = function (nodeData) {
568
579
  var _a;
569
580
  var newNodeData = cloneDeep(nodeData);
@@ -733,6 +744,7 @@ var DynamicGroup = /** @class */ (function () {
733
744
  lf.on(EventType.NODE_ADD, this.onNodeAdd);
734
745
  lf.on(EventType.NODE_DND_ADD, this.onNodeDndAdd);
735
746
  lf.on(EventType.NODE_DROP, this.onNodeDrop);
747
+ lf.on(EventType.NODE_MOUSEUP, this.onNodeMouseUp);
736
748
  lf.on(EventType.SELECTION_DROP, this.onSelectionDrop);
737
749
  lf.on(EventType.NODE_DELETE, this.removeNodeFromGroup);
738
750
  lf.on(EventType.EDGE_DELETE, this.onEdgeDelete);
@@ -790,6 +802,7 @@ var DynamicGroup = /** @class */ (function () {
790
802
  this.lf.off(EventType.NODE_ADD, this.onNodeAdd);
791
803
  this.lf.off(EventType.NODE_DND_ADD, this.onNodeDndAdd);
792
804
  this.lf.off(EventType.NODE_DROP, this.onNodeDrop);
805
+ this.lf.off(EventType.NODE_MOUSEUP, this.onNodeMouseUp);
793
806
  this.lf.off(EventType.SELECTION_DROP, this.onSelectionDrop);
794
807
  this.lf.off(EventType.NODE_DELETE, this.removeNodeFromGroup);
795
808
  this.lf.off(EventType.EDGE_DELETE, this.onEdgeDelete);
@@ -2,6 +2,12 @@ import LogicFlow, { BaseEdgeModel, GraphModel, IRectNodeProperties, RectNodeMode
2
2
  import NodeData = LogicFlow.NodeData;
3
3
  import NodeConfig = LogicFlow.NodeConfig;
4
4
  import EdgeConfig = LogicFlow.EdgeConfig;
5
+ /** 拖拽感应外框默认样式(可通过 pluginsOptions.dynamicGroup.sensorOutline 覆盖) */
6
+ export declare const DEFAULT_SENSOR_OUTLINE: {
7
+ readonly stroke: "#feb663";
8
+ readonly strokeWidth: 2;
9
+ };
10
+ export type SensorOutlineOptions = Partial<typeof DEFAULT_SENSOR_OUTLINE>;
5
11
  export type IGroupNodeProperties = {
6
12
  /**
7
13
  * 当前分组中的节点 id
@@ -185,8 +191,8 @@ export declare class DynamicGroupNodeModel extends RectNodeModel<IGroupNodePrope
185
191
  * 设置分组节点 drop 区域的样式
186
192
  */
187
193
  getAddableOutlineStyle(): {
188
- stroke: string;
189
- strokeWidth: number;
194
+ stroke: "#feb663";
195
+ strokeWidth: 2;
190
196
  strokeDasharray: string;
191
197
  fill: string;
192
198
  };
@@ -59,6 +59,11 @@ import { observable, ElementType, RectNodeModel, } from '@logicflow/core';
59
59
  import { cloneDeep, forEach } from 'lodash-es';
60
60
  import { ExtensionEventType } from '../constant/events';
61
61
  import { DEFAULT_TITLE_TEXT_ALIGN, DEFAULT_TITLE_WRAP_PADDING, formatWrapPaddingCss, getTitleForeignObjectRect, parseWrapPadding, resolveTitleTextPosition, textAlignToAnchor, } from './utils';
62
+ /** 拖拽感应外框默认样式(可通过 pluginsOptions.dynamicGroup.sensorOutline 覆盖) */
63
+ export var DEFAULT_SENSOR_OUTLINE = {
64
+ stroke: '#feb663',
65
+ strokeWidth: 2,
66
+ };
62
67
  // 分组节点默认展开时的大小
63
68
  var DEFAULT_GROUP_EXPAND_WIDTH = 400;
64
69
  var DEFAULT_GROUP_EXPAND_HEIGHT = 230;
@@ -562,9 +567,12 @@ var DynamicGroupNodeModel = /** @class */ (function (_super) {
562
567
  * 设置分组节点 drop 区域的样式
563
568
  */
564
569
  DynamicGroupNodeModel.prototype.getAddableOutlineStyle = function () {
570
+ var plugin = this.graphModel
571
+ .dynamicGroup;
572
+ var _a = __assign(__assign({}, DEFAULT_SENSOR_OUTLINE), plugin === null || plugin === void 0 ? void 0 : plugin.sensorOutline), stroke = _a.stroke, strokeWidth = _a.strokeWidth;
565
573
  return {
566
- stroke: '#feb663',
567
- strokeWidth: 2,
574
+ stroke: stroke,
575
+ strokeWidth: strokeWidth,
568
576
  strokeDasharray: '4 4',
569
577
  fill: 'transparent',
570
578
  };
@@ -27,6 +27,7 @@ export declare class DynamicGroup {
27
27
  * 默认 true,与 v1.1 以来行为一致;为 false 时仅删除分组,成员保留并解除归属。
28
28
  */
29
29
  cascadeDeleteChildren: boolean;
30
+ sensorOutline: DynamicGroup.SensorOutlineOptions;
30
31
  topGroupZIndex: number;
31
32
  activeGroup?: DynamicGroupNodeModel;
32
33
  nodeGroupMap: Map<string, string>;
@@ -78,6 +79,8 @@ export declare class DynamicGroup {
78
79
  onNodeAdd: ({ data: node }: CallbackArgs<'node:add'>) => void;
79
80
  onNodeDndAdd: ({ data: node }: CallbackArgs<'node:dnd-add'>) => void;
80
81
  onNodeDrop: ({ data: node }: CallbackArgs<'node:drop'>) => void;
82
+ onNodeMouseUp: () => void;
83
+ clearDragTargetHighlight(): void;
81
84
  detachNodeFromGroup: (groupId: string, nodeId: string) => void;
82
85
  releaseGroupMembers: (groupModel: DynamicGroupNodeModel) => void;
83
86
  removeChildFromOtherGroups: (childId: string, ownerGroupId: string) => void;
@@ -145,12 +148,20 @@ export declare namespace DynamicGroup {
145
148
  childNodes: BaseNodeModel[];
146
149
  edgesData: EdgeData[];
147
150
  };
151
+ type SensorOutlineOptions = {
152
+ /** 拖拽感应外框描边颜色,默认 '#feb663' */
153
+ stroke?: string;
154
+ /** 拖拽感应外框线宽,默认 2 */
155
+ strokeWidth?: number;
156
+ };
148
157
  type DynamicGroupOptions = Partial<{
149
158
  isCollapsed: boolean;
150
159
  /** 为 true 时禁止手动将边连到/从分组节点;默认 false */
151
160
  disallowEdgeConnectToGroup: boolean;
152
161
  /** 删除分组时是否级联删除成员;默认 true */
153
162
  cascadeDeleteChildren: boolean;
163
+ /** 拖拽节点进入分组时的感应外框样式 */
164
+ sensorOutline: SensorOutlineOptions;
154
165
  }>;
155
166
  }
156
167
  export default DynamicGroup;
@@ -91,6 +91,7 @@ var DynamicGroup = /** @class */ (function () {
91
91
  * 默认 true,与 v1.1 以来行为一致;为 false 时仅删除分组,成员保留并解除归属。
92
92
  */
93
93
  this.cascadeDeleteChildren = true;
94
+ this.sensorOutline = {};
94
95
  this.topGroupZIndex = DEFAULT_BOTTOM_Z_INDEX;
95
96
  // 存储节点与 group 的映射关系
96
97
  this.nodeGroupMap = new Map();
@@ -137,6 +138,7 @@ var DynamicGroup = /** @class */ (function () {
137
138
  }
138
139
  };
139
140
  this.onSelectionDrop = function () {
141
+ _this.clearDragTargetHighlight();
140
142
  var selectedNodes = _this.lf.graphModel.getSelectElements().nodes;
141
143
  selectedNodes.forEach(function (node) {
142
144
  _this.addNodeToGroup(node);
@@ -150,11 +152,16 @@ var DynamicGroup = /** @class */ (function () {
150
152
  var node = _a.data;
151
153
  _this.syncGroupChildren(node);
152
154
  _this.addNodeToGroup(node);
155
+ _this.clearDragTargetHighlight();
153
156
  };
154
157
  this.onNodeDrop = function (_a) {
155
158
  var node = _a.data;
159
+ _this.clearDragTargetHighlight();
156
160
  _this.addNodeToGroup(node);
157
161
  };
162
+ this.onNodeMouseUp = function () {
163
+ _this.clearDragTargetHighlight();
164
+ };
158
165
  this.detachNodeFromGroup = function (groupId, nodeId) {
159
166
  var group = _this.lf.getNodeModelById(groupId);
160
167
  if (!group)
@@ -232,7 +239,6 @@ var DynamicGroup = /** @class */ (function () {
232
239
  if (targetGroup.isAllowAppendIn(node)) {
233
240
  targetGroup.addChild(node.id);
234
241
  // 建立节点与 group 的映射关系放在了 group.addChild 触发的事件中,与直接调用 addChild 的行为保持一致
235
- targetGroup.setAllowAppendChild(false);
236
242
  }
237
243
  else {
238
244
  // 抛出不允许插入的事件
@@ -247,7 +253,6 @@ var DynamicGroup = /** @class */ (function () {
247
253
  _this.detachNodeFromGroup(preGroupId, node.id);
248
254
  targetGroup.addChild(node.id);
249
255
  // 建立节点与 group 的映射关系放在了 group.addChild 触发的事件中,与直接调用 addChild 的行为保持一致
250
- targetGroup.setAllowAppendChild(false);
251
256
  }
252
257
  else {
253
258
  var preGroup = _this.lf.getNodeModelById(preGroupId);
@@ -581,6 +586,12 @@ var DynamicGroup = /** @class */ (function () {
581
586
  });
582
587
  this.topGroupZIndex = max;
583
588
  };
589
+ DynamicGroup.prototype.clearDragTargetHighlight = function () {
590
+ if (this.activeGroup) {
591
+ this.activeGroup.setAllowAppendChild(false);
592
+ this.activeGroup = undefined;
593
+ }
594
+ };
584
595
  DynamicGroup.prototype.removeChildrenInGroupNodeData = function (nodeData) {
585
596
  var _a;
586
597
  var newNodeData = (0, lodash_es_1.cloneDeep)(nodeData);
@@ -750,6 +761,7 @@ var DynamicGroup = /** @class */ (function () {
750
761
  lf.on(core_1.EventType.NODE_ADD, this.onNodeAdd);
751
762
  lf.on(core_1.EventType.NODE_DND_ADD, this.onNodeDndAdd);
752
763
  lf.on(core_1.EventType.NODE_DROP, this.onNodeDrop);
764
+ lf.on(core_1.EventType.NODE_MOUSEUP, this.onNodeMouseUp);
753
765
  lf.on(core_1.EventType.SELECTION_DROP, this.onSelectionDrop);
754
766
  lf.on(core_1.EventType.NODE_DELETE, this.removeNodeFromGroup);
755
767
  lf.on(core_1.EventType.EDGE_DELETE, this.onEdgeDelete);
@@ -807,6 +819,7 @@ var DynamicGroup = /** @class */ (function () {
807
819
  this.lf.off(core_1.EventType.NODE_ADD, this.onNodeAdd);
808
820
  this.lf.off(core_1.EventType.NODE_DND_ADD, this.onNodeDndAdd);
809
821
  this.lf.off(core_1.EventType.NODE_DROP, this.onNodeDrop);
822
+ this.lf.off(core_1.EventType.NODE_MOUSEUP, this.onNodeMouseUp);
810
823
  this.lf.off(core_1.EventType.SELECTION_DROP, this.onSelectionDrop);
811
824
  this.lf.off(core_1.EventType.NODE_DELETE, this.removeNodeFromGroup);
812
825
  this.lf.off(core_1.EventType.EDGE_DELETE, this.onEdgeDelete);
@@ -2,6 +2,12 @@ import LogicFlow, { BaseEdgeModel, GraphModel, IRectNodeProperties, RectNodeMode
2
2
  import NodeData = LogicFlow.NodeData;
3
3
  import NodeConfig = LogicFlow.NodeConfig;
4
4
  import EdgeConfig = LogicFlow.EdgeConfig;
5
+ /** 拖拽感应外框默认样式(可通过 pluginsOptions.dynamicGroup.sensorOutline 覆盖) */
6
+ export declare const DEFAULT_SENSOR_OUTLINE: {
7
+ readonly stroke: "#feb663";
8
+ readonly strokeWidth: 2;
9
+ };
10
+ export type SensorOutlineOptions = Partial<typeof DEFAULT_SENSOR_OUTLINE>;
5
11
  export type IGroupNodeProperties = {
6
12
  /**
7
13
  * 当前分组中的节点 id
@@ -185,8 +191,8 @@ export declare class DynamicGroupNodeModel extends RectNodeModel<IGroupNodePrope
185
191
  * 设置分组节点 drop 区域的样式
186
192
  */
187
193
  getAddableOutlineStyle(): {
188
- stroke: string;
189
- strokeWidth: number;
194
+ stroke: "#feb663";
195
+ strokeWidth: 2;
190
196
  strokeDasharray: string;
191
197
  fill: string;
192
198
  };
@@ -57,11 +57,16 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
57
57
  return to.concat(ar || Array.prototype.slice.call(from));
58
58
  };
59
59
  Object.defineProperty(exports, "__esModule", { value: true });
60
- exports.DynamicGroupNodeModel = void 0;
60
+ exports.DynamicGroupNodeModel = exports.DEFAULT_SENSOR_OUTLINE = void 0;
61
61
  var core_1 = require("@logicflow/core");
62
62
  var lodash_es_1 = require("lodash-es");
63
63
  var events_1 = require("../constant/events");
64
64
  var utils_1 = require("./utils");
65
+ /** 拖拽感应外框默认样式(可通过 pluginsOptions.dynamicGroup.sensorOutline 覆盖) */
66
+ exports.DEFAULT_SENSOR_OUTLINE = {
67
+ stroke: '#feb663',
68
+ strokeWidth: 2,
69
+ };
65
70
  // 分组节点默认展开时的大小
66
71
  var DEFAULT_GROUP_EXPAND_WIDTH = 400;
67
72
  var DEFAULT_GROUP_EXPAND_HEIGHT = 230;
@@ -565,9 +570,12 @@ var DynamicGroupNodeModel = /** @class */ (function (_super) {
565
570
  * 设置分组节点 drop 区域的样式
566
571
  */
567
572
  DynamicGroupNodeModel.prototype.getAddableOutlineStyle = function () {
573
+ var plugin = this.graphModel
574
+ .dynamicGroup;
575
+ var _a = __assign(__assign({}, exports.DEFAULT_SENSOR_OUTLINE), plugin === null || plugin === void 0 ? void 0 : plugin.sensorOutline), stroke = _a.stroke, strokeWidth = _a.strokeWidth;
568
576
  return {
569
- stroke: '#feb663',
570
- strokeWidth: 2,
577
+ stroke: stroke,
578
+ strokeWidth: strokeWidth,
571
579
  strokeDasharray: '4 4',
572
580
  fill: 'transparent',
573
581
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logicflow/extension",
3
- "version": "2.2.4-alpha.0",
3
+ "version": "2.2.4-alpha.1",
4
4
  "description": "LogicFlow Extensions",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",