@logicflow/extension 2.0.13 → 2.0.15
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.
- package/.turbo/turbo-build.log +10 -7
- package/CHANGELOG.md +21 -0
- package/dist/index.css +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/components/selection-select/index.js +8 -6
- package/es/dynamic-group/index.d.ts +1 -0
- package/es/dynamic-group/index.js +9 -5
- package/es/dynamic-group/model.d.ts +6 -0
- package/es/dynamic-group/model.js +24 -1
- package/es/dynamic-group/node.d.ts +2 -1
- package/es/dynamic-group/node.js +15 -14
- package/es/index.css +1 -1
- package/es/style/index.css +1 -1
- package/es/tools/label/Label.d.ts +1 -0
- package/es/tools/label/Label.js +8 -1
- package/es/tools/label/index.js +4 -1
- package/lib/components/selection-select/index.js +8 -6
- package/lib/dynamic-group/index.d.ts +1 -0
- package/lib/dynamic-group/index.js +9 -5
- package/lib/dynamic-group/model.d.ts +6 -0
- package/lib/dynamic-group/model.js +24 -1
- package/lib/dynamic-group/node.d.ts +2 -1
- package/lib/dynamic-group/node.js +15 -14
- package/lib/index.css +1 -1
- package/lib/style/index.css +1 -1
- package/lib/tools/label/Label.d.ts +1 -0
- package/lib/tools/label/Label.js +8 -1
- package/lib/tools/label/index.js +4 -1
- package/package.json +3 -3
- package/src/components/selection-select/index.ts +8 -6
- package/src/dynamic-group/index.ts +12 -2
- package/src/dynamic-group/model.ts +33 -1
- package/src/dynamic-group/node.ts +21 -17
- package/src/style/index.less +5 -0
- package/src/tools/label/Label.tsx +9 -0
- package/src/tools/label/index.ts +6 -2
- package/stats.html +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logicflow/extension",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.15",
|
|
4
4
|
"description": "LogicFlow Extensions",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"author": "Logicflow-Team",
|
|
21
21
|
"license": "Apache-2.0",
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@logicflow/core": "2.0.
|
|
23
|
+
"@logicflow/core": "2.0.11"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@antv/hierarchy": "^0.6.11",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"preact": "^10.17.1",
|
|
32
32
|
"rangy": "^1.3.1",
|
|
33
33
|
"vanilla-picker": "^2.12.3",
|
|
34
|
-
"@logicflow/core": "2.0.
|
|
34
|
+
"@logicflow/core": "2.0.11"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"less": "^4.1.1",
|
|
@@ -166,18 +166,20 @@ export class SelectionSelect {
|
|
|
166
166
|
true,
|
|
167
167
|
)
|
|
168
168
|
const { dynamicGroup, group } = this.lf.graphModel
|
|
169
|
+
const nonGroupedElements: typeof elements = []
|
|
169
170
|
elements.forEach((element) => {
|
|
170
171
|
// 如果节点属于分组,则不选中节点,此处兼容旧版 Group 插件
|
|
171
|
-
if (
|
|
172
|
-
|
|
172
|
+
if (group && group.getNodeGroup(element.id)) {
|
|
173
|
+
return
|
|
173
174
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
this.lf.selectElementById(element.id, true)
|
|
175
|
+
if (dynamicGroup && dynamicGroup.getGroupByNodeId(element.id)) {
|
|
176
|
+
return
|
|
177
177
|
}
|
|
178
|
+
this.lf.selectElementById(element.id, true)
|
|
179
|
+
nonGroupedElements.push(element)
|
|
178
180
|
})
|
|
179
181
|
this.lf.emit('selection:selected', {
|
|
180
|
-
elements,
|
|
182
|
+
elements: nonGroupedElements,
|
|
181
183
|
leftTopPoint: lt,
|
|
182
184
|
rightBottomPoint: rb,
|
|
183
185
|
})
|
|
@@ -229,7 +229,8 @@ export class DynamicGroup {
|
|
|
229
229
|
console.log('isAllowAppendIn', isAllowAppendIn)
|
|
230
230
|
if (isAllowAppendIn) {
|
|
231
231
|
group.addChild(node.id)
|
|
232
|
-
|
|
232
|
+
// 建立节点与 group 的映射关系放在了 group.addChild 触发的事件中,与直接调用 addChild 的行为保持一致
|
|
233
|
+
// TODO 下面这个是干什么的,是否需要一起移动到事件的逻辑中?
|
|
233
234
|
group.setAllowAppendChild(true)
|
|
234
235
|
} else {
|
|
235
236
|
// 抛出不允许插入的事件
|
|
@@ -242,6 +243,14 @@ export class DynamicGroup {
|
|
|
242
243
|
}
|
|
243
244
|
}
|
|
244
245
|
|
|
246
|
+
onGroupAddNode = ({
|
|
247
|
+
data: groupData,
|
|
248
|
+
childId,
|
|
249
|
+
}: CallbackArgs<'group:add-node'>) => {
|
|
250
|
+
console.log('group:add-node', groupData)
|
|
251
|
+
this.nodeGroupMap.set(childId, groupData.id)
|
|
252
|
+
}
|
|
253
|
+
|
|
245
254
|
removeNodeFromGroup = ({
|
|
246
255
|
data: node,
|
|
247
256
|
model,
|
|
@@ -666,7 +675,7 @@ export class DynamicGroup {
|
|
|
666
675
|
|
|
667
676
|
lf.on('graph:updated', ({ data }) => console.log('data', data))
|
|
668
677
|
|
|
669
|
-
lf.on('group:add-node',
|
|
678
|
+
lf.on('group:add-node', this.onGroupAddNode)
|
|
670
679
|
|
|
671
680
|
// https://github.com/didi/LogicFlow/issues/1346
|
|
672
681
|
// 重写 addElements() 方法,在 addElements() 原有基础上增加对 group 内部所有 nodes 和 edges 的复制功能
|
|
@@ -733,6 +742,7 @@ export class DynamicGroup {
|
|
|
733
742
|
this.lf.off('node:click', this.onNodeSelect)
|
|
734
743
|
this.lf.off('node:mousemove', this.onNodeMove)
|
|
735
744
|
this.lf.off('graph:rendered', this.onGraphRendered)
|
|
745
|
+
this.lf.off('group:add-node', this.onGroupAddNode)
|
|
736
746
|
|
|
737
747
|
// 还原 lf.addElements 方法?
|
|
738
748
|
// 移除 graphModel 上重写的 addNodeMoveRules 方法?
|
|
@@ -181,6 +181,35 @@ export class DynamicGroupNodeModel extends RectNodeModel<IGroupNodeProperties> {
|
|
|
181
181
|
return data
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
+
/**
|
|
185
|
+
* 获取分组内的节点
|
|
186
|
+
* @param groupModel
|
|
187
|
+
*/
|
|
188
|
+
getNodesInGroup(groupModel: DynamicGroupNodeModel): string[] {
|
|
189
|
+
const nodeIds: string[] = []
|
|
190
|
+
if (groupModel.isGroup) {
|
|
191
|
+
forEach(Array.from(groupModel.children), (nodeId: string) => {
|
|
192
|
+
nodeIds.push(nodeId)
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
return nodeIds
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
getMoveDistance(
|
|
199
|
+
deltaX: number,
|
|
200
|
+
deltaY: number,
|
|
201
|
+
isIgnoreRule = false,
|
|
202
|
+
): [number, number] {
|
|
203
|
+
const [moveDeltaX, moveDeltaY] = super.getMoveDistance(
|
|
204
|
+
deltaX,
|
|
205
|
+
deltaY,
|
|
206
|
+
isIgnoreRule,
|
|
207
|
+
)
|
|
208
|
+
const nodeIds = this.getNodesInGroup(this)
|
|
209
|
+
this.graphModel.moveNodes(nodeIds, deltaX, deltaY, isIgnoreRule)
|
|
210
|
+
return [moveDeltaX, moveDeltaY]
|
|
211
|
+
}
|
|
212
|
+
|
|
184
213
|
/**
|
|
185
214
|
* 重写 getHistoryData 方法
|
|
186
215
|
*/
|
|
@@ -463,7 +492,10 @@ export class DynamicGroupNodeModel extends RectNodeModel<IGroupNodeProperties> {
|
|
|
463
492
|
addChild(id: string) {
|
|
464
493
|
this.children.add(id)
|
|
465
494
|
const groupData = this.getData()
|
|
466
|
-
this.graphModel.eventCenter.emit('group:add-node', {
|
|
495
|
+
this.graphModel.eventCenter.emit('group:add-node', {
|
|
496
|
+
data: groupData,
|
|
497
|
+
childId: id,
|
|
498
|
+
})
|
|
467
499
|
}
|
|
468
500
|
|
|
469
501
|
/**
|
|
@@ -106,24 +106,27 @@ export class DynamicGroupNode<
|
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
onNodeMouseMove = (
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
|
|
109
|
+
onNodeMouseMove = () =>
|
|
110
|
+
// {
|
|
111
|
+
// deltaX,
|
|
112
|
+
// deltaY,
|
|
113
|
+
// data,
|
|
114
|
+
// }: Omit<CallbackArgs<'node:mousemove'>, 'e' | 'position'>
|
|
115
|
+
{
|
|
116
|
+
// console.log(data,deltaX,deltaY,'111')
|
|
117
|
+
// const { model: curGroup, graphModel } = this.props
|
|
118
|
+
// const { transformModel } = graphModel
|
|
119
|
+
// const { SCALE_X, SCALE_Y } = transformModel
|
|
120
|
+
// if (data.id === curGroup.id) {
|
|
121
|
+
// const nodeIds = this.getNodesInGroup(curGroup, graphModel)
|
|
122
|
+
// // https://github.com/didi/LogicFlow/issues/1914
|
|
123
|
+
// // 当调用lf.fitView()时,会改变整体的SCALE_X和SCALE_Y
|
|
124
|
+
// // 由于group的mousemove是在drag.ts的this.onDragging()处理的,在onDragging()里面进行SCALE的处理
|
|
125
|
+
// // 而"node:mousemove"emit出来跟onDragging()是同时的,也就是emit出来的数据是没有经过SCALE处理的坐标
|
|
126
|
+
// // 因此这里需要增加SCALE的处理
|
|
127
|
+
// graphModel.moveNodes(nodeIds, deltaX / SCALE_X, deltaY / SCALE_Y, true)
|
|
128
|
+
// }
|
|
125
129
|
}
|
|
126
|
-
}
|
|
127
130
|
|
|
128
131
|
graphRendered = () => {
|
|
129
132
|
const { model } = this.props
|
|
@@ -169,6 +172,7 @@ export class DynamicGroupNode<
|
|
|
169
172
|
/**
|
|
170
173
|
* 获取分组内的节点
|
|
171
174
|
* @param groupModel
|
|
175
|
+
* @param graphModel
|
|
172
176
|
*/
|
|
173
177
|
getNodesInGroup(
|
|
174
178
|
groupModel: DynamicGroupNodeModel,
|
package/src/style/index.less
CHANGED
|
@@ -182,6 +182,14 @@ export class Label extends Component<ILabelProps, ILabelState> {
|
|
|
182
182
|
})
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
+
handleInput = (e: InputEvent) => {
|
|
186
|
+
const { label, graphModel } = this.props
|
|
187
|
+
graphModel.eventCenter.emit('label:input', {
|
|
188
|
+
e,
|
|
189
|
+
data: label.getData(),
|
|
190
|
+
})
|
|
191
|
+
}
|
|
192
|
+
|
|
185
193
|
setElementModelLabelInfo(data) {
|
|
186
194
|
const { label, element, graphModel } = this.props
|
|
187
195
|
const {
|
|
@@ -330,6 +338,7 @@ export class Label extends Component<ILabelProps, ILabelState> {
|
|
|
330
338
|
'lf-label-editor-hover': !isEditing && (isHovered || isSelected),
|
|
331
339
|
[`lf-label-editor-${textOverflowMode}`]: !isEditing,
|
|
332
340
|
})}
|
|
341
|
+
onInput={this.handleInput}
|
|
333
342
|
style={{
|
|
334
343
|
maxWidth: `${maxLabelWidth}px`,
|
|
335
344
|
boxSizing: 'border-box',
|
package/src/tools/label/index.ts
CHANGED
|
@@ -221,8 +221,12 @@ export class Label implements Extension {
|
|
|
221
221
|
editable: true,
|
|
222
222
|
vertical: false,
|
|
223
223
|
}
|
|
224
|
-
|
|
225
|
-
if (
|
|
224
|
+
// 全局的isMultiple为false,或全局isMultiple为true但局部isMultiple指明是false,或当前label长度已经达到上线时,不允许添加多个 label
|
|
225
|
+
if (
|
|
226
|
+
!isMultiple ||
|
|
227
|
+
(isMultiple && curLabelOption.isMultiple === false) ||
|
|
228
|
+
len >= (curLabelOption?.maxCount ?? maxCount)
|
|
229
|
+
) {
|
|
226
230
|
return
|
|
227
231
|
}
|
|
228
232
|
|