@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,227 +0,0 @@
1
- import LogicFlow, { BaseEdgeModel, BaseNodeModel } from '@logicflow/core'
2
- import { uniqBy, concat } from 'lodash-es'
3
-
4
- // 后续并入FlowPath
5
- const getPath = (id: string, lf: LogicFlow) => {
6
- const el = lf.getModelById(id)
7
- return getNodePath(el?.BaseType === 'node' ? el : el?.targetNode, lf)
8
- }
9
-
10
- // dfs + 动态规划
11
- // todo 算法优化
12
- const getNodePath = (node, lf: LogicFlow) => {
13
- const incomingPaths: any[] = []
14
- const outgoingPaths: any[] = []
15
-
16
- const getIncomingPaths = (curNode, path, prevNode?: BaseNodeModel) => {
17
- if (!curNode) return
18
- if (prevNode) {
19
- // * 上个节点和当前节点中间边
20
- path.unshift(
21
- ...lf
22
- .getEdgeModels({
23
- sourceNodeId: curNode.id,
24
- targetNodeId: prevNode?.id,
25
- })
26
- .map((item) => item.id),
27
- )
28
- }
29
-
30
- // * 路径中存在节点,则不再继续查找,说明出现环情况
31
- if (path.includes(curNode.id)) {
32
- incomingPaths.push(path)
33
- return
34
- }
35
-
36
- // * 路径中当前加入节点
37
- path.unshift(curNode.id)
38
-
39
- if (!curNode.incoming.nodes.length) {
40
- incomingPaths.push(path)
41
- return
42
- }
43
-
44
- // * 往下找
45
- curNode.incoming.nodes.forEach((nextNode) => {
46
- getIncomingPaths(nextNode, path.slice(), curNode)
47
- })
48
- }
49
-
50
- // * 同上逻辑
51
- const getOutgoingPaths = (curNode, path, prevNode?: BaseNodeModel) => {
52
- if (!curNode) return
53
- if (prevNode) {
54
- path.push(
55
- ...lf
56
- .getEdgeModels({
57
- sourceNodeId: prevNode?.id,
58
- targetNodeId: curNode.id,
59
- })
60
- .map((item) => item.id),
61
- )
62
- }
63
- if (path.includes(curNode.id)) {
64
- outgoingPaths.push(path)
65
- return
66
- }
67
-
68
- path.push(curNode.id)
69
-
70
- if (!curNode.outgoing.nodes.length) {
71
- outgoingPaths.push(path)
72
- return
73
- }
74
-
75
- curNode.outgoing.nodes.forEach((nextNode) => {
76
- getOutgoingPaths(nextNode, path.slice(), curNode)
77
- })
78
- }
79
-
80
- getIncomingPaths(node, [])
81
- getOutgoingPaths(node, [])
82
-
83
- return [...new Set([...incomingPaths.flat(), ...outgoingPaths.flat()])]
84
- }
85
-
86
- type IMode = 'single' | 'path' | 'neighbour'
87
-
88
- export class Highlight {
89
- lf: LogicFlow
90
- static pluginName = 'highlight'
91
- mode: IMode = 'path'
92
- enable = true
93
- tempStyles = {}
94
-
95
- constructor({ lf, options }) {
96
- const { mode = 'path', enable = true } = options
97
- this.lf = lf
98
- this.mode = mode
99
- this.enable = enable
100
- }
101
-
102
- public setMode(mode: IMode) {
103
- this.mode = mode
104
- }
105
-
106
- setEnable(enable: boolean) {
107
- this.enable = enable
108
- }
109
-
110
- private highlightSingle(id: string) {
111
- const model = this.lf.getModelById(id)
112
-
113
- if (model?.BaseType === 'node') {
114
- // 高亮节点
115
- model.updateStyles(this.tempStyles[id])
116
- } else if (model?.BaseType === 'edge') {
117
- // 高亮边及对应的节点
118
- model.updateStyles(this.tempStyles[id])
119
- model.sourceNode.updateStyles(this.tempStyles[model.sourceNode.id])
120
- model.targetNode.updateStyles(this.tempStyles[model.targetNode.id])
121
- }
122
- this.lf.emit('highlight:single', {
123
- data: model,
124
- })
125
- }
126
-
127
- private highlightNeighbours(id: string) {
128
- const model = this.lf.getModelById(id)
129
- let relateElements: (BaseNodeModel | BaseEdgeModel)[] = []
130
- if (model?.BaseType === 'node') {
131
- // 高亮节点
132
- model.updateStyles(this.tempStyles[id])
133
- const { nodes: incomingNodes, edges: incomingEdges } = model.incoming
134
- const { nodes: outgoingNodes, edges: outgoingEdges } = model.outgoing
135
- concat(incomingNodes, outgoingNodes).forEach((node) => {
136
- node.updateStyles(this.tempStyles[node.id])
137
- })
138
- concat(incomingEdges, outgoingEdges).forEach((edge) => {
139
- edge.updateStyles(this.tempStyles[edge.id])
140
- })
141
- relateElements = uniqBy(
142
- concat(
143
- relateElements,
144
- incomingNodes,
145
- outgoingNodes,
146
- incomingEdges,
147
- outgoingEdges,
148
- ),
149
- 'id',
150
- )
151
- } else if (model?.BaseType === 'edge') {
152
- // 高亮边及对应的节点
153
- model.updateStyles(this.tempStyles[id])
154
- model.sourceNode.updateStyles(this.tempStyles[model.sourceNode.id])
155
- model.targetNode.updateStyles(this.tempStyles[model.targetNode.id])
156
- relateElements = [model.sourceNode, model.targetNode]
157
- }
158
- this.lf.emit('highlight:neighbours', {
159
- data: model,
160
- relateElements,
161
- })
162
- }
163
-
164
- private highlightPath(id: string) {
165
- const path = getPath(id, this.lf)
166
- const relateElements: any[] = []
167
- path.forEach((_id) => {
168
- const elementModel = this.lf.getModelById(_id)
169
- // 高亮路径上所有的边和节点
170
- elementModel?.updateStyles(this.tempStyles[_id])
171
- relateElements.push(elementModel)
172
- })
173
- this.lf.emit('highlight:path', {
174
- data: this.lf.getModelById(id),
175
- relateElements,
176
- })
177
- }
178
-
179
- highlight(id: string, mode: IMode = this.mode) {
180
- if (!this.enable) return
181
- if (Object.keys(this.tempStyles).length) {
182
- this.restoreHighlight()
183
- }
184
-
185
- Object.values(this.lf.graphModel.modelsMap).forEach((item) => {
186
- // 所有节点样式都进行备份
187
- const oStyle =
188
- item.BaseType === 'node' ? item.getNodeStyle() : item.getEdgeStyle()
189
- this.tempStyles[item.id] = { ...oStyle }
190
-
191
- // 所有节点都设置透明度为0.1
192
- item.setStyles({ opacity: 0.1 })
193
- })
194
-
195
- const modeTrigger = {
196
- single: this.highlightSingle.bind(this),
197
- neighbour: this.highlightNeighbours.bind(this),
198
- path: this.highlightPath.bind(this),
199
- }
200
-
201
- modeTrigger[mode](id)
202
- }
203
-
204
- restoreHighlight() {
205
- // 恢复所有节点的样式
206
- if (!Object.keys(this.tempStyles).length) return
207
- Object.values(this.lf.graphModel.modelsMap).forEach((item) => {
208
- const oStyle = this.tempStyles[item.id] ?? {}
209
- item.updateStyles({ ...oStyle })
210
- })
211
-
212
- this.tempStyles = {}
213
- }
214
-
215
- render() {
216
- this.lf.on('node:mouseenter', ({ data }: any) => this.highlight(data.id))
217
- this.lf.on('edge:mouseenter', ({ data }: any) => this.highlight(data.id))
218
-
219
- this.lf.on('node:mouseleave', this.restoreHighlight.bind(this))
220
- this.lf.on('edge:mouseleave', this.restoreHighlight.bind(this))
221
- this.lf.on('history:change', this.restoreHighlight.bind(this))
222
- }
223
-
224
- destroy() {}
225
- }
226
-
227
- export default Highlight