@soonspacejs/plugin-drawing-topology 2.13.6 → 2.13.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/README.md +14 -14
- package/dist/index.esm.js +152 -1
- package/dist/index.esm.js.map +1 -0
- package/package.json +3 -3
- package/dist/index.d.ts +0 -34
package/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# @soonspacejs/plugin-drawing-topology
|
|
2
|
-
|
|
3
|
-
> DrawTopologyPlugin plugin for SoonSpace.js
|
|
4
|
-
|
|
5
|
-
Document: [http://www.xwbuilders.com:8800/plugin/draw-topology.html](http://www.xwbuilders.com:8800/plugin/draw-topology.html)
|
|
6
|
-
|
|
7
|
-
## 交互
|
|
8
|
-
|
|
9
|
-
鼠标左键单击添加节点
|
|
10
|
-
鼠标左键双击添加节点并结束绘制
|
|
11
|
-
|
|
12
|
-
回车键结束绘制
|
|
13
|
-
|
|
14
|
-
鼠标右键单击或 `delete` 删除上一个节点
|
|
1
|
+
# @soonspacejs/plugin-drawing-topology
|
|
2
|
+
|
|
3
|
+
> DrawTopologyPlugin plugin for SoonSpace.js
|
|
4
|
+
|
|
5
|
+
Document: [http://www.xwbuilders.com:8800/plugin/draw-topology.html](http://www.xwbuilders.com:8800/plugin/draw-topology.html)
|
|
6
|
+
|
|
7
|
+
## 交互
|
|
8
|
+
|
|
9
|
+
鼠标左键单击添加节点
|
|
10
|
+
鼠标左键双击添加节点并结束绘制
|
|
11
|
+
|
|
12
|
+
回车键结束绘制
|
|
13
|
+
|
|
14
|
+
鼠标右键单击或 `delete` 删除上一个节点
|
|
15
15
|
`esc` 清空节点并取消绘制
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1,152 @@
|
|
|
1
|
-
import
|
|
1
|
+
import SoonSpace from 'soonspacejs';
|
|
2
|
+
|
|
3
|
+
const { randomString, } = SoonSpace.utils;
|
|
4
|
+
class DrawIngTopologyPlugin {
|
|
5
|
+
constructor(ssp) {
|
|
6
|
+
this.ssp = ssp;
|
|
7
|
+
// 绘制状态
|
|
8
|
+
this.drawing = false;
|
|
9
|
+
this.nodes = [];
|
|
10
|
+
this.topology = null;
|
|
11
|
+
this.mouseDownNode = null;
|
|
12
|
+
this.mouseDownObject = null;
|
|
13
|
+
this.mouseMoveNode = null;
|
|
14
|
+
this.options = {
|
|
15
|
+
id: 'drawing_topology',
|
|
16
|
+
type: 'line',
|
|
17
|
+
nodes: [],
|
|
18
|
+
};
|
|
19
|
+
this.viewport = ssp.viewport;
|
|
20
|
+
this.onMouseDowm = this.onMouseDowm.bind(this);
|
|
21
|
+
this.onMouseMove = this.onMouseMove.bind(this);
|
|
22
|
+
this.onClick = this.onClick.bind(this);
|
|
23
|
+
this.onDblClick = this.onDblClick.bind(this);
|
|
24
|
+
this.onRightClick = this.onRightClick.bind(this);
|
|
25
|
+
this.onKeyUp = this.onKeyUp.bind(this);
|
|
26
|
+
}
|
|
27
|
+
start(options) {
|
|
28
|
+
this.options = options;
|
|
29
|
+
this.drawing = true;
|
|
30
|
+
this.ssp.signals.mouseDown.add(this.onMouseDowm);
|
|
31
|
+
this.ssp.signals.mouseMove.add(this.onMouseMove);
|
|
32
|
+
this.ssp.signals.click.add(this.onClick);
|
|
33
|
+
this.ssp.signals.dblClick.add(this.onDblClick);
|
|
34
|
+
this.ssp.signals.rightClick.add(this.onRightClick);
|
|
35
|
+
this.ssp.signals.keyUp.add(this.onKeyUp);
|
|
36
|
+
}
|
|
37
|
+
undo() {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const poppedNode = this.nodes.pop();
|
|
40
|
+
if (poppedNode) {
|
|
41
|
+
this.renderTopology(this.nodes);
|
|
42
|
+
(_b = (_a = this.options).onUndo) === null || _b === void 0 ? void 0 : _b.call(_a, poppedNode);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
done() {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
this.renderTopology(this.nodes);
|
|
48
|
+
(_b = (_a = this.options).onDone) === null || _b === void 0 ? void 0 : _b.call(_a, [...this.nodes], this.topology);
|
|
49
|
+
this.stop();
|
|
50
|
+
}
|
|
51
|
+
cancel() {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
if (this.topology)
|
|
54
|
+
this.ssp.removeObject(this.topology);
|
|
55
|
+
(_b = (_a = this.options).onCancel) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
56
|
+
this.stop();
|
|
57
|
+
}
|
|
58
|
+
stop() {
|
|
59
|
+
this.nodes = [];
|
|
60
|
+
this.topology = null;
|
|
61
|
+
this.mouseDownNode = null;
|
|
62
|
+
this.mouseDownObject = null;
|
|
63
|
+
this.mouseMoveNode = null;
|
|
64
|
+
this.options = {
|
|
65
|
+
id: 'drawing_topology',
|
|
66
|
+
type: 'line',
|
|
67
|
+
nodes: [],
|
|
68
|
+
};
|
|
69
|
+
this.drawing = false;
|
|
70
|
+
this.ssp.signals.mouseDown.remove(this.onMouseDowm);
|
|
71
|
+
this.ssp.signals.mouseMove.remove(this.onMouseMove);
|
|
72
|
+
this.ssp.signals.click.remove(this.onClick);
|
|
73
|
+
this.ssp.signals.dblClick.remove(this.onDblClick);
|
|
74
|
+
this.ssp.signals.rightClick.remove(this.onRightClick);
|
|
75
|
+
this.ssp.signals.keyUp.remove(this.onKeyUp);
|
|
76
|
+
}
|
|
77
|
+
onMouseDowm(e) {
|
|
78
|
+
const [intersect] = this.ssp.viewport.getIntersects(e);
|
|
79
|
+
if (intersect) {
|
|
80
|
+
const { object, point, } = intersect;
|
|
81
|
+
const rs = randomString();
|
|
82
|
+
this.mouseDownNode = {
|
|
83
|
+
id: `node${rs}`,
|
|
84
|
+
name: `node${rs}`,
|
|
85
|
+
position: point.setY(point.y + 0.01),
|
|
86
|
+
graphs: [],
|
|
87
|
+
};
|
|
88
|
+
this.mouseDownObject = object;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
onMouseMove(e) {
|
|
92
|
+
const [intersect] = this.ssp.viewport.getIntersects(e);
|
|
93
|
+
if (intersect) {
|
|
94
|
+
const rs = randomString();
|
|
95
|
+
this.mouseMoveNode = {
|
|
96
|
+
id: `node${rs}`,
|
|
97
|
+
name: `node${rs}`,
|
|
98
|
+
position: intersect.point.clone().setY(intersect.point.y),
|
|
99
|
+
graphs: [],
|
|
100
|
+
};
|
|
101
|
+
this.renderTopology([...this.nodes, this.mouseMoveNode]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
onClick() {
|
|
105
|
+
this.pushNode();
|
|
106
|
+
}
|
|
107
|
+
onDblClick() {
|
|
108
|
+
var _a, _b;
|
|
109
|
+
this.pushNode();
|
|
110
|
+
(_b = (_a = this.options).onDone) === null || _b === void 0 ? void 0 : _b.call(_a, [...this.nodes], this.topology);
|
|
111
|
+
this.stop();
|
|
112
|
+
}
|
|
113
|
+
onRightClick() {
|
|
114
|
+
this.undo();
|
|
115
|
+
}
|
|
116
|
+
onKeyUp(e) {
|
|
117
|
+
switch (e.code) {
|
|
118
|
+
case 'Backspace':
|
|
119
|
+
this.undo();
|
|
120
|
+
break;
|
|
121
|
+
case 'Enter':
|
|
122
|
+
this.done();
|
|
123
|
+
break;
|
|
124
|
+
case 'Escape':
|
|
125
|
+
this.cancel();
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
pushNode() {
|
|
130
|
+
var _a, _b;
|
|
131
|
+
if (this.mouseDownNode && this.mouseDownObject) {
|
|
132
|
+
this.nodes.push(this.mouseDownNode);
|
|
133
|
+
this.renderTopology(this.nodes);
|
|
134
|
+
(_b = (_a = this.options).onAdd) === null || _b === void 0 ? void 0 : _b.call(_a, this.mouseDownNode, this.mouseDownObject);
|
|
135
|
+
this.mouseDownNode = null;
|
|
136
|
+
this.mouseDownObject = null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
renderTopology(nodes) {
|
|
140
|
+
if (this.topology) {
|
|
141
|
+
this.ssp.resetTopologyNodes(this.topology, nodes);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this.topology = this.ssp.createTopology(Object.assign(Object.assign({}, this.options), {
|
|
145
|
+
// 正在绘制中的路径不在导航计算范围内,所以类型使用 network,因为 line 会移动计算
|
|
146
|
+
type: 'line', nodes }));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export { DrawIngTopologyPlugin as default };
|
|
152
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { Object3D, } from 'three'\r\nimport SoonSpace, { TopologyNodeInfo, } from 'soonspacejs'\r\nimport type { Topology, TopologyInfo, } from 'soonspacejs'\r\n\r\nexport interface StartOptions extends TopologyInfo {\r\n onCancel?: () => void;\r\n onAdd?: ( node: TopologyNodeInfo, intersectObject: Object3D ) => void;\r\n onUndo?: ( node: TopologyNodeInfo ) => void;\r\n onDone?: ( nodes: TopologyNodeInfo[], topology: Topology | null ) => void;\r\n}\r\n\r\nconst { randomString, } = SoonSpace.utils\r\n\r\nexport default class DrawIngTopologyPlugin {\r\n\r\n readonly viewport: SoonSpace['viewport']\r\n\r\n // 绘制状态\r\n drawing = false\r\n\r\n nodes: TopologyNodeInfo[] = []\r\n topology: Topology | null = null\r\n\r\n private mouseDownNode: TopologyNodeInfo | null = null\r\n private mouseDownObject: Object3D | null = null\r\n private mouseMoveNode: TopologyNodeInfo | null = null\r\n \r\n private options: StartOptions = {\r\n id: 'drawing_topology',\r\n type: 'line',\r\n nodes: [],\r\n }\r\n\r\n constructor ( readonly ssp: SoonSpace ) {\r\n\r\n this.viewport = ssp.viewport\r\n\r\n this.onMouseDowm = this.onMouseDowm.bind( this )\r\n this.onMouseMove = this.onMouseMove.bind( this )\r\n this.onClick = this.onClick.bind( this )\r\n this.onDblClick = this.onDblClick.bind( this )\r\n this.onRightClick = this.onRightClick.bind( this )\r\n this.onKeyUp = this.onKeyUp.bind( this )\r\n \r\n }\r\n\r\n start ( options: StartOptions ) {\r\n\r\n this.options = options\r\n\r\n this.drawing = true\r\n\r\n this.ssp.signals.mouseDown.add( this.onMouseDowm )\r\n this.ssp.signals.mouseMove.add( this.onMouseMove )\r\n this.ssp.signals.click.add( this.onClick )\r\n this.ssp.signals.dblClick.add( this.onDblClick )\r\n this.ssp.signals.rightClick.add( this.onRightClick )\r\n this.ssp.signals.keyUp.add( this.onKeyUp )\r\n \r\n }\r\n\r\n undo () {\r\n\r\n const poppedNode = this.nodes.pop()\r\n\r\n if ( poppedNode ) {\r\n\r\n this.renderTopology( this.nodes )\r\n this.options.onUndo?.( poppedNode )\r\n \r\n }\r\n \r\n }\r\n\r\n done () {\r\n\r\n this.renderTopology( this.nodes )\r\n this.options.onDone?.( [ ...this.nodes ], this.topology )\r\n this.stop()\r\n \r\n }\r\n\r\n cancel () {\r\n\r\n if ( this.topology ) this.ssp.removeObject( this.topology )\r\n this.options.onCancel?.()\r\n this.stop()\r\n \r\n }\r\n\r\n private stop () {\r\n\r\n this.nodes = []\r\n this.topology = null\r\n\r\n this.mouseDownNode = null\r\n this.mouseDownObject = null\r\n this.mouseMoveNode = null\r\n\r\n this.options = {\r\n id: 'drawing_topology',\r\n type: 'line',\r\n nodes: [],\r\n }\r\n\r\n this.drawing = false\r\n\r\n this.ssp.signals.mouseDown.remove( this.onMouseDowm )\r\n this.ssp.signals.mouseMove.remove( this.onMouseMove )\r\n this.ssp.signals.click.remove( this.onClick )\r\n this.ssp.signals.dblClick.remove( this.onDblClick )\r\n this.ssp.signals.rightClick.remove( this.onRightClick )\r\n this.ssp.signals.keyUp.remove( this.onKeyUp )\r\n \r\n }\r\n\r\n private onMouseDowm ( e: MouseEvent ) {\r\n\r\n const [ intersect ] = this.ssp.viewport.getIntersects( e )\r\n \r\n if ( intersect ) {\r\n\r\n const { object, point, } = intersect\r\n\r\n const rs = randomString()\r\n\r\n this.mouseDownNode = {\r\n id: `node${rs}`,\r\n name: `node${rs}`,\r\n position: point.setY( point.y + 0.01 ),\r\n graphs: [],\r\n }\r\n this.mouseDownObject = object\r\n \r\n }\r\n\r\n }\r\n\r\n private onMouseMove ( e: MouseEvent ) {\r\n\r\n const [ intersect ] = this.ssp.viewport.getIntersects( e )\r\n\r\n if ( intersect ) {\r\n\r\n const rs = randomString()\r\n\r\n this.mouseMoveNode = {\r\n id: `node${rs}`,\r\n name: `node${rs}`,\r\n position: intersect.point.clone().setY( intersect.point.y ),\r\n graphs: [],\r\n }\r\n this.renderTopology( [ ...this.nodes, this.mouseMoveNode ] )\r\n \r\n }\r\n \r\n }\r\n\r\n private onClick ( ) {\r\n\r\n this.pushNode()\r\n \r\n }\r\n\r\n private onDblClick ( ) {\r\n\r\n this.pushNode()\r\n\r\n this.options.onDone?.( [ ...this.nodes ], this.topology )\r\n this.stop()\r\n \r\n }\r\n\r\n private onRightClick ( ) {\r\n\r\n this.undo()\r\n \r\n }\r\n\r\n private onKeyUp ( e: KeyboardEvent ) {\r\n\r\n switch ( e.code ) {\r\n\r\n case 'Backspace':\r\n this.undo()\r\n break\r\n case 'Enter':\r\n this.done()\r\n break\r\n case 'Escape':\r\n this.cancel()\r\n break\r\n \r\n }\r\n \r\n }\r\n\r\n private pushNode () {\r\n\r\n if ( this.mouseDownNode && this.mouseDownObject ) {\r\n\r\n this.nodes.push( this.mouseDownNode )\r\n this.renderTopology( this.nodes )\r\n this.options.onAdd?.( this.mouseDownNode, this.mouseDownObject )\r\n this.mouseDownNode = null\r\n this.mouseDownObject = null\r\n \r\n }\r\n \r\n }\r\n\r\n\r\n private renderTopology ( nodes: TopologyNodeInfo[] ) {\r\n\r\n if ( this.topology ) {\r\n\r\n this.ssp.resetTopologyNodes( this.topology, nodes )\r\n \r\n } else {\r\n\r\n this.topology = this.ssp.createTopology( {\r\n ...this.options,\r\n // 正在绘制中的路径不在导航计算范围内,所以类型使用 network,因为 line 会移动计算\r\n type: 'line',\r\n nodes,\r\n } )\r\n \r\n }\r\n\r\n }\r\n\r\n}\r\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soonspacejs/plugin-drawing-topology",
|
|
3
3
|
"pluginName": "DrawingTopologyPlugin",
|
|
4
|
-
"version": "2.13.
|
|
4
|
+
"version": "2.13.7",
|
|
5
5
|
"description": "DrawingTopologyPlugin plugin for SoonSpace.js",
|
|
6
6
|
"main": "dist/index.esm.js",
|
|
7
7
|
"module": "dist/index.esm.js",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
],
|
|
14
14
|
"author": "xunwei",
|
|
15
15
|
"license": "UNLICENSED",
|
|
16
|
-
"gitHead": "
|
|
16
|
+
"gitHead": "550040550bf20ec0015982ff1159d0cfe9b35ed3",
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"soonspacejs": "2.13.
|
|
18
|
+
"soonspacejs": "2.13.7"
|
|
19
19
|
}
|
|
20
20
|
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Object3D } from 'three';
|
|
2
|
-
import SoonSpace, { TopologyNodeInfo } from 'soonspacejs';
|
|
3
|
-
import type { Topology, TopologyInfo } from 'soonspacejs';
|
|
4
|
-
export interface StartOptions extends TopologyInfo {
|
|
5
|
-
onCancel?: () => void;
|
|
6
|
-
onAdd?: (node: TopologyNodeInfo, intersectObject: Object3D) => void;
|
|
7
|
-
onUndo?: (node: TopologyNodeInfo) => void;
|
|
8
|
-
onDone?: (nodes: TopologyNodeInfo[], topology: Topology | null) => void;
|
|
9
|
-
}
|
|
10
|
-
export default class DrawIngTopologyPlugin {
|
|
11
|
-
readonly ssp: SoonSpace;
|
|
12
|
-
readonly viewport: SoonSpace['viewport'];
|
|
13
|
-
drawing: boolean;
|
|
14
|
-
nodes: TopologyNodeInfo[];
|
|
15
|
-
topology: Topology | null;
|
|
16
|
-
private mouseDownNode;
|
|
17
|
-
private mouseDownObject;
|
|
18
|
-
private mouseMoveNode;
|
|
19
|
-
private options;
|
|
20
|
-
constructor(ssp: SoonSpace);
|
|
21
|
-
start(options: StartOptions): void;
|
|
22
|
-
undo(): void;
|
|
23
|
-
done(): void;
|
|
24
|
-
cancel(): void;
|
|
25
|
-
private stop;
|
|
26
|
-
private onMouseDowm;
|
|
27
|
-
private onMouseMove;
|
|
28
|
-
private onClick;
|
|
29
|
-
private onDblClick;
|
|
30
|
-
private onRightClick;
|
|
31
|
-
private onKeyUp;
|
|
32
|
-
private pushNode;
|
|
33
|
-
private renderTopology;
|
|
34
|
-
}
|