@logicflow/extension 2.0.14 → 2.0.16

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.
@@ -178,8 +178,18 @@ export class DynamicGroup {
178
178
  this.topGroupZIndex = max
179
179
  }
180
180
 
181
- // 监听 LogicFlow 的相关事件,做对应的处理
182
- addNodeToGroup = ({ data: node }: CallbackArgs<'node:add'>) => {
181
+ onSelectionDrop = () => {
182
+ const { nodes: selectedNodes } = this.lf.graphModel.getSelectElements()
183
+ selectedNodes.forEach((node) => {
184
+ this.addNodeToGroup(node)
185
+ })
186
+ }
187
+
188
+ onNodeAddOrDrop = ({ data: node }: CallbackArgs<'node:add'>) => {
189
+ this.addNodeToGroup(node)
190
+ }
191
+
192
+ addNodeToGroup = (node: LogicFlow.NodeData) => {
183
193
  // 1. 如果该节点之前已经在 group 中了,则将其从之前的 group 移除
184
194
  const preGroupId = this.nodeGroupMap.get(node.id)
185
195
 
@@ -229,8 +239,8 @@ export class DynamicGroup {
229
239
  console.log('isAllowAppendIn', isAllowAppendIn)
230
240
  if (isAllowAppendIn) {
231
241
  group.addChild(node.id)
232
- this.nodeGroupMap.set(node.id, group.id)
233
- group.setAllowAppendChild(true)
242
+ // 建立节点与 group 的映射关系放在了 group.addChild 触发的事件中,与直接调用 addChild 的行为保持一致
243
+ group.setAllowAppendChild(false)
234
244
  } else {
235
245
  // 抛出不允许插入的事件
236
246
  this.lf.emit('group:not-allowed', {
@@ -242,6 +252,14 @@ export class DynamicGroup {
242
252
  }
243
253
  }
244
254
 
255
+ onGroupAddNode = ({
256
+ data: groupData,
257
+ childId,
258
+ }: CallbackArgs<'group:add-node'>) => {
259
+ console.log('group:add-node', groupData)
260
+ this.nodeGroupMap.set(childId, groupData.id)
261
+ }
262
+
245
263
  removeNodeFromGroup = ({
246
264
  data: node,
247
265
  model,
@@ -264,7 +282,17 @@ export class DynamicGroup {
264
282
  }
265
283
  }
266
284
 
267
- setActiveGroup = ({ data: node }: CallbackArgs<'node:drag'>) => {
285
+ onSelectionDrag = () => {
286
+ const { nodes: selectedNodes } = this.lf.graphModel.getSelectElements()
287
+ selectedNodes.forEach((node) => {
288
+ this.setActiveGroup(node)
289
+ })
290
+ }
291
+ onNodeDrag = ({ data: node }: CallbackArgs<'node:drag'>) => {
292
+ this.setActiveGroup(node)
293
+ }
294
+
295
+ setActiveGroup = (node: LogicFlow.NodeData) => {
268
296
  const nodeModel = this.lf.getNodeModelById(node.id)
269
297
  const bounds = nodeModel?.getBounds()
270
298
 
@@ -657,16 +685,18 @@ export class DynamicGroup {
657
685
 
658
686
  graphModel.dynamicGroup = this
659
687
 
660
- lf.on('node:add,node:drop,node:dnd-add', this.addNodeToGroup)
688
+ lf.on('node:add,node:drop,node:dnd-add', this.onNodeAddOrDrop)
689
+ lf.on('selection:drop', this.onSelectionDrop)
661
690
  lf.on('node:delete', this.removeNodeFromGroup)
662
- lf.on('node:drag,node:dnd-drag', this.setActiveGroup)
691
+ lf.on('node:drag,node:dnd-drag', this.onNodeDrag)
692
+ lf.on('selection:drag', this.onSelectionDrag)
663
693
  lf.on('node:click', this.onNodeSelect)
664
694
  lf.on('node:mousemove', this.onNodeMove)
665
695
  lf.on('graph:rendered', this.onGraphRendered)
666
696
 
667
697
  lf.on('graph:updated', ({ data }) => console.log('data', data))
668
698
 
669
- lf.on('group:add-node', ({ data }) => console.log('group:add-node', data))
699
+ lf.on('group:add-node', this.onGroupAddNode)
670
700
 
671
701
  // https://github.com/didi/LogicFlow/issues/1346
672
702
  // 重写 addElements() 方法,在 addElements() 原有基础上增加对 group 内部所有 nodes 和 edges 的复制功能
@@ -727,12 +757,15 @@ export class DynamicGroup {
727
757
 
728
758
  destroy() {
729
759
  // 销毁监听的事件,并移除渲染的 dom 内容
730
- this.lf.off('node:add,node:drop,node:dnd-add', this.addNodeToGroup)
760
+ this.lf.off('node:add,node:drop,node:dnd-add', this.onNodeAddOrDrop)
761
+ this.lf.off('selection:drop', this.onSelectionDrop)
731
762
  this.lf.off('node:delete', this.removeNodeFromGroup)
732
- this.lf.off('node:drag,node:dnd-drag', this.setActiveGroup)
763
+ this.lf.off('node:drag,node:dnd-drag', this.onNodeDrag)
764
+ this.lf.off('selection:drag', this.onSelectionDrag)
733
765
  this.lf.off('node:click', this.onNodeSelect)
734
766
  this.lf.off('node:mousemove', this.onNodeMove)
735
767
  this.lf.off('graph:rendered', this.onGraphRendered)
768
+ this.lf.off('group:add-node', this.onGroupAddNode)
736
769
 
737
770
  // 还原 lf.addElements 方法?
738
771
  // 移除 graphModel 上重写的 addNodeMoveRules 方法?
@@ -492,7 +492,10 @@ export class DynamicGroupNodeModel extends RectNodeModel<IGroupNodeProperties> {
492
492
  addChild(id: string) {
493
493
  this.children.add(id)
494
494
  const groupData = this.getData()
495
- this.graphModel.eventCenter.emit('group:add-node', { data: groupData })
495
+ this.graphModel.eventCenter.emit('group:add-node', {
496
+ data: groupData,
497
+ childId: id,
498
+ })
496
499
  }
497
500
 
498
501
  /**
@@ -221,6 +221,11 @@
221
221
  border: 1px solid #93a3b4;
222
222
  }
223
223
 
224
+ .lf-mini-map .lf-graph {
225
+ width: 100% !important;
226
+ height: 100% !important;
227
+ }
228
+
224
229
  .lf-mini-map-graph {
225
230
  position: relative;
226
231
  overflow: hidden;