@realsee/live 0.4.0-beta.4 → 0.4.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/live/controller.d.ts +2 -2
- package/dist/realsee-live.cjs.development.js +1172 -790
- package/dist/realsee-live.cjs.development.js.map +1 -1
- package/dist/realsee-live.cjs.production.js +1 -1
- package/dist/realsee-live.cjs.production.js.map +1 -1
- package/dist/realsee-live.esm.js +1173 -791
- package/dist/realsee-live.esm.js.map +1 -1
- package/dist/realsee-live.umd.development.js +51277 -50895
- package/dist/realsee-live.umd.development.js.map +1 -1
- package/dist/realsee-live.umd.production.js +1 -1
- package/dist/realsee-live.umd.production.js.map +1 -1
- package/docs/classes/BrowserRTC4Chime.html +3 -3
- package/package.json +15 -15
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@realsee/jsbridge-x"),t=require("amazon-chime-sdk-js"),o=require("trtc-js-sdk"),r=require("react");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(e),n=i(o),a=i(r);const c=Symbol("$$REALSEE_LIVE_EVENT$$");function u(e){return e[c]||(e[c]={}),e[c]}class d{hasListener(e){const t=u(this);return t&&t[e]&&t[e].length>0}on(e,t,o){const r=u(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((o=this)[c]||delete o[c]);var o;const r=u(this);if(r[e]||(r[e]=[]),void 0===t)return void(r[e].length=0);let i=0;for(;i<r[e].length&&r[e][i][0]!==t;i++);i<r[e].length&&r[e].splice(i,1)}emit(e,...t){let o=!1;const r=u(this)[e]||[];for(let i of r.slice()){const[r,s=!1]=i,n=r(...t);s&&this.off(e,r),!1===n&&(o=!0)}return o}}class l extends d{}var h,p,m,g,f,v,S,C,E,y,b,w;function k(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function T(){return(k()+k()+"-"+k()+"-4"+k().substr(0,3)+"-"+k()+"-"+k()+k()+k()).toLowerCase()}exports.RTCType=void 0,(h=exports.RTCType||(exports.RTCType={})).RealseeBrowserRTC="RealseeBrowserRTC",h.RealseeVRWebViewRTC="RealseeVRWebViewRTC",h.RealseeBrowserChimeRTC="RealseeBrowserChimeRTC",exports.BuiltInRTCType=void 0,(p=exports.BuiltInRTCType||(exports.BuiltInRTCType={})).RealseeXTRTC="trtc",p.RealseeXChimeRTC="chime";class I extends l{constructor(e){super(),this.type=exports.RTCType.RealseeBrowserRTC,this.joined=!1,this.micro=!1,this.voiceId="",this._getVoiceSign=()=>{throw new Error("方法 getVoiceSign 未实现")},this.$dom=document.createElement("div"),this._trtc={client:null,stream:null},this.join=async e=>{var t;this.emit("joinWillStart");const o=await this._getVoiceSign({voiceId:e.voiceId,roomId:e.roomId,userId:e.userId});this._trtc.client=n.default.createClient({mode:"rtc",...o}),null===(t=this._trtc.client)||void 0===t||t.enableAudioVolumeEvaluation(),this._registerRtcEvent();let r=await new Promise((t=>{var o;null===(o=this._trtc.client)||void 0===o||o.join({roomId:Number(e.voiceId)}).then((()=>t(!0))).catch((()=>t(!1)))}));return this.joined=r,!!r&&(this._trtc.stream=n.default.createStream({userId:o.userId,audio:!0,video:!1}),r=await new Promise((e=>{var t;null===(t=this._trtc.stream)||void 0===t||t.initialize().then((()=>e(!0))).catch((()=>e(!1)))})),r=await new Promise((e=>{var t;null===(t=this._trtc.client)||void 0===t||t.publish(this._trtc.stream).then((()=>e(!0))).catch((()=>e(!1)))})),this.joined=r,this.joined&&this.emit("joined"),r)},this._handleStreamAdded=e=>{var t;const o=e.stream;console.log("远端流增加: "+o.getId()),null===(t=this._trtc.client)||void 0===t||t.subscribe(o)},this._handleStreamSubscribed=e=>{const t=e.stream;console.log("远端流订阅成功:"+t.getId());const o=`rs-rtc-remote_stream-${t.getId()}`,r=document.createElement("div");r.id=o,this.$dom.appendChild(r),t.play(o)},this._getVoiceSign=e.getVoiceSign,this._initParentDom()}_initParentDom(){this.$dom.id=`rs-rtc-${T()}`,this.$dom.style.display="none",document.body.appendChild(this.$dom)}quit(){return new Promise((async e=>{var t,o;this.joined=!1,this._trtc.stream&&(await(null===(t=this._trtc.client)||void 0===t?void 0:t.unpublish(this._trtc.stream)),this._trtc.stream.stop(),this._trtc.stream.close(),this._trtc.stream=null),null===(o=this._trtc.client)||void 0===o||o.leave().then((()=>this._trtc.client=null)).then((()=>e(!0))).catch((()=>e(!1)))}))}detectMicro(){return new Promise((e=>{const t={audio:!0,video:!1};try{navigator.mediaDevices.getUserMedia(t).then((()=>e(!0))).catch((()=>e(!1)))}catch(t){console.error(t),e(!1)}}))}toggleMicro(e){var t,o,r,i;return Promise.resolve((e?null===(o=null===(t=this._trtc)||void 0===t?void 0:t.stream)||void 0===o?void 0:o.unmuteAudio():null===(i=null===(r=this._trtc)||void 0===r?void 0:r.stream)||void 0===i?void 0:i.muteAudio())||!1)}shock(){throw new Error("Method not implemented.")}_registerRtcEvent(){var e,t,o,r;null===(e=this._trtc.client)||void 0===e||e.on("stream-added",this._handleStreamAdded),null===(t=this._trtc.client)||void 0===t||t.on("stream-subscribed",this._handleStreamSubscribed),null===(o=this._trtc.client)||void 0===o||o.on("audio-volume",(e=>this.emit("userVolumes",[{userId:e.userId,audioVolume:e.audioVolume}]))),null===(r=this._trtc.client)||void 0===r||r.on("error",(e=>this.emit("error",e)))}}class _ extends l{constructor(e){super(),this.type=exports.RTCType.RealseeBrowserChimeRTC,this.joined=!1,this.micro=!1,this.voiceId="",this.userId="",this.deviceChangeObserver={},this.audioVideoObserver={},this._getVoiceSign=()=>{throw new Error("方法 getVoiceSign 未实现")},this.$dom=document.createElement("div"),this.$audio=document.createElement("audio"),this._initDom=()=>{this.$audio.id=`rs-rtc-${T()}`,this.$dom.id=`rs-rtc-${T()}`,this.$dom.appendChild(this.$audio),document.body.appendChild(this.$dom)},this.initObservers=()=>{this.deviceChangeObserver={audioInputsChanged:e=>{null==e||e.forEach((e=>{this.logger.info(`Device ID: ${e.deviceId} Microphone: ${e.label}`)}))},audioOutputsChanged:e=>{this.logger.info(`Audio outputs updated: ${e}`)},videoInputsChanged:e=>{this.logger.info(`Video inputs updated: ${e}`)},audioInputMuteStateChanged:(e,t)=>{this.logger.info(`Device ${e.toString()} ${t?"is muted in hardware":"is not muted"}`)}},this.audioVideoObserver={audioVideoDidStart:()=>{this.logger.info("Started")},audioVideoDidStop:e=>{this.logger.info(`Stopped with a session status code: ${e.statusCode()}`)},audioVideoDidStartConnecting:e=>{e&&this.logger.info("Attempting to reconnect")}}},this._registerRtcEvent=()=>{var e,o,r,i,s,n;const a=(null===(r=null===(o=null===(e=this.meetingSession)||void 0===e?void 0:e.configuration)||void 0===o?void 0:o.credentials)||void 0===r?void 0:r.attendeeId)||"";if(a){const e=new Map,o=()=>{const t=[];return e.forEach(((e,o)=>{t.push({userId:e.userId,volume:e.muted||0===e.signalStrength||!Boolean(e.volume)?0:e.volume})})),t};null===(i=this.meetingSession)||void 0===i||i.audioVideo.realtimeSubscribeToAttendeeIdPresence(((r,i,s)=>{var n;if(!i)return e.delete(r),void this.emit("userVolumes",o());null===(n=this.meetingSession)||void 0===n||n.audioVideo.realtimeSubscribeToVolumeIndicator(r,((r,i,n,a)=>{new t.DefaultModality(r).base()===r&&(e.set(r,{userId:s||r,volume:i,muted:n,signalStrength:a}),this.emit("userVolumes",o()))}))})),null===(s=this.meetingSession)||void 0===s||s.audioVideo.realtimeSubscribeToVolumeIndicator(a,((e,o,r,i)=>{new t.DefaultModality(e).base()===e&&null!==i&&1!==i&&this.emit("weakNetwork")})),null===(n=this.meetingSession)||void 0===n||n.audioVideo.realtimeSubscribeToFatalError((e=>this.emit("error",e)))}},this._getVoiceSign=e.getVoiceSign,this._initDom(),this.logger=new t.ConsoleLogger("WebRTCLogger",e.logLevel||t.LogLevel.OFF),this.deviceController=new t.DefaultDeviceController(this.logger),this.initObservers()}async join(e){return new Promise((async(o,r)=>{var i;this.emit("joinWillStart");try{const{sdkAppId:r,userId:s,roomId:n,userSig:a}=await this._getVoiceSign({...e,roomId:e.roomId||0});this.userId=s;const{attendence:c,vendor_wrapper:u}=JSON.parse(decodeURIComponent(a)),d=new t.MeetingSessionConfiguration({Meeting:u},{Attendee:{ExternalUserId:c.external_user_id,AttendeeId:c.attendee_id,JoinToken:c.join_token}});this.meetingSession=new t.DefaultMeetingSession(d,this.logger,this.deviceController),this._registerRtcEvent(),this.meetingSession.audioVideo.addDeviceChangeObserver(this.deviceChangeObserver),this.meetingSession.audioVideo.addObserver(this.audioVideoObserver),this.meetingSession.audioVideo.bindAudioElement(this.$audio);const l={audioVideoDidStart:()=>{var e;null===(e=this.meetingSession)||void 0===e||e.audioVideo.realtimeMuteLocalAudio(),this.joined=!0,this.emit("joined"),o(!0)},audioVideoDidStop:()=>{this.joined=!1,o(!1)}};this.meetingSession.audioVideo.addObserver(l);const h=await this.deviceController.listAudioInputDevices(!0),p=h.find((e=>"default"===e.deviceId)),m=h.find((e=>""!==e.deviceId));this.audioInput=p||m,await this.meetingSession.audioVideo.chooseVideoInputDevice(null),await this.meetingSession.audioVideo.chooseAudioInputDevice((null===(i=this.audioInput)||void 0===i?void 0:i.deviceId)||"default"),this.meetingSession.audioVideo.start()}catch(e){this.emit("error",e),this.logger.error(e.message),o(!1)}}))}quit(){return new Promise(((e,o)=>{var r,i;this.joined=!1;const s={audioVideoDidStop:o=>{const r=o.statusCode();r===t.MeetingSessionStatusCode.Left?(this.logger.info("You left the session"),e(!0)):(this.logger.info(`Stopped with a session status code: ${r}`),e(!0))}};null===(r=this.meetingSession)||void 0===r||r.audioVideo.addObserver(s),null===(i=this.meetingSession)||void 0===i||i.audioVideo.stop()}))}async detectMicro(){return new Promise((e=>{const t={audio:!0,video:!1};try{navigator.mediaDevices.getUserMedia(t).then((()=>e(!0))).catch((()=>e(!1)))}catch(t){this.logger.error(t.message),e(!1)}}))}async toggleMicro(e){var t,o,r;e?null===(t=this.meetingSession)||void 0===t||t.audioVideo.realtimeUnmuteLocalAudio():null===(o=this.meetingSession)||void 0===o||o.audioVideo.realtimeMuteLocalAudio();const i=null===(r=this.meetingSession)||void 0===r?void 0:r.audioVideo.realtimeIsLocalAudioMuted();return void 0!==i&&e!==i}shock(){throw new Error("Method not implemented.")}}exports.RTCJoinedInfoCodeEnum=void 0,(m=exports.RTCJoinedInfoCodeEnum||(exports.RTCJoinedInfoCodeEnum={}))[m.Success=0]="Success",m[m.Failure=1]="Failure",m[m.ReJoin=2]="ReJoin",m[m.NoMicroPermission=3]="NoMicroPermission";class R extends l{constructor({jsBridge:e,getVoiceSign:t}){super(),this.type=exports.RTCType.RealseeVRWebViewRTC,this.joined=!1,this.micro=!1,this.voiceId="",this.options={jsBridge:e,getVoiceSign:t},this.jsBridge.callAndListen("live/userVolumes",(e=>{this.emit("userVolumes",e)})),this.jsBridge.callAndListen("live/weakNetwork",(e=>{e&&this.emit("weakNetwork")}))}get jsBridge(){return this.options.jsBridge}async join(e){this.emit("joinWillStart");const{sdkAppId:t,userId:o,userSig:r}=await this.options.getVoiceSign(e);this.type=e.type;const[i,s]=await this.jsBridge.callAndBackfeed(`live/join?sdkAppID=${t}&userID=${o}&roomID=${Number(e.voiceId)}&userSig=${r}`);return i?i.code===exports.RTCJoinedInfoCodeEnum.Success?(this.emit("joined"),this.joined=!0):(this.emit("error",i),this.joined=!1):(this.emit("error",s||new Error("加入房间失败:未知异常。")),this.joined=!1),this.joined}async quit(){const[e,t]=await this.jsBridge.callAndBackfeed("live/quit");return null===e&&this.emit("error",t||new Error("退出房间失败:未知异常。")),this.joined=!1,!!e}async detectMicro(){const[e,t]=await this.jsBridge.detectMicro();return null===e?(this.emit("error",t||new Error("麦克风监测异常!")),!1):e}async toggleMicro(e){const[t,o]=await this.jsBridge.callAndBackfeed("live/toggleMicro?flag="+(e?1:0));return null===t?(this.emit("error",o||new Error("麦克风监测异常!")),!1):(this.micro=t,t)}shock(){this.jsBridge.shock(1)}}function x(e){try{const t=JSON.parse(e),o={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||{}},r=Object.keys(o).filter((e=>void 0===o[e]));return r.length>0&&console.warn(`推送数据格式异常:${r.join(" ")} 值不存在!`),o}catch(e){return!1}}function L(e){switch(e){case 1001:return exports.WebSocketCloseError.Err_1001;case 1002:return exports.WebSocketCloseError.Err_1002;case 1003:return exports.WebSocketCloseError.Err_1003;case 1006:return exports.WebSocketCloseError.Err_1006;case 1007:return exports.WebSocketCloseError.Err_1007;case 1008:return exports.WebSocketCloseError.Err_1008;case 1009:return exports.WebSocketCloseError.Err_1009}return exports.WebSocketCloseError.Err_unknown}exports.Command=void 0,(g=exports.Command||(exports.Command={})).SelfUserInfo="SELF_USER_INFO",g.RoomInfo="ROOM_INFO",g.RTCInfo="RTC_INFO",g.UserList="USER_LIST",g.BuiltinMsg="BUILTIN_MSG",g.CustomEvent="CUSTOM_EVENT",g.KeyframeSync="KEYFRAME_SYNC",g.UserKickOut="USER_KICK_OUT",exports.BuiltinEventType=void 0,(f=exports.BuiltinEventType||(exports.BuiltinEventType={})).UserChange="user_change",f.RoomChange="room_change",exports.BuiltinActionType=void 0,(v=exports.BuiltinActionType||(exports.BuiltinActionType={})).UserMicroStatus="change_micro_status",v.UserMicroStatusSync="sync_micro_status",v.UserPermission="change_permission",v.UserStatus="change_status",v.UserInfo="change_info",v.RoomClose="close",exports.MicroStatus=void 0,(S=exports.MicroStatus||(exports.MicroStatus={})).OPEN="OPEN",S.CLOSE="CLOSE",exports.UserStatus=void 0,(C=exports.UserStatus||(exports.UserStatus={}))[C.Normal=0]="Normal",C[C.Removed=1]="Removed",C[C.Replaced=2]="Replaced",exports.MemUserStatus=void 0,(E=exports.MemUserStatus||(exports.MemUserStatus={})).WAIT_ENTER="WAIT_ENTER",E.ONLINE="ONLINE",E.LEAVE="LEAVE",E.KICK_OUT="KICK_OUT",E.BE_REPLACE="BE_REPLACE",E.EXCEPTION="EXCEPTION",exports.WebSocketState=void 0,(y=exports.WebSocketState||(exports.WebSocketState={}))[y.NOTINITIALIZED=-1]="NOTINITIALIZED",y[y.CONNECTING=0]="CONNECTING",y[y.OPEN=1]="OPEN",y[y.CLOSING=2]="CLOSING",y[y.CLOSED=3]="CLOSED",exports.WebSocketErrorType=void 0,(b=exports.WebSocketErrorType||(exports.WebSocketErrorType={})).Error="Error",b.Close="Close",b.MicroAuth="MicroAuth",b.DuplicateConnect="DuplicateConnect",b.IllegalURL="IllegalURL",b.Unknown="Unknown",b.IllegalArgs="IllegalArgs",exports.WebSocketCloseError=void 0,(w=exports.WebSocketCloseError||(exports.WebSocketCloseError={})).Err_1001="CLOSE_GOING_AWAY",w.Err_1002="CLOSE_PROTOCOL_ERROR",w.Err_1003="CLOSE_UNSUPPORTED",w.Err_1006="CLOSE_ABNORMAL",w.Err_1007="Unsupported Data",w.Err_1008="Policy Violation",w.Err_1009="CLOSE_TOO_LARGE",w.Err_unknown="unknown";const O=globalThis.navigator.userAgent,M=/android/gi.test(O),U=/iPhone|iPad\s+OS/gi.test(O),V=/MicroMessenger/gi.test(O)&&/miniProgram/gi.test(O),B=/realsee/gi.test(O);function N(e){return"[object Object]"===Object.prototype.toString.call(e)}function j(e,t){return e===t||typeof e==typeof t&&!(!Number.isNaN(e)||!Number.isNaN(t))}function A(e,t){return!!j(e,t)||(N(e)&&N(t)?function(e,t){const o=Object.getOwnPropertyNames(e),r=Object.getOwnPropertyNames(t);if(o.length!==r.length)return!1;for(let r=0,i=o.length;r<i;r++){const i=o[r];if(!j(e[i],t[i]))return!1}return!0}(e,t):!(!Array.isArray(e)||!Array.isArray(t))&&function(e,t){if(e.length!==t.length)return!1;for(let o=0,r=e.length;o<r;o++)if(!j(e[o],t[o]))return!1;return!0}(e,t))}function W(e,t){return!!j(e,t)||(N(e)&&N(t)?function(e,t){const o=Object.getOwnPropertyNames(e),r=Object.getOwnPropertyNames(t);if(o.length!==r.length)return!1;for(let r=0,i=o.length;r<i;r++){const i=o[r];if(!W(e[i],t[i]))return!1}return!0}(e,t):!(!Array.isArray(e)||!Array.isArray(t))&&function(e,t){if(e.length!==t.length)return!1;for(let o=0,r=e.length;o<r;o++)if(!W(e[o],t[o]))return!1;return!0}(e,t))}function $(e,t,o){return o.deep?W(e,t):A(e,t)}class P{constructor(e){this.readyState=exports.WebSocketState.NOTINITIALIZED,this.canSync=!0,this.connecting=!1,this.keyframes={},this.checkReadyState=e=>{do{if(!this.webSocket){this.readyState!==exports.WebSocketState.NOTINITIALIZED&&(this.readyState=exports.WebSocketState.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},this.dispose=()=>{this.disposeWebSocket(),this.connecting=!1,this.healthCheckId&&(clearInterval(this.healthCheckId),this.healthCheckId=void 0)},this.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)},this.options=Object.assign({autoConnect:!0,healthCheck:3e3},e)}handleMessage(e,t){var o,r,i;const{command:s,data:n,frontRequestId:a,code:c,message:u}=e;if("SUCCESS"===c)switch(s){case exports.Command.SelfUserInfo:{const e=n;if($(this.selfUserInfo,e,{deep:!0}))return;this.selfUserInfo=e,t.emit("selfInfoUpdate",this.selfUserInfo,a);break}case exports.Command.RoomInfo:{const e=n;this.roomInfo=Object.assign({},e),t.emit("readyKeyframeSync",e.last_frame||{});break}case exports.Command.RTCInfo:{const{voice_id:e,type:i}=n;if(t.$RTC.joined)break;t.$RTC.join({voiceId:e,userId:(null===(o=this.selfUserInfo)||void 0===o?void 0:o.id)||"",roomId:null===(r=this.roomInfo)||void 0===r?void 0:r.info.room_code,type:i}),t.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:exports.MicroStatus.OPEN});break}case exports.Command.UserList:{const e=n;this.userList=e,t.emit("userListUpdate",this.userList,a);break}case exports.Command.CustomEvent:{const e=n;t.emit("broadcast",e,a);break}case exports.Command.KeyframeSync:{const e=n,o=Object.keys(e).reduce(((o,r)=>{if($(e[r],this.keyframes[r],{deep:!0}))return o;const i=[e[r],this.keyframes[r],a],s=r;return t.keyframes.emit(s,...i),this.keyframes[r]=e[r],o[r]=e[r],o}),{});t.emit("keyframes",o,a);break}case exports.Command.BuiltinMsg:{const e=n;t.emit("builtinEvent",e),e.event_type===exports.BuiltinEventType.UserChange&&t.emit("userChange",e),e.event_type===exports.BuiltinEventType.RoomChange&&t.emit("roomChange",e),e.event_type===exports.BuiltinEventType.UserChange&&e.action===exports.BuiltinActionType.UserMicroStatus&&t.toggleMicro(e.data.status===exports.MicroStatus.OPEN),e.event_type===exports.BuiltinEventType.RoomChange&&e.action===exports.BuiltinActionType.RoomClose&&(null===(i=this.options.rtc)||void 0===i||i.quit(),this.disposeWebSocket());break}case exports.Command.UserKickOut:t.emit("kickOut");break;default:console.warn("unknown command: ",s)}else t.emit("error",e)}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!")}}const D=e=>Promise.reject("unimplemented method GetVoiceSign");function K(e){const o=new P(e),r=(e,t={},o)=>((o=o?Array.isArray(o)?o:[o]:[])&&(t.to_user_ids=o),{command:e,front_request_id:T(),data:t});const i=new class extends d{constructor(){var r,i;super(),this.keyframes=new d;const n=e.jsBridge?e.jsBridge:e.useBuiltInJsBridge?new s.default:void 0;if(o.options.jsBridge=n,!e.rtc){if(e.rtcType){if(!e.getVoiceSign)throw new Error("GetVoiceSign method must be passed when using built-in RTC instances");const i=null!==(r=e.getVoiceSign)&&void 0!==r?r:D;switch(e.rtcType){case exports.RTCType.RealseeVRWebViewRTC:if(!n)throw new Error("JsBridge instance must be passed when using built-in VRWebViewRTC instances");o.options.rtc=new R({jsBridge:n,getVoiceSign:i});break;case exports.RTCType.RealseeBrowserChimeRTC:o.options.rtc=new _({getVoiceSign:i,logLevel:e.__debug__?t.LogLevel.DEBUG:t.LogLevel.ERROR});break;case exports.RTCType.RealseeBrowserRTC:o.options.rtc=new I({getVoiceSign:i});break;default:throw new Error("unknown built-in RTC type")}}if(e.useBuiltInRTC){if(!e.getVoiceSign)throw new Error("GetVoiceSign method must be passed when using built-in RTC instances");const t=null!==(i=e.getVoiceSign)&&void 0!==i?i:D;if(!n)throw new Error("jsBridge instance must be passed when using built-in RTC instances");o.options.rtc=B&&(M||U)||V?new R({jsBridge:n,getVoiceSign:t}):e.builtInRTCType===exports.BuiltInRTCType.RealseeXChimeRTC?new _({getVoiceSign:t}):new I({getVoiceSign:t})}}o.options.rtc||console.warn("unused rtc"),o.options.url&&o.options.getTicket&&this.connect();const a=(e=>{if(!e)return 0;if(!0===e)return 3e3;const t=Number(e);return t>0?t:3e3})(o.options.healthCheck);a&&(o.healthCheckId=setInterval((()=>o.checkReadyState(this)),a))}get options(){return Object.freeze(Object.assign({},o.options))}get readyState(){return o.checkReadyState(this),o.readyState}get url(){var e;return(null===(e=o.webSocket)||void 0===e?void 0:e.url)||""}get selfInfo(){return o.selfUserInfo}get userList(){return o.userList||[]}get snapshot(){return o.keyframes||{}}get $RTC(){return o.options.rtc}get jsBridge(){return o.options.jsBridge}async setSelfInfo(e){if(this.readyState!==exports.WebSocketState.OPEN)return new Error("The connection is not open and ready to communicate.");try{return await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserInfo,e)}catch(e){return e}}getFramesByKey(e){return o.keyframes[e]}sendKeyframe(e,t){if(this.readyState!==exports.WebSocketState.OPEN)return new Error("The connection is not open and ready to communicate.");o.keyframes[e]=t;const i=r(exports.Command.KeyframeSync,this.snapshot);return o.sendMessage(i),!0}broadcast(e,t,i){return this.readyState!==exports.WebSocketState.OPEN?new Error("The connection is not open and ready to communicate."):new Promise(((s,n)=>{const a=r(exports.Command.CustomEvent,e,t),c=a.front_request_id;o.sendMessage(a);const u=i?setTimeout((()=>{n(new Error("RESPONSE TIMEOUT")),this.off("broadcast",d)}),i):void 0,d=(e,t)=>{t===c&&(this.off("broadcast",d),s(e),u&&clearInterval(u))};this.on("broadcast",d)}))}async updateStatus(e,t,i,s){if(this.readyState!==exports.WebSocketState.OPEN)return!1;const n=Object.assign({event_type:e,action:t},{data:i}),a=r(exports.Command.BuiltinMsg,n,s);return o.sendMessage(a),!0}async toggleMicro(e){var t,o;return!!(null===(o=null===(t=this.selfInfo)||void 0===t?void 0:t.permission)||void 0===o?void 0:o.control_own_micro)&&(await this.$RTC.toggleMicro(e),await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:e?exports.MicroStatus.OPEN:exports.MicroStatus.CLOSE},[]))}async forbidMicro(e,t){var r,i;return!(o.options.canForbidUserMicro&&!o.options.canForbidUserMicro(t))&&(!!(null===(i=null===(r=this.selfInfo)||void 0===r?void 0:r.permission)||void 0===i?void 0:i.control_other_micro)&&await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:e},t))}async forbidSync(e,t){var r,i;return!(o.options.canForbidUserSync&&!o.options.canForbidUserSync(t))&&(!!(null===(i=null===(r=this.selfInfo)||void 0===r?void 0:r.permission)||void 0===i?void 0:i.control_other_sync)&&await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserPermission,{sync_frame:e},t))}async kick(e){var t,r;return!(o.options.canForbidUserKick&&!o.options.canForbidUserKick(e))&&(!!(null===(r=null===(t=this.selfInfo)||void 0===t?void 0:t.permission)||void 0===r?void 0:r.change_other_status)&&await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserStatus,{status:"KICK_OUT"},e))}async exit(){return await this.$RTC.quit(),await this.updateStatus(exports.BuiltinEventType.RoomChange,exports.BuiltinActionType.RoomClose,{})}async connect(e={}){if(!await this.$RTC.detectMicro()){const e=new Error("系统监测麦克风未授权~");return this.emit("ws.error",{type:exports.WebSocketErrorType.MicroAuth,error:e}),e}if(o.connecting){const e=new Error("WebSocket 正在连接中,请勿重复连接 ...");return this.emit("ws.error",{type:exports.WebSocketErrorType.DuplicateConnect,error:e}),e}const{force:t}=e;if(!t&&(this.readyState===exports.WebSocketState.CONNECTING||this.readyState===exports.WebSocketState.OPEN))return!0;if(e.url&&(o.options.url=e.url),e.getTicket&&(o.options.getTicket=e.getTicket),!o.options.url||!o.options.url.startsWith("ws")){const e=new Error(`WebSocket URL 未配置或格式不合法:"${o.options.url}"`);return this.emit("ws.error",{type:exports.WebSocketErrorType.IllegalURL,error:e}),e}if(!o.options.getTicket){const e=new Error("getTicket() 未配置!");return this.emit("ws.error",{type:exports.WebSocketErrorType.IllegalArgs,error:e}),e}o.connecting=!0,o.disposeWebSocket(),this.emit("ws.beforeConnect");const r=t||e.url||!this.url?function(e,t){const o=-1!==e.indexOf("?");return e+Object.keys(t).reduce(((e,r,i)=>`${e}${0!==i||o?"&":"?"}${r}=${t[r]}`),"")}(o.options.url,{ticket:await o.options.getTicket(),force:Number(!!t)}):this.url;return o.webSocket=new WebSocket(r),o.onEvtOpnListener=()=>{o.checkReadyState(this),this.emit("ws.afterConnect")},o.onEvtMsgListener=e=>{o.checkReadyState(this);try{const t=x(e.data);if(!1===t)return;o.handleMessage(t,this)}catch(t){this.emit("ws.error",{type:exports.WebSocketErrorType.Unknown,error:t,target:e})}},o.onEvtErrListener=e=>{i.emit("ws.error",{type:exports.WebSocketErrorType.Error,target:e}),o.checkReadyState(this)},o.onEvtCLEListener=e=>{o.checkReadyState(this);const t=Number(e.code);if(1e3===t)return;const r=L(t);i.emit("ws.error",{target:e,type:exports.WebSocketErrorType.Close,closeError:r})},o.webSocket.addEventListener("open",o.onEvtOpnListener),o.webSocket.addEventListener("message",o.onEvtMsgListener),o.webSocket.addEventListener("error",o.onEvtErrListener),o.webSocket.addEventListener("close",o.onEvtCLEListener),await new Promise(((e,t)=>{const r=()=>{e(!0),o.connecting=!1,this.off("ws.error",i)},i=e=>{t(e.error?e.error:new Error("WebSocket connection failed!")),o.connecting=!1,this.off("ws.afterConnect",r)};this.once("ws.afterConnect",r),this.once("ws.error",i)}))}async revoke(){return!0}};return e.__debug__&&(Object.assign(i,{__controller__:o}),Object.assign(window,{$live:i})),i}exports.BrowserRTC=I,exports.BrowserRTC4Chime=_,exports.CoreRTC=l,exports.VRWebViewRTC=R,exports.createLive=K,exports.createLiveReact=function(e){const t=a.default.createContext(null),o=K(e),r=o.jsBridge;function i(){const e=a.default.useContext(t);if(!e)throw new Error("LiveProvider never found.");return e}return{live:o,jsBridge:r,LiveProvider:function(e){return a.default.createElement(t.Provider,{value:e.live||o},e.children)},unsafe__useLiveInstance:function(){return i()},unsafe__useRTCInstance:function(){return i().$RTC},useCurrentWebSocketUrl:function(){const e=i(),[t,o]=a.default.useState(void 0);return a.default.useEffect((()=>{const t=()=>o(e.url);return e.on("ws.beforeConnect",t),()=>e.off("ws.beforeConnect",t)}),[e]),t},useConnect:function(){const e=i();return async t=>await e.connect(t)},useKeyframe:function(e){const t=i(),[o,r]=a.default.useState(t.getFramesByKey(e));return a.default.useEffect((()=>{const o=e,i=e=>r(e);return t.keyframes.on(o,i),()=>t.keyframes.off(o,i)}),[t]),[o,a.default.useCallback((o=>t.sendKeyframe(e,o)),[t])]},useKeyframeUpdateCallback:function(e,t,o=[]){const r=i(),s=[r,e,...o],n=()=>r.keyframes.off(e,t);return a.default.useEffect((()=>(r.keyframes.on(e,t),n)),s),n},useLiveAction:function(){const e=i(),t=a.default.useCallback((t=>e.toggleMicro(t)),[e]),o=a.default.useCallback(((t,o,r=0)=>e.broadcast(t,o,r)),[e]),r=a.default.useCallback((()=>e.exit()),[e]),s=a.default.useCallback((t=>e.kick(t)),[e]),n=a.default.useCallback(((t,o)=>e.forbidMicro(t,o)),[e]),c=a.default.useCallback((t=>e.getFramesByKey(t)),[e]);return{broadcast:o,exit:r,kick:s,toggleMicro:t,forbidMicro:n,sendKeyframe:a.default.useCallback(((t,o)=>e.sendKeyframe(t,o)),[e]),getFramesByKey:c,setSelfInfo:a.default.useCallback((t=>e.setSelfInfo(t)),[e]),updateStatus:a.default.useCallback(((t,o,r,i)=>e.updateStatus(t,o,r,i)),[e])}},useLiveEventCallback:function(e,t,o=[]){const r=i(),s=()=>r.off(e,t),n=[r,e,...o];return a.default.useEffect((()=>(r.on(e,t),s)),n),s},useReadyState:function(){const e=i(),[t,o]=a.default.useState(e.readyState);return a.default.useEffect((()=>{const t=e=>o(e);return e.on("ws.readyStateUpdate",t),()=>e.off("ws.readyStateUpdate",t)}),[e]),t},useRTCAction:function(){const e=i(),t=a.default.useCallback((t=>e.$RTC.join(t)),[e]);return{join:t,quit:a.default.useCallback((()=>e.$RTC.quit()),[e]),shock:a.default.useCallback((()=>{var t,o;return null===(o=(t=e.$RTC).shock)||void 0===o?void 0:o.call(t)}),[e]),toggleMicro:a.default.useCallback((t=>e.$RTC.toggleMicro(t)),[e]),detectMicro:a.default.useCallback((()=>e.$RTC.detectMicro()),[e])}},useRTCEventCallback:function(e,t,o=[]){const r=i(),s=()=>r.$RTC.off(e,t),n=[r,e,...o];return a.default.useEffect((()=>(r.$RTC.on(e,t),s)),n),s},useSelfInfo:function(){const e=i(),[t,o]=a.default.useState(e.selfInfo||{}),r=e=>o(e);return a.default.useEffect((()=>(e.on("selfInfoUpdate",r),()=>e.off("selfInfoUpdate",r))),[e]),[t,a.default.useCallback((async t=>await e.setSelfInfo(t)),[e])]},useSnapshot:function(){const e=i(),[t,o]=a.default.useState(e.snapshot);return a.default.useEffect((()=>{const t=e=>o(e);return e.on("keyframes",t),()=>e.off("keyframes",t)})),t},useUserList:function(){const e=i(),[t,o]=a.default.useState(e.userList),r=e=>o(e);return a.default.useEffect((()=>(e.on("userListUpdate",r),()=>e.off("userListUpdate",r))),[e]),t},useWebSocketEventCallback:function(e,t,o=[]){const r=i(),s=()=>r.off(e,t),n=[r,e,...o];return a.default.useEffect((()=>(r.on(e,t),s)),n),s}}},exports.parseLiveMsg=x,exports.parseWSClsErr=L;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@realsee/jsbridge-x"),t=require("amazon-chime-sdk-js"),r=require("trtc-js-sdk"),n=require("react");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=o(e),s=o(r),u=o(n),c=function(e,t){return c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},c(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}c(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var d=function(){return d=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},d.apply(this,arguments)};function l(e,t,r,n){return new(r||(r=Promise))((function(o,i){function s(e){try{c(n.next(e))}catch(e){i(e)}}function u(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,u)}c((n=n.apply(e,t||[])).next())}))}function f(e,t){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}function p(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}var v=Symbol("$$REALSEE_LIVE_EVENT$$");function h(e){return e[v]||(e[v]={}),e[v]}var m,g,y=function(){function e(){}return e.prototype.hasListener=function(e){var t=h(this);return t&&t[e]&&t[e].length>0},e.prototype.on=function(e,t,r){var n=this,o=h(this);return o[e]||(o[e]=[]),o[e].push([t,r||!1]),function(){return n.off(e,t)}},e.prototype.once=function(e,t){return this.on(e,t,!0)},e.prototype.off=function(e,t){if(void 0!==e){var r,n=h(this);if(n[e]||(n[e]=[]),void 0!==t){for(var o=0;o<n[e].length&&n[e][o][0]!==t;o++);o<n[e].length&&n[e].splice(o,1)}else n[e].length=0}else(r=this)[v]||delete r[v]},e.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];for(var n=!1,o=h(this),i=o[e]||[],s=0,u=i.slice();s<u.length;s++){var c=u[s],a=c[0],d=c[1],l=void 0!==d&&d,f=a.apply(void 0,t);l&&this.off(e,a),!1===f&&(n=!0)}return n},e}(),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t}(y);function b(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function C(){return(b()+b()+"-"+b()+"-4"+b().substr(0,3)+"-"+b()+"-"+b()+b()+b()).toLowerCase()}exports.RTCType=void 0,(m=exports.RTCType||(exports.RTCType={})).RealseeBrowserRTC="RealseeBrowserRTC",m.RealseeVRWebViewRTC="RealseeVRWebViewRTC",m.RealseeBrowserChimeRTC="RealseeBrowserChimeRTC",exports.BuiltInRTCType=void 0,(g=exports.BuiltInRTCType||(exports.BuiltInRTCType={})).RealseeXTRTC="trtc",g.RealseeXChimeRTC="chime";var E,w=function(e){function t(t){var r=e.call(this)||this;return r.type=exports.RTCType.RealseeBrowserRTC,r.joined=!1,r.micro=!1,r.voiceId="",r._getVoiceSign=function(){throw new Error("方法 getVoiceSign 未实现")},r.$dom=document.createElement("div"),r._trtc={client:null,stream:null},r.join=function(e){return l(r,void 0,void 0,(function(){var t,r,n,o=this;return f(this,(function(i){switch(i.label){case 0:return this.emit("joinWillStart"),[4,this._getVoiceSign({voiceId:e.voiceId,roomId:e.roomId,userId:e.userId})];case 1:return t=i.sent(),this._trtc.client=s.default.createClient(d({mode:"rtc"},t)),null===(n=this._trtc.client)||void 0===n||n.enableAudioVolumeEvaluation(),this._registerRtcEvent(),[4,new Promise((function(t){var r;null===(r=o._trtc.client)||void 0===r||r.join({roomId:Number(e.voiceId)}).then((function(){return t(!0)})).catch((function(){return t(!1)}))}))];case 2:return r=i.sent(),this.joined=r,r?(this._trtc.stream=s.default.createStream({userId:t.userId,audio:!0,video:!1}),[4,new Promise((function(e){var t;null===(t=o._trtc.stream)||void 0===t||t.initialize().then((function(){return e(!0)})).catch((function(){return e(!1)}))}))]):[2,!1];case 3:return r=i.sent(),[4,new Promise((function(e){var t;null===(t=o._trtc.client)||void 0===t||t.publish(o._trtc.stream).then((function(){return e(!0)})).catch((function(){return e(!1)}))}))];case 4:return r=i.sent(),this.joined=r,this.joined&&this.emit("joined"),[2,r]}}))}))},r._handleStreamAdded=function(e){var t,n=e.stream;console.log("远端流增加: "+n.getId()),null===(t=r._trtc.client)||void 0===t||t.subscribe(n)},r._handleStreamSubscribed=function(e){var t=e.stream;console.log("远端流订阅成功:"+t.getId());var n=t.getId(),o="rs-rtc-remote_stream-".concat(n),i=document.createElement("div");i.id=o,r.$dom.appendChild(i),t.play(o)},r._getVoiceSign=t.getVoiceSign,r._initParentDom(),r}return a(t,e),t.prototype._initParentDom=function(){this.$dom.id="rs-rtc-".concat(C()),this.$dom.style.display="none",document.body.appendChild(this.$dom)},t.prototype.quit=function(){var e=this;return new Promise((function(t){return l(e,void 0,void 0,(function(){var e,r,n=this;return f(this,(function(o){switch(o.label){case 0:return this.joined=!1,this._trtc.stream?[4,null===(e=this._trtc.client)||void 0===e?void 0:e.unpublish(this._trtc.stream)]:[3,2];case 1:o.sent(),this._trtc.stream.stop(),this._trtc.stream.close(),this._trtc.stream=null,o.label=2;case 2:return null===(r=this._trtc.client)||void 0===r||r.leave().then((function(){return n._trtc.client=null})).then((function(){return t(!0)})).catch((function(){return t(!1)})),[2]}}))}))}))},t.prototype.detectMicro=function(){return new Promise((function(e){try{navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then((function(){return e(!0)})).catch((function(){return e(!1)}))}catch(t){console.error(t),e(!1)}}))},t.prototype.toggleMicro=function(e){var t,r,n,o;return Promise.resolve((e?null===(r=null===(t=this._trtc)||void 0===t?void 0:t.stream)||void 0===r?void 0:r.unmuteAudio():null===(o=null===(n=this._trtc)||void 0===n?void 0:n.stream)||void 0===o?void 0:o.muteAudio())||!1)},t.prototype.shock=function(){throw new Error("Method not implemented.")},t.prototype._registerRtcEvent=function(){var e,t,r,n,o=this;null===(e=this._trtc.client)||void 0===e||e.on("stream-added",this._handleStreamAdded),null===(t=this._trtc.client)||void 0===t||t.on("stream-subscribed",this._handleStreamSubscribed),null===(r=this._trtc.client)||void 0===r||r.on("audio-volume",(function(e){return o.emit("userVolumes",[{userId:e.userId,audioVolume:e.audioVolume}])})),null===(n=this._trtc.client)||void 0===n||n.on("error",(function(e){return o.emit("error",e)}))},t}(S),k=function(e){function r(r){var n=e.call(this)||this;return n.type=exports.RTCType.RealseeBrowserChimeRTC,n.joined=!1,n.micro=!1,n.voiceId="",n.userId="",n.deviceChangeObserver={},n.audioVideoObserver={},n._getVoiceSign=function(){throw new Error("方法 getVoiceSign 未实现")},n.$dom=document.createElement("div"),n.$audio=document.createElement("audio"),n._initDom=function(){n.$audio.id="rs-rtc-".concat(C()),n.$dom.id="rs-rtc-".concat(C()),n.$dom.appendChild(n.$audio),document.body.appendChild(n.$dom)},n.initObservers=function(){n.deviceChangeObserver={audioInputsChanged:function(e){null==e||e.forEach((function(e){n.logger.info("Device ID: ".concat(e.deviceId," Microphone: ").concat(e.label))}))},audioOutputsChanged:function(e){n.logger.info("Audio outputs updated: ".concat(e))},videoInputsChanged:function(e){n.logger.info("Video inputs updated: ".concat(e))},audioInputMuteStateChanged:function(e,t){n.logger.info("Device ".concat(e.toString()," ").concat(t?"is muted in hardware":"is not muted"))}},n.audioVideoObserver={audioVideoDidStart:function(){n.logger.info("Started")},audioVideoDidStop:function(e){n.logger.info("Stopped with a session status code: ".concat(e.statusCode()))},audioVideoDidStartConnecting:function(e){e&&n.logger.info("Attempting to reconnect")}}},n._registerRtcEvent=function(){var e,r,o,i,s,u,c=(null===(o=null===(r=null===(e=n.meetingSession)||void 0===e?void 0:e.configuration)||void 0===r?void 0:r.credentials)||void 0===o?void 0:o.attendeeId)||"";if(c){var a=new Map,d=function(){var e=[];return a.forEach((function(t,r){e.push({userId:t.userId,volume:t.muted||0===t.signalStrength||!Boolean(t.volume)?0:t.volume})})),e};null===(i=n.meetingSession)||void 0===i||i.audioVideo.realtimeSubscribeToAttendeeIdPresence((function(e,r,o){var i;if(!r)return a.delete(e),void n.emit("userVolumes",d());null===(i=n.meetingSession)||void 0===i||i.audioVideo.realtimeSubscribeToVolumeIndicator(e,(function(e,r,i,s){new t.DefaultModality(e).base()===e&&(a.set(e,{userId:o||e,volume:r,muted:i,signalStrength:s}),n.emit("userVolumes",d()))}))})),null===(s=n.meetingSession)||void 0===s||s.audioVideo.realtimeSubscribeToVolumeIndicator(c,(function(e,r,o,i){new t.DefaultModality(e).base()===e&&null!==i&&1!==i&&n.emit("weakNetwork")})),null===(u=n.meetingSession)||void 0===u||u.audioVideo.realtimeSubscribeToFatalError((function(e){return n.emit("error",e)}))}},n._getVoiceSign=r.getVoiceSign,n._initDom(),n.logger=new t.ConsoleLogger("WebRTCLogger",r.logLevel||t.LogLevel.OFF),n.deviceController=new t.DefaultDeviceController(n.logger),n.initObservers(),n}return a(r,e),r.prototype.join=function(e){return l(this,void 0,void 0,(function(){var r=this;return f(this,(function(n){return[2,new Promise((function(n,o){return l(r,void 0,void 0,(function(){var r,o,i,s,u,c,a,l,p,v,h,m,g,y=this;return f(this,(function(f){switch(f.label){case 0:this.emit("joinWillStart"),f.label=1;case 1:return f.trys.push([1,6,,7]),[4,this._getVoiceSign(d(d({},e),{roomId:e.roomId||0}))];case 2:return r=f.sent(),o=r.userId,i=r.userSig,this.userId=o,s=JSON.parse(decodeURIComponent(i)),u=s.attendence,c=s.vendor_wrapper,a=new t.MeetingSessionConfiguration({Meeting:c},{Attendee:{ExternalUserId:u.external_user_id,AttendeeId:u.attendee_id,JoinToken:u.join_token}}),this.meetingSession=new t.DefaultMeetingSession(a,this.logger,this.deviceController),this._registerRtcEvent(),this.meetingSession.audioVideo.addDeviceChangeObserver(this.deviceChangeObserver),this.meetingSession.audioVideo.addObserver(this.audioVideoObserver),this.meetingSession.audioVideo.bindAudioElement(this.$audio),l={audioVideoDidStart:function(){var e;null===(e=y.meetingSession)||void 0===e||e.audioVideo.realtimeMuteLocalAudio(),y.joined=!0,y.emit("joined"),n(!0)},audioVideoDidStop:function(){y.joined=!1,n(!1)}},this.meetingSession.audioVideo.addObserver(l),[4,this.deviceController.listAudioInputDevices(!0)];case 3:return p=f.sent(),v=p.find((function(e){return"default"===e.deviceId})),h=p.find((function(e){return""!==e.deviceId})),this.audioInput=v||h,[4,this.meetingSession.audioVideo.chooseVideoInputDevice(null)];case 4:return f.sent(),[4,this.meetingSession.audioVideo.chooseAudioInputDevice((null===(g=this.audioInput)||void 0===g?void 0:g.deviceId)||"default")];case 5:return f.sent(),this.meetingSession.audioVideo.start(),[3,7];case 6:return m=f.sent(),this.emit("error",m),this.logger.error(m.message),n(!1),[3,7];case 7:return[2]}}))}))}))]}))}))},r.prototype.quit=function(){var e=this;return this.joined?new Promise((function(r,n){var o,i;e.joined=!1;var s={audioVideoDidStop:function(n){var o=n.statusCode();o===t.MeetingSessionStatusCode.Left?(e.logger.info("You left the session"),r(!0)):(e.logger.info("Stopped with a session status code: ".concat(o)),r(!0))}};null===(o=e.meetingSession)||void 0===o||o.audioVideo.addObserver(s),null===(i=e.meetingSession)||void 0===i||i.audioVideo.stop()})):Promise.resolve(!0)},r.prototype.detectMicro=function(){return l(this,void 0,void 0,(function(){var e=this;return f(this,(function(t){return[2,new Promise((function(t){try{navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then((function(){return t(!0)})).catch((function(){return t(!1)}))}catch(r){e.logger.error(r.message),t(!1)}}))]}))}))},r.prototype.toggleMicro=function(e){var t,r,n;return l(this,void 0,void 0,(function(){var o;return f(this,(function(i){return e?null===(t=this.meetingSession)||void 0===t||t.audioVideo.realtimeUnmuteLocalAudio():null===(r=this.meetingSession)||void 0===r||r.audioVideo.realtimeMuteLocalAudio(),void 0!==(o=null===(n=this.meetingSession)||void 0===n?void 0:n.audioVideo.realtimeIsLocalAudioMuted())?[2,e!==o]:[2,!1]}))}))},r.prototype.shock=function(){throw new Error("Method not implemented.")},r}(S);exports.RTCJoinedInfoCodeEnum=void 0,(E=exports.RTCJoinedInfoCodeEnum||(exports.RTCJoinedInfoCodeEnum={}))[E.Success=0]="Success",E[E.Failure=1]="Failure",E[E.ReJoin=2]="ReJoin",E[E.NoMicroPermission=3]="NoMicroPermission";var T,I,_,R,x,O,L,j,M,U=function(e){function t(t){var r=t.jsBridge,n=t.getVoiceSign,o=e.call(this)||this;return o.type=exports.RTCType.RealseeVRWebViewRTC,o.joined=!1,o.micro=!1,o.voiceId="",o.options={jsBridge:r,getVoiceSign:n},o.jsBridge.callAndListen("live/userVolumes",(function(e){o.emit("userVolumes",e)})),o.jsBridge.callAndListen("live/weakNetwork",(function(e){e&&o.emit("weakNetwork")})),o}return a(t,e),Object.defineProperty(t.prototype,"jsBridge",{get:function(){return this.options.jsBridge},enumerable:!1,configurable:!0}),t.prototype.join=function(e){return l(this,void 0,void 0,(function(){var t,r,n,o,i,s,u;return f(this,(function(c){switch(c.label){case 0:return this.emit("joinWillStart"),[4,this.options.getVoiceSign(e)];case 1:return t=c.sent(),r=t.sdkAppId,n=t.userId,o=t.userSig,this.type=e.type,[4,this.jsBridge.callAndBackfeed("live/join?sdkAppID=".concat(r,"&userID=").concat(n,"&roomID=").concat(Number(e.voiceId),"&userSig=").concat(o))];case 2:return i=c.sent(),s=i[0],u=i[1],s?s.code===exports.RTCJoinedInfoCodeEnum.Success?(this.emit("joined"),this.joined=!0):(this.emit("error",s),this.joined=!1):(this.emit("error",u||new Error("加入房间失败:未知异常。")),this.joined=!1),[2,this.joined]}}))}))},t.prototype.quit=function(){return l(this,void 0,void 0,(function(){var e,t,r;return f(this,(function(n){switch(n.label){case 0:return[4,this.jsBridge.callAndBackfeed("live/quit")];case 1:return e=n.sent(),t=e[0],r=e[1],null===t&&this.emit("error",r||new Error("退出房间失败:未知异常。")),this.joined=!1,[2,!!t]}}))}))},t.prototype.detectMicro=function(){return l(this,void 0,void 0,(function(){var e,t,r;return f(this,(function(n){switch(n.label){case 0:return[4,this.jsBridge.detectMicro()];case 1:return e=n.sent(),t=e[0],r=e[1],null===t?(this.emit("error",r||new Error("麦克风监测异常!")),[2,!1]):[2,t]}}))}))},t.prototype.toggleMicro=function(e){return l(this,void 0,void 0,(function(){var t,r,n;return f(this,(function(o){switch(o.label){case 0:return[4,this.jsBridge.callAndBackfeed("live/toggleMicro?flag=".concat(e?1:0))];case 1:return t=o.sent(),r=t[0],n=t[1],null===r?(this.emit("error",n||new Error("麦克风监测异常!")),[2,!1]):(this.micro=r,[2,r])}}))}))},t.prototype.shock=function(){this.jsBridge.shock(1)},t}(S);function V(e){try{var 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((function(e){return void 0===r[e]}));return n.length>0&&console.warn("推送数据格式异常:".concat(n.join(" ")," 值不存在!")),r}catch(e){return!1}}function B(e){switch(e){case 1001:return exports.WebSocketCloseError.Err_1001;case 1002:return exports.WebSocketCloseError.Err_1002;case 1003:return exports.WebSocketCloseError.Err_1003;case 1006:return exports.WebSocketCloseError.Err_1006;case 1007:return exports.WebSocketCloseError.Err_1007;case 1008:return exports.WebSocketCloseError.Err_1008;case 1009:return exports.WebSocketCloseError.Err_1009}return exports.WebSocketCloseError.Err_unknown}function N(e,t){void 0===t&&(t={});var r=-1!==e.indexOf("?");return e+Object.keys(t).reduce((function(e,n,o){return"".concat(e).concat(0!==o||r?"&":"?").concat(n,"=").concat(t[n])}),"")}exports.Command=void 0,(T=exports.Command||(exports.Command={})).SelfUserInfo="SELF_USER_INFO",T.RoomInfo="ROOM_INFO",T.RTCInfo="RTC_INFO",T.UserList="USER_LIST",T.BuiltinMsg="BUILTIN_MSG",T.CustomEvent="CUSTOM_EVENT",T.KeyframeSync="KEYFRAME_SYNC",T.UserKickOut="USER_KICK_OUT",exports.BuiltinEventType=void 0,(I=exports.BuiltinEventType||(exports.BuiltinEventType={})).UserChange="user_change",I.RoomChange="room_change",exports.BuiltinActionType=void 0,(_=exports.BuiltinActionType||(exports.BuiltinActionType={})).UserMicroStatus="change_micro_status",_.UserMicroStatusSync="sync_micro_status",_.UserPermission="change_permission",_.UserStatus="change_status",_.UserInfo="change_info",_.RoomClose="close",exports.MicroStatus=void 0,(R=exports.MicroStatus||(exports.MicroStatus={})).OPEN="OPEN",R.CLOSE="CLOSE",exports.UserStatus=void 0,(x=exports.UserStatus||(exports.UserStatus={}))[x.Normal=0]="Normal",x[x.Removed=1]="Removed",x[x.Replaced=2]="Replaced",exports.MemUserStatus=void 0,(O=exports.MemUserStatus||(exports.MemUserStatus={})).WAIT_ENTER="WAIT_ENTER",O.ONLINE="ONLINE",O.LEAVE="LEAVE",O.KICK_OUT="KICK_OUT",O.BE_REPLACE="BE_REPLACE",O.EXCEPTION="EXCEPTION",exports.WebSocketState=void 0,(L=exports.WebSocketState||(exports.WebSocketState={}))[L.NOTINITIALIZED=-1]="NOTINITIALIZED",L[L.CONNECTING=0]="CONNECTING",L[L.OPEN=1]="OPEN",L[L.CLOSING=2]="CLOSING",L[L.CLOSED=3]="CLOSED",exports.WebSocketErrorType=void 0,(j=exports.WebSocketErrorType||(exports.WebSocketErrorType={})).Error="Error",j.Close="Close",j.MicroAuth="MicroAuth",j.DuplicateConnect="DuplicateConnect",j.IllegalURL="IllegalURL",j.Unknown="Unknown",j.IllegalArgs="IllegalArgs",exports.WebSocketCloseError=void 0,(M=exports.WebSocketCloseError||(exports.WebSocketCloseError={})).Err_1001="CLOSE_GOING_AWAY",M.Err_1002="CLOSE_PROTOCOL_ERROR",M.Err_1003="CLOSE_UNSUPPORTED",M.Err_1006="CLOSE_ABNORMAL",M.Err_1007="Unsupported Data",M.Err_1008="Policy Violation",M.Err_1009="CLOSE_TOO_LARGE",M.Err_unknown="unknown";var A=globalThis.navigator.userAgent,P=/android/gi.test(A),W=/iPhone|iPad\s+OS/gi.test(A),D=/MicroMessenger/gi.test(A)&&/miniProgram/gi.test(A),$=/realsee/gi.test(A);function K(e){return"[object Object]"===Object.prototype.toString.call(e)}function F(e,t){return e===t||typeof e==typeof t&&!(!Number.isNaN(e)||!Number.isNaN(t))}function q(e,t){return!!F(e,t)||(K(e)&&K(t)?function(e,t){var r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(var o=0,i=r.length;o<i;o++){var s=r[o];if(!F(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(var r=0,n=e.length;r<n;r++)if(!F(e[r],t[r]))return!1;return!0}(e,t))}function G(e,t){return!!F(e,t)||(K(e)&&K(t)?function(e,t){var r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(var o=0,i=r.length;o<i;o++){var s=r[o];if(!G(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(var r=0,n=e.length;r<n;r++)if(!G(e[r],t[r]))return!1;return!0}(e,t))}function J(e,t,r){return void 0===r&&(r={deep:!1}),r.deep?G(e,t):q(e,t)}var X=function(){function e(e){var t=this;this.readyState=exports.WebSocketState.NOTINITIALIZED,this.canSync=!0,this.connecting=!1,this.keyframes={},this.checkReadyState=function(e){do{if(!t.webSocket){t.readyState!==exports.WebSocketState.NOTINITIALIZED&&(t.readyState=exports.WebSocketState.NOTINITIALIZED,e.emit("ws.readyStateUpdate",t.readyState));break}var r=t.webSocket.readyState;r!==t.readyState&&(t.readyState=r,e.emit("ws.readyStateUpdate",t.readyState))}while(0);return t.readyState},this.dispose=function(){return t.disposeWebSocket(),t.connecting=!1,t.healthCheckId&&(clearInterval(t.healthCheckId),t.healthCheckId=void 0),!0},this.disposeWebSocket=function(){if(t.webSocket)return t.onEvtOpnListener&&(t.webSocket.removeEventListener("open",t.onEvtOpnListener),t.onEvtOpnListener=void 0),t.onEvtMsgListener&&(t.webSocket.removeEventListener("message",t.onEvtMsgListener),t.onEvtMsgListener=void 0),t.onEvtErrListener&&(t.webSocket.removeEventListener("error",t.onEvtErrListener),t.onEvtErrListener=void 0),t.onEvtCLEListener&&(t.webSocket.removeEventListener("close",t.onEvtCLEListener),t.onEvtCLEListener=void 0),t.webSocket.close(),t.webSocket=void 0,!0},this.options=Object.assign({autoConnect:!0,healthCheck:3e3},e)}return e.prototype.handleMessage=function(e,t){var r,n,o,i=this,s=e.command,u=e.data,c=e.frontRequestId;if("SUCCESS"===e.code)switch(s){case exports.Command.SelfUserInfo:var a=u;if(J(this.selfUserInfo,a,{deep:!0}))return;this.selfUserInfo=a,t.emit("selfInfoUpdate",this.selfUserInfo,c);break;case exports.Command.RoomInfo:var d=u;this.roomInfo=Object.assign({},d),t.emit("readyKeyframeSync",d.last_frame||{});break;case exports.Command.RTCInfo:var l=u,f=l.voice_id,v=l.type;if(t.$RTC.joined)break;t.$RTC.join({voiceId:f,userId:(null===(r=this.selfUserInfo)||void 0===r?void 0:r.id)||"",roomId:null===(n=this.roomInfo)||void 0===n?void 0:n.info.room_code,type:v}),t.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:exports.MicroStatus.OPEN});break;case exports.Command.UserList:var h=u;this.userList=h,t.emit("userListUpdate",this.userList,c);break;case exports.Command.CustomEvent:var m=u;t.emit("broadcast",m,c);break;case exports.Command.KeyframeSync:var g=u,y=Object.keys(g).reduce((function(e,r){var n;if(J(g[r],i.keyframes[r],{deep:!0}))return e;var o=[g[r],i.keyframes[r],c],s=r;return(n=t.keyframes).emit.apply(n,p([s],o,!1)),i.keyframes[r]=g[r],e[r]=g[r],e}),{});t.emit("keyframes",y,c);break;case exports.Command.BuiltinMsg:var S=u;t.emit("builtinEvent",S),S.event_type===exports.BuiltinEventType.UserChange&&t.emit("userChange",S),S.event_type===exports.BuiltinEventType.RoomChange&&t.emit("roomChange",S),S.event_type===exports.BuiltinEventType.UserChange&&S.action===exports.BuiltinActionType.UserMicroStatus&&t.toggleMicro(S.data.status===exports.MicroStatus.OPEN),S.event_type===exports.BuiltinEventType.RoomChange&&S.action===exports.BuiltinActionType.RoomClose&&(null===(o=this.options.rtc)||void 0===o||o.quit(),this.disposeWebSocket());break;case exports.Command.UserKickOut:t.emit("kickOut");break;default:console.warn("unknown command: ",s)}else t.emit("error",e)},e.prototype.sendMessage=function(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!")},e}(),Z=function(e){return Promise.reject("unimplemented method GetVoiceSign")};function z(e){var r=new X(e),n=function(e,t,r){return void 0===t&&(t={}),(r=r?Array.isArray(r)?r:[r]:[])&&(t.to_user_ids=r),{command:e,front_request_id:C(),data:t}},o=function(o){function u(){var n,s,u=this;(u=o.call(this)||this).keyframes=new y;var c=e.jsBridge?e.jsBridge:e.useBuiltInJsBridge?new i.default:void 0;if(r.options.jsBridge=c,!e.rtc){if(e.rtcType){if(!e.getVoiceSign)throw new Error("GetVoiceSign method must be passed when using built-in RTC instances");var a=null!==(n=e.getVoiceSign)&&void 0!==n?n:Z;switch(e.rtcType){case exports.RTCType.RealseeVRWebViewRTC:if(!c)throw new Error("JsBridge instance must be passed when using built-in VRWebViewRTC instances");r.options.rtc=new U({jsBridge:c,getVoiceSign:a});break;case exports.RTCType.RealseeBrowserChimeRTC:r.options.rtc=new k({getVoiceSign:a,logLevel:e.__debug__?t.LogLevel.DEBUG:t.LogLevel.ERROR});break;case exports.RTCType.RealseeBrowserRTC:r.options.rtc=new w({getVoiceSign:a});break;default:throw new Error("unknown built-in RTC type")}}if(e.useBuiltInRTC){if(!e.getVoiceSign)throw new Error("GetVoiceSign method must be passed when using built-in RTC instances");a=null!==(s=e.getVoiceSign)&&void 0!==s?s:Z;if(!c)throw new Error("jsBridge instance must be passed when using built-in RTC instances");r.options.rtc=$&&(P||W)||D?new U({jsBridge:c,getVoiceSign:a}):e.builtInRTCType===exports.BuiltInRTCType.RealseeXChimeRTC?new k({getVoiceSign:a}):new w({getVoiceSign:a})}}r.options.rtc||console.warn("unused rtc"),r.options.url&&r.options.getTicket&&u.connect();var d=function(e){if(!e)return 0;if(!0===e)return 3e3;var t=Number(e);return t>0?t:3e3}(r.options.healthCheck);return d&&(r.healthCheckId=setInterval((function(){return r.checkReadyState(u)}),d)),u}return a(u,o),Object.defineProperty(u.prototype,"options",{get:function(){return Object.freeze(Object.assign({},r.options))},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"readyState",{get:function(){return r.checkReadyState(this),r.readyState},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"url",{get:function(){var e;return(null===(e=r.webSocket)||void 0===e?void 0:e.url)||""},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"selfInfo",{get:function(){return r.selfUserInfo},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"userList",{get:function(){return r.userList||[]},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"snapshot",{get:function(){return r.keyframes||{}},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"$RTC",{get:function(){return r.options.rtc},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"jsBridge",{get:function(){return r.options.jsBridge},enumerable:!1,configurable:!0}),u.prototype.setSelfInfo=function(e){return l(this,void 0,void 0,(function(){return f(this,(function(t){switch(t.label){case 0:if(this.readyState!==exports.WebSocketState.OPEN)return[2,new Error("The connection is not open and ready to communicate.")];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserInfo,e)];case 2:return[2,t.sent()];case 3:return[2,t.sent()];case 4:return[2]}}))}))},u.prototype.getFramesByKey=function(e){return r.keyframes[e]},u.prototype.sendKeyframe=function(e,t){if(this.readyState!==exports.WebSocketState.OPEN)return new Error("The connection is not open and ready to communicate.");r.keyframes[e]=t;var o=n(exports.Command.KeyframeSync,this.snapshot);return r.sendMessage(o),!0},u.prototype.broadcast=function(e,t,o){var i=this;return this.readyState!==exports.WebSocketState.OPEN?new Error("The connection is not open and ready to communicate."):new Promise((function(s,u){var c=n(exports.Command.CustomEvent,e,t),a=c.front_request_id;r.sendMessage(c);var d=o?setTimeout((function(){u(new Error("RESPONSE TIMEOUT")),i.off("broadcast",l)}),o):void 0,l=function(e,t){t===a&&(i.off("broadcast",l),s(e),d&&clearInterval(d))};i.on("broadcast",l)}))},u.prototype.updateStatus=function(e,t,o,i){return l(this,void 0,void 0,(function(){var s,u;return f(this,(function(c){return this.readyState!==exports.WebSocketState.OPEN?[2,!1]:(s=Object.assign({event_type:e,action:t},{data:o}),u=n(exports.Command.BuiltinMsg,s,i),r.sendMessage(u),[2,!0])}))}))},u.prototype.toggleMicro=function(e){var t,r;return l(this,void 0,void 0,(function(){return f(this,(function(n){switch(n.label){case 0:return(null===(r=null===(t=this.selfInfo)||void 0===t?void 0:t.permission)||void 0===r?void 0:r.control_own_micro)?[4,this.$RTC.toggleMicro(e)]:[2,!1];case 1:return n.sent(),[4,this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:e?exports.MicroStatus.OPEN:exports.MicroStatus.CLOSE},[])];case 2:return[2,n.sent()]}}))}))},u.prototype.forbidMicro=function(e,t){var n,o;return l(this,void 0,void 0,(function(){return f(this,(function(i){switch(i.label){case 0:return r.options.canForbidUserMicro&&!r.options.canForbidUserMicro(t)?[2,!1]:(null===(o=null===(n=this.selfInfo)||void 0===n?void 0:n.permission)||void 0===o?void 0:o.control_other_micro)?[4,this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:e},t)]:[2,!1];case 1:return[2,i.sent()]}}))}))},u.prototype.forbidSync=function(e,t){var n,o;return l(this,void 0,void 0,(function(){return f(this,(function(i){switch(i.label){case 0:return r.options.canForbidUserSync&&!r.options.canForbidUserSync(t)?[2,!1]:(null===(o=null===(n=this.selfInfo)||void 0===n?void 0:n.permission)||void 0===o?void 0:o.control_other_sync)?[4,this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserPermission,{sync_frame:e},t)]:[2,!1];case 1:return[2,i.sent()]}}))}))},u.prototype.kick=function(e){var t,n;return l(this,void 0,void 0,(function(){return f(this,(function(o){switch(o.label){case 0:return r.options.canForbidUserKick&&!r.options.canForbidUserKick(e)?[2,!1]:(null===(n=null===(t=this.selfInfo)||void 0===t?void 0:t.permission)||void 0===n?void 0:n.change_other_status)?[4,this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserStatus,{status:"KICK_OUT"},e)]:[2,!1];case 1:return[2,o.sent()]}}))}))},u.prototype.exit=function(){return l(this,void 0,void 0,(function(){var e;return f(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),this.$RTC.quit(),[4,this.updateStatus(exports.BuiltinEventType.RoomChange,exports.BuiltinActionType.RoomClose,{})];case 1:return t.sent(),[3,3];case 2:return e=t.sent(),console.log(e),[3,3];case 3:return[2,r.dispose()]}}))}))},u.prototype.connect=function(e){return void 0===e&&(e={}),l(this,void 0,void 0,(function(){var t,n,o,i,u,c,a,d=this;return f(this,(function(l){switch(l.label){case 0:return[4,this.$RTC.detectMicro()];case 1:return l.sent()?r.connecting?(n=new Error("WebSocket 正在连接中,请勿重复连接 ..."),this.emit("ws.error",{type:exports.WebSocketErrorType.DuplicateConnect,error:n}),[2,n]):(t=e.force)||this.readyState!==exports.WebSocketState.CONNECTING&&this.readyState!==exports.WebSocketState.OPEN?(e.url&&(r.options.url=e.url),e.getTicket&&(r.options.getTicket=e.getTicket),r.options.url&&r.options.url.startsWith("ws")?r.options.getTicket?(r.connecting=!0,r.disposeWebSocket(),this.emit("ws.beforeConnect"),t||e.url||!this.url?(u=N,c=[r.options.url],a={},[4,r.options.getTicket()]):[3,3]):(n=new Error("getTicket() 未配置!"),this.emit("ws.error",{type:exports.WebSocketErrorType.IllegalArgs,error:n}),[2,n]):(n=new Error('WebSocket URL 未配置或格式不合法:"'.concat(r.options.url,'"')),this.emit("ws.error",{type:exports.WebSocketErrorType.IllegalURL,error:n}),[2,n])):[2,!0]:(n=new Error("系统监测麦克风未授权~"),this.emit("ws.error",{type:exports.WebSocketErrorType.MicroAuth,error:n}),[2,n]);case 2:return i=u.apply(void 0,c.concat([(a.ticket=l.sent(),a.force=Number(!!t),a)])),[3,4];case 3:i=this.url,l.label=4;case 4:return o=i,r.webSocket=new WebSocket(o),r.onEvtOpnListener=function(){r.checkReadyState(d),d.emit("ws.afterConnect")},r.onEvtMsgListener=function(e){r.checkReadyState(d);try{var t=V(e.data);if(!1===t)return;r.handleMessage(t,d)}catch(t){d.emit("ws.error",{type:exports.WebSocketErrorType.Unknown,error:t,target:e})}},r.onEvtErrListener=function(e){s.emit("ws.error",{type:exports.WebSocketErrorType.Error,target:e}),r.checkReadyState(d)},r.onEvtCLEListener=function(e){r.checkReadyState(d);var t=Number(e.code);if(1e3!==t){var n=B(t);s.emit("ws.error",{target:e,type:exports.WebSocketErrorType.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),[4,new Promise((function(e,t){var n=function(){e(!0),r.connecting=!1,d.off("ws.error",o)},o=function(e){t(e.error?e.error:new Error("WebSocket connection failed!")),r.connecting=!1,d.off("ws.afterConnect",n)};d.once("ws.afterConnect",n),d.once("ws.error",o)}))];case 5:return[2,l.sent()]}}))}))},u.prototype.revoke=function(){return l(this,void 0,void 0,(function(){return f(this,(function(e){return[2,!0]}))}))},u}(y),s=new o;return e.__debug__&&(Object.assign(s,{__controller__:r}),Object.assign(window,{$live:s})),s}exports.BrowserRTC=w,exports.BrowserRTC4Chime=k,exports.CoreRTC=S,exports.VRWebViewRTC=U,exports.createLive=z,exports.createLiveReact=function(e){var t=u.default.createContext(null),r=z(e),n=r.jsBridge;function o(){var e=u.default.useContext(t);if(!e)throw new Error("LiveProvider never found.");return e}return{live:r,jsBridge:n,LiveProvider:function(e){return u.default.createElement(t.Provider,{value:e.live||r},e.children)},unsafe__useLiveInstance:function(){return o()},unsafe__useRTCInstance:function(){return o().$RTC},useCurrentWebSocketUrl:function(){var e=o(),t=u.default.useState(void 0),r=t[0],n=t[1];return u.default.useEffect((function(){var t=function(){return n(e.url)};return e.on("ws.beforeConnect",t),function(){return e.off("ws.beforeConnect",t)}}),[e]),r},useConnect:function(){var e=this,t=o();return function(r){return l(e,void 0,void 0,(function(){return f(this,(function(e){switch(e.label){case 0:return[4,t.connect(r)];case 1:return[2,e.sent()]}}))}))}},useKeyframe:function(e){var t=o(),r=u.default.useState(t.getFramesByKey(e)),n=r[0],i=r[1];return u.default.useEffect((function(){var r=e,n=function(e){return i(e)};return t.keyframes.on(r,n),function(){return t.keyframes.off(r,n)}}),[t]),[n,u.default.useCallback((function(r){return t.sendKeyframe(e,r)}),[t])]},useKeyframeUpdateCallback:function(e,t,r){void 0===r&&(r=[]);var n=o(),i=p([n,e],r,!0),s=function(){return n.keyframes.off(e,t)};return u.default.useEffect((function(){return n.keyframes.on(e,t),s}),i),s},useLiveAction:function(){var e=o(),t=u.default.useCallback((function(t){return e.toggleMicro(t)}),[e]),r=u.default.useCallback((function(t,r,n){return void 0===n&&(n=0),e.broadcast(t,r,n)}),[e]),n=u.default.useCallback((function(){return e.exit()}),[e]),i=u.default.useCallback((function(t){return e.kick(t)}),[e]),s=u.default.useCallback((function(t,r){return e.forbidMicro(t,r)}),[e]),c=u.default.useCallback((function(t){return e.getFramesByKey(t)}),[e]);return{broadcast:r,exit:n,kick:i,toggleMicro:t,forbidMicro:s,sendKeyframe:u.default.useCallback((function(t,r){return e.sendKeyframe(t,r)}),[e]),getFramesByKey:c,setSelfInfo:u.default.useCallback((function(t){return e.setSelfInfo(t)}),[e]),updateStatus:u.default.useCallback((function(t,r,n,o){return e.updateStatus(t,r,n,o)}),[e])}},useLiveEventCallback:function(e,t,r){void 0===r&&(r=[]);var n=o(),i=function(){return n.off(e,t)},s=p([n,e],r,!0);return u.default.useEffect((function(){return n.on(e,t),i}),s),i},useReadyState:function(){var e=o(),t=u.default.useState(e.readyState),r=t[0],n=t[1];return u.default.useEffect((function(){var t=function(e){return n(e)};return e.on("ws.readyStateUpdate",t),function(){return e.off("ws.readyStateUpdate",t)}}),[e]),r},useRTCAction:function(){var e=o(),t=u.default.useCallback((function(t){return e.$RTC.join(t)}),[e]);return{join:t,quit:u.default.useCallback((function(){return e.$RTC.quit()}),[e]),shock:u.default.useCallback((function(){var t,r;return null===(r=(t=e.$RTC).shock)||void 0===r?void 0:r.call(t)}),[e]),toggleMicro:u.default.useCallback((function(t){return e.$RTC.toggleMicro(t)}),[e]),detectMicro:u.default.useCallback((function(){return e.$RTC.detectMicro()}),[e])}},useRTCEventCallback:function(e,t,r){void 0===r&&(r=[]);var n=o(),i=function(){return n.$RTC.off(e,t)},s=p([n,e],r,!0);return u.default.useEffect((function(){return n.$RTC.on(e,t),i}),s),i},useSelfInfo:function(){var e=this,t=o(),r=u.default.useState(t.selfInfo||{}),n=r[0],i=r[1],s=function(e){return i(e)};u.default.useEffect((function(){return t.on("selfInfoUpdate",s),function(){return t.off("selfInfoUpdate",s)}}),[t]);var c=u.default.useCallback((function(r){return l(e,void 0,void 0,(function(){return f(this,(function(e){switch(e.label){case 0:return[4,t.setSelfInfo(r)];case 1:return[2,e.sent()]}}))}))}),[t]);return[n,c]},useSnapshot:function(){var e=o(),t=u.default.useState(e.snapshot),r=t[0],n=t[1];return u.default.useEffect((function(){var t=function(e){return n(e)};return e.on("keyframes",t),function(){return e.off("keyframes",t)}})),r},useUserList:function(){var e=o(),t=u.default.useState(e.userList),r=t[0],n=t[1],i=function(e){return n(e)};return u.default.useEffect((function(){return e.on("userListUpdate",i),function(){return e.off("userListUpdate",i)}}),[e]),r},useWebSocketEventCallback:function(e,t,r){void 0===r&&(r=[]);var n=o(),i=function(){return n.off(e,t)},s=p([n,e],r,!0);return u.default.useEffect((function(){return n.on(e,t),i}),s),i}}},exports.parseLiveMsg=V,exports.parseWSClsErr=B;
|
|
2
2
|
//# sourceMappingURL=realsee-live.cjs.production.js.map
|