@logicflow/extension 2.2.0-alpha.7 → 2.2.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.
Files changed (125) hide show
  1. package/README.md +16 -0
  2. package/package.json +10 -7
  3. package/.turbo/turbo-build.log +0 -38
  4. package/CHANGELOG.md +0 -1829
  5. package/__test__/bpmn-adapter.test.js +0 -227
  6. package/es/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
  7. package/es/materials/curved-edge/__test__/curved-edge.test.js +0 -18
  8. package/jest.config.js +0 -198
  9. package/lib/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
  10. package/lib/materials/curved-edge/__test__/curved-edge.test.js +0 -20
  11. package/rollup.config.js +0 -52
  12. package/src/NodeResize/BasicShape/Ellipse.tsx +0 -22
  13. package/src/NodeResize/BasicShape/Polygon.tsx +0 -24
  14. package/src/NodeResize/BasicShape/Rect.tsx +0 -44
  15. package/src/NodeResize/control/Control.tsx +0 -537
  16. package/src/NodeResize/control/ControlGroup.tsx +0 -76
  17. package/src/NodeResize/control/Util.ts +0 -206
  18. package/src/NodeResize/index.ts +0 -26
  19. package/src/NodeResize/node/DiamondResize.tsx +0 -149
  20. package/src/NodeResize/node/EllipseResize.tsx +0 -140
  21. package/src/NodeResize/node/HtmlResize.tsx +0 -125
  22. package/src/NodeResize/node/RectResize.tsx +0 -126
  23. package/src/NodeResize/node/index.ts +0 -4
  24. package/src/bpmn/constant.ts +0 -56
  25. package/src/bpmn/events/EndEvent.ts +0 -73
  26. package/src/bpmn/events/StartEvent.ts +0 -52
  27. package/src/bpmn/events/index.ts +0 -2
  28. package/src/bpmn/flow/SequenceFlow.ts +0 -25
  29. package/src/bpmn/flow/index.ts +0 -1
  30. package/src/bpmn/gateways/ExclusiveGateway.ts +0 -71
  31. package/src/bpmn/gateways/index.ts +0 -1
  32. package/src/bpmn/getBpmnId.ts +0 -31
  33. package/src/bpmn/index.ts +0 -60
  34. package/src/bpmn/tasks/ServiceTask.ts +0 -63
  35. package/src/bpmn/tasks/UserTask.ts +0 -64
  36. package/src/bpmn/tasks/index.ts +0 -2
  37. package/src/bpmn-adapter/bpmnIds.ts +0 -31
  38. package/src/bpmn-adapter/index.ts +0 -835
  39. package/src/bpmn-adapter/json2xml.ts +0 -127
  40. package/src/bpmn-adapter/xml2json.ts +0 -544
  41. package/src/bpmn-elements/README.md +0 -223
  42. package/src/bpmn-elements/__tests__/definition.test.js +0 -72
  43. package/src/bpmn-elements/index.d.ts +0 -26
  44. package/src/bpmn-elements/index.ts +0 -107
  45. package/src/bpmn-elements/presets/Event/EndEventFactory.ts +0 -114
  46. package/src/bpmn-elements/presets/Event/IntermediateCatchEvent.ts +0 -108
  47. package/src/bpmn-elements/presets/Event/IntermediateThrowEvent.ts +0 -109
  48. package/src/bpmn-elements/presets/Event/StartEventFactory.ts +0 -114
  49. package/src/bpmn-elements/presets/Event/boundaryEventFactory.ts +0 -117
  50. package/src/bpmn-elements/presets/Event/index.ts +0 -14
  51. package/src/bpmn-elements/presets/Flow/flow.d.ts +0 -6
  52. package/src/bpmn-elements/presets/Flow/index.ts +0 -8
  53. package/src/bpmn-elements/presets/Flow/manhattan.ts +0 -691
  54. package/src/bpmn-elements/presets/Flow/sequenceFlow.ts +0 -65
  55. package/src/bpmn-elements/presets/Gateway/gateway.ts +0 -107
  56. package/src/bpmn-elements/presets/Gateway/index.ts +0 -23
  57. package/src/bpmn-elements/presets/Pool/Lane.ts +0 -211
  58. package/src/bpmn-elements/presets/Pool/Pool.ts +0 -284
  59. package/src/bpmn-elements/presets/Pool/index.ts +0 -89
  60. package/src/bpmn-elements/presets/Task/index.ts +0 -122
  61. package/src/bpmn-elements/presets/Task/subProcess.ts +0 -189
  62. package/src/bpmn-elements/presets/Task/task.ts +0 -193
  63. package/src/bpmn-elements/presets/icons.ts +0 -155
  64. package/src/bpmn-elements/utils.ts +0 -52
  65. package/src/bpmn-elements-adapter/README.md +0 -293
  66. package/src/bpmn-elements-adapter/__tests__/adapter_in.test.js +0 -528
  67. package/src/bpmn-elements-adapter/__tests__/adapter_out.test.js +0 -569
  68. package/src/bpmn-elements-adapter/constant.ts +0 -76
  69. package/src/bpmn-elements-adapter/index.ts +0 -1134
  70. package/src/bpmn-elements-adapter/json2xml.ts +0 -105
  71. package/src/bpmn-elements-adapter/xml2json.ts +0 -542
  72. package/src/components/context-menu/index.ts +0 -253
  73. package/src/components/control/index.ts +0 -155
  74. package/src/components/dnd-panel/index.ts +0 -137
  75. package/src/components/highlight/index.ts +0 -227
  76. package/src/components/menu/index.ts +0 -748
  77. package/src/components/mini-map/index.ts +0 -686
  78. package/src/components/selection-select/index.ts +0 -387
  79. package/src/dynamic-group/index.ts +0 -774
  80. package/src/dynamic-group/model.ts +0 -580
  81. package/src/dynamic-group/node.ts +0 -288
  82. package/src/dynamic-group/utils.ts +0 -46
  83. package/src/index.less +0 -1
  84. package/src/index.ts +0 -47
  85. package/src/insert-node-in-polyline/edge.ts +0 -175
  86. package/src/insert-node-in-polyline/index.ts +0 -193
  87. package/src/materials/curved-edge/__test__/curved-edge.test.ts +0 -46
  88. package/src/materials/curved-edge/index.ts +0 -217
  89. package/src/materials/group/GroupNode.ts +0 -437
  90. package/src/materials/group/index.ts +0 -542
  91. package/src/materials/node-selection/index.ts +0 -380
  92. package/src/mindmap/fakerRoot.ts +0 -19
  93. package/src/mindmap/index.ts +0 -328
  94. package/src/mindmap/markContent.ts +0 -81
  95. package/src/mindmap/markContentOption.ts +0 -81
  96. package/src/mindmap/markEntity.ts +0 -82
  97. package/src/mindmap/markRoot.ts +0 -83
  98. package/src/mindmap/theme.ts +0 -11
  99. package/src/pool/LaneModel.ts +0 -226
  100. package/src/pool/LaneView.ts +0 -220
  101. package/src/pool/PoolModel.ts +0 -631
  102. package/src/pool/PoolView.ts +0 -75
  103. package/src/pool/constant.ts +0 -19
  104. package/src/pool/index.ts +0 -621
  105. package/src/pool/utils.ts +0 -46
  106. package/src/rect-label-node/RectLabelNodeView.ts +0 -33
  107. package/src/rect-label-node/index.ts +0 -15
  108. package/src/style/index.less +0 -381
  109. package/src/style/raw.ts +0 -328
  110. package/src/tools/auto-layout/index.ts +0 -282
  111. package/src/tools/flow-path/index.ts +0 -233
  112. package/src/tools/label/Label.tsx +0 -357
  113. package/src/tools/label/LabelModel.ts +0 -83
  114. package/src/tools/label/LabelOverlay.tsx +0 -162
  115. package/src/tools/label/algorithm.ts +0 -42
  116. package/src/tools/label/index.ts +0 -479
  117. package/src/tools/label/mediumEditor.ts +0 -121
  118. package/src/tools/label/utils.ts +0 -395
  119. package/src/tools/proximity-connect/index.ts +0 -435
  120. package/src/tools/snapshot/README.md +0 -145
  121. package/src/tools/snapshot/index.ts +0 -701
  122. package/src/tools/snapshot/utils.ts +0 -163
  123. package/src/turbo-adapter/index.ts +0 -212
  124. package/stats.html +0 -4842
  125. package/tsconfig.json +0 -18
@@ -1,380 +0,0 @@
1
- import { get } from 'lodash-es'
2
- import LogicFlow, {
3
- BaseNodeModel,
4
- h,
5
- PolygonNode,
6
- PolygonNodeModel,
7
- } from '@logicflow/core'
8
- import { ResizeControl } from '@logicflow/core/lib/view/Control'
9
-
10
- export type INodeSelectionProperties = {
11
- strokeColor?: string | 'none'
12
- node_selection_ids?: string[]
13
- }
14
-
15
- class NodeSelectionView extends PolygonNode {
16
- getLabelShape(): h.JSX.Element {
17
- const { id, x, y, width, height, properties } = this.props.model
18
- const style = this.props.model.getNodeStyle()
19
- return h(
20
- 'svg',
21
- {
22
- x: x - width / 2,
23
- y: y - height / 2,
24
- width: 50,
25
- height: 24,
26
- style: 'z-index: 0; background: none; overflow: auto;',
27
- },
28
- [
29
- properties.labelText
30
- ? h(
31
- 'text',
32
- {
33
- x: 0,
34
- y: -5,
35
- fontSize: '16px',
36
- fill: style.stroke,
37
- },
38
- properties.labelText,
39
- )
40
- : '',
41
- properties.disabledDelete
42
- ? ''
43
- : h(
44
- 'text',
45
- {
46
- x: properties.labelText ? 50 : 0,
47
- y: -5,
48
- fontSize: '24px',
49
- cursor: 'pointer',
50
- fill: style.stroke,
51
- onclick: this.handleCustomDeleteIconClick.bind(this, id),
52
- },
53
- 'x',
54
- ),
55
- ],
56
- )
57
- }
58
-
59
- getShape(): h.JSX.Element {
60
- const { x, y, width, height, id } = this.props.model
61
- const style = this.props.model.getNodeStyle()
62
-
63
- return h('g', {}, [
64
- h('rect', {
65
- ...style,
66
- x: x - width / 2,
67
- y: y - height / 2,
68
- width,
69
- height,
70
- id,
71
- }),
72
- this.getLabelShape(),
73
- ])
74
- }
75
- // 避免点击时,该节点置于最高层,挡住内部节点
76
- toFront() {}
77
-
78
- /**
79
- * 点击删除
80
- * @param id
81
- */
82
- handleCustomDeleteIconClick(id) {
83
- const { graphModel } = this.props
84
- graphModel.deleteNode(id)
85
- }
86
- }
87
-
88
- class NodeSelectionModel extends PolygonNodeModel<INodeSelectionProperties> {
89
- d = 10
90
-
91
- initNodeData(data) {
92
- data.text = {
93
- value: '',
94
- x: data.x,
95
- y: data.y,
96
- draggable: false,
97
- editable: false,
98
- }
99
- super.initNodeData(data)
100
- this.zIndex = 0
101
- this.draggable = true
102
- }
103
-
104
- setAttributes() {
105
- // 默认不显示
106
- this.points = []
107
-
108
- // 图render的时候,会把所有nodes数据实例化,全部实例化完成后,放到nodesMap里。
109
- // 节点的setAttributes在实例化的时候执行第一次
110
- // updatePointsByNodes中的getNodeModelById方法,是从nodesMap取的数据,第一次就拿不到,所以要加setTimeout
111
- if ((this.properties?.node_selection_ids as string[]).length > 1) {
112
- setTimeout(() => {
113
- this.updatePointsByNodes(this.properties?.node_selection_ids || [])
114
- })
115
- }
116
- }
117
-
118
- getNodeStyle() {
119
- const style = super.getNodeStyle()
120
- style.stroke = this.properties.strokeColor || '#008000'
121
- style.strokeDasharray = '10 5'
122
- return style
123
- }
124
-
125
- getDefaultAnchor() {
126
- return []
127
- }
128
-
129
- /**
130
- * 更新points - 多边形顶点坐标集合
131
- * @param points
132
- */
133
- updatePoints(points: [number, number][]) {
134
- this.points = points
135
- }
136
-
137
- /**
138
- * 更新x y - 多边形中点坐标
139
- */
140
- updateCoordinate({ x, y }) {
141
- this.x = x
142
- this.y = y
143
- }
144
-
145
- /**
146
- * 计算新的 points 和 x y
147
- */
148
- updatePointsByNodes(nodesIds: string[]) {
149
- const points: [number, number][] = []
150
- let minX = Infinity
151
- let minY = Infinity
152
- let maxX = -Infinity
153
- let maxY = -Infinity
154
-
155
- nodesIds.forEach((id) => {
156
- const model = this.graphModel.getNodeModelById(id)
157
- if (!model) return
158
- const { width, height, x, y } = model
159
- minX = Math.min(minX, x - width / 2 - this.d)
160
- minY = Math.min(minY, y - height / 2 - this.d)
161
- maxX = Math.max(maxX, x + width / 2 + this.d)
162
- maxY = Math.max(maxY, y + height / 2 + this.d)
163
- })
164
- points.push([minX, minY], [maxX, minY], [maxX, maxY], [minX, maxY])
165
-
166
- if ([minX, minY, maxX, maxY].some((n) => Math.abs(n) === Infinity)) return
167
-
168
- this.updatePoints(points)
169
- this.updateCoordinate({
170
- x: (maxX + minX) / 2,
171
- y: (maxY + minY) / 2,
172
- })
173
- }
174
-
175
- isResize = false
176
- override resize(
177
- resizeInfo: ResizeControl.ResizeInfo,
178
- ): ResizeControl.ResizeNodeData {
179
- this.isResize = true
180
- const { width, height } = resizeInfo
181
- const scale = {
182
- x: width / this.width,
183
- y: height / this.height,
184
- }
185
- const childIds = (this.properties.node_selection_ids || []).slice()
186
- const childModels: BaseNodeModel[] = []
187
- const usedGroupId = new Set<string>()
188
- while (childIds.length) {
189
- const id = childIds.shift()!
190
- const node = this.graphModel.nodesMap[id]?.model
191
- if (!node) {
192
- continue
193
- }
194
- if (!isNodeSelectionModel(node)) {
195
- childModels.push(node)
196
- continue
197
- }
198
- // 跳出循环引用
199
- if (usedGroupId.has(node.id)) {
200
- continue
201
- }
202
- usedGroupId.add(node.id)
203
- childIds.push(...(node.properties.node_selection_ids || []))
204
- }
205
-
206
- const begin = {
207
- x: this.x - this.width / 2,
208
- y: this.y - this.height / 2,
209
- }
210
-
211
- const res = super.resize(resizeInfo)
212
-
213
- const end = {
214
- x: this.x - this.width / 2,
215
- y: this.y - this.height / 2,
216
- }
217
-
218
- childModels.forEach((node) => {
219
- node.width = node.width * scale.x
220
- node.height = node.height * scale.y
221
- const deltaX = (node.x - begin.x) * scale.x + end.x - node.x
222
- const deltaY = (node.y - begin.y) * scale.y + end.y - node.y
223
- node.move(deltaX, deltaY, true)
224
- })
225
- this.isResize = false
226
- return res
227
- }
228
- }
229
-
230
- const NODE_SELECTION_TYPE = 'node-selection'
231
- class NodeSelection {
232
- static pluginName = 'node-selection'
233
- lf: LogicFlow // lf 实例
234
- selectNodes: any[] = [] // 选择的nodes
235
- currentClickNode // 当前点击的节点,选中的节点是无序的
236
- d = 10
237
-
238
- constructor({ lf }: LogicFlow.IExtensionProps) {
239
- this.lf = lf
240
- lf.register({
241
- type: NODE_SELECTION_TYPE,
242
- view: NodeSelectionView,
243
- model: NodeSelectionModel,
244
- })
245
- }
246
-
247
- /**
248
- * 获取所选node的id数组
249
- */
250
- get selectNodesIds(): string[] {
251
- return this.selectNodes.map((node) => node.id)
252
- }
253
-
254
- /**
255
- * 新建node-selection节点
256
- */
257
- addNodeSelection() {
258
- const node = this.lf.addNode({
259
- type: 'node-selection',
260
- text: '',
261
- properties: {
262
- node_selection_ids: this.selectNodesIds,
263
- },
264
- x: 0,
265
- y: 0,
266
- })
267
- node.updatePointsByNodes(this.selectNodesIds)
268
- }
269
-
270
- /**
271
- * 更新node-selection节点
272
- */
273
- updateNodeSelection() {
274
- const nodeSelection = this.getNodeSelection()
275
- if (!nodeSelection) return
276
- this.lf.setProperties(nodeSelection.id, {
277
- node_selection_ids: this.selectNodesIds,
278
- })
279
-
280
- this.lf
281
- .getNodeModelById(nodeSelection.id)
282
- ?.updatePointsByNodes(this.selectNodesIds)
283
- }
284
-
285
- /**
286
- * 获取所属的node-selection
287
- */
288
- getNodeSelection() {
289
- const ids = this.selectNodesIds
290
- const rawData = this.lf.getGraphRawData()
291
-
292
- const oldIds = ids.filter((id) => id !== this.currentClickNode.id)
293
- return rawData.nodes.find((node) => {
294
- if (node.type === 'node-selection') {
295
- const nodeSelectionIds = get(
296
- node,
297
- 'properties.node_selection_ids',
298
- [],
299
- ) as string[]
300
- return oldIds.every((id) => nodeSelectionIds.includes(id))
301
- }
302
- return false
303
- })
304
- }
305
-
306
- protected onNodeChange(lf: LogicFlow, model: BaseNodeModel) {
307
- const connectedSelections = lf.graphModel.nodes.filter((node) => {
308
- if (!isNodeSelectionModel(node)) {
309
- return false
310
- }
311
- const childIds: string[] = node.properties.node_selection_ids || []
312
- return childIds.includes(model.id)
313
- })
314
-
315
- Promise.resolve().then(() => {
316
- connectedSelections.forEach((node) => {
317
- node.updatePointsByNodes(node.properties.node_selection_ids || [])
318
- })
319
- })
320
- }
321
-
322
- render(lf: LogicFlow) {
323
- this.lf = lf
324
-
325
- lf.on('node:click', (val) => {
326
- if (!val.e.shiftKey || val.data.type === NODE_SELECTION_TYPE) return
327
- this.currentClickNode = val.data
328
-
329
- // 如果selectNodesIds中已存在此节点,则取消选中此节点
330
- let hasExists = false
331
- if (this.selectNodesIds.includes(val.data.id)) {
332
- this.lf.getNodeModelById(val.data.id)?.setSelected(false)
333
- hasExists = true
334
- }
335
-
336
- // 获取所有被选中的节点,获取到的数组是无序的
337
- const { nodes } = lf.getSelectElements(true)
338
- this.selectNodes = nodes
339
- if (this.selectNodes.length === 1) {
340
- if (!hasExists) {
341
- this.addNodeSelection()
342
- } else {
343
- this.updateNodeSelection()
344
- }
345
- } else if (this.selectNodes.length > 1) {
346
- this.updateNodeSelection()
347
- }
348
- })
349
- lf.graphModel.addNodeMoveRules((model, deltaX, deltaY) => {
350
- this.onNodeChange(lf, model)
351
- /**
352
- * 如果移动的是分组,那么分组的子节点也跟着移动。
353
- * 忽略来自分组resize导致的move
354
- */
355
- if (isNodeSelectionModel(model) && !model.isResize) {
356
- const nodeIds = model.properties.node_selection_ids || []
357
- lf.graphModel.moveNodes(nodeIds, deltaX, deltaY, true)
358
- return true
359
- }
360
- return true
361
- })
362
-
363
- lf.graphModel.addNodeResizeRules((model) => {
364
- if (!isNodeSelectionModel(model)) {
365
- this.onNodeChange(lf, model)
366
- }
367
- return true
368
- })
369
- }
370
- }
371
-
372
- const isNodeSelectionModel = (
373
- node: BaseNodeModel,
374
- ): node is NodeSelectionModel => {
375
- return !!(node && (node.type as string) === NODE_SELECTION_TYPE)
376
- }
377
-
378
- export default NodeSelection
379
-
380
- export { NodeSelection }
@@ -1,19 +0,0 @@
1
- import { BaseNode, RectNodeModel } from '@logicflow/core'
2
-
3
- class MarkRootModel extends RectNodeModel {
4
- static extendKey = 'MarkRootModel'
5
- }
6
-
7
- class MarkRootView extends BaseNode<any> {
8
- getShape() {
9
- return null
10
- }
11
- }
12
-
13
- const MarkRoot = {
14
- type: 'faker:root',
15
- view: MarkRootView,
16
- model: MarkRootModel,
17
- }
18
-
19
- export default MarkRoot