@glodon-ecs/web-bridge-sdk 0.4.0 → 0.6.0
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/CHANGELOG.md +25 -17
- package/README.md +96 -95
- package/lib/index.d.ts +5 -1
- package/lib/index.es.js +1460 -1257
- package/lib/index.umd.js +3 -3
- package/package.json +35 -35
- package/.prettierrc +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
## 发布日志
|
|
2
|
-
|
|
3
|
-
#### 0.
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
#### 0.
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
#### 0.
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
#### 0.
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
## 发布日志
|
|
2
|
+
|
|
3
|
+
#### 0.6.0
|
|
4
|
+
|
|
5
|
+
- 增加销毁方法`destory`
|
|
6
|
+
|
|
7
|
+
#### 0.5.0
|
|
8
|
+
|
|
9
|
+
- 支持CCWeb(qiankun)
|
|
10
|
+
|
|
11
|
+
#### 0.4.0
|
|
12
|
+
|
|
13
|
+
- 从js迁移到ts,SDK支持类型系统
|
|
14
|
+
|
|
15
|
+
#### 0.3.0
|
|
16
|
+
|
|
17
|
+
- 兼容 CC 方法调用中需要监听异步回调事件,才能在回调事件中返回返回值
|
|
18
|
+
|
|
19
|
+
#### 0.2.0
|
|
20
|
+
|
|
21
|
+
- 兼容 SU 事件取消后,回调函数继续被调用时,函数不存在报错
|
|
22
|
+
|
|
23
|
+
#### 0.1.0
|
|
24
|
+
|
|
25
|
+
第一版 SDK
|
package/README.md
CHANGED
|
@@ -1,95 +1,96 @@
|
|
|
1
|
-
## ECS-BRIDGE-SDK
|
|
2
|
-
|
|
3
|
-
ECSHub Panel 存在与多个宿主环境交互的场景,因此抽离出桥接的 SDK,以适配不同宿主环境。
|
|
4
|
-
|
|
5
|
-
已支持:
|
|
6
|
-
|
|
7
|
-
- [
|
|
8
|
-
- [ ] QT
|
|
9
|
-
- [ ] Web(for test)
|
|
10
|
-
- [ ] Rhino
|
|
11
|
-
- [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
import
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
ECSHubBridge.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
ECSHubBridge.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
| `
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
1
|
+
## ECS-BRIDGE-SDK
|
|
2
|
+
|
|
3
|
+
ECSHub Panel 存在与多个宿主环境交互的场景,因此抽离出桥接的 SDK,以适配不同宿主环境。
|
|
4
|
+
|
|
5
|
+
已支持:
|
|
6
|
+
|
|
7
|
+
- [√] SketchUp
|
|
8
|
+
- [ ] QT
|
|
9
|
+
- [ ] Web(for test)
|
|
10
|
+
- [ ] Rhino
|
|
11
|
+
- [√] Concetto
|
|
12
|
+
- [√] ConcettoWeb
|
|
13
|
+
|
|
14
|
+
### 前置项
|
|
15
|
+
|
|
16
|
+
- node >= 16
|
|
17
|
+
|
|
18
|
+
### 安装
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @glodon-ecs/web-bridge-sdk
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 使用示例
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import ECSHubBridge, { BridgeEnv } from '@glodon-ecs/web-bridge-sdk';
|
|
28
|
+
// 或使用命名导入:import { ECSHubBridge, BridgeEnv } from "@glodon-ecs/web-bridge-sdk";
|
|
29
|
+
|
|
30
|
+
// 使用示例
|
|
31
|
+
async function main() {
|
|
32
|
+
// initialize 方法需要先被调用
|
|
33
|
+
// await ECSHubBridge.initialize(); // 自动检测初始化,QT、SU、Web环境
|
|
34
|
+
const options = { env: BridgeEnv.sketchup, logger: window.console }; // options 可选
|
|
35
|
+
await ECSHubBridge.initialize(options);
|
|
36
|
+
const bridge = ECSHubBridge.getInstance();
|
|
37
|
+
|
|
38
|
+
// 调用方法
|
|
39
|
+
const data = await bridge.callMethod('getInitialData', 'param1');
|
|
40
|
+
|
|
41
|
+
// 订阅
|
|
42
|
+
const unsubscribe = bridge.subscribe('modelChanged', (data) => {});
|
|
43
|
+
|
|
44
|
+
// 取消订阅
|
|
45
|
+
unsubscribe();
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
#### 扩展适配器
|
|
50
|
+
|
|
51
|
+
> 继承 `BaseAdapter` 并实现三个抽象方法
|
|
52
|
+
|
|
53
|
+
```ts
|
|
54
|
+
import { BaseAdapter } from '@glodon-ecs/web-bridge-sdk';
|
|
55
|
+
import type { LoggerType } from '@glodon-ecs/web-bridge-sdk';
|
|
56
|
+
|
|
57
|
+
class CADAdapter extends BaseAdapter {
|
|
58
|
+
// 初始方法
|
|
59
|
+
async init() {
|
|
60
|
+
this.client = window.CADPlugin; // 假设第三方CAD插件
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// 调用内部函数
|
|
64
|
+
async call(method: string, args: unknown[]) {
|
|
65
|
+
return this.client.execCommand(method, ...args);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 注册事件监听
|
|
69
|
+
onEvent(event: string, callback: (...args: unknown[]) => void) {
|
|
70
|
+
this.client.on(event, callback);
|
|
71
|
+
return () => this.client.off(event, callback);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// 注入自定义适配器
|
|
76
|
+
await ECSHubBridge.initialize();
|
|
77
|
+
ECSHubBridge.setAdapter(new CADAdapter(), 'cad');
|
|
78
|
+
|
|
79
|
+
// 设置自定义适配器的 client 交互对象,如 ecsClient
|
|
80
|
+
await ECSHubBridge.initialize();
|
|
81
|
+
ECSHubBridge.setAdapterClient(client);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 导出列表
|
|
85
|
+
|
|
86
|
+
| 导出 | 类型 | 说明 |
|
|
87
|
+
| --------------- | --------------- | ---------------------------------------------------------- |
|
|
88
|
+
| `ECSHubBridge` | class (default) | 桥接器主类 |
|
|
89
|
+
| `BridgeEnv` | enum | 环境枚举:`qt` / `web` / `sketchup` / `concetto` / `rhino` |
|
|
90
|
+
| `BaseAdapter` | abstract class | 适配器基类,扩展适配器时继承 |
|
|
91
|
+
| `BridgeOptions` | interface | 初始化配置项类型 |
|
|
92
|
+
| `LoggerType` | type | 日志对象类型 |
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```
|
package/lib/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare abstract class BaseAdapter {
|
|
|
26
26
|
*/
|
|
27
27
|
abstract onEvent(eventName: string, callback: (args: unknown) => void): () => void;
|
|
28
28
|
setClient(client: Client): void;
|
|
29
|
+
destroy(): void;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export declare enum BridgeEnv {
|
|
@@ -33,7 +34,8 @@ export declare enum BridgeEnv {
|
|
|
33
34
|
web = "web",
|
|
34
35
|
sketchup = "sketchup",
|
|
35
36
|
concetto = "concetto",
|
|
36
|
-
rhino = "rhino"
|
|
37
|
+
rhino = "rhino",
|
|
38
|
+
qiankun = "qiankun"
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
export declare interface BridgeOptions {
|
|
@@ -59,6 +61,7 @@ declare class ECSHubBridge {
|
|
|
59
61
|
* @param {LoggerType} [options.logger] 日志输出对象
|
|
60
62
|
*/
|
|
61
63
|
constructor(options?: BridgeOptions);
|
|
64
|
+
_isQiankun(): boolean;
|
|
62
65
|
/**
|
|
63
66
|
* 环境检测
|
|
64
67
|
* @private
|
|
@@ -119,6 +122,7 @@ declare class ECSHubBridge {
|
|
|
119
122
|
* @param {Record<string, unknown>} client 实例
|
|
120
123
|
*/
|
|
121
124
|
static setAdapterClient(client: Record<string, unknown> | null): void;
|
|
125
|
+
static destroy(): void;
|
|
122
126
|
}
|
|
123
127
|
export { ECSHubBridge }
|
|
124
128
|
export default ECSHubBridge;
|