aldehyde 0.2.473 → 0.2.474
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/lib/controls/entry-control.js +2 -2
- package/lib/controls/entry-control.js.map +1 -1
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +12 -12
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js.map +1 -1
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
- package/lib/draw-canvas/edit/components/asset-bar/index.d.ts +5 -0
- package/lib/draw-canvas/edit/components/asset-bar/index.d.ts.map +1 -0
- package/lib/draw-canvas/edit/components/asset-bar/index.js +78 -0
- package/lib/draw-canvas/edit/components/asset-bar/index.js.map +1 -0
- package/lib/draw-canvas/edit/components/asset-bar/index.less +36 -0
- package/lib/draw-canvas/edit/components/main-header/index.d.ts +14 -0
- package/lib/draw-canvas/edit/components/main-header/index.d.ts.map +1 -0
- package/lib/draw-canvas/edit/components/main-header/index.js +163 -0
- package/lib/draw-canvas/edit/components/main-header/index.js.map +1 -0
- package/lib/draw-canvas/edit/components/main-header/index.less +21 -0
- package/lib/draw-canvas/edit/components/render/index.d.ts +86 -0
- package/lib/draw-canvas/edit/components/render/index.d.ts.map +1 -0
- package/lib/draw-canvas/edit/components/render/index.js +686 -0
- package/lib/draw-canvas/edit/components/render/index.js.map +1 -0
- package/lib/draw-canvas/edit/components/render/types.d.ts +243 -0
- package/lib/draw-canvas/edit/components/render/types.d.ts.map +1 -0
- package/lib/draw-canvas/edit/components/render/types.js +66 -0
- package/lib/draw-canvas/edit/components/render/types.js.map +1 -0
- package/lib/draw-canvas/edit/components/setting-form/index.d.ts +19 -0
- package/lib/draw-canvas/edit/components/setting-form/index.d.ts.map +1 -0
- package/lib/draw-canvas/edit/components/setting-form/index.js +164 -0
- package/lib/draw-canvas/edit/components/setting-form/index.js.map +1 -0
- package/lib/draw-canvas/edit/index.d.ts +5 -0
- package/lib/draw-canvas/edit/index.d.ts.map +1 -0
- package/lib/draw-canvas/edit/index.js +112 -0
- package/lib/draw-canvas/edit/index.js.map +1 -0
- package/lib/draw-canvas/edit/index.less +34 -0
- package/lib/form/form-Item-group.d.ts.map +1 -1
- package/lib/form/form-Item-group.js +1 -1
- package/lib/form/form-Item-group.js.map +1 -1
- package/lib/icon/local-aliIcon/iconfont.js +5 -5
- package/lib/icon/local-aliIcon/iconfont.js.map +1 -1
- package/lib/table/relation-table.d.ts +4 -0
- package/lib/table/relation-table.d.ts.map +1 -1
- package/lib/tmpl/hcservice-v3.d.ts +1 -0
- package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
- package/lib/tmpl/hcservice-v3.js +27 -0
- package/lib/tmpl/hcservice-v3.js.map +1 -1
- package/lib/tmpl/interface.d.ts +4 -0
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/tmpl/interface.js.map +1 -1
- package/lib/units/index.d.ts +1 -0
- package/lib/units/index.d.ts.map +1 -1
- package/lib/units/index.js +16 -0
- package/lib/units/index.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/entry-control.tsx +2 -2
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +1 -1
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
- package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.less +36 -0
- package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.tsx +93 -0
- package/src/aldehyde/draw-canvas/edit/components/main-header/index.less +21 -0
- package/src/aldehyde/draw-canvas/edit/components/main-header/index.tsx +187 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/bg-draw.ts +98 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/contextmenu-draw.ts +307 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/graph-draw.ts +251 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/index.ts +7 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/link-draw.ts +1416 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/preview-draw.ts +257 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/ref-line-draw.ts +72 -0
- package/src/aldehyde/draw-canvas/edit/components/render/draws/ruler-draw.ts +167 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/base-graph.ts +241 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/bezier.ts +542 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/circle.ts +700 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/curve.ts +501 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/index.ts +6 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/line.ts +494 -0
- package/src/aldehyde/draw-canvas/edit/components/render/graphs/rect.ts +681 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-handlers.ts +69 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-outside-handlers.ts +162 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/graph-handlers.ts +108 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/index.ts +9 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/key-move-handlers.ts +50 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/link-handlers.ts +46 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/selection-handlers.ts +385 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/shutcut-handlers.ts +46 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/text-handlers.ts +82 -0
- package/src/aldehyde/draw-canvas/edit/components/render/handlers/zoom-handlers.ts +60 -0
- package/src/aldehyde/draw-canvas/edit/components/render/index.ts +768 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/align-tool.ts +91 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/asset-tool.ts +142 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/attract-tool.ts +440 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/copy-tool.ts +269 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/import-export-tool.ts +603 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/index.ts +9 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/link-tool.ts +225 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/position-tool.ts +212 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/selection-tool.ts +132 -0
- package/src/aldehyde/draw-canvas/edit/components/render/tools/z-index-tool.ts +227 -0
- package/src/aldehyde/draw-canvas/edit/components/render/types.ts +287 -0
- package/src/aldehyde/draw-canvas/edit/components/render/utils/a-star.ts +116 -0
- package/src/aldehyde/draw-canvas/edit/components/render/utils/bezier-scene-func.ts +73 -0
- package/src/aldehyde/draw-canvas/edit/components/setting-form/index.tsx +200 -0
- package/src/aldehyde/draw-canvas/edit/index.less +34 -0
- package/src/aldehyde/draw-canvas/edit/index.tsx +138 -0
- package/src/aldehyde/form/form-Item-group.tsx +1 -0
- package/src/aldehyde/icon/local-aliIcon/iconfont.js +1 -1
- package/src/aldehyde/tmpl/hcservice-v3.tsx +14 -0
- package/src/aldehyde/tmpl/interface.tsx +2 -0
- package/src/aldehyde/units/index.tsx +15 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import Konva from 'konva';
|
|
4
|
+
import { Render } from '../index';
|
|
5
|
+
import { ManualPointsMap } from '../types';
|
|
6
|
+
import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw } from '../draws';
|
|
7
|
+
|
|
8
|
+
export class CopyTool {
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
static readonly name = 'CopyTool';
|
|
11
|
+
|
|
12
|
+
private render: Render;
|
|
13
|
+
constructor(render: Render) {
|
|
14
|
+
this.render = render;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// 复制暂存
|
|
18
|
+
pasteCache: Konva.Node[] = [];
|
|
19
|
+
// 粘贴次数(用于定义新节点的偏移距离)
|
|
20
|
+
pasteCount = 1;
|
|
21
|
+
|
|
22
|
+
// 复制
|
|
23
|
+
pasteStart() {
|
|
24
|
+
this.pasteCache = this.render.selectionTool.selectingNodes.map((o) => {
|
|
25
|
+
const copy = o.clone();
|
|
26
|
+
// 恢复透明度、可交互
|
|
27
|
+
copy.setAttrs({
|
|
28
|
+
listening: true,
|
|
29
|
+
opacity: copy.attrs.lastOpacity ?? 1
|
|
30
|
+
});
|
|
31
|
+
// 清空状态
|
|
32
|
+
copy.setAttrs({
|
|
33
|
+
nodeMousedownPos: undefined,
|
|
34
|
+
lastOpacity: undefined,
|
|
35
|
+
lastZIndex: undefined,
|
|
36
|
+
selectingZIndex: undefined,
|
|
37
|
+
selected: false
|
|
38
|
+
});
|
|
39
|
+
return copy;
|
|
40
|
+
});
|
|
41
|
+
this.pasteCount = 1;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// 粘贴
|
|
45
|
+
pasteEnd() {
|
|
46
|
+
if (this.pasteCache.length > 0) {
|
|
47
|
+
this.render.selectionTool.selectingClear();
|
|
48
|
+
this.render.linkTool.selectingClear();
|
|
49
|
+
this.copy(this.pasteCache);
|
|
50
|
+
this.pasteCount++;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 刷新 id、事件
|
|
55
|
+
nodesIdCover(nodes: Konva.Node[]) {
|
|
56
|
+
let deepAssets = [...nodes];
|
|
57
|
+
const idMap = new Map();
|
|
58
|
+
|
|
59
|
+
while (deepAssets.length > 0) {
|
|
60
|
+
const asset = deepAssets.shift();
|
|
61
|
+
if (asset) {
|
|
62
|
+
if (Array.isArray(asset.attrs.points)) {
|
|
63
|
+
for (const point of asset.attrs.points) {
|
|
64
|
+
if (Array.isArray(point.pairs)) {
|
|
65
|
+
for (const pair of point.pairs) {
|
|
66
|
+
if (!idMap.has(pair.id)) {
|
|
67
|
+
idMap.set(pair.id, 'pr:' + nanoid());
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (pair.from.groupId && !idMap.has(pair.from.groupId)) {
|
|
71
|
+
idMap.set(pair.from.groupId, 'g:' + nanoid());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (pair.to.groupId && !idMap.has(pair.to.groupId)) {
|
|
75
|
+
idMap.set(pair.to.groupId, 'g:' + nanoid());
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (pair.from.pointId && !idMap.has(pair.from.pointId)) {
|
|
79
|
+
idMap.set(pair.from.pointId, 'p:' + nanoid());
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (pair.to.pointId && !idMap.has(pair.to.pointId)) {
|
|
83
|
+
idMap.set(pair.to.pointId, 'p:' + nanoid());
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (point.id) {
|
|
89
|
+
if (!idMap.has(point.id)) {
|
|
90
|
+
idMap.set(point.id, 'p:' + nanoid());
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (point.groupId) {
|
|
95
|
+
if (!idMap.has(point.groupId)) {
|
|
96
|
+
idMap.set(point.groupId, 'g:' + nanoid());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (Array.isArray(asset.attrs.anchors)) {
|
|
103
|
+
for (const anchor of asset.attrs.anchors) {
|
|
104
|
+
if (anchor.groupId && !idMap.has(anchor.groupId)) {
|
|
105
|
+
idMap.set(anchor.groupId, 'g:' + nanoid());
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (asset.id()) {
|
|
111
|
+
if (!idMap.has(asset.id())) {
|
|
112
|
+
idMap.set(asset.id(), 'n:' + nanoid());
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (asset instanceof Konva.Group && Array.isArray(asset.children)) {
|
|
117
|
+
deepAssets.push(...asset.children);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
deepAssets = [...nodes];
|
|
123
|
+
|
|
124
|
+
while (deepAssets.length > 0) {
|
|
125
|
+
const asset = deepAssets.shift();
|
|
126
|
+
if (asset) {
|
|
127
|
+
if (idMap.has(asset.id())) {
|
|
128
|
+
asset.id(idMap.get(asset.id()));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (Array.isArray(asset.attrs.points)) {
|
|
132
|
+
asset.attrs.points = _.cloneDeep(asset.attrs.points ?? []);
|
|
133
|
+
|
|
134
|
+
for (const point of asset.attrs.points) {
|
|
135
|
+
if (Array.isArray(point.pairs)) {
|
|
136
|
+
for (const pair of point.pairs) {
|
|
137
|
+
pair.id = idMap.get(pair.id);
|
|
138
|
+
|
|
139
|
+
if (idMap.has(pair.from.groupId)) {
|
|
140
|
+
pair.from.groupId = idMap.get(pair.from.groupId);
|
|
141
|
+
}
|
|
142
|
+
if (idMap.has(pair.to.groupId)) {
|
|
143
|
+
pair.to.groupId = idMap.get(pair.to.groupId);
|
|
144
|
+
}
|
|
145
|
+
if (idMap.has(pair.from.pointId)) {
|
|
146
|
+
pair.from.pointId = idMap.get(pair.from.pointId);
|
|
147
|
+
}
|
|
148
|
+
if (idMap.has(pair.to.pointId)) {
|
|
149
|
+
pair.to.pointId = idMap.get(pair.to.pointId);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (idMap.has(point.id)) {
|
|
155
|
+
if (asset instanceof Konva.Group) {
|
|
156
|
+
const anchor = asset.findOne(`#${point.id}`);
|
|
157
|
+
anchor?.id(idMap.get(point.id));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
point.id = idMap.get(point.id);
|
|
161
|
+
point.visible = false;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (idMap.has(point.groupId)) {
|
|
165
|
+
point.groupId = idMap.get(point.groupId);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (Array.isArray(asset.attrs.anchors)) {
|
|
171
|
+
asset.attrs.anchors = _.cloneDeep(asset.attrs.anchors ?? []);
|
|
172
|
+
|
|
173
|
+
for (const anchor of asset.attrs.anchors) {
|
|
174
|
+
if (idMap.has(anchor.groupId)) {
|
|
175
|
+
anchor.groupId = idMap.get(anchor.groupId);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (asset instanceof Konva.Group && Array.isArray(asset.children)) {
|
|
181
|
+
deepAssets.push(...asset.children);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
for (const node of nodes) {
|
|
187
|
+
if (node instanceof Konva.Group) {
|
|
188
|
+
node.off('mouseenter');
|
|
189
|
+
node.on('mouseenter', () => {
|
|
190
|
+
// 显示 连接点
|
|
191
|
+
this.render.linkTool.pointsVisible(true, node);
|
|
192
|
+
});
|
|
193
|
+
node.off('mouseleave');
|
|
194
|
+
node.on('mouseleave', () => {
|
|
195
|
+
// 隐藏 连接点
|
|
196
|
+
this.render.linkTool.pointsVisible(false, node);
|
|
197
|
+
// 隐藏 hover 框
|
|
198
|
+
node.findOne('#hoverRect')?.visible(false);
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// 使新节点产生偏移
|
|
202
|
+
node.setAttrs({
|
|
203
|
+
x: node.x() + this.render.toStageValue(this.render.bgSize) * this.pasteCount,
|
|
204
|
+
y: node.y() + this.render.toStageValue(this.render.bgSize) * this.pasteCount
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// 拐点也需要偏移
|
|
208
|
+
if (node.attrs.manualPointsMap) {
|
|
209
|
+
const manualPointsMap = {} as ManualPointsMap;
|
|
210
|
+
|
|
211
|
+
// 替换 pairId
|
|
212
|
+
for (const pairId in node.attrs.manualPointsMap) {
|
|
213
|
+
manualPointsMap[idMap.get(pairId)] = node.attrs.manualPointsMap[pairId];
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
for (const pairId in manualPointsMap) {
|
|
217
|
+
const manualPoints = manualPointsMap[pairId];
|
|
218
|
+
if (Array.isArray(manualPoints)) {
|
|
219
|
+
manualPointsMap[pairId] = manualPoints.map((o) => ({
|
|
220
|
+
x: o.x + this.render.toStageValue(this.render.bgSize) * this.pasteCount,
|
|
221
|
+
y: o.y + this.render.toStageValue(this.render.bgSize) * this.pasteCount
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
node.setAttr('manualPointsMap', manualPointsMap);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* 复制粘贴
|
|
234
|
+
* @param nodes 节点数组
|
|
235
|
+
* @param skip 跳过检查
|
|
236
|
+
* @returns 复制的元素
|
|
237
|
+
*/
|
|
238
|
+
copy(nodes: Konva.Node[]) {
|
|
239
|
+
const clones: Konva.Group[] = [];
|
|
240
|
+
for (const node of nodes) {
|
|
241
|
+
if (node instanceof Konva.Transformer) {
|
|
242
|
+
// 复制已选择
|
|
243
|
+
const backup = [...this.render.selectionTool.selectingNodes];
|
|
244
|
+
this.render.selectionTool.selectingClear();
|
|
245
|
+
this.render.linkTool.selectingClear();
|
|
246
|
+
this.copy(backup);
|
|
247
|
+
return;
|
|
248
|
+
} else {
|
|
249
|
+
// 复制未选择(先记录,后处理)
|
|
250
|
+
clones.push(node.clone());
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// 刷新 id、事件
|
|
254
|
+
this.nodesIdCover(clones);
|
|
255
|
+
// 插入新节点
|
|
256
|
+
this.render.layer.add(...clones);
|
|
257
|
+
// 选中复制内容
|
|
258
|
+
this.render.selectionTool.select(clones);
|
|
259
|
+
// 更新历史
|
|
260
|
+
this.render.updateHistory();
|
|
261
|
+
// 重绘
|
|
262
|
+
this.render.redraw([
|
|
263
|
+
GraphDraw.name,
|
|
264
|
+
LinkDraw.name,
|
|
265
|
+
RulerDraw.name,
|
|
266
|
+
PreviewDraw.name
|
|
267
|
+
]);
|
|
268
|
+
}
|
|
269
|
+
}
|