@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 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 s from"soonspacejs";const{randomString:o}=s.utils;class i{constructor(s){this.ssp=s,this.drawing=!1,this.nodes=[],this.topology=null,this.mouseDownNode=null,this.mouseDownObject=null,this.mouseMoveNode=null,this.options={id:"drawing_topology",type:"line",nodes:[]},this.viewport=s.viewport,this.onMouseDowm=this.onMouseDowm.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onClick=this.onClick.bind(this),this.onDblClick=this.onDblClick.bind(this),this.onRightClick=this.onRightClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this)}start(s){this.options=s,this.drawing=!0,this.ssp.signals.mouseDown.add(this.onMouseDowm),this.ssp.signals.mouseMove.add(this.onMouseMove),this.ssp.signals.click.add(this.onClick),this.ssp.signals.dblClick.add(this.onDblClick),this.ssp.signals.rightClick.add(this.onRightClick),this.ssp.signals.keyUp.add(this.onKeyUp)}undo(){var s,o;const i=this.nodes.pop();i&&(this.renderTopology(this.nodes),null===(o=(s=this.options).onUndo)||void 0===o||o.call(s,i))}done(){var s,o;this.renderTopology(this.nodes),null===(o=(s=this.options).onDone)||void 0===o||o.call(s,[...this.nodes],this.topology),this.stop()}cancel(){var s,o;this.topology&&this.ssp.removeObject(this.topology),null===(o=(s=this.options).onCancel)||void 0===o||o.call(s),this.stop()}stop(){this.nodes=[],this.topology=null,this.mouseDownNode=null,this.mouseDownObject=null,this.mouseMoveNode=null,this.options={id:"drawing_topology",type:"line",nodes:[]},this.drawing=!1,this.ssp.signals.mouseDown.remove(this.onMouseDowm),this.ssp.signals.mouseMove.remove(this.onMouseMove),this.ssp.signals.click.remove(this.onClick),this.ssp.signals.dblClick.remove(this.onDblClick),this.ssp.signals.rightClick.remove(this.onRightClick),this.ssp.signals.keyUp.remove(this.onKeyUp)}onMouseDowm(s){const[i]=this.ssp.viewport.getIntersects(s);if(i){const{object:s,point:t}=i,e=o();this.mouseDownNode={id:`node${e}`,name:`node${e}`,position:t.setY(t.y+.01),graphs:[]},this.mouseDownObject=s}}onMouseMove(s){const[i]=this.ssp.viewport.getIntersects(s);if(i){const s=o();this.mouseMoveNode={id:`node${s}`,name:`node${s}`,position:i.point.clone().setY(i.point.y),graphs:[]},this.renderTopology([...this.nodes,this.mouseMoveNode])}}onClick(){this.pushNode()}onDblClick(){var s,o;this.pushNode(),null===(o=(s=this.options).onDone)||void 0===o||o.call(s,[...this.nodes],this.topology),this.stop()}onRightClick(){this.undo()}onKeyUp(s){switch(s.code){case"Backspace":this.undo();break;case"Enter":this.done();break;case"Escape":this.cancel()}}pushNode(){var s,o;this.mouseDownNode&&this.mouseDownObject&&(this.nodes.push(this.mouseDownNode),this.renderTopology(this.nodes),null===(o=(s=this.options).onAdd)||void 0===o||o.call(s,this.mouseDownNode,this.mouseDownObject),this.mouseDownNode=null,this.mouseDownObject=null)}renderTopology(s){this.topology?this.ssp.resetTopologyNodes(this.topology,s):this.topology=this.ssp.createTopology(Object.assign(Object.assign({},this.options),{type:"line",nodes:s}))}}export{i as default};
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.6",
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": "6c1113b3e61e448be7ce9463ed22a75f507d9f67",
16
+ "gitHead": "550040550bf20ec0015982ff1159d0cfe9b35ed3",
17
17
  "peerDependencies": {
18
- "soonspacejs": "2.13.6"
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
- }