@realsee/live 0.1.1 → 0.2.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.
Files changed (88) hide show
  1. package/README.md +51 -56
  2. package/docs/.nojekyll +1 -0
  3. package/docs/assets/custom.css +43 -0
  4. package/docs/assets/highlight.css +127 -0
  5. package/docs/assets/icons.css +1043 -0
  6. package/docs/assets/{images/icons.png → icons.png} +0 -0
  7. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  8. package/docs/assets/main.js +52 -0
  9. package/docs/assets/search.js +1 -0
  10. package/docs/assets/style.css +1388 -0
  11. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  12. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  13. package/docs/classes/RTCProtocol.RTCExample.html +62 -814
  14. package/docs/classes/RTCProtocol.VRWebViewRTC.html +60 -0
  15. package/docs/classes/shared_utils.Subscribe.html +55 -596
  16. package/docs/enums/RTCProtocol.RTCJoinedInfoCodeEnum.html +9 -0
  17. package/docs/enums/RTCProtocol.RTCType.html +1 -185
  18. package/docs/enums/live.BuiltinActionType.html +15 -325
  19. package/docs/enums/live.BuiltinEventType.html +7 -268
  20. package/docs/enums/live.Command.html +7 -346
  21. package/docs/enums/live.MemUserStatus.html +1 -307
  22. package/docs/enums/live.MicroStatus.html +3 -258
  23. package/docs/enums/live.UserStatus.html +9 -287
  24. package/docs/enums/live.WebSocketCloseError.html +19 -382
  25. package/docs/enums/live.WebSocketErrorType.html +1 -307
  26. package/docs/enums/live.WebSocketState.html +13 -325
  27. package/docs/index.html +327 -512
  28. package/docs/interfaces/RTCProtocol.GetVoiceSignReturnType.html +1 -0
  29. package/docs/interfaces/RTCProtocol.RTCJoinedInfo.html +1 -0
  30. package/docs/interfaces/RTCProtocol.RTCProtocol-1.html +60 -765
  31. package/docs/interfaces/RTCProtocol.VRWebViewRTCOptions.html +1 -0
  32. package/docs/interfaces/live.Live.html +119 -1302
  33. package/docs/interfaces/live.LiveOptions.html +22 -499
  34. package/docs/interfaces/live.LiveReact.html +52 -984
  35. package/docs/modules/RTCProtocol.html +17 -361
  36. package/docs/modules/live.html +103 -1219
  37. package/docs/modules/shared_utils.html +10 -248
  38. package/docs/modules.html +1 -125
  39. package/lib/RTC/BrowserRTC.d.ts +30 -0
  40. package/lib/RTC/BrowserRTC.js +163 -0
  41. package/lib/RTC/BrowserRTC.js.map +1 -0
  42. package/lib/RTC/VRWebViewRTC.d.ts +23 -0
  43. package/lib/RTC/VRWebViewRTC.js +124 -0
  44. package/lib/RTC/VRWebViewRTC.js.map +1 -0
  45. package/lib/RTC/index.d.ts +22 -0
  46. package/lib/{RTCProtocol → RTC}/index.js +3 -7
  47. package/lib/RTC/index.js.map +1 -0
  48. package/lib/createLive.d.ts +1 -1
  49. package/lib/createLive.js +50 -22
  50. package/lib/createLive.js.map +1 -1
  51. package/lib/createLiveReact.d.ts +11 -10
  52. package/lib/createLiveReact.js +4 -6
  53. package/lib/createLiveReact.js.map +1 -1
  54. package/lib/shared-utils/Subscribe.d.ts +1 -1
  55. package/lib/typings/EventType.d.ts +10 -0
  56. package/lib/typings/GetVoiceSign.d.ts +11 -0
  57. package/lib/typings/GetVoiceSign.js +3 -0
  58. package/lib/typings/GetVoiceSign.js.map +1 -0
  59. package/lib/typings/Live.d.ts +6 -4
  60. package/lib/typings/LiveMsg.d.ts +4 -0
  61. package/lib/typings/LiveMsg.js +4 -0
  62. package/lib/typings/LiveMsg.js.map +1 -1
  63. package/lib/typings/LiveOptions.d.ts +3 -7
  64. package/lib/typings/RTCEventType.d.ts +2 -14
  65. package/lib/typings/RTCEventType.js +0 -7
  66. package/lib/typings/RTCEventType.js.map +1 -1
  67. package/lib/typings/RTCJoinedInfo.d.ts +28 -0
  68. package/lib/typings/RTCJoinedInfo.js +23 -0
  69. package/lib/typings/RTCJoinedInfo.js.map +1 -0
  70. package/lib/{RTCProtocol/index.d.ts → typings/RTCProtocol.d.ts} +1 -19
  71. package/lib/typings/RTCProtocol.js +9 -0
  72. package/lib/typings/RTCProtocol.js.map +1 -0
  73. package/lib/typings/VRWebViewRTCOptions.d.ts +6 -0
  74. package/lib/typings/VRWebViewRTCOptions.js +3 -0
  75. package/lib/typings/VRWebViewRTCOptions.js.map +1 -0
  76. package/lib/typings/WebSocket.d.ts +2 -1
  77. package/lib/typings/WebSocket.js +1 -0
  78. package/lib/typings/WebSocket.js.map +1 -1
  79. package/package.json +8 -4
  80. package/umd/{RTCProtocol.046933a5.js → RTCProtocol.543610f0.js} +1 -1
  81. package/umd/createLive.a6edf473.js +1 -0
  82. package/umd/createLiveReact.e21b4514.js +1 -0
  83. package/docs/assets/css/main.css +0 -2787
  84. package/docs/assets/js/main.js +0 -248
  85. package/docs/assets/js/search.js +0 -1
  86. package/lib/RTCProtocol/index.js.map +0 -1
  87. package/umd/createLive.6845145e.js +0 -1
  88. package/umd/createLiveReact.406cf5a3.js +0 -1
@@ -1,4 +1,4 @@
1
- declare type EventMap = {
1
+ export declare type EventMap = {
2
2
  [name: string]: (...args: any[]) => void | boolean;
3
3
  };
4
4
  /**
@@ -36,6 +36,16 @@ declare type LiveEventType<Snapshot> = {
36
36
  * @param builtinMsg
37
37
  */
38
38
  'builtinEvent'(builtinMsg: BuiltinMsg): void;
39
+ /**
40
+ * 内置消息事件: 用户信息改变
41
+ * @param builtinMsg
42
+ */
43
+ 'userChange'(builtinMsg: BuiltinMsg): void;
44
+ /**
45
+ * 内置消息事件:房间信息改变
46
+ * @param builtinMsg
47
+ */
48
+ 'roomChange'(builtinMsg: BuiltinMsg): void;
39
49
  /**
40
50
  * 收到其他用户的广播消息。
41
51
  * @param evtMsg
@@ -0,0 +1,11 @@
1
+ export interface GetVoiceSignReturnType {
2
+ sdkAppId: number;
3
+ userId: string;
4
+ roomId: string | number;
5
+ userSig: string;
6
+ }
7
+ export declare type GetVoiceSign = ({ voiceId, userId, roomId }: {
8
+ voiceId: string;
9
+ userId: string;
10
+ roomId: string | number;
11
+ }) => Promise<GetVoiceSignReturnType>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=GetVoiceSign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetVoiceSign.js","sourceRoot":"","sources":["../../resources/typings/GetVoiceSign.ts"],"names":[],"mappings":""}
@@ -2,14 +2,14 @@ import { UserInfo } from './UserInfo';
2
2
  import { LiveOptions } from './LiveOptions';
3
3
  import { EventType, KeyframeTypes } from './EventType';
4
4
  import { WebSocketState } from './WebSocket';
5
- import { RTCProtocol } from '../RTCProtocol';
5
+ import { RTCProtocol } from '../typings/RTCProtocol';
6
6
  import { Subscribe } from '../shared-utils/Subscribe';
7
7
  import { BuiltinActionType, BuiltinEventType, MicroStatus } from './LiveMsg';
8
8
  /**
9
9
  * Live 实例。
10
10
  */
11
- export interface Live<Snapshot extends Record<string, any>, TicketArgs extends Record<string, any>> extends Subscribe<EventType<Snapshot>> {
12
- get options(): LiveOptions<TicketArgs>;
11
+ export interface Live<Snapshot extends Record<string, any>> extends Subscribe<EventType<Snapshot>> {
12
+ get options(): LiveOptions;
13
13
  /**
14
14
  * 更新本地用户信息
15
15
  * @param userInfo
@@ -98,7 +98,9 @@ export interface Live<Snapshot extends Record<string, any>, TicketArgs extends R
98
98
  * 限制/开启某个或某些用户同步帧数据
99
99
  * @param sync true 开启同步;false 限制同步
100
100
  * @param toUserIds 希望限制/开启同步能力的用户,为空时则面向所有用户。
101
+ * @deprecated 暂不支持
101
102
  * @returns
103
+ *
102
104
  */
103
105
  forbidSync(sync: boolean, toUserIds?: string[] | string): Promise<boolean>;
104
106
  /**
@@ -117,4 +119,4 @@ export interface Live<Snapshot extends Record<string, any>, TicketArgs extends R
117
119
  */
118
120
  revoke(): Promise<boolean>;
119
121
  }
120
- export declare type LiveActionReactCallback<Snapshot extends Record<string, any>, TicketArgs extends Record<string, any>> = Pick<Live<Snapshot, TicketArgs>, 'broadcast' | 'exit' | 'kick' | 'toggleMicro' | 'forbidMicro' | 'sendKeyframe' | 'getFramesByKey' | 'setSelfInfo' | 'updateStatus'>;
122
+ export declare type LiveActionReactCallback<Snapshot extends Record<string, any>> = Pick<Live<Snapshot>, 'broadcast' | 'exit' | 'kick' | 'toggleMicro' | 'forbidMicro' | 'sendKeyframe' | 'getFramesByKey' | 'setSelfInfo' | 'updateStatus'>;
@@ -57,6 +57,10 @@ export declare enum BuiltinActionType {
57
57
  * 修改麦克风状态。
58
58
  */
59
59
  UserMicroStatus = "change_micro_status",
60
+ /**
61
+ * 同步当前用户状态:客户端麦克风状态已经修改成功,通知服务端
62
+ */
63
+ UserMicroStatusSync = "sync_micro_status",
60
64
  /**
61
65
  * 调整某些用户的权限。
62
66
  */
@@ -48,6 +48,10 @@ var BuiltinActionType;
48
48
  * 修改麦克风状态。
49
49
  */
50
50
  BuiltinActionType["UserMicroStatus"] = "change_micro_status";
51
+ /**
52
+ * 同步当前用户状态:客户端麦克风状态已经修改成功,通知服务端
53
+ */
54
+ BuiltinActionType["UserMicroStatusSync"] = "sync_micro_status";
51
55
  /**
52
56
  * 调整某些用户的权限。
53
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LiveMsg.js","sourceRoot":"","sources":["../../resources/typings/LiveMsg.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,OAiBX;AAjBD,WAAY,OAAO;IACjB,eAAe;IACf,0CAA+B,CAAA;IAC/B,aAAa;IACb,iCAAsB,CAAA;IACtB,cAAc;IACd,+BAAoB,CAAA;IACpB,aAAa;IACb,iCAAsB,CAAA;IACtB,gBAAgB;IAChB,qCAA0B,CAAA;IAC1B,qBAAqB;IACrB,uCAA4B,CAAA;IAC5B,iBAAiB;IACjB,yCAA8B,CAAA;IAC9B,cAAc;IACd,wCAA6B,CAAA;AAC/B,CAAC,EAjBW,OAAO,GAAP,eAAO,KAAP,eAAO,QAiBlB;AA0BD;;GAEG;AACH,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,8CAA0B,CAAA;IAC1B;;OAEG;IACH,8CAA0B,CAAA;AAC5B,CAAC,EATW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAS3B;AAED;;GAEG;AACH,IAAY,iBAqBX;AArBD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,4DAAuC,CAAA;IACvC;;OAEG;IACH,yDAAoC,CAAA;IACpC;;OAEG;IACH,iDAA4B,CAAA;IAC5B;;OAEG;IACH,6CAAwB,CAAA;IACxB;;OAEG;IACH,wCAAmB,CAAA;AACrB,CAAC,EArBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAqB5B;AAiBD;;GAEG;AACH,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAgBD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,OAAe;IAC1C,IAAI;QACF,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAM,QAAM,GAAwB;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,KAAK,EAAE,GAAG,CAAC,MAAM;YACjB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,aAAa,EAAE,GAAG,CAAC,eAAe;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;SACrB,CAAA;QAED,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAM,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,QAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAzB,CAAyB,CAAC,CAAA;QACpF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,2DAAY,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,oCAAQ,CAAC,CAAA;SAC1D;QACD,OAAO,QAAiB,CAAA;KACzB;IAAC,OAAO,KAAK,EAAE;QACd,yBAAyB;QACzB,OAAO,KAAK,CAAA;KACb;AAEH,CAAC;AAzBD,oCAyBC"}
1
+ {"version":3,"file":"LiveMsg.js","sourceRoot":"","sources":["../../resources/typings/LiveMsg.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,OAiBX;AAjBD,WAAY,OAAO;IACjB,eAAe;IACf,0CAA+B,CAAA;IAC/B,aAAa;IACb,iCAAsB,CAAA;IACtB,cAAc;IACd,+BAAoB,CAAA;IACpB,aAAa;IACb,iCAAsB,CAAA;IACtB,gBAAgB;IAChB,qCAA0B,CAAA;IAC1B,qBAAqB;IACrB,uCAA4B,CAAA;IAC5B,iBAAiB;IACjB,yCAA8B,CAAA;IAC9B,cAAc;IACd,wCAA6B,CAAA;AAC/B,CAAC,EAjBW,OAAO,GAAP,eAAO,KAAP,eAAO,QAiBlB;AA0BD;;GAEG;AACH,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,8CAA0B,CAAA;IAC1B;;OAEG;IACH,8CAA0B,CAAA;AAC5B,CAAC,EATW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAS3B;AAED;;GAEG;AACH,IAAY,iBAyBX;AAzBD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,4DAAuC,CAAA;IACvC;;OAEG;IACH,8DAAyC,CAAA;IACzC;;OAEG;IACH,yDAAoC,CAAA;IACpC;;OAEG;IACH,iDAA4B,CAAA;IAC5B;;OAEG;IACH,6CAAwB,CAAA;IACxB;;OAEG;IACH,wCAAmB,CAAA;AACrB,CAAC,EAzBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAyB5B;AAiBD;;GAEG;AACH,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAgBD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,OAAe;IAC1C,IAAI;QACF,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAM,QAAM,GAAwB;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,KAAK,EAAE,GAAG,CAAC,MAAM;YACjB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,aAAa,EAAE,GAAG,CAAC,eAAe;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;SACrB,CAAA;QAED,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAM,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,QAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAzB,CAAyB,CAAC,CAAA;QACpF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,2DAAY,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,oCAAQ,CAAC,CAAA;SAC1D;QACD,OAAO,QAAiB,CAAA;KACzB;IAAC,OAAO,KAAK,EAAE;QACd,yBAAyB;QACzB,OAAO,KAAK,CAAA;KACb;AAEH,CAAC;AAzBD,oCAyBC"}
@@ -1,8 +1,8 @@
1
- import { RTCProtocol } from '../RTCProtocol';
1
+ import { RTCProtocol } from '../typings/RTCProtocol';
2
2
  /**
3
3
  * 依赖配置。
4
4
  */
5
- export interface LiveOptions<TicketArgs extends Record<string, any>> {
5
+ export interface LiveOptions {
6
6
  /**
7
7
  * 创建`WebSocket`所依赖的URL。
8
8
  */
@@ -14,11 +14,7 @@ export interface LiveOptions<TicketArgs extends Record<string, any>> {
14
14
  /**
15
15
  * 获取建立 WebSocket 连接的依赖Tick
16
16
  */
17
- getTicket: (params?: TicketArgs) => Promise<string>;
18
- /**
19
- * getTicket 依赖的参数
20
- */
21
- ticketArgs?: TicketArgs;
17
+ getTicket?: () => Promise<string>;
22
18
  /**
23
19
  * 初始化自动连接,false 需手动执行 live.connect() 方法
24
20
  */
@@ -1,3 +1,4 @@
1
+ import { RTCJoinedInfo } from "./RTCJoinedInfo";
1
2
  /**
2
3
  * 用户的音量信息。
3
4
  */
@@ -13,15 +14,7 @@ export declare type RTCEventType = {
13
14
  * 错误\异常
14
15
  * @param error
15
16
  */
16
- 'error'(error: Error): void;
17
- /**
18
- * 即将执行初始化工作。
19
- */
20
- 'initWillStart'(): void;
21
- /**
22
- * 完成初始化
23
- */
24
- 'inited'(): void;
17
+ 'error'(error: Error | RTCJoinedInfo): void;
25
18
  /**
26
19
  * 即将加入房间。
27
20
  */
@@ -40,8 +33,3 @@ export declare type RTCEventType = {
40
33
  */
41
34
  'userVolumes'(userVolumes: UserVolume[]): void;
42
35
  };
43
- /**
44
- * 错误枚举
45
- */
46
- export declare enum RTCErrorType {
47
- }
@@ -1,10 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RTCErrorType = void 0;
4
- /**
5
- * 错误枚举
6
- */
7
- var RTCErrorType;
8
- (function (RTCErrorType) {
9
- })(RTCErrorType = exports.RTCErrorType || (exports.RTCErrorType = {}));
10
3
  //# sourceMappingURL=RTCEventType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RTCEventType.js","sourceRoot":"","sources":["../../resources/typings/RTCEventType.ts"],"names":[],"mappings":";;;AA6CA;;GAEG;AACH,IAAY,YAEX;AAFD,WAAY,YAAY;AAExB,CAAC,EAFW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAEvB"}
1
+ {"version":3,"file":"RTCEventType.js","sourceRoot":"","sources":["../../resources/typings/RTCEventType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ export declare enum RTCJoinedInfoCodeEnum {
2
+ /**
3
+ * 成功
4
+ */
5
+ Success = 0,
6
+ /**
7
+ * 失败
8
+ */
9
+ Failure = 1,
10
+ /**
11
+ * 重复加入
12
+ */
13
+ ReJoin = 2,
14
+ /**
15
+ * 无麦克风权限
16
+ */
17
+ NoMicroPermission = 3
18
+ }
19
+ export interface RTCJoinedInfo {
20
+ code: RTCJoinedInfoCodeEnum;
21
+ message: string;
22
+ userId?: string;
23
+ roomId?: number;
24
+ errInfo?: {
25
+ trtcErrCode: number;
26
+ trtcErrMsg: string;
27
+ };
28
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RTCJoinedInfoCodeEnum = void 0;
4
+ var RTCJoinedInfoCodeEnum;
5
+ (function (RTCJoinedInfoCodeEnum) {
6
+ /**
7
+ * 成功
8
+ */
9
+ RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum["Success"] = 0] = "Success";
10
+ /**
11
+ * 失败
12
+ */
13
+ RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum["Failure"] = 1] = "Failure";
14
+ /**
15
+ * 重复加入
16
+ */
17
+ RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum["ReJoin"] = 2] = "ReJoin";
18
+ /**
19
+ * 无麦克风权限
20
+ */
21
+ RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum["NoMicroPermission"] = 3] = "NoMicroPermission";
22
+ })(RTCJoinedInfoCodeEnum = exports.RTCJoinedInfoCodeEnum || (exports.RTCJoinedInfoCodeEnum = {}));
23
+ //# sourceMappingURL=RTCJoinedInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCJoinedInfo.js","sourceRoot":"","sources":["../../resources/typings/RTCJoinedInfo.ts"],"names":[],"mappings":";;;AACA,IAAY,qBAiBX;AAjBD,WAAY,qBAAqB;IAC/B;;OAEG;IACH,uEAAW,CAAA;IACX;;OAEG;IACH,uEAAW,CAAA;IACX;;OAEG;IACH,qEAAU,CAAA;IACV;;OAEG;IACH,2FAAqB,CAAA;AACvB,CAAC,EAjBW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAiBhC"}
@@ -1,5 +1,5 @@
1
- import { RTCEventType } from '../typings/RTCEventType';
2
1
  import { Subscribe } from '../shared-utils/Subscribe';
2
+ import { RTCEventType } from './RTCEventType';
3
3
  export declare enum RTCType {
4
4
  realsee = "realsee",
5
5
  custom = "custom"
@@ -39,22 +39,4 @@ export interface RTCProtocol extends Subscribe<RTCEventType> {
39
39
  */
40
40
  shock(): void;
41
41
  }
42
- /**
43
- * RTCExample。
44
- */
45
- export declare class RTCExample extends Subscribe<RTCEventType> implements RTCProtocol {
46
- join(options: {
47
- voiceId: string;
48
- userId: string;
49
- type: RTCType;
50
- }): Promise<boolean>;
51
- joined: boolean;
52
- micro: boolean;
53
- voiceId: string;
54
- type: RTCType;
55
- quit(): Promise<boolean>;
56
- detectMicro(): Promise<boolean>;
57
- toggleMicro(flag?: boolean): Promise<boolean>;
58
- shock(): void;
59
- }
60
42
  export declare type RTCActionReactCallback = Pick<RTCProtocol, 'join' | 'quit' | 'shock' | 'toggleMicro' | 'detectMicro'>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RTCType = void 0;
4
+ var RTCType;
5
+ (function (RTCType) {
6
+ RTCType["realsee"] = "realsee";
7
+ RTCType["custom"] = "custom";
8
+ })(RTCType = exports.RTCType || (exports.RTCType = {}));
9
+ //# sourceMappingURL=RTCProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCProtocol.js","sourceRoot":"","sources":["../../resources/typings/RTCProtocol.ts"],"names":[],"mappings":";;;AAGA,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,4BAAiB,CAAA;AACnB,CAAC,EAHW,OAAO,GAAP,eAAO,KAAP,eAAO,QAGlB"}
@@ -0,0 +1,6 @@
1
+ import { JSBridgeProtocol } from '@realsee/jsbridge-x/lib/typings/JSBridgeProtocol';
2
+ import { GetVoiceSign } from "./GetVoiceSign";
3
+ export interface VRWebViewRTCOptions {
4
+ jsBridge: JSBridgeProtocol;
5
+ getVoiceSign: GetVoiceSign;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=VRWebViewRTCOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VRWebViewRTCOptions.js","sourceRoot":"","sources":["../../resources/typings/VRWebViewRTCOptions.ts"],"names":[],"mappings":""}
@@ -35,7 +35,8 @@ export declare enum WebSocketErrorType {
35
35
  MicroAuth = "MicroAuth",
36
36
  DuplicateConnect = "DuplicateConnect",
37
37
  IllegalURL = "IllegalURL",
38
- Unknown = "Unknown"
38
+ Unknown = "Unknown",
39
+ IllegalArgs = "IllegalArgs"
39
40
  }
40
41
  /**
41
42
  * WebSocket 异常关闭枚举:https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent。
@@ -35,6 +35,7 @@ var WebSocketErrorType;
35
35
  WebSocketErrorType["DuplicateConnect"] = "DuplicateConnect";
36
36
  WebSocketErrorType["IllegalURL"] = "IllegalURL";
37
37
  WebSocketErrorType["Unknown"] = "Unknown";
38
+ WebSocketErrorType["IllegalArgs"] = "IllegalArgs";
38
39
  })(WebSocketErrorType = exports.WebSocketErrorType || (exports.WebSocketErrorType = {}));
39
40
  /**
40
41
  * WebSocket 异常关闭枚举:https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent。
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocket.js","sourceRoot":"","sources":["../../resources/typings/WebSocket.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,cAyBX;AAzBD,WAAY,cAAc;IACxB;;OAEG;IACH,wEAAmB,CAAA;IAEnB;;OAEG;IACH,+DAAc,CAAA;IAEd;;OAEG;IACH,mDAAQ,CAAA;IAER;;OAEG;IACH,yDAAW,CAAA;IAEX;;OAEG;IACH,uDAAU,CAAA;AACZ,CAAC,EAzBW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAyBzB;AASD,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,2DAAqC,CAAA;IACrC,+CAAyB,CAAA;IACzB,yCAAmB,CAAA;AACrB,CAAC,EAPW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAO7B;AAED;;GAEG;AACH,IAAY,mBAsCX;AAtCD,WAAY,mBAAmB;IAC7B;;OAEG;IACH,oDAA6B,CAAA;IAE7B;;OAEG;IACH,wDAAiC,CAAA;IAEjC;;OAEG;IACH,qDAA8B,CAAA;IAE9B;;OAEG;IACH,kDAA2B,CAAA;IAE3B;;OAEG;IACH,oDAA6B,CAAA;IAC7B;;OAEG;IACH,oDAA6B,CAAA;IAC7B;;OAEG;IACH,mDAA4B,CAAA;IAC5B;;OAEG;IACH,8CAAuB,CAAA;AAEzB,CAAC,EAtCW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAsC9B;AAGD,SAAgB,aAAa,CAAC,IAAY;IACxC,QAAQ,IAAI,EAAE;QACZ,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD;YACE,MAAK;KACR;IAED,OAAO,mBAAmB,CAAC,WAAW,CAAA;AACxC,CAAC;AA5BD,sCA4BC"}
1
+ {"version":3,"file":"WebSocket.js","sourceRoot":"","sources":["../../resources/typings/WebSocket.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,cAyBX;AAzBD,WAAY,cAAc;IACxB;;OAEG;IACH,wEAAmB,CAAA;IAEnB;;OAEG;IACH,+DAAc,CAAA;IAEd;;OAEG;IACH,mDAAQ,CAAA;IAER;;OAEG;IACH,yDAAW,CAAA;IAEX;;OAEG;IACH,uDAAU,CAAA;AACZ,CAAC,EAzBW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAyBzB;AASD,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,qCAAe,CAAA;IACf,6CAAuB,CAAA;IACvB,2DAAqC,CAAA;IACrC,+CAAyB,CAAA;IACzB,yCAAmB,CAAA;IACnB,iDAA2B,CAAA;AAC7B,CAAC,EARW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAQ7B;AAED;;GAEG;AACH,IAAY,mBAsCX;AAtCD,WAAY,mBAAmB;IAC7B;;OAEG;IACH,oDAA6B,CAAA;IAE7B;;OAEG;IACH,wDAAiC,CAAA;IAEjC;;OAEG;IACH,qDAA8B,CAAA;IAE9B;;OAEG;IACH,kDAA2B,CAAA;IAE3B;;OAEG;IACH,oDAA6B,CAAA;IAC7B;;OAEG;IACH,oDAA6B,CAAA;IAC7B;;OAEG;IACH,mDAA4B,CAAA;IAC5B;;OAEG;IACH,8CAAuB,CAAA;AAEzB,CAAC,EAtCW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAsC9B;AAGD,SAAgB,aAAa,CAAC,IAAY;IACxC,QAAQ,IAAI,EAAE;QACZ,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD,KAAK,IAAI,CAAC,CAAC;YACT,OAAO,mBAAmB,CAAC,QAAQ,CAAA;SACpC;QACD;YACE,MAAK;KACR;IAED,OAAO,mBAAmB,CAAC,WAAW,CAAA;AACxC,CAAC;AA5BD,sCA4BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realsee/live",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "如视 Live SDK:基于如视 WebSocket 长链双工通信能力的前端封装,借助此 SDK 您可以快捷地实现具备同屏连线、实时语音的 VR 带看业务能力。",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -19,16 +19,18 @@
19
19
  "@babel/core": "^7.15.0",
20
20
  "@babel/preset-react": "^7.14.5",
21
21
  "@babel/preset-typescript": "^7.15.0",
22
+ "@realsee/jsbridge-x": "^0.1.1",
22
23
  "@types/react": "^17.0.20",
23
24
  "@types/react-dom": "^17.0.9",
25
+ "@types/trtc-js-sdk": "^4.8.2",
24
26
  "babel-loader": "^8.2.2",
25
27
  "del": "^6.0.0",
26
28
  "html-webpack-plugin": "^5.3.2",
27
29
  "react": "^17.0.2",
28
30
  "react-dom": "^17.0.2",
29
31
  "react-json-view": "^1.21.3",
30
- "typedoc": "^0.21.6",
31
- "typescript": "^4.4.2",
32
+ "typedoc": "^0.22.9",
33
+ "typescript": "4.4.2",
32
34
  "webpack": "^5.52.0",
33
35
  "webpack-cli": "^4.8.0",
34
36
  "webpack-dev-server": "^4.2.1",
@@ -37,6 +39,8 @@
37
39
  "author": "BEIKE REALSEE TECHNOLOGY (HK) LIMITED",
38
40
  "license": "SEE LICENSE IN TERMS.txt",
39
41
  "peerDependencies": {
42
+ "trtc-js-sdk": "^4.11.8",
40
43
  "tslib": "^2.3.1"
41
- }
44
+ },
45
+ "dependencies": {}
42
46
  }
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.LiveSDK=t():e.LiveSDK=t()}(self,(function(){return(()=>{"use strict";var e={508:(e,t,o)=>{o.d(t,{x:()=>i});const r=Symbol("$$LIVE_EVENT$$");function n(e){return e[r]||(e[r]={}),e[r]}class i{hasListener(e){const t=n(this);return t&&t[e]&&t[e].length>0}on(e,t,o){const r=n(this);return r[e]||(r[e]=[]),r[e].push([t,o||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(void 0===e)return void(this[r]||delete this[r]);const o=n(this);if(o[e]||(o[e]=[]),void 0===t)return void(o[e].length=0);let i=0;for(;i<o[e].length&&o[e][i][0]!==t;i++);i<o[e].length&&o[e].splice(i,1)}emit(e,...t){let o=!1;const r=n(this)[e]||[];for(let n of r.slice()){const[r,i=!1]=n,s=r(...t);i&&this.off(e,r),!1===s&&(o=!0)}return o}}let s;s||(s={})}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{o.r(r),o.d(r,{RTCType:()=>t,RTCExample:()=>n});var e=o(508);let t;!function(e){e.realsee="realsee",e.custom="custom"}(t||(t={}));class n extends e.x{join(e){throw new Error("Method not implemented.")}joined=!1;micro=!1;voiceId="";type=t.realsee;async quit(){return!0}async detectMicro(){return!0}async toggleMicro(e){return!0}shock(){}}})(),r})()}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.LiveSDK=t():e.LiveSDK=t()}(self,(function(){return(()=>{"use strict";var e={508:(e,t,o)=>{o.d(t,{x:()=>i});const r=Symbol("$$LIVE_EVENT$$");function n(e){return e[r]||(e[r]={}),e[r]}class i{hasListener(e){const t=n(this);return t&&t[e]&&t[e].length>0}on(e,t,o){const r=n(this);return r[e]||(r[e]=[]),r[e].push([t,o||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(void 0===e)return void(this[r]||delete this[r]);const o=n(this);if(o[e]||(o[e]=[]),void 0===t)return void(o[e].length=0);let i=0;for(;i<o[e].length&&o[e][i][0]!==t;i++);i<o[e].length&&o[e].splice(i,1)}emit(e,...t){let o=!1;const r=n(this)[e]||[];for(let n of r.slice()){const[r,i=!1]=n,s=r(...t);i&&this.off(e,r),!1===s&&(o=!0)}return o}}let s;s||(s={})}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{o.r(r),o.d(r,{RTCExample:()=>n});var e=o(508);let t;!function(e){e.realsee="realsee",e.custom="custom"}(t||(t={}));class n extends e.x{join(e){throw new Error("Method not implemented.")}joined=!1;micro=!1;voiceId="";type=t.realsee;async quit(){return!0}async detectMicro(){return!0}async toggleMicro(e){return!0}shock(){}}})(),r})()}));
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.LiveSDK=t():e.LiveSDK=t()}(self,(function(){return(()=>{"use strict";var e={900:(e,t,r)=>{r.d(t,{RTCExample:()=>o});var n=r(508);let s;!function(e){e.realsee="realsee",e.custom="custom"}(s||(s={}));class o extends n.x{join(e){throw new Error("Method not implemented.")}joined=!1;micro=!1;voiceId="";type=s.realsee;async quit(){return!0}async detectMicro(){return!0}async toggleMicro(e){return!0}shock(){}}},508:(e,t,r)=>{r.d(t,{x:()=>o});const n=Symbol("$$LIVE_EVENT$$");function s(e){return e[n]||(e[n]={}),e[n]}class o{hasListener(e){const t=s(this);return t&&t[e]&&t[e].length>0}on(e,t,r){const n=s(this);return n[e]||(n[e]=[]),n[e].push([t,r||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(void 0===e)return void(this[n]||delete this[n]);const r=s(this);if(r[e]||(r[e]=[]),void 0===t)return void(r[e].length=0);let o=0;for(;o<r[e].length&&r[e][o][0]!==t;o++);o<r[e].length&&r[e].splice(o,1)}emit(e,...t){let r=!1;const n=s(this)[e]||[];for(let s of n.slice()){const[n,o=!1]=s,i=n(...t);o&&this.off(e,n),!1===i&&(r=!0)}return r}}let i;i||(i={})}},t={};function r(n){var s=t[n];if(void 0!==s)return s.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function t(e){return"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return e===t||typeof e==typeof t&&!(!Number.isNaN(e)||!Number.isNaN(t))}function o(e,r){return!!s(e,r)||(t(e)&&t(r)?function(e,t){const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let n=0,s=r.length;n<s;n++){const s=r[n];if(!o(e[s],t[s]))return!1}return!0}(e,r):!(!Array.isArray(e)||!Array.isArray(r))&&function(e,t){if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(!o(e[r],t[r]))return!1;return!0}(e,r))}function i(e,r,n={deep:!1}){return n.deep?o(e,r):function(e,r){return!!s(e,r)||(t(e)&&t(r)?function(e,t){const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let n=0,o=r.length;n<o;n++){const o=r[n];if(!s(e[o],t[o]))return!1}return!0}(e,r):!(!Array.isArray(e)||!Array.isArray(r))&&function(e,t){if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(!s(e[r],t[r]))return!1;return!0}(e,r))}(e,r)}r.r(n),r.d(n,{createLive:()=>E});var a=r(508);let c,u,h,d,f,l,y;!function(e){e[e.NOTINITIALIZED=-1]="NOTINITIALIZED",e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSING=2]="CLOSING",e[e.CLOSED=3]="CLOSED"}(c||(c={})),function(e){e.Error="Error",e.Close="Close",e.MicroAuth="MicroAuth",e.DuplicateConnect="DuplicateConnect",e.IllegalURL="IllegalURL",e.Unknown="Unknown",e.IllegalArgs="IllegalArgs"}(u||(u={})),function(e){e.Err_1001="CLOSE_GOING_AWAY",e.Err_1002="CLOSE_PROTOCOL_ERROR",e.Err_1003="CLOSE_UNSUPPORTED",e.Err_1006="CLOSE_ABNORMAL",e.Err_1007="Unsupported Data",e.Err_1008="Policy Violation",e.Err_1009="CLOSE_TOO_LARGE",e.Err_unknown="unknown"}(h||(h={})),function(e){e.SelfUserInfo="SELF_USER_INFO",e.RoomInfo="ROOM_INFO",e.RTCInfo="RTC_INFO",e.UserList="USER_LIST",e.BuiltinMsg="BUILTIN_MSG",e.CustomEvent="CUSTOM_EVENT",e.KeyframeSync="KEYFRAME_SYNC",e.UserKickOut="USER_KICK_OUT"}(d||(d={})),function(e){e.UserChange="user_change",e.RoomChange="room_change"}(f||(f={})),function(e){e.UserMicroStatus="change_micro_status",e.UserMicroStatusSync="sync_micro_status",e.UserPermission="change_permission",e.UserStatus="change_status",e.UserInfo="change_info",e.RoomClose="close"}(l||(l={})),function(e){e.OPEN="OPEN",e.CLOSE="CLOSE"}(y||(y={}));var g=r(900);class m{readyState=c.NOTINITIALIZED;canSync=!0;connecting=!1;keyframes={};constructor(e){this.options=Object.assign({autoConnect:!0,healthCheck:3e3},e)}checkReadyState=e=>{do{if(!this.webSocket){this.readyState!==c.NOTINITIALIZED&&(this.readyState=c.NOTINITIALIZED,e.emit("ws.readyStateUpdate",this.readyState));break}const t=this.webSocket.readyState;t!==this.readyState&&(this.readyState=t,e.emit("ws.readyStateUpdate",this.readyState))}while(0);return this.readyState};dispose=()=>{console.log("dispose"),this.disposeWebSocket(),this.connecting=!1,this.healthCheckId&&(clearInterval(this.healthCheckId),this.healthCheckId=void 0)};disposeWebSocket=()=>{this.webSocket&&(this.onEvtOpnListener&&(this.webSocket.removeEventListener("open",this.onEvtOpnListener),this.onEvtOpnListener=void 0),this.onEvtMsgListener&&(this.webSocket.removeEventListener("message",this.onEvtMsgListener),this.onEvtMsgListener=void 0),this.onEvtErrListener&&(this.webSocket.removeEventListener("error",this.onEvtErrListener),this.onEvtErrListener=void 0),this.onEvtCLEListener&&(this.webSocket.removeEventListener("close",this.onEvtCLEListener),this.onEvtCLEListener=void 0),this.webSocket.close(),this.webSocket=void 0)};handleMessage(e,t){const{command:r,data:n,frontRequestId:s,code:o,message:a}=e;if("SUCCESS"!==o)return t.emit("error",e);switch(r){case d.SelfUserInfo:{const e=n;if(i(this.selfUserInfo,e,{deep:!0}))return;this.selfUserInfo=e,t.emit("selfInfoUpdate",this.selfUserInfo,s);break}case d.RoomInfo:{const e=n;this.roomInfo=Object.assign({},e),t.emit("readyKeyframeSync",e.last_frame||{});break}case d.RTCInfo:{const{voice_id:e,type:r}=n;if(t.$RTC.joined)break;t.$RTC.join({voiceId:e,userId:this.selfUserInfo?.id||"",roomId:this.roomInfo?.info.room_code,type:r}),t.updateStatus(f.UserChange,l.UserMicroStatus,{status:y.OPEN});break}case d.UserList:{const e=n;this.userList=e,t.emit("userListUpdate",this.userList,s);break}case d.CustomEvent:{const e=n;t.emit("broadcast",e,s);break}case d.KeyframeSync:{const e=n,r=Object.keys(e).reduce(((r,n)=>{if(i(e[n],this.keyframes[n],{deep:!0}))return r;const o=[e[n],this.keyframes[n],s];return t.keyframes.emit(n,...o),this.keyframes[n]=e[n],r[n]=e[n],r}),{});t.emit("keyframes",r,s);break}case d.BuiltinMsg:{const e=n;t.emit("builtinEvent",e),e.event_type===f.UserChange&&t.emit("userChange",e),e.event_type===f.RoomChange&&t.emit("roomChange",e),e.event_type===f.UserChange&&e.action===l.UserMicroStatus&&t.toggleMicro(e.data.status===y.OPEN),e.event_type===f.RoomChange&&e.action===l.RoomClose&&(this.options.rtc?.quit(),this.disposeWebSocket());break}case d.UserKickOut:t.emit("kickOut")}}sendMessage(e){return this.webSocket?e?void this.webSocket.send(JSON.stringify(e)):console.warn("WebSocket messages is empty!"):console.warn("WebSocket has not yet been initialized!")}}function E(t){const r=new m(t),n=(t,r={},n)=>((n=n?Array.isArray(n)?n:[n]:[])&&(r.to_user_ids=n),{command:t,front_request_id:(e()+e()+"-"+e()+"-4"+e().substr(0,3)+"-"+e()+"-"+e()+e()+e()).toLowerCase(),data:r});class s extends a.x{get options(){return Object.freeze(Object.assign({},r.options))}get readyState(){return r.checkReadyState(this),r.readyState}get url(){return r.webSocket?.url||""}get selfInfo(){return r.selfUserInfo}get userList(){return r.userList||[]}get snapshot(){return r.keyframes||{}}get $RTC(){return r.options.rtc}keyframes=new a.x;constructor(){super(),t.rtc||(r.options.rtc=new g.RTCExample),r.options.url&&r.options.getTicket&&this.connect();const e=(e=>{if(!e)return 0;if(!0===e)return 3e3;const t=Number(e);return t>0?t:3e3})(r.options.healthCheck);e&&(r.healthCheckId=setInterval((()=>r.checkReadyState(this)),e))}async setSelfInfo(e){if(this.readyState!==c.OPEN)return new Error("The connection is not open and ready to communicate.");try{return await this.updateStatus(f.UserChange,l.UserInfo,e)}catch(e){return e}}getFramesByKey(e){return r.keyframes[e]}sendKeyframe(e,t){if(this.readyState!==c.OPEN)return new Error("The connection is not open and ready to communicate.");r.keyframes[e]=t;const s=n(d.KeyframeSync,this.snapshot);return r.sendMessage(s),!0}broadcast(e,t,s){return this.readyState!==c.OPEN?new Error("The connection is not open and ready to communicate."):new Promise(((o,i)=>{const a=n(d.CustomEvent,e,t),c=a.front_request_id;r.sendMessage(a);const u=s?setTimeout((()=>{i(new Error("RESPONSE TIMEOUT")),this.off("broadcast",h)}),s):void 0,h=(e,t)=>{t===c&&(this.off("broadcast",h),o(e),u&&clearInterval(u))};this.on("broadcast",h)}))}async updateStatus(e,t,s,o){if(this.readyState!==c.OPEN)return!1;const i=Object.assign({event_type:e,action:t},{data:s}),a=n(d.BuiltinMsg,i,o);return r.sendMessage(a),!0}async toggleMicro(e){return!!this.selfInfo?.permission?.control_own_micro&&(await this.$RTC.toggleMicro(e),await this.updateStatus(f.UserChange,l.UserMicroStatus,{status:e?y.OPEN:y.CLOSE},[]))}async forbidMicro(e,t){return!(r.options.canForbidUserMicro&&!r.options.canForbidUserMicro(t))&&!!this.selfInfo?.permission?.control_other_micro&&await this.updateStatus(f.UserChange,l.UserMicroStatus,{status:e},t)}async forbidSync(e,t){return!(r.options.canForbidUserSync&&!r.options.canForbidUserSync(t))&&!!this.selfInfo?.permission?.control_other_sync&&await this.updateStatus(f.UserChange,l.UserPermission,{sync_frame:e},t)}async kick(e){return!(r.options.canForbidUserKick&&!r.options.canForbidUserKick(e))&&!!this.selfInfo?.permission?.change_other_status&&await this.updateStatus(f.UserChange,l.UserStatus,{status:"KICK_OUT"},e)}async exit(){return await this.$RTC.quit(),await this.updateStatus(f.RoomChange,l.RoomClose,{})}async connect(e={}){if(!await this.$RTC.detectMicro()){const e=new Error("系统监测麦克风未授权~");return this.emit("ws.error",{type:u.MicroAuth,error:e}),e}if(r.connecting){const e=new Error("WebSocket 正在连接中,请勿重复连接 ...");return this.emit("ws.error",{type:u.DuplicateConnect,error:e}),e}const{force:t}=e;if(!t&&(this.readyState===c.CONNECTING||this.readyState===c.OPEN))return!0;if(e.url&&(r.options.url=e.url),e.getTicket&&(r.options.getTicket=e.getTicket),!r.options.url||!r.options.url.startsWith("ws")){const e=new Error(`WebSocket URL 未配置或格式不合法:"${r.options.url}"`);return this.emit("ws.error",{type:u.IllegalURL,error:e}),e}if(!r.options.getTicket){const e=new Error("getTicket() 未配置!");return this.emit("ws.error",{type:u.IllegalArgs,error:e}),e}r.connecting=!0,r.disposeWebSocket(),this.emit("ws.beforeConnect");const n=t||e.url||!this.url?function(e,t={}){const r=-1!==e.indexOf("?");return e+Object.keys(t).reduce(((e,n,s)=>`${e}${0!==s||r?"&":"?"}${n}=${t[n]}`),"")}(r.options.url,{ticket:await r.options.getTicket(),force:Number(!!t)}):this.url;return r.webSocket=new WebSocket(n),r.onEvtOpnListener=()=>{r.checkReadyState(this),this.emit("ws.afterConnect")},r.onEvtMsgListener=e=>{r.checkReadyState(this);try{const t=function(e){try{const t=JSON.parse(e),r={code:t.code,message:t.message,command:t.command,roomCode:t.room_code,appID:t.app_id,requestId:t.request_id,frontRequestId:t.front_request_id,triggerUserID:t.trigger_user_id,data:t.data||{}},n=Object.keys(r).filter((e=>void 0===r[e]));return n.length>0&&console.warn(`推送数据格式异常:${n.join(" ")} 值不存在!`),r}catch(e){return!1}}(e.data);if(!1===t)return;r.handleMessage(t,this)}catch(t){this.emit("ws.error",{type:u.Unknown,error:t,target:e})}},r.onEvtErrListener=e=>{o.emit("ws.error",{type:u.Error,target:e}),r.checkReadyState(this)},r.onEvtCLEListener=e=>{r.checkReadyState(this);const t=Number(e.code);if(1e3===t)return;const n=function(e){switch(e){case 1001:return h.Err_1001;case 1002:return h.Err_1002;case 1003:return h.Err_1003;case 1006:return h.Err_1006;case 1007:return h.Err_1007;case 1008:return h.Err_1008;case 1009:return h.Err_1009}return h.Err_unknown}(t);o.emit("ws.error",{target:e,type:u.Close,closeError:n})},r.webSocket.addEventListener("open",r.onEvtOpnListener),r.webSocket.addEventListener("message",r.onEvtMsgListener),r.webSocket.addEventListener("error",r.onEvtErrListener),r.webSocket.addEventListener("close",r.onEvtCLEListener),await new Promise(((e,t)=>{const n=()=>{e(!0),r.connecting=!1,this.off("ws.error",s)},s=e=>{t(e.error?e.error:new Error("WebSocket connection failed!")),r.connecting=!1,this.off("ws.afterConnect",n)};this.once("ws.afterConnect",n),this.once("ws.error",s)}))}async revoke(){return!0}}const o=new s;return t.__debug__&&(Object.assign(o,{__controller__:r}),Object.assign(window,{$live:o})),o}})(),n})()}));
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.LiveSDK=t():e.LiveSDK=t()}(self,(function(){return(()=>{var e={206:e=>{if(!("React"in window))throw new Error('"React" is not available. Please include "react" in your HTML.');e.exports=window.React},900:(e,t,r)=>{"use strict";r.d(t,{RTCExample:()=>o});var n=r(508);let s;!function(e){e.realsee="realsee",e.custom="custom"}(s||(s={}));class o extends n.x{join(e){throw new Error("Method not implemented.")}joined=!1;micro=!1;voiceId="";type=s.realsee;async quit(){return!0}async detectMicro(){return!0}async toggleMicro(e){return!0}shock(){}}},431:(e,t,r)=>{"use strict";function n(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function s(e){return"[object Object]"===Object.prototype.toString.call(e)}function o(e,t){return e===t||typeof e==typeof t&&!(!Number.isNaN(e)||!Number.isNaN(t))}function i(e,t){return!!o(e,t)||(s(e)&&s(t)?function(e,t){const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let n=0,s=r.length;n<s;n++){const s=r[n];if(!i(e[s],t[s]))return!1}return!0}(e,t):!(!Array.isArray(e)||!Array.isArray(t))&&function(e,t){if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(!i(e[r],t[r]))return!1;return!0}(e,t))}function a(e,t,r={deep:!1}){return r.deep?i(e,t):function(e,t){return!!o(e,t)||(s(e)&&s(t)?function(e,t){const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let n=0,s=r.length;n<s;n++){const s=r[n];if(!o(e[s],t[s]))return!1}return!0}(e,t):!(!Array.isArray(e)||!Array.isArray(t))&&function(e,t){if(e.length!==t.length)return!1;for(let r=0,n=e.length;r<n;r++)if(!o(e[r],t[r]))return!1;return!0}(e,t))}(e,t)}r.d(t,{createLive:()=>g});var c=r(508);let u,f,l,d,h,y,m;!function(e){e[e.NOTINITIALIZED=-1]="NOTINITIALIZED",e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSING=2]="CLOSING",e[e.CLOSED=3]="CLOSED"}(u||(u={})),function(e){e.Error="Error",e.Close="Close",e.MicroAuth="MicroAuth",e.DuplicateConnect="DuplicateConnect",e.IllegalURL="IllegalURL",e.Unknown="Unknown",e.IllegalArgs="IllegalArgs"}(f||(f={})),function(e){e.Err_1001="CLOSE_GOING_AWAY",e.Err_1002="CLOSE_PROTOCOL_ERROR",e.Err_1003="CLOSE_UNSUPPORTED",e.Err_1006="CLOSE_ABNORMAL",e.Err_1007="Unsupported Data",e.Err_1008="Policy Violation",e.Err_1009="CLOSE_TOO_LARGE",e.Err_unknown="unknown"}(l||(l={})),function(e){e.SelfUserInfo="SELF_USER_INFO",e.RoomInfo="ROOM_INFO",e.RTCInfo="RTC_INFO",e.UserList="USER_LIST",e.BuiltinMsg="BUILTIN_MSG",e.CustomEvent="CUSTOM_EVENT",e.KeyframeSync="KEYFRAME_SYNC",e.UserKickOut="USER_KICK_OUT"}(d||(d={})),function(e){e.UserChange="user_change",e.RoomChange="room_change"}(h||(h={})),function(e){e.UserMicroStatus="change_micro_status",e.UserMicroStatusSync="sync_micro_status",e.UserPermission="change_permission",e.UserStatus="change_status",e.UserInfo="change_info",e.RoomClose="close"}(y||(y={})),function(e){e.OPEN="OPEN",e.CLOSE="CLOSE"}(m||(m={}));var S=r(900);class E{readyState=u.NOTINITIALIZED;canSync=!0;connecting=!1;keyframes={};constructor(e){this.options=Object.assign({autoConnect:!0,healthCheck:3e3},e)}checkReadyState=e=>{do{if(!this.webSocket){this.readyState!==u.NOTINITIALIZED&&(this.readyState=u.NOTINITIALIZED,e.emit("ws.readyStateUpdate",this.readyState));break}const t=this.webSocket.readyState;t!==this.readyState&&(this.readyState=t,e.emit("ws.readyStateUpdate",this.readyState))}while(0);return this.readyState};dispose=()=>{console.log("dispose"),this.disposeWebSocket(),this.connecting=!1,this.healthCheckId&&(clearInterval(this.healthCheckId),this.healthCheckId=void 0)};disposeWebSocket=()=>{this.webSocket&&(this.onEvtOpnListener&&(this.webSocket.removeEventListener("open",this.onEvtOpnListener),this.onEvtOpnListener=void 0),this.onEvtMsgListener&&(this.webSocket.removeEventListener("message",this.onEvtMsgListener),this.onEvtMsgListener=void 0),this.onEvtErrListener&&(this.webSocket.removeEventListener("error",this.onEvtErrListener),this.onEvtErrListener=void 0),this.onEvtCLEListener&&(this.webSocket.removeEventListener("close",this.onEvtCLEListener),this.onEvtCLEListener=void 0),this.webSocket.close(),this.webSocket=void 0)};handleMessage(e,t){const{command:r,data:n,frontRequestId:s,code:o,message:i}=e;if("SUCCESS"!==o)return t.emit("error",e);switch(r){case d.SelfUserInfo:{const e=n;if(a(this.selfUserInfo,e,{deep:!0}))return;this.selfUserInfo=e,t.emit("selfInfoUpdate",this.selfUserInfo,s);break}case d.RoomInfo:{const e=n;this.roomInfo=Object.assign({},e),t.emit("readyKeyframeSync",e.last_frame||{});break}case d.RTCInfo:{const{voice_id:e,type:r}=n;if(t.$RTC.joined)break;t.$RTC.join({voiceId:e,userId:this.selfUserInfo?.id||"",roomId:this.roomInfo?.info.room_code,type:r}),t.updateStatus(h.UserChange,y.UserMicroStatus,{status:m.OPEN});break}case d.UserList:{const e=n;this.userList=e,t.emit("userListUpdate",this.userList,s);break}case d.CustomEvent:{const e=n;t.emit("broadcast",e,s);break}case d.KeyframeSync:{const e=n,r=Object.keys(e).reduce(((r,n)=>{if(a(e[n],this.keyframes[n],{deep:!0}))return r;const o=[e[n],this.keyframes[n],s];return t.keyframes.emit(n,...o),this.keyframes[n]=e[n],r[n]=e[n],r}),{});t.emit("keyframes",r,s);break}case d.BuiltinMsg:{const e=n;t.emit("builtinEvent",e),e.event_type===h.UserChange&&t.emit("userChange",e),e.event_type===h.RoomChange&&t.emit("roomChange",e),e.event_type===h.UserChange&&e.action===y.UserMicroStatus&&t.toggleMicro(e.data.status===m.OPEN),e.event_type===h.RoomChange&&e.action===y.RoomClose&&(this.options.rtc?.quit(),this.disposeWebSocket());break}case d.UserKickOut:t.emit("kickOut")}}sendMessage(e){return this.webSocket?e?void this.webSocket.send(JSON.stringify(e)):console.warn("WebSocket messages is empty!"):console.warn("WebSocket has not yet been initialized!")}}function g(e){const t=new E(e),r=(e,t={},r)=>((r=r?Array.isArray(r)?r:[r]:[])&&(t.to_user_ids=r),{command:e,front_request_id:(n()+n()+"-"+n()+"-4"+n().substr(0,3)+"-"+n()+"-"+n()+n()+n()).toLowerCase(),data:t});class s extends c.x{get options(){return Object.freeze(Object.assign({},t.options))}get readyState(){return t.checkReadyState(this),t.readyState}get url(){return t.webSocket?.url||""}get selfInfo(){return t.selfUserInfo}get userList(){return t.userList||[]}get snapshot(){return t.keyframes||{}}get $RTC(){return t.options.rtc}keyframes=new c.x;constructor(){super(),e.rtc||(t.options.rtc=new S.RTCExample),t.options.url&&t.options.getTicket&&this.connect();const r=(e=>{if(!e)return 0;if(!0===e)return 3e3;const t=Number(e);return t>0?t:3e3})(t.options.healthCheck);r&&(t.healthCheckId=setInterval((()=>t.checkReadyState(this)),r))}async setSelfInfo(e){if(this.readyState!==u.OPEN)return new Error("The connection is not open and ready to communicate.");try{return await this.updateStatus(h.UserChange,y.UserInfo,e)}catch(e){return e}}getFramesByKey(e){return t.keyframes[e]}sendKeyframe(e,n){if(this.readyState!==u.OPEN)return new Error("The connection is not open and ready to communicate.");t.keyframes[e]=n;const s=r(d.KeyframeSync,this.snapshot);return t.sendMessage(s),!0}broadcast(e,n,s){return this.readyState!==u.OPEN?new Error("The connection is not open and ready to communicate."):new Promise(((o,i)=>{const a=r(d.CustomEvent,e,n),c=a.front_request_id;t.sendMessage(a);const u=s?setTimeout((()=>{i(new Error("RESPONSE TIMEOUT")),this.off("broadcast",f)}),s):void 0,f=(e,t)=>{t===c&&(this.off("broadcast",f),o(e),u&&clearInterval(u))};this.on("broadcast",f)}))}async updateStatus(e,n,s,o){if(this.readyState!==u.OPEN)return!1;const i=Object.assign({event_type:e,action:n},{data:s}),a=r(d.BuiltinMsg,i,o);return t.sendMessage(a),!0}async toggleMicro(e){return!!this.selfInfo?.permission?.control_own_micro&&(await this.$RTC.toggleMicro(e),await this.updateStatus(h.UserChange,y.UserMicroStatus,{status:e?m.OPEN:m.CLOSE},[]))}async forbidMicro(e,r){return!(t.options.canForbidUserMicro&&!t.options.canForbidUserMicro(r))&&!!this.selfInfo?.permission?.control_other_micro&&await this.updateStatus(h.UserChange,y.UserMicroStatus,{status:e},r)}async forbidSync(e,r){return!(t.options.canForbidUserSync&&!t.options.canForbidUserSync(r))&&!!this.selfInfo?.permission?.control_other_sync&&await this.updateStatus(h.UserChange,y.UserPermission,{sync_frame:e},r)}async kick(e){return!(t.options.canForbidUserKick&&!t.options.canForbidUserKick(e))&&!!this.selfInfo?.permission?.change_other_status&&await this.updateStatus(h.UserChange,y.UserStatus,{status:"KICK_OUT"},e)}async exit(){return await this.$RTC.quit(),await this.updateStatus(h.RoomChange,y.RoomClose,{})}async connect(e={}){if(!await this.$RTC.detectMicro()){const e=new Error("系统监测麦克风未授权~");return this.emit("ws.error",{type:f.MicroAuth,error:e}),e}if(t.connecting){const e=new Error("WebSocket 正在连接中,请勿重复连接 ...");return this.emit("ws.error",{type:f.DuplicateConnect,error:e}),e}const{force:r}=e;if(!r&&(this.readyState===u.CONNECTING||this.readyState===u.OPEN))return!0;if(e.url&&(t.options.url=e.url),e.getTicket&&(t.options.getTicket=e.getTicket),!t.options.url||!t.options.url.startsWith("ws")){const e=new Error(`WebSocket URL 未配置或格式不合法:"${t.options.url}"`);return this.emit("ws.error",{type:f.IllegalURL,error:e}),e}if(!t.options.getTicket){const e=new Error("getTicket() 未配置!");return this.emit("ws.error",{type:f.IllegalArgs,error:e}),e}t.connecting=!0,t.disposeWebSocket(),this.emit("ws.beforeConnect");const n=r||e.url||!this.url?function(e,t={}){const r=-1!==e.indexOf("?");return e+Object.keys(t).reduce(((e,n,s)=>`${e}${0!==s||r?"&":"?"}${n}=${t[n]}`),"")}(t.options.url,{ticket:await t.options.getTicket(),force:Number(!!r)}):this.url;return t.webSocket=new WebSocket(n),t.onEvtOpnListener=()=>{t.checkReadyState(this),this.emit("ws.afterConnect")},t.onEvtMsgListener=e=>{t.checkReadyState(this);try{const r=function(e){try{const t=JSON.parse(e),r={code:t.code,message:t.message,command:t.command,roomCode:t.room_code,appID:t.app_id,requestId:t.request_id,frontRequestId:t.front_request_id,triggerUserID:t.trigger_user_id,data:t.data||{}},n=Object.keys(r).filter((e=>void 0===r[e]));return n.length>0&&console.warn(`推送数据格式异常:${n.join(" ")} 值不存在!`),r}catch(e){return!1}}(e.data);if(!1===r)return;t.handleMessage(r,this)}catch(t){this.emit("ws.error",{type:f.Unknown,error:t,target:e})}},t.onEvtErrListener=e=>{o.emit("ws.error",{type:f.Error,target:e}),t.checkReadyState(this)},t.onEvtCLEListener=e=>{t.checkReadyState(this);const r=Number(e.code);if(1e3===r)return;const n=function(e){switch(e){case 1001:return l.Err_1001;case 1002:return l.Err_1002;case 1003:return l.Err_1003;case 1006:return l.Err_1006;case 1007:return l.Err_1007;case 1008:return l.Err_1008;case 1009:return l.Err_1009}return l.Err_unknown}(r);o.emit("ws.error",{target:e,type:f.Close,closeError:n})},t.webSocket.addEventListener("open",t.onEvtOpnListener),t.webSocket.addEventListener("message",t.onEvtMsgListener),t.webSocket.addEventListener("error",t.onEvtErrListener),t.webSocket.addEventListener("close",t.onEvtCLEListener),await new Promise(((e,r)=>{const n=()=>{e(!0),t.connecting=!1,this.off("ws.error",s)},s=e=>{r(e.error?e.error:new Error("WebSocket connection failed!")),t.connecting=!1,this.off("ws.afterConnect",n)};this.once("ws.afterConnect",n),this.once("ws.error",s)}))}async revoke(){return!0}}const o=new s;return e.__debug__&&(Object.assign(o,{__controller__:t}),Object.assign(window,{$live:o})),o}},508:(e,t,r)=>{"use strict";r.d(t,{x:()=>o});const n=Symbol("$$LIVE_EVENT$$");function s(e){return e[n]||(e[n]={}),e[n]}class o{hasListener(e){const t=s(this);return t&&t[e]&&t[e].length>0}on(e,t,r){const n=s(this);return n[e]||(n[e]=[]),n[e].push([t,r||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(void 0===e)return void(this[n]||delete this[n]);const r=s(this);if(r[e]||(r[e]=[]),void 0===t)return void(r[e].length=0);let o=0;for(;o<r[e].length&&r[e][o][0]!==t;o++);o<r[e].length&&r[e].splice(o,1)}emit(e,...t){let r=!1;const n=s(this)[e]||[];for(let s of n.slice()){const[n,o=!1]=s,i=n(...t);o&&this.off(e,n),!1===i&&(r=!0)}return r}}let i;i||(i={})}},t={};function r(n){var s=t[n];if(void 0!==s)return s.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{createLiveReact:()=>s});var e=r(206),t=r(431);function s(r){const n=e.createContext(null),s=(0,t.createLive)(r);function o(){const t=e.useContext(n);if(!t)throw new Error("LiveProvider never found.");return t}return{live:s,LiveProvider:function(t){return e.createElement(n.Provider,{value:t.live||s},t.children)},unsafe__useLiveInstance:function(){return o()},unsafe__useRTCInstance:function(){return o().$RTC},useCurrentWebSocketUrl:function(){const t=o(),[r,n]=e.useState(void 0);return e.useEffect((()=>{const e=()=>n(t.url);return t.on("ws.beforeConnect",e),()=>t.off("ws.beforeConnect",e)}),[t]),r},useConnect:function(){const e=o();return async t=>await e.connect(t)},useKeyframe:function(t){const r=o(),[n,s]=e.useState(r.getFramesByKey(t));return e.useEffect((()=>{const e=(...e)=>s(e[0]);return r.keyframes.on(t,e),()=>r.keyframes.off(t,e)}),[r]),[n,e.useCallback((e=>r.sendKeyframe(t,e)),[r])]},useKeyframeUpdateCallback:function(t,r,n){const s=o(),i=n?[s,t].concat(n):[s,t],a=()=>s.keyframes.off(t,r);return e.useEffect((()=>(s.keyframes.on(t,r),a)),i),a},useLiveAction:function(){const t=o(),r=e.useCallback((e=>t.toggleMicro(e)),[t]),n=e.useCallback(((e,r,n=0)=>t.broadcast(e,r,n)),[t]),s=e.useCallback((()=>t.exit()),[t]),i=e.useCallback((e=>t.kick(e)),[t]),a=e.useCallback(((e,r)=>t.forbidMicro(e,r)),[t]),c=e.useCallback(((e,r)=>t.forbidSync(e,r)),[t]),u=e.useCallback((e=>t.getFramesByKey(e)),[t]);return{broadcast:n,exit:s,kick:i,toggleMicro:r,forbidMicro:a,forbidSync:c,sendKeyframe:e.useCallback(((e,r)=>t.sendKeyframe(e,r)),[t]),getFramesByKey:u,setSelfInfo:e.useCallback((e=>t.setSelfInfo(e)),[t]),updateStatus:e.useCallback(((e,r,n,s)=>t.updateStatus(e,r,n,s)),[t])}},useLiveEventCallback:function(t,r,n){const s=o(),i=()=>s.off(t,r),a=n?[s,t].concat(n):[s,t];return e.useEffect((()=>(s.on(t,r),i)),a),i},useReadyState:function(){const t=o(),[r,n]=e.useState(t.readyState);return e.useEffect((()=>{const e=e=>n(e);return t.on("ws.readyStateUpdate",e),()=>t.off("ws.readyStateUpdate",e)}),[t]),r},useRTCAction:function(){const t=o(),r=e.useCallback((e=>t.$RTC.join(e)),[t]);return{join:r,quit:e.useCallback((()=>t.$RTC.quit()),[t]),shock:e.useCallback((()=>t.$RTC.shock()),[t]),toggleMicro:e.useCallback((e=>t.$RTC.toggleMicro(e)),[t]),detectMicro:e.useCallback((()=>t.$RTC.detectMicro()),[t])}},useRTCEventCallback:function(t,r,n){const s=o(),i=()=>s.$RTC.off(t,r),a=n?[s,t].concat(n):[s,t];return e.useEffect((()=>(s.$RTC.on(t,r),i)),a),i},useSelfInfo:function(){const t=o(),[r,n]=e.useState(t.selfInfo||{}),s=e=>n(e);return e.useEffect((()=>(t.on("selfInfoUpdate",s),()=>t.off("selfInfoUpdate",s))),[t]),[r,e.useCallback((async e=>await t.setSelfInfo(e)),[t])]},useSnapshot:function(){const t=o(),[r,n]=e.useState(t.snapshot);return e.useEffect((()=>{const e=e=>n(e);return t.on("keyframes",e),()=>t.off("keyframes",e)})),r},useUserList:function(){const t=o(),[r,n]=e.useState(t.userList),s=e=>n(e);return e.useEffect((()=>(t.on("userListUpdate",s),()=>t.off("userListUpdate",s))),[t]),r},useWebSocketEventCallback:function(t,r,n){const s=o(),i=()=>s.off(t,r),a=n?[s,t].concat(n):[s,t];return e.useEffect((()=>(s.on(t,r),i)),a),i}}}})(),n})()}));