@nitrohe/webtopo-sdk 0.0.2 → 0.0.4
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/package.json +3 -5
- package/types/Render/types.d.ts +263 -0
- package/types/Render/types.d.ts.map +1 -0
- package/webtopo.es.js +117 -1
- package/webtopo.iife.js +1 -24
- package/webtopo.umd.js +1 -24
package/package.json
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitrohe/webtopo-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "topo",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"konva",
|
|
7
|
-
"topo"
|
|
8
|
-
],
|
|
5
|
+
"keywords": ["konva", "topo"],
|
|
9
6
|
"homepage": "",
|
|
10
7
|
"bugs": "",
|
|
11
8
|
"repository": "",
|
|
@@ -13,6 +10,7 @@
|
|
|
13
10
|
"type": "module",
|
|
14
11
|
"main": "./webtopo.umd.js",
|
|
15
12
|
"module": "./webtopo.es.js",
|
|
13
|
+
"types": "types/Render/types.d.ts",
|
|
16
14
|
"sideEffects": false,
|
|
17
15
|
"author": "nitrohe@163.com",
|
|
18
16
|
"contributors": [],
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
export type ValueOf<T> = T[keyof T];
|
|
3
|
+
export interface RenderConfig {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
showBg?: boolean;
|
|
7
|
+
showRuler?: boolean;
|
|
8
|
+
showRefLine?: boolean;
|
|
9
|
+
showPreview?: boolean;
|
|
10
|
+
showContextmenu?: boolean;
|
|
11
|
+
attractResize?: boolean;
|
|
12
|
+
attractBg?: boolean;
|
|
13
|
+
attractNode?: boolean;
|
|
14
|
+
readonly?: boolean;
|
|
15
|
+
configJson?: string | null;
|
|
16
|
+
}
|
|
17
|
+
export type RenderEvents = {
|
|
18
|
+
['history-change']: {
|
|
19
|
+
records: string[];
|
|
20
|
+
index: number;
|
|
21
|
+
};
|
|
22
|
+
['selection-change']: Konva.Node[];
|
|
23
|
+
['debug-change']: boolean;
|
|
24
|
+
['link-type-change']: LinkType;
|
|
25
|
+
['scale-change']: number;
|
|
26
|
+
['loading']: boolean;
|
|
27
|
+
['graph-type-change']: GraphType | undefined;
|
|
28
|
+
['texting-change']: boolean;
|
|
29
|
+
['page-settings-change']: PageSettings;
|
|
30
|
+
['link-selection-change']: Konva.Line | undefined;
|
|
31
|
+
['asset-position-change']: Konva.Node[];
|
|
32
|
+
['asset-rotation-change']: Konva.Node[];
|
|
33
|
+
};
|
|
34
|
+
export interface Handler {
|
|
35
|
+
handlers?: {
|
|
36
|
+
stage?: {
|
|
37
|
+
[index: string]: (e?: any) => void | boolean;
|
|
38
|
+
};
|
|
39
|
+
dom?: {
|
|
40
|
+
[index: string]: (e?: any) => void;
|
|
41
|
+
};
|
|
42
|
+
transformer?: {
|
|
43
|
+
[index: string]: (e?: any) => void;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
transformerConfig?: {
|
|
47
|
+
anchorDragBoundFunc?: (oldPos: Konva.Vector2d, newPos: Konva.Vector2d, e: MouseEvent) => Konva.Vector2d;
|
|
48
|
+
dragBoundFunc?: (newPos: Konva.Vector2d, e: MouseEvent) => Konva.Vector2d;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export declare enum MouseButton {
|
|
52
|
+
左键 = 0,
|
|
53
|
+
右键 = 2
|
|
54
|
+
}
|
|
55
|
+
export interface Draw {
|
|
56
|
+
readonly layer: Konva.Layer;
|
|
57
|
+
option: {
|
|
58
|
+
[index: string]: any;
|
|
59
|
+
};
|
|
60
|
+
init: () => void;
|
|
61
|
+
draw: () => void;
|
|
62
|
+
clear: () => void;
|
|
63
|
+
}
|
|
64
|
+
export declare class BaseDraw {
|
|
65
|
+
protected render: any;
|
|
66
|
+
readonly layer: Konva.Layer;
|
|
67
|
+
protected group: Konva.Group;
|
|
68
|
+
constructor(render: any, layer: Konva.Layer);
|
|
69
|
+
init(): void;
|
|
70
|
+
draw(): void;
|
|
71
|
+
clear(): void;
|
|
72
|
+
}
|
|
73
|
+
export interface AssetInfoPoint {
|
|
74
|
+
x: number;
|
|
75
|
+
y: number;
|
|
76
|
+
direction?: 'top' | 'bottom' | 'left' | 'right';
|
|
77
|
+
alias?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface AssetInfo {
|
|
80
|
+
url: string;
|
|
81
|
+
avatar?: string;
|
|
82
|
+
points?: Array<AssetInfoPoint>;
|
|
83
|
+
}
|
|
84
|
+
export declare enum MoveKey {
|
|
85
|
+
上 = "ArrowUp",
|
|
86
|
+
左 = "ArrowLeft",
|
|
87
|
+
右 = "ArrowRight",
|
|
88
|
+
下 = "ArrowDown"
|
|
89
|
+
}
|
|
90
|
+
export declare enum ShutcutKey {
|
|
91
|
+
删除 = "Delete",
|
|
92
|
+
C = "KeyC",
|
|
93
|
+
V = "KeyV",
|
|
94
|
+
Z = "KeyZ",
|
|
95
|
+
A = "KeyA",
|
|
96
|
+
R = "KeyR",
|
|
97
|
+
Esc = "Escape",
|
|
98
|
+
Backspace = "Backspace",
|
|
99
|
+
Enter = "Enter"
|
|
100
|
+
}
|
|
101
|
+
export declare enum AlignType {
|
|
102
|
+
垂直居中 = "Middle",
|
|
103
|
+
左对齐 = "Left",
|
|
104
|
+
右对齐 = "Right",
|
|
105
|
+
水平居中 = "Center",
|
|
106
|
+
上对齐 = "Top",
|
|
107
|
+
下对齐 = "Bottom"
|
|
108
|
+
}
|
|
109
|
+
export declare enum LinkType {
|
|
110
|
+
'auto' = "auto",
|
|
111
|
+
'straight' = "straight",// 直线
|
|
112
|
+
'manual' = "manual",// 折线
|
|
113
|
+
'curve' = "curve",// 曲线
|
|
114
|
+
'bezier' = "bezier"
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 连接对
|
|
118
|
+
*/
|
|
119
|
+
export interface LinkDrawPair {
|
|
120
|
+
id: string;
|
|
121
|
+
from: {
|
|
122
|
+
groupId: string;
|
|
123
|
+
pointId: string;
|
|
124
|
+
rawGroupId?: string;
|
|
125
|
+
};
|
|
126
|
+
to: {
|
|
127
|
+
groupId: string;
|
|
128
|
+
pointId: string;
|
|
129
|
+
rawGroupId?: string;
|
|
130
|
+
};
|
|
131
|
+
disabled?: boolean;
|
|
132
|
+
linkType?: LinkType;
|
|
133
|
+
style?: Konva.LineConfig & LinkSettings;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 连接点
|
|
137
|
+
*/
|
|
138
|
+
export interface LinkDrawPoint {
|
|
139
|
+
id: string;
|
|
140
|
+
groupId: string;
|
|
141
|
+
rawGroupId?: string;
|
|
142
|
+
visible: boolean;
|
|
143
|
+
pairs: LinkDrawPair[];
|
|
144
|
+
x: number;
|
|
145
|
+
y: number;
|
|
146
|
+
direction?: 'top' | 'bottom' | 'left' | 'right';
|
|
147
|
+
alias?: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 连接线 拐点
|
|
151
|
+
*/
|
|
152
|
+
export interface ManualPoint {
|
|
153
|
+
x: number;
|
|
154
|
+
y: number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 连接线 拐点 表
|
|
158
|
+
*/
|
|
159
|
+
export interface ManualPointsMap {
|
|
160
|
+
[index: string]: ManualPoint[];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 直线、折线 拐点
|
|
164
|
+
*/
|
|
165
|
+
export interface LineManualPoint {
|
|
166
|
+
x: number;
|
|
167
|
+
y: number;
|
|
168
|
+
index: number;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* 图形类型
|
|
172
|
+
*/
|
|
173
|
+
export declare enum GraphType {
|
|
174
|
+
Line = "Line",// 直线
|
|
175
|
+
Curve = "Curve",// 曲线
|
|
176
|
+
Rect = "Rect",// 矩形
|
|
177
|
+
Circle = "Circle",// 圆/椭圆形
|
|
178
|
+
Bezier = "Bezier"
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* 图形 的 调整点 信息
|
|
182
|
+
*/
|
|
183
|
+
export interface GraphAnchor {
|
|
184
|
+
type?: GraphType;
|
|
185
|
+
adjustType: string;
|
|
186
|
+
name?: string;
|
|
187
|
+
groupId?: string;
|
|
188
|
+
adjusted?: boolean;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* 图形 的 调整点 图形、锚点关系
|
|
192
|
+
*/
|
|
193
|
+
export interface GraphAnchorShape {
|
|
194
|
+
shape: Konva.Shape;
|
|
195
|
+
anchorShadow: Konva.Circle;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* 素材类型
|
|
199
|
+
*/
|
|
200
|
+
export declare enum AssetType {
|
|
201
|
+
'Image' = "Image",
|
|
202
|
+
'Json' = "Json",
|
|
203
|
+
'Graph' = "Graph",
|
|
204
|
+
'Text' = "Text"
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* 图片类型
|
|
208
|
+
*/
|
|
209
|
+
export declare enum ImageType {
|
|
210
|
+
'svg' = "svg",
|
|
211
|
+
'gif' = "gif",
|
|
212
|
+
'other' = "other"
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 对齐信息
|
|
216
|
+
*/
|
|
217
|
+
export interface SortItem {
|
|
218
|
+
id?: number;
|
|
219
|
+
value: number;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* 页面设置
|
|
223
|
+
*/
|
|
224
|
+
export interface PageSettings {
|
|
225
|
+
background: string;
|
|
226
|
+
stroke: string;
|
|
227
|
+
strokeWidth: number;
|
|
228
|
+
fill: string;
|
|
229
|
+
linkStroke: string;
|
|
230
|
+
linkStrokeWidth: number;
|
|
231
|
+
fontSize: number;
|
|
232
|
+
textFill: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* 素材设置
|
|
236
|
+
*/
|
|
237
|
+
export interface AssetSettings {
|
|
238
|
+
stroke: string;
|
|
239
|
+
strokeWidth: number;
|
|
240
|
+
fill: string;
|
|
241
|
+
arrowStart: boolean;
|
|
242
|
+
arrowEnd: boolean;
|
|
243
|
+
fontSize: number;
|
|
244
|
+
textFill: string;
|
|
245
|
+
text: string;
|
|
246
|
+
x: number;
|
|
247
|
+
y: number;
|
|
248
|
+
rotation: number;
|
|
249
|
+
tension: number;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* 连接线设置
|
|
253
|
+
*/
|
|
254
|
+
export interface LinkSettings {
|
|
255
|
+
stroke: string;
|
|
256
|
+
strokeWidth: number;
|
|
257
|
+
arrowStart: boolean;
|
|
258
|
+
arrowEnd: boolean;
|
|
259
|
+
tension: number;
|
|
260
|
+
animationStroke: string;
|
|
261
|
+
animationStrokeWidth: number;
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Render/types.ts"],"names":[],"mappings":"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"}
|
package/webtopo.es.js
CHANGED
|
@@ -7429,6 +7429,120 @@ const _LinkDraw = class _LinkDraw extends BaseDraw {
|
|
|
7429
7429
|
this.state.linkType = linkType;
|
|
7430
7430
|
this.render.emit("link-type-change", this.state.linkType);
|
|
7431
7431
|
}
|
|
7432
|
+
setPipeLineAnimation(pipePoints, group) {
|
|
7433
|
+
function parsePolylineToSegments(points) {
|
|
7434
|
+
const segments2 = [];
|
|
7435
|
+
let totalLength2 = 0;
|
|
7436
|
+
for (let i = 0; i < points.length - 2; i += 2) {
|
|
7437
|
+
const x1 = points[i], y1 = points[i + 1];
|
|
7438
|
+
const x2 = points[i + 2], y2 = points[i + 3];
|
|
7439
|
+
const dx = x2 - x1;
|
|
7440
|
+
const dy = y2 - y1;
|
|
7441
|
+
const length = Math.sqrt(dx * dx + dy * dy);
|
|
7442
|
+
totalLength2 += length;
|
|
7443
|
+
segments2.push({ x1, y1, x2, y2, dx, dy, length });
|
|
7444
|
+
}
|
|
7445
|
+
return { segments: segments2, totalLength: totalLength2 };
|
|
7446
|
+
}
|
|
7447
|
+
function calculateSingleLineLength(points) {
|
|
7448
|
+
let totalLength2 = 0;
|
|
7449
|
+
for (let i = 0; i < points.length - 2; i += 2) {
|
|
7450
|
+
const x1 = points[i];
|
|
7451
|
+
const y1 = points[i + 1];
|
|
7452
|
+
const x2 = points[i + 2];
|
|
7453
|
+
const y2 = points[i + 3];
|
|
7454
|
+
const dx = x2 - x1;
|
|
7455
|
+
const dy = y2 - y1;
|
|
7456
|
+
totalLength2 += Math.sqrt(dx * dx + dy * dy);
|
|
7457
|
+
}
|
|
7458
|
+
return totalLength2;
|
|
7459
|
+
}
|
|
7460
|
+
const { segments, totalLength } = parsePolylineToSegments(pipePoints);
|
|
7461
|
+
const flowSpeed = 60;
|
|
7462
|
+
const flowCount = Math.ceil(calculateSingleLineLength(pipePoints) / (20 * 2));
|
|
7463
|
+
const flowItems = [];
|
|
7464
|
+
for (let i = 0; i < flowCount; i++) {
|
|
7465
|
+
const flowItem = new Konva.Rect({
|
|
7466
|
+
width: 20,
|
|
7467
|
+
// 胶囊长度 (长条)
|
|
7468
|
+
height: 6,
|
|
7469
|
+
// 胶囊粗细,略小于管道strokeWidth=12,刚好贴合管道
|
|
7470
|
+
cornerRadius: 3,
|
|
7471
|
+
// 圆角半径 = 高度/2 → 完美胶囊形状,无棱角
|
|
7472
|
+
fill: "#00D2FF",
|
|
7473
|
+
// 你的原始填充色
|
|
7474
|
+
opacity: 0.8,
|
|
7475
|
+
// 你的原始透明度
|
|
7476
|
+
// shadowColor: '#FF3333', // 你的原始阴影色
|
|
7477
|
+
// shadowBlur: 10, // 你的原始阴影模糊度
|
|
7478
|
+
shadowOpacity: 0.7,
|
|
7479
|
+
//你的原始阴影透明度
|
|
7480
|
+
offsetX: 10,
|
|
7481
|
+
// 锚点X居中 = width/2
|
|
7482
|
+
offsetY: 3
|
|
7483
|
+
// 锚点Y居中 = height/2 → 旋转中心在胶囊正中间
|
|
7484
|
+
});
|
|
7485
|
+
group.add(flowItem);
|
|
7486
|
+
flowItems.push({ node: flowItem, offset: i / flowCount });
|
|
7487
|
+
}
|
|
7488
|
+
const anim = new Konva.Animation((frame) => {
|
|
7489
|
+
const totalTime = totalLength / (flowSpeed / 1e3);
|
|
7490
|
+
flowItems.forEach((item) => {
|
|
7491
|
+
let progress = (frame.time / totalTime + item.offset) % 1;
|
|
7492
|
+
let currentLength = progress * totalLength;
|
|
7493
|
+
let currentX, currentY, currentSeg;
|
|
7494
|
+
for (const seg of segments) {
|
|
7495
|
+
if (currentLength <= seg.length) {
|
|
7496
|
+
const ratio = currentLength / seg.length;
|
|
7497
|
+
currentX = seg.x1 + seg.dx * ratio;
|
|
7498
|
+
currentY = seg.y1 + seg.dy * ratio;
|
|
7499
|
+
currentSeg = seg;
|
|
7500
|
+
break;
|
|
7501
|
+
} else {
|
|
7502
|
+
currentLength -= seg.length;
|
|
7503
|
+
}
|
|
7504
|
+
}
|
|
7505
|
+
item.node.position({ x: currentX, y: currentY });
|
|
7506
|
+
const angle = Math.atan2(currentSeg.dy, currentSeg.dx) * 180 / Math.PI;
|
|
7507
|
+
item.node.rotation(angle);
|
|
7508
|
+
});
|
|
7509
|
+
}, this.render.layer);
|
|
7510
|
+
anim.start();
|
|
7511
|
+
}
|
|
7512
|
+
setFlowLineAnimation(points, group, linkLine) {
|
|
7513
|
+
const dashPattern = [15, 10];
|
|
7514
|
+
let dashOffset = 0;
|
|
7515
|
+
const speed = 1;
|
|
7516
|
+
function buildArcPath(points2) {
|
|
7517
|
+
const [sx, sy] = points2[0];
|
|
7518
|
+
let pathStr = `M ${sx} ${sy} `;
|
|
7519
|
+
for (let i = 1; i < points2.length; i++) {
|
|
7520
|
+
const [tx, ty] = points2[i];
|
|
7521
|
+
pathStr += `L ${tx} ${ty} `;
|
|
7522
|
+
}
|
|
7523
|
+
return pathStr;
|
|
7524
|
+
}
|
|
7525
|
+
const stork = this.render.getLinkSettings(linkLine).animationStroke || "#0066cc";
|
|
7526
|
+
const strokeWidth = this.render.getLinkSettings(linkLine).animationStrokeWidth || 3;
|
|
7527
|
+
const flowLine = new Konva.Path({
|
|
7528
|
+
data: buildArcPath(points),
|
|
7529
|
+
// 传入手动构建的SVG路径字符串
|
|
7530
|
+
stroke: stork,
|
|
7531
|
+
strokeWidth,
|
|
7532
|
+
dash: dashPattern,
|
|
7533
|
+
dashOffset
|
|
7534
|
+
});
|
|
7535
|
+
group.add(flowLine);
|
|
7536
|
+
const animation = new Konva.Animation((frame) => {
|
|
7537
|
+
dashOffset -= speed;
|
|
7538
|
+
const dashTotal = dashPattern.reduce((a, b) => a + b);
|
|
7539
|
+
if (Math.abs(dashOffset) > dashTotal) {
|
|
7540
|
+
dashOffset = 0;
|
|
7541
|
+
}
|
|
7542
|
+
flowLine.dashOffset(dashOffset);
|
|
7543
|
+
}, this.render.layer);
|
|
7544
|
+
animation.start();
|
|
7545
|
+
}
|
|
7432
7546
|
// TODO: 优化
|
|
7433
7547
|
// *思路:此 draw 弃用“整体 redraw”的方式,改为“局部更新”的方式:
|
|
7434
7548
|
// 循环 pair 的时候查找 link-line、manualing-line、link-manual-point 等实例是否存在
|
|
@@ -7723,6 +7837,9 @@ const _LinkDraw = class _LinkDraw extends BaseDraw {
|
|
|
7723
7837
|
});
|
|
7724
7838
|
}
|
|
7725
7839
|
this.group.add(linkLine);
|
|
7840
|
+
if (this.render.config.readonly && this.render.getLinkSettings(linkLine).animation) {
|
|
7841
|
+
this.setFlowLineAnimation(linkPoints, this.group, linkLine);
|
|
7842
|
+
}
|
|
7726
7843
|
if (!this.render.config.readonly) {
|
|
7727
7844
|
const manualingLine = new Konva.Arrow({
|
|
7728
7845
|
name: "manualing-line",
|
|
@@ -16261,4 +16378,3 @@ export {
|
|
|
16261
16378
|
Render,
|
|
16262
16379
|
sdk as default
|
|
16263
16380
|
};
|
|
16264
|
-
//# sourceMappingURL=webtopo.es.js.map
|