@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,206 +0,0 @@
1
- export enum ModelType {
2
- NODE = 'node',
3
- CIRCLE_NODE = 'circle-node',
4
- POLYGON_NODE = 'polygon-node',
5
- RECT_NODE = 'rect-node',
6
- HTML_NODE = 'html-node',
7
- TEXT_NODE = 'text-node',
8
- ELLIPSE_NODE = 'ellipse-node',
9
- DIAMOND_NODE = 'diamond-node',
10
- EDGE = 'edge',
11
- LINE_EDGE = 'line-edge',
12
- POLYLINE_EDGE = 'polyline-edge',
13
- BEZIER_EDGE = 'bezier-edge',
14
- GRAPH = 'graph',
15
- }
16
-
17
- // 计算节点的box四角数据
18
- function getNodeBox(node) {
19
- const { x, y, width, height } = node
20
- return {
21
- minX: x - width / 2,
22
- minY: y - height / 2,
23
- maxX: x + width / 2,
24
- maxY: y + height / 2,
25
- }
26
- }
27
-
28
- // 计算矩形radius设置后,四个圆角的圆心
29
- function getRadiusCenter(node) {
30
- const nodeBox = getNodeBox(node)
31
- const { radius } = node
32
- const { minX, minY, maxX, maxY } = nodeBox
33
- return [
34
- {
35
- x: minX + radius,
36
- y: minY + radius,
37
- },
38
- {
39
- x: maxX - radius,
40
- y: minY + radius,
41
- },
42
- {
43
- x: maxX - radius,
44
- y: maxY - radius,
45
- },
46
- {
47
- x: minX + radius,
48
- y: maxY - radius,
49
- },
50
- ]
51
- }
52
-
53
- // 获取矩形resize之后,与矩形连接边的新端点
54
- export function getRectResizeEdgePoint({ point, beforeNode, afterNode }) {
55
- const { x, y } = point
56
- const afterPoint = {
57
- x,
58
- y,
59
- }
60
- const { radius } = beforeNode
61
- const beforeNodeBox = getNodeBox(beforeNode)
62
- const afterNodeBox = getNodeBox(afterNode)
63
- if (x === beforeNodeBox.minX) {
64
- // 左边
65
- afterPoint.x = afterNodeBox.minX
66
- const pct = (y - beforeNode.y) / (beforeNode.height / 2 - radius)
67
- if (pct) {
68
- afterPoint.y = afterNode.y + (afterNode.height / 2 - radius) * pct
69
- } else {
70
- afterPoint.y = afterNode.y
71
- }
72
- } else if (x === beforeNodeBox.maxX) {
73
- // 右边
74
- afterPoint.x = afterNodeBox.maxX
75
- const pct = (y - beforeNode.y) / (beforeNode.height / 2 - radius)
76
- if (pct) {
77
- afterPoint.y = afterNode.y + (afterNode.height / 2 - radius) * pct
78
- } else {
79
- afterPoint.y = afterNode.y
80
- }
81
- } else if (y === beforeNodeBox.minY) {
82
- // 上边
83
- afterPoint.y = afterNodeBox.minY
84
- const pct = (x - beforeNode.x) / (beforeNode.width / 2 - radius)
85
- if (pct) {
86
- afterPoint.x = afterNode.x + (afterNode.width / 2 - radius) * pct
87
- } else {
88
- afterPoint.x = afterNode.x
89
- }
90
- } else if (y === beforeNodeBox.maxY) {
91
- // 下边
92
- afterPoint.y = afterNodeBox.maxY
93
- const pct = (x - beforeNode.x) / (beforeNode.width / 2 - radius)
94
- if (pct) {
95
- afterPoint.x = afterNode.x + (afterNode.width / 2 - radius) * pct
96
- } else {
97
- afterPoint.x = afterNode.x
98
- }
99
- } else {
100
- // 在圆角部分
101
- const beforeCoc = getRadiusCenter(beforeNode)
102
- const afterCoc = getRadiusCenter(afterNode)
103
- const nodeBox = getNodeBox(beforeNode)
104
- const { minX, minY, maxX, maxY } = nodeBox
105
- let index = -1
106
- if (x - minX < radius && y - minY < radius) {
107
- // 左上角
108
- index = 0
109
- } else if (maxX - x < radius && y - minY < radius) {
110
- // 右上角
111
- index = 1
112
- } else if (maxX - x < radius && maxY - y < radius) {
113
- // 右下角
114
- index = 2
115
- } else if (x - minX < radius && minY - y < radius) {
116
- // 左下角
117
- index = 3
118
- }
119
- if (index > -1) {
120
- // 根据夹角角度计算位置
121
- const angle = Math.atan2(y - beforeCoc[index].y, x - beforeCoc[index].x)
122
- afterPoint.x = afterCoc[index].x + radius * Math.cos(angle)
123
- afterPoint.y = afterCoc[index].y + radius * Math.sin(angle)
124
- }
125
- }
126
- return afterPoint
127
- }
128
-
129
- // 获取椭圆resize之后,与椭圆连接边的新端点
130
- export function getEllipseResizeEdgePoint({ point, beforeNode, afterNode }) {
131
- const { rx, ry } = afterNode
132
- let afterPoint = point
133
- // 将椭圆中心当做中心点(0,0),放大缩小前点与X周夹角
134
- const tan = (point.y - beforeNode.y) / (point.x - beforeNode.x)
135
- // 方便与公式对照,将rx命名为a,ry命名为b
136
- const a = rx
137
- const b = ry
138
- let x
139
- let y
140
- // 将椭圆中心当做中心点(0,0),计算放大缩小后,同一夹角下,点相对位置
141
- if (tan >= Infinity) {
142
- // θ = PI / 2
143
- x = 0
144
- y = b
145
- } else if (tan <= -Infinity) {
146
- // θ = 3 * PI / 2
147
- x = 0
148
- y = -b
149
- } else if (point.x - beforeNode.x > 0) {
150
- // 0 < θ = PI / 2 或者 3 * PI / 2 < θ = 2 * PI
151
- // 一四象限
152
- x = (a * b) / Math.sqrt(b * b + a * a * tan * tan)
153
- y = (a * b * tan) / Math.sqrt(b * b + a * a * tan * tan)
154
- } else {
155
- // PI / 2 < θ 3 * PI / 2
156
- // 二三象限
157
- x = -(a * b) / Math.sqrt(b * b + a * a * tan * tan)
158
- y = -(a * b * tan) / Math.sqrt(b * b + a * a * tan * tan)
159
- }
160
- afterPoint = {
161
- x: x + afterNode.x,
162
- y: y + afterNode.y,
163
- }
164
- return afterPoint
165
- }
166
-
167
- // 获取菱形resize之后,与菱形连接边的新端点
168
- export function getDiamondResizeEdgePoint({ point, beforeNode, afterNode }) {
169
- let afterPoint = point
170
- let x
171
- let y
172
- const px = point.x - beforeNode.x
173
- const py = point.y - beforeNode.y
174
- const rxBefore = beforeNode.rx
175
- const ryBefore = beforeNode.ry
176
- // eslint-disable-next-line max-len
177
- const pct =
178
- Math.sqrt((rxBefore - Math.abs(px)) * (rxBefore - Math.abs(px)) + py * py) /
179
- Math.sqrt(rxBefore * rxBefore + ryBefore * ryBefore)
180
- const rxAfter = afterNode.rx
181
- const ryAfter = afterNode.ry
182
- // eslint-disable-next-line max-len
183
- const a = Math.sqrt(
184
- (rxAfter * rxAfter + ryAfter * ryAfter) *
185
- pct *
186
- pct *
187
- ((rxAfter * rxAfter) / (rxAfter * rxAfter + ryAfter * ryAfter)),
188
- )
189
- const b = a * (ryAfter / rxAfter)
190
- if (px >= 0) {
191
- // eslint-disable-next-line max-len
192
- x = rxAfter - a
193
- } else {
194
- x = a - rxAfter
195
- }
196
- if (py > 0) {
197
- y = b
198
- } else {
199
- y = -b
200
- }
201
- afterPoint = {
202
- x: x + afterNode.x,
203
- y: y + afterNode.y,
204
- }
205
- return afterPoint
206
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * @deprecated
3
- * 待废弃,2.0 版本将 NodeResize 能力内置,该插件设计和实现有比较多的问题,后续不再维护,请及时切换
4
- */
5
- import LogicFlow from '@logicflow/core'
6
-
7
- import EllipseResize from './node/EllipseResize'
8
- import DiamondResize from './node/DiamondResize'
9
- import HtmlResize from './node/HtmlResize'
10
- import RectResize from './node/RectResize'
11
-
12
- export * from './node'
13
- export const NodeResize = {
14
- pluginName: 'nodeResize',
15
- // 拖动step
16
- step: 0,
17
-
18
- install(lf: LogicFlow) {
19
- lf.register(EllipseResize)
20
- lf.register(DiamondResize)
21
- lf.register(HtmlResize)
22
- lf.register(RectResize)
23
- },
24
- }
25
-
26
- export default NodeResize
@@ -1,149 +0,0 @@
1
- import LogicFlow, {
2
- Polygon,
3
- GraphModel,
4
- DiamondNode,
5
- DiamondNodeModel,
6
- } from '@logicflow/core'
7
- import { PCTResizeParams } from './RectResize'
8
- import ControlGroup from '../control/ControlGroup'
9
-
10
- import NodeConfig = LogicFlow.NodeConfig
11
-
12
- export type ResizeDiamondNodeConfig = NodeConfig & {
13
- properties: {
14
- nodeSize: {
15
- rx: number
16
- ry: number
17
- }
18
- } & Record<string, unknown>
19
- }
20
-
21
- export class DiamondResizeModel extends DiamondNodeModel {
22
- PCTResizeInfo?: PCTResizeParams
23
- minWidth!: number
24
- minHeight!: number
25
- maxWidth!: number
26
- maxHeight!: number
27
-
28
- constructor(data: ResizeDiamondNodeConfig, graphModel: GraphModel) {
29
- super(data, graphModel)
30
- const { nodeSize } = data.properties
31
- if (nodeSize) {
32
- this.rx = nodeSize.rx
33
- this.ry = nodeSize.ry
34
- }
35
- }
36
-
37
- initNodeData(data: any): void {
38
- super.initNodeData(data)
39
- this.minWidth = 30
40
- this.minHeight = 30
41
- this.maxWidth = 2000
42
- this.maxHeight = 2000
43
- this.gridSize = 1
44
- }
45
-
46
- getOutlineStyle() {
47
- const style = super.getOutlineStyle()
48
- const {
49
- editConfigModel: { isSilentMode },
50
- } = this.graphModel
51
- if (isSilentMode) return style
52
- style.stroke = 'none'
53
- if (style.hover) {
54
- style.hover.stroke = 'none'
55
- }
56
- return style
57
- }
58
-
59
- getResizeOutlineStyle() {
60
- return {
61
- fill: 'none',
62
- stroke: 'transparent',
63
- strokeWidth: 1,
64
- strokeDasharray: '3,3',
65
- }
66
- }
67
-
68
- getControlPointStyle() {
69
- return {
70
- width: 7,
71
- height: 7,
72
- fill: '#FFFFFF',
73
- stroke: '#000000',
74
- }
75
- }
76
-
77
- // 该方法需要在重设宽高和最大、最小限制后被调用,不建议在 initNodeData() 方法中使用
78
- enableProportionResize(turnOn = true) {
79
- if (turnOn) {
80
- const ResizePCT = {
81
- widthPCT: 100,
82
- heightPCT: 100,
83
- }
84
- const ResizeBasis = {
85
- basisWidth: this.rx,
86
- basisHeight: this.ry,
87
- }
88
- const ScaleLimit = {
89
- maxScaleLimit: Math.min(
90
- (this.maxWidth / (this.rx * 2)) * 100,
91
- (this.maxHeight / (this.ry * 2)) * 100,
92
- ),
93
- minScaleLimit: Math.max(
94
- (this.minWidth / (this.rx * 2)) * 100,
95
- (this.minHeight / (this.ry * 2)) * 100,
96
- ),
97
- }
98
- this.PCTResizeInfo = {
99
- ResizePCT,
100
- ResizeBasis,
101
- ScaleLimit,
102
- }
103
- } else {
104
- delete this.PCTResizeInfo
105
- }
106
- }
107
- }
108
-
109
- export class DiamondResizeView extends DiamondNode {
110
- getControlGroup() {
111
- const { model, graphModel } = this.props
112
- return <ControlGroup model={model} graphModel={graphModel} />
113
- }
114
-
115
- // getResizeShape绘制图形,功能等同于基础菱形的getShape功能,可以通过复写此方法,进行节点自定义
116
- getResizeShape() {
117
- const { model } = this.props
118
- const { points } = model
119
- const style = model.getNodeStyle()
120
- return (
121
- <g>
122
- <Polygon {...style} points={points} />
123
- </g>
124
- )
125
- }
126
-
127
- getShape() {
128
- const {
129
- model: { isSelected },
130
- graphModel: {
131
- editConfigModel: { isSilentMode },
132
- },
133
- } = this.props
134
- return (
135
- <g>
136
- {this.getResizeShape()}
137
- {isSelected && !isSilentMode ? this.getControlGroup() : ''}
138
- </g>
139
- )
140
- }
141
- }
142
-
143
- export const DiamondResize = {
144
- type: 'diamond',
145
- view: DiamondResizeView,
146
- model: DiamondResizeModel,
147
- }
148
-
149
- export default DiamondResize
@@ -1,140 +0,0 @@
1
- import LogicFlow, {
2
- GraphModel,
3
- EllipseNode,
4
- EllipseNodeModel,
5
- } from '@logicflow/core'
6
- import { PCTResizeParams } from './RectResize'
7
- import ControlGroup from '../control/ControlGroup'
8
-
9
- import NodeConfig = LogicFlow.NodeConfig
10
-
11
- export type ResizeEllipseNodeConfig = NodeConfig & {
12
- properties: {
13
- nodeSize: {
14
- rx: number
15
- ry: number
16
- }
17
- } & Record<string, unknown>
18
- }
19
-
20
- export class EllipseResizeModel extends EllipseNodeModel {
21
- PCTResizeInfo?: PCTResizeParams
22
- minWidth!: number
23
- minHeight!: number
24
- maxWidth!: number
25
- maxHeight!: number
26
-
27
- constructor(data: ResizeEllipseNodeConfig, graphModel: GraphModel) {
28
- super(data, graphModel)
29
- const { nodeSize } = data.properties
30
- if (nodeSize) {
31
- this.rx = nodeSize.rx
32
- this.ry = nodeSize.ry
33
- }
34
- }
35
-
36
- initNodeData(data: any): void {
37
- super.initNodeData(data)
38
- this.minWidth = 30
39
- this.minHeight = 30
40
- this.maxWidth = 2000
41
- this.maxHeight = 2000
42
- }
43
-
44
- getOutlineStyle() {
45
- const style = super.getOutlineStyle()
46
- const {
47
- editConfigModel: { isSilentMode },
48
- } = this.graphModel
49
- if (isSilentMode) return style
50
- style.stroke = 'none'
51
- if (style.hover) {
52
- style.hover.stroke = 'none'
53
- }
54
- return style
55
- }
56
-
57
- getResizeOutlineStyle() {
58
- return {
59
- fill: 'none',
60
- stroke: 'transparent',
61
- strokeWidth: 1,
62
- strokeDasharray: '3,3',
63
- }
64
- }
65
-
66
- getControlPointStyle() {
67
- return {
68
- width: 7,
69
- height: 7,
70
- fill: '#FFFFFF',
71
- stroke: '#000000',
72
- }
73
- }
74
-
75
- // 该方法需要在重设宽高和最大、最小限制后被调用,不建议在 initNodeData() 方法中使用
76
- enableProportionResize(turnOn = true) {
77
- if (turnOn) {
78
- const ResizePCT = {
79
- widthPCT: 100,
80
- heightPCT: 100,
81
- }
82
- const ResizeBasis = {
83
- basisWidth: this.rx,
84
- basisHeight: this.ry,
85
- }
86
- const ScaleLimit = {
87
- maxScaleLimit: Math.min(
88
- (this.maxWidth / (this.rx * 2)) * 100,
89
- (this.maxHeight / (this.ry * 2)) * 100,
90
- ),
91
- minScaleLimit: Math.max(
92
- (this.minWidth / (this.rx * 2)) * 100,
93
- (this.minHeight / (this.ry * 2)) * 100,
94
- ),
95
- }
96
- this.PCTResizeInfo = {
97
- ResizePCT,
98
- ResizeBasis,
99
- ScaleLimit,
100
- }
101
- } else {
102
- delete this.PCTResizeInfo
103
- }
104
- }
105
- }
106
-
107
- export class EllipseResizeView extends EllipseNode {
108
- getControlGroup() {
109
- const { model, graphModel } = this.props
110
- return <ControlGroup model={model} graphModel={graphModel} />
111
- }
112
-
113
- // getResizeShape绘制图形,功能等同于基础椭圆的getShape功能,可以通过复写此方法,进行节点自定义
114
- getResizeShape() {
115
- return super.getShape()
116
- }
117
-
118
- getShape() {
119
- const {
120
- model,
121
- graphModel: {
122
- editConfigModel: { isSilentMode },
123
- },
124
- } = this.props
125
- return (
126
- <g>
127
- {this.getResizeShape()}
128
- {model.isSelected && !isSilentMode ? this.getControlGroup() : ''}
129
- </g>
130
- )
131
- }
132
- }
133
-
134
- export const EllipseResize = {
135
- type: 'ellipse',
136
- view: EllipseResizeView,
137
- model: EllipseResizeModel,
138
- }
139
-
140
- export default EllipseResize
@@ -1,125 +0,0 @@
1
- import { GraphModel, HtmlNode, HtmlNodeModel } from '@logicflow/core'
2
- import { PCTResizeParams, ResizeNodeConfig } from './RectResize'
3
- import ControlGroup from '../control/ControlGroup'
4
-
5
- export class HtmlResizeModel extends HtmlNodeModel {
6
- PCTResizeInfo?: PCTResizeParams
7
- minWidth!: number
8
- minHeight!: number
9
- maxWidth!: number
10
- maxHeight!: number
11
-
12
- constructor(data: ResizeNodeConfig, graphModel: GraphModel) {
13
- super(data, graphModel)
14
- const { nodeSize } = data.properties
15
- if (nodeSize) {
16
- this.width = nodeSize.width
17
- this.height = nodeSize.height
18
- }
19
- }
20
-
21
- initNodeData(data: any): void {
22
- super.initNodeData(data)
23
- this.minWidth = 30
24
- this.minHeight = 30
25
- this.maxWidth = 2000
26
- this.maxHeight = 2000
27
- }
28
-
29
- getOutlineStyle() {
30
- const style = super.getOutlineStyle()
31
- const {
32
- editConfigModel: { isSilentMode },
33
- } = this.graphModel
34
- if (isSilentMode) return style
35
- style.stroke = 'none'
36
- if (style.hover) {
37
- style.hover.stroke = 'none'
38
- }
39
- return style
40
- }
41
-
42
- getResizeOutlineStyle() {
43
- return {
44
- fill: 'none',
45
- stroke: 'transparent',
46
- strokeWidth: 1,
47
- strokeDasharray: '3,3',
48
- }
49
- }
50
-
51
- getControlPointStyle() {
52
- return {
53
- width: 7,
54
- height: 7,
55
- fill: '#FFFFFF',
56
- stroke: '#000000',
57
- }
58
- }
59
-
60
- // 该方法需要在重设宽高和最大、最小限制后被调用,不建议在 initNodeData() 方法中使用
61
- enableProportionResize(turnOn = true) {
62
- if (turnOn) {
63
- const ResizePCT = {
64
- widthPCT: 100,
65
- heightPCT: 100,
66
- }
67
- const ResizeBasis = {
68
- basisWidth: this.width,
69
- basisHeight: this.height,
70
- }
71
- const ScaleLimit = {
72
- maxScaleLimit: Math.min(
73
- (this.maxWidth / this.width) * 100,
74
- (this.maxHeight / this.height) * 100,
75
- ),
76
- minScaleLimit: Math.max(
77
- (this.minWidth / this.width) * 100,
78
- (this.minHeight / this.height) * 100,
79
- ),
80
- }
81
- this.PCTResizeInfo = {
82
- ResizePCT,
83
- ResizeBasis,
84
- ScaleLimit,
85
- }
86
- } else {
87
- delete this.PCTResizeInfo
88
- }
89
- }
90
- }
91
-
92
- export class HtmlResizeView extends HtmlNode {
93
- getControlGroup() {
94
- const { model, graphModel } = this.props
95
- return <ControlGroup model={model} graphModel={graphModel} />
96
- }
97
-
98
- // getResizeShape绘制图形,功能等同于基础矩形的getShape功能,可以通过复写此方法,进行节点自定义
99
- getResizeShape() {
100
- return super.getShape()
101
- }
102
-
103
- getShape() {
104
- const {
105
- model: { isSelected },
106
- graphModel: {
107
- editConfigModel: { isSilentMode },
108
- },
109
- } = this.props
110
- return (
111
- <g>
112
- {this.getResizeShape()}
113
- {isSelected && !isSilentMode ? this.getControlGroup() : ''}
114
- </g>
115
- )
116
- }
117
- }
118
-
119
- export const HtmlResize = {
120
- type: 'html',
121
- view: HtmlResizeView,
122
- model: HtmlResizeModel,
123
- }
124
-
125
- export default HtmlResize