model-action-younuo 0.0.0-stage → 1.0.1
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 +86 -3
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/Action.d.ts +84 -0
- package/dist/modules/Action.d.ts.map +1 -0
- package/dist/modules/Action.js +213 -0
- package/dist/modules/Action.js.map +1 -0
- package/dist/modules/Building.d.ts +31 -0
- package/dist/modules/Building.d.ts.map +1 -0
- package/dist/modules/Building.js +49 -0
- package/dist/modules/Building.js.map +1 -0
- package/dist/modules/CameraView.d.ts +15 -0
- package/dist/modules/CameraView.d.ts.map +1 -0
- package/dist/modules/CameraView.js +21 -0
- package/dist/modules/CameraView.js.map +1 -0
- package/dist/modules/Effect.d.ts +10 -0
- package/dist/modules/Effect.d.ts.map +1 -0
- package/dist/modules/Effect.js +24 -0
- package/dist/modules/Effect.js.map +1 -0
- package/dist/modules/Environment.d.ts +20 -0
- package/dist/modules/Environment.d.ts.map +1 -0
- package/dist/modules/Environment.js +46 -0
- package/dist/modules/Environment.js.map +1 -0
- package/dist/modules/Focus.d.ts +19 -0
- package/dist/modules/Focus.d.ts.map +1 -0
- package/dist/modules/Focus.js +30 -0
- package/dist/modules/Focus.js.map +1 -0
- package/dist/modules/GameMode.d.ts +16 -0
- package/dist/modules/GameMode.d.ts.map +1 -0
- package/dist/modules/GameMode.js +31 -0
- package/dist/modules/GameMode.js.map +1 -0
- package/dist/modules/Init.d.ts +36 -0
- package/dist/modules/Init.d.ts.map +1 -0
- package/dist/modules/Init.js +45 -0
- package/dist/modules/Init.js.map +1 -0
- package/dist/modules/Path.d.ts +43 -0
- package/dist/modules/Path.d.ts.map +1 -0
- package/dist/modules/Path.js +80 -0
- package/dist/modules/Path.js.map +1 -0
- package/dist/modules/Patrol.d.ts +36 -0
- package/dist/modules/Patrol.d.ts.map +1 -0
- package/dist/modules/Patrol.js +56 -0
- package/dist/modules/Patrol.js.map +1 -0
- package/dist/modules/Poi.d.ts +83 -0
- package/dist/modules/Poi.d.ts.map +1 -0
- package/dist/modules/Poi.js +129 -0
- package/dist/modules/Poi.js.map +1 -0
- package/dist/modules/SceneAsset.d.ts +25 -0
- package/dist/modules/SceneAsset.d.ts.map +1 -0
- package/dist/modules/SceneAsset.js +51 -0
- package/dist/modules/SceneAsset.js.map +1 -0
- package/dist/modules/ScenePoi.d.ts +10 -0
- package/dist/modules/ScenePoi.d.ts.map +1 -0
- package/dist/modules/ScenePoi.js +18 -0
- package/dist/modules/ScenePoi.js.map +1 -0
- package/dist/modules/Status.d.ts +33 -0
- package/dist/modules/Status.d.ts.map +1 -0
- package/dist/modules/Status.js +45 -0
- package/dist/modules/Status.js.map +1 -0
- package/package.json +25 -6
- package/src/index.ts +39 -0
- package/src/modules/Action.ts +264 -0
- package/src/modules/Building.ts +58 -0
- package/src/modules/CameraView.ts +22 -0
- package/src/modules/Environment.ts +50 -0
- package/src/modules/Focus.ts +31 -0
- package/src/modules/Init.ts +73 -0
- package/src/modules/Path.ts +100 -0
- package/src/modules/Patrol.ts +79 -0
- package/src/modules/Poi.ts +165 -0
- package/src/modules/Status.ts +49 -0
package/README.md
CHANGED
|
@@ -1,3 +1,86 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# model-action-younuo
|
|
2
|
+
|
|
3
|
+
三维轻量化三维(iframe 内嵌)与外部页面的通信封装。
|
|
4
|
+
|
|
5
|
+
协议依据:[轻量化API接口协议-基线版本](https://docs.qq.com/doc/DTU9zRWRZZVVRU0FZ)
|
|
6
|
+
调用方法名尽量对齐 `model-action`,**发送的 fName / 字段以文档为准**。
|
|
7
|
+
|
|
8
|
+
## 安装
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm i
|
|
12
|
+
npm run build
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 快速开始
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import {
|
|
19
|
+
InitAction,
|
|
20
|
+
FocusAction,
|
|
21
|
+
StatusAction,
|
|
22
|
+
PoiAction,
|
|
23
|
+
CameraViewAction,
|
|
24
|
+
EnvironmentAction,
|
|
25
|
+
BuildingAction,
|
|
26
|
+
PathAction,
|
|
27
|
+
onInnerMessage,
|
|
28
|
+
} from 'model-action-younuo'
|
|
29
|
+
|
|
30
|
+
InitAction.initVideo({
|
|
31
|
+
container: document.getElementById('model-box'),
|
|
32
|
+
onMessage: (params) => console.log('三维推送', params),
|
|
33
|
+
onLoadStatus: (ok) => console.log('加载完成', ok),
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
await EnvironmentAction.weather('sun')
|
|
37
|
+
await CameraViewAction.default() // → reset
|
|
38
|
+
await PoiAction.poiShowHideByType('show', 'Camera') // → poiShow
|
|
39
|
+
await FocusAction.focus('1000$1$0$0') // → poiFly mode=normal
|
|
40
|
+
await StatusAction.setAlarm('1000$1$0$0') // → poiFly mode=alarm
|
|
41
|
+
await StatusAction.setChecked('1000$1$0$0') // → poiFly mode=checked
|
|
42
|
+
await StatusAction.setOffline('1000$1$0$0') // → poiFly mode=offline
|
|
43
|
+
await StatusAction.setNormal('1000$1$0$0') // → poiFly mode=normal
|
|
44
|
+
await BuildingAction.floorFly('JXL', '1F') // → floorFly(build + floorName)
|
|
45
|
+
await BuildingAction.buildingLayer('JXL', '1F') // 同 floorFly
|
|
46
|
+
await BuildingAction.getBuildings() // → buildInfo action=all
|
|
47
|
+
// 轨迹:命令走文档 faceLine
|
|
48
|
+
await PathAction.pathAdd(line, 'Person') // → faceLine draw
|
|
49
|
+
await PathAction.pathMove('start') // → faceLine start
|
|
50
|
+
await PathAction.pathShowHideRemove('remove') // → faceLine clear
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 文档已覆盖的发送函数(fName)
|
|
54
|
+
|
|
55
|
+
| fName | 模块方法 |
|
|
56
|
+
|---|---|
|
|
57
|
+
| `weather` | `EnvironmentAction.weather` |
|
|
58
|
+
| `reset` | `CameraViewAction.default` / `reset` |
|
|
59
|
+
| `roam` | `EnvironmentAction.roam` |
|
|
60
|
+
| `floorFly` | `BuildingAction.floorFly(build, floorName)` / `buildingLayer(buildingId, floorName)` |
|
|
61
|
+
| `closeBuild` | `BuildingAction.closeBuild(build?)`(build 可不传) |
|
|
62
|
+
| `buildInfo` | `BuildingAction.getBuildings` |
|
|
63
|
+
| `poiFly` | `FocusAction.focus(mode)`;`StatusAction.setAlarm` / `setChecked` / `setOffline` / `setNormal`;`PoiAction.poiHide(channelCode)`(action=hide) |
|
|
64
|
+
| `poiShow` / `poiHide` | `PoiAction.poiShowHideByType` / `poiHideAll` |
|
|
65
|
+
| `poiChannels` | `PoiAction.poiChannels(data)`(初始化已打点列表 → 三维渲染) |
|
|
66
|
+
| `addControl` | `PoiAction.addControl` |
|
|
67
|
+
| `poiInfo` | `PoiAction.poiInfo` |
|
|
68
|
+
| `savePoi` | `PoiAction.savePoi` |
|
|
69
|
+
| `updatePoi` | `PoiAction.updatePoi` |
|
|
70
|
+
| `poiOnline` | `PoiAction.poiOnline` / `StatusAction.poiOnline` |
|
|
71
|
+
| `poiBaozha` | `PoiAction.poiBaozha` |
|
|
72
|
+
| `faceLine` | `PathAction.pathAdd` / `pathMove(start\|restart)` / `pathShowHideRemove(remove\|hide)` |
|
|
73
|
+
| `spxlLine` | `PatrolAction.*`(文档标注完善中) |
|
|
74
|
+
|
|
75
|
+
文档无对应项的方法(如 `pathUpdateMovingParam`、`pause/stop`)不会伪造命令,仅 warn 后返回。
|
|
76
|
+
|
|
77
|
+
三维 → 前端推送(监听,非发送):`load`、`build`、`floor`、`poi.click`、`faceLine.wait/end`、`spxlLine.info` 等,通过 `onMessage` / `onInnerMessage` / `onFloorEvent` / `onPoiEvent` / `onLoadStatusChange` / `onBuildEvent` 接收。
|
|
78
|
+
|
|
79
|
+
## 切换 model-action
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
// UE
|
|
83
|
+
import { FocusAction, InitAction } from 'model-action'
|
|
84
|
+
// 三维
|
|
85
|
+
import { FocusAction, InitAction } from 'model-action-younuo'
|
|
86
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { Action, sendParam, onLoadStatusChange, onBuildEvent, onFloorEvent, onPoiEvent, onInnerMessage, setModelBridgeConfig, installModelBridge, uninstallModelBridge, } from './modules/Action';
|
|
2
|
+
export type { SendParam, OuterMessage, InnerMessage, ModelBridgeConfig, RequiredSome, } from './modules/Action';
|
|
3
|
+
export { InitAction } from './modules/Init';
|
|
4
|
+
export type { InitVideoOptions } from './modules/Init';
|
|
5
|
+
export { FocusAction } from './modules/Focus';
|
|
6
|
+
export { PoiAction } from './modules/Poi';
|
|
7
|
+
export type { PoiChannelItem } from './modules/Poi';
|
|
8
|
+
export { BuildingAction } from './modules/Building';
|
|
9
|
+
export { CameraViewAction } from './modules/CameraView';
|
|
10
|
+
export { EnvironmentAction } from './modules/Environment';
|
|
11
|
+
export type { WeatherType } from './modules/Environment';
|
|
12
|
+
export { StatusAction } from './modules/Status';
|
|
13
|
+
export { PathAction, FaceLineAction } from './modules/Path';
|
|
14
|
+
export type { FaceLinePoint, PathPoint, PathPublicUsedType, } from './modules/Path';
|
|
15
|
+
export { PatrolAction } from './modules/Patrol';
|
|
16
|
+
export type { PatrolLineConfig } from './modules/Patrol';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,YAAY,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EACR,aAAa,EACb,SAAS,EACT,kBAAkB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { Action, sendParam, onLoadStatusChange, onBuildEvent, onFloorEvent, onPoiEvent, onInnerMessage, setModelBridgeConfig, installModelBridge, uninstallModelBridge, } from './modules/Action';
|
|
2
|
+
export { InitAction } from './modules/Init';
|
|
3
|
+
export { FocusAction } from './modules/Focus';
|
|
4
|
+
export { PoiAction } from './modules/Poi';
|
|
5
|
+
export { BuildingAction } from './modules/Building';
|
|
6
|
+
export { CameraViewAction } from './modules/CameraView';
|
|
7
|
+
export { EnvironmentAction } from './modules/Environment';
|
|
8
|
+
export { StatusAction } from './modules/Status';
|
|
9
|
+
export { PathAction, FaceLineAction } from './modules/Path';
|
|
10
|
+
export { PatrolAction } from './modules/Patrol';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAM5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 三维轻量化 iframe postMessage 通信核心
|
|
3
|
+
* 调用风格对齐 UE 版 model-action 的 Action.sendParam
|
|
4
|
+
*/
|
|
5
|
+
export type RequiredSome<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
|
|
6
|
+
export interface SendParam {
|
|
7
|
+
cmd: string;
|
|
8
|
+
/** 三维函数名;不传则用 cmd */
|
|
9
|
+
fName?: string;
|
|
10
|
+
data?: {
|
|
11
|
+
action?: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
};
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
/** 向外发送的信封(配对用 params.requestId) */
|
|
17
|
+
export interface OuterMessage {
|
|
18
|
+
from: 'outer';
|
|
19
|
+
fName: string;
|
|
20
|
+
params: any;
|
|
21
|
+
}
|
|
22
|
+
/** 三维回传的信封(应答时带回 requestId,主动推送可无) */
|
|
23
|
+
export interface InnerMessage {
|
|
24
|
+
from: 'inner';
|
|
25
|
+
/** 应答配对 ID;也可放在 params.requestId */
|
|
26
|
+
requestId?: string;
|
|
27
|
+
fName?: string;
|
|
28
|
+
params?: any;
|
|
29
|
+
}
|
|
30
|
+
export interface ModelBridgeConfig {
|
|
31
|
+
onMessage?: (params: any) => void;
|
|
32
|
+
onLog?: (...args: any[]) => void;
|
|
33
|
+
}
|
|
34
|
+
export declare class Action {
|
|
35
|
+
private static pendingRequests;
|
|
36
|
+
private static defaultTimeout;
|
|
37
|
+
private static iframe;
|
|
38
|
+
private static targetOrigin;
|
|
39
|
+
private static installed;
|
|
40
|
+
private static onLog?;
|
|
41
|
+
private static config;
|
|
42
|
+
private static loadStatusHandlers;
|
|
43
|
+
private static buildEventHandlers;
|
|
44
|
+
private static floorEventHandlers;
|
|
45
|
+
private static poiEventHandlers;
|
|
46
|
+
private static innerMessageHandlers;
|
|
47
|
+
static setOnLog(onLog?: (...args: any[]) => void): void;
|
|
48
|
+
static setConfig(partial: ModelBridgeConfig): void;
|
|
49
|
+
/** 指定三维 iframe;不传则发送时取页面第一个 iframe */
|
|
50
|
+
static setIframe(iframe: HTMLIFrameElement | null): void;
|
|
51
|
+
static setTargetOrigin(origin: string): void;
|
|
52
|
+
static onLoadStatusChange(handler: (success: boolean) => void): () => boolean;
|
|
53
|
+
static onBuildEvent(handler: (info: any) => void): () => boolean;
|
|
54
|
+
static onFloorEvent(handler: (params: any) => void): () => boolean;
|
|
55
|
+
static onPoiEvent(handler: (params: any) => void): () => boolean;
|
|
56
|
+
/** 订阅三维主动推送,返回取消订阅函数 */
|
|
57
|
+
static onInnerMessage(handler: (params: any) => void): () => boolean;
|
|
58
|
+
private static generateRequestId;
|
|
59
|
+
/** 应答配对:信封 requestId 优先,否则取 params.requestId */
|
|
60
|
+
private static resolveRequestId;
|
|
61
|
+
private static resolveIframe;
|
|
62
|
+
/**
|
|
63
|
+
* 统一发送入口(对齐 UE 版 Action.sendParam)。
|
|
64
|
+
* - fName 优先取 param.fName,否则用 cmd
|
|
65
|
+
* - 信封:{ from: 'outer', fName, params },params 含 requestId 用于应答配对
|
|
66
|
+
*/
|
|
67
|
+
static sendParam<T extends SendParam>(param: T, msg?: string, timeout?: number): Promise<any>;
|
|
68
|
+
private static handleEvent;
|
|
69
|
+
private static onWindowMessage;
|
|
70
|
+
/** 安装 window message 监听(InitAction.initVideo 会调用) */
|
|
71
|
+
static install(onMessage?: (data: any) => void): void;
|
|
72
|
+
static uninstall(): void;
|
|
73
|
+
}
|
|
74
|
+
/** 便捷导出 */
|
|
75
|
+
export declare const sendParam: typeof Action.sendParam;
|
|
76
|
+
export declare const onLoadStatusChange: typeof Action.onLoadStatusChange;
|
|
77
|
+
export declare const onBuildEvent: typeof Action.onBuildEvent;
|
|
78
|
+
export declare const onFloorEvent: typeof Action.onFloorEvent;
|
|
79
|
+
export declare const onPoiEvent: typeof Action.onPoiEvent;
|
|
80
|
+
export declare const onInnerMessage: typeof Action.onInnerMessage;
|
|
81
|
+
export declare const setModelBridgeConfig: typeof Action.setConfig;
|
|
82
|
+
export declare const installModelBridge: () => void;
|
|
83
|
+
export declare const uninstallModelBridge: () => void;
|
|
84
|
+
//# sourceMappingURL=Action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/modules/Action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 三维轻量化 iframe postMessage 通信核心
|
|
3
|
+
* 调用风格对齐 UE 版 model-action 的 Action.sendParam
|
|
4
|
+
*/
|
|
5
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
6
|
+
var t = {};
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
10
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
11
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
12
|
+
t[p[i]] = s[p[i]];
|
|
13
|
+
}
|
|
14
|
+
return t;
|
|
15
|
+
};
|
|
16
|
+
var _a;
|
|
17
|
+
export class Action {
|
|
18
|
+
static setOnLog(onLog) {
|
|
19
|
+
this.onLog = onLog;
|
|
20
|
+
this.config.onLog = onLog;
|
|
21
|
+
}
|
|
22
|
+
static setConfig(partial) {
|
|
23
|
+
Object.assign(this.config, partial);
|
|
24
|
+
if (partial.onLog)
|
|
25
|
+
this.onLog = partial.onLog;
|
|
26
|
+
}
|
|
27
|
+
/** 指定三维 iframe;不传则发送时取页面第一个 iframe */
|
|
28
|
+
static setIframe(iframe) {
|
|
29
|
+
this.iframe = iframe;
|
|
30
|
+
}
|
|
31
|
+
static setTargetOrigin(origin) {
|
|
32
|
+
this.targetOrigin = origin || '*';
|
|
33
|
+
}
|
|
34
|
+
static onLoadStatusChange(handler) {
|
|
35
|
+
this.loadStatusHandlers.add(handler);
|
|
36
|
+
return () => this.loadStatusHandlers.delete(handler);
|
|
37
|
+
}
|
|
38
|
+
static onBuildEvent(handler) {
|
|
39
|
+
this.buildEventHandlers.add(handler);
|
|
40
|
+
return () => this.buildEventHandlers.delete(handler);
|
|
41
|
+
}
|
|
42
|
+
static onFloorEvent(handler) {
|
|
43
|
+
this.floorEventHandlers.add(handler);
|
|
44
|
+
return () => this.floorEventHandlers.delete(handler);
|
|
45
|
+
}
|
|
46
|
+
static onPoiEvent(handler) {
|
|
47
|
+
this.poiEventHandlers.add(handler);
|
|
48
|
+
return () => this.poiEventHandlers.delete(handler);
|
|
49
|
+
}
|
|
50
|
+
/** 订阅三维主动推送,返回取消订阅函数 */
|
|
51
|
+
static onInnerMessage(handler) {
|
|
52
|
+
this.innerMessageHandlers.add(handler);
|
|
53
|
+
return () => this.innerMessageHandlers.delete(handler);
|
|
54
|
+
}
|
|
55
|
+
static generateRequestId() {
|
|
56
|
+
return `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
57
|
+
}
|
|
58
|
+
/** 应答配对:信封 requestId 优先,否则取 params.requestId */
|
|
59
|
+
static resolveRequestId(info) {
|
|
60
|
+
var _b;
|
|
61
|
+
return info.requestId || ((_b = info.params) === null || _b === void 0 ? void 0 : _b.requestId);
|
|
62
|
+
}
|
|
63
|
+
static resolveIframe() {
|
|
64
|
+
var _b;
|
|
65
|
+
if ((_b = this.iframe) === null || _b === void 0 ? void 0 : _b.contentWindow)
|
|
66
|
+
return this.iframe;
|
|
67
|
+
const el = document.getElementsByTagName('iframe')[0] || null;
|
|
68
|
+
return el;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 统一发送入口(对齐 UE 版 Action.sendParam)。
|
|
72
|
+
* - fName 优先取 param.fName,否则用 cmd
|
|
73
|
+
* - 信封:{ from: 'outer', fName, params },params 含 requestId 用于应答配对
|
|
74
|
+
*/
|
|
75
|
+
static sendParam(param, msg = '', timeout = this.defaultTimeout) {
|
|
76
|
+
var _b;
|
|
77
|
+
const requestId = param.requestId || this.generateRequestId();
|
|
78
|
+
const _c = param, { fName: fNameOpt } = _c, rest = __rest(_c, ["fName"]);
|
|
79
|
+
const params = Object.assign(Object.assign({}, rest), { requestId });
|
|
80
|
+
const fName = fNameOpt || param.cmd || 'action';
|
|
81
|
+
const info = {
|
|
82
|
+
from: 'outer',
|
|
83
|
+
fName,
|
|
84
|
+
params,
|
|
85
|
+
};
|
|
86
|
+
(_b = this.onLog) === null || _b === void 0 ? void 0 : _b.call(this, {
|
|
87
|
+
content: `发送给三维|${msg} : ${JSON.stringify(info)}`,
|
|
88
|
+
operTime: Date.now(),
|
|
89
|
+
});
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
var _b, _c;
|
|
92
|
+
const iframe = this.resolveIframe();
|
|
93
|
+
if (!(iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow)) {
|
|
94
|
+
(_b = this.onLog) === null || _b === void 0 ? void 0 : _b.call(this, {
|
|
95
|
+
content: `三维 iframe 未就绪,消息未发送: ${JSON.stringify(info)}`,
|
|
96
|
+
operTime: Date.now(),
|
|
97
|
+
});
|
|
98
|
+
resolve(null);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const timeoutHandle = setTimeout(() => {
|
|
102
|
+
this.pendingRequests.delete(requestId);
|
|
103
|
+
reject(new Error(`请求等待超时(三维未返回): ${msg} [requestId=${requestId}]`));
|
|
104
|
+
}, timeout);
|
|
105
|
+
this.pendingRequests.set(requestId, {
|
|
106
|
+
resolve: (value) => {
|
|
107
|
+
clearTimeout(timeoutHandle);
|
|
108
|
+
resolve(value);
|
|
109
|
+
},
|
|
110
|
+
reject: (reason) => {
|
|
111
|
+
clearTimeout(timeoutHandle);
|
|
112
|
+
reject(reason);
|
|
113
|
+
},
|
|
114
|
+
timeout: timeoutHandle,
|
|
115
|
+
});
|
|
116
|
+
try {
|
|
117
|
+
iframe.contentWindow.postMessage(info, this.targetOrigin);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
clearTimeout(timeoutHandle);
|
|
121
|
+
this.pendingRequests.delete(requestId);
|
|
122
|
+
(_c = this.onLog) === null || _c === void 0 ? void 0 : _c.call(this, {
|
|
123
|
+
content: `发送给三维失败: ${error}`,
|
|
124
|
+
operTime: Date.now(),
|
|
125
|
+
});
|
|
126
|
+
reject(error);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
static handleEvent(params = {}) {
|
|
131
|
+
var _b, _c;
|
|
132
|
+
switch (params.cmd) {
|
|
133
|
+
case 'load':
|
|
134
|
+
this.loadStatusHandlers.forEach((fn) => fn(!!params.success));
|
|
135
|
+
break;
|
|
136
|
+
case 'build':
|
|
137
|
+
this.buildEventHandlers.forEach((fn) => fn(params));
|
|
138
|
+
break;
|
|
139
|
+
case 'floor':
|
|
140
|
+
this.floorEventHandlers.forEach((fn) => fn(params));
|
|
141
|
+
break;
|
|
142
|
+
case 'poi':
|
|
143
|
+
this.poiEventHandlers.forEach((fn) => fn(params));
|
|
144
|
+
break;
|
|
145
|
+
default:
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
// 通用回调 + 全量订阅(业务可按 cmd 自行过滤)
|
|
149
|
+
(_c = (_b = this.config).onMessage) === null || _c === void 0 ? void 0 : _c.call(_b, params);
|
|
150
|
+
this.innerMessageHandlers.forEach((fn) => fn(params));
|
|
151
|
+
}
|
|
152
|
+
/** 安装 window message 监听(InitAction.initVideo 会调用) */
|
|
153
|
+
static install(onMessage) {
|
|
154
|
+
if (onMessage) {
|
|
155
|
+
this.config.onMessage = onMessage;
|
|
156
|
+
}
|
|
157
|
+
if (this.installed)
|
|
158
|
+
return;
|
|
159
|
+
window.addEventListener('message', this.onWindowMessage, false);
|
|
160
|
+
this.installed = true;
|
|
161
|
+
}
|
|
162
|
+
static uninstall() {
|
|
163
|
+
window.removeEventListener('message', this.onWindowMessage, false);
|
|
164
|
+
this.installed = false;
|
|
165
|
+
this.pendingRequests.forEach((req) => {
|
|
166
|
+
clearTimeout(req.timeout);
|
|
167
|
+
req.resolve(null);
|
|
168
|
+
});
|
|
169
|
+
this.pendingRequests.clear();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
_a = Action;
|
|
173
|
+
Action.pendingRequests = new Map();
|
|
174
|
+
Action.defaultTimeout = 10000;
|
|
175
|
+
Action.iframe = null;
|
|
176
|
+
Action.targetOrigin = '*';
|
|
177
|
+
Action.installed = false;
|
|
178
|
+
Action.config = {};
|
|
179
|
+
Action.loadStatusHandlers = new Set();
|
|
180
|
+
Action.buildEventHandlers = new Set();
|
|
181
|
+
Action.floorEventHandlers = new Set();
|
|
182
|
+
Action.poiEventHandlers = new Set();
|
|
183
|
+
Action.innerMessageHandlers = new Set();
|
|
184
|
+
Action.onWindowMessage = (event) => {
|
|
185
|
+
var _b, _c;
|
|
186
|
+
const info = event.data;
|
|
187
|
+
if (!info || info.from !== 'inner')
|
|
188
|
+
return;
|
|
189
|
+
(_b = _a.onLog) === null || _b === void 0 ? void 0 : _b.call(_a, {
|
|
190
|
+
content: `收到三维消息: ${JSON.stringify(info)}`,
|
|
191
|
+
operTime: Date.now(),
|
|
192
|
+
});
|
|
193
|
+
const requestId = _a.resolveRequestId(info);
|
|
194
|
+
if (requestId && _a.pendingRequests.has(requestId)) {
|
|
195
|
+
const req = _a.pendingRequests.get(requestId);
|
|
196
|
+
clearTimeout(req.timeout);
|
|
197
|
+
_a.pendingRequests.delete(requestId);
|
|
198
|
+
req.resolve(info.params);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
_a.handleEvent((_c = info.params) !== null && _c !== void 0 ? _c : info);
|
|
202
|
+
};
|
|
203
|
+
/** 便捷导出 */
|
|
204
|
+
export const sendParam = Action.sendParam.bind(Action);
|
|
205
|
+
export const onLoadStatusChange = Action.onLoadStatusChange.bind(Action);
|
|
206
|
+
export const onBuildEvent = Action.onBuildEvent.bind(Action);
|
|
207
|
+
export const onFloorEvent = Action.onFloorEvent.bind(Action);
|
|
208
|
+
export const onPoiEvent = Action.onPoiEvent.bind(Action);
|
|
209
|
+
export const onInnerMessage = Action.onInnerMessage.bind(Action);
|
|
210
|
+
export const setModelBridgeConfig = Action.setConfig.bind(Action);
|
|
211
|
+
export const installModelBridge = () => Action.install();
|
|
212
|
+
export const uninstallModelBridge = () => Action.uninstall();
|
|
213
|
+
//# sourceMappingURL=Action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/modules/Action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 建筑类 API(文档:楼层定位、关闭楼层)
|
|
3
|
+
*/
|
|
4
|
+
import { Action } from './Action';
|
|
5
|
+
export declare class BuildingAction extends Action {
|
|
6
|
+
/**
|
|
7
|
+
* 楼层定位
|
|
8
|
+
* 函数:floorFly
|
|
9
|
+
* @param build 建筑 ID
|
|
10
|
+
* @param floorName 楼层名称
|
|
11
|
+
*/
|
|
12
|
+
static floorFly(build: string | number, floorName: number | string): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* 对齐 model-action 的 buildingLayer 方法名。
|
|
15
|
+
* @param buildingId 建筑 ID
|
|
16
|
+
* @param floorName 楼层名称
|
|
17
|
+
*/
|
|
18
|
+
static buildingLayer(buildingId: string | number, floorName: string | number): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* 关闭楼层 / 退出当前建筑
|
|
21
|
+
* 函数:buildInfo,action=close
|
|
22
|
+
* @param build 建筑 ID,可不传
|
|
23
|
+
*/
|
|
24
|
+
static closeBuild(build?: string | number): Promise<any>;
|
|
25
|
+
/**
|
|
26
|
+
* 获取所有建筑 / 层级信息
|
|
27
|
+
* 函数:buildInfo,action=all
|
|
28
|
+
*/
|
|
29
|
+
static getBuildings(): Promise<any>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=Building.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Building.d.ts","sourceRoot":"","sources":["../../src/modules/Building.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,cAAe,SAAQ,MAAM;IACtC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAUlE;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5E;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAUzC;;;OAGG;IACH,MAAM,CAAC,YAAY;CAOtB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 建筑类 API(文档:楼层定位、关闭楼层)
|
|
3
|
+
*/
|
|
4
|
+
import { Action } from './Action';
|
|
5
|
+
export class BuildingAction extends Action {
|
|
6
|
+
/**
|
|
7
|
+
* 楼层定位
|
|
8
|
+
* 函数:floorFly
|
|
9
|
+
* @param build 建筑 ID
|
|
10
|
+
* @param floorName 楼层名称
|
|
11
|
+
*/
|
|
12
|
+
static floorFly(build, floorName) {
|
|
13
|
+
return this.sendParam({
|
|
14
|
+
fName: 'floorFly',
|
|
15
|
+
cmd: 'floor',
|
|
16
|
+
action: 'fly',
|
|
17
|
+
build,
|
|
18
|
+
floor: floorName,
|
|
19
|
+
}, '飞往楼层');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 对齐 model-action 的 buildingLayer 方法名。
|
|
23
|
+
* @param buildingId 建筑 ID
|
|
24
|
+
* @param floorName 楼层名称
|
|
25
|
+
*/
|
|
26
|
+
static buildingLayer(buildingId, floorName) {
|
|
27
|
+
return this.floorFly(buildingId, floorName);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 关闭楼层 / 退出当前建筑
|
|
31
|
+
* 函数:buildInfo,action=close
|
|
32
|
+
* @param build 建筑 ID,可不传
|
|
33
|
+
*/
|
|
34
|
+
static closeBuild(build) {
|
|
35
|
+
return this.sendParam(Object.assign({ fName: 'buildInfo', cmd: 'build', action: 'close' }, (build !== undefined && build !== null && build !== '' ? { build } : {})), '关闭楼层');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 获取所有建筑 / 层级信息
|
|
39
|
+
* 函数:buildInfo,action=all
|
|
40
|
+
*/
|
|
41
|
+
static getBuildings() {
|
|
42
|
+
return this.sendParam({
|
|
43
|
+
fName: 'buildInfo',
|
|
44
|
+
cmd: 'build',
|
|
45
|
+
action: 'all',
|
|
46
|
+
}, '获取所有建筑信息');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=Building.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Building.js","sourceRoot":"","sources":["../../src/modules/Building.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,cAAe,SAAQ,MAAM;IACtC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAsB,EAAE,SAA0B;QAC9D,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK,EAAC,SAAS;SAClB,EAAE,MAAM,CAAC,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,UAA2B,EAAE,SAA0B;QACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,KAAuB;QACrC,OAAO,IAAI,CAAC,SAAS,iBACjB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,OAAO,IACZ,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC5E,MAAM,CAAC,CAAC;IACf,CAAC;IAGD;;;OAGG;IACH,MAAM,CAAC,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,KAAK,EAAE,WAAW;YAClB,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,KAAK;SAChB,EAAE,UAAU,CAAC,CAAC;IACnB,CAAC;CACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 视角类 API(文档:初始视角 reset)
|
|
3
|
+
* 方法名 default 对齐 model-action,发送命令以文档为准
|
|
4
|
+
*/
|
|
5
|
+
import { Action } from './Action';
|
|
6
|
+
export declare class CameraViewAction extends Action {
|
|
7
|
+
/**
|
|
8
|
+
* 回到初始视角
|
|
9
|
+
* 函数:reset
|
|
10
|
+
*/
|
|
11
|
+
static default(): Promise<any>;
|
|
12
|
+
/** 同 default,文档函数名 */
|
|
13
|
+
static reset(): Promise<any>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CameraView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraView.d.ts","sourceRoot":"","sources":["../../src/modules/CameraView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,gBAAiB,SAAQ,MAAM;IACxC;;;OAGG;IACH,MAAM,CAAC,OAAO;IAMd,sBAAsB;IACtB,MAAM,CAAC,KAAK;CAGf"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 视角类 API(文档:初始视角 reset)
|
|
3
|
+
* 方法名 default 对齐 model-action,发送命令以文档为准
|
|
4
|
+
*/
|
|
5
|
+
import { Action } from './Action';
|
|
6
|
+
export class CameraViewAction extends Action {
|
|
7
|
+
/**
|
|
8
|
+
* 回到初始视角
|
|
9
|
+
* 函数:reset
|
|
10
|
+
*/
|
|
11
|
+
static default() {
|
|
12
|
+
return this.sendParam({
|
|
13
|
+
cmd: 'reset',
|
|
14
|
+
}, '回到初始视角');
|
|
15
|
+
}
|
|
16
|
+
/** 同 default,文档函数名 */
|
|
17
|
+
static reset() {
|
|
18
|
+
return this.default();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=CameraView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraView.js","sourceRoot":"","sources":["../../src/modules/CameraView.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,gBAAiB,SAAQ,MAAM;IACxC;;;OAGG;IACH,MAAM,CAAC,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,GAAG,EAAE,OAAO;SACf,EAAC,QAAQ,CAAC,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,KAAK;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 场景特效(如疏散 Evacuate)
|
|
3
|
+
*/
|
|
4
|
+
import { Action } from './Action';
|
|
5
|
+
export declare class EffectAction extends Action {
|
|
6
|
+
static show(name: string): Promise<any>;
|
|
7
|
+
static hide(name: string): Promise<any>;
|
|
8
|
+
static setVisible(name: string, visible: boolean): Promise<any>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Effect.d.ts","sourceRoot":"","sources":["../../src/modules/Effect.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,YAAa,SAAQ,MAAM;IACpC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;IAQxB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;IAQxB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAGnD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 场景特效(如疏散 Evacuate)
|
|
3
|
+
*/
|
|
4
|
+
import { Action } from './Action';
|
|
5
|
+
export class EffectAction extends Action {
|
|
6
|
+
static show(name) {
|
|
7
|
+
return this.callInner('effect', {
|
|
8
|
+
cmd: 'effect',
|
|
9
|
+
action: 'show',
|
|
10
|
+
name,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
static hide(name) {
|
|
14
|
+
return this.callInner('effect', {
|
|
15
|
+
cmd: 'effect',
|
|
16
|
+
action: 'hide',
|
|
17
|
+
name,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
static setVisible(name, visible) {
|
|
21
|
+
return visible ? this.show(name) : this.hide(name);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=Effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Effect.js","sourceRoot":"","sources":["../../src/modules/Effect.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,YAAa,SAAQ,MAAM;IACpC,MAAM,CAAC,IAAI,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC5B,GAAG,EAAE,QAAQ;YACb,MAAM,EAAE,MAAM;YACd,IAAI;SACP,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC5B,GAAG,EAAE,QAAQ;YACb,MAAM,EAAE,MAAM;YACd,IAAI;SACP,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,OAAgB;QAC5C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;CACJ"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 场景类 API(文档:天气切换、漫游)
|
|
3
|
+
*/
|
|
4
|
+
import { Action } from './Action';
|
|
5
|
+
export type WeatherType = 'sun' | 'rain' | 'snow' | 'overcast' | 'cloudy' | string;
|
|
6
|
+
export declare class EnvironmentAction extends Action {
|
|
7
|
+
/**
|
|
8
|
+
* 天气切换
|
|
9
|
+
* 函数:weather
|
|
10
|
+
* @param type 协议值 sun/rain/snow/overcast/cloudy,或常见中文
|
|
11
|
+
*/
|
|
12
|
+
static weather(type: WeatherType): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* 围绕园区自动漫游
|
|
15
|
+
* 函数:roam
|
|
16
|
+
* @param line 线路 ID
|
|
17
|
+
*/
|
|
18
|
+
static roam(line: string): Promise<any>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../src/modules/Environment.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAmBlC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnF,qBAAa,iBAAkB,SAAQ,MAAM;IACzC;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW;IAQhC;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;CAM3B"}
|