@logicflow/extension 2.2.0-alpha.5 → 2.2.0-alpha.7
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 +7 -7
- package/CHANGELOG.md +15 -0
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/bpmn-elements-adapter/json2xml.d.ts +2 -1
- package/es/bpmn-elements-adapter/json2xml.js +18 -4
- package/es/bpmn-elements-adapter/xml2json.js +2 -7
- package/es/components/control/index.js +3 -3
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -0
- package/es/materials/curved-edge/index.js +41 -25
- package/es/pool/LaneModel.d.ts +90 -0
- package/es/pool/LaneModel.js +252 -0
- package/es/pool/LaneView.d.ts +40 -0
- package/es/pool/LaneView.js +202 -0
- package/es/pool/PoolModel.d.ts +120 -0
- package/es/pool/PoolModel.js +586 -0
- package/es/pool/PoolView.d.ts +17 -0
- package/es/pool/PoolView.js +76 -0
- package/es/pool/constant.d.ts +15 -0
- package/es/pool/constant.js +17 -0
- package/es/pool/index.d.ts +89 -0
- package/es/pool/index.js +524 -0
- package/es/pool/utils.d.ts +19 -0
- package/es/pool/utils.js +33 -0
- package/lib/bpmn-elements-adapter/json2xml.d.ts +2 -1
- package/lib/bpmn-elements-adapter/json2xml.js +19 -4
- package/lib/bpmn-elements-adapter/xml2json.js +2 -7
- package/lib/components/control/index.js +3 -3
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -0
- package/lib/materials/curved-edge/index.js +41 -25
- package/lib/pool/LaneModel.d.ts +90 -0
- package/lib/pool/LaneModel.js +255 -0
- package/lib/pool/LaneView.d.ts +40 -0
- package/lib/pool/LaneView.js +205 -0
- package/lib/pool/PoolModel.d.ts +120 -0
- package/lib/pool/PoolModel.js +589 -0
- package/lib/pool/PoolView.d.ts +17 -0
- package/lib/pool/PoolView.js +79 -0
- package/lib/pool/constant.d.ts +15 -0
- package/lib/pool/constant.js +20 -0
- package/lib/pool/index.d.ts +89 -0
- package/lib/pool/index.js +527 -0
- package/lib/pool/utils.d.ts +19 -0
- package/lib/pool/utils.js +38 -0
- package/package.json +5 -5
- package/src/bpmn-elements-adapter/json2xml.ts +18 -4
- package/src/bpmn-elements-adapter/xml2json.ts +2 -8
- package/src/components/control/index.ts +3 -3
- package/src/dynamic-group/index.ts +0 -1
- package/src/index.ts +2 -0
- package/src/materials/curved-edge/index.ts +47 -30
- package/src/pool/LaneModel.ts +226 -0
- package/src/pool/LaneView.ts +220 -0
- package/src/pool/PoolModel.ts +631 -0
- package/src/pool/PoolView.ts +75 -0
- package/src/pool/constant.ts +19 -0
- package/src/pool/index.ts +621 -0
- package/src/pool/utils.ts +46 -0
- package/stats.html +1 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 基于DynamicGroup重新实现的泳道节点组件
|
|
3
|
+
* 继承DynamicGroupNodeModel和DynamicGroupNode,提供泳道特定功能
|
|
4
|
+
*/
|
|
5
|
+
import { h } from '@logicflow/core'
|
|
6
|
+
import { DynamicGroupNode } from '../dynamic-group'
|
|
7
|
+
import { laneConfig } from './constant'
|
|
8
|
+
import { LaneModel } from './LaneModel'
|
|
9
|
+
|
|
10
|
+
export class LaneView extends DynamicGroupNode {
|
|
11
|
+
getAppendAreaShape(): h.JSX.Element | null {
|
|
12
|
+
// DONE: 此区域用于初始化 group container, 即元素拖拽进入感应区域
|
|
13
|
+
const { model } = this.props
|
|
14
|
+
const { width, height, x, y, radius, groupAddable } = model
|
|
15
|
+
if (!groupAddable) return null
|
|
16
|
+
|
|
17
|
+
const { strokeWidth = 0 } = model.getNodeStyle()
|
|
18
|
+
const style = model.getAddableOutlineStyle()
|
|
19
|
+
|
|
20
|
+
const newWidth = width + strokeWidth + 8
|
|
21
|
+
const newHeight = height + strokeWidth + 8
|
|
22
|
+
return h('rect', {
|
|
23
|
+
...style,
|
|
24
|
+
width: newWidth,
|
|
25
|
+
height: newHeight,
|
|
26
|
+
x: x - newWidth / 2,
|
|
27
|
+
y: y - newHeight / 2,
|
|
28
|
+
rx: radius,
|
|
29
|
+
ry: radius,
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
getShape() {
|
|
33
|
+
const { model } = this.props
|
|
34
|
+
const {
|
|
35
|
+
x,
|
|
36
|
+
y,
|
|
37
|
+
width,
|
|
38
|
+
height,
|
|
39
|
+
properties: { textStyle: customTextStyle = {}, isHorizontal },
|
|
40
|
+
} = model
|
|
41
|
+
const style = model.getNodeStyle()
|
|
42
|
+
const base = { fill: '#ffffff', stroke: '#000000', strokeWidth: 1 }
|
|
43
|
+
const left = x - width / 2
|
|
44
|
+
const top = y - height / 2
|
|
45
|
+
// 泳道主体
|
|
46
|
+
const rectAttrs = {
|
|
47
|
+
x: x - width / 2,
|
|
48
|
+
y: y - height / 2,
|
|
49
|
+
width,
|
|
50
|
+
height,
|
|
51
|
+
stroke: '#000000',
|
|
52
|
+
strokeWidth: 2,
|
|
53
|
+
fill: 'transparent',
|
|
54
|
+
...style,
|
|
55
|
+
}
|
|
56
|
+
// 操作图标区域
|
|
57
|
+
const icons = this.getOperateIcons()
|
|
58
|
+
const titleRect = {
|
|
59
|
+
...base,
|
|
60
|
+
...style,
|
|
61
|
+
x: isHorizontal ? left + laneConfig.titleSize : left,
|
|
62
|
+
y: isHorizontal ? top : top + laneConfig.titleSize,
|
|
63
|
+
width: isHorizontal ? width - laneConfig.titleSize : width,
|
|
64
|
+
height: isHorizontal ? height : laneConfig.titleSize,
|
|
65
|
+
...(isHorizontal ? customTextStyle : {}),
|
|
66
|
+
}
|
|
67
|
+
return h('g', {}, [
|
|
68
|
+
this.getAppendAreaShape(),
|
|
69
|
+
h('rect', titleRect),
|
|
70
|
+
h('rect', { ...rectAttrs }),
|
|
71
|
+
...icons,
|
|
72
|
+
])
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* 获取操作图标
|
|
77
|
+
*/
|
|
78
|
+
getOperateIcons() {
|
|
79
|
+
const { model } = this.props
|
|
80
|
+
const { isSelected } = model
|
|
81
|
+
if (!isSelected) {
|
|
82
|
+
return []
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const poolModel = (model as LaneModel).getPoolModel()
|
|
86
|
+
if (!poolModel) {
|
|
87
|
+
return []
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const { isHorizontal } = poolModel
|
|
91
|
+
const laneData = model.getData()
|
|
92
|
+
|
|
93
|
+
return [
|
|
94
|
+
this.addBeforeLaneIcon(isHorizontal, () =>
|
|
95
|
+
isHorizontal
|
|
96
|
+
? poolModel.addChildAbove?.(laneData)
|
|
97
|
+
: poolModel.addChildRight?.(laneData),
|
|
98
|
+
),
|
|
99
|
+
this.addAfterLaneIcon(isHorizontal, () =>
|
|
100
|
+
isHorizontal
|
|
101
|
+
? poolModel.addChildBelow?.(laneData)
|
|
102
|
+
: poolModel.addChildLeft?.(laneData),
|
|
103
|
+
),
|
|
104
|
+
this.deleteLaneIcon(() => poolModel.deleteChild?.(laneData.id)),
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
addBeforeLaneIcon(isHorizontal: boolean, callback: () => void) {
|
|
109
|
+
const { x, y, width, height } = this.props.model
|
|
110
|
+
// 图标与泳道之间加固定的间距
|
|
111
|
+
const positionX = x + width / 2 + laneConfig.iconSpacing
|
|
112
|
+
const positionY = y - height / 2
|
|
113
|
+
const baseAttr = {
|
|
114
|
+
width: laneConfig.iconSize / 2,
|
|
115
|
+
height: laneConfig.iconSize,
|
|
116
|
+
strokeWidth: 1,
|
|
117
|
+
fill: '#fff',
|
|
118
|
+
stroke: '#000',
|
|
119
|
+
x: positionX,
|
|
120
|
+
y: positionY,
|
|
121
|
+
}
|
|
122
|
+
let iconView: h.JSX.Element[] = [
|
|
123
|
+
h('rect', {
|
|
124
|
+
...baseAttr,
|
|
125
|
+
x: positionX + laneConfig.iconSize / 2,
|
|
126
|
+
strokeDasharray: '2 2',
|
|
127
|
+
}),
|
|
128
|
+
h('rect', baseAttr),
|
|
129
|
+
]
|
|
130
|
+
if (isHorizontal) {
|
|
131
|
+
iconView = [
|
|
132
|
+
h('rect', {
|
|
133
|
+
...baseAttr,
|
|
134
|
+
width: laneConfig.iconSize,
|
|
135
|
+
height: laneConfig.iconSize / 2,
|
|
136
|
+
strokeDasharray: '2 2',
|
|
137
|
+
}),
|
|
138
|
+
h('rect', {
|
|
139
|
+
...baseAttr,
|
|
140
|
+
width: laneConfig.iconSize,
|
|
141
|
+
height: laneConfig.iconSize / 2,
|
|
142
|
+
y: positionY + laneConfig.iconSize / 2,
|
|
143
|
+
}),
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
return h('g', { cursor: 'pointer', onClick: callback }, iconView)
|
|
147
|
+
}
|
|
148
|
+
addAfterLaneIcon(isHorizontal: boolean, callback: () => void) {
|
|
149
|
+
const { x, y, width, height } = this.props.model
|
|
150
|
+
const positionX = x + width / 2 + laneConfig.iconSpacing
|
|
151
|
+
const positionY =
|
|
152
|
+
y - height / 2 + laneConfig.iconSize + laneConfig.iconSpacing
|
|
153
|
+
const baseAttr = {
|
|
154
|
+
width: laneConfig.iconSize / 2,
|
|
155
|
+
height: laneConfig.iconSize,
|
|
156
|
+
strokeWidth: 1,
|
|
157
|
+
fill: '#fff',
|
|
158
|
+
stroke: '#000',
|
|
159
|
+
x: positionX,
|
|
160
|
+
y: positionY,
|
|
161
|
+
}
|
|
162
|
+
let iconView: h.JSX.Element[] = [
|
|
163
|
+
h('rect', {
|
|
164
|
+
...baseAttr,
|
|
165
|
+
x: positionX + laneConfig.iconSize / 2,
|
|
166
|
+
}),
|
|
167
|
+
h('rect', {
|
|
168
|
+
...baseAttr,
|
|
169
|
+
strokeDasharray: '2 2',
|
|
170
|
+
}),
|
|
171
|
+
]
|
|
172
|
+
if (isHorizontal) {
|
|
173
|
+
iconView = [
|
|
174
|
+
h('rect', {
|
|
175
|
+
...baseAttr,
|
|
176
|
+
width: laneConfig.iconSize,
|
|
177
|
+
height: laneConfig.iconSize / 2,
|
|
178
|
+
}),
|
|
179
|
+
h('rect', {
|
|
180
|
+
...baseAttr,
|
|
181
|
+
width: laneConfig.iconSize,
|
|
182
|
+
height: laneConfig.iconSize / 2,
|
|
183
|
+
y: positionY + laneConfig.iconSize / 2,
|
|
184
|
+
strokeDasharray: '2 2',
|
|
185
|
+
}),
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
return h('g', { cursor: 'pointer', onClick: callback }, iconView)
|
|
189
|
+
}
|
|
190
|
+
deleteLaneIcon(callback: () => void) {
|
|
191
|
+
const { x, y, width, height } = this.props.model
|
|
192
|
+
const positionX = x + width / 2 + laneConfig.iconSpacing
|
|
193
|
+
const positionY =
|
|
194
|
+
y - height / 2 + (laneConfig.iconSize + laneConfig.iconSpacing) * 3
|
|
195
|
+
return h(
|
|
196
|
+
'g',
|
|
197
|
+
{
|
|
198
|
+
cursor: 'pointer',
|
|
199
|
+
onClick: callback,
|
|
200
|
+
width: laneConfig.iconSize,
|
|
201
|
+
height: laneConfig.iconSize,
|
|
202
|
+
transform: `translate(${positionX}, ${positionY})`,
|
|
203
|
+
},
|
|
204
|
+
[
|
|
205
|
+
h('rect', {
|
|
206
|
+
width: laneConfig.iconSize,
|
|
207
|
+
height: laneConfig.iconSize,
|
|
208
|
+
fill: 'transparent',
|
|
209
|
+
}),
|
|
210
|
+
h('path', {
|
|
211
|
+
transform: `translate(2, 1) scale(${laneConfig.iconSize / 18})`,
|
|
212
|
+
fill: '#000',
|
|
213
|
+
d: 'M1.6361705,0.07275847000000002L1.6362224,0.07267305000000002L5.1435161,2.2034403L6.3516493,1.28341734Q7.2009554,0.63665058,8.0902505,1.22722644L10.1215935,2.5762291Q11.006711,3.1640306,10.745867,4.1940317L10.4062386,5.5351257L13.625054,7.5778356L13.625001,7.5779204Q13.678322,7.6117587,13.721552,7.6577945Q13.764784,7.7038307,13.795207,7.7591715Q13.82563,7.8145118,13.841336,7.87568Q13.857041,7.9368477,13.857041,8Q13.85704,8.0492353,13.847435,8.0975251Q13.83783,8.145814900000001,13.818987,8.191302799999999Q13.800144,8.2367907,13.772791,8.2777286Q13.745438,8.318666499999999,13.710623,8.3534818Q13.675808,8.3882966,13.63487,8.4156504Q13.593931,8.4430046,13.548444,8.461846399999999Q13.502956,8.4806881,13.454666,8.4902935Q13.406377,8.4998994,13.357141,8.499899899999999Q13.211908,8.499899899999999,13.089283,8.4220805L13.08923,8.4221654L4.9074116,3.229857L1.1170242400000001,0.92732695L1.1170761599999999,0.92724147Q1.06204063,0.8938076500000001,1.0172748,0.84751782Q0.97250897,0.80122799,0.9409355500000001,0.74510445Q0.9093622,0.68898091,0.89304277,0.626688Q0.87672335,0.564395107,0.87672332,0.5Q0.8767232899999999,0.450764146,0.88632876,0.402474351Q0.8959341599999999,0.35418455,0.91477591,0.30869657Q0.93361765,0.26320857,0.9609716500000001,0.22227046Q0.9883256,0.18133234999999998,1.02314061,0.14651734Q1.05795562,0.11170232000000002,1.0988937,0.08434838Q1.13983184,0.056994409999999995,1.18531984,0.038152660000000005Q1.2308077800000001,0.019310890000000025,1.27909762,0.009705450000000004Q1.32738745,0.00010001999999997846,1.3766233300000001,0.00009998999999999425Q1.516567,0.00009998999999999425,1.6361705,0.07275847000000002ZM9.5175018,4.9711194L9.7764683,3.9485345Q9.8634167,3.6052005,9.5683784,3.4092672L7.537035,2.0602646Q7.240603,1.8634058,6.9575009,2.0789949L6.0496349,2.7703574L9.5175018,4.9711194ZM11.227273,14.5L11.227273,9.7307692L11.227173,9.7307692Q11.227173,9.6815329,11.217567,9.6332426Q11.207962,9.5849533,11.189119,9.539465Q11.170278,9.4939766,11.142924,9.4530392Q11.11557,9.4121017,11.080755,9.3772869Q11.04594,9.3424721,11.005002,9.3151178Q10.964064,9.2877636,10.918575,9.2689209Q10.873087,9.2500801,10.824797,9.2404747Q10.776508,9.2308693,10.727273,9.2308693Q10.678036,9.2308693,10.629745,9.2404747Q10.581455,9.2500801,10.535968,9.2689209Q10.4904804,9.2877636,10.449542,9.3151178Q10.4086046,9.3424721,10.3737898,9.377286Q10.338975,9.4121008,10.3116207,9.4530382Q10.2842674,9.4939766,10.2654257,9.539465Q10.2465839,9.5849533,10.2369785,9.6332426Q10.2273731,9.6815329,10.2273731,9.7307692L10.2272739,9.7307692L10.2272739,14.5Q10.2272739,15,9.727273,15L7.7207794,15L7.7207789,8.2500091L7.7206788,8.2500091Q7.7206783,8.2007728,7.7110729,8.152483Q7.7014675,8.104193200000001,7.6826253,8.0587053Q7.6637836,8.013217000000001,7.6364298,7.9722791Q7.6090755,7.9313412,7.5742612,7.8965263Q7.5394459,7.861711,7.4985075,7.8343568Q7.4575696,7.807003,7.4120817,7.7881613Q7.3665934,7.7693195,7.3183041,7.7597141Q7.2700143,7.7501092,7.2207789,7.7501092Q7.1715426,7.7501092,7.1232524,7.7597141Q7.0749626,7.7693195,7.0294747,7.7881613Q6.9839869,7.807003,6.943049,7.8343573Q6.9021111,7.861711,6.8672962,7.8965263Q6.8324809,7.9313412,6.8051271,7.9722791Q6.7777729,8.013217000000001,6.7589312,8.0587053Q6.7400894,8.1041937,6.7304845,8.1524839Q6.7208786,8.2007732,6.7208791,8.2500095L6.7207789,8.2500091L6.7207794,15L4.2142854,15L4.2142854,6.2692308L4.2141855,6.2692308Q4.2141852,6.2199945,4.204579799999999,6.1717048Q4.1949743999999995,6.123415,4.1761324,6.0779266Q4.1572905,6.0324383,4.1299367,5.9915004Q4.1025827,5.9505625,4.0677679,5.9157476Q4.0329528,5.8809328,3.9920146,5.8535786Q3.9510765,5.8262248,3.9055884,5.8073831Q3.8601003,5.7885418,3.811811,5.7789364Q3.7635212,5.769331,3.7142854,5.769331Q3.6650493,5.769331,3.6167595,5.7789364Q3.5684695,5.7885418,3.5229816,5.8073831Q3.4774938,5.8262248,3.4365554,5.8535786Q3.3956175,5.8809328,3.3608027,5.9157476Q3.3259873,5.9505625,3.2986333,5.9915004Q3.2712793,6.0324383,3.2524376,6.0779266Q3.2335958,6.123415,3.2239904,6.1717048Q3.214385,6.2199945,3.2143853,6.2692308L3.2142854,6.2692308L3.2142854,15L1.5000002,15Q1.0000001200000002,15,1.0000001200000002,14.5L1,5.4150848Q1,5.0384622,1.3766233300000001,5.0384622L1.3766233300000001,5.0383615Q1.42585915,5.0383615,1.47414887,5.0287557Q1.5224386,5.0191503,1.5679266,5.0003085Q1.6134146,4.9814663,1.6543528,4.954113Q1.695291,4.9267588,1.730106,4.8919439Q1.7649209,4.8571291,1.792275,4.8161907Q1.8196288,4.7752523,1.8384706,4.7297645Q1.8573124,4.6842766,1.8669178,4.6359868Q1.8765233,4.587697,1.8765234,4.5384617Q1.8765233,4.4892254000000005,1.8669178,4.4409355999999995Q1.8573124,4.3926458,1.8384707,4.3471577Q1.819629,4.3016696,1.792275,4.2607315Q1.7649209,4.2197936,1.730106,4.1849787Q1.695291,4.1501637,1.6543529,4.1228096Q1.6134148,4.0954556,1.5679268,4.0766139Q1.5224388,4.0577724,1.4741489300000001,4.048166999999999Q1.42585915,4.0385615999999995,1.3766233300000001,4.0385615999999995L1.3766233300000001,4.0384617Q0.8064074800000001,4.0384617,0.403203636,4.4416654Q0,4.8448691,0,5.4150848L9.000000000813912e-8,14.5Q2.9999999984209325e-8,15.121321,0.439339694,15.56066Q0.8786805,16.000002000000002,1.5000002,16.000002000000002L9.727273,16.000002000000002Q10.3485928,16.000002000000002,10.787933,15.56066Q11.227273,15.121321,11.227273,14.5Z',
|
|
214
|
+
}),
|
|
215
|
+
],
|
|
216
|
+
)
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export default null
|