model-action 2.3.4 → 2.3.5
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/dist/modules/Init.d.ts.map +1 -1
- package/dist/modules/Init.js +5 -2
- package/dist/modules/Init.js.map +1 -1
- package/package.json +1 -1
- package/src/modules/Init.ts +122 -119
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Init.d.ts","sourceRoot":"","sources":["../../src/modules/Init.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC7B,oCAAoC;IACpC,SAAS,EAAE,WAAW,CAAC;IACvB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B;AAED,qBAAa,UAAW,SAAQ,MAAM;IAClC;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Init.d.ts","sourceRoot":"","sources":["../../src/modules/Init.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC7B,oCAAoC;IACpC,SAAS,EAAE,WAAW,CAAC;IACvB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/B;AAED,qBAAa,UAAW,SAAQ,MAAM;IAClC;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI;CA0FvE"}
|
package/dist/modules/Init.js
CHANGED
|
@@ -21,8 +21,9 @@ export class InitAction extends Action {
|
|
|
21
21
|
console.error("解析消息失败:", error);
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
// UE 内嵌 WebBrowser:不创建 peer-stream,只挂回包
|
|
25
|
-
|
|
24
|
+
// UE 内嵌 WebBrowser / CEF:不创建 peer-stream,只挂回包
|
|
25
|
+
const isCefEnv = new URLSearchParams(window.location.search).get('env') === 'cef';
|
|
26
|
+
if (typeof (window === null || window === void 0 ? void 0 : window.ue5) === 'function' || isCefEnv) {
|
|
26
27
|
const ue = window === null || window === void 0 ? void 0 : window.ue;
|
|
27
28
|
if (ue === null || ue === void 0 ? void 0 : ue.interface) {
|
|
28
29
|
ue.interface.return = handleMessage;
|
|
@@ -46,6 +47,8 @@ export class InitAction extends Action {
|
|
|
46
47
|
// 设置 WebSocket 连接地址
|
|
47
48
|
ps.id = options.wsUrl;
|
|
48
49
|
// 将 video 元素添加到容器
|
|
50
|
+
if (!options.container)
|
|
51
|
+
return null;
|
|
49
52
|
options.container.appendChild(ps);
|
|
50
53
|
// 注册键盘和鼠标事件
|
|
51
54
|
if (ps.registerKeyboardEvents) {
|
package/dist/modules/Init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Init.js","sourceRoot":"","sources":["../../src/modules/Init.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,oCAAoC;AACpC,OAAO,mBAAmB,CAAC;AAmB3B,MAAM,OAAO,UAAW,SAAQ,MAAM;IAClC;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,OAAyB;QACtC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;YAClC,IAAI,CAAC;gBACD,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Init.js","sourceRoot":"","sources":["../../src/modules/Init.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,oCAAoC;AACpC,OAAO,mBAAmB,CAAC;AAmB3B,MAAM,OAAO,UAAW,SAAQ,MAAM;IAClC;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,OAAyB;QACtC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;YAClC,IAAI,CAAC;gBACD,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC;QAGF,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;QAClF,IAAI,OAAO,CAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,GAAG,CAAA,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;YACzD,MAAM,EAAE,GAAI,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,EAAE,CAAC;YAC/B,IAAI,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,SAAS,EAAE,CAAC;gBAChB,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,0CAA0C;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAQ,CAAC;QAEzE,OAAO;QACP,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACxC,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAClC,EAAE,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACvC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;QACrB,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAE/B,oBAAoB;QACpB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAEtB,kBAAkB;QAClB,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAElC,YAAY;QACZ,IAAI,EAAE,CAAC,sBAAsB,EAAE,CAAC;YAC5B,EAAE,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAC9B,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;QAED,SAAS;QACT,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACtC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,YAAY;QACZ,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE;;YACvC,IAAI,EAAE,EAAE,CAAC;gBACL,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;gBAC5B,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;gBACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,CAAC;YACD,MAAA,OAAO,CAAC,gBAAgB,uDAAI,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,EAAE,CAAC,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACjC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAe,EAAE,EAAE;gBAClD,IAAI,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAC9B,OAAO,CAAC,aAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,sBAAsB;gBAC1B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;gBAChC,OAAO,CAAC,SAAU,EAAE,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;CACJ"}
|
package/package.json
CHANGED
package/src/modules/Init.ts
CHANGED
|
@@ -1,119 +1,122 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 视频初始化操作方法
|
|
3
|
-
*/
|
|
4
|
-
import { Action } from "./Action";
|
|
5
|
-
// 导入 peer-stream.js 以确保自定义元素在使用前被注册
|
|
6
|
-
import "../peer-stream.js";
|
|
7
|
-
// 初始化配置选项
|
|
8
|
-
export interface InitVideoOptions {
|
|
9
|
-
/** 视频容器元素(DOM元素或ref);ue5 内嵌模式可忽略 */
|
|
10
|
-
container: HTMLElement;
|
|
11
|
-
/** WebSocket连接地址;ue5 内嵌模式可忽略 */
|
|
12
|
-
wsUrl: string;
|
|
13
|
-
/** 消息回调函数 */
|
|
14
|
-
onMessage?: (data: any) => void;
|
|
15
|
-
/** 播放开始回调函数(仅 Pixel Streaming) */
|
|
16
|
-
onPlaying?: () => void;
|
|
17
|
-
/** 排队人数变化回调函数(仅 Pixel Streaming) */
|
|
18
|
-
onQueueChange?: (seq: number) => void;
|
|
19
|
-
/** 视频元数据加载完成回调函数(仅 Pixel Streaming) */
|
|
20
|
-
onLoadedMetadata?: () => void;
|
|
21
|
-
/** 日志记录回调 **/
|
|
22
|
-
onLog?: (data: any) => void;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export class InitAction extends Action {
|
|
26
|
-
/**
|
|
27
|
-
* 初始化三维通信
|
|
28
|
-
* - 有 window.ue5:UE 内嵌浏览器,只绑定 ue.interface.return,不创建 video
|
|
29
|
-
* - 无 window.ue5:Pixel Streaming,创建 peer-stream video
|
|
30
|
-
* @returns Pixel Streaming 返回 video 元素;ue5 内嵌返回 null
|
|
31
|
-
*/
|
|
32
|
-
static initVideo(options: InitVideoOptions): HTMLVideoElement | null {
|
|
33
|
-
Action.setOnLog(options.onLog);
|
|
34
|
-
|
|
35
|
-
const handleMessage = (raw: string) => {
|
|
36
|
-
try {
|
|
37
|
-
Action.handleIncomingRawMessage(raw, options.onMessage);
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.error("解析消息失败:", error);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
ps.style.
|
|
61
|
-
ps.style.
|
|
62
|
-
ps.style.
|
|
63
|
-
ps.style.
|
|
64
|
-
ps.style.
|
|
65
|
-
ps.style.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (ps.
|
|
78
|
-
ps.
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
1
|
+
/**
|
|
2
|
+
* 视频初始化操作方法
|
|
3
|
+
*/
|
|
4
|
+
import { Action } from "./Action";
|
|
5
|
+
// 导入 peer-stream.js 以确保自定义元素在使用前被注册
|
|
6
|
+
import "../peer-stream.js";
|
|
7
|
+
// 初始化配置选项
|
|
8
|
+
export interface InitVideoOptions {
|
|
9
|
+
/** 视频容器元素(DOM元素或ref);ue5 内嵌模式可忽略 */
|
|
10
|
+
container: HTMLElement;
|
|
11
|
+
/** WebSocket连接地址;ue5 内嵌模式可忽略 */
|
|
12
|
+
wsUrl: string;
|
|
13
|
+
/** 消息回调函数 */
|
|
14
|
+
onMessage?: (data: any) => void;
|
|
15
|
+
/** 播放开始回调函数(仅 Pixel Streaming) */
|
|
16
|
+
onPlaying?: () => void;
|
|
17
|
+
/** 排队人数变化回调函数(仅 Pixel Streaming) */
|
|
18
|
+
onQueueChange?: (seq: number) => void;
|
|
19
|
+
/** 视频元数据加载完成回调函数(仅 Pixel Streaming) */
|
|
20
|
+
onLoadedMetadata?: () => void;
|
|
21
|
+
/** 日志记录回调 **/
|
|
22
|
+
onLog?: (data: any) => void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class InitAction extends Action {
|
|
26
|
+
/**
|
|
27
|
+
* 初始化三维通信
|
|
28
|
+
* - 有 window.ue5:UE 内嵌浏览器,只绑定 ue.interface.return,不创建 video
|
|
29
|
+
* - 无 window.ue5:Pixel Streaming,创建 peer-stream video
|
|
30
|
+
* @returns Pixel Streaming 返回 video 元素;ue5 内嵌返回 null
|
|
31
|
+
*/
|
|
32
|
+
static initVideo(options: InitVideoOptions): HTMLVideoElement | null {
|
|
33
|
+
Action.setOnLog(options.onLog);
|
|
34
|
+
|
|
35
|
+
const handleMessage = (raw: string) => {
|
|
36
|
+
try {
|
|
37
|
+
Action.handleIncomingRawMessage(raw, options.onMessage);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error("解析消息失败:", error);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
// UE 内嵌 WebBrowser / CEF:不创建 peer-stream,只挂回包
|
|
45
|
+
const isCefEnv = new URLSearchParams(window.location.search).get('env') === 'cef';
|
|
46
|
+
if (typeof (window as any)?.ue5 === 'function' || isCefEnv) {
|
|
47
|
+
const ue = (window as any)?.ue;
|
|
48
|
+
if (ue?.interface) {
|
|
49
|
+
ue.interface.return = handleMessage;
|
|
50
|
+
} else {
|
|
51
|
+
console.warn('initVideo: 已检测到 ue5,但未找到 ue.interface,回包可能无法接收');
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Pixel Streaming:创建 peer-stream video 元素
|
|
57
|
+
const ps = document.createElement("video", { is: "peer-stream" }) as any;
|
|
58
|
+
|
|
59
|
+
// 设置样式
|
|
60
|
+
ps.style.width = "100%";
|
|
61
|
+
ps.style.height = "100%";
|
|
62
|
+
ps.style.backgroundRepeat = "no-repeat";
|
|
63
|
+
ps.style.backgroundSize = "cover";
|
|
64
|
+
ps.style.backgroundPosition = "center";
|
|
65
|
+
ps.style.left = "0px";
|
|
66
|
+
ps.style.top = "0px";
|
|
67
|
+
ps.style.position = "absolute";
|
|
68
|
+
|
|
69
|
+
// 设置 WebSocket 连接地址
|
|
70
|
+
ps.id = options.wsUrl;
|
|
71
|
+
|
|
72
|
+
// 将 video 元素添加到容器
|
|
73
|
+
if (!options.container) return null;
|
|
74
|
+
options.container.appendChild(ps);
|
|
75
|
+
|
|
76
|
+
// 注册键盘和鼠标事件
|
|
77
|
+
if (ps.registerKeyboardEvents) {
|
|
78
|
+
ps.registerKeyboardEvents();
|
|
79
|
+
}
|
|
80
|
+
if (ps.registerMouseHoverEvents) {
|
|
81
|
+
ps.registerMouseHoverEvents();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// 监听消息事件
|
|
85
|
+
ps.addEventListener("message", (e: any) => {
|
|
86
|
+
handleMessage(e.detail);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// 监听元数据加载完成
|
|
90
|
+
ps.addEventListener("loadedmetadata", () => {
|
|
91
|
+
if (ps) {
|
|
92
|
+
ps.style.objectFit = "fill";
|
|
93
|
+
ps.style.width = "100%";
|
|
94
|
+
ps.style.height = "100%";
|
|
95
|
+
}
|
|
96
|
+
options.onLoadedMetadata?.();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// 监听排队人数变化
|
|
100
|
+
if (ps.ws && options.onQueueChange) {
|
|
101
|
+
ps.ws.addEventListener('message', (e: MessageEvent) => {
|
|
102
|
+
try {
|
|
103
|
+
const data = JSON.parse(e.data);
|
|
104
|
+
if (data.type === "playerqueue") {
|
|
105
|
+
options.onQueueChange!(data.seq);
|
|
106
|
+
}
|
|
107
|
+
} catch (error) {
|
|
108
|
+
// 忽略解析错误,可能不是 JSON 数据
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// 监听播放开始事件
|
|
114
|
+
if (options.onPlaying) {
|
|
115
|
+
ps.addEventListener("playing", () => {
|
|
116
|
+
options.onPlaying!();
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return ps;
|
|
121
|
+
}
|
|
122
|
+
}
|