aldehyde 0.2.473 → 0.2.475

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 (203) hide show
  1. package/lib/controls/action/utils.d.ts +1 -1
  2. package/lib/controls/entity-select/entity-select.d.ts +2 -2
  3. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  4. package/lib/controls/entity-select/entity-select.js +16 -7
  5. package/lib/controls/entity-select/entity-select.js.map +1 -1
  6. package/lib/controls/entry-control.d.ts.map +1 -1
  7. package/lib/controls/entry-control.js +3 -2
  8. package/lib/controls/entry-control.js.map +1 -1
  9. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  10. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +12 -12
  11. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js.map +1 -1
  12. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  13. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  14. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  15. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  16. package/lib/controls/select/index.d.ts.map +1 -1
  17. package/lib/controls/select/index.js +13 -7
  18. package/lib/controls/select/index.js.map +1 -1
  19. package/lib/controls/text/index.less +1 -0
  20. package/lib/controls/view-control.d.ts.map +1 -1
  21. package/lib/controls/view-control.js +1 -0
  22. package/lib/controls/view-control.js.map +1 -1
  23. package/lib/detail/button/edit-button.d.ts.map +1 -1
  24. package/lib/detail/button/edit-button.js +23 -11
  25. package/lib/detail/button/edit-button.js.map +1 -1
  26. package/lib/detail/button/view-button.d.ts.map +1 -1
  27. package/lib/detail/button/view-button.js +21 -10
  28. package/lib/detail/button/view-button.js.map +1 -1
  29. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts +5 -0
  30. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts.map +1 -0
  31. package/lib/draw-canvas/edit/components/asset-bar/index.js +79 -0
  32. package/lib/draw-canvas/edit/components/asset-bar/index.js.map +1 -0
  33. package/lib/draw-canvas/edit/components/asset-bar/index.less +36 -0
  34. package/lib/draw-canvas/edit/components/main-header/index.d.ts +19 -0
  35. package/lib/draw-canvas/edit/components/main-header/index.d.ts.map +1 -0
  36. package/lib/draw-canvas/edit/components/main-header/index.js +203 -0
  37. package/lib/draw-canvas/edit/components/main-header/index.js.map +1 -0
  38. package/lib/draw-canvas/edit/components/main-header/index.less +21 -0
  39. package/lib/draw-canvas/edit/components/render/index.d.ts +90 -0
  40. package/lib/draw-canvas/edit/components/render/index.d.ts.map +1 -0
  41. package/lib/draw-canvas/edit/components/render/index.js +692 -0
  42. package/lib/draw-canvas/edit/components/render/index.js.map +1 -0
  43. package/lib/draw-canvas/edit/components/render/types.d.ts +247 -0
  44. package/lib/draw-canvas/edit/components/render/types.d.ts.map +1 -0
  45. package/lib/draw-canvas/edit/components/render/types.js +66 -0
  46. package/lib/draw-canvas/edit/components/render/types.js.map +1 -0
  47. package/lib/draw-canvas/edit/components/setting-form/imag-upload.d.ts +26 -0
  48. package/lib/draw-canvas/edit/components/setting-form/imag-upload.d.ts.map +1 -0
  49. package/lib/draw-canvas/edit/components/setting-form/imag-upload.js +83 -0
  50. package/lib/draw-canvas/edit/components/setting-form/imag-upload.js.map +1 -0
  51. package/lib/draw-canvas/edit/components/setting-form/index.d.ts +17 -0
  52. package/lib/draw-canvas/edit/components/setting-form/index.d.ts.map +1 -0
  53. package/lib/draw-canvas/edit/components/setting-form/index.js +243 -0
  54. package/lib/draw-canvas/edit/components/setting-form/index.js.map +1 -0
  55. package/lib/draw-canvas/edit/constant.d.ts +7 -0
  56. package/lib/draw-canvas/edit/constant.d.ts.map +1 -0
  57. package/lib/draw-canvas/edit/constant.js +7 -0
  58. package/lib/draw-canvas/edit/constant.js.map +1 -0
  59. package/lib/draw-canvas/edit/index.d.ts +8 -0
  60. package/lib/draw-canvas/edit/index.d.ts.map +1 -0
  61. package/lib/draw-canvas/edit/index.js +165 -0
  62. package/lib/draw-canvas/edit/index.js.map +1 -0
  63. package/lib/draw-canvas/edit/index.less +49 -0
  64. package/lib/draw-canvas/view/index.d.ts +8 -0
  65. package/lib/draw-canvas/view/index.d.ts.map +1 -0
  66. package/lib/draw-canvas/view/index.js +50 -0
  67. package/lib/draw-canvas/view/index.js.map +1 -0
  68. package/lib/draw-canvas/view/index.less +60 -0
  69. package/lib/draw-canvas/view/view.d.ts +10 -0
  70. package/lib/draw-canvas/view/view.d.ts.map +1 -0
  71. package/lib/draw-canvas/view/view.js +104 -0
  72. package/lib/draw-canvas/view/view.js.map +1 -0
  73. package/lib/form/form-Item-group.d.ts.map +1 -1
  74. package/lib/form/form-Item-group.js +4 -4
  75. package/lib/form/form-Item-group.js.map +1 -1
  76. package/lib/icon/local-aliIcon/iconfont.js +5 -5
  77. package/lib/icon/local-aliIcon/iconfont.js.map +1 -1
  78. package/lib/lowcode-components/index.d.ts +2 -0
  79. package/lib/lowcode-components/index.d.ts.map +1 -1
  80. package/lib/lowcode-components/index.js +2 -1
  81. package/lib/lowcode-components/index.js.map +1 -1
  82. package/lib/lowcode-components/lowcode-view/component/assets.d.ts.map +1 -1
  83. package/lib/lowcode-components/lowcode-view/component/assets.js +8 -0
  84. package/lib/lowcode-components/lowcode-view/component/assets.js.map +1 -1
  85. package/lib/lowcode-components/radar-chart/index.d.ts +51 -0
  86. package/lib/lowcode-components/radar-chart/index.d.ts.map +1 -0
  87. package/lib/lowcode-components/radar-chart/index.js +276 -0
  88. package/lib/lowcode-components/radar-chart/index.js.map +1 -0
  89. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  90. package/lib/module/dtmpl-edit-card.js +18 -1
  91. package/lib/module/dtmpl-edit-card.js.map +1 -1
  92. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  93. package/lib/module/dtmpl-edit-page.js +19 -2
  94. package/lib/module/dtmpl-edit-page.js.map +1 -1
  95. package/lib/routable/ltmpl-route.d.ts +2 -0
  96. package/lib/routable/ltmpl-route.d.ts.map +1 -1
  97. package/lib/routable/ltmpl-route.js +20 -4
  98. package/lib/routable/ltmpl-route.js.map +1 -1
  99. package/lib/table/act-table.d.ts +2 -0
  100. package/lib/table/act-table.d.ts.map +1 -1
  101. package/lib/table/act-table.js +4 -4
  102. package/lib/table/act-table.js.map +1 -1
  103. package/lib/table/column/column-builder.d.ts.map +1 -1
  104. package/lib/table/column/column-builder.js +23 -8
  105. package/lib/table/column/column-builder.js.map +1 -1
  106. package/lib/table/relation-table.d.ts +7 -0
  107. package/lib/table/relation-table.d.ts.map +1 -1
  108. package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
  109. package/lib/tmpl/control-type-supportor.js +1 -0
  110. package/lib/tmpl/control-type-supportor.js.map +1 -1
  111. package/lib/tmpl/hcservice-v3.d.ts +3 -0
  112. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  113. package/lib/tmpl/hcservice-v3.js +61 -0
  114. package/lib/tmpl/hcservice-v3.js.map +1 -1
  115. package/lib/tmpl/interface.d.ts +17 -1
  116. package/lib/tmpl/interface.d.ts.map +1 -1
  117. package/lib/tmpl/interface.js.map +1 -1
  118. package/lib/tmpl/tmpl-config-analysis.js +1 -1
  119. package/lib/tmpl/tmpl-config-analysis.js.map +1 -1
  120. package/lib/units/index.d.ts +3 -1
  121. package/lib/units/index.d.ts.map +1 -1
  122. package/lib/units/index.js +33 -3
  123. package/lib/units/index.js.map +1 -1
  124. package/package.json +4 -1
  125. package/src/aldehyde/controls/entity-select/entity-select.tsx +18 -8
  126. package/src/aldehyde/controls/entry-control.tsx +3 -2
  127. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  128. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +1 -1
  129. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  130. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  131. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  132. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  133. package/src/aldehyde/controls/select/index.tsx +7 -6
  134. package/src/aldehyde/controls/text/index.less +1 -0
  135. package/src/aldehyde/controls/view-control.tsx +1 -0
  136. package/src/aldehyde/detail/button/edit-button.tsx +21 -22
  137. package/src/aldehyde/detail/button/view-button.tsx +23 -21
  138. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.less +36 -0
  139. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.tsx +95 -0
  140. package/src/aldehyde/draw-canvas/edit/components/main-header/index.less +21 -0
  141. package/src/aldehyde/draw-canvas/edit/components/main-header/index.tsx +233 -0
  142. package/src/aldehyde/draw-canvas/edit/components/render/draws/bg-draw.ts +163 -0
  143. package/src/aldehyde/draw-canvas/edit/components/render/draws/contextmenu-draw.ts +307 -0
  144. package/src/aldehyde/draw-canvas/edit/components/render/draws/graph-draw.ts +251 -0
  145. package/src/aldehyde/draw-canvas/edit/components/render/draws/index.ts +7 -0
  146. package/src/aldehyde/draw-canvas/edit/components/render/draws/link-draw.ts +1416 -0
  147. package/src/aldehyde/draw-canvas/edit/components/render/draws/preview-draw.ts +275 -0
  148. package/src/aldehyde/draw-canvas/edit/components/render/draws/ref-line-draw.ts +72 -0
  149. package/src/aldehyde/draw-canvas/edit/components/render/draws/ruler-draw.ts +167 -0
  150. package/src/aldehyde/draw-canvas/edit/components/render/graphs/base-graph.ts +241 -0
  151. package/src/aldehyde/draw-canvas/edit/components/render/graphs/bezier.ts +542 -0
  152. package/src/aldehyde/draw-canvas/edit/components/render/graphs/circle.ts +700 -0
  153. package/src/aldehyde/draw-canvas/edit/components/render/graphs/curve.ts +501 -0
  154. package/src/aldehyde/draw-canvas/edit/components/render/graphs/index.ts +6 -0
  155. package/src/aldehyde/draw-canvas/edit/components/render/graphs/line.ts +494 -0
  156. package/src/aldehyde/draw-canvas/edit/components/render/graphs/rect.ts +681 -0
  157. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-handlers.ts +69 -0
  158. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-outside-handlers.ts +159 -0
  159. package/src/aldehyde/draw-canvas/edit/components/render/handlers/graph-handlers.ts +108 -0
  160. package/src/aldehyde/draw-canvas/edit/components/render/handlers/index.ts +9 -0
  161. package/src/aldehyde/draw-canvas/edit/components/render/handlers/key-move-handlers.ts +50 -0
  162. package/src/aldehyde/draw-canvas/edit/components/render/handlers/link-handlers.ts +46 -0
  163. package/src/aldehyde/draw-canvas/edit/components/render/handlers/selection-handlers.ts +393 -0
  164. package/src/aldehyde/draw-canvas/edit/components/render/handlers/shutcut-handlers.ts +46 -0
  165. package/src/aldehyde/draw-canvas/edit/components/render/handlers/text-handlers.ts +82 -0
  166. package/src/aldehyde/draw-canvas/edit/components/render/handlers/zoom-handlers.ts +60 -0
  167. package/src/aldehyde/draw-canvas/edit/components/render/index.ts +776 -0
  168. package/src/aldehyde/draw-canvas/edit/components/render/tools/align-tool.ts +91 -0
  169. package/src/aldehyde/draw-canvas/edit/components/render/tools/asset-tool.ts +142 -0
  170. package/src/aldehyde/draw-canvas/edit/components/render/tools/attract-tool.ts +440 -0
  171. package/src/aldehyde/draw-canvas/edit/components/render/tools/copy-tool.ts +269 -0
  172. package/src/aldehyde/draw-canvas/edit/components/render/tools/import-export-tool.ts +603 -0
  173. package/src/aldehyde/draw-canvas/edit/components/render/tools/index.ts +9 -0
  174. package/src/aldehyde/draw-canvas/edit/components/render/tools/link-tool.ts +225 -0
  175. package/src/aldehyde/draw-canvas/edit/components/render/tools/position-tool.ts +194 -0
  176. package/src/aldehyde/draw-canvas/edit/components/render/tools/selection-tool.ts +132 -0
  177. package/src/aldehyde/draw-canvas/edit/components/render/tools/z-index-tool.ts +227 -0
  178. package/src/aldehyde/draw-canvas/edit/components/render/types.ts +291 -0
  179. package/src/aldehyde/draw-canvas/edit/components/render/utils/a-star.ts +116 -0
  180. package/src/aldehyde/draw-canvas/edit/components/render/utils/bezier-scene-func.ts +73 -0
  181. package/src/aldehyde/draw-canvas/edit/components/setting-form/imag-upload.tsx +118 -0
  182. package/src/aldehyde/draw-canvas/edit/components/setting-form/index.tsx +295 -0
  183. package/src/aldehyde/draw-canvas/edit/constant.ts +6 -0
  184. package/src/aldehyde/draw-canvas/edit/index.less +49 -0
  185. package/src/aldehyde/draw-canvas/edit/index.tsx +197 -0
  186. package/src/aldehyde/draw-canvas/view/index.less +60 -0
  187. package/src/aldehyde/draw-canvas/view/index.tsx +48 -0
  188. package/src/aldehyde/draw-canvas/view/view.tsx +114 -0
  189. package/src/aldehyde/form/form-Item-group.tsx +5 -5
  190. package/src/aldehyde/icon/local-aliIcon/iconfont.js +1 -1
  191. package/src/aldehyde/lowcode-components/index.ts +4 -2
  192. package/src/aldehyde/lowcode-components/lowcode-view/component/assets.ts +8 -0
  193. package/src/aldehyde/lowcode-components/radar-chart/index.tsx +323 -0
  194. package/src/aldehyde/module/dtmpl-edit-card.tsx +18 -1
  195. package/src/aldehyde/module/dtmpl-edit-page.tsx +19 -2
  196. package/src/aldehyde/routable/ltmpl-route.tsx +39 -3
  197. package/src/aldehyde/table/act-table.tsx +7 -4
  198. package/src/aldehyde/table/column/column-builder.tsx +29 -9
  199. package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -0
  200. package/src/aldehyde/tmpl/hcservice-v3.tsx +44 -0
  201. package/src/aldehyde/tmpl/interface.tsx +15 -1
  202. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +1 -1
  203. package/src/aldehyde/units/index.tsx +31 -3
@@ -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
+ }